maybe daily dev notes

私の開発日誌

ISUCON12予選通過しそうでした

ISUCON12予選に参加しました!結果、スコア自体は予選ボーダー通過していましたが追試で失格でした チームいすもなで参加 もなちゃんすまん… 過去にはISUCON9, 11も参加していずれも上位30~50%tileくらいに留まったので、今回はその反省も踏まえています。 …

会社をマイクロサービスアーキテクチャのシステムとして捉えたら

はじめに 会社組織をマイクロサービスアーキテクチャとして捉える見方があります。この記事ではその概要、またそうした場合に考察される「良い」チームのあり方についてまとめます。 マイクロサービスの要点 ここでいうマイクロサービスとは、技術分野における…

AWSでn秒ごとのループ処理、どうする?

はじめに サービスを開発していると、n秒ごとに何らかの処理を定期実行したい要件が見つかることがあります。 例えば、10秒ごとにあるAPIエンドポイントにアクセスして結果を保存したいなどです。この記事ではこのような機能の実装方法について考えます。 Ev…

Slack 6種のチャンネル仕分け!

Slackのチャンネルは6種類に大別できる。これを理解して設定を使い分けることで、Slackの通知地獄から開放される第一歩となろう。 なお有料版限定の機能を使う場合の話。 これが6種類だ! Slackのチャンネルは、見え方について以下3つの直交する設定が可能: …

趣味Webサービスをサーバーレスで作る ― 格安編

はじめに 最近AWSのサーバーレスサービスで作るWebサービスの雛形を公開してみた*1。小規模サービスならかなり安く (ほぼ無料になるケースも多そう) で運用できるので、割と良い選択になる場面も多いと考えている。今日はその布教記事。 github.com 全体構成…

MariaDBコントリビューション録その5 - MDEV-18873

前回のあらすじ MDEV-24582に取り組むうちに、GDBが仲間に加わった。コードを実行しながら変数の中身も見えるすごいやつである。強力な仲間たちとともに、今日もIssueに立ち向かう。 tmokmss.hatenablog.com とはいえ、とりあえず気持ちを変えてみる ここ最…

C# 開発を始める on Visual Studio Code on Mac

はじめに 自分は今までC#をWindows上のVisual Studioか、Unityでしか開発したことがない。この2つはいずれも開発環境が完全自動で整備されるので、非常に楽に開発を始めることができたものだ。しかし、今回はVisual Studio Code、しかもMacで開発したいので…

リアル脱出ゲーム 初参加 Lessons learned

はじめに 先日新宿近辺のリアル脱出ゲームに行ってきた。めちゃくちゃ面白かったし、また行きたい。次こそ良い成果を残せるように、今回得られた教訓をまとめる。 怪しげな雑居ビルの中で開催された 教訓 基本的にゲームマスターは人の盲点を突いてくる。盲…

MariaDBコントリビューション録その4

前回のあらすじ MDEV-24582 は難敵だ。前回の成果は修正箇所を特定する方法を特定したのみ。今回はデバッガで処理を追いながら修正対象を見つけていく。 tmokmss.hatenablog.com GDBの導入 大規模なコードベースの挙動を理解するためには、実際に実行してデ…

MariaDBコントリビューション録その3

前回のあらすじ 3つ目のIssueは強敵だったが、新しく覚えた「perrorを手がかりに調べる」技でどうにか解決した。__builtin_expect も仲間に加わり、tmokmssの冒険はまだまだ続く。 tmokmss.hatenablog.com 今回のIssue [MDEV-24582] INSERT silently truncates…

MariaDBコントリビューション録その2

前回のあらすじ 初のMariaDBコントリビューションを達成し気をよくした俺。順調に2つ目のIssueもマージされ、浮かれ気分で次なる敵に挑むのであった。 tmokmss.hatenablog.com 今回のIssue [MDEV-28599] EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH…

DynamoDB、シングルテーブルにするか否か

はじめに DynamoDBを使っていると、とかくテーブルは1つにまとめるべきという声や、複数テーブルからシングルテーブル設計に移行したという事例を耳にすることがあります。 しかし、その理由を聞いてみると、性能のためだったり管理を簡単にするためだったり…

酒場: お山の大将

はい、ということで今回はお山の大将に行ってまいりました。以下レポートです。 tabelog.com 往路 平日の19時にお店到着。店はそれほど混んでいませんでしたが、カウンター席に案内されました。おそらくテーブル席は予約で埋まっていたのでしょう。今日も大…

ワタミ系列店チートシート

背景 以前町の飲み屋に入ったのだが、実はワタミ系列店だったということがあった。 特にワタミがきらいな訳ではないが、そこはかとないガッカリ感は否めない。今後はワタミの店はワタミの店だと覚悟してから入りたいので、この記事ではワタミ系列店の列挙を…

帰納的プログラミング

定義 プログラムに変更Xを加えるとき、類似の機能A,B,Cの実装を確認し、その共通部分から、変更Xに必要な実装を導くことがあります。 この一連の作業を、この記事では帰納的プログラミングと呼びます。 帰納(きのう、英: Induction、希: επαγωγή(エパゴー…

MariaDB にコントリビュートした話

数少ない読者へ愛を込めて 「MariaDB にコントリビュートした話」ってタイトルでブログ書いてください✋— N. Yanagisawa (@7_yanagisawa) May 19, 2022 MariaDBに初めてコントリビュートした時の作業記録をまとめる。Issue自体は一番簡単なものを渡してもらっ…

米を圧力鍋で炊くべき5つの理由

米は炊飯器より圧力鍋で炊くべきだと思う。理由は以下: 圧力鍋は速い 圧力鍋は普通の炊飯器よりも早く炊ける。これは高温高圧で一気に米を加熱するため。以下のグラフを見てほしい。 水のフェーズダイアグラム*1 水は気圧と温度が与えられれば、その時の状態…

CDK Construct ライブラリを開発する際のTips

最近 deploy-time-build というCDK Constructをリリースできたので、その過程で得られた知見を共有する。 github.com Tips プロジェクトの初期化はprojenで一発 プロジェクト生成ツールのprojenを使うことで、コマンド一発でリポジトリのベースを生成できる…

EtherscanのContract verificationをAPIで実行する

渦中のEthereumネタ。 はじめに Etherscanでコントラクトのアドレスを開くと、コードが表示されることがある。例 Contractのコード コントラクトのユーザーたちは、このコードを見ることで中の実装を把握でき、安心してコントラクトを利用することができる。…

AWS CDKでWebフロントエンドをデプロイする3つの方法

CDKでWebフロントエンドのSPAをデプロイするときの方法まとめ。下図のありがちなSPA構成を想定している。 このような場合、フロントエンドアプリからAPI GatewayのエンドポイントURLやCognitoのUser Pool IDなどの値を参照する必要があって、それらの値をど…

npm install は package-lock.json を変更しないことがほとんどだった

昨日までずっと npm install の挙動について勘違いしていたので、改めて整理する。 なお、引数付きの npm install <package_name> コマンドではなく、 npm install 単体で打つときの話。 npm install の仕様 npm 5.4.2 以後 (つまり、現代ではほとんどの環境がこちら) はじ</package_name>…

AWS Lambdaだけでアンケートフォームを作れる

Lambda function URL活用案件として、Lambdaだけを使ってアンケートフォームを作ってみた。 実際は回答の閲覧用にSlackも使ってるが、ほかは本当にLambdaだけ。アーキテクチャ デモはこれ。 (いつか消すかも) コード 冗長な部分もあるので、要点だけ抜粋。フ…

もつ名チートシート

もつをよく食べるのだが、部位の名前が異常に覚えられない。おそらく別称がたくさんあるため混乱するのだと思われる。 ここでは自分が食べたことのあるものに限って簡単な早見表をつくる。 全般 もつ: 臓物(ぞうもつ)、内臓のこと ホルモン: 放る(捨てる)も…

NodeJsFunctionのビルド時に依存関係を解決する3つの方法

タイトルの通り、AWS CDKのNodeJsFunctionを使う時に依存関係を解決する方法が数パターンあるので比較してみる。 例 今回は、以下のTypeScriptのLambdaをデプロイするケースを考える。 // よくあるAPI GatewayのLambda Authorizer import { APIGatewayReques…

小さめのデスクトップPCを組んだ

最近新型デスクトップPCを組んだので、顛末を記録しておく。 要求 顧客からの要求は以下の通り。 予算10万円程度 (OS/周辺機器含まず) 最新ゲームがそこそこできる かさばらない (部屋においてもじゃまにならない) 3がなにげに厄介。 というのも私はこれまで…

Hardhat/Truffleを使わずにSolidityをコンパイルする

Hardhat/Truffle を使わずに、Solidityのスマートコントラクトをコンパイルしたい。そういった望みを持つこともあると思う。 そんなときに使える方法を紹介する。 solc-js solc-js という solc (Solidityのコンパイラ) をJavaScriptからプログラマブルに呼び…

Dockerfileが複数のBuild contextをサポートするようになった

はてな記事執筆機能の素振りがてら書いてみる。 序論 最近Dockerfileをビルドする際に複数のBuild contextを指定できるようになったらしい。 www.docker.com これを使うと、例えば共通モジュールが別ディレクトリに切り出されているような場合に、よりきれい…

はじめる

個人ブログを始めることにした 前はqiitaでやってたが、あちらの規約上許される内容なのか判断できないこともままあって、やりづらいからはてなが最適なのかも判断しかねてるがとりあえず始めるべしという心意気おそらく更新は低頻度になるが、なんとか続け…