uetennis’s diary

プログラミングについて学んだ事やライフハックについてかきます

日報 8/7

やること

  • lsコマンドの修正
  • wcコマンドの単語を表示

学んだこと

  • wcコマンドの単語の定義

  • チェリー本 ヒアドキュメントとsplit勉強。

text =
<<~TEXT
a aa  bbb
rrr   hhh    eee
TEXT

puts text
p text.split(" ").length

# (m・_・bp) 16:03 ~/Desktop/vsnote2.0/kadai/wc % ruby e.rb
# a aa  bbb
# rrr   hhh    eee
# 6

ある程度近づいた!!

(m・_・bp) 17:05 ~/Desktop/vsnote2.0/kadai/wc % ruby f.rb
     152     421    3704 ls.rb
(m・_・bp) 17:05 ~/Desktop/vsnote2.0/kadai/wc % wc ls.rb 
     152     421    3704 ls.rb

配列の便利メソッドあれこれ - Qiita

Rubyでlsコマンド作成とヨドバシカメラに行ってきた。

朝が来た。 英文法大特訓を読んだ。 softskils読んだ。上司に頑張ってますアピールは大切だと学んだ!

秋葉原の肉のハナマサに行く前に寄り道した。鬼滅の刃のグッズが売っていた。斜向いには、おさるのシンバルくんがいた。購買意欲を刺激させる配置かも知れない。 ヨドバシカメラをでたら、迷子になった。千代田区の地図をみつけ、どうにか肉のハナマサについた。 プロ使用のポテトチップスのコンソメ味と、業務用のアイスクリームを買った。アイスクリームはくろみつきなこ味だ。

家に帰ってから、カレーを食べながらハイキュー!!みた。 ハイキュー!!の月島くんの性格は、ちびまる子ちゃんの長沢くんに似ていると思った。 月島くんは、迷っていた。上には上がいてどこまで頑張ればいいのか?たかが部活なのに。。月島くんは答えをみつけるのにもがいてた。 みんなにアドバイスをもらって答えをみつけたみたいだ。最初はつまらなかったができる事が増えて楽しかった。楽しい瞬間があるか、快感があるか。それだけで、厳しい練習に耐えられるらしい。 なるほど!わかる気がする。私もテニスをやってる時、常に楽しいわけでなかった。地獄のような振り回しは楽しいわけではない。ただ、上達したかった。1ポイントとる快感がたまらなかったから、きつい練習も耐えられたのだろう。

今日の勉強

15時~

どうすれば、-lと他のオプションを連携させることができるのか?

連携させるの難しいな。 やはり動かすことに集中させよう。

よし!動かすことできてすごい感動した!!!!!!!!!!⭐️ コードは343行あるからシンプルにしたい!

できなかったこと

オプション同士の連携が上手くいかなかった。 部品はあるのに、使いこなし方がわからない。

17時~

三項演算子でだいぶシンプルにできた。条件分岐された、optionを格納するといいみたいだ。

def initialize(opt)
  @opt = opt
  @files = @opt["a"] ? Dir.glob("*", ::File::FNM_DOTMATCH).sort : Dir.glob("*").sort
  @files = @files.reverse if @opt["r"]
end

Rubyでlsコマンドを作成の課題で、-alrを実装させることができた。提出することができて嬉しい。

lsコマンド作りと上野公園とダイソー

10時から15時まで

朝が来た。どうもお皿を拭くフキンが欲しいと思い上野のダイソーに向かおうと思った。先にシャワーを浴びてから行こうと思ったが、やめた。帰ってきてからシャワー浴びようと誓った。上野に向かう途中Justin Bieberの曲を聴いた。聞いている途中で、ブログを書く理由について考えた。自己紹介と友達作りのきっかけになればいいなぁと結論づけた。寄り道して上野公園に向かった。大きな公園はとても好きだ。自然が多いと、とても癒される。諸説によれば、自然の容量が多いとリラックス効果も高いし、腸内環境をよくしてくれる効果もあるらしい。 「自然」ヤバい。結局、リラックス法としては最強かも | パレオな男

今度こそ腸内環境を治したいあなたに送る「腸内フローラ改善のための8ステップ」 | パレオな男

上野公園の蓮を見て少し癒された。途中で鉄棒があり懸垂をした。回数は6回だ。あまりできなくて少し残念だ。公園を後にして上野のアメ横を通った。楽しそうに喋りながらビールを頬張る人たちがいた。私は楽しそうにJustin Bieberの曲を聴きながら Rubyでlsコマンドの作成について考えた。ちなみにlsコマンドはlist segmentsの略らしい。 ダイソーでは食器を拭くフキンがたくさんの種類あって、胸が踊った。レジでは人が並んでた。私も並んだ。レジの付近では陳列されたお菓子が並んでた。買いたい衝動を抑えようと深呼吸した。目をつぶって鼻から吸ってゆっくり吐いたのだ。そして目をあけた。お菓子は軽減税率で8%!という文字が私に向かって飛び込んできた。私の手は黒糖かりんとうに手を伸ばし、カゴにそっと置いた。 帰りはあいみょんを聞きながら行きと違う道を歩いた。少しばかりショートカットで帰れることを覚えた。家に着く頃にはあいみょんのマトリョーシカという曲のサビが終わった。 家に着いた後シャワーを浴びてヨガとHIITをした。帰ったらシャワーを浴びる誓いを守ることができて安堵した。

昨日のカレーの残りを食べた。

会話できる英文法大特訓した。和訳のみ ブログ書く理由のひとつに自分が頑張ってるアピールもいいかも softskilsという本に書いてあった。

15時から21時まで

はてなブログをproにした。 お菓子はさっき買った黒糖かりんとうを食べた。

lsコマンドをどうやって分解をすればいいか考えてたらパンクしそうになった。きれいに書く楽しみは後にとっておくことにする。まずは動かそう!

スパゲッティコードになってしまった。(処理が下から上にいっている。動けるけど)

ちょっと手書きで整理する。

よし!-lだいぶ整えることができた!正規表現で消した文字をrjustでやってもダメダメだった。

#変更前
stat.mtime.strftime("%m %d %H:%M").gsub(/^0/, "")
#変更後
stat.mtime.strftime("%m %d %H:%M").gsub(/^0/, " ")

感想

lsコマンド結構すすんだ!

Rubyの`transpose`とメイドさんと肉のハナマサ

0時から3時まで

どうやら私はtransposeから嫌われているようだ。 全然できない。 そんなことを考えながら、日報を読んだ! どうやら、[061] lsコマンド #5 | FJORD BOOT CAMP(フィヨルドブートキャンプ)

each_sliceだと余りにnilが入らないため、transposeを使うのに都合が悪かった。(上の例でいうと、["tea", nil, nil]になってほしかった) 調べたところActiveSupportのin_group_ofを使うといいと分かった。

なるほど~それを使おうと思ったら、

ls コマンドを作る | FJORD BOOT CAMP(フィヨルドブートキャンプ)

gemを使わずにRubyの標準ライブラリのみで実装してみてください。どうしてもgemに頼らざるを得なかった場合は提出時にその旨コメントしてください。

なんと!今はダメでした。けど、考え方はわかったぞ! 色々と手を動かした。どうやら、上手く行きそうだ! これでtranepose使えそうだ。

b = (1..10).map{|i| i.to_s.ljust(30)}
a = []
b.each_slice(3) do |x|
  a << x
end
if a[-1].size == 1
  a[-1].push(nil, nil)
else x[-1].size == 2
  a[-1].push(nil)
end
puts a.transpose.join(" ")

11時から15時まで

夜ふかししてたら、遅く起きた。午前中の勉強は諦めた。 秋葉原に買い物に行く。人が多い、メイドさんも多い。なるほど!今日は土曜日だ!人とメイドさんの多さで気づいた。 途中まで、涼しかったが日が照ってきて熱くなり、マスクが蒸れてきた。 100ショップに買い物行く途中に、メイドさんにたくさん声をかけられた。何度も「ごめんなさい」と言って、100ショップに向かった。忍者の格好したメイドさんに、声をかけられ、「ごめんなさい」と断ったら、「かたじけない」と言われた。ちょっと印象に残った。 100ショップ行った後、肉のハナマサに行った。 カレーのフレーク1kgと材料と気になってプロが使う納豆を買った。 「トクバイというアプリで肉のハナマサの最新情報をゲット」というポスターがあって、インストールした。

昼ご飯は、さつまいものカレーを作って食べた。

15時から19時まで

rubyで絶対pathについて調べた! Dir.glob()を使うときは、パスを絶対パスに変換してから – 山本隆の開発日誌

様々なディレクトリのパスを取得する/パスを加工する | まくまくRubyノート

ターミナルでやったが順番が違う。

まだ順番が違うみたいだな。。下記は失敗コード。

class LsCommand
  def call
    file_join
  end

  def transpose_test
    a = []
    a << test
    a.transpose
  end

  def file_join
    trans_pose.join("")
  end

  def trans_pose
    slice.transpose
  end

  def slice
    a = []
    just.each_slice(3) do |x|
      a << x
    end
    case
    when a[-1].size == 3
      # 何もしない
    when a[-1].size == 2
      a[-1].push(nil)
    when a[-1].size == 1
      a[-1].push(nil, nil)
    end
    a
  end

  def just
    a = []
    not_option.map do |x|
      a << x.ljust(24)
    end
    a
  end

  def not_option
    Dir.glob("*").sort
  end
end
puts LsCommand.new.call

本場のlsコマンド3列の時の文字数が24文字と気づいたのは良しとするか。

夕ご飯はインスタントで博多ラーメン食べた。お湯入れすぎで微妙な味だった。ラーメン食べながらハイキュー!!というアニメを観た。

23時から25時まで

transposeの理解が足りてないことに気づいた!行が14行あり、14の要素ずつほしいには下記の通りすればいいと気づけて良かった!

Array#transpose (Ruby 2.7.0 リファレンスマニュアル)

a = []
just.each_slice(14) do |x|
  a << x
end

やったー!each_slicewhileで、ActiveSupportin_group_of ぽい処理をすることができた。

a = %W(aa, bb, cc, dd)
p a.class
p a.size
b = []
a.each_slice(3) do |x|
  b << x
end
while b.size < 3
  b[-1].push(nil)
  break if b[-1].size == 3
end
p b
(m・_・bp) 1:09 ~/Desktop/vsnote2.0/kadai/lsコマンド % ruby memo.rb
Array
4
[["aa,", "bb,", "cc,"], ["dd", nil, nil]]

感想

結構すすんで良かった!明日はarlオプションを連携させたい。

2020/7/31

やりたい事

  • カレンダーとボウリングプログラミングの復習
  • lsコマンドの表示のさせかたを試す
  • スタンディングデスクの時間を増やす

休憩中にやりたい事

  • [x] yoga
  • [x] HIIT
  • [x] 昼飯と仮眠
  • [x] 日記とログをまとめた記録を残したり投稿する
  • [x] duolingoとDropsというアプリで英語の勉強
  • [] softskillsを読む

振り返り

8時から11時まで

カレンダーとボウリングの課題の復習 CSSの課題の復習 Rubyの本を復習

  • なぜ、配列と文字列を合わせる事ができるのかなと思ったら、とんだ勘違いだ。やはり、.classで調べる事がいかに大切かを改めて認識した。復習大切だと思った!
  • 復習してないから何度も同じ質問をしている。そういう自分に気づいた。
days = (1..31).map {|i| i.to_s.rjust(2)} #文字列だと思っていた。
    (["  "] + days).each_slice(7) do |week|
      week = week.join(" ")
      puts week
    end
    p [" "].class
    p days.class
(m・_・bp) 10:45 ~/Desktop/vsnote2.0/memo % ruby memo.rb
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Array
Array

つぶやき

自分が書いたコードなのに忘れてる😅

学んできた事を思い出す事で、記憶の定着図れる。また、苦労してできるようになった喜びも思い出す事ができるからテンション上がる。

こちらの記事読んだ。 効率的に新しいことを学ぶ方法 - Kentaro Kuribayashi's blog

細部から入ると学習が遅いし、行き詰まって嫌になる。これが一番のポイント。

なるほどね。確かに。気持ちわかるかも!テニスの練習の時、細かい部分(振り遅れた時のウィンドミルで対処とか)はある程度上達してからじゃないと意味なかったな〜と思い出した。必要性があった時にそういう技術を覚えたかも。

ヨガやった。

11時から12時30分まで

やばい、勘違いして覚えてる。

p %w(日 月 火 水 木 金 土).class #=> Array  調べるまえはsuring型だと思ってた。

ボウリングプログラミングは最近やったから、復習してすぐに思い出せた! テスト駆動開発は今やると混乱するから、後の楽しみにとっておく事にした!

復習で他の人が書いたコード読んでると新たな学びがあって楽しいかも!一度、自分でも書いたコードだから、全然理解できないという事でもないし!

つぶやき

今まで早く卒業したいから、新しい事ばかり覚えて、振り返る事を疎かにしていたので、復習してみたらモチベーションあがっている自分に気いた。

全然Ruby基礎的な事、理解してない。ショック。自分の事をフォローするなら、業務に入る前に今のうちに気づけて良かった感もある。

コメントがたくさんある人のコードを読むと結構学びがあると知った!

13時から15時まで

これはSymbolなのか

p (:aa).class
p (:aa)
puts (:aa)
(m・_・bp) 13:13 ~/Desktop/vsnote2.0/memo % ruby memo.rb 
Symbol
:aa
aa

class Symbol (Ruby 2.7.0 リファレンスマニュアル)

実用面では、シンボルは文字の意味を明確にします。`名前'を指し示す時など、文字列そのものが必要なわけではない時に用います。

Symbol クラスのメソッドには、String クラスのメソッドと同名で似た働きをするものもあります。

文字列の代わりに用いることもできますが、必ずしも文字列と同じ振る舞いをするわけではありません。

なるほど~

変数の勉強 変数と定数 (Ruby 2.7.0 リファレンスマニュアル)

つぶやき

頭の中で処理をイメージしながら、コードを読むと理解の深みがでると気づいた!

16時から19時まで

String#index (Ruby 2.7.0 リファレンスマニュアル)

p "astrochemistry".index("r")         # => 1
p "regexpindex".index(/e.*x/, 2)        # => 3
p "character".index(?c)                 # => 0

p "foobarfoobar".index("bar", 6)        # => 9
p "foobarfoobar".index("bar", -6)       # => 9

これよく間違える

fare <= ticket.fare # <<と<=

演算子の勉強 Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 2.7.0 リファレンスマニュアル)