異なるAWSアカウントにAPIを提供して、そのアカウント限定でAPIを実行出来る、IAM認証による簡易な制限の方法

あまり大規模にスケールする方法では無いですし、破られてもDoSされる程度の問題しかない場合なので使っている方法なので、大規模だったりものすごい機密情報を扱ってる場合は真似することはオススメしません。 前提 何かしらの便利機能を提供するAPIサーバを開発しています。これを他のプロジェクトに利用してもらいたいですが、 AWSアカウントをそれを使うプロジェクト全てで共有するとリソースが膨大な量になって錯乱しますし、変にいじれる権限を初心者も含む全員に与えたくないです。 よって複数のAWSアカウント(この「アカウ

:
Amazon CloudWatchの空のロググループを削除するワンライナー

注意 長いこと起動しっぱなしでろくにログを吐かないサービスの場合、ロググループを更新時などに必要とするけれど、ストリームは現在ないなどと言った状況が存在します。 その場合ロググループを削除すると久々の更新時にデプロイが失敗するようになります。 問題 せっかくAmazon CloudWatchのログの保持を失効するように設定していても、ロググループはストリームが空になっても残ってしまいます。 お金的にはおそらく問題ないのですが、トラブル解決時にどのログを参照すれば良いのか分からなくなって混乱してしまいま

:
commitlintを拡張して自前のルールを組み込んでありがちなコミットメッセージのミスを防ぐ

今日コミットログを見返していたら句点で終わるサブジェクトのコミットログを見つけてしまいました。 fix: web-mode-comment-indent-new-lineを一時的に無効化。 · ncaq/.emacs.d@47b2384 一行目のサブジェクトは句点無しで統一したいです。少なくとも英語コミットにおいては.は無しで統一しているのでどちらかには寄せたいですね。 subject-full-stopは1文字限定 既に使っている、 conventional-changelog/commitlint:

:
yarn v4からはバンドルされたJavaScriptプログラムであるreleasesやpluginsをGitにコミットする必要が無くなります

まだv4の正式リリースはされてないですし、 stable向けに完全に確定したわけでは無いですが。最近のコミットではrcとしてv4のタグが付いているため、次はv4になってこうなるでしょう。 berry/CHANGELOG.md at master · yarnpkg/berry を見る限り、メジャーバージョンの更新はレガシーAPIの廃止などがあるためでしょうね。 いい加減yarn berry移行を進めていこうとしています yarn v1はいくらなんでももう古いです。 また懸念点の一つであった、 GitHub

servant-clientの新しいバージョンではステータスコードのチェックが厳密になっていました

Postのような汎用的な名前でなく厳密なPostCreatedなどを使えば解決。 問題 servant-clientを、 GHC 9.2でコンパイルするために、まだリリースされてないGitHubに上げられているバージョンに切り替えたら、とあるAPIが常にFailureResponse例外になって呼び出せなくなりました。 原因 そのAPIは200ではなく201で成功を表します。 最新バージョンではどこで決定しているのかは、 Proxyで型経由で呼び出していて複雑さに追うのをとりあえずやめたのですが、

:
Bootstrap 4でモバイル版ではドロップダウンメニューをデフォルトで展開する

注意 未だにBootstrap 4.6.2に留まっている怠惰な人の話なので、 Bootstrap 5ではより良い簡単な方法があるかもしれません。 全ページに各記事の年別一覧ページへのリンクを追加することにしました メニューが乏しくて寂しいのと、インデックスページにリンクを追加しないとGoogleくんがかなりの記事をクロールしなくて良いと判断するためです。特に何故か2017年の記事がなかなかクロールされません。サイトマップはちゃんと書いているのに。 これがメニューにズラッと横並びするのは流石に異様なので

このサイトのホスティングを自宅サーバからCloudflare Pagesに移行させました

このサイトは2月末までは自宅サーバでホスティングしていました もともとこのサイトはGitのログを見る限り2014-03-24に作ったらしいです。最初は単なるプロフィールと各SNSへのリンクを貼っていただけでした。 次第にHakyllを導入して日記を書くようにしたり、日付だけだと無理があるなと思ってまあ時刻だと被らないだろうと拡張していました。 当初は自宅サーバにHTMLを直接置いて、それをnginxだけで素朴に配信していました。一応早期から無料TLS証明書を取得してHTTPSで配信などは行っていました。

:
GHC 9からTemplate Haskellでinstanceを定義する時に相互参照させるにはまとめて定義する

前提となるソースコード TH.hsファイルに以下のような定義を書いて、 {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} module TH where import Data.OpenApi import Language.Haskell.TH deriveSchema :: Name -> DecsQ deriveSchema name = [d| insta

NoFieldSelectorsを有効にするとmakeFieldsが使えなくなる問題のワークアラウンド

前提 NoFieldSelectors を使うと、一々フィールドにコンストラクタのプレフィクスを付けなくても良くなります。 しかしlens のmakeFieldsなどは、コンストラクタのプレフィクスか_でフィールドが始まることを期待しているため、プレフィクスを無くしたらアクセサを作ってくれなくなります。 そもそもNoFieldSelectorsがあればlens要らないのではとか思わなくはないですが、まだRecord Dot Syntaxでは、ネストしたデータを更新する実装が自動で生えてくるわけではなさそう

Emacsのlsp-modeでアクションが1つだけでも実行するか確認する

問題 Emacsのlsp-modeでlsp-execute-code-actionコマンドを実行すると、通常は利用できるActionたちがリストとして出てきて、選択して利用することが出来ます。自分の環境だとhelmインターフェイスで選択します。 しかし使えるActionが一つだけだと自動的にそれが実行されてしまい、実行するか悩むのも出来ないし、何が実行されたかも分かりません。 Actionが「良くする」ものばかりなら問題ないのですが、例えばJavaScriptでfunction定義をアロー関数に変えたり、

TypeScript 4.9からはsatisfies演算子でパターンの網羅性をESLintと共存しつつ簡単にチェックできる

背景 私はAWS CDKを利用する時にデプロイステージをよく以下のように分けています。 export const stages = ["deve", "stag", "prod"] as const; /** * 開発用、本番用などを分けるステージ * {@link https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Stage.html} は一切関係がない */ ex

Hakyllで配布するファイルとシステムファイルのディレクトリを分ける

現在のこのリポジトリ、 ncaq/www.ncaq.net at 455bf52284b0ceb0f1235478efc582337fc848e9 には多大な設計ミスがあり、それが様々な微妙な問題を引き起こしています。 これまでこれを解決するのは極めて面倒くさく、一応動いているこのリポジトリを修正するのは割に合わないと思っていましたが、考え直すと割とそこまで困難ではないなと思い返したので、細かく修正していきます。 これらの修正は殆ど出力するHTMLを変更しないため、壊れていないことを確認するのは割と容易なは

:
Windows 11で常にすべてのアイコンを通知領域に表示する方法

注意 この方法を最初に使ったときはうまく行ったのですが、最近はちゃんと機能しなくなりました。理由は不明です。わけがわからない。 概要 単に調べたら解決方法を発見しただけなのですが、私がWindows 11にしてから見つけるのに時間がかかったので、他の人が探しやすいようにインデックスを貼っておきます。 問題 Windows 10までは、通知領域/タスクバー/タスクトレイに現在起動していて、通知する情報がある全てのプログラムを省略せずに表示する、常にすべてのアイコンを通知領域に表示するというオプション

:
中規模のReact/JavaScriptアプリケーションをTypeScriptに移行するための第一歩を踏み出せました

やりたいこと 中規模のReact/JavaScriptアプリケーションを徐々にTypeScriptに移行する。 2018年ぐらいからやらなければいけないと主張していましたが、納期を問題に先延ばしにされ続けて、ついに新体制で開始できるようになりました。 結構面倒なことになりそうだったので、作業メモを取ることにしました。 問題 fd '.jsx?$'|wc -lによるとJavaScriptファイルは280個。 fd '.jsx?$'|xargs wc -lによるとJavaScriptコードの総行数は495

Emacsでhelm-grep-agでジャンプした後xref-pop-marker-stackで履歴マーカーを辿って元に戻る設定

やりたいこと helm-grep-agなどでプロジェクト内部を移動した後、 smart-jump-backやpop-tag-markで元の場所に戻りたい。 現在はスタックに場所を積んでいないため、元の場所に戻れないか、 lsp-modeなどで積まれたかなり昔の位置に戻ってしまう。 方法予測 hookかadviceでhelm-grep-agで移動するときにstackに積む動作を行えば実現可能なはず。 smart-jump前提はやめたほうが良さそう 最初は、 jojojames/smart-jump

:
Windowsの仕様に苦しみながらWindowsのKeyhacにXMonadのrunOrRaiseを移植しました

リポジトリにあるソースコードはこちら。 keyhac-config/config.py at master · ncaq/keyhac-config やりたいこと Linux向けの高度にカスタマイズできるウィンドウマネージャである、 XMonad向けの関数である、 runOrRaise があります。 これをWindows向けの、 Keyhac - Pythonによる柔軟なキーカスタマイズツールに移植したいです。 runOrRaiseは何をする関数なのか? raise関数 まずraise関数というもの

:
Windowsで謎のエラーポップアップが出たときに、エラーを出している原因のプロセスを調べる方法

概要 windows 7 - Runtime Error: R6025 -- Unable to see location of program causing the error - Super User を読めば解決します。 背景 Windows 11でドライバを更新した後再起動すると、運悪くブルースクリーンエラーになってしまい、次から起動すると以下のようなエラーが出るようになってしまいました。 Cannot open file StrRes.xml タイトルがUUID(GUID?)だから何