夢のかけら

Goエンジニアの技術ブログ

【AWS】VPCのレンジは自由に決めてはいけない

AWS

結論 VPCのIPアドレスレンジは以下の範囲で指定すべきだ。 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 192.168.0.0 – 192.168.255.255 理由 プライベートIPアドレスのレンジは決まっているから。 つまり↓のレンジ=プライベートIPアドレス。 10…

【Docker】docker-composeのvolumesではホストのファイルがコンテナのファイルを上書きする

DockerfileのRUNとCMD、docker-compose.yaml内のマウントタイミング - Qiitaより引用 docker-compose.yamlでマウントしたファイルに対して、Dockerfileで操作したいときは RUNではなくCMDを使う。 順番は、RUN→volumes→CMDだ。 この順番を忘れて定期的にハマ…

【Docker】Go 1.17 + Air で環境構築

Dockerfileを書く FROM golang:1.17-alpine RUN mkdir /go/src/app WORKDIR /go/src/app RUN go install github.com/cosmtrek/air@v1.27.3 COPY . . EXPOSE 8080 CMD "sh" "-c" "go mod tidy && air -c .air.toml" キャッシュを使ってビルドを高速化するため…

【Goland】外部パッケージをimportする時にエディタ上でエラーになる時の対処法

問題 go.modを作る。 $ go mod init main.goにimport "github/hoge/huga"を書く。 $ go mod tidy という手順でパッケージをインストールした。しかしmain.goではimportのところでエディターがエラーを吐いている。 エディターがパッケージを見つけられていな…

【Golang】go get とgo installの違い

go.mod go getをすると中身が変わる。自分で触るファイルではない。 go get このコマンドはgo.modを書き換えてソースコードのダウンロード、ビルド、インストールを行う。 環境変数GOMODCACHEで指定されているディレクトリにダウンロードされる。 コマンドの…

docker-composeでコンテナへの通信が届かない時の対処法

問題 docker-compose.ymlにポート番号を書いているのに、$ docker-compose run --rm container_name shでコンテナの中に入ってサーバを立てても http://localhost:3000/へアクセスできない。 ports: - "3000:3000" 原因 docker-compose runは--service-ports…

WebStormで保存時にPrettierが効かない時の対処法

原因 nodeのバージョンがおかしいから。 自分は2つのプロジェクトを担当している。1つはnodeのバージョンが古いアプリケーション。もう1つはnode16をDockerに入れている新しいアプリケーションだ。 コーディング中にESLintを使いたいのでnode_modulesはコン…

npm installとnpm ciの違い

npm install npmi iはpackage.jsonを見てライブラリをインストールする。pacakge.jsonのバージョン指定には幅があるため、npm iする時期によってはpackage.json.lockを書き換えてしまう。 つまり完全に同じ開発環境を再現できない(可能性がある)。これはnpm …

【Docker】Next.js + TypeScriptの環境構築

試行錯誤して0からDockerfileを書いた記録です。 まず適当にDockerfileを書く。 FROM node:16-alpine WORKDIR /app ビルドしてコンテナに入る。 $ docker build . $ docker run --rm -it -p 3000:3000 a5e52242bb4f sh コンテナの中でサーバーを立てる /app …

Dockerの備忘録

コンテナの中に入るときは -v オプションでhostのファイルシステムと同期する $ docker run -it --rm -v (ホストの絶対パス):(コンテナの絶対パス) -p 3000:3000 <イメージ名> shでコンテナの中に入る Dockerfileは1つのプロジェクトに1つだとは限らない。い…

Goに入門したので備忘録を書く

パッケージ 同じパッケージに属するなら、そのパッケージ内で変数や関数を参照できる。 つまりパッケージとは1つのファイルを複数に分割する仕組み。 文字列 Goの文字列はかなり特殊なので挙動に注意する。 イミュータブル。 値型なのに関数の引数に渡しても…

【Golang】構造体はなぜポインタ型に値を代入できるのか

構造体がわからない ↓のような超絶簡単なコードだが、どうもしっくりこなかった。 type Person struct { Name string Age int } func main() { lamp := new(Person) fmt.Println(lamp) // => &{ 0} (ポインタ型) lamp.Name = "lamp" // どうしてポインタに代…

【Moment.js】addメソッドで警告が出る時の対処法

引数の順番が逆 const m = moment('2021-09-21 9:00') m.add('hours', 10) // 昔はこの順番だった。今はこれだと警告が出る。 m.add(10, 'hours') // 今の書き方。

エンジニアに転職して5ヶ月が経ちました

はじめに フィヨルドブートキャンプを卒業してエンジニアになって5ヶ月が経ちました。 仕事についていけるの?仕事は楽しい?エンジニアになってよかったこと・悪かったことなどを書いていこうと思います。 仕事はついていけるのか? ついていける。が、とて…

VSCodeでGoを書いてgit pushするとインデントがおかしくなる時の対処法

次のお仕事でGolangを使うのでGoを勉強中です。しかし困ったことがありました。 起こったこと VSCodeでGoを書く 保存してgit pushする Git Hub上でコードをみる 何じゃこのアホみたいなインデント!! 原因 VSCodeの拡張機能、Goが保存時にインデントをスペ…

【React】Hooksを使って関数コンポーネントに状態を持たせる

昔の話 昔は関数コンポーネントとクラスコンポーネントは明確に違った。 関数コンポーネント 状態を持たない ライフサイクルメソッド(componentDidMountなど)使えない クラスコンポーネント 状態を持つ ライフサイクルメソッドが使える このような違いあっ…

【React】高階コンポーネントを使ってみる

高階コンポーネントって何? 高階コンポーネントは高階関数と似ている。高階関数とは関数を戻り値とする関数のこと。 高階コンポーネントは引数でコンポーネントを受け取り、戻り値として新しいコンポーネントを返す関数のこと。 どんな時に使うの? クラス…

【React】Pessimistic UpdateとOptimistic Updateの違い

Pessimistic Updateとは? Pessimistic Update(悲観的な更新)とは非同期通信が成功するか分からないので、成功or失敗するまで待ってから手元のDOMを更新する方法である。非同期通信の結果を待つ必要があるので非常に遅い。 // post = {id: 1, name: 'hoge'}…

【React】コンポーネントを再利用できるようにするリファクタリング

例えばこのような2つのコンポーネントがある。これらのコンポーネントの問題点は何だろうか? 親コンポーネント state = { users: [{ id: 1, name: 'rin' }, { id: 2, name: 'sin' }] } render () { <div className="container"> <ListGroup items={this.state.users} /> <div> } 子コンポーネント const ListGroup = ({items}) => {</div></listgroup></div>…

【React】styled-componentsを使ってJavaScriptでCSSを書く

純粋なcssはエラーを吐かなかったり、クラス名を重複しないようにしたり、cssのためだけにクラス名をつけたり、と言ったデメリットが存在する。それを解決するstyled-componentsを使っていく。 インストール $ npm install styled-components エディタにstyl…

【JavaScript】アロー関数の引数で分割代入をする

Reactでよく使われるアロー関数の引数で分割代入を行うパターンを解説する。 まずは分割代入の復習から 分割代入はオブジェクトのキーと値をオブジェクトの外に出して変数として使えるようにすること。 英語名はObject destructuringで、その名の通りオブジ…

【React】子コンポーネントから親コンポーネントへデータを渡す

子が好きなタイミングで親のメソッド実行する Vueと同じように子コンポーネントの好きなタイミングで親コンポーネントに作成したカスタムイベントを発火させることができる。その時の引数としてデータを受け取る、という流れである。 注意点として、親コンポ…

【Git 】git switchでリモートブランチをローカルに持ってくる

Git

リモートブランチと同じ名前のブランチをローカルに持ってくる 新しいコマンドのgit switchが便利! $ git switch remote_branch_name もしうまくいかない場合は$ git fetchを実行してローカルのリモート追跡ブランチを更新してください。 リモートブランチ…

【Rails】formタグ内のbuttonを押すと意図せずにPostリクエストが送信されてしまう時の対処法

Railsで作るフォームの中で、Reactを使う必要があった。 Reactのコンポーネントで作ったボタン(<button>)を押すと、なぜかpostリクエストが飛んでしまう。 原因 <form>内の<button>は<button type="submit">がデフォルトになっているようだ。 対処法 type="button"を追加する。 <button type="button">Increment</button></button></button></form></button>

【React】propsとstateの違い

props 親コンポーネントからもらうデータ 読み取り専用で変更することはできない state コンポーネントが持つデータ 変更が可能 コンポーネント内のプライベート変数のようなもの 他のコンポーネントはアクセスすることができない 親からもらうデータを加工…

【Rails】静的ファイルのダウンロード機能を実装する

動的ファイルならコントローラーを経由する必要がある。しかし静的ファイルならもっと簡単にできる。 public/にfoo.txtを作成 download: "ダウンロードする時のファイル名"という文法でviewに書く <%= link_to 'foo.txtをダウンロード', '/foo.txt', downloa…

【DB設計】自己参照する多対多の関係を分かりやすく説明する

多対多の復習 自己参照する多対多の関係を理解するには、多対多の関係を理解する必要があります。 大学の授業と生徒の関係を例にとって考えてみます。 まずは学生目線で考えましょう。学生一人が取れる授業の数はいくつでしょうか? 1つでも2つでも3つでも、…

RubyMineの初期設定

ピープ音を消す macのアラート音を消す。つまり、通知音量を0にする。slackなどの他のアプリの音は聞こえるのでこれで問題ない。 右の目立つ縦線を消す シフトを2回押して「wrap guide」と検索する。 Hard wrap guideのForegroundのチェックを外す。 ちなみ…

rails db:resetとrails db:migrate:resetの違い

どちらもDBをdropしてcreateするタスクだが、両者はかなり仕様が異なるので注意したい。 rails db:reset schema.rbからデータベースを作成する。 rails db:seedが最後に実行される。 つまり、マイグレーションファイルの中身は一切読み込まずにデータベース…

フィヨルドブートキャンプを卒業しました!

これはフィヨルドブートキャンプ Part 2 Advent Calendar 2020 - Adventarの24日目の記事です。 昨日はobregoniaさんのプログラミング学習を始めて一ヶ月が経ち | obregonia1のブログでした。 Part1もあります。 はじめに 2020年11月30日に卒業フィヨルドブ…