ブシトラの日記

エンジニア1年生の雑多記事

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の設定だけ詰め込んだやつ)

github.com

もう一生mysqlのエラーとかでハマるのはゴメンですわ

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 などのバンドルツールを使うことはごく一般的になっています

qiita.com

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の ステータスコードについて

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を使えば、数値もシンボルも対応してくれる偉い子。

relishapp.com

(:ok) と (200) どっちがいいのか

結論、どっちでもいいが、シンボルがいいらしい。なぜなら、数値は2XX系や3XX系で間違えやすいから。 シンボルの方がメモリ効率がいいのは全く関係ない?と思うが、またsymbolにしよう。

個人的には、毎回 422 の unprocessable_entity なんてスペル覚えられへんわ状態だったので数値にしたかったが、シンボルで統一しようとなった。

シンボルとは - Qiita

余談

コンソールで 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

→ ステートフックの利用法 – React

 

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

 

まとめ

この章では暗黙的な型変換と明示的な型変換について学びました。

  • 暗黙的な型変換は意図しない結果となりやすいため避ける
  • 比較には等価演算子==)ではなく、厳密等価演算子===)を利用する
  • 演算子による暗黙的な型変換より、明示的な型変換をする関数を利用する
  • 真偽値を得るには、明示的な型変換以外の方法もある