詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

Fork me on GitHub

Goで知らないフィールドのあるJSONを取り扱う

野良 HTTP JSON API クライアントを作ってると、API が返してくる JSON の形に確信が持てないし、「これ何に使うんだろ」みたいなフィールドもあったりして struct にエンコードするのをサボったりする。 そういったコードがライブラリとして使われる余地を…

2022年、タスク管理をTickTickで行う

TikTok じゃないよ。 TickTick: Todo list, checklist and task manager app for Android, iPhone and Web チームのタスクマネジメントに Asana を使っていたのでそれに合わせて個人タスクもそこに積んでいたのだけど、Asana も積極的に使いたいわけではなか…

「半年早く動く」を目標にして半年が経った

社内に「来年の今年の目標は『半年早く動く』です」というエントリを書いて半年が経った。 こういう目標を立てたきっかけは、自分が変化のタイミングとして会社の会計年度(半期)を考えるようになっていたことに気づいたことだった。 同じ会社でマネージャ…

Outer Wilds クリアした

長らく積んでいたけどようやくクリアした。感想は「宇宙怖い」です。 探索メインのゲームなのでネタバレすると面白くないってことでサントラを置いておきますね。 Outer Wilds (Original Soundtrack)Annapurna InteractiveAmazon 「プレイ日記をつけるといい…

オンラインミーティング体験を物理ボタンで拡張する

meishi2キーボードを作った の続き。さて新たに4つのボタンを手に入れたはいいが、さっそく持て余す。人はボタンとともに生まれてくるわけではないのだから、仕方のないことではある。 座ってばかりの人生で、普段づかいのキーボードから手を離してわざわざ…

ISUCON11予選敗退(92604点、30位) #isucon

ISUCON11 オンライン予選 全てのチームのスコア(参考値) : ISUCON公式Blog チームは カラアゲネイティブ-ng。92604点、30位だった。通過ラインが 106094 点だったのでもうひと伸びあれば、というところで悔しい。 メンバーは去年と同じく songmu & toricls…

meishi2キーボードを作った

このときのHHKBずっと使ってたんだけど、昨日ついに壊れた https://t.co/dwvoxapmsN— 美顔器 (@motemen) 2021年7月7日 新卒のころから使っていた Happy Hacking Keyboard が壊れた(アンチポップさんにもらったやつ。ありがとうございます)。とくにメンテも…

mod_perlのDockerイメージをghcr.ioに上げた

趣味で mod_perl の Docker イメージを作っています。 Docker Hub の無料版における autobuild が終了となり、GitHub Packages Container Registry に移行することにした。 https://github.com/motemen/docker-mod_perl/pkgs/container/mod_perl {perl_versi…

Goでプライベートネットワークへのアクセスを制限する

Go

Go において、いわゆる SSRF (Server Side Request Forgery) を防ぐような目的で、内部 IP アドレスにアクセスしない HTTP クライアントを作るには hakobe/paranoidhttp が便利だった。ただ、近年ではこれが作られて以降の Go 側のアップデートとして、net.D…

LWPで"dh key too small"ってなったときの対処

ひさびさに Perl の話。結構前のことだけど、OS のバージョンを Debian 10 (Buster) にしたら LWP で一部のサイトにアクセスできなくなってしまった。 500 Can't connect to ***.com:443 (SSL connect attempt failed error:141A318A:SSL routines:tls_proce…

ts-nodeで実行中かどうか確認する

TypeScript でユーティリティ的なスクリプトを開発しているとき、毎回 tsc でコンパイルして node で実行するのはあまりに重たいのでやってられない。 ts-node というのでコンパイル作業なしに直接 .ts ファイルを実行できるんだけど、.ts ファイルとコンパ…

Goのswitch文を生成するツール

GitHub - motemen/go-switchgen 昔作ったソフトウェアをちょっとメンテしたシリーズ。Go で switch 文を自動生成したいよーってときに使えるやつです。 case 文が exhaustive になるようにいちいち書いてくのが面倒なので、機械にやらせる。 こんなやつ欲し…

PCを離れたらマイク音量を下げるmacOSアプリを作った

この記事は、はてなエンジニア Advent Calendar 2020の21日目です。昨日は id:tarao による Scalaの依存ライブラリ更新はRenovateでもけっこうイケる でした。明日は id:Krouton です。 みなさん在宅勤務してますか? 私もしています。 仕事も雑談も、とにか…

Google Meet のミュートをツールバーから切り替える拡張を作った

Google Meet Mute Toggler - Chrome ウェブストア こんなやつです。 Google Meet で仕事をすることが多くなった昨今、咳払いや生活音といったよんどころない事情によりマイクをミュートにしたいこともあるわけですが、ミュートボタンは普段隠れていて急に出…

Chromebookを買った

【Amazon.co.jp 限定】Google Chromebook Lenovo ノートパソコン Ideapad Duet 10.1インチ 日本語キーボード WUXGA MediaTek Helio P60T 4GBメモリ 限定スペック 64GB eMMC モデル発売日: 2020/06/05メディア: Personal Computers iPad が使えなくなってしま…

中間証明書のないサーバにアクセスする: 言語別の実装

前回の記事のつづきです。 中間証明書のないサーバにアクセスする - 詩と創作・思索のひろば さて、この方法で信頼できる中間証明書を手元に集めることができたので、これをプログラムから利用するにはどうしたらよいのか、ということを見ていく。 実験した…

Dockerfile をベースイメージの更新に自動で追従させる

前回のエントリで作った Docker イメージ motemen/datastore-emulator は、google/cloud-sdk をベースにしているが、このベースイメージがけっこうな頻度で更新される。とうぜん自分はその追従に手を煩わせる気はなくて、全部自動でやってほしい。 やりたか…

GitHub Actions から Cloud Datastore エミュレータを利用する

盆栽のテストを書くのに Cloud Datastore エミュレータ が必要になったので、GitHub Actions で利用してみた。 大きく分けて方法は2つある。 ジョブ中で明示的に gcloud beta emulators datastore start する setup-gcloud というアクションで gcloud コマン…

中間証明書のないサーバにアクセスする

不特定多数のウェブサイトにアクセスするアプリケーションを書いていると、ときおり SSL 証明書の検証エラーとなる URL に行き当たることがある。が、確認のためブラウザでアクセスしてみると、普通に見れてしまったりもする。そんな事例のひとつ、タイトル…

ghq など、github.com/motemen 下のリポジトリを x-motemen Org に移しています

もうけっこう前のことになりますが、github.com/motemen 下にあったリポジトリの一部を github.com/x-motemen organization に移管しました。コードやバイナリの配布形式によって、ユーザ側で対処する必要があったりなかったりしますが、それぞれのリポジト…

テキストを画面に流していくアプリをElectronで作った

この記事は、はてなエンジニア Advent Calendar 2019の12日目の記事です。 任意のテキストを画面に流していきたいことってありませんか? ぼくはあります。定期的にエンジニアみんなの前でスライドを映しつつ話す機会があって、そんなとき Slack で実況的に…

漢字スライダー

会社では基本的にすべての場でインターネットネームによる運用なんだけど、たまに戸籍ネームが必要になることがあって、そういう時、とても威圧感がある。威圧感はどこからやってくるの? それは漢字の画数の多さだと思う。その着眼のもと、漢字の画数をコン…

GitHub ActionsでRustプロジェクトをクロスビルドしてリリースする

前のエントリではバイナリを GitHub のリリースとして配布しているけれど、これは GitHub Actions でビルドとリリースのアップロードを行っている。いろいろ試行錯誤した結果なのでメモを残しておく。 ビルドに成功してからリリースを作成する、とした違いは…

ターミナルでSlackを読む

Slackはそのクライアントがそれなりに、かなりよくできていて、これでほとんど困ることはないんだけど、そうは言ってももうちょっとプログラマブルに取り扱いたいこともある。 そういう場合にもよいAPIが用意されていて、Real Time Messaging API ってのがあ…

curl でデータを逐次アップロードするには -T (--upload-file) を使う

最近知ってへーとなったのでメモ。標準入力から curl を通じてサーバにデータを送信したい場合、 curl --data-binary @- <url> というのがイディオムだと思うけど、この場合は標準入力から全部読みきってからサーバに接続・送信するので、データをストリーミング</url>…

ISUCON9予選敗退(H::W::A::Abyss::Abyss::Abyss) #isucon

ISUCON9 2日目結果と本選出場者決定のお知らせ : ISUCON公式Blog 日曜日に行われたISUCON9予選に参加し、敗退してきました。前掲の記事の「失格となったチーム」がわたしたちです。チームメンバーは id:t_kyt と id:mechairoi。 去年も予選敗退していて、最…

カレンダーでタスクを管理することとその実装

昔からタスクを次々こなしていくことはすごく苦手で、Todoist とか Remember The Milk とか Google タスクとか Hiveminder とか! を使ってみることはあってもタスクがどんどん溜まっていく一方で、一向に捌ける様子はなく、そういう状態を続けていると TODO…

Go の関数を context 対応するツール

Go

最初から完璧な設計と実装ができているなら苦労はないわけだけど、実際にはそうもいかない。具体的にはある程度の規模になってくると「あーこの関数 context.Context 対応したい!」みたいな気持ちが湧いてくるわけです。context 対応ってのは、第一引数に c…

めかぬか

ピタゴラスイッチの人気コーナー「めかぬか」をHTMLで作ってみた。 mekanuka 書き順つき SVG として KanjiVG というプロジェクトがあった。これのおかげで実現できてる。 SVGのパスをアニメーションで描く方法はなんか有名なのがあるらしい: How SVG Line An…

git submodule をキャッシュで高速化する

Git

目下新マシンの開発環境をセットアップ中なんだけど、clone しないといけないリポジトリがけっこうたくさんある。このリポジトリ群っていうのが git submodule によってモジュールを共有していて、つまり同じリポジトリを何度も fetch してくることになる。…

はてなで一緒に働きませんか?