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" />
と書く)
私🤔 { div
とarticle
とsection
の違いって何?
先生🥸 { 要素内のコンテンツに意味がないのであればdiv
を、意味があるコンテンツかつそのカタマリだけで独立する内容の場合にはarticle
を、そうでなければsection要素
を使うよ
私😖 { 今までdiv
タグを乱発していた💦アウトラインを考えて作るんだね。
感想
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(連結する) | ファイルの中身を表示する | 本来は二つの引数を繋げて連結できるが、引数一つだと単に中身を表示させる意味になるよ |
感想
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
感想
昨日、思考を整理したおかげでまた楽しみながら学べたのが嬉しかった。
初めて、ミートアップに参加した。話している内容が深くて(背景や向き合い方など)楽しかった。
黒画面について、初めの頃は、そもそもの単語の意味(引数や、"コマンドで実行する"の感覚とか)がわからずちんぷんかんぷんだったけれど、再度意味を理解できてワクワクした。
最近感じていること・考えていること
ここ2〜3日、うまくいっていない感覚を感じています。 それは何故なのか、どうやったら改善できるか目的に立ち返って思考を整理しようと思いました。
現在の気持ち
「焦り」…知識や技術が全然足りてない、もっと頑張らなくちゃ。前に進んでいる感覚を持てていない。
「不安」…エンジニアとして必要とされる人材に近づいているのだろうか。怖い。全部中途半端な気持ちがしてくる。
「眠い」…焦りや不安からか、睡眠の質が低く、眠い。
うまく行っていない時の環境・状況
マルチタスク気味
普段の仕事についても余裕がない(繁忙期)
自分は何のために勉強しているんだろうか?なぜエンジニアになりたいんだっけ?(目的に立ちかえろう)
日頃感じていること
今の仕事について。現在の部署では3年目となり、パートナーである事業者さんや、職場の方との信頼関係が築けているように思う。相談をしてくれたり、こちらの思いも率直に伝えても大丈夫と安心感があると感じる。
「相手の役に立てた」と感じた時が一番幸せである。特に「仕組み」で解決できた時。(=本質を解決できたと感じられた時)
日頃から「どうやったらもっと良くなるだろうか」「人手や時間のリソースを減らせるだろうか(余計なことには時間を使わずに有意義な方に使えるだろうか)」「相手のために貢献できる?」と考えて行動するのが好きである。(「言われた通りにやりました」「(何も考えずに)前例踏襲だからこうする」と言われた時に一番モヤっと感じる。)
いろいろ考えた結果、とりあえず行動に移してみることが多い。(やってみて、うまくいかなかったら方向修正しよう。たとえ失敗したとしてもそこから学べることもあるかも。と考えている)
公務員7年目となり、上記のように考えながら仕事をしていると「(オンライン上の)何か仕組みを作れたら解決できるのではないか」と感じる機会が増えた。そのたびにその知識がなくて悔しいと思った。マンパワーと予算だけだとできる範囲にも限界がある。もっと仕組みで解決する方法の選択肢を増やしたい。
プログラミングのように、経験値がどんどんたまっていって、仕組み作りの幅が広がるというよりも、どうしても異動のたびに外的要因(人・お金)で出来る可能性の上限が決まるのは、長い目で見るとやっぱり後悔しそうって思う。
なんだかんだ「仕事」が好き。将来子供が出来たとしても、ずっと仕事を続けたい。
あと「勉強」も好き。自分の知らなかったことに出会えることが楽しい。
ここ2〜3日に感じたこと
「Rails Girls Japan」や「RubyKaigi」というこんなに面白いコミュニティがあったんだ。😭✨
それらのアーカイブや記事をみていると、温かさを感じる。雰囲気が良くていいな。
RailsやRubyについて、今までカリキュラムを通して「何とか必死に理解してきた」気持ちだったのではないか?こんな風に背景を知って楽しめていたのだろうか。
「ちょろっと稼げる程度に知識をつける」とかではなく、「ちゃんと学びたい」。それを仕事にして、仕組みで解決していきたい。
そのような思いを叶えられるような企業で勤めたい。もし、そのレベルに自分が達せていないのであれば、もっとスキルを磨いてからでもそういうところで働きたい。
今までの自分のパターン
仕事を覚えるとき、「なぜこうするの?」「誰のために何をやっている仕事なの?」と納得しないと次のことが頭に入らないため、覚えるのが遅い。
しかし、大体2〜3年経つと急に繋がってきて、仕事が楽しくなってくる。知らないうちに、周りの人が聞いてくれるようになる。
楽しくなってくると、もっと頑張りたくなってきて、色々学ぶことができた。また仕組みを最終的には理解しているので改善方法を見つけることがさらに面白さに繋がっていた(成長できることは楽しい)
その感覚をエンジニアで味わうためにはどうしたらいいんだろうか?
フィヨルドブートキャンプに申し込みをしてみた。
カリキュラムをみて、面白そうだと思ったため。またテックキャンプではやっていないことも多くて、もっとRubyやRailsのこと学べると思ったため。
遠回りかもしれない。でも、諦めないで知識を深め続けよう。もっと背景について知ろう。
そしたら、「エンジニアになりたい」と思った悔しさを解決出来るような力が、身についている時が来るはず。
今行きたい企業に就職できますように。そのためには毎日ちょっとずつでもいいからまた新しい知識を増やしていこう。頑張る。
今感じているもやもやを言葉にしました。
今できることを進めます。
読んでくれてありがとうございました。
20210313・14_アウトプット(オリジナルアプリ・バージョンアップの試み)
3/13行ったこと 2時間
3/14行ったこと 9時間
Rubyのインプット 1時間30分
小さなバージョンアップ 1時間
大きなバージョンアップ 5時間30分
アウトプット 1時間
学んだこと
小さなバージョンアップについて
Ruby on Rails5速習実践ガイドを見ながら実践。
bundle update
を実行後、GitHub
の履歴を確認。一つ一つ
gem
とそのバージョンで検索。問題はなさそうだったので実行。(rubygems.org
のリンク集ありがたいなあ。GitHubに分かりやすく書いてあるのと、そうでないのがあった。あと「表示させたくないのであればリンクを見てね」や「バージョンを固定しているからキャピストラーノ実行できないよ」等ターミナルがコマンド実行時にうまくいかない場合は、教えてくれることも学びになった。)
大きなバージョンアップについて
一つ一つ確認しながらチャレンジしてみた。mac上はできた様子だったが、オリジナルアプリのバージョンアップをしたところ、非同期通信が
undefined
になってしまうエラーに💦最後までうまくいくといいな。明日に持ち越し。
mac上で行っていたコマンドを残しておく(RubyとRailsのバージョンアップのために行ったコマンド)
(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
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」を編集できるようにしたかったので、下記記事を参考にしながら編集機能を実装。
なぜattr_accessor :current_password
をUserモデルに定義しないとエラーが発生するのか
- 上記、一つ目の記事通りに実装を進めていたところ
unknown attribute 'current_password'
というエラーが発生した。
↑こちらの記事を参考に、
attr_accessor :current_password
を実装したところ、解消。なんで解消したんだろう?と疑問に感じ、いろいろ調べた結果、以下の理由なのではないかと考えている。(間違えていたら教えてください💦)
解消した理由
attr_accessor
を用いることによってインスタンスを生成した時に(今回で言えば、編集後の情報)form_with
の引数として利用できるようになる。binding.pry
でparams
を見てみると、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実装での高速楕円曲線暗号を司るバージョンが古いんだと理解。
- この記事を見ながら
yarn audit
を実行し、Githubと同じエラーが出るか確認。yarn upgrade
を行ったところ解消した。(ホッ)
- マスターブランチへ反映したあと、本番環境でも問題なさそうだったのでよかった。
感想
アラートについて、解消したくて、ここ2日くらい調べていた。無事に解決出来たようなので一安心。
久しぶりのオリジナルアプリ。楽しかったな。
ちょっと怖い気持ちもあるけれど、RailsやRubyに詳しい憧れている方たちは皆バージョンアップに対応していっているので私もチャレンジしたい。バックアップとって準備を進めよう。
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について
Composer
(コンポーザー)とは、phpのライブラリの仕様を管理してくれる便利ツール。(brew install composer
のコマンドで導入できた)composer global require laravel/installer
でインストール!
(このサイトをみながら作成)
rails s
みたいな感じでphp artisan serve
と立ち上げる。(アーティザンは職人って意味らしい。コンポーザーの時も指揮者の画像が印象的だった。phpはアートな感じなのか?Railsとまた雰囲気が違くて面白い。)
*localhost:3000
ではなく、localhost:8000
なのが新鮮!!😍
↑表示されて嬉しかった!できた☺️
(このサイトをみながら作成)
手こずったのがGitHubに
Initial commit
したかったが、this directory appears to be a git repository
と出てきてaddできなかった。下記の記事をみて、git init
したらできた。Gitのinitコマンドは、一言で言うと「リポジトリを新規に作成」するときに使用するコマンド。
感想
基本から着実に身につけていくぞ☺️すっきりシリーズ最後に問題があるから解いてみると理解が足りてなかったことに気づけて自分に合っている。
一通りこの本で
Python
の基礎を理解したら、アルゴリズムを解いていこうと思っている🔥初めてララベルできて嬉しかった。(エラー出ながらも、ララベル画面表示させるところまではいけた)ちょっとずつ作ってみよう。同じMVCで違うフレームワークを試してみるのワクワクする。