怠惰な人の勉強記録

個人的な勉強の記録を残します。

6月5日進捗

今日は作りながら学ぶRuby入門の課題を14章までできた。

HTMLもProgate でやっていたが、道場?編という実践問題になって、どれだけ脳死でやっていたかが分かった。基本を勉強しても組み合わせなどの応用が利かないと使えないことがよく分かった。これからはバランスよくどちらもやっていく。

6月4日進捗

今日はHTMLとCSSの学習をした。

久しぶりに触ると、思ったように配置ができない。

floatなどのスタイルの使い方はもう一度学習しておいたほうがよさそう。

また、知らないタグがいくつかあり、調べるのに時間がかかってしまったので

今後面倒なことをしないようにまとめておく。

6月3日進捗

今日はRubyの基本構文に軽く触れた。

作りながら学ぶRuby入門では必要な構文をその都度書いていくので基本的なFor IF timesなどを知らなかったので基本を学ぼうと思い、勉強した。Progate で基本的なことは学習したがOutputができていないのでなんでもよいのでやろうと思う。

また、HTMLの書き方を忘れていたので小一時間かけて復習を行った。HTMLというよりはcssで見た目を整えるのが思いのほか難しかった。Javaなどで動的なサイトを作れるらしいが後回し、Rubyと組み合わせて何らかのアプリを作ることを当面の目標にする。

6月2日進捗

前回書いたコードの問題は解決した。

今日はprogateというサイトで勉強をした。基本的な事項が詳しく書いてあるため復習としてはちょうどよい。ただし、学習の順番はバラバラなので一つ課題を絞ってしれに関してみていくほうが効率がよさそう。先先進むだけでなく。

復習をしっかりするように心がける。

6月1日進捗

引き続き昨日の問題に悩まされる。

teratailで回答を下さるも、どれもうまくいかず。そもそも環境構築でミスっているのか?

ただ、日本語を入力すると消えてしまう問題の応急処置として下のよなことが分かった。原因はわからん。おいおい調べる。今はこれでしのいで課題を進めていきたい。

コマンドプロンプトの設定について
コマンドプロンプトを開く → 規定値 → レガシーコンソールを使用するのチェックを外す。
チェックをつけているとVScode内で使えないようです。
ただ外すと直接コマンドプロンプトを使おうとしたときに文字色がなぜか黒になって一見画面が真っ暗になります。

システムロケールの設定について
1.スタートメニューから設定を開く 
2.時刻と言語 → 地域
3.関連設定の中の【日付、時刻、地域の追加設定】 → 地域
4.管理タブを開き「システムロケールの変更」→ ベータ:ワールドワイド~~utf-8を使用 にチェックを入れる
パソコンを再起動。

これで日本語の入力ができるようになるが、プログラムを動かしているときに入力するためには、一度アルファベットを打ってから消さないと日本語が打っても消えてしまう。
これが謎。
応急処置として、入力前にアルファベットを打つと日本語入力できる。
根本的な原因はわかりませんでした。

5月31日進捗

前回に引き続き同じ課題をやっている。

ネットを使いいろいろと調べながらやっていたが、解決できないエラーが出たので初めてTeratailを使って質問をした。https://teratail.com/questions/266467?modal=q-comp

質問の仕方が難しい。怒られそうで怖いが先に進めないのは困るので返信を待つ。

やはり基本的なことがわかっていないと難しいことが多いのでProgate に1月登録することにした。復習って大事だなぁと思った。ぼんやり理解していたことがはっきりわかる。何となくで書いているコードの内容がわかるのでとても良い。とりあえず演習と並行してやっていくことにする。一応記録のために載せておく。あとで見返して原因がわかるようになります。

  def searchBookInfo
    book_info = BookInfo.new(""""0nil)

    print "\n"
    #print 'キー'
    #print gets.chomp
    print '書籍名:'
    book_info.title = gets.chomp.encode('shift_jis').to_s
    print '著者名:'
    book_info.author = gets.chomp.encode('shift_jis').to_s
    print 'ページ数:'
    book_info.page = 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(yearmonthday)

    @book_infos[key= book_info

    search = book_info

    @book_infos.each do |key, info|
      search_flag = 1 # 検索条件と一致しているか
      input_check = 0 # 検索条件が未入力か

      if search.title != ''
        search_flag = 0 if search.title =~ /[^"#{info.title}"]/

      else
        input_check += 1
      end
      if search.author != ''
        search_flag = 0 if search.author != info.author
      else
        input_check += 1
      end
      if search.page != 0
        search_flag = 0 if search.page != info.page
      else
        input_check += 1
      end
      if !search.pdate.nil?
        search_flag = 0 if search.pdate != info.pdate
      else
        input_check += 1
      end

      # 比較が全て一致した蔵書データをハッシュに格納する
      # 検索条件が全て未入力の場合は格納しない
      found_book[key= info if search_flag == 1 && input_check < 4
    end
    puts "\n------------------------------"
    if !found_book.empty?
      # 比較が全て一致した蔵書データを表示する
      found_book.each do |info|
        print info.toFormattedString
        puts "\n------------------------------"
      end
    else
      print '条件に一致する蔵書はありません'
      puts "\n------------------------------"
    end
  end

5月30日進捗

駄目ダメです。全く進まん。できたと思ったらちゃんと動かない。

検索画面の書籍名あるいは著作者のところで固まる(ターミナルが操作を受け付けなくなり、VScode自体は動く)デバッグのやり方がよくわからないので、明日はそちらの環境を整えるか、自力で調べて解決する。これじゃあいかん!

記録のために全文載せておく。

# frozen_string_literal: true

require 'date'
require 'pry'

class BookInfo
  def initialize(title, author, page, publish_date)
    @title = title
    @author = author
    @page = page
    @publish_date = publish_date
  end

  attr_accessor :title:author:page:publish_date

  def to_s
    "#{@title}#{@author}#{@page}#{@publish_date}"
  end

  def toFormattedString(sep = "\n")
    "書籍名:#{@title}#{sep}著者名:#{@author}#{sep}ページ数:#{@page}#{sep}出版日:#{@publish_date}#{sep}"
  end
end

class BookInfoManager
  def initialize
    @book_infos = {}
  end

  def setUp
    @book_infos['Yamada2005'= BookInfo.new('実践アジャイル''山田正樹'248Date.new(2005125))

    @book_infos['Ooba2006'= BookInfo.new('入門LEGO''大庭進一郎'164Date.new(20061223))
  end

  def searchBookInfo
    book_info = BookInfo.new(''''0nil)

    print "\n"
    print 'キー'
    print gets.chomp
    print '書籍名:'
    book_info.title = gets.chomp.to_s
    binding.pry
    print '著者名:'
    book_info.author = gets.chomp
    print 'ページ数:'
    book_info.page = 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(yearmonthday)

    @book_infos[key= book_info
    search = book_info
    @book_infos.each do |key, info|
      search_flag = 1 # 検索条件と一致しているか
      input_check = 0 # 検索条件が未入力か

      if search.title != ''
        search_flag = 0 if search.title =~ /[^"#{info.title}"]/

      else
        input_check += 1
      end
      if search.author != ''
        search_flag = 0 if search.author != info.author
      else
        input_check += 1
      end
      if search.page != 0
        search_flag = 0 if search.page != info.page
      else
        input_check += 1
      end
      if !search.pdate.nil?
        search_flag = 0 if search.pdate != info.pdate
      else
        input_check += 1
      end

      # 比較が全て一致した蔵書データをハッシュに格納する
      # 検索条件が全て未入力の場合は格納しない
      found_book[key= info if search_flag == 1 && input_check < 4
    end
    puts "\n------------------------------"
    if !found_book.empty?
      # 比較が全て一致した蔵書データを表示する
      found_book.each do |info|
        print info.toFormattedString
        puts "\n------------------------------"
      end
    else
      print '条件に一致する蔵書はありません'
      puts "\n------------------------------"
    end
  end

  def addBookInfo
    book_info = BookInfo.new(''''0Date.new)

    print "\n"
    print 'キー'
    print gets.chomp
    print '書籍名:'
    book_info.title = gets.chomp.to_s
    print '著者名:'
    book_info.author = gets.chomp.to_s
    print 'ページ数:'
    book_info.page = 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(yearmonthday)

    @book_infos[key= book_info
  end

  def listAllBookInfos
    puts "\n---------------------"
    @book_infos.each do |info|
      print info.toFormattedString
      puts "\n---------------------"
    end
  end

  def run
    loop do
      print "
    1.蔵書データの登録
    2.蔵書データの表示
    3.蔵書データの検索
    9.終了
    番号を選んでください(1,2,9)"
      num = gets.chomp
      if num == '1'
      elsif num == '2'
        listAllBookInfos
      elsif num == '3'
        searchBookInfo
      elsif num == '9'
        break
      end
    end
  end
end
book_info_manager = BookInfoManager.new

book_info_manager.setUp

book_info_manager.run