2020-01-01から1年間の記事一覧

変更に強いE2Eテストにするためにカスタムデータ属性を使う

E2E

概要 壊れやすいE2Eテストとは E2Eテストのテストシナリオを書くときに、下記のようなセレクタの使い方をすると壊れやすくなる。 CSSの変更やJSのイベントに紐づくセレクタ(id,classなど) 例:同じclass属性を持つ要素が増えたときにテストが通らなくなる。 …

Gitで削除された文字列のコミットとプルリクエストを調べる

Git

概要 Gitで削除された箇所のコミットとGitHub上のPRを調べる。 環境 $git version git version 2.26.0 結論 文字列からコミットを検索するには $git log -p -S '<検索したい文字列>' <対象のコード> #例 git log -p -S 'hoge' fuga.js GitHub上でコミットハ…

sedでcommand i expects \ followed by textが出た

環境 $sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G95 概要 sedを実行したら下記エラーが出た $cat test.txt 1 2 3 #2行目にhogeを挿入 $cat test.txt | sed -e 2ihoge command i expects \ followed by text 原因 Mac(BSD)とL…

Reactで孫のイベントで親のステートを変更する(コンポジションとコンテクスト)

目的 環境 実装例 コンポジションとは 実装例 コンテクストとは 実装例 まとめ 目的 孫のイベントで親のステートを変更したい。 環境 Node.js v14.15.0 NPM v6.14.8 React v17.0.1 create-react-app v4.0.1 実装例 実装パターンを二通り試した。 コンポジシ…

ローカル開発環境でプロキシサーバを構築しHTTP headerを利用する

前提 環境 結論 詳細 app 動作確認 前提 Webアプリケーションサーバ+プロキシサーバ構成のアプリケーションを運用する Webアプリケーションサーバにアクセスする際、プロキシサーバがX-Forwarded-Hostを付与する X-Forwarded-Host - HTTP | MDN これらのロ…

Next.jsでhealth checkを実装する

概要 環境 結論 方法1 方法2 まとめ 概要 Next.jsでhealth checkを実装する。 k8s上で動かすという要件を想定する。 下記exampleを利用する。 https://github.com/vercel/next.js/tree/canary/examples/with-docker 環境 Next.js v10.0.1 Node.js v14.15.0 N…

Node.jsをDockerで動かすときのPID 1問題について動作確認する

概要 結論 確認 対応 tiniを利用する initオプションを利用する 参考 概要 Node.jsとDockerのPID1問題について動作確認する。 結論 Dockerでnodeプロセスを動かす場合 直接動かすときはtiniやdocker run --initオプションを使う npmを使って起動しない 確認 …

CodeDeployのhook時に実行環境を判別する

自分用メモ 概要 CodeDeployのhook時に、現在prdなのかstgなのか判別したい。 ユースケースとしてはアクセスするS3バケット名を変えたいときなど。 アプリケーションリポジトリは一つなのでhook scriptの中で分岐させる必要がある 。 やりかた 下記ドキュメ…

SPAアプリケーションのコンテナ化と設定値について

概要 問題点 結論 方法一覧 案1 デメリット 案2 デメリット 案3 案4 デメリット 案4.5 デメリット 概要 コンパイルされたJavaScriptのSPAアプリケーションがある。 これはDockerコンテナ上で動いている。 このアプリはdev,stg,prdなどの環境ごとに異なるAP…

Goの開発tips

自分用メモ。 依存関係はgo modで管理する。go mod tidyで使われてないパッケージを削除する。 Makefileでやること test,build,deploy,format,lint(golangci-lint),tool install ちょっとした動作確認するときはplay.golang.orgが便利https://play.golang.or…

ShellCheckでSC1090: Can't follow non-constant source. Use a directive to specify location.が出たときの対処法

概要 super linterをGitHub Actionsで使っていてShellCheckで下記エラーが出た。 SC1090: Can't follow non-constant source. Use a directive to specify location. super linterバージョン linter.yaml uses: docker://github/super-linter:v3 https://git…

Gitで WARNING: UNPROTECTED PRIVATE KEY FILE!が出たときの対処法

概要 git cloneしようとしたら下記のようなエラーが出る。 $git version git version 2.26.0 Cloning into 'hoge'... @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@…

機能組織について調べるために読んだ本まとめ

概要 まとめ 『エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング』 『ドラッカー名著集14 マネジメント[中]』 『マイクロサービスアーキテクチャ』 雑感 責任と権限について 職能別組織の必要性について 正解は組織ご…

DevOpsを推進するうえでチェックした資料まとめ

概要 『Effective DevOps』 AWS GCP Azure 『Release It!』 まとめ 概要 最近DevOpsを推進する活動をしていたので、チェックした資料をまとめる。 『Effective DevOps』 Effective DevOps ―4本柱による持続可能な組織文化の育て方作者:Jennifer Davis,Ryn Da…

Goのドット3つ

概要 Goを書いているときに見るドット3つについて公式ドキュメントのリンクをもとにコード例を示す。 配列 https://golang.org/ref/spec#Composite_literals The notation ... specifies an array length equal to the maximum element index plus one. とあ…

JavaScriptでマイク、カメラが使用されているか確認する

Webブラウザでマイクやカメラなどのデバイスが使用されていたらtrueを返す await navigator.mediaDevices.enumerateDevices().then(infos => [...infos].some(info=>info.label!=="")); マイクやカメラの許可状態を確認する await navigator.permissions .qu…

JavaScriptを使用してGoogle Chromeで開いているすべてのタブの情報を取得する

chrome extension APIを使って、開いているすべてのタブを取得する test.js chrome.tabs.query({}, function (tabs) { console.log(tabs); }); manifest.json { ... "permissions": [ "tabs" ], ... } 参考 https://developer.chrome.com/extensions/tabs

.envで定義した環境変数をDocker,docker-compseで使用する例

.envからdockerの実行環境に環境変数を渡す例 環境 go1.13.8 Docker version 19.03.8 ディレクトリ構成 Dockerfile docker-compose.yaml go.mod main.go .env .env2 main.go package main import ( "fmt" "os" ) func main() { fmt.Println("hello world") f…

ESLintで複数ファイル、複数フォルダをターゲットにする

結論 $eslint test1.js "testdir/**/*.ts" "testdir2/**/*.@(js|ts)" --parser-options=xxxx バージョン "eslint": "^6.8.0" ドキュメント https://eslint.org/docs/user-guide/command-line-interface eslint file1.js file2.js

docker-composeで実行環境の変数をコンテナに展開する方法

結論 https://docs.docker.com/compose/environment-variables/#pass-environment-variables-to-containers docker-compse.yamlのenvironmentに、実行環境の環境変数と同じキーをバリューなしで書く 環境 $docker --version Docker version 19.03.8, build a…

docker-composeのENVはbuild時に適用されない

まとめ 環境 検証 1の検証 ENVはbuild時に適用される ENVはコンテナ起動時に適用される 2の検証 ENVはbuild時に適用されない ENVはコンテナ起動時に展開される 参考 まとめ DockerfileのENVはbuild時もコンテナ起動時も適用される。 docker-compse.yamlのENV…

lighthouse-ciの使い方メモ

github.com lighthouseのCIインテグレーションツールがある。 https://github.com/GoogleChrome/lighthouse-ci/blob/master/docs/getting-started.md を読んだメモを残す 概要 前準備 結果の収集 アサーション GitHub Status Checks CI Serverの起動 GitHub …