Eat, Play, Nap and Code

食とあそびと昼寝とプログラミング学習

週報 2021/5/10(月)〜2021/5/16(日)

📚 今週の感想

今週というかもう水曜になってしまいました…! Discordのニックネームをaddcommitpushに変え、ハチャメチャに勉強するつもりだったんですが、案の定というべきか慣れないことをしたせいか夜寝れなくなり、メンタルの調子とプラクティスの進み具合がメキメキ悪くなってしまいました。

もうeatplaynapに戻ったので、こうやって週報書けるくらいまで回復しました。 自分がいつまでも変われないのはちょっと悲しいですが、楽しく勉強するのが1番なので無理せず自分のペースでやります。

📚 もくじ

📚 目標と成果

目標 成果 来週の課題
Sinatra課題のタスクをもうちょっと詳細に詰める OK -
HTMLの復習を軽くやる OK -
Sinatra課題1度提出する NG 動作版完成
ActiveRecordのドットインストールの講座を流し見 1話だけ 全部見てみる
やる気を失わずにやるべきことをやる ? 引き続き

📚 学習時間

日付 時間
5/10(月) 05:00
5/11(火) 06:00
5/12(水) 05:15 ​
5/13(木) 04:00
5/14(金) 04:15
5/15(土) 03:15
5/16(日) 00:15
合計 28:00

📚 週報

📅 5/10(月)

💪 やったこと

🍕 感想

  • ドットインストールよりもpaizaを見ればよかったかもしれない。
  • 週報毎週書いてて偉い。

📅 5/11(火)

💪 やったこと

  • Sinatra | Webapps for Beginnersを読んでみる。Sinatraが自転車だとしたら、Railsは車。Rackは靴みたいなものらしい。RackってXSS対策のときに書いてたやつだ。
    • このサイト、コードもたくさん載っていてメモアプリに使えそうだけど、Rubyの文法知識の穴のせいで分からない箇所が多い。
    • ハッシュをしっかり学ばないとダメっぽい。チェリー本で復習しようかな。
    • Groups of routes | Webapps for Beginnersの表をURI設計とerbファイル名に参考にしよう。membersをmemosに変更すればそのまま使えるな。
  • Yusuke (id:yskmtg) さんがオーガナイズしてくれた前々回のLT会でYusukeさん自身が発表した内容がSinatraだったな…と思い出し、スライドを見てみる。機能を言語化、図を書いてイメージ。よさそう。 speakerdeck.com
  • いざページを書こうと思ってもHTMLがよくわからないので、freeCodeCampで復習した。paizaやドットインストールの無料動画分でもかなり勉強できるし、Duolingoもあるし、無料で色々教材にアクセスできてインターネットはすごい。
  • A - Placing MarblesYouTube用に解いた。これは競プロ始めて最初の頃解いた問題なので、コードを見比べてみた。比べると、実行速度は全然変わってないけど、Rubyでできることは増えたのがよく分かる😆
# 😄 3月31日のコード
input = gets.to_s.chomp.split("")
output = 0
input.each do |x|
  if x == "1"
    output += 1
  end
end
p output

# 😄 5月11日のコード
def cal_sum_of_ones(s)
  puts s
end
 
cal_sum_of_ones(gets.chomp.to_s.chars.map(&:to_i).sum)

# 😄 今考えるとto_sいらないし、ここまで短くもできるな
s = gets.chomp.chars.map(&:to_i).sum
puts s

🍕 感想

  • 前提知識が足りていないのか、何をすればいいのかが分からなくて、調べる→分からない→更に調べる→分からない…のループを繰り返していて進歩が感じられず辛い😭
    • メンターさんより、「n回ループを繰り返したら質問する」というふうに機械的に質問ルールを決めるのをオススメいただいた。学習が進むにつれ質問のハードルを自分で無意味にあげてしまっているので、「もうちょっと調べれば分かるかも」という時点で聞くことを心がけるべきかもしれない。瀕死になるまで自力でがんばるのではなく、まだ元気とやる気があるうちにセーブしておくようなイメージだ。
  • ER図の課題も何を読んでも何も分からん状態から課題合格できるくらいまで行けたので、毎日諦めずに取り組んでいれば現状打破できると信じたい。

📅 5/12(水)

💪 やったこと

  • チェリー本でハッシュとシンボルの復習をした。
    • 単位変換プログラム、最初に読んだときはただ写して試すだけだったけど、今回説明を読んで自分でコードが書けたのはうれしかった。lsコマンドやwcコマンドでRubyの基本動作が理解できたのと、毎日A問題を解いているからだと思う。
  • ハッシュで繰り返し処理をするとき、ブロック引数を1つにするとキーと値が配列に格納されることを知った。というのも先週ABCのC問題の復習でeach_valueメソッドを使って値を取り出すコードを書いたばかりだったので。前のコードの方がいいと思うけど、↓のような書き方で値を取り出しループされることができる。
n = gets.to_i
a = gets.chomp.split(" ").map(&:to_i)
array = a.map {|element| element % 200}
hash = array.group_by(&:itself).map{|key,value| [key, value.count]}.to_h
ans = 0
hash.each do |key_value|
  ans += key_value[1] * (key_value[1] -1) / 2
end
 
puts ans

🍕 感想

  • あまり元気が出ないけど、とりあえず日報を途切れさせないようにしたい。
  • 分かってないことと分かってることを整理したい。
  • Sinatraが分からなくて辛い分、競プロがめっちゃ楽しい〜。

📅 5/13(木)

💪 やったこと

  • 分かってないこと、今できないことを紙に書いてみた。
  • erbがわからないので、とりあえずHTMLで実現できる部分(一覧、新規作成画面)だけ実装した。

🍕 感想

  • ほどほどに楽しむことを忘れずに取り組みたい。
  • わからないし質問する元気が出なくてつらい…と書いてたんだけど、書いてたら更につらい気持ちになってきたので消した😭

📅 5/14(金)

💪 やったこと

  • paizaのSinatra講座を見た。ちゃんとコード読んで理解しないと。
  • 動画講座そのものというより、参考リンクが思ったよりたくさんあってありがたい。↓を読んで、rubyのプログラムを書くファイルとerbのファイルにそれぞれ何を書くかが少しイメージついた。
  • テンプレートシステム入門 (1) 歴史編
  • テンプレートシステムとは、テンプレートとなるファイルをメインプログラムから読み込み、必要な箇所を書き換えて出力する仕組みのこと

    • ふーむ。だから変数はrubyのプログラムを書くファイルの方に書いて、erbのファイルでは変数をどう展開させて表示させるかを書くのかな。

🍕 感想

  • ラクティスも進まないしメンタルの調子もよくないのは、ちゃんと寝れてないのが全ての元凶と分かったので、睡眠第一で行こうとおもった。
  • 明日明後日は兄の結婚式で遠出するので、プラクティスのことはあんまり考えないで過ごす。

📅 5/15(土)

💪 やったこと

  • 5時間車に乗ってたので、Audibleで3時間くらい『達人プログラマー』を聞いていた。内容は面白いけど、他の人と乗ってる車の中で聞くと、集中できなかったり他の人に気を使わせたりと色々良くなかったのでもうやらない。

  • 車の中でふと「Sinatraのプログラムを書くファイルって、Sinatraという言語じゃなくて、Rubyのコードを書けばいいんだ!」と気づいた。こうわざわざ書くと何当たり前のことを言ってるの?という感じだけど、Sinatraのプラクティスに入って、全く新しいことをやっている気持ちになって分からない状態が続いていたようだ。
  • 上記が分かったら、paizaの講座も理解が進んで、txt形式でフォームから入力を受け取り一覧画面にメモのタイトルを表示させるコードが書けた。

🍕 感想

  • Audibleを初めて聞いてみたけど、簡単な内容なら読むより理解しやすいかもと思った。本買うより安いし。著者注が著者の声で挟み込まれてるのもいい。ただ、技術的な話になると聞いてるだけだとちゃんと理解できない。
  • さわやかでハンバーグを食べたのでいい日🟤

📅 5/16(日)

💪 やったこと

🍕 感想

  • 兄の結婚式に参加した。もともと去年の予定がコロナで延期になって、結局今年も家族だけの式になってしまったので残念だなと思った。
  • 結婚式でつかれたので勉強は最低限。

📚 来週の目標

  • Sinatraメモアプリ動作版を完成させる
  • 1回質問する(形式問わず)