20210321_アウトプット(terminal,HTML)

アプトプット画像

学んだこと

(パート8)作業の自動化にはScript(台本)が便利

私🤔 {スクリプトで自動化する手順を教えて!

先生🥸{ 2段階あるよ!

  • 行いたいコマンドをスクリプトに書く(そのスクリプトshコマンドで実行可能)
      ・その時はコマンド名からでOKだよ(%はシェルが入力待ちを表しているだけのため)
      ・mkdir ディレクト名 touch ファイル名 vi ファイル名で作成できた✏️
  • shを無くして、スクリプト名だけで実行したい場合は、以下の手順だよ。
    (1)シバンの記述

🐶ファイル1行目の最初の2文字が#!だったらその後に書いてあるコマンドが渡されるよ

 ~ % vi echo-hello 
 ~ % cat echo-hello
#!/bin/sh
echo hello

(2)ファイルの権限を変更
🐶Chenge MODeで、u(ユーザーに) +(指定した権限を付与) x(実行する)だね!

 ~ % chmod u+x echo-hello
 ~ % pwd    
/Users/f.XXX
 ~ % /Users/f.XXX/echo-hello 
hello

(3)どこからでも実行できるようPATHの設定

🐶オリジナルスクリプトは、ホームディレクトリにbinディレクトリを作成し置く人が多いよ
🐶export環境変数の設定、:(ころん)ディレクトリ名を繋げることから、「今までPATHで設定しているものに、~/binを追加しているんだね

 ~ % mkdir bin     
 ~ % mv echo-hello bin/ 
 bin % export PATH=$PATH:~/bin
 bin % echo $PATH 👀追加されていることが確認できる
 bin % echo-hello   
hello 🎉出来た

(パート9)ターミナルとシェルとは?

私🤔 {ターミナルって何?
先生🥸{ 文字を入力することと出力することができる端末をソフトウェア化したものだね
私🤔 {シェルって何?
先生🥸{ プロンプトを表示してユーザーからの入力をまち、入力されたファイル名のプログラムを実行し、終了したらまたプロンプトを表示して待つターミナルとOSの仲介役だね

その他

say "hoge"で喋るの知らなかったwww この記事をみて、いろんな声で話せることを知った。面白い。




HTMLについて(新しい発見になったこと)

  • 用語説明をするときはdl要素[description list:説明リスト]が使える(その中の子要素に説明される言葉としてdt要素[description term]、説明・定義部分としてdd要素[description, definition]を記述。)
  • 文章内で定義語として役割を持たせることができるdfnタグ[definitionの略]もある。
  • 表内でth要素とともにabbr属性を使うと、音声ソフトで読み上げる際には、省略された見出しが読まれるなどのアクセシビリティに配慮した機能がある。
  • クラス名をつけるときは「色」ではなく「なぜその色を使うのか」と意図が伝わるように書いた方が良い。(例:class="red"class="attention"
  • span要素タイプでクラス指定するよりも、em要素strong要素としてマーク付けする方がふさわしい場合が多い。(em要素[強調]、strong要素[さらに強調])
  •  aタグはbody要素内においてハイパーリンクとして使用する。linkタグはhead要素内においてcssファイルなど他のリソースと結び付ける働きをする。(ついつい”リンク”というので混乱しがちだった)
  • img要素には、Alt属性をつけて、目が見えない方でもその画像は何か説明する。その際に画像の種類だけだとナンセンス、意味が通じるように書くこと。(alt="logo"alt="HOGE INC."
  • Web文書は、どんな順序で読まれるか、どこから突然リンクを張られるか、予測がつかないので、どのページにおいても何らかの形で作者をたどれる情報を加えておくこと。(原則は、address要素に連絡先やメールアドレスを加えておく。そのほかの方法としては、head要素の中に<link rev="made" href="mailto:webmaster@hoge.com" />と書く)

私🤔  { divarticlesectionの違いって何?
先生🥸  { 要素内のコンテンツに意味がないのであればdivを、意味があるコンテンツかつそのカタマリだけで独立する内容の場合にはarticleを、そうでなければsection要素を使うよ
私😖  { 今までdivタグを乱発していた💦アウトラインを考えて作るんだね。

感想

  • HTMLについて「デザインするためにマークアップ」「divの乱用」など、HTMLの認識を誤っていたことに気づけた。
  • W3CWHATWGなどのごたごたも知らなかった。経緯を知ると、ネット上にある記事の中でも「今、正しい知識のはどれなのか」少しだけ見る力がアップした気がする。

20210319_アウトプット(terminal)

アプトプット画像

今日学んだこと

macの開発環境を作る(パート5〜)

(1)ネットから簡単ダウンロード cURL

私🤔 { cURL(シーユーアールエル)ってどんなコマンド? カール🧔🌽だと思ってたよ
先生🥸 { ネットからファイルを簡単にダウンロードできるコマンドだよ
     ここでいう”ファイル”とは、写真のようなイメージを持つかもしれないけれど
    ①URLにおいて右クリック②ソースコードを表示とした時の結果を返すことなんだ
私🤔 { ソースコードが書いてあるファイルのことを指しているんだね
    これが使えるとどんな便利なことがある?
先生🥸 { -oオプションをつけると、そのソースファイルを「名前をつけて保存」が出来たり、
    Iオプションを使って、ソースファイルがきちんと表示されているかチェック出来るよ

# foo.htmlという名前でソースファイルとして保存される
% curl http://example.com -o foo.html

# 200が表示される → エラーが起きずに表示できていると確認できる
% curl -I  http://example.com
=> HTTP/1.1 200 OK

同じ役割を果たすものとして、wgetがあるよ!Homebrewでインストール可能

% brew install wget


(2)とにかく開くコマンドopen

私🤔 { openコマンドって何?
先生🥸 { その名前の通り、「開く」コマンドだよ
    ファイルやURL、今いるディレクトリなどを色々開けるよ

# 今いるディレクトリのファイルを開く
% open .


(3)Homebrew

私🤔 { Homebrewコマンドって何?
先生🥸 { パッケージマネージャーの一つだよ ソフトについて、
    「そのソフトにはどのソフトのバージョン何以上が必要?」
    「今インストールされているソフトは何?」と管理してくれる便利なものなんだ
    brewはサブコマンドと呼ばれる引数を最初に指定するよ
    (例)search, install, uninstall

# treeを含むフリーソフトを検索
% brew search tree


(4)よく使うコマンドたち
コマンド なんの略? 意味 備考
touch 本来既にあるファイルに触って(touchして)最終更新日を更新するor空ファイルを作る
mkdir MaKe DIRectory ディレクトリを作る -pオプションで深い階層も作れる
cp CoPy ファイルをコピーする cp foo /tmp は、fooファイルを/tmpディレクトリにコピーしているよ
-rオプションでディレクトリを丸ごとコピー可能
mv MoVe ファイルを移動する 「切り取り」と同じで元ファイルはなくなるので注意!
rm ReMove ファイルを削除する sudoと-r組み合わせてしまうとあらゆる全てが消えるので厳禁
cat conCATenate(連結する) ファイルの中身を表示する 本来は二つの引数を繋げて連結できるが、引数一つだと単に中身を表示させる意味になるよ


感想

  • 今まで意味をちゃんと理解せず、ターミナルの操作していたことに気づけた。
  • パートを進めるにつれて、黒画面の印象が前よりも怖くなりつつある☺️
  • 昨日は初めてミートアップに参加した。途中参加だったけれど、内容が濃くて楽しかった😍
  • 今までネットでは知ることが出来なかった、バリバリのエンジニアさんたちの想いが聞ける機会って貴重だった。言葉から伝わってくる楽しさ(OSSRubyの魅力など)が何より魅力的なミートアップだった。

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



感想

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

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

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

最近感じていること・考えていること

感情

ここ2〜3日、うまくいっていない感覚を感じています。 それは何故なのか、どうやったら改善できるか目的に立ち返って思考を整理しようと思いました。

現在の気持ち

  • 「焦り」…知識や技術が全然足りてない、もっと頑張らなくちゃ。前に進んでいる感覚を持てていない。

  • 「不安」…エンジニアとして必要とされる人材に近づいているのだろうか。怖い。全部中途半端な気持ちがしてくる。

  • 「眠い」…焦りや不安からか、睡眠の質が低く、眠い。


うまく行っていない時の環境・状況


自分は何のために勉強しているんだろうか?なぜエンジニアになりたいんだっけ?(目的に立ちかえろう)

日頃感じていること

  • 今の仕事について。現在の部署では3年目となり、パートナーである事業者さんや、職場の方との信頼関係が築けているように思う。相談をしてくれたり、こちらの思いも率直に伝えても大丈夫と安心感があると感じる。

  • 「相手の役に立てた」と感じた時が一番幸せである。特に「仕組み」で解決できた時。(=本質を解決できたと感じられた時)

  • 日頃から「どうやったらもっと良くなるだろうか」「人手や時間のリソースを減らせるだろうか(余計なことには時間を使わずに有意義な方に使えるだろうか)」「相手のために貢献できる?」と考えて行動するのが好きである。(「言われた通りにやりました」「(何も考えずに)前例踏襲だからこうする」と言われた時に一番モヤっと感じる。)

  • いろいろ考えた結果、とりあえず行動に移してみることが多い。(やってみて、うまくいかなかったら方向修正しよう。たとえ失敗したとしてもそこから学べることもあるかも。と考えている)

  • 公務員7年目となり、上記のように考えながら仕事をしていると「(オンライン上の)何か仕組みを作れたら解決できるのではないか」と感じる機会が増えた。そのたびにその知識がなくて悔しいと思った。マンパワーと予算だけだとできる範囲にも限界がある。もっと仕組みで解決する方法の選択肢を増やしたい。

  • プログラミングのように、経験値がどんどんたまっていって、仕組み作りの幅が広がるというよりも、どうしても異動のたびに外的要因(人・お金)で出来る可能性の上限が決まるのは、長い目で見るとやっぱり後悔しそうって思う。

  • なんだかんだ「仕事」が好き。将来子供が出来たとしても、ずっと仕事を続けたい。

  • あと「勉強」も好き。自分の知らなかったことに出会えることが楽しい。


ここ2〜3日に感じたこと

  • Rails Girls Japan」や「RubyKaigi」というこんなに面白いコミュニティがあったんだ。😭✨

  • それらのアーカイブや記事をみていると、温かさを感じる。雰囲気が良くていいな。

  • RailsRubyについて、今までカリキュラムを通して「何とか必死に理解してきた」気持ちだったのではないか?こんな風に背景を知って楽しめていたのだろうか。

  • RailsRubyについてもっと知りたい、知識を深めたい。

  • 「ちょろっと稼げる程度に知識をつける」とかではなく、「ちゃんと学びたい」。それを仕事にして、仕組みで解決していきたい。

  • そのような思いを叶えられるような企業で勤めたい。もし、そのレベルに自分が達せていないのであれば、もっとスキルを磨いてからでもそういうところで働きたい。


今までの自分のパターン

  • 仕事を覚えるとき、「なぜこうするの?」「誰のために何をやっている仕事なの?」と納得しないと次のことが頭に入らないため、覚えるのが遅い。

  • しかし、大体2〜3年経つと急に繋がってきて、仕事が楽しくなってくる。知らないうちに、周りの人が聞いてくれるようになる。

  • 楽しくなってくると、もっと頑張りたくなってきて、色々学ぶことができた。また仕組みを最終的には理解しているので改善方法を見つけることがさらに面白さに繋がっていた(成長できることは楽しい)


その感覚をエンジニアで味わうためにはどうしたらいいんだろうか?

  • フィヨルドブートキャンプに申し込みをしてみた。

  • カリキュラムをみて、面白そうだと思ったため。またテックキャンプではやっていないことも多くて、もっとRubyRailsのこと学べると思ったため。

  • 遠回りかもしれない。でも、諦めないで知識を深め続けよう。もっと背景について知ろう。

  • そしたら、「エンジニアになりたい」と思った悔しさを解決出来るような力が、身についている時が来るはず。

  • 今行きたい企業に就職できますように。そのためには毎日ちょっとずつでもいいからまた新しい知識を増やしていこう。頑張る。

今感じているもやもやを言葉にしました。
今できることを進めます。
読んでくれてありがとうございました。

20210313・14_アウトプット(オリジナルアプリ・バージョンアップの試み)

アプトプット画像

3/13行ったこと 2時間

  • 午前中はWantedlyの文章作成
    👉完成したと思い、貼り付けたら文字数オーバーになってしまった💦要点を考え直そうと思い中断。

  • Rubyのインプット 2時間

  • macのBigSurへのバージョンアップ


3/14行ったこと 9時間

  • Rubyのインプット 1時間30分

  • 小さなバージョンアップ 1時間

  • 大きなバージョンアップ 5時間30分

  • アウトプット 1時間



学んだこと

小さなバージョンアップについて

  • Ruby on Rails5速習実践ガイドを見ながら実践。

  • bundle updateを実行後、GitHubの履歴を確認。

  • 一つ一つgemとそのバージョンで検索。問題はなさそうだったので実行。(rubygems.orgのリンク集ありがたいなあ。GitHubに分かりやすく書いてあるのと、そうでないのがあった。あと「表示させたくないのであればリンクを見てね」や「バージョンを固定しているからキャピストラーノ実行できないよ」等ターミナルがコマンド実行時にうまくいかない場合は、教えてくれることも学びになった。)


大きなバージョンアップについて

  • ずっとチャレンジしてみたかったRubyRailsの大きなバージョンアップ。

  • 一つ一つ確認しながらチャレンジしてみた。mac上はできた様子だったが、オリジナルアプリのバージョンアップをしたところ、非同期通信がundefinedになってしまうエラーに💦最後までうまくいくといいな。明日に持ち越し。

mac上で行っていたコマンドを残しておく(RubyRailsのバージョンアップのために行ったコマンド)

(1)mac自体をBigSurにアップグレードしたため、Xcodeも、再インストール。
sudo rm -rf /Library/Developer/CommandLineTools

sudo xcode-select --install


(2)Home brewを再インストール。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Home brewは最新版のコードを持ってきた↓ brew.sh


(3)権限を利用ユーザーに変更する。
brew update  👀最新版か念のため確認

brew doctor  👀エラーがないか確認できる(現在、sqlに関するエラーとsbinに関するエラーが出ていたがこの先に設定するものだと思ったため進めた)

sudo chown -R `whoami`:admin /usr/local/bin  🔑パスワードを求められるので入力した


(4)rbenvでRubyコンパイルしアップグレードする。
brew upgrade ruby-build


(5)rbenvをどこからでも使えるようにし、パスを通す。
echo 'eval "$(rbenv init -)"' >> ~/.zshrc

source ~/.zshrc


(6)readlineの再インストール。

readlineとは、ターミナルのirb上で日本語入力を可能にする設定のこと。

brew reinstall readline

brew link readline --force 🗒どこからでも使用できるようにする

RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" 🗒ライブラリのパスがruby-buildから見えるようにする


(7)rbenvを使って、Rubyをインストール。
rbenv install --list  👀インストールできる内容を確認

rbenv install 3.0.0

rbenv global 3.0.0  

rbenv rehash   👀変更を読み込む

ruby -v 


(8)mysqlのインストール。
brew install mysql

エラーメッセージが出たため、エラーメッセージに書いてある下記コマンドを打ってみて、記事を参考に実行。

mysql_secure_installation 

weblabo.oscasierra.net


mysql -v  👀インストール出来た様子!

brew services start mysql 🗒Macの再起動後に自動的にSQLが再起動されるよう設定


echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc  🗒MySQLをどこからでもアクセスできるようにする

source ~/.zshrc  🗒設定を読み込むコマンド

which mysql  👀mysqlのコマンドが打てるか確認する
mysql.server status 🗒起動の確認
=>🎉SUCCESS! MySQL running (1919)


(9)もう一度、rbenvのエラー確認。
brew doctor  👀正常にインストール出来たか確認(さっきのエラー消えたか確認)

まだエラーだった↓

【エラー内容】過去のが残っているよ!と理解。
Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  mysql@5.6

過去の残っているものを消したら解消された!

brew uninstall mysql@5.6 

brew doctor
=>🎉our system is ready to brew.             


(10)Rubyのパッケージ管理ツールをインストール。
gem update --system

gem -v   👀バージョンの確認

gem list     👀インストールされているgemの確認


(11)Bundlerのインストール。

Gemたちを適切なバージョンで束ねてくれる役割を果たす。

gem install bundler


(12)Railsのインストール。
gem install rails
rbenv rehash   🗒再読み込み
rails -v      👀バージョン確認
=>🎉Rails 6.1.3


(13)Node.jsのアップグレード。
brew upgrade node
echo 'export PATH="/usr/local/opt/node@15/bin:$PATH"' >> ~/.zshrc 🗒パスの設定
source ~/.zshrc  👀パスを通す
node -v
=>🎉v15.11.0 
(14)yarnのアップグレード
 brew reinstall yarn
=>🎉1.22.10

最後に、Rails newできるか確認!

rails new scaffold_app -d mysql

Rails newは出来た!!🤗


感想

  • 土曜日の午前中、後悔はないもののこれからどこを目指して頑張ればいいのだろうか、無数にある企業を見ていてだんだん分からなくなり、放心状態ぎみだった。

  • そんな中で、どん底にいた気持ちを助けてくれた方がいた。本当に恵まれている。ありがとうございます。

  • しかもその教えてくださった内容が、言葉の端端から丁寧さが伝わるような素敵な企業様で「相手にニーズに寄り添い、仕組みで解決したい」と自分がエンジニアになった理由を体現できるような会社様だった。教えてくださって本当に嬉しかった。

  • めぐりあわせてくださった縁を大事に全力を尽くそう。(その方のおかげで一気に元気になった。あとは自分次第だ。頑張るぞ。)

  • 日曜日は、ずっとチャレンジしたかったけれど出来ていなかったバージョンアップをやってみた。まだ途中だけれども、うまくいくといいな。

  • 最近、仕事が繁忙期になってきた。もっと時間が欲しい。(コードを書きたいし、じっくり考える時間も欲しい。)

  • 生産性ってどうやったら上がるかな。今は気づいたらずっとコードと睨めっこしていて一日終わってたみたいなパターンが多いな。時間を忘れてしまうほど夢中になることも大事だと思うし、必要だと感じていてやらねばと考えていることにも取り組むことも必要だと思うし、時間の使い方も考えて乗り越えていきたい。

20210312_アウトプット(オリジナルアプリ)

アプトプット画像

3/12行ったこと 3時間

  • オリジナルアプリ(ユーザー編集機能・セキュリティアラートの改善)
    👉3時間



学んだこと

ユーザー編集機能について

  • deviseでユーザー編集をしようとすると、①新しいパスワード、②確認のパスワード、③今までのパスワードの3回入力する必要があることを知った。

  • また、編集画面には「ユーザー削除機能」がデフォルトであることを知った。

  • 一番は「ニックネーム」と「email」を編集できるようにしたかったので、下記記事を参考にしながら編集機能を実装。

qiita.com


なぜattr_accessor :current_passwordをUserモデルに定義しないとエラーが発生するのか
  • 上記、一つ目の記事通りに実装を進めていたところunknown attribute 'current_password'というエラーが発生した。

qiita.com

  • ↑こちらの記事を参考に、attr_accessor :current_passwordを実装したところ、解消。

  • なんで解消したんだろう?と疑問に感じ、いろいろ調べた結果、以下の理由なのではないかと考えている。(間違えていたら教えてください💦)

解消した理由
  • attr_accessorを用いることによってインスタンスを生成した時に(今回で言えば、編集後の情報)form_withの引数として利用できるようになる。

  • binding.pryparamsを見てみると、paramsにおいて、パスワードは運ばれていない。(そういう風にupdate_resourceメソッドにおいて定義したため)

[1] pry(#<Users::RegistrationsController>)> params
=> <ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"7AKiLMgQM+1Rn7VpOpk1ECK79tN2FXLXASj806SmYo7Mpe5xYlWqCxNbkT+MWO9QnBFpzHNiA==", "user"=>{"nickname"=>"えり", "email"=>"kano@gmail.com", "birthdate(1i)"=>"1993", "birthdate(2i)"=>"7", "birthdate(3i)"=>"17"}, "commit"=>"更新する", "controller"=>"users/registrations", "action"=>"update"} permitted: false>
  • しかし、データを保存(更新)するには、DB上のカラム名と内容を一致させる必要がある。

  • その時に、attr_accessor :current_passwordを定義しておくことによって、データベースには保存しない仮の属性を作り出すことができ、DBへ保存(更新)できるようになる。


初めてのセキュリティアラート

セキュリティアラート

  • GitHub上に、アラートが表示された(°_°)

  • デプロイしていることもあり、慎重に進めようとこのエラーは何なのか調べた。

  • 下記の記事より、npmに管理されているellipticというプレーンなJavaScript実装での高速楕円曲線暗号を司るバージョンが古いんだと理解。

www.npmjs.com

  • この記事を見ながらyarn auditを実行し、Githubと同じエラーが出るか確認。yarn upgradeを行ったところ解消した。(ホッ)

kamoqq.info

  • マスターブランチへ反映したあと、本番環境でも問題なさそうだったのでよかった。


感想

  • アラートについて、解消したくて、ここ2日くらい調べていた。無事に解決出来たようなので一安心。

  • 久しぶりのオリジナルアプリ。楽しかったな。

  • ずっとやりたいけれど出来ていないこととしてmacRubyRailsのバージョンアップがある。

  • ちょっと怖い気持ちもあるけれど、RailsRubyに詳しい憧れている方たちは皆バージョンアップに対応していっているので私もチャレンジしたい。バックアップとって準備を進めよう。


20210311_アウトプット(Python・Laravel)

アプトプット画像

今日行ったこと 3時間55分

  • Anacondaのインストール、JupyterLabを使い始めた。

  • スッキリわかるPython入門(第1章)
    👉1時間30分

  • Laravelについて(local:8000で表示させるまで)
    👉1時間45分

  • アウトプット
    👉40分


学んだこと

Python

  • print(表示したいもの)で表す(カッコで囲うのが新鮮)

  • print('ケロ' * 3 )で出力は「ケロケロケロ」となる(反復になる)

  • シングルクォーテーションやダブルクォーテーションを現したい時はバックスラッシュを使う

  • **べき乗

  • 👜アンパック代入とは、複数の変数を一行で定義できることname, age = 'ハム', 24

  • 演算は文字列同士か数値同士で!(ごちゃ混ぜはだめ)

  • オペランドとは、演算子によって計算されるものを言う。

便利なコード 内容
import keyword
print(keyword.kwlist)
予約語を確認できる
変数名 = input(文字列) ユーザーからの入力を促す文字列を入れて変数に代入できる
print(type(変数名)) 変数名のデータ型を調べることができる
int(変数名) 数値に変換
float(変数名) 浮動小数点数に変換
str(変数名) 文字列に変換
bool(変数名) 真か偽のブーリアン型に変換
print('私の名前は{}で年齢は{}です'.format(name,age)) フォーマット関数は文字列のなかに変数を埋め込むことができる
print(f'私の名前は{name}で年齢は{age}です') さらにf-stringを使うとすっきりできる(Pyrhon3.6〜)こっちはピリオドいらない
w, h = float(input(’体重を入力してください’)),int(input(’身長を入力してください’)) / 100
print(f'あなたの体重は{ w / h **}です')


Laravelについて

  • PHPフレームワーク

  • Railsと同じようにルートとMVCの構成となっている(MVC好き😊笑)

  • Composer(コンポーザー)とは、phpのライブラリの仕様を管理してくれる便利ツール。(brew install composerのコマンドで導入できた)

  • composer global require laravel/installerでインストール!

(このサイトをみながら作成)

kojikalog.com

  • rails sみたいな感じでphp artisan serveと立ち上げる。(アーティザンは職人って意味らしい。コンポーザーの時も指揮者の画像が印象的だった。phpはアートな感じなのか?Railsとまた雰囲気が違くて面白い。)

*localhost:3000ではなく、localhost:8000なのが新鮮!!😍

laravel

↑表示されて嬉しかった!できた☺️

(このサイトをみながら作成)

qiita.com

  • 手こずったのがGitHubInitial commitしたかったが、this directory appears to be a git repositoryと出てきてaddできなかった。下記の記事をみて、git initしたらできた。

  • Gitのinitコマンドは、一言で言うと「リポジトリを新規に作成」するときに使用するコマンド。

qiita.com


感想

  • 基本から着実に身につけていくぞ☺️すっきりシリーズ最後に問題があるから解いてみると理解が足りてなかったことに気づけて自分に合っている。

  • 一通りこの本でPythonの基礎を理解したら、アルゴリズムを解いていこうと思っている🔥

  • 初めてララベルできて嬉しかった。(エラー出ながらも、ララベル画面表示させるところまではいけた)ちょっとずつ作ってみよう。同じMVCで違うフレームワークを試してみるのワクワクする。