ソフトウェア開発

ビルドされた最新の FFmpeg (ffmpeg & ffprobe) をインストールする方法

結論 johnvansickle.com インストール方法詳細 自分のマシンのアーキテクチャに適した .tar.xz をダウンロードします $ tar xzf ダウンロードした.tar.xz で展開します 展開したディレクトリの中にある ffmpeg と ffprobe をパスの通った場所にコピーします …

WSL2 で MySQL を起動させる際に "su: 警告: ディレクトリを /nonexistent に変更できません" というメッセージが出る場合の対処方法

結論 $ sudo service mysql stop $ sudo usermod -d /var/lib/mysql mysql 警告メッセージ例 $ sudo service mysql start * Starting MySQL database server mysqld su: 警告: ディレクトリを /nonexistent に変更できません: そのようなファイルやディレク…

Railway に CLI を用いてデプロイ(など)をする方法

Railway とは Heroku のような PaaS です。 railway.app 結論 「トークン生成」→「CLI インストール」→「コマンド実行」の流れです。 1. トークン生成 Project Settings のページの Tokens のメニューに行き、New Token にてトークンを生成します。 トークン…

Ubuntu 20.04 にて wxPython インストール時に "*** Could not run GTK+ test program, checking why..." というエラーが出る時

結論 $ sudo apt install -y libgtk-3-dev エラーメッセージの例 $ pip install wxPython (省略) *** Could not run GTK+ test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact err…

Capybara で CSSフレームワーク を用いた SPA をテストするのがつらい(レンダリング確定のためにウィンドウサイズ変更したり)

理由 「たまに落ちる」が発生する sleep や rspec-retry を使わないとうまくいかないことがある sleep や rspec-retry は極力使うべきではない*1と思うので、超苦肉の策 マイナーなメソッドを探さないといけないことがある 経験上、検索してもなかなかたどり…

Ubuntu 20.04 で phpenv にて PHP をインストールしようとした際に oniguruma が not found になった場合

結論 $ sudo apt install -y libonig-dev (参考)エラー時に表示されるメッセージ $ phpenv install 8.1.2 [Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded up…

Render が落ちすぎる(応答が遅すぎる)ので見送る

Render とは いわゆる PaaS です。Heroku とかと同じ感じのやつです*1。 render.com 落ちまくる 以下、Freeプラン での話です。 とある個人開発の本番サーバとして使おうとしばらく様子を見ているのですが、どうも落ちまくります。リージョンにより差異はあ…

Heroku に GitHub からではなく git コマンドから直接デプロイする方法

背景 2022/04/16 のトークン流出の件を受け、GitHub 連携ではなく直接 git コマンドからデプロイしたい(しなければいけない)。 結論 1. Heroku の CLI をインストールする します。 devcenter.heroku.com 2. git のリモートリポジトリとして Heroku のリポ…

Google Compute Engine の Always Free のスペック(2022年2月13日(日)現在)

前提 リージョンはオレゴン ゾーンは us-west1-c マシンタイプは e2-micro CPU プラットフォームは Intel Broadwell GPU は なし イメージは ubuntu-2004-focal-v20220204 ストレージは 標準永続ディスク を 30GB 結論 Mackerel のスクリーンショットより gy…

Danger JS で「変更行数」を取得する方法

Danger JS とは danger.systems 結論 ;(async () => { const changedNumberOfLines = await danger.git.linesOfCode() // ここに処理を書く })() 背景 1. Ruby版の lines_of_code メソッドは使えない undefined が返ってくる。 gyazo.com 2. 検索しまくって …

GitHub Actions における「バッジ (Status badge)」を表示させるときの注意点

やり方(前提) やり方自体は以前に書いたとおりです。 obel.hatenablog.jp 注意点 2022年4月13日(水)時点では、Webインターフェイスから用意されている Create status badge を用いて作成しようとすると、一部の条件の下では no status になってしまいま…

Danger (JS) を GitHub Actions で導入する

結論 作成するファイルは以下の 2つ です。 .github/workflows/danger_js.yml ファイル名は何でも良いです 単独のファイルとして切り出さず、既存の yml に内容を追加しても大丈夫です dangerfile.js ファイルの内容 2つのファイルの内容は次のとおりです。 …

psql コマンドを使って表示した結果のページャ(less等)の処理をスキップしたい時

結論 -P pager=off オプションを付与します。 例 例えば、以下のようにコマンドを実行すればページャが発動しません。 $ psql -P pager=off -U foo-p 5432 -d my_database -h localhost -c "SELECT relname, n_live_tup FROM pg_stat_user_tables WHERE sche…

proxy2ch を Ubuntu (x64) で make すると失敗するときの対処法

proxy2ch とは prokusi.wiki.fc2.com proxy2ch のリポジトリの場所 notabug.org make すると起きる現象 $ make g++ main.o BBS2chProxyConnection.o BBS2chProxyAuth.o DataStorage.o hmac.o stringEncodingConverter.o BBS2chProxyRawSocket.o BBS2chProxyS…

expect で「色付き文字」や「太文字」を待つためには "set" でエスケープを定義し、"${}" でその定義を読み出して対応する

結論 たとえば以下のように書くと、「太文字」である foobar を待ちます。 set 命令にて bold_black という変数に「太文字にするよ」という内容を定義し、それを用いています。 expect -c ' set bold_black "\033\[1m" expect "${bold_black}foobar" ' 詳細 …

TypeScript を用いる時に Cypress と Jest を共存させると Jest のテストで "expect" などがコンフリクトして VS Code に怒られるとき

結論 ここを読んで適切な方法を考えましょう。自分は これ がベターと思いました。 github.com 前提 TypeScript を用いている Jest を使っている Cypress を使っている テストでも TypeScript (ts-jest) を使っている モノレポである*1 「型 Assertion に存…

expect コマンド内で環境変数を用いる際は $env(HOGE) という書き方をする

結論 例えば FOO=Please input という定義されている場合、この文字列を expect する場合には次のように書きます。 expect -c ' expect "$env{FOO}" ' 参考 stackoverflow.com

シェルスクリプトにて expect コマンドを使う場合の中身の最後は "expect" を書いておかないと止まってほしいところで止まってくれない

結論 以下の例でいう、最後の expect "Starship installed" の部分です。ここを書いておいた方がいいです。 この部分がないと send "yes\n" の結果を表示し終わる前にシェルスクリプトが先に進んでしまい、予想しないことが起き得ます*1。 expect -c ' set b…

rails_same_site_cookie を使っていると localhost で Firefox にて cookie が保存されなくなった

結論 文字通りです。 gyazo.com どうするか Issue では以下の方法が推奨されています。 github.com また、ngrok などを使って https で開発するのも一つの方法だと思います*1。 補足 2022年3月9日(水)現在の挙動です 起きたバージョンは v99 です Chrome …

Discord の API でいう "Guild" と "Client" は何のことなのか

結論 Guild は サーバー のこと Client は ユーザー のこと 補足 したがって、 「Guild の ID」は「サーバーのID」を指す 「Client の ID」は「ユーザー*1のID」を指す Discord.js のドキュメントを読み解くときにこれが分かっているとスムーズに読み進めら…

CI(GitHub Actions や CircleCI など)で Git のタグを取得する際には git fetch --unshallow する

結論 標題通りです。たまたまそのブランチにタグが付与されていたらラッキーですが、何も考えずにいつもタグを全て取得するためには $ git fetch --unshallow しておきましょう。 その後、$ git describe --tags --abbrev=0 などを実行して最新のタグを取得…

GitHub Actions で step をまたいで使い回せる変数を定義する

結論 echo "::set-output name=HOGEHOGE::12345" という step を実行することで HOGEHOGE に 12345 が代入(定義)されます。 決まった書式なので素直にコピペして使うのがいいでしょう。 - name: Set a variable id: FOOBAR run: | echo "::set-output name…

zsh にて gcloud コマンドで補完を効かせる方法 (Ubuntu)

結論 以下の方法で gcloud コマンドをインストールすればよいです。 # インストールするディレクトリは ~/.glcloud と仮定して作業をします mkdir ~/.gcloud cd ~/.gcloud # 以下では 367.0.0 を指定してますが、バージョンは最新のものに差し替えます (http…

gcloud コマンドで configuration の名称を変更する

結論 ~/.config/gcloud/configurations 内にあるファイルのファイル名を変更する。 補足 上記の場所にあるファイル名は接頭語として config_ が付与されています。接頭語を除いた文字列が configuration の名称となります。 例 $ ls ~/.config/gcloud/config…

JSONファイルのバリデーションを jq コマンドで行う

結論 $ jq type を用います。 $ jq type FILENAME.json OKのとき $ jq type renovate.json "object" NGのときの例 $ jq type renovate.json parse error: Expected another key-value pair at line 36, column 1

GitHub Actions で環境変数を設定する方法

結論 1. リポジトリの Settings から Security -> Secrets -> Actions を選ぶ gyazo.com 2. 右上の New repository secret ボタンを押す gyazo.com 3. 環境変数を設定する gyazo.com 4. YAML の中で環境変数を設定する CircleCI とは異なり、このままではま…

VS Code 起動時に "An application wants access to the keyring..." というポップアップが出るとき

状況 こんな感じです。 gyazo.com 結論 ~/.local/share/keyrings/login.keyring ファイルを削除して、改めて VS Code を起動し直す。 そうすると以下のような新規にパスワードを設定する画面が表示されます。このとき、パスワードを「空」にするとよいです。…

Docker でコンテナを作成する際にボリュームを指定するとコンテナの内容を上書きしてしまうため、node_modules などが消える現象を防ぐ

全体 Dockerfile で yarn install*1 をして node_modules 配下にライブラリがインストールされたイメージが作成されたとします。このイメージからコンテナを作成する場合、例えば /path/to:/app のようにボリュームを指定すると、せっかく作られた node_modu…

Rails で Active Elastic Job のバージョンを上げると Sprockets::Rails::Helper::AssetNotPrecompiled エラーが出ることがある

Active Elastic Job とは github.com バージョンアップすると Sprockets::Rails::Helper::AssetNotPrecompiled になることがある Dependabot でバージョンアップのプルリクエストが作られることがあります。その際にタグの単位ではなくコミットハッシュの単…

GitHub Actions で直接 ${{ toJSON(hoge) }} する際に「半角スペース + #記号」が含まれていると syntax error になる

結論 どういうことかというと、以下のような場合です。 - name: First step id: my_variables run: | echo "::set-output name=hoge::FOO #12345" - name: Second step run: | echo "${{ toJSON(steps.my_variables) }}" このステップを含んだ Action を実行…

Powered by はてなブログ