ソフトウェア開発

漢字を平仮名に一括変換する際には ExcelAPI が便利

結論 excelapi.org 具体例 たとえば以下の URL にアクセスするとテキストで返ってきます(漢字部分は「織田信長」)。 - https://api.excelapi.org/language/kanji2kana?text=%E7%B9%94%E7%94%B0%E4%BF%A1%E9%95%B7 補足 ExcelAPI という名前ですが、単純な …

ファイルの読み込みロジックで Mac では OK でも Linux では NG の場合にチェックすべきこと

結論 Mac が「大文字小文字を区別しない」からではないか。 Mac が設定上で「区別しない」場合には、 Linux では該当ファイルが見つからないことになるから。 具体例 ls コマンドを実行した場合の具体例。 Linux gyazo.com macOS gyazo.com 参考 dev.classme…

openssl コマンドで暗号化する際に結果が冪等になるようにする方法

結論 オプション -nosalt を付与する。 具体例 1. -nosalt を付与しない場合 一見同じ結果に見えますが、全て異なっています。 $ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar U2FsdGVkX19a4H6vBEvUMPTyd+Q7/27pFzaPQc…

WSL2 で Tailscale (tailscaled) を自動で起動する方法

結論 シェルの設定ファイルに例えば以下のように組み込む。 # Starting Tailscale daemon automatically if not running... RUNNING=`ps aux | grep tailscaled | grep -v grep` if [ -z "$RUNNING" ]; then sudo tailscaled > /dev/null 2>&1 & disown fi …

Activerecord-Import で大量のデータをバルクインポートしようとすると PostgreSQL が落ちる

Activerecord-Import とは github.com 結論(どうするか) インポート時に batch_size オプションを指定してやる。 具体例 User.import!(users, batch_size: 10000) PostgreSQL が落ちたときのエラーメッセージ PQconsumeInput() SSL SYSCALL error: EOF det…

GitHub Actions で ubuntu-22.04 で Cypress を Firefox で実行する際は deb 版を入れる

結論 標題のとおりです。 具体的方法 参考ページ deb版の入れ方については以下のページが参考になります。 chatnoirlibre.com 99mozillateamppa の適用のさせ方 99mozillateamppa の適用のさせ方は、どこかに 99mozillateamppa という名前と内容のファイルを…

gh secret set コマンドを submodule 内で実行すると submodule のリポジトリに登録されてしまうので注意

結論 標題のとおりです*1。 具体例 REPO/sub 配下が submodule だとして、たとえば以下のように gh secret set したとします。 $ cd sub $ gh secret set HOGE< fuga.txt ✓ Set Actions secret HOGE for username/sub 以上のように submodule の方のリポジト…

Prettier + VSCode でエラーが出て自動フォーマットできないとき

gyazo.com 現象 github.com 結論(これで解決した) プロジェクトに Prettier を入れて Prettier Path には ./node_modules/prettier を指定する。 それまでは nodenv を用いた上でグローバルに入れていた*1が、プロジェクト配下に入れることで解決した。 *1…

Cloudflare Pages の初回 GitHub 連携が 8000000 エラーになるときの対処法

結論 GitHub 側で一度 Cloudflare のアプリを削除してから再インストールする。

MeCab の辞書をビルドするときに文字コードが euc-jp になってしまう場合の対処方法

結論 mecab-ipadic-2.7.0-20070801 を --with-charset=utf8 のオプション付きでビルドする。 $ ./configure --with-charset=utf8 Natto で確認する 期待通りの挙動になっているかを Natto で確認します。 > require 'natto' > nm = Natto::MeCab.new => #<Natto::MeCab:0x00007f2546c63280 @model=#<FFI::Pointer address=0x0000561020b78620>, @</natto::mecab:0x00007f2546c63280>…

トライアンドエラーを回すときのコツ

自分が意識していることは次のとおりです。 まずは(半)手動で回せるようにする 手動で回すのが面倒になってきたら自動化を考え始める 原則として必要になるまでは自動化は考えない方向で いきなり自動化すると見えなくなってくるものもある 自動化の際はそ…

マージコミットを必ず生成するか (--no-ff) かどうか

結論 チームによる。 自身の現実 様々な場面でどっちも使いたいことがあるので、デフォルト*1を決めて .gitconfig して、そうじゃない場合にはオプションを使うというふうにしています。 *1:--no-ff

Heroku でデプロイ時にシェルスクリプトを実行するためには .profile を作って書く方法もある(問題点あり)

結論 標題通りです。 Procfile に release タグで書いてもうまくいかないときもあります。これはずばり「リリースフェーズ中のファイルシステムの変更はアプリの Dyno formation にデプロイされない」ということが理由です*1。 この場合は .procfile に書く…

Ruby で Google::Apis::DriveV3 を用いて Google Drive のファイルを操作する方法

前提条件 サービスアカウントを用いて認証を行うとします 使う gem google-api-client google-apis-sheets_v4 でもいいですが、名前が適切な方が誰からも分かりやすいので google-api-client がよいと思います 注意事項 当該ドライブ(フォルダ等)に、サー…

ImageMagick の magick コマンドで画像を連結する方法

結論 縦に連結する場合 $ magick A.png B.png -append A_B.png 横に連結する場合 $ magick X.png Y.png +append X_Y.png 補足 連結する画像の枚数は 3枚以上 でも問題ありません。

git で commit する際の gpg の パスフレーズ を、一定期間キャッシュする方法

結論 ~/.gnupg/gpg-agent.conf に以下の二行を書きます。 default-cache-ttl 34560000 max-cache-ttl 34560000 数値の単位は秒です。 詳細 DeepL です。 default-cache-ttlオプションは、最後にGnuPGを使用した後のタイムアウト(秒)を設定し(使用するとリ…

Wrangler で login せずに環境変数だけで認証する方法

結論 CLOUDFLARE_ACCOUNT_ID と CLOUDFLARE_API_TOKEN を用いる。 例 $ CLOUDFLARE_ACCOUNT_ID=0123456789abcdef CLOUDFLARE_API_TOKEN=foobar-123456 wrangler r2 bucket list ドキュメント

スプレッドシート を API や GAS で扱うときに常に意識しておいたほうが良いことの一つ

結論 シート上での「型」と API や GAS 上での「型」の違い。 具体例 取得した値に対して文字列操作をするときに、数値に対して置換をするとエラーが出る*1 型恐怖症 たとえば GAS なら、何でもかんでも String(hoge) でキャストするという方法がある。一般…

wget を用いて 各種短縮URL を展開した URL を取得する方法

結論 以下のコマンド例で用いている https://amzn.asia/d/cHldi8H は「Echo Dot with clock 第5世代」へのリンクです。 $ wget -nv --delete-after https://amzn.asia/d/cHldi8H 2023-05-23 16:03:49 URL:https://www.amazon.co.jp/Echo-Dot-with-clock-%E3%…

Ubuntu 22.04 で ImageMagick 7 の "magick" コマンドを実行すると "AppImages require FUSE to run." というエラーが出た時

結論 libfuse2 を入れる。 $ sudo apt install -y libfuse2 エラーメッセージ こういう感じ。 $ magick -format "%wx%h" foobar.png info: dlopen(): error loading libfuse.so.2 AppImages require FUSE to run. AppImages require FUSE to run. You might …

機械学習系の「待ち」時間が90年代の音声や動画作成の「待ち」に感じる

画像の生成や機械学習を行っていると、とにもかくにも「待ち」時間が発生する。数千枚の画像をアップスケールするのに10時間、など。 これは90年代の音声や動画のエンコード待ち時間を彷彿とさせる。当時はアルバム一枚をエンコードするのに寝る前に「漬けて…

Ruby で Google Cloud Vision API (Vision AI) を利用する

前提条件 サービスアカウントは登録済みで、認証用の JSON ファイルは手元に用意済みとします ファイル名は creds.json とします 結論 1. 環境変数 GOOGLE_APPLICATION_CREDENTIALS に認証用の JSON ファイルのパスを指定する たとえば direnv を用いるとき…

GitHub Actions の github-script を用いて、次のステップ以降でも用いる環境変数を定義する方法

結論 core.exportVariable('envVar', 'Val') を用います。 すると ${{ env.envVar }} が Val を返します。process.env.envVar も Val を返します。 具体例 以下のような YAML で実行された GitHub Actions にて、最後の echo コマンド および console.log コ…

Volta でインストール可能な Node や Yarn のバージョン一覧を表示する方法

結論 ない*1。 参考 github.com 代替手段は 代替手段は上記の Issue のとおりで n を用いる。 n lsr を実行すれば最新のバージョン一覧は得られるので、npx 経由で実行すれば一発で表示させることはできる。 $ npx n lsr Listing remote... Displaying 20 ma…

Mac で GitHub Actions の Self-hosted runner を立てる

Self-hosted runner とは GitHub Actions の動作マシンを自分のマシンで行うこと、あるいはそのマシンのことです。 docs.github.com どのようなマシンを Self-hosted runner に使うか Self-hosted runner としては以下の OS と アーキテクチャ の組み合わせ…

nginx で host_name に該当する場合がないときにどの設定ファイルが参照されるのか

結論 一番最初に読み込んだ設定ファイル。 ドキュメント nginx.org 具体的な状況例 host_name にたとえば foo.example.com bar.example.com などと設定しているところ、設定していない IPアドレス直打ち でアクセスされた場合に予想外のページが返ってしまっ…

エラーが突然急増したら Cloudflare が通知をくれた

ありがたい。 gyazo.com

Next.js v13.4.9 で 404ページ をカスタマイズして任意のページにする

結論 環境によって適宜読み替えてください。 1. app/404/page.tsx を作る import { notFound } from 'next/navigation' export default function NotFoundPage() { return notFound() } 2. app/not-found.tsx を作る // このファイルが表示させたい内容です …

WSL の仮想マシンを「シャットダウン」する方法と「再起動」する方法

結論 シャットダウンする方法 コマンドプロンプト や PowerShell で以下のコマンドを実行します。--shutodown ではなく --terminate です。 > wsl --terminate ディストリビューション名 「ディストリビューション名」というのはいわゆる仮想マシン名です*1…

ngrok の free プランで固定ドメイン(サブドメイン)が使えるようになっていた

結論 表題のとおりです。 具体例 メニューの Cloud Edge -> Domains に行くと、次のような形式で固定のドメインが割り当てられています。YOUR_ID の箇所にはランダムな文字列が入ります。 YOUR_ID.ngrok-free.app gyazo.com gyazo.com free版ですとこの ngro…

Powered by はてなブログ