memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

crowdstrikeの影響か?

担当科目3科目の試験日でした。

2科目は筆記試験。1科目はプログラムを書く実技試験でした。

筆記試験については、採点ツールを自作しているのでそれに合わせた問題にしています。

memorandums.hatenablog.com

自分でいうのも何ですが、このツールのおかげで採点が苦にならなくなりました。

で、実技試験の演習室に行ってみると学生さんが「PCがつきません」と。

えっ!?

恐らく、先日のブルスク祭りの影響ではないかと思われます。

業者さんによる調査が明日以降になるため、とりあえず、何かしら試験をしないといけない。。。

10分くらいで試験問題を作成しました。

試験問題といっても、演習課題として作ったコードにいくつか穴を開けてそこを解答してもらう問題にしました。

解答欄の周囲を見れば想像がつくはず、という問題にしたつもりです。

さて。。。どうなりますやら。

こういうのってできる先生はプランBとか用意するんですかね。。。

ちなみに、10分で作った問題は以下です。Rubyを知らなくてもプログラムできる人なら正解できるかな。。。と思います。(学生は学習済みですが)デフォルト引数とかはRuby特有の書き方があるかもですが。

以下の(1)〜(15)にあてはまる言葉を答えなさい。(各2点)

require 'sqlite3'
require 'date'

class BookInfo
  attr_accessor :title, :author, :pages, :publish_date
  def initialize(title, author, pages, publish_date)
    (1) = title
    @author = author
    @pages = pages
    @publish_date = (2)
  end

  def to_s
    "#{@title},#{@author},#{@pages},#{@publish_date}"
  end

  def toFormattedString(sep="\n")
    "書籍名:#{@title}#{(3)}著者名:#{@author}#{(3)}ページ数:#{@pages.to_s}#{(3)}発刊日:#{@publish_date.to_s}#{(3)}"
  end
end

class BookInfoManger
  def initialize((4) = 'book_info.sqlite3')
    @db_fname = db_fname
    @db = SQLite3::Database.new(@db_fname)
    sql = (5)SQL
      CREATE TABLE IF NOT EXISTS BOOK_INFO (
        TITLE (6)(50),
        AUTHOR (6)(50),
        PAGES INT,
        PUBLISH_DATE DATE
      )
    SQL
    @db.execute sql
    @db.results_as_hash = true
  end

  def addBookInfo
    book_info = BookInfo.new('', '', 0, Date.new)
    print '書籍名:'
    book_info.title = (7)
    print '著者名:'
    book_info.author = (7)
    print 'ページ数:'
    book_info.pages = gets.chomp.to_i
    print '発刊年:'
    year = gets.chomp.to_i
    print '発刊月:'
    month = gets.chomp.to_i
    print '発刊日:'
    day = gets.chomp.to_i
    book_info.publish_date = Date.new( (8), (9), (10) )
    sql = <<~SQL
      INSERT INTO (11) VALUES (
        #{book_info.title},
        '#{book_info.author}', 
        #{book_info.pages}, 
        '#{book_info.publish_date}'
      )
    SQL
    @db.execute (12) 
  end

  def listAllBookInfos
    @db.execute('SELECT * FROM BOOK_INFO') do |(13)|
      puts BookInfo.new(row['TITLE'], row['AUTHOR'] , row['PAGES'] , row['PUBLISH_DATE']).toFormattedString
    end
  end

  def deleteBookInfos
    listAllBookInfos
    print '削除する書籍名を入力してください(キャンセルする場合はエンターのみ)'
    title = gets.chomp
    if title != ""
      sql = "DELETE FROM BOOK_INFO WHERE TITLE='#{title}'"
      @db.execute (14)
    end
  end

  def run
    while true
      print '1. 蔵書データの登録
2. 蔵書データの表示
3. 蔵書データの削除
9. 終了
番号を選んでください(1,2,3,9):'

      num = gets.chomp
      case num
      when '1'
          (15)
      when '2'

ちなみに、今、採点を終えまして、正解率が以下のようになっています。ちなみにこのテストは30点満点です。ちなみに学生はPythonを導入言語として学びます。Rubyはこの科目で差分だけ学習する感じです(Pythonに変えるべきなんでしょうけど、日本人として福岡人としてRubyを推したい気持ちでやっています、学生は迷惑かもですが、でも学生からはRailsが知れてよかったという感想をもらうのでそれほど迷惑ではないのかな?と思っていますが)。(4)は特殊な書き方なので低くてもしかたがないかな。。。と。(13)もブロック引数でRuby特有ですね。(6)はSQLなのでこれは書けて欲しかったなあ。

以上です。