20210318_アウトプット(terminal・メソッドについて)

アプトプット画像

今日学んだこと

macの開発環境を作る

(1)ダウンロード後の便利な機能について

私🤔 { ダウンロードしたアプリごとに許可するの面倒だな・・
先生🥸 { 以下のコマンドを打つと"システム環境設定>セキュリティとプライバシー
    (一般)"において「全てのアプリケーション」が表示されるようになり楽だよ

% sudo spctl --master-disable
(2)視覚的に分かる「Finder」に隠しフォルダを表示させる機能について

私🤔 { 隠しフォルダはコマンドからでないと見れないのがわかりづらい。
     GUIで見れると便利なんだけど・・・
先生🥸 { 以下のコマンドを打つとFinderのホームディレクトリに隠しフォルダが
    視覚的に表示されるよ
私😍 { 今まで右クリック+削除で消してたー!ゴミ箱が表示されて便利!🗑💡

% defaults write com.apple.finder AppleShowAllFiles TRUE

# 適用のため一度キルと表示されているよ❗️
% killall Finder

# ショートカットキーでも切り替えられるよ❗️
% [command] + [shift] + [.(ドット)]

Terminalの基本を知る

  • binってbinaryの略だったんだ!
  • echo(エコー)で表示されるのは引数で渡していたんだ!(引数は英語でargument(アーギュメント)と読む)そして()がなくてわからなかったけれど best my friendなどもスペースで区切って3つの引数を渡して表示させているだけだったんだ!(PCの世界はデータを渡す際、引数で出来ている言葉の意味が深まった)
  • $PATHも一つの変数なんだ!そして、それらのような黒い画面であらかじめ設定されている変数が「環境変数」というのか!(スッキリ〜😂)
  • $正規表現なのかな?($…直前の文字が行の 末尾 にある場合にマッチ)もしかして/と一致しているのを探している?(違うのかも)

私🤔 { パスを通すとかっていうけれどパスって何?
先生🥸 { 黒い画面に設定されている項目の一つで、この中に登録しているとダイレクトにファイル名だけで実行できるようになるよ
私😍 { さっきの「隠しフォルダをFinderに表示させるという知識」も繋がって、binなども一つのファイルだったんだ〜 命令だと思っていたよ 以下の一文でスッキリだよ 少しだけ黒画面に親近感がわいたかも

引用 「黒い画面」は自由に文字を打ち込んで良いように見えますが、結局はプログラムのファイル名を打ち込んでいるだけです。$PATH を見て、そこに書いてあるディレクトリにもその打ち込んだ文字と同じファイル名のプログラムがなければエラー。ただそれだけです。

macディレクトリ構造の意味を知らなかった
ディレクトリ名 内容(意味)
/Applications GUIアプリ置き場
/Users ユーザーごとのディレクト
/bin 最低限必要なコマンド置き場
/sbin システム管理者が使うコマンド置き場
/etc エトセトラ・・実質設定がいる置き場
/tmp テンポラリー・・再起動したら消えてもいいような一時置き場
/usr userの略で、元々は現在のUsersのような用途のためにあった。今はシステム起動に必要なもの以外のファイル置き場程度の用途になってしまった
usr/bin システムの起動に必要でないコマンド置き場
usr/sbin システムの起動に必要でない管理者ようコマンド置き場
usr/local このコンピュータのみで使うプログラム置き場

私😍 { この間、rubyのバージョンアップを行った時にusrと打つときe入れたくなるな
    これはタイポで登録してしまった命令なのか?と思っていたよ
    略であることや「システム起動に必要ではないものを入れている一つのファイル」を指定していただけだったんだね!


オプションについて

私🤔 { オプションを指定するときにハイフンが一つあるのと二つあるのと違いは何?
先生🥸 { 中身は同じなんだ。「ハイフン一つ+アルファベット一つ」か、
    「ハイフン二つ+そのオプションを略さずに表示した言葉」の違いだけだよ
    略した版→ショートネームオプション
    略さない版→ロングネームオプション というよ そのままだね
私🤔 { 違うことでの、使用方法の違いは何?
先生🥸 { ロングネームオプションに文字を渡すときは=(イコール)が必要だよ

#どちらも、tmpにあるfooというファイル名を引数で渡して実行している
% command -f /tmp/foo
% command --file=/tmp/foo

私🤔 { コマンドいっぱいあって意味が覚えられないよ(涙)
先生🥸 { コマンド名 --helpコマンド名 --hで簡易的な意味を教えてくれるよ
    がっつり知りたいときはman lsを実行しよう 英語でマニュアル出てくるよ
私🤔 { コマンドの右側にオプションをつけると実行されてしまう気がしていたよ
    ヘルプオプションは実行されずに意味だけ教えてくれるんだね!



rbenvでバージョンを切り替える方法

(1)インストールできる一覧をチェックする。

$ rbenv install -l

(2)そのリストの中から、インストールしたいバージョンを設定。

$ rbenv install 3.X.X

(3)ローカルとすると現在のディレクトリに適用(グローバルとすると全体に適用)

$ rbenv local 3.X.X
  • rbenvは一回ごとに、インストールしてバージョン管理すると思っていた。ディレクトリごとにバージョンを切り替えできるのはとても便利だと新しい発見だった。


tallyメソッドについて(Hashクラス)

  • tally(タリー)とは、「勘定、計算、(出費などの)記録、(競技の)得点、勘定を記録したもの、勘定書、計算書」という意味。

  • tallyメソッドは配列の中に、対象がいくつずつ入っているのか計算し、ハッシュで返すメソッド。

animals = ["ねこ","いぬ","いぬ","うさぎ"]
puts animals.tally

# 結果
=> {"ねこ"=>1, "いぬ"=>2, "うさぎ"=>1}



digメソッドについて(Hashクラス)

  • dig(ディグ)とは、「(道具・手などを使って)掘る、掘り起こす、(…を)捜し出す、発見する、探求する、調べ出す」という意味。

  • ネストしている配列やハッシュから、参照して返すメソッド。

  • キーや値が見つからなかった時、順番に見つける方法だとNoMethodErrorとなるが、digを使うとnilを返す違いがある。

h = { foo: {bar: {baz: 1}}}

# 通常は、キーを順番に選択していき、「1」までたどり着く
puts h[:foo][:bar][:baz]
=> 1

# digメソッドを使うとこんな感じ
puts h.dig(:foo, :bar, :baz)
=> 1

docs.ruby-lang.org



感想

  • 昨日、思考を整理したおかげでまた楽しみながら学べたのが嬉しかった。

  • 初めて、ミートアップに参加した。話している内容が深くて(背景や向き合い方など)楽しかった。

  • 黒画面について、初めの頃は、そもそもの単語の意味(引数や、"コマンドで実行する"の感覚とか)がわからずちんぷんかんぷんだったけれど、再度意味を理解できてワクワクした。