リモートワークで退勤後にテンションを上げるための技術

この記事は、はてなエンジニアAdvent Calendar 2023 の2024年1月9日の記事です。 昨日はid:arthur-1さんの Advent Calendarを25日分続ける技術、あるいは物を発明し素早く作る技術 - Diary of a Perpetual Student でした。アウトプットが続かない私としては…

GitHub actions で PR が無ければ作る、あれば更新する

こんな感じでできた。gh pr list で標準で jq 使えることが今回の発見。かっこいい。 env: TARGET_BRANCH: 'target-branch' GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: create-or-update-pr: runs-on: ubuntu-latest steps: - name: search pr number and…

MySQL でテーブル定義を JSON形式で吐き出す

諸事情でテーブル名と、テーブルのカラムを以下のような JSON 形式で出す必要があった。 { "<テーブル名1>": [ "<カラム名1>", "<カラム名2>", ... ], "<テーブル名2>": [ "<カラム名1>", "<カラム名2>", ... ] } 最初は MySQL でテーブル定義を csv に吐き…

【GraphQL】何らかの条件で何らかを集めてくるフィールドの設計、どうする?

何を言っているかわからないと思うけど、例えば「1週間以内に新規登録したユーザー一覧を返す」みたいなフィールドをどう設計するかという話。いくつかパターンがありそう。 1. 専用のフィールドを用意する query { recentlyRegisteredUsers: [User!]! } ク…

キーボードとマウスを新しくした

今まで普通のテンキーレスのキーボードを使っていたんだけど、FPS をプレイするときにマウスが当たってしまってエイムの邪魔になるので60%キーボードを買った。 Ducky One 3 Mini 60% keyboard Classic Pure White エンターキーの色が違うのがおしゃれ。めっ…

ChatGPT にホームページを作ってもらう

独自ドメイン取ったので自己紹介サイトでも作ろうかな〜と思ったけど、急にめんどくさくなったので ChatGPT に作ってもらった。 こんな感じになった。 ヘッダにリンクがあるのが嫌なので変えてもらう。 ちゃんと変えてくれた。優秀。 タイトルを変えてもらっ…

cookie に同意するポップアップを消したい

GDPR の関連で、特に海外のページにアクセスすると「お前のブラウザの cookie 使うけどええか?」というポップアップ来るけど勝手に使ってくれ…という気持ちになる。 同じように考えている人は多いようで、 I don't care about cookies 3.4.5 というブラウザ…

Qrio Lock から SwitchBot スマートロック + 指紋認証パッドに変えたら最高になった

Qrio Lock を1年半くらい使っていたんだけど、リモート解錠の精度が悪くて機能しなかったり、解錠がシンプルに遅くて最悪10秒くらいかかったりしてイライラしていた。Amazon 見てたら、SwitchBot スマートロック + 指紋認証パッドが Qrio 単体より安いことに…

MySQL で 複合キーを貼る時は explain の key_len をちゃんと見る

複合キーを貼っている以下のようなテーブルで、index が効かなくてクエリがめちゃ重くなる現象が発生してしまった。 CREATE TABLE `example` ( `id` BIGINT UNSIGNED NOT NULL, `column1` BIGINT UNSIGNED NOT NULL, `column2` BIGINT UNSIGNED NOT NULL, `c…

git 上で削除したファイルがコード内で利用されているかどうか調べるためのワンライナー

削除したファイルが 1 つ 2 つだったら使われているかどうかを調べるために素朴に grep すればいいんだけど、大量にあるときつい。ので手軽に調べられるワンライナーを書いてみた。 git log <commit_hash>...<commit_hash> --diff-filter=D --name-only --oneline | grep -Eo '[^/]+$' </commit_hash></commit_hash>…

SwitchBot 開閉センサー で郵便物が届いたかどうかを知る

ポストを開ける習慣が無いので、役所とかから重要な郵便物が届いても放置してしまい困ることがたまにある。開ける習慣をつければいい話ではあるけど怠惰なので技術で解決したい。 SwitchBot 開閉センサーを使うとポストの開け閉めを検知できてよさそうと思っ…

Google Meet で自分のWebカメラの画像が反転しているのを正位置に戻す

Google Meet だと自分のWebカメラの映像が反転していまっていて困る。 何に困るかっていうと、最近背後に時計を置いてるんだけど、自分の画面だと反転していて何時かパット見わからない。 Zoom とかだと設定で変えられる機能があるみたいだけど、Meet は特に…

Next.js の SSR 時に Cache-Control ヘッダーを返す

Next.js のサーバの前段のCDNに Cache-Control ヘッダーを返したいので設定してみた。 公式ドキュメントでは、getServersideProps 内部で res.setHeader('Cache-Control', 'hogehoge') すればよいと書いてあるが、なぜか反映されなくてハマっていた。 https:…

クレジットカードの洗替

5月末で今使っているクレジットカードの有効期限が切れたので、それにともなって様々なサブスクサービスのクレジットカード情報を更新しなくてはいけなくて大変。 pixiv fanbox netkeiba プレミアム amazon app store Nintendo Switch Online 自分の手元でも…

ペアプロの苦手意識

今は慣れてなんとも思ってないけど、入社したすぐの頃はペアプロが苦手だったな…という記憶がある。 なぜ苦手だったかというと、糞みたいなコードを書いてしまって、「こいつゴミだな…」と思われてしまう緊張感があったからだと思う。 実際のところペアプロ…

会の司会をボタンで済むようにしてはどうか

会の司会をしていると、「次は○○さんお願いします」みたいに発言するケースは多い。 人数が多いと発言する回数が多くて疲れるので、ボタンに任せたらどうか。 magamingを呼ぶ まがみんぐと呼ばれてしまうけど、人間も初見ではこういうふうに呼ぶことはあるの…

35万で買ったフィアットの車検

1年前にコミコミ35万で中古のフィアット500を買った。製造年は2010年で、走行距離は12万キロの代物。 35万の車と聴くとなんか恐ろしい感じもするけど、特にバンパーに毛が絡まってるということもなく外装内装はきれい。走っているとトランクのドアがガタガタ…

GraphQL の startCursor/endCursor は nullable でもよい

GraphQL で ページネーションを実装するとき、Relay GraphQL Cursor Connections Specification に則ると、 startCursor/endCursor は non-null にする必要がある。 GraphQL Cursor Connections Specification PageInfo must contain fields hasPreviousPage…

2021年競馬振り返り

2021年4月に初めて競馬をやったんだけど、未だに毎週を楽しみに続けている(きっかけとなったウマ娘はもはやプレイしていなくてただの競馬おじさんに成り果てている)。今日今年最後のG1レースも終わったのでこの1年の収支を振り返ってみる。 最終収支 これに1…

browserslist と UA を比較するための正規表現を生成するグッズ browserslist-useragent-regexp

browserslist でサポートブラウザを定義しているんだけど、 Sentry で browserslist にないブラウザの場合エラーを送らないようなことがしたいなと考えていた。 browserslist では chrome 96 みたいにバージョンが定義されているけど、 UA はMozilla/5.0 (Ma…

ゲーミングディスプレイ買った

動機 数ヶ月前からめちゃめちゃに Apex をやっているんだけど、ずっとリフレッシュレートが 75Hz のディスプレイ1でプレイしていた。 www.lenovo.com ゲーミングディスプレイにして世界が変わった!みたいな発言をインターネットでよく見るので前から 144Hz …

MFA アプリのデータが消滅すると破滅する

もう4年くらい iPhone7 を使っていたんだけど、 最近 Lightning 端子の接触が悪くケーブルの下に何か物をおいて角度を付けないと充電できないという不便極まりない状態だったので iPhone SE(第二世代)に機種変更した。 クイックスタート機能でデータ移行をし…

npm パッケージを beta 版で publish する

開発中の npm パッケージを publish して動作確認する必要があったのでその時の手順メモ. バージョン指定 npm パッケージの package.json のversion を, 1.0.0-beta.0 のように末尾に-beta-? が付くように書き換える. またはnpm version premajor --preid be…

在宅ワーク中に家族に会議中だとアピールするライフハック

現在在宅ワーク中なわけだけど, 家族にミーティング中ですとアピールするために, ミーティングはいい感じのランプを点灯させたりしている。 こんなやつ ただミーティング始まる/終わったときに手動でON/OFFするの面倒なので, 自動化してみた。 事前準備 まず…

Firebase Authentication の匿名ユーザーを削除する

Firebase Authentication で匿名ユーザーを使う場合, プランに関わらずユーザーアカウントの上限は1億までになっている。 Firebase Authentication の上限 つまり1億PV以上になると新たに匿名ユーザーを作れず破滅する可能性があるので, 定期的にユーザーの…

【Golang】VSCodeで自動生成されるテストコードをカスタマイズする

こんにちは。Goのテスト、書いていますか? 私はめちゃめちゃ書いています。 VSCodeに拡張機能(vscode-go)を入れることで、テストコードを自動生成することができることを最近知ったのですが、これがとても便利です。 使い方は以下の記事でまとめられていま…

カウントダウンタイマーアプリを作った

1月末で現職を退職予定なんだけど、「いつまで出社なの?」とよく聞かれるので、退職までの残り時間をシェアできるアプリを作った。 timer-maker.com スキルセット フロントエンド:React.js + TypeScript ホスティング:Netlify 最初firebaseを使おうと思っ…

2019年没アプリ達の供養

2019年ももうすぐ終わり。今年は個人でサービス開発するぞ!と意気込んでたけど、結局リリースに至ったものは1つもなし… せっかくなので没となったアプリ達の供養を、ここに執り行う。