2022-01-01から1年間の記事一覧

Fly.io のファーストインプレッション

Heroku の料金体系改定 Heroku’s Next Chapter | Heroku でアナウンスされている通り 11/28 から heroku の料金体系が改定されます。無料枠の Free と Hobby プランは 11/28 で廃止されます。そのため、多くのエンジニアが無料枠を求めて fly.io, railway, r…

開発環境の sqlite3@mac とステージング環境の postgresql@heroku をデータベースツールキット sequel とカスタム rake タスクで同期する

sqlite3 DB(on Mac) と postgresql DB(on Heroku) を同期する 私の場合 Rails の開発環境とステージング環境をそれぞれ以下のように構築しています。開発に伴う動作確認や実際の英単語の入力は開発環境(Mac mini)で行うことがほとんどなので、自然と両環境で…

Rails で Firebase Authentication を使う場合のユーザーモデルとテスト

Firebase Authentication を使う場合、ユーザーモデルとテストはどうする? Rails で個人用の英単語帳アプリを開発しています。開発環境は Rails 7.0.4 + Ruby 3.1.2 です。 ユーザ認証に Firebase Authentication を導入すると、フォームに入力した email と…

unbuffer と tee の組み合わせで標準出力とログのカラーを保持する

tee に渡すとカラー出力が打ち消されて色なしになってしまう 開発環境の構築などの定型処理は Rakefile でタスクを定義して、バッチ処理として実行しています。 この際にログも保持するようにしているのですが、単純に tee に渡すだけでは標準出力もログもカ…

Real World Exception Handling

奇数(odd)がだめなら偶数(even)にすればいいじゃない スプレッドシートからデータをインポート処理を書いています。指定地点 s から指定された h[:x], h[:y] の座標分、セルを切り取って配列(matrix) とハッシュ(kv_pair_matrix) のどちらからでもデータを利…

ansible の command module を使用して複数ホストのログを確認する

複数ホストへコマンドを一括実行したい時 複数ホストに一括してコマンドを実行したい時がたまにあります。繰り返す作業ではなく、ざっとログにエラーメッセージが出ていないかなどをアドホックに確認したい時など。これは ansible の command module を利用…

ひとつの入力語に対して複数カラムを対象にして検索を行い結果をまとめる

「空気を読む」検索 Rails の検索には Ransack が重用されます。Ransack では基本的にモデルの単一カラムに対して cont(contain) や eq(equal) といった条件で検索が可能です。この場合、ユーザーがひとつの用語で複数のカラムを検索したい場合、別々の入力…

AWS CDK で EC2 を構築する時の地雷処理

古い AWS アカウントの呪い(?) 私の AWS アカウントでは Tokyo リージョン(ap-northeast-1) の Availability Zone の a が使用できません。使用できるのは b と c だけです。これはアカウントを作成した時期(2011年)に関係しているようです。比較的新しい時…

Tenets of SRE を Github Issues/Pull Requests のラベルにする

Tenets of SRE を Github Issues/Pull Requests のラベルにする Github にデフォルトで用意されているラベル(bug, duplicate, enhancement, ...) はアプリ開発向けです。インフラ開発向けの課題管理には SRE Book で定義されている Tenets of SRE(availabili…

バッチ処理を cron から k8s cronjob に移行する

Shamshir のスタンドアローン版を k8s(minikube) の cronjob に移植した記録です。 cron でバッチを動かす時の問題点 node, ruby, python 他インタプリンタ系の言語でプログラムを作ると nodenv + npm/yarn, rbenv + bundler, pyenv + pip などのエコシステ…

Chrome で検索対象の言語を英語のみにして検索する

設定方法 URL バーを右クリックして「検索エンジンを管理」のメニューを表示します。 メニューを以下のように修正します。検索エンジン名とキーワード(トリガーとなるキー)をお好みで指定します。 https://www.google.com/search?gl=us&hl=en&gws_rd=cr&pws=…

aws-minikube: ELB とも連携できてフットワークが軽い AWS k8s 環境

k8s 環境として minikube, eks, aws-minikube を比較してみました(k3s は未経験)。個人的には aws-minikube がコスト面/機能面でよさそうに思えたので紹介です。 aws-minikube とは? EC2 1 台で k8s 環境が整うツールです。Red Hat 社の Jakub Scholz 氏が 2…

Getting started with Amazon EKS (2) とコスト計算

前回 に引き続き、EKS でサンプルの nginx pod を外部公開するまでを実施しました。 docs.aws.amazon.com Service の外部公開 Getting Started with Amazon EKS で紹介されているデプロイだと Type:ClusterIP でクラスタ内部への公開なので、これを type: Lo…

Ansible における抽象/具体モデルと誰が/何をするの考え方

Ansible の group と host, role と task の関係が 公式ドキュメント からだと個人的にわかりにくかったのでまとめた図です。頭の中でなんとなく理解していたことを図や表に起こしてみることで理解が促進されました(公式ドキュメントにこういった説明があれ…

Node.js のテストフレームワークとデバッガ

テストフレームワーク Jest shamshir に細かなバグを見つけたので少しの間、我流のプリントデバッグをしていたのですが、継続的なメンテナンスを考えてテストフレームワークを導入することにしました。参考にしている「ハンズオン Node.js」の「8 章 ユニッ…

Getting started with Amazon EKS の地雷処理

2 年ぶりに Kubernetes を使います。以前、仕事で AWS とオンプレそれぞれにクラスタを構築して運用していたもの、構築部分は k8s プロフェッショナルなエンジニアが身近にいたせいでおんぶにだっこの状態でした。過去に Kubernetes The Hard Way を AWS で…

Shamshir を Github Marketplace にリリースしました

ShamshirLabeling という名前でリリースしています。よろしければお使いください。 github.com

Github Sponsors に登録するには

大きな流れ Introduction (5,000 characters) と Short bio (250 characters) を書く(自己紹介と略歴) Sponsor tiers や Goals を決める($1/月で 10 人が目標、スポンサーになってくれた方への特典など) Github と連携する Stripe のアカウントを作成し、銀…

Shamshir が Github Actions に対応しました

従来のスタンドアローンでの起動に加えて、Github Actions からも起動できるようになりました。よろしければお使いください。 https://github.com/kyagi/shamshir uses: kyagi/shamshir@v1 トリガーのイベントとして「PR のレビューや修正」だと数が多くて G…

Github で PR の APPROVED 数に応じてラベル(releasable) をつけたり外したりする

Dismiss stale pull request approvals when new commits are pushed Github の Pull Request のレビュー後、APPROVED の数に応じてラベルをつける運用を自動化します。APPROVED 後にコミットがあった場合、自動的に APPROVED が取り消される運用(画像) での…