Kiritoru: 見ているページをScrapboxでブクマをAndroidの共有メニューから簡単にできるように

scrapit.vercel.app……というのを作った。ソースコード: GitHub - aereal/scrapitblog.sushi.moneyPCのブラウザではこういうブックマークレットでブクマしている一方、Androidで見ている時にぱっとやる方法がなくて、ブラウザのブックマークに入れておき後でP…

イニシャルで特定される都道府県

anond.hatelabo.jpルール: ヘボン式に倣う 広域地方公共団体の区別はしない 大阪府なら大阪、広島県なら広島、とする (含めると都や道などが2020年現在で識別されてしまうため) 使ったコードは以下: #!/usr/bin/env ruby require 'abbrev' prefs = DATA.each…

AWS CDKアプリを作る時のテンプレートリポジトリを作った

AWS CDKの昨今 最近は仕事でもプライベートでもAWSのリソース配備にはAWS CDKを使っている。 ちなみに最近はCDK for Terraformが出るなど、AWSに限らないツールキットを指向している雰囲気があるので「仕事は {ここにAWS以外のクラウドプロバイダが入る} だ…

公開されたシンボルにJSDoc/TSDocを書くことをESLintでルール化したい

公開しているライブラリほどじゃないにせよ、チームで開発しているTypeScriptで書いたコードにちらほらドキュメンテーションしていきたい。 それESLintで とりあえず今までろくに書いていなかった部分はいまさっき書き足すPull Requestを作ったけれど、今後…

react-type-safe-render: 第二引数にnullを許容しない安全なReactDOM.renderの型定義を書いた

@types/react-domで `ReactDOM.render` の第2引数 (container) はnullを許容しており、`document.getElementById` の返り値の型に合わせているそう。 しかしランタイムがnullを許容しているわけではなくnullを渡すと実行時例外になる。TypeScriptを使ってい…

株式会社はてなを退職

2020年8月14日付けで退職する運びとなった。 入社が2012年なので勤続丸8年を迎え社内でも古株の方になってきつつある。Web業界にしてはわりと長くいたほうだと思う。 自分自身でもこんなに長く籍を置くとは思っていなかったので驚いている。退職を決めた理由…

JWEは毎回ランダムなInitialization Vectorを使用するので得られるトークンは毎回異なる

タイトルですべて言い切ってしまった。JWE (= JSON Web Encryption) にはInitialization Vectorというフィールドが含まれており、これは暗号化処理ごとにランダムな値が使われる。 なので、同じペイロード・同じ秘密鍵を使って暗号化しても暗号化したトーク…

cloud.google.com/goのリクエストがX-Rayでトレースできないので土日を潰して調べて完全に理解した

cloud.google.com/goはGo向けのGCPのAPIライブラリ。一部を除き単にHTTPリクエストを送っているのでX-Rayでトレースする *1 のは造作もないだろうと思ったら思いがけず難航し、だらだら調査していたら2日かかってしまった。詳しいメモと結論はScrapboxにまと…

GAEのapp.yamlに秘密の情報を含めたい時

app.yamlに公開したくない情報を含める - aereal-techより。環境固有の値とかapp.yamlに書いてコミットしたくないけど、CD = Continuos Deliveryするためには必要でどうしよう、という時に思いついた策。valid JSON is valid YAMLなので、雛形となるJSONをリ…

人間が関わりあう時間の価値を最大化するためのオートメーション

コードを書かない問題解決 ソフトウェアエンジニアとしての価値観とか仕草みたいなのはだいぶid:hitode909さんの影響を受けており、その中でも自分が大きく変わったと思うのは、問題解決の手段としてソフトウェアにこだわりすぎないという視点を手に入れたこ…

aereal.orgをNext.jsのSSGとContentfulに移行した

VPS→Cloud Bucketのホスティング機能→Firebase Hosting + Gatsbyという変遷を辿っていた自分のサイトをNext.jsのSSG (= Server-side generation) とHeadless CMSであるcontentfulに移行した。aereal.org最近出たNext.js 9.3でSSGサポートがちょっと良くなっ…

趣味プロダクトのデザインドキュメントをScrapboxに書き始めた

scrapbox.io仕事と趣味が曖昧な方の人間なのであれこれ触ったり作ったりするのが好きなんだけど、これまでは作ったものをGitHubに置いてREADMEを書いてそれだけで終わっていてなんかもったいなあと感じていた。GitHubに置くからにはと、リポジトリをいきなり…

ECS taskの停止理由をMackerelのグラフアノテーションとして記録する

github.com記録するLambdaを作るAWS CDKのリソースライブラリを作った。いますぐ npm i -S @aereal/cdk-ecs-task-retirement-events-mackerel-annotator !こういうアノテーションが作られるモチベーションと利点はScrapboxに書いたように: [ECS]のtask停止は…

zsh: /usr/libexec/path_helperから逃れる方法 2020年版

zsh

macOSには /usr/libexec/path_helper というスクリプトがあり、これは /etc/zprofile で実行されOSがPATHをよしなに設定するというものだが、ユーザーが追加したパスより優先度高く追加するようになっており、かなり傍迷惑。 /usr/local/binなどより任意のパ…

2019

仕事 はてなブログ タグ staff.hatenablog.com initial commitの日付が1年くらい前だった。ほぼかかりきりだったので1年以上やっていたことになる。 上から下まで本当にいろいろやれて良かった。要素技術やらキーワードを挙げ連ねると: Next.js TypeScript G…

VSCodeでJSONを編集する時にJSON schemaを指定して補完を効かせる

JSON editing in Visual Studio Codetsconfig.jsonなどはデフォルトで補完が効くが、これはsettings.jsonで追加できる。たとえばrenovate.jsonを編集する時はこういう設定を入れておくと便利。 "json.schemas": [ { "fileMatch": ["renovate.json"], "url": …

SlackとGitHub Deployments APIで疎結合なChatOpsを実現する

this.aereal.orgDeployments APIが出た頃に上記記事を書いてもう5年が経とうしている中、最近いろいろなグッズが進化してタイトルにあるような良い塩梅のChatOpsが実現できそうなのでそれのメモ。 登場人物 GitHub Deployments API 「このリビジョンをデプロ…

1PasswordのChrome拡張どれ使えばいいのか問題

結論から言うとtouch IDを使いたいなら「Xじゃないほう」 1Password 拡張機能 (パソコンのアプリが必要) - Chrome ウェブストア macOS/Windowsで動く1Passwordアプリとプロセス間通信するバージョン vaultにDropboxなどが選べる 正確にはこの拡張自体はvault…

相対パス、絶対パス、相対URL、絶対URL

どう違うのか微妙にわかりづらいので表にした。 URL 相対パス 絶対パス 相対URL 絶対URL /hoge n Y Y n hoge Y n Y n file:/// n n *1 n Y https://example.com/ n n *2 n Y 便宜上、path-rootlessあたりを「相対パス」、absolute URIでないものを「相対URL…

『入門 監視』を読んでMackerelの良さを改めて実感した

読んだ。新サービスローンチ前に読んでおいてよかった。 目新しい話題はあまりなかった なんとなくこうだよね、と思っていることが確認できた 自信がなかったり理解が曖昧だったところを確認できた メッセージングキュー (はてなでいうワーカー) の監視メト…

typescript-eslint: monorepoでVS Codeからtsconfig.jsonのパスを正しく認識させる

typescript-eslintは型情報が必要なルールのためにプロジェクトの場所をparserOptions.projectで指定できる。monorepo構成の場合かつ相対パスで指定している時、 yarn workspace front eslint ... のように実行する場合は期待通りtsconfig.jsonを見つけてく…

制限されたIAMロールをAssumeRoleして安全に削除操作を実行する

AWS

三行 怖い操作をする時は許可するAPIコールを制限したIAMロールをAssumeRoleすれば安心 IAMユーザーにアクセス許可を委任するロールは同じAWSアカウントを指定することもできる 怖い操作をする時は許可するAPIコールを制限したIAMロールをAssumeRoleすれば安…

あなたとJavaダウンロード

#builderscon tokyo 2019で「自動作曲入門」について話した

自分のトーク speakerdeck.com デモはこちらです: musik 社内勉強会でやったトーク (『Scalaで自動作曲の練習』を社内勉強会で話した - Sexually Knowing) をベースにしています。 自分は資料を使い回して登壇することに強い抵抗を感じるので心苦しくあった…

Google App Engine Standard EnvironmentにScalaで書いたWebアプリケーションをデプロイ

してみた: GitHub - aereal/gae-scalaGAE SE (Google App Engine Standard Environment) のいわゆる2nd generationと呼ばれるgVisorで構築された世代でJava 8/11が使える。 GAE SE (Google App Engine Standard Environment) ではgVisor上で実行されるランタ…

#builderscon 2019で「自動作曲入門」というトークをします

8月29日の前夜祭から始まるbuilderscon tokyo 2019で「自動作曲入門」というトークをします。 以前、このブログで紹介したScalaで実装してみたものを発展させたものをベースにしながら「そもそも作曲という行為をソフトウェアエンジニアの視点で再解釈すると…

SVGから複数のfaviconを出力したり開発環境用に色を変えたりする

faviconやらapple-touch-iconやらいろいろ必要なアイコンが多い問題 開発環境と本番でfaviconを区別して事故を防ぎたい問題 ……などの話題がアイコン界隈にはあります。SVGを使ってどちらも解決してみよう! のコーナーです。 必要なアイコンを生成する icon-g…

BuildKitによるレイヤキャッシュのtargetは変数 (ENV, ARG) を展開してくれない

feature request: allow variables in the `RUN --mount=type=bind` values · Issue #815 · moby/buildkitRUN --mount=type=cache,target=${APP_DIR}/pkg/cache go get -v と書いても `${APP_DIR}` という名前のディレクトリが作られるだけです! びっくり! ✘…

HTTP関連のRFCで現れる `N#token` はカンマ区切りのリストを表す

1#header-token みたいなのは「少なくとも1個以上のheader-tokenがカンマ区切りのリストとして現れる」と読める。出典: A #rule extension to the ABNF rules of [RFC5234] is used to improve readability in the definitions of some header field values.…

aws-xray-sdk-nodeを使う時はexperimentalを入れよう、じゃないと最近のnpmパッケージとの組み合わせだと動かないぞ

タイトルがすべてです。AWS X-RayをNodeアプリケーションに組み込むaws-xray-sdk-nodeというパッケージがありますが、これを使う時はlatest (何もバージョン指定しないとこれ) ではなくexperimentalを入れると良いです。 yarn add -D aws-xray-sdk@experimen…