ブログのビルドが失敗するようになったのでnpmパッケージをアップデートしました

この Gatsby のブログは Github Actions でビルドしているのですが、5日くらい前からビルドに失敗するようになっていました。 手元ではビルドできるので、 npm run deploy を手動で実行してデプロイしていたのですが、 ずっと放置しているわけにはいかないので直しました。 本当は mxschmitt/action-tmate - GitHub を使ってデバッグするつもりだったのですが、 npm パッケージをアップデートしたら直りました。 npm audit で found 10 vulnerabilities (1 moderate, 9 high) になっているのが少し気になりますが…… acorn は package-lock.json を見る限りだと 7.1.1 が入っているように見えますね……、 npm audit について調べてみないと分からないですが、今回は Gatsby なのであまり影響はないかなと認識しています。

March 9, 2020 · 1 分

CoreOS rktプロジェクトが終了していました

CoreOS のプロジェクトが終了して Fedora CoreOS が後続になるという話は知っていたのですが、 rkt プロジェクトもそれに伴って終了していたようです。 Github の rkt/rkt も Archived になっていて特に代替になるものや 活発に開発されている fork も今のところなさそうです。 他のコンテナランタイムとしては runc や、 kubernetes 用の cri-o などもありますが、 runc は containerd から利用されているようで(前 Docker のリリースか何かで読んだ気がする)、 Docker/rkt を置き換えるものではないですね……。 まあ単純に Docker を使えばいいんだとは思いますが……、Docker のセキュリティ面での懸念に対処していた rkt プロジェクトが終了してしまうのは個人的に残念でした。

March 8, 2020 · 1 分

JetBrainsのYouTrack

家庭内のタスクを管理するためのツールを探していて、 Redmine, Trac, Backlog などは知っていたのですが、 JetBrains も YouTrack という プロジェクト管理ツールを出していることを知りました。 クラウド版のほか、スタンドアロン版を自分でホスティングすることもできるようです。 また、スタンドアロン版の場合は10ユーザーまで制限なしで無料で使うことができるようなので、 試しに使ってみようかなと思いました。

March 7, 2020 · 1 分

Dockerの最新版をCentOSにインストールしてみました

CentOS のパッケージは、普段使っている ArchLinux に比べるとかなり古いです。 しかし、 epel などのレポジトリを使うことで、比較的新しいバージョンを使うことができます。 docker は CentOS 用のインストールマニュアル があるので、これに従えばよいです。 まず、既に docker がインストールされている場合は yum remove コマンドで削除します。 そして、 yum-utils device-mapper-persistent-data lvm2 パッケージをインストールします。 (手元の環境では全て最新版がインストールされていました。) 次に、 Docker CE のレポジトリを追加します。 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo あとは yum install docker-ce docker-ce-cli containerd.io を実行すれば最新版がインストールされます。 また、 docker-compose はこの状態で yum でインストールしようとすると古いバージョンが入るので、 pip を使ってインストールしてあげると最新版がインストールされます。 ただ、インストールが /usr/local/bin/ 以下になることがあり、 sudo 時の PATH に含まれていないことがあるので 注意が必要です。(とりあえずはフルパスで指定すると動きます。) ArchLinux を使っていると pip も 3 が標準な気がしてしまいますが、他の disto では 3 の suffix がついているんですね。 そろそろ 2 系も EOL なので、 suffix なしの 3 系が標準になってほしいものです。

March 6, 2020 · 1 分

earlyoomに投げたPRがマージされました

earlyoomがcommunityレポジトリに入っていました に書いた通り、 earlyoom が community レポジトリに入ったので、 earlyoom の README のリンクを修正して PullRequest を投げました。 README: Update Arch Linux package #168 +2, -3 行の小さな PullRequest ですが、これからも継続して OSS に貢献していこうと思います。

March 5, 2020 · 1 分

earlyoomがcommunityレポジトリに入っていました

earlyoom が Fedora32 でデフォルトで有効化 されるようですが、 ArchLinux には AUR にあって公式レポジトリにない状況でした。 しかし、つい2時間前に community/earlyoom に入っていたようです。 最近ではほとんど AUR のパッケージを利用することはないような気がしています。 Trusted User の皆さんに感謝しないといけないですね。

March 4, 2020 · 1 分

passmenu をカスタマイズしてみました

パスワードマネージャーには Pass / password-store を使っていて、 GUI 環境での入力には passmenu を使っているのですが、 passmenu のデフォルト動作は クリップボードへのコピーで、 直接入力させるには --type オプションを付ける必要があり少し面倒だったので、動作をカスタマイズしてみました。 オリジナルのソースは contrib/dmenu にあります。 pass は全体がそうなのですが、中身はシンプルな bash スクリプトなので、好きなように修正してしまいます。 #!/usr/bin/env bash shopt -s nullglob globstar line=1 if [[ "$1" =~ ^[0-9]+$ ]]; then line=$1 shift fi prefix=${PASSWORD_STORE_DIR-~/.password-store} password_files=( "$prefix"/**/*.gpg ) password_files=( "${password_files[@]#"$prefix"/}" ) password_files=( "${password_files[@]%.gpg}" ) password=$(printf '%s\n' "${password_files[@]}" | dmenu) [[ -n $password ]] || exit pass $@ "$password" | tail -n+$line | head -n1 | tr -d '\n' | xdotool type --clearmodifiers --file - 直接 type して欲しいときの方が多いのでデフォルト動作を type に変更 (コピーしたかったら pass コマンドを使うので、というか直接 type させる以外する必要ない気が……) 複数行に対応するため、1つめの引数が数字であればその行を出力するように変更 otp なども入力できるように、以降の引数は dmenu ではなく pass に渡すように変更 などをしました。...

March 3, 2020 · 1 分

Scala.js 1.0 がリリースされました

ずっと待っていたのですが、ついに Scala.js の v1.0 がリリースされていたようです。 Announcing Scala.js 1.0.0 Scala などに慣れてしまって、 javascript や python などは書きにくく感じてくるようになりました。 Scala.js が 1.0 になったことで業務にも採用しやすくなったかな?と思います。 ひとまず業務外で実際に使っていきたいです。

March 2, 2020 · 1 分

SpotFleet内の複数インスタンスで連番を生成するスクリプト

AWS でスポットインスタンスを複数起動して大量の処理を行うことがたまにあります。 Terraform で SpotFleet をリクエストして複数のインスタンスを立ち上げることはできますが、個別に user_data を指定するのは 少し面倒です。 ただ、同じ user_data でも、重複しない連番さえ取ることができればなんとかなることも多いはず……と思っていて、 パラメータストアを使ったり DynamoDB の AtomicCounter を使ったりしているようですが、 AWS CLI + jq だけで生成する方法を考えてみました。 スクリプト #!/bin/bash TOKEN=$(curl -s -XPUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") INSTANCE_ID=$(curl -sH "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id) FLEET_ID=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID | jq -r '.Reservations[].Instances[].Tags[] | select(.Key == "aws:ec2spot:fleet-request-id").Value') TARGET_CAPACITY=$(aws ec2 describe-spot-fleet-requests --spot-fleet-request-ids $FLEET_ID | jq '.SpotFleetRequestConfigs[].SpotFleetRequestConfig.TargetCapacity') while true; do aws ec2 describe-instances --filter Name=tag:aws:ec2spot:fleet-request-id,Values=$FLEET_ID | jq -r '.Reservations[].Instances[].InstanceId' | sort > /tmp/instance_ids....

March 1, 2020 · 1 分

sudoに-iオプションをつけるとクオートの挙動が変わってハマりました

sudo コマンドには -i/--login オプションがあり、コマンドを走らせるユーザー(デフォルトは root)のログインシェルを 使ってコマンドを実行できますが、このオプションを指定する場合としない場合でクオートの扱いが変わってハマってしまいました。 具体的には、EC2 の root で実行される user_data スクリプトで、 パスフレーズなしのキーペアを生成する際に sudo -u ec2-user -i ssh-keygen -f .ssh/id_rsa -N '' とすると、 option requires an argument -- N というエラーが発生してしまいます。 (ちなみにここで生成したキーペアは、 git clone をするための deploy key として使おうとしています。 user_data とはいえ private key を含めたくなかったので、インスタンスで生成して public key を登録する形にしました。 結局 API を叩くときなどに使用する token/secret は user_data に含めることになるんですが……) issues この問題ズバリの issue が5年前に出ていますが、1つもコメントはついていません。 Bug 679 - sudo -i ignores empty arguments 10 年前の Bug 413 - Unexpected change in quoting behaviour with -i flag も同じ問題を指しているように読めますが、こちらも1ヶ月経たずに放置されてしまっています。...

February 29, 2020 · 1 分