CloudWatchアラーム一覧を表示する

どのリージョンにどんなCloudWatch Alarmがあるのかを知りたかったので、Bashスクリプトを書きました. 利用するツールは、jqとAWS CLIv2の2つ. #!/usr/bin/env bash # 利用可能なリージョンを取得 get_regions() { aws ec2 describe-regions | jq -r '.Regio…

個人事業主としての活動を始めるまでにやったこと

私が2020年に副業として個人事業主としての活動を始めようとした時にやった作業を振り返ります. 「個人事業の開業届」と「所得税の青色申告承認申請手続き」を税務署に提出する 個人事業用の預金口座を用意する クラウド会計ソフトを導入する 事業で利用する…

2020年買ってよかったもの

既に1月半ばになってしまったけれど、2020年に買って良かったモノや契約して良かったサービスをまとめました. 元々ゲームを快適にプレイする環境を整えていたので、リモートワーク向け製品は少なめです. audio-technica ATH-M70x(ヘッドホン) iPhone SE(…

AWS LambdaでRubyコンテナを動かす

re:InventでAWS Lambdaがコンテナをサポートしたようなので、 aws-lambda-rubyコンテナを使った動作確認をしてみました. corrupt952/aws-lambda-container-ruby-sampleにファイルを置いてきます. TL; DR コンテナがサポートされたことにより関数を実行するラ…

WSL上で実行されているかどうかを判定する

スクリプトがWSL上のLinuxで動作しているかどうかを判定できるようにしておくと、 macOSやWSLといった複数環境をサポートするスクリプトを書いている時に少しだけ便利になります. 判定方法としては、ファイルの内容やコマンドの実行結果によって判断する方法…

指定したプロパイダのバージョンを一括変更する

既視感がありますが、指定したproviderのバージョンを一括変更するためのスクリプトを業務終了間際に少し書いてみました. 今までそれなりの数のTerraformを触ってきましたが、 バージョンアップデートをする時に1ファイルずつを置換するのが正直なところかな…

シェルスクリプトにオプションを実装する

シェルスクリプトをよく書くのですが、そういった時によくオプションを指定して値を受け取りたいケースがあります. その時の書き方をメモしておきます. #!/usr/bin/env bash verbose=false while [ "$1" != "" ]; # "$1"が空文字列になるまで繰り返す do cas…

MkDocsのテンプレート

MkDocsを使ってプライベートでも仕事でもドキュメントをまとめることが増えてきました. リアルタイム編集には向きませんが、やはり設計ドキュメントやオンボーディング資料には向いてる気がします. そこで自分向けにMkDocsをリポジトリに導入するためのテン…

aptでnpmをインストールしたらlibmysqlclient-devが削除される

業務でubuntu:18.04イメージをベースとしたコンテナを使っていた時に、困った現象に出会いました. それはlibmysqlclient-devをインストール後、nodejsとnpmをaptでインストールするとlibmysqlclient-devが削除されるという現象です. 結論としては、 libmysql…

MacでネットワークのDNSサーバを変更する

新しいMacのセットアップや、ネットワークの追加した時にDNSサーバを変更する時があります. その時のセットアップを楽にするためにスクリプトを書きました. Gistにアップロードしてあるので、具体的なスクリプトをそちらを参照してください. コマンド各種 dn…

conftestを使ってDeploymentにrequests,limitsが指定されているかをチェックする

最近は、プライベートでも仕事でもKubernetesのマニフェストを書いていることが多くなってきました. 今回は「Deploymentのコンテナにrequests,limitsが指定されていること」をconftestというツールを使ってチェックする際のポリシーをメモしておきます. # re…

自宅k8s環境向けにownCloudのマニフェストを書く

週末に自宅で動かしているownCloudを、Kubernetesに乗せるためにマニフェストを定義していた. 私用用途なのでPV使うまでもないかなとhostPathを使ったり、ラベルの指定もまばらで規則性がないので気が向いた時に直しておきたい. マニフェスト ira-apps/owncl…

tmuxのステータスラインにk8sのvwntextとnamespaceを表示する

複数のk8sクラスタに接続する頻度が増えてきたので、現在どのコンテキストへ接続しているのかが分かりやすくtmuxのステータスラインに表示するようにしました. この画像で言えば(kind-ira/owncloud)が、それぞれ現在選択するContextとNamespaceです. 実際の…

Lambdaの関数名とランタイムの一覧を取得する

今朝、Lambdaの関数名とランタイムの一覧を取得するPythonスクリプト書いたので貼っておきます. シェルの実装でも良かったが、これをベースに他のスクリプトを組む予定なのでboto3で実装してみました. #!/usr/bin/env python3 import json import boto3 def …

某社SREとしての1年間

これはSRE Advent Calendar 20195日目の記事です. 一昨日、6Vメタモンを入手することができてホクホク顔の@corrupt952です. 技術的なことは他の方が書いてくれると思うので、某社SREとして過ごしてきた約1年間の話を簡潔に書きます. SREに興味ある人や某社SR…

InkdropからBoostnoteに乗り換えた

1年半程度はInkdropでブログの下書き・メモ・議事録の下書きをしてきましたが、 Inkdropである必要がなくなってきたので一旦Inkdropを解約してBoostnoteに乗り換えました. メモ書きツールに求めるモノ khasegawa.hatenablog.com 以前書いた記事をベースにメ…

The Twelve-Factor Appをベースにしたチェックリストを作りました

最近の仕事では、コンテナ化を推進しています. あるサービスをコンテナ化するにあたって、参考にされるのはThe Twelve-Factor Appですが、原文でも邦訳でも各項目の解釈しづらいです. そこでもう少し抽象度を下げたチェックリストを書きました. Containeriza…

aws ssm start-sessionのラッパースクリプトを書きました

最近はsshではなくsession-manager-plguinを使い、Session Manager経由でインスタンス上で操作を行っています. ただsession-manager-pluginを使って接続する時はインスタンスIDを毎回指定するのが面倒だったので、 インスタンスIDの代わりにインスタンス名を…

ゼロトラスト超入門

同僚でもあるおかしんさんが技術書典で出していたゼロトラスト超入門を読んだ. 第1章 ゼロトラストとは 過去と比べてシステムの多様化が進んでおり、従来の境界モデルでの防御方法では現代におけるシステム利用やリスクへの対処として適切ではなくなってきた…

進化的アーキテクチャ 後半

khasegawa.hatenablog.com の続き 5章 進化的データ データベースのスキーマは、アプリケーションのクラスやクラス階層と同じで、具体的な物事を抽象化したものである. この物事に変化があったならば、スキーマも変更すべきである. そうでなければ、物事と抽…

進化的アーキテクチャ 前半

会社の福利厚生を利用して購入した進化的アーキテクチャを読んでいる. TL;DR 進化的アーキテクチャは、具体的なアーキテクチャを決める手法ではなく、継続的に変更可能なアーキテクチャを支援するための手法 漸進的な変更・適応度関数・適切な結合から構成さ…

開発合宿してきました

2/9~2/11の3連休は開発合宿と称した温泉旅行に行ってきました. 宿泊先は伊香保のホテル天坊で、ホテル内に飲み屋もあり、比較的宿泊しやすい施設だったと思います. いざ合宿 学生時代からの友人達との合宿だったので、がっつりとした開発合宿にはせず、開発…

Delayed::Job再起動時にジョブがロックされたままにさせない

Delayed::Jobを気軽に再起動させたいために挙動確認した時のメモです. 実行環境 Ruby ... 2.6 Ruby on Rails ... 5.2.2 MySQL ... 5.7 delayed_job_active_record ... 5.1.3 daemons .... 1.3.1 また、Delayed::Jobを起動する際に共通するオプションとして-n…

このサイトの記事一覧・詳細が表示されていなかった

先週の金曜日から今日にかけて記事一覧・詳細が表示されていない現象に遭遇しました. 理由は、submoduleで組み込んでいるhello-friendというテーマで記事対象となるディレクトリ名の変更が行われていたためです. とりあえずは、以下の対応を実施した. 最新の…

秘密鍵から公開鍵を生成する

sshで利用する秘密鍵から対応する公開鍵を生成する時のメモです. 公開鍵を生成する ssh-keygenの-yオプションを使って、秘密鍵から公開鍵を生成することができます. ※1 $ ssh-keygen -y -f id_ed25519 ssh-ed25519 XXXXXXXXXXX 秘密鍵に対してパスワードが設…

2019年の抱負

2019年になり既に20日以上経って今更ですが、去年の抱負の振り返りと今年の抱負を振り返ろうと思います. 昨年の抱負 khasegawa.hatenablog.com 昨年の抱負は2つありました. 自己の体調管理を見直す 日々の学びをアウトプットする まず、自己の体調管理につい…

Envoy vs Nginx: HTTP/1.1 Reverse Proxy Performance

HTTP/1.1のリバースプロキシとして、EnvoyとNginxとの軽めのベンチマークを取りました. しっかりとしたベンチマークとはいえませんが、少しは参考になる結果かもしれません. TL; DR リバースプロキシコンテナは、CPU・Memoryともにリソースの制限をする リバ…

EnvoyでHTTP/1.1の通信をプロキシする

EnvoyはHTTP/1.1とHTTP/2ともにサポートしているということで、HTTP/1.1のFront Proxyができるのか試してみました. TL; DR front-envoy.ymlのcodec_typeをHTTP1に変更すれば、HTTP/1.1で通信するようになる corrupt952/surveyに今回の記事の元となるコードを…

転職しました

転職してから少し経ったので、今更ですが転職エントリを書いていこうと思います. 前職について 前職は新宿にあるSIerでした. そこの会社は学生時だからアルバイトでお世話になっていたところで、約5年も働いていました. 前職では業務としてのプログラミング…

Japan Container Daysに参加してきた

参加してきた時のメモを残しておきます. ※ 写真を撮りたかったのですが準備ができてなかったのでテキストデータのみです. まず最初にJapan Container Daysを開催・運営してくださった方々、登壇してくださった方々に感謝を. とても刺激的な2日間でよい時間を…