:
AWS CDKでcurrentVersionOptionsを設定してもcurrentVersionのgetプロパティを実行しないと生成されない

問題 AWS Lambdaでコールドスタート対策にProvisioned Concurrencyを設定しておきたいが、【AWS CDK】Lambda の Provisioned Concurrency を設定する | DevelopersIO を参考にして、 Functionの、 currentVersionOptionsの、 provisionedConcurrentExecutionsで設定しても、 addAliasで設定しても効果が発揮されません。 ちなみにcurrentVersion.addAli

AWS Lambda Node.jsのnode_modulesの肥大化に立ち向かったが、NestJSがガンガン動的なrequireをしてきて困った

問題 NestJSのようなバンドルしてくれない動的なrequireを含むTypeScriptプロジェクトをAWS CDKでAWS Lambdaにデプロイする - ncaq でデプロイに成功したプロジェクトがあるのですが、現在Node.jsのLambdaのnode_modulesが膨れ上がってしまい、 AWS Lambdaの制限に引っかかってデプロイ出来ない。 制限に引っかからないようにnode_modulesをLayerとして分離しているが、それでも制限に引っかかってしまう。 11:05:08 | UPD

CodeBuildがSlackに通知するデータが少なすぎて混乱するのでChatbotを諦めてLambdaで処理する

問題 CodeBuildがAWS Chatbot経由でSlackに通知してくるビルド結果の情報が少なすぎる。 Bitbucket(CircleCI)との比較 Bitbucket CodeBuild 具体的なトラブル コミットAに続けてBをした時、 Aの時点で修正が完了しているのに、 Bで問題が起きてテストが失敗したので、 Aで修正が完了していることに気が付かなかった事案がありました。 また私もコードレビューなどを行ったりしてもらう時に、 PRのCIが通ってるのかSlackのログを見るだけ

NestJSのようなバンドルしてくれない動的なrequireを含むTypeScriptプロジェクトをAWS CDKでAWS Lambdaにデプロイする

JavaScriptとかPython見ると分かるけど依存関係を動的に解決することを許した時、それは地獄への直行だ — エヌユル (@ncaq) July 31, 2022 問題 NestJSがnest buildで吐き出すjsファイルはバンドルされていないので、色々入っているnode_modulesを参照できる環境でないと実行に失敗します。 よって1ファイルにしてAWS Lambdaとかで実行するのにはバンドルが必要だと思い、 aws-cdk-lib.aws_lambda_nodejs modul

ElectronのテストをPlaywrightで行う時Linux環境だとMissing X server or $DISPLAYで動かなかったのを解決

問題 microsoft/playwright: Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.を使って、 Electronの自動テストを行う計画を立てました。 前はSpectronで行ってたのがElectronをちゃんとバージョンアップしたら爆散してしまいました。 Spectron 非推奨通知 | Elec

Gitのuser名を接続先のリポジトリによって変更する

問題 これまで怒られたこと無かったので会社のリポジトリにもncaq <ncaq@ncaq.net>でコミットしてたら、「将来知らない人が見たら誰か分からないので会社のメールアドレスに変えてください」と言われて、それも確かにそうだなと思うので変更する。 Gitのauthorは複数名で名乗れれば良いのに。そしたら少なくとも名寄せ出来ない問題は解決する。 探査 プロジェクト一つずつlocalなgit configしていくのは絶対忘れるからやりたくない。 なのでgit-configのinclude

amazonkaとservant-clientを組み合わせてIAM認証を有効にしたAPI Gatewayのカスタムドメインにリクエストを投げる

問題 Haskellにはamazonkaという非公式のAWS SDKがあります。これはPython向けのSDKであるBoto3から自動生成されたものなので、大抵の操作を行うことが出来ます。 しかしAPI GatewayをAPIの生成とかで操作するならともかく、デフォルトでexecute-apiになるAPIを呼び出す方法がよく分かりませんでした。 もちろん単純なAPI Gatewayならば単にHTTPで呼び出せば良いだけなのですが、今回API Gatewayを入れたのはIAM認証をしたかったからなので、認証

:
poetryで管理しているPythonパッケージのバージョンを一つの場所だけで定義する

問題 pyproject.tomlの[tool.poetry]でのversion、 __init__.pyでの__version__、 FastAPIのversionひいてはOpenAPIでのバージョン定義をそれぞれ別に行いたくない。 別々に書き換えるのは面倒だし、絶対に書き換え忘れのミスが生まれる。 一つの場所だけで定義して、それをみんなが参照するようにしたい。 解決法 How to get version from pyproject.toml from python app? · Issue #

Conventional Commitsに移行して、commitlintをグローバルに適用しました

自己流コミットメッセージをやめることにしました 今までの自己流コミットメッセージをやめることにしました。 これまでの自己流コミットメッセージは以下の記事で解説しています。 Gitのコミットメッセージでめっちゃタイプミスをするのでそろそろタイプミスを検出するhooksを書きました - ncaq 自己流コミットメッセージの確認スクリプトの最終版はこれで、 initなどへの対処を少し行っているのですかね。 commit-message-in-style at b216fa1ccd860308c60b6d6949

react-reduxをv5からv8にアップデートした

react-reduxの破壊的変更まとめメモ。 文脈として、 2019年9月にやろうとして破壊的変更があって後回しとしていて、そのまま自分がプロジェクト離れてたから今の今まで後回しとなっていた。 Reduxの開発者ツール周りの整備をするにしても、まずここまで古いバージョンを使ってたら問題が発生しても、問題の箇所の切り分けが困難だろうという判断の元、アップデートを行うことにした。 破壊的変更まとめ メジャーバージョンアップ以外で破壊的変更は行われてないだろうという楽観的な予測の上、現在v5でv8にする差分の

サイトの記事一覧を年度別に分割しました

この記事を書き始めた現状はこのサイトの全てのentry記事はトップページに全部並んでいます。 500記事ぐらいあるのにサイズやパフォーマンスは大丈夫かというと意外と大丈夫です。サイズ的にはテキストだけなので520KBしかありません。パフォーマンスもシンプルなCSSだけを使って特別なルールは設定していないのでそんなに重くありません。 しかし複数の理由からentryを分割したいと思うようになりました。 だいたい年単位ぐらいで分割したい。 Google検索が無駄にトップページを表示することが多い トップページに

serversessionのアップデートで新しいpersistentに対応した時の格闘記録2

serversessionのアップデートで新しいpersistentに対応した時の格闘記録 - ncaq の続き。 この形式はZennとかでよく見るスクラップだなと気がついたので、次からはタイトルはスクラップとかにしたいですね。ここはZennではありませんが。 相も変わらず、 yesodweb/serversession: Secure, modular server-side sessions. の新しいLTS対応を行っていて、そこで障害になるpersistentのアップデートと戦っています。 今回のステ

WriterでもControl.Monad.Trans.Writer.CPSは典型的なスペースリークはしない

Writerを使いたいけどスペースリークが怖い Writerを使ってはならない - Qiita に書かれているように、 HaskellのWriterは長年スペースリークの元になるので敬遠されてきました。 しかし、私はWriterのインターフェイスをとても使いたいのでもやもやしていました。 ReaderT パターン(翻訳) - LugendrePublic ではスペースリークの危険性があってもWriter使った方が早かったから使ってると書いてありましたが、それでもスペースリークの危険性を考えながら書くのはな

PowerShellで改行せずにファイルに追記する方法

前提 GitHub ActionsでWindowsのPowerShellを使う必要がありました。まあWindows向けのrunでもbashを指定できるみたいなんですが、せっかくあんまりCIで触らないWindowsなのでネイティブシェルであるPowerShellを使ってPowerShellに親しみたいという意図がありました。 やりたいこと ファイルに改行せず文字列を追記したい。 Linuxならば echo -n "foo" >> bar.txt のようにecho

serversessionのアップデートで新しいpersistentに対応した時の格闘記録

前提 これをやった日は3時間ぐらいしか寝てなくて朦朧としてました。なので相当グダグダやっていて、普段ならすぐに解決できるタイプの問題の解決にも手間取っていました。 やる作業 yesodweb/serversession: Secure, modular server-side sessions. を新しいLTSに対応させる。これも昔私が対応させたのですが、今はLTS 15になっています。 persistentのライブラリ的には2.10.5.2から2.13.3.5へのアップデート。多分。 何故必要か

:
Galaxy Z Fold 3 5Gを今更レビュー

Galaxy S22 UltraとGalaxy Z Fold3 5Gのどっちを買うか悩んでいました - ncaq で悩んだ末に、 Galaxy Z Fold 3 5G を購入しました。 2022年4月12日から使っています。 Galaxy Z Fold3 5G着弾したセットアップするか pic.twitter.com/Np2vYHhnrp — エヌユル (@ncaq) April 12, 2022 日本での発売日が2021年10月なので極めて今更感がありますが、一応レビューを書いておきます。 概要

genkernelで作成したinitramfsがOut Of Memoryで起動しないことへの対処

背景 私は今のラップトップPCでは以下のようなコマンドでinitramfsを作っていました。 alias genkernel-update='sudo genkernel --no-lvm --btrfs --luks --firmware initramfs && grub-update' カーネル直接起動ではなく、 initramfsを使っている理由は、 rootのBtrfsによるソフトウェアRAIDと暗号化を使っていることです。 dracutではなくgenkern

Galaxy S22 UltraとGalaxy Z Fold3 5Gのどっちを買うか悩んでいました

悩み Galaxy S22 Ultra と Galaxy Tab S8 Ultra の組み合わせを買うか、 Galaxy Z Fold3 5G を買うか。 悩んでいます。 S22無印は小さいしメモリ少ないからなしですかね。 S22+なら小さくないのでメモリに目をつぶってありだったんですが、日本では発売しないのでダメ。 Galaxy Tab S8 UltraはGalaxy Tab S8+で良いかもしれません。 Fold買っても結局Tabは買うかもしれません。 前提 MNOとの高額な回線契約はしない。 仮

tidy-html5が5.9バージョンあたりからpreタグの改行を消してしまうので加工した内容を使わないようにする

背景 このサイト、 ncaq/www.ncaq.net: ncaq website はHakyllで構築しています。 そして最終的に出力するHTMLが正しいかどうかを、 htacg/tidy-html5: The granddaddy of HTML tools, with support for modern standards を通すことでチェックして、ついでにHTMLとXML(feed)をインデントしています。 問題 tidy-html5の5.9あたりからは以下のバグが発生しています。 tidy

Firefoxでクオートキーがクイック検索に奪われてしまうことへの対策

日本語記事がないので一応記述しておきます。 問題 いつからのバージョンか知らないですが、 Firefoxでクオートキーを押すと、クイック検索 (リンクのみ) が起動してしまいます。 ページ内検索 | Firefox ヘルプ これは、 Surfingkeys などの拡張機能を使ってクオートで何かしらの操作をしている人にとっては困ることで、拡張機能では上位レベルのキーを奪い取れないようです。 自分は選択したものを検索するのに当てていたので困りました。 解決 ほぼ、 Firefox 63: Disable

:
helmの更新でhelm-agが壊れましたが、helm公式のhelm-grepがripgrep対応していたのでそちらに乗り換えました

問題 emacsorphanage/helm-ag: The silver searcher with helm interface というhelmでgrep串刺し検索を実現するソフトウェアを、 ripgrepを使うように設定して長年使っていたのですが、今日helmを更新したら壊れてしまいました。 ASCIIのエスケープシーケンスをそのまま表示してしまいます。 調査 調査するのにも無理矢理カスタマイズしているし再現が難しいな、まずはhelmのコアの更新を見て何処で壊れてるか見るかと調べたところ以下のi

:
Windows 10とWSL2のセットアップログ

久しぶりにWindowsのセットアップを行いました。 2021-12-08から書き始めていたようです。今更ログを公開します。 もう何度もWindowsのセットアップは行っているので見返したいのと、他の人が詰まってたら助けになるようにセットアップをログに残しておきます。 近々またセットアップすることが予想されますし。何故なら近いうちにDDR5世代のPCを組んでWindows 11を入れたいからです。 いい加減セットアップはスクリプトにするべきなのかもしれませんが、 GUI操作が必要なのがまだまだ多いのと、今回