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

結論

excelapi.org

具体例

たとえば以下の URL にアクセスするとテキストで返ってきます(漢字部分は「織田信長」)。 - https://api.excelapi.org/language/kanji2kana?text=%E7%B9%94%E7%94%B0%E4%BF%A1%E9%95%B7

補足

ExcelAPI という名前ですが、単純な API として用いても OK とのことです。

excelapi.org

Yahoo! に同様の API がありますが、それをラップしたもののようです*1

注意点

1分間に300件までのレートリミットがあります。

*1:Yahoo! のものをそのまま扱おうとすると、戻り値が独特で扱いづらい

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

結論

Mac が「大文字小文字を区別しない」からではないか。

Mac が設定上で「区別しない」場合には、 Linux では該当ファイルが見つからないことになるから。

具体例

ls コマンドを実行した場合の具体例。

Linux

gyazo.com

macOS

gyazo.com

参考

dev.classmethod.jp

補足

めちゃくちゃハマったが、この知見はきっと活きる。

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

結論

オプション -nosalt を付与する。

具体例

1. -nosalt を付与しない場合

一見同じ結果に見えますが、全て異なっています。

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX19a4H6vBEvUMPTyd+Q7/27pFzaPQctnCfs=

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX185H8E7L8WsVniwiJ3GvRImdiv3shuooj0=

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX1/6b22prbaq0g2/KN0ROK1fxB8cYPtPEPU=

2. -nosalt を付与した場合

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==

$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==

冪等にしたい動機

冪等にしたいのは(もちろん)diff が出るようにしたいからです。現実に運用するとなると一手間かかりますが、秘匿値を Git 管理のもとで取り扱いたいときには冪等な暗号化(復号化)は有用かと思います*1

*1:ただし本当にまずいものはそもそもネットに出してはいけない

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

補足

  • $ sudo tailscaled をパスワード確認無しで実行するために /etc/sudoers に追記をする必要がある*1
    • tailscaled の場所は which tailscaled で調べる
  • これ以外の方法もあり得るが(次項の「参考」を参照)、この方法はシンプルだしシェル起動時間にもそんなに影響がないため、これがベターだと思う
  • 他の「スタートアップ時起動」したいアプリケーションもこの累計で起動できる*2

参考

github.com

*1:もちろん visudo 経由で

*2:少々強引な方法ではあるが

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

Activerecord-Import とは

github.com

結論(どうするか)

インポート時に batch_size オプションを指定してやる。

具体例

User.import!(users, batch_size: 10000)

PostgreSQL が落ちたときのエラーメッセージ

PQconsumeInput() SSL SYSCALL error: EOF detected (ActiveRecord::ConnectionFailed)

参考

https://webcache.googleusercontent.com/search?q=cache:jdX4uXcvCb4J:https://system.blog.uuum.jp/entry/2022/10/11/131234&hl=ja&gl=jpwebcache.googleusercontent.com

Powered by はてなブログ