にゃみかんてっくろぐ

猫か百合を見守る壁になりたい

デプロイ頻度を上げるための「下準備」

デプロイ頻度を上げた話ではなく、デプロイ頻度を上げるために必要なことを洗い出して実施したという話。 月 1 回のビッグバンリリース 所属チームは月 1 回のいわゆるビッグバンリリースで、まあ大変な状況だった。 デプロイ作業は 2 時間超 500 ファイル以…

毎日 1000 万リクエストを捌く 1 台の API サーバー

P2P地震情報の API サーバー (api.p2pquake.net) は、毎日 1000 万リクエスト以上を捌いている。ピーク時は毎秒 300 リクエストを超える。 VPS 1 台でここまで到達するのにそこそこ試行錯誤した。結果として意外性はなくやることやっただけという感じではあ…

www.p2pquake.net のサービスをぜんぶ Docker でコンテナ化した(計 35 コンテナ)

※個人開発の備忘録です。 Debian 9 (stretch) が EOL を迎えたので、ちょうど良い機会だと思って色々と手を加えた。 Debian 11 (bullseye) に すべてを Docker でコンテナ化 監視ツールを Munin + Xymon から Prometheus + Grafana に Vultr から Linode へ …

2021 年を振り返る

以前、はじめて転職活動をした際に「過去をしっかり振り返っておくことが大事」と言われたことがある。これに従って 2020 年を振り返っていたので、 2021 年も少し遅いけれど振り返っておく。 技術的なもの 個人開発: フロントエンドから OS 自作まで やっと…

P2P 地震情報 Windows 版を「半分くらいクロスプラットフォームで」リニューアルしました

地震情報アプリ界隈 Advent Calendar 2021 14 日目の記事です。 P2P 地震情報 Windows 版を 10 年ぶりに更新しました。デザインは一新しましたが、目立った新機能はなく、未実装の箇所も残っています。 しかし、実は半分くらいがクロスプラットフォームにな…

テックリード 1 年半、試行錯誤の断片

1 年半くらいテックリードっぽいことをしている。具体的には、 higepon さんの以下記事にあるような役割を概ねやっているつもり。 振り返ってみて、試行錯誤の連続だったと思う。「こんな成果が出ました!(バン!)」って派手なものはなくて、様々なところ…

.NET 5: System.Drawing.Common と ImageSharp 、 Windows と Linux でテキストレンダリングの差をみてみる

クロスプラットフォーム。プラットフォーム間の差異に悩まされる地獄だ。 ということで、 .NET 5 でのテキストレンダリングの差を調べてみた。フォントは等幅な Roboto Mono とプロポーショナルな Roboto を用いた。 System.Drawing.Common 5.0.2 Roboto Mon…

AWS App Runner のオートスケールは GCP Cloud Run ほど滑らかではなさそう

方法 同時接続数 4 で観察 AWS App Runner: 20 インスタンスも起動する GCP Cloud Run: 4 インスタンスだけ起動する 突然 20 同時接続して観察 AWS App Runner: 過半数がエラーに GCP Cloud Run: すべて正常応答 まとめ: App Runner のオートスケールは Clou…

緊急地震速報の配信を支える技術(仮) / テレビとスマートフォン

緊急地震速報の概要(おさらい) 猶予時間はわずか。迅速な配信が必要 テレビ (NHK): 2 種類の音と表示 「文字スーパー」で低遅延。 2010 年から実施 スマートフォン: 2 回の表示 ETWS で低遅延に まとめ 参考 緊急地震速報の概要(おさらい) 地震波の P 波…

プロダクションレディ開発プロセス ―SIer の開発標準に学ぶ

新しい Web サービスを「本番環境に載せられる品質で作っていく」のは大変です。一体何から考えればいいのでしょう。インフラ? テーブル? API 仕様? 「MVP (Minimum Viable Product) で」とか「アジャイルで」といった話はよく聞きます。一方で「どのよう…

VTuber が歌った曲をまとめたい 後半(実装編)

VTuber が歌った曲をまとめたい 前半(検討編) の続きです。 前半(検討編) のおさらい ざっくりイメージ データ抽出 (Ruby) API クォータ チャンネル URL → アップロード済み動画 プレイリスト アップロード済み動画 プレイリスト → プレイリストアイテム プ…

VTuber が歌った曲をまとめたい 前半(検討編)

VTuber にハマり気味です。 百合と V の沼につかりながらでもコードは書けます!!!(まず 1 週間) pic.twitter.com/2fYhms1cKq— たいぷらいた〜 (@no_clock) 2020年6月23日 その中で、「過去、どんな曲を歌っていたのかな」と知りたくなりました。その欲…

yarn/npm outdated は、古いパッケージがあると終了コード 1 を返すバージョンもある

コードリーディングのメモ。 まとめ outdated コマンドで古いパッケージが見つかった場合の終了コード: パッケージマネージャ バージョン リリース日 終了コード Yarn >=0.26.0 2017/06/06 1 <0.26.0 - 0 npm >=7.0.0 2020/10/13 0 >=4.0.0 <7.0.0 2016/10/2…

2020 年を振り返る

以前、はじめて転職活動をした際に「過去をしっかり振り返っておくことが大事」と言われたことがあり、実感として確かに大事だと感じた。 ということで 2020 年にやったことを整理しておく。 技術的なもの 仕事: SRE 寄り AtCoder 新規 Web サービス 既存サ…

システムコールトレーシング: 吸い込まれる標準入力を観察する

Linuxその2 Advent Calendar 2020 18 日目の記事です。 「スクリプト書いてたんですが、なぜか途中で止まるんです」と言われた。 止まっている様子(シンタックスハイライトが綺麗でないので画像で) 確かに yarn gen で止まっている。 yarn start も date …

同じドメインに A レコードが複数あるときのクライアントの挙動 (Chrome, Safari, curl)

おことわり: TCP/IP スタックの設定値などを深追いしておらず、「こう動いたが、根拠は調べていない」というレベルのものです。 いきなりまとめ Google Chrome (Windows 10, macOS Mojave), curl (WSL2 Ubuntu, macOS Mojave) は、一定間隔 (21~75秒) で順…

「インデックスが作成されていないカラムを WHERE 句に書かない」コーディング規約と、暗黙的なコンテキスト

一部フィクションを含むポエムです。 XX システム SQL コーディング規約 性能劣化の可能性があるため、インデックスが作成されていないカラムを WHERE 句に書かないこと。 (インデックスの作成有無はテーブル定義書を参照) こうしたコーディング規約が あ…

Amazon ECS: curl コンテナを使ってタスク定義だけでモックサーバを設定する

3 行まとめ API のモック化ツール WireMock には、動的にスタブ/モックを定義できる Admin API がある ECS タスク定義に「 Admin API を叩く curl コンテナ」を加えて WireMock のスタブ/モック定義を行う タスク定義だけ完結するので楽 タスク定義だけでモ…

Traefik でお手軽に Docker コンテナの無停止 Blue/Green デプロイを実現した

3 行でまとめると: Traefik を使って Docker Compose だけで無停止デプロイを実現。 docker-compose.yml に定義するだけ、他の設定ファイルは不要のお手軽さ。 コンテナは graceful shutdown するようにしておく。

個人開発サービスのログをぜんぶ CloudWatch Logs にまとめた

3 行でまとめると ログを CloudWatch Logs に集約した Metric filter でエラー数をメトリクス化した CloudWatch Alarms ではなく Lambda でエラーを Slack 通知させるようにした CloudWatch Logs にログを集約した zenrei.nyamikan.net をすべて Docker 化し…

AWS CDK for .NET: C# で CloudWatch Metric Filter を設定する

「 .NET サポートあるじゃん」と思ったのでちょっと触ってみました。 手順とコード Getting Started With the AWS CDK - AWS Cloud Development Kit (AWS CDK) を参照して npm で AWS CDK をインストールする。 Working with the AWS CDK in C# - AWS Cloud …

ぜんぶ Docker コンテナにする (HTTPS+IPv6 対応 )

事例が何かの参考になればと思ったので記事にしました。 3行でまとめると Zenrei (zenrei.nyamikan.net) の Web サーバ・ API サーバ・ DB サーバすべてを Docker 化した SteveLTN/https-portal という Let's Encrypt の証明書取得を自動化した nginx のリバ…

CRCチェックつきでAM2320の温湿度を読み取る (Raspberry Pi + Python 3)

温湿度センサモジュール AM2320の温湿度を取得するサンプルコードは数あれど、CRCチェックまでやっているコードが見当たりません。 ということで、データシートを見つつ書きました。 import smbus import time i2c = smbus.SMBus(1) address = 0x5c # Step o…

Linux コマンドの最長しりとりを求める

「 Linux コマンドでしりとりをすると、最長でいくつ繋がるのか?」 この疑問を解消すべく、最長しりとりを求めるプログラムを実装しました。 結論 論文「最長しりとり問題の解法」に沿って実装 CentOS 8 Docker イメージでは 326 コマンドが最長 ソースコー…

紅葉スポットと紅葉状況をツイートから推定する

ひとり開発 Advent Calendar 2019 10日目の記事です。 成果物: ソーシャル紅葉見頃情報 動機: 紅葉情報サイトの「見頃」表示が信用できない 解説: サービス構成 ツイート収集 紅葉スポットの自動抽出 紅葉状況の推定 Webサービス 検証: 紅葉状況の推定結果 …

私の転職活動は中学生から始まっていた

SIer脱出を語る Advent Calendar 2019 8日目の記事です。 「アウトプット大事」というHow toの話しかしません。 転職の経緯や転職後については SIerから自社サービス系に転職して半年ちょっと経過した (2019/05/15) をご覧ください。 目次 どんなアウトプッ…

Fargate Spotのお値段比べてみた

Fargate Spotが発表された. aws.amazon.com 70%ディスカウントは魅力的であるものの,EC2と比べて高いのか安いのかがわからない.ということで表にした. タイプ vCPU Mem EC2オンデマンド EC2スポット EC2リザーブド(1年前払い) Fargate FargateSpot m5.la…

気象庁の天気予報文をパースする ☀☁☂

天気予報文 気象庁の天気予報には 予報文 があります。 北東の風 日中 東の風 くもり 昼過ぎ まで 時々 晴れ 所により 夜遅く 雨 気象庁 | 天気予報 : 東京都 (10/20 11:00発表 21日の天気予報文) やや難解ですが、 気象庁|予報用語 と照らし合わせること…

同じ構図で何枚も撮って,最も手ブレしていない 1 枚だけを残す

結論 ImageMagick の compare コマンドで, Perceptual Hash (pHash) により同一構図かチェックする. ImageMagick の convert と identify コマンドで, Canny 法によりエッジ検出し同一構図の n 枚から最も鮮明な 1 枚を残す. ソースはここに置いた: GitH…

日用品のストック管理ツール Stokk を作った

日用品のストックを管理出来るツール「Stokk」を公開しました。 以下はポエムです。 技術選定 サーバをわざわざ建立するほどの機能はない mBaaSと親和性が高そう フロントエンドを書きたい ということで、SPA + mBaaSで作ることにしました。 使ったもの ツー…