Docker雰囲気で使ってるのでちゃんと調べる
Docker、実務で雰囲気で使ってるのでこの際1から書く。 詳しくはドキュメントに多分書いてあると思うが。
Dockerfile のベスト・プラクティス — Docker-docs-ja 19.03 ドキュメント
あとこっちもスタートする時に書いてある。 でも5系だったりRubyのバージョンが古かったりするので、そこは各自なおそう。
クィックスタート: Compose と Rails — Docker-docs-ja 19.03 ドキュメント
・alpineって何 → 軽くなるやつ よくわからんからとりあえず指定せずにイメージ作って、重くなりすぎたら検討しよう。
alpineは数あるLinuxのディストリビューションのひとつで、 余計なライブラリがデフォルトで入っていない分、非常に軽量なイメージです。
軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 - inductor's blog
・apt-getて何 → package管理ツール これがないとパッケージがインストールできない
apt(Advanced Package Tool)はパッケージ管理ツール
できたのは下記。(DockerfileだけじゃなくてRailsの設定だけ詰め込んだやつ)
もう一生mysqlのエラーとかでハマるのはゴメンですわ
Reactメモ
FC
React.FC は 関数コンポーネント(Function Component) の略
<>
<>は <React.Fragment> を短縮した書き方 要素を返却しないといけないが、
npmとかwebpackとか
既知もあるがメモ
npm
npmとはNode Package Managerの略で、JavaScriptライブラリのパッケージマネージャー
package.json
npm を使う Node.js のプロジェクトで、プロジェクトの構成を管理するファイル
npm init
package.json に最低限必要なフィールドは "name" と "version" の2要素
webpack
webpack は複数の JavaScript のファイルなどをまとめて1つにできるツール プラグインなどを使って、様々な変換処理を挟むこともできます。モダンなフロントエンド開発において webpack などのバンドルツールを使うことはごく一般的になっています
node_module
node_modules は、実際のライブラリのファイル群です。 実行やビルドの際は、ここのディレクトリのファイルを参照して実行されます。 このディレクトリがない場合でも npm install を実行すると、package.json の情報を元に再作成されます。
package.json
npm installを実行した際にインストールされるパッケージのバージョンをpackage-lock.jsonに記載されたバージョンで固定することができ、全ての開発者で同じパッケージの環境を再現することができます。一方、package.jsonだけしかない場合では、npm installしたときに、それぞれの開発者で別バージョンのパッケージをインストールしてしまう可能性があります。
依存関係をいい感じにしてくれる。
Ruby の Bundler では Gemfile.lock,Node.js の npm では package-lock.json,yarn では yarn.lock があります
babel
babelとはJavaScriptのトランスパイラ。ある言語を別の言語に変換することをトランスパイルと言う
RSpecの ステータスコードについて
expect(response.status).to eq(:ok)
と expect(response).to have_http_status(:ok)
どっちがいいの問題と
(:ok) と (200)
どっちがいいの問題について書く
expect(response.status).to eq(:ok)と
expect(response).to have_http_status(:ok) どっちがいいのか
expect(response).to have_http_status(:ok)
を使おう。理由は下記で、have_http_status(:ok)
はステータスコードの 数値とシンボル
も対応してくれるが、
expect(response.status).to eq の場合
Failure/Error: expect(response.status).to eq(:ok) expected: :ok got: 200 (compared using ==)
expect(response.status).to eq(200) → true
expect(response).to have_http_status の場合
expect(response).to have_http_status(:ok) → true
expect(response).to have_http_status(200) → true
つまり、用意されてるmatcherを使えば、数値もシンボルも対応してくれる偉い子。
(:ok) と (200) どっちがいいのか
結論、どっちでもいいが、シンボルがいいらしい。なぜなら、数値は2XX系や3XX系で間違えやすいから。 シンボルの方がメモリ効率がいいのは全く関係ない?と思うが、またsymbolにしよう。
個人的には、毎回 422 の unprocessable_entity
なんてスペル覚えられへんわ状態だったので数値にしたかったが、シンボルで統一しようとなった。
余談
コンソールで Rack::Utils::SYMBOL_TO_STATUS_CODE
を叩くと、 ステータスコードが出るので良いよ。
まとめ
良い → expect(response).to have_http_status(:ok)
あまり良くない → expect(response.status).to eq(200)
React わからないことメモ
まだわからないことだらけ
HOC
render props
Recompose
Hooks (フック)
→ React hooksを基礎から理解する (useState編) - Qiita
useState
useEffect
→ useEffect完全ガイド — Overreacted
第 1 引数として、引数を持たない関数を受け取る。この関数 の中身が任意のタイミングで実行される
第 2 引数だけど、ここには変数の配列を渡せる
2021年やること
2020年の4月にエンジニアになり、約9ヶ月が経過した。
1月の今日まで、5回しか出社せずリモートで、大変すぎた。
技術的には思ったより成長できなかった(自分の努力不足)し、疎外感が半端なかった(業務委託感)
2021年は
技術的
・アウトプット頑張る(ブログもっと更新)
・フロント、インフラ頑張る
・社内で価値ある仕事をする
プライベート的
・恥ずかしくない体を作る
・ブログ等更新頑張る、収益化も
・本を読む
を頑張りたい。
Javascript-primer memo 暗黙的型変換
暗黙的型変換
→ ある処理において、その処理過程で行われる明示的ではない型変換のこと
== と === の違い。
// `==`では、異なるデータ型は暗黙的な型変換をしてから比較される
// 暗黙的な型変換によって 1 == 1 のように変換されてから比較される
console.log(1 == "1"); // => true
// 暗黙的な型変換が行われ、数値の加算として計算される
1 + true; // => 2
// 次のように暗黙的に変換されてから計算される
1 + 1; // => 2
厳密等価演算子 === を使えばOk。正直、等価演算子の比較結果を全部覚えるのは無理
真偽値
JavaScriptでは、どの値がtrue
でどの値がfalse
になるかは、次のルールによって決まります。
- falsyな値は
false
になる - falsyでない値は
true
になる
false
undefined
null
0
0n
NaN
""
(空文字列)
Boolean("string"); // => true
Boolean(1); // => true
Boolean({}); // => true
Boolean(0); // => false
Boolean(""); // => false
Boolean(null); // => false
まとめ
この章では暗黙的な型変換と明示的な型変換について学びました。