2022-01-01から1年間の記事一覧
これは AWS LambdaとServerless Advent Calendar 2022 の記事です。 Next.jsをホスティングする手段の一つとして、Standaloneモードで動かす方法があります。 コンテナ1個で動かせるため非常にお手軽な選択肢で、GCPのCloud RunやAWSのApp Runnerなどで動か…
AWS CDK TIpsシリーズの記事です。 CDKのコードが散らかってきた、スタックのコードがベタに数百行以上もあって読みづらい… そんな状況に直面したことはないですか?今回はCDKコードを構造化して、可読性・保守性を高めるコツを紹介します。 背景 前回の記事…
最近はもっぱらNode.jsのAWS SDKはv3を使っているのですが、一つ大きな不満がありました。 それは s3.GetObject がv2よりも使いづらかった点です。ユーザーはS3のファイルを読み込むために ReadableStream をなめていくコード (例) を自分で書く必要がありま…
最近話題になっている AWS Fault Isolation Boundaries を読んでいると、こんな言葉が目に入った: Allowing individual workloads to make their own failover decisions makes the coordination less complex, but introduces modal behavior through the s…
AWS CDK TIpsシリーズの記事です。 AWS CDKのスタック、まとめてますか?分けてますか?分けている方はどういう基準で分けていますか? この議論は人によって割と意見の分かれることも多く、最高の飲み会ネタになるでしょう。今日は私見も交えながら、CDKの…
ブログ、元々日次で更新するぞ!という気概で始めたが、結局月1更新が関の山となっている。どうしたものかと思っていたところで、つい先程以下のブログを読んだ。 simonwillison.net 継続的にブログを書くことに成功しているエンジニア Simon Willson による…
先日自分が修正してマージされたAWS CDKのバグが個人的には結構面白かったので、ざっくりとまとめます。 github.com どういうバグか CDKのhotswapデプロイ*1をするとき、hotswapできそうでできない変更が2つ以上あると、CDKがクラッシュするという現象が起き…
問題提議 リモート会議などで良く耳にする、初めて発話する人の第一声 「今私の声聞こえてますか」、これが必要なのか考えてみた。 この一言は次のようなシチュエーションでしばしば聞かれる。 司会 「… それでは、次はXXさんどうぞ。」 XX 「はい、よろしくお願…
前回のあらすじ MDEV-18873に取り組み中。これはクエリ内で指定されたperiodの名前が空文字列 (``) であるときに、MariaDBがクラッシュするというバグだ。 ALTER TABLE t ADD PERIOD IF NOT EXISTS FOR `` (s,e); 一旦自力で考察してPRを作成したが、レビュ…
ISUCON12予選に参加しました!結果、スコア自体は予選ボーダー通過していましたが追試で失格でした チームいすもなで参加 もなちゃんすまん… 通過した気満々で参加記事書いてましたが、供養のため投稿します。 なお過去にはISUCON9, 11に参加していずれも上…
はじめに 会社組織をマイクロサービスアーキテクチャとして捉える見方があります。この記事ではその概要、またそうした場合に考察される「良い」チームのあり方についてまとめます。 マイクロサービスの要点 ここでいうマイクロサービスとは、技術分野における…
はじめに サービスを開発していると、n秒ごとに何らかの処理を定期実行したい要件が見つかることがあります。 例えば、10秒ごとにあるAPIエンドポイントにアクセスして結果を保存したいなどです。この記事ではこのような機能の実装方法について考えます。 Ev…
Slackのチャンネルは6種類に大別できる。これを理解して設定を使い分けることで、Slackの通知地獄から開放される第一歩となろう。 なお有料版限定の機能を使う場合の話。 これが6種類だ! Slackのチャンネルは、見え方について以下3つの直交する設定が可能: …
はじめに 最近AWSのサーバーレスサービスで作るWebサービスの雛形を公開してみた*1。小規模サービスならかなり安く (ほぼ無料になるケースも多そう) で運用できるので、割と良い選択になる場面も多いと考えている。今日はその布教記事。 github.com 全体構成…
前回のあらすじ MDEV-24582に取り組むうちに、GDBが仲間に加わった。コードを実行しながら変数の中身も見えるすごいやつである。強力な仲間たちとともに、今日もIssueに立ち向かう。 tmokmss.hatenablog.com とはいえ、とりあえず気持ちを変えてみる ここ最…
はじめに 自分は今までC#をWindows上のVisual Studioか、Unityでしか開発したことがない。この2つはいずれも開発環境が完全自動で整備されるので、非常に楽に開発を始めることができたものだ。しかし、今回はVisual Studio Code、しかもMacで開発したいので…
はじめに 先日新宿近辺のリアル脱出ゲームに行ってきた。めちゃくちゃ面白かったし、また行きたい。次こそ良い成果を残せるように、今回得られた教訓をまとめる。 怪しげな雑居ビルの中で開催された 教訓 基本的にゲームマスターは人の盲点を突いてくる。盲…
前回のあらすじ MDEV-24582 は難敵だ。前回の成果は修正箇所を特定する方法を特定したのみ。今回はデバッガで処理を追いながら修正対象を見つけていく。 tmokmss.hatenablog.com GDBの導入 大規模なコードベースの挙動を理解するためには、実際に実行してデ…
前回のあらすじ 3つ目のIssueは強敵だったが、新しく覚えた「perrorを手がかりに調べる」技でどうにか解決した。__builtin_expect も仲間に加わり、tmokmssの冒険はまだまだ続く。 tmokmss.hatenablog.com 今回のIssue [MDEV-24582] INSERT silently truncates…
前回のあらすじ 初のMariaDBコントリビューションを達成し気をよくした俺。順調に2つ目のIssueもマージされ、浮かれ気分で次なる敵に挑むのであった。 tmokmss.hatenablog.com 今回のIssue [MDEV-28599] EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH…
はじめに DynamoDBを使っていると、とかくテーブルは1つにまとめるべきという声や、複数テーブルからシングルテーブル設計に移行したという事例を耳にすることがあります。 しかし、その理由を聞いてみると、性能のためだったり管理を簡単にするためだったり…
はい、ということで今回はお山の大将に行ってまいりました。以下レポートです。 tabelog.com 往路 平日の19時にお店到着。店はそれほど混んでいませんでしたが、カウンター席に案内されました。おそらくテーブル席は予約で埋まっていたのでしょう。今日も大…
背景 以前町の飲み屋に入ったのだが、実はワタミ系列店だったということがあった。 特にワタミがきらいな訳ではないが、そこはかとないガッカリ感は否めない。今後はワタミの店はワタミの店だと覚悟してから入りたいので、この記事ではワタミ系列店の列挙を…
定義 プログラムに変更Xを加えるとき、類似の機能A,B,Cの実装を確認し、その共通部分から、変更Xに必要な実装を導くことがあります。 この一連の作業を、この記事では帰納的プログラミングと呼びます。 帰納(きのう、英: Induction、希: επαγωγή(エパゴー…
数少ない読者へ愛を込めて 「MariaDB にコントリビュートした話」ってタイトルでブログ書いてください✋— N. Yanagisawa (@NayutaYanagisaw) May 19, 2022 MariaDBに初めてコントリビュートした時の作業記録をまとめる。Issue自体は一番簡単なものを渡しても…
米は炊飯器より圧力鍋で炊くべきだと思う。理由は以下: 圧力鍋は速い 圧力鍋は普通の炊飯器よりも早く炊ける。これは高温高圧で一気に米を加熱するため。以下のグラフを見てほしい。 水のフェーズダイアグラム*1 水は気圧と温度が与えられれば、その時の状態…
AWS CDK TIpsシリーズの記事。 最近 deploy-time-build というCDK コンストラクトをリリースできたので、その過程で得られた知見を共有する。 github.com Tips プロジェクトの初期化はprojenで一発 プロジェクト生成ツールのprojenを使うことで、コマンド一…
渦中のEthereumネタ。 はじめに Etherscanでコントラクトのアドレスを開くと、コードが表示されることがある。例 Contractのコード コントラクトのユーザーたちは、このコードを見ることで中の実装を把握でき、安心してコントラクトを利用することができる。…
CDKでWebフロントエンドのSPAをデプロイするときの方法まとめ。下図のありがちなSPA構成を想定している。 このような場合、フロントエンドアプリからAPI GatewayのエンドポイントURLやCognitoのUser Pool IDなどの値を参照する必要があって、それらの値をど…
昨日までずっと npm install の挙動について勘違いしていたので、改めて整理する。 なお、引数付きの npm install <package_name> コマンドではなく、 npm install 単体で打つときの話。 npm install の仕様 npm 5.4.2 以後 (つまり、現代ではほとんどの環境がこちら) はじ</package_name>…