サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
gfx.hatenablog.com
デイリーポータルZの新着記事をBlueskyに投稿するbotを作りました。 github.com デイリーポータルZは2024年1月1日から独立した会社になるようですが、状況から察するに実態としては消滅まで秒読みと思われます。インターネットからデイリーポータルZが無くなるのは寂しいので、どこかの企業がスポンサーになってくれることを期待しています。 dailyportalz.jp それはそれとしてBlueskyのボットを作るのは結構楽しいですね!ボットのコードはRustで書きました。GitHub Actionsの定期実行でRSS feedをポーリングして新しいものがあったらポストする、という素朴なプログラムです: bsky.app Bluesky APIへのアクセスはsugyan/atriumを使いました: memo.sugyan.com 投稿の本文をリッチテキストにできたり*1、OGPカー
2023年から三井住友銀行にオリーブアカウントなるものができて、これのクレジットカードが「クレジットモード」「デビットモード」「Vポイント払いモード」を切り替えて使えるという触れ込みです。このほか、オリーブ化するとSMBCからの振り込み手数料が無料になります。この振込手数料無料に引かれてオリーブ化したのですが、このオリーブアカウントで発行するオリーブカードがあまりにも出来がわるくて驚いています。 実際に使ってる方はわかると思いますが、実店舗・オンライン決済問わず、Oliveカードでの支払いが拒否されることが頻繁にあります。おかげでオリーブカードと通常のSMBCカードの2枚持ちをする必要があります。なんならオリーブカードは使う必要がないくらいです。 ところで、オンライン決済のときにオリーブカードが弾かれる場合は、「クレジットモード専用カード番号」なるものがあるので、それを試すとうまくいくこと
追記(2023/11/29): 2023/11/1からまたZaimでアメリカン・エキスプレスとの連携ができなくなりました: (11/2 掲載)アメリカン・エキスプレスの連携不具合について:よくある質問|家計簿アプリ Zaim。マネーフォワードではできているようです。困惑の極み…。とりあえずZaimのプレミアムプランは解約しました。 最近、我が家の家計のための家計簿アプリを、5年ほど使ったマネーフォワードMEからZaimに乗り換えました。今のところ、機能的には満足しており、かつこれまでできていなかった我が家の家計スタイルに合った家計簿の運用がようやくできるようになったので、大変満足しています。 もともとあった課題として、マネーフォワードMEは我が家の家計スタイルを実装していないというものがありました。我が家の家計スタイルは、別に特殊なものではなく、次のゼクシィの記事の「【2】お互いに、毎月定
次子のために5ヶ月の育休をとった記録です*1。 家族構成は、外資系*2勤務フルタイムワーカーの私、同じく外資系勤務フルタイムワーカーの妻、長子のmfx氏(2017年9月生まれ)、そして次子のrfx氏(2022年6月生まれ)という四人家族です。 私が育児休業をとったのはrfx氏の育児のためです。妻がはrfxの誕生の1ヶ月前から産休に入り、11月いっぱいまで育休をとりました。私は妻と入れ替わるように11月下旬から翌年の4月下旬まで育休をとったため、約5ヶ月間育児休業を取得することになりました。つまり、rfx氏が保育園に入園して慣らし保育が終わるまでの期間を、私たち夫婦で分担して育休をとり、育児に集中することにしたのです。 長子のmfx氏が生まれたときは、私は育休を取得しませんでした。当時は人数が一桁台のスタートアップ企業に勤めていましたが、育休は取ろうと思えば取れたはずです。しかしなんとなく「
エンジニアHubに「HTTP/3|Webエンジニアが知るべき新常識 ─ QUICやコネクションマイグレーションなどを学ぶ 」という記事を寄稿しました。CDNとしてHTTP/3を提供しているFastlyで働いているという縁からです*1。 eh-career.com 書きたいことはこの記事にすべて書いたので呼んでいただきたいのですが、この記事では「自分でHTTP/3サーバーを管理する」ということはまったく視野に入れていません。HTTP/3は現在のところCDNのための技術といっても差し支えないからです。 一方で、これから数年かけて「非ブラウザのHTTPクライアントにおけるHTTP/3の活用術」といったことが研究され、広まっていくのでしょう。ちょうどHTTP/2が標準化されたあとで、HTTP/2を活用したgRPCが作られたように。これについては個人的には非常に楽しみにしています。非ブラウザのHTT
ふと思い立って『日経サイエンス』誌を読んだらけっこうよくて軽く感動しました。 これまではTwitter至上主義だったので情報はTwitterから仕入れればよいと思っていたのですが、最近のTwitterのサードパーティ・マイノリティ排除の様子に辟易してTwitterをやめて以来、情報に飢えていたのでした。そこでたまたま目にした科学雑誌を読んだら満足感が高かったという感じです。 自分の専門分野(ソフトウェアエンジニアリング)ではない専門誌を読むという発想があまりなかったのですが、子供が生物に関心をもったのをきっかけに真面目に理科・科学を学び直すのもよいなあと思ってたのでちょうどよいというのもあります。こと学術系の記事に関しては、有料コンテンツも捨てたものじゃないですね(当たり前)。 https://amzn.to/480Mnry
vscodeはTypeScriptの構文ハイライトのために TypeScript.tmLanguage という定義ファイルをもっています。 GitHub - microsoft/TypeScript-TmLanguage: TextMate grammar files for TypeScript for VS Code, Sublime Text, and Atom. この tmLanguage はもともとTextmate用の構文定義言語のようですが、vscodeプロジェクト群はこれを利用する構文ハイライトエンジンも提供しています。 GitHub - microsoft/vscode-textmate: A library that helps tokenize text using Text Mate grammars. つまりこれらを使うと、vscodeと同じ構文ハイライトを実装でき
.gitattributes に次の1行を足すと、vscodeの設定ファイルがGitHubでJSONC (JSON with Comments) としてsyntax highlightされるようになります。 .vscode/*.json linguist-language=jsonc GitHubのsyntax highlightは github/linguist で制御されています。これに同梱されている overrides.md というドキュメントに、repoごとのカスタマイズ方法が載っています。 https://github.com/github/linguist/blob/master/docs/overrides.md syntax highlightだけでなく、GitHub repoの統計(どの言語がN%、みたいなやつ)からの除外、自動生成されたかどうかのフラグ(統計から除外され
3行で キウィフルーツなどのぬめりのある果物を切ったあとは、別の作業に取り掛かるまえに手を洗うべし リンゴなどの硬めの果物を手の上で切るのはハイリスクなので、可能であればまな板を使うべし 切り傷を負ったとき、5分経っても血が止まらなければ即病院へ(行きつけのクリニックでよい)。ナイフによる切り傷はよくあることなので医者も処置に慣れている 詳細 2022年6月に、果物ナイフで左の人差し指をばっさり切って縫合する羽目になりました。抜糸まで10日、その後キーボードをタイピングできるようになるまで数週間、だいたい全治一ヶ月くらいでした。そこからさらに半年ほど経過した今でも縫合痕は残っていますが、日常的にはまったく問題ないくらい回復しました。怪我の場所に意識を集中すると、違和感が多少残っているかな、という程度です。 これは朝キウィフルーツとリンゴをナイフで剥いているときに起こった事故です。この2種の
2022年の6月に第二子であるrfxを受け入れました。それに伴い、11月最終週から4月第1週いっぱいまで、約4ヶ月の育休をとることにしました。 第一子であるmfxのときは育休はとらなかったので、はじめての育休です。なんならプログラマーとして働き始めてから十余年、1ヶ月以上休みをとるのは初めてです。 rfxが産まれてからこのかた、認知的に高負荷な状態が続いていて、そのわりには仕事にも全然集中できなくてけっこうしんどい思いをしていたので、ここで育休をとって育児に専念できるようになるのは正直ほっとします。一方で、育休給付金を踏まえても収入が激減すること、4ヶ月の間キャリアを休止することについては不安もあります*1。 とくに収入については結構苦しいところです。育休給付金は雇用保険でまかなっていて、年々改善はしてきていますが、支払い上限が1ヶ月約30万円までとなってるからです。一方で、夫婦どちらも育
BPF CO-RE (CO-RE: Compile Once , Run Everywhere) を実行するにはLinux kernelがBTF (BPF Type Format) つきでビルドされている必要があります。 Ubunt 20.04 の最初のリリースではBTFは有効になっていませんでしたが、アップデートで配信されているカーネル 5.13.0-39-generic ではBTFが有効なのでカーネルのアップデートをするだけでBPF CO-REが使えます。 GitHub Actionsの場合、デフォルトのカーネルではなくAzureのためのカスタムカーネルですが、こちらも最近のインスタンスはBTFが有効になっているので、特別なことをしなくても BPF CO-RE をテストできそうです。 github.com ci.yml - workflow file、ただし実際には make を呼ぶだ
追記: これをしてもはてなブログのヘッダでログイン状態にならない現象が起きてしまうようです。もはやFirefoxのバグなのかはてなブログのバグなのかわかりませんが…。 Firefoxの「プライバシーとセキュリティ」を変えると次のようにタブの再読み込みを行うUIが出ますが、少なくともFirefox v98現在はタブの再読み込みだけではなく Firefox自体の再起動が必要です。 そうしないと少なくとも一部のクッキーの挙動などが変わり、「はてなブログ」のヘッダではてなアカウントがログイン状態にならないようです(はてなブログはFirefoxのプライバシー設定が「厳格」だとヘッダがログイン状態になりません)。 このせいでずっとはてなブログがFirefox未対応だと勘違いしていたのですが、実際にはどうもFirefoxのバグっぽいなということがわかった次第です。
Chrome Web Store chrome.google.com 使い方ですが、GitHub PR pageに次のようにCI statusにcheckboxが現れるので、完了通知がほしいCI statusにチェックをつけるだけ。 チェックされたCI statusが完了(success or failure)になると、次のようなデスクトップ通知が出ます。この完了したときの通知をクリックすると該当のGitHub PR pageのタブをアクティブにします。 tab idごとにcheck状態をもっているので、リロードしてもtabごとのcheck状態は維持されます。 現在(v0.9.2)の機能はこれだけです。既知のバグとして、GitHubのPR画面で差分をみたりdiscussionに戻ったりしているとcheckboxが出ないことがありますが、そういう場合はリロードするとcheckboxが出ると思
2021年現在、M1 MacでDockerを使うのが大変という話がちょいちょいあります。 個人的な事情でいうと、私は現在、AMD64 Linuxでしか動かせないソフトウェアを開発していて、Dockerもちょいちょい使う、という感じです。なのでAMD64 MacでVMWareを使ってUbuntu VMを使って開発しています。 一方で、新規で購入できるMacbook ProがM1しかない、デスクトップマシンとしてWindowsやUbuntuを使うことにまだ踏ん切りがつかない(なんだかんだで10年Macで仕事をしてきているので…)ということもあり、どうしたものかと思っていましたが、会社が開発機としてIntel NUCを用意しているというので申請して導入したことで、一気に諸問題が解決しそうだなというところに至りました。 Intel NUCはIntelが作っているmini PCで、サイズ的には幅12
課題編 シェルスクリプトで「あるグローバルな状態を変える操作を行い、その結果をチェックし、状態をもとに戻す」みたいなタスクをするときに「その結果をチェックし」のところでコマンドの終了ステータスを変数に入れて置きたいみたいなことがあります。例えば、次のようなコマンド操作です。 set -e # グローバルな状態を変える操作を行う git merge --no-ff --no-commit $main_branch || true # 結果をチェックしてexit codeを変数に入れる git diff --cached --exit-code --quiet ; code=$? # グローバルな状態をもとに戻す git merge --abort # 上位プロセスに結果を渡す exit $code スクリプト全体には set -e (コマンドが失敗するとシェルスクリプトが即座に終了する)を効
engineer-lab.findy-code.io 詳細は記事を読んでいただきたいのですが、おかげさまで「ICという役割を初めて知った」「自分もIC的な働き方をしたいのだと分かった」という感想が複数みられたので、この記事を書いた甲斐はあったなあと思います。 一方でやや誤解というか説明が不十分だったかなと思うのが、「ICを役割としておいている企業では、ICはプレイヤーのデフォルトの役割である」ということです。Fastlyではそうですし、たぶんICを置いている他の企業でもそうです。ICはスタープレイヤーだけに許された特別な働き方では決してありません。私はIC的に働いてきて今後もICで行きたいと思いますが、ICと管理職(ピープルマネージャ)を行き来するという選択をとってもいいですし、むしろICとピープルマネージャを行き来するほうがICとしての成長に繋がりますよという主張もあります。 ともあれ私
最近、我が家の家計のための家計簿アプリを、5年ほど使ったマネーフォワードMEからZaimに乗り換えました。今のところ、機能的には満足しており、かつこれまでできていなかった我が家の家計スタイルに合った家計簿の運用がようやくできるようになったので、大変満足しています。 もともとあった課題として、マネーフォワードMEは我が家の家計スタイルを実装していないというものがありました。我が家の家計スタイルは、別に特殊なものではなく、次のゼクシィの記事の「【2】お互いに、毎月定額を共同口座に入れて管理する方法 」にあたります。 共働き夫婦の「家計の管理方法」は全5パターン!ふたりに合うのは?|ゼクシィ 【2】お互いに、毎月定額を共同口座に入れて管理する方法 例えばお互いに月収の6割を家計に入れよう、などとルールを決め、その中で生活費をやりくりする方法。それ以外は自分で自由に使えるお金として残すことができま
在職エントリってやつです。 gfx.hatenablog.com 2019年9月9日に現職に転職して今月で2年たちました。ウェブ系でRailsやReactなどをやっていた前職から活動分野を大きく変えて、C言語などでミドルウェアを開発する現職にきて、さらに英語が共通語の環境ということでうまくやっていけてるか心配でしたが、なんとかギリギリやっていけてるという感じです。 IC(Indivisual Contributor; マネージメントをしない専門職)としては、技術力が高ければ高いほど、専門知識があればあるほどダイレクトに仕事の成果に直結する会社なので、そのあたりは非常に楽しいです。「毎日楽しく開発したい」というのが私が仕事にもっとも期待することであり、それが達成できているかぎりは現職にいるでしょう。 2017年9月に生まれた子供(ハンドルネーム: mfx)もいまや4歳になり、どんどん口達者に
GitHub ActionsからGitHub wikiを更新したいことがたまにあります。たとえば、何かのメトリクスを見やすく整形したものなど、repositoryのデータを何らかの形で加工したドキュメントを作りたいときです。コード生成したmarkdownドキュメントをコミットしてもいいですが、それよりはシンプルで運用が楽です。 今回は、GitHub repoで管理する原稿の文字数(など)を継続的に見れるページを作ると便利かなと思って作りました。自分一人だったらローカルで適当なツールを叩けばいいですが、同repoを見れる編集者にも共有したいとなると独立したページがあるほうが便利ですからね。 リポジトリはこんな感じです。 github.com 基本的には、 actions/checkout を使って "${{ github.repository }}.wiki" をcloneして編集してpus
クリスマスプレゼントで妻からもらったKindle Fire HD 10"が思いの外よくて快適だなという話です。 Kindle Fire HD 10" (amazon.co.jp) これまで電子書籍リーダーとしてはE-InkのKindleをここ数年ずっと使っていて、それはそれで軽量&電池長持ち&目に優しい仕様で十分に満足しているのですが、E-Ink端末は画面が小さくて固定レイアウトの書籍がとても読みづらいのです。というか、あまりに読みづらいので買っても読まないし、だんだん買わなくなってきたというのが実情でした。 物理書籍にはペラペラめくりやすいなどのいい面があることは重々承知しているのですが、とにかく物を増やしたくないし、手軽に手に取れる端末とちがって物理書籍を読む心理障壁もだんだん上がってきたなかで、(統計はとってませんが感覚として)電子書籍のほうが読了する率が上がってきていました。ここ数
最近はお仕事で h2olog を開発しています。これはC++で書いたBPF toolsで、H2Oに組み込まれたUSDTが出力するイベントをトレースするためのツールです。 具体的にはこんな感じで使ってH2OプロセスをトレースしてJSON-Linesにして出力します: # QUICを有効にした H2O serverが起動しているとして $ sudo h2olog quic -p "$(pgrep -o h2o)" {"type":"accept","seq":1,"conn":2,"time":1594471121930,"dcid":"9546e6940ebeec5f"} {"type":"crypto-decrypt","seq":2,"conn":2,"time":1594471121930,"pn":0,"decrypted-len":1236} {"type":"quictrace-
追記 (2021年12月): このエントリを書いた当初、1年経過時点では完全に回復しきったとは言い難くて、エディタのフォントサイズを16ptくらいにしていたのですが、3年たってようやく完全回復してフォントサイズを14にしました。長かった…。 アデノウィルスによる流行性角結膜炎という病気がありまして、これに保育園〜子供経由で感染した*1結果、しばらく視力障害になりました。 一年半経過した今はほとんど回復していますが、一番悪いときでメガネをしていても両目ともに視力0.1程度といった様相でした。これは角膜が濁っているので、目を凝らしたり近づけたりしてもはっきり見えたりはしません。この視力だと、ディスプレイを使った仕事はまともにできないし、スマホの文字を読むことすら困難で、日常生活にも支障がありました。この視力障害が重い状態が半年は続いて、そのあと1年くらいかけて徐々に回復したわけですが、けっこう
git tips: git push $remote HEAD で現在のブランチを$remoteにpushできて、コマンドラインでgitを使うときはよく使います。 ところで、この HEAD の実体はファイル(.git/HEAD)なので、ファイルシステムが大文字小文字を無視する(case-insensitive; e.g. macOSのデフォルト)ときは、 git push $remote head でも動いてしまいます。しかしこれを習慣にしていると、大文字小文字を無視しないファイルシステムで動かずハマることがあります(というかまあ、ハマってしばらく悩みました)。普段から HEAD とタイプする習慣にしておくとよいと思います。
最近仕事で h2olog を開発しています (H2O の QUIC 層をトレースしよう | Toru Maesaka) 。これはh2oのUSDT からデータを取り出すBPF toolです。その関係でBPFとかBCCをいろいろ触ったので、BPF toolsの開発に必要なことを書いておきます。 なおBCCまわりはまだ細かいところの作りが荒いので、思わぬトラブルがあるかもしれません。幸いpull-reqのレビュー&マージもかなり早いので、気になったところはどんどん直していっています。 ToC ToC 開発環境のセットアップ トレース対象のプログラムのdtrace supportを有効にする トレース対象のプログラムのUSDTを確認する 開発する 用語集 BPF BPF module (BPF program) BCC (iovisor/bcc) BPF verifier eBPF USDT bp
追記: ツールはこちらの getkernel がメンテされているのでこちらを使うほうがいいでしょう! ubuntu用のカーネルをとってくるやつ - w_tl00’s blog Ubuntuなどのディストリは、ディストリに同梱されたカーネルを別のバージョンに差し替えることができます。開発者の視点では、たとえばLinuxのBPFを使ったツールを開発しているときはカーネルのバージョンを本番に合わせたほうがよかったりします。 Ubuntu用のカーネルのパッケージは https://kernel.ubuntu.com/~kernel-ppa/mainline/ のあたりにあって、適切なアーキテクチャのものをダウンロード&インストールするだけなんですが、ダウンロードするのがわりと面倒くさいのでスクリプトを書きました。 ./get-kernel 4.19.106 などとするとカレントディレクトリにパッケ
フィルターバブル (filter bubble) とは、「インターネットの検索サイトが提供するアルゴリズムが、各ユーザーが見たくないような情報を遮断する機能」(フィルター)のせいで、まるで「泡」(バブル)の中に包まれたように、自分が見たい情報しか見えなくなること。 Wikipedia/フィルターバブル 世界の真の姿をみるためにはフィルターバブルに陥らないようにしなきゃな!と数年前までは思ってたんですが、最近はQoL至上主義に傾いてきて、SNSなどでもミュートをどんどん活用するようになりました。 自分と主義主張が異なるという理由でミュートしたりはしません。また「この話に付き合うのは大変だけど付き合うことによって世界を少しでも良くできる」と思えれば全然いいんです。しかしそうでない場合は議論自体まったくの無駄かもしれません。 どうやっても分かり合えない人たちはいるし、そういう人たちを議論によって
UbuntuなどにむけたChromeバイナリのインストール方法をググると以下のようなコマンドを指示されるわけですが wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' sudo apt update これをせずに、できればコマンドラインで配布されているChromeバイナリのバージョンを調べたかったんですが、 https://dl.google.com/linux/chrome/deb/ は404だしぐぐってもあまり情報はないしどうしたものかと
2019年のまとめです。 前半3Qはウェブアプリのバックエンドやフロントエンドを開発し、最終1Qで転職してC言語でHTTPサーバーを開発するという感じに大きく方針を転換した年でした。 転職にあたっては「毎日楽しく開発をしたい」「生涯現役のプログラマーでいたい」というのを基本的な軸として今後のことを考えていて、これから中長期的に投資するのはどういうスキルにするべきかなあと考えた結果です。 また、それはそれとして2017年から子育てをしていて、子供が保育園から風邪をもらってくると私と妻が仕事を休んで世話をし、そうこうしてる間に親(私 or 妻)に風邪がうつってしばらく仕事を休む、といった感じで思うように仕事を進められない1年でもありました(これは2018年からそういう状況)。来年はもうちょい丈夫に過ごせるといいなあと願ってやみません。 あとはざっくり今年書いたブログ記事を眺めると gfx.ha
writev(2) は バイト列の配列を1つのシステムコールでまとめて書き込めるやつです。 NodeJS的には、ArrayBufferView (典型的にはtyped array)の配列を fs.writev() (または fs.writevSync() や FileHandle#writev())に渡せるようなインターフェイスになってます。もっとも、このwritev(2)へのインターフェイス自体は2015年にWriteStream用のprivate APIとして実装されて*1、今回はそれをfs moduleで正式に使えるようにしたってだけみたいですけどね*2。 例: "use strict"; const fs = require("fs"); const te = new TextEncoder(); const iov = [ te.encode("Hello, "), te.enc
次のページ
このページを最初にブックマークしてみませんか?
『Islands in the byte stream』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く