~/.aws/(config|credentials)の設定情報を元にMFAを行い、一時的なセキュリティ認証情報を取得してコマンドを実行するawsdoを作った

久しぶりに使うAWSのprofileがありまして、そのprofileについての記憶が失われていた結果、コマンド実行成功までに時間を溶かしてしまいました。 というのも、私は普段使うprofileではaswrapでAssumeRole(と多要素認証)を透過的に便利に実行していた結果、…

生ログを構造化ログに変換するツールlrepに日時パース機能をつけた

Go

k1low.hatenablog.com の続きです。 ログからSQLiteのDDLやクエリを生成できるなら日時は日時としてパースできたほうが使い勝手がいいと思い実装しました*1。 github.com 名前付き正規表現でログの日時部分に名前をつけて(以下のサンプルだと time )、その…

正規表現を使ってログをカジュアルに構造化ログ/データに変換するツールlrepを作った

Go

正規表現でついつい頑張ってしまう人のための正規表現で頑張るどこかで見たことあるツールできた— k1LoW (@k1LoW) 2020年7月25日 tl;dr Fluentdのregexp parser pluginのCLI版っぽいツールを作りました(個人的に一番伝わりやすい言い方だと思っている)。 …

プロセスやファイルのケーパビリティを確認できるツールを再発明しつつLinux capabilitiesの理解を進めている

最近社内でLinux capabilitiesの話題がでていて「そういえばちゃんと理解していないな」と思ったので、夜ちょこちょこと技術エントリとかmanとかを読んでいました。 Linux Capability - ケーパビリティについての整理 - ローファイ日記 第42回 Linuxカーネル…

Elispのエラーを久しぶりにデバッグした

いつからか、goplsの起動時にいつも以下のようなエラーがでて、定義ジャンプができなくなってしまっていました。プライベートのMacBookでは発生していませんでした。 (file-error "Opening directory" "Permission denied" "//.PKInstallSandboxManager-Syst…

MySQL8.0.11からNO_TABLE_OPTIONSが削除されていた

あれ、もしかしてNO_TABLE_OPTIONSってMySQLから消えてる…? tbls でどうすればいいんだ…。— hamaco (@hamaco) 2020年6月11日 上記のツイートで知りました。 NO_TABLE_OPTIONSが削除されたVerのリリースノートは以下です。 docs.oracle.com NO_TABLE_OPTIONS…

spf13/cobraでサブコマンドとして外部コマンドを実行する

Go

tblsには、tbls-cacoo のような外部コマンドをtbls cacoo のようなサブコマンドとして実行できるような機能を実装しています。私はこれを取り敢えず”外部サブコマンド機能”と呼んでいます。 外部サブコマンド機能は、 コマンド名が tbls-XXX という命名規則…

GitHubに1コマンドでいろいろPUTできるツールghputを作った

ghput pr-comment ghput issue-comment のデフォルトの挙動について注意点を追記しました 最近はGitHubやGH:Eといったサービスのリポジトリと、そのリポジトリと連携するCI/CD環境がある前提で、様々なパイプラインを作ることが普通になってきています。 git…

Cacooのデータベーススキーマ機能で、例えばBigQueryのER図を出力する

Go

Cacooで「データベーススキーマを自動生成できる」という素晴らしい機能が先週発表されました。 cacoo.com Cacooが提供するSQLクエリをデータベースで実行して、その結果をCSVファイルとしてエクスポートしてCacooにアップロードするだけでER図が生成される…

データベースドキュメント生成コマンド tbls 更新情報 ( PostgreSQL publicスキーマ表示仕様変更/Amazon DynamoDB対応/goccy ware etc)

Go

ここ最近tblsのアップデートエントリを書いていなかったのですが、最近変更をいくつか行いました。 このまま放置するとちょっと紹介しきれなくなりそうなので、ここら辺で放出しておこうと思います。 紹介時点のtblsのバージョンはv1.29.0です。 PostgreSQL…

いつの間にか https://play.golang.org/ でサードパーティパッケージをimportできるように、なんならgo.modでバージョンやコミットハッシュを指定できるようになっていた(続きあり)

Go

結論は最後に書いてあります。 PTFという社内勉強会で、私が端々が間違っていたりするちょっと微妙な紹介をしてしまったので、改めてエントリに記載しておこうと思います。 PTFについては以下をご覧ください。 tech.pepabo.com The Go Playgroundでいつの間…

PHPerKaigi 2020で開発開始までのオーバーヘッドとその削減について発表をした #phperkaigi

PHPerKaigiに初参加してきました。 phperkaigi.jp 噂に違わぬ面白さでした。発表もとても面白かったのですが、それ以外の充実度が際立っていたカンファレンスでした。 まず、なんといってもトレーディングカードです。 まさか自分がカードになるとは思わなか…

MacBookの電源やWi-Fi、Bluetoothの接続が切れたのをトリガーにコマンドを実行しつづけるCLIツールを作った

Go

2014年のアイデアを実装している— k1LoW (@k1LoW) 2020年1月18日 2週に1度くらいFukuoka Growth Nextのコワーキングスペースを使わせてもらっています*1。 その時ちょっとだけ席を立ちたいときに、展開しているMacBookやバックパックを「置いておくか」「持…

2019年の振り返りと2020年の抱負

明けていました 2019年の振り返り 嵐のように過ぎ去った1年でした。 と言っても残念ながら私が何かを成し遂げたわけではなく、子供の成長についていくのと仕事面でも周りの変化/進化についていくのに精一杯だった受動的な1年だったような気がします。 その結…

bundle installされたgemのソースコードも含めてptで検索する

俺がずっと求めていたコマンドpt 'def logged_in?' . $(bundle show --paths) --color --group | less -R— k1LoW (@k1LoW) 2019年12月24日 $ pt 'def logged_in?' . $(bundle show --paths) --color --group | less -R ptは pt PATTERN [PATH1] [PATH2] ... …

Mackerel plugin (mackerel-plugin-prometheus-exporter) を書いてみた #mackerelio

この記事はMackerelアドベントカレンダー23日目の記事です。 22日はshiimaxxさんのMackerelで負荷テスト中のリソースモニタリングを行うでした! そして今日はMackerel Day #2ですね! Mackerel 5周年おめでとうございます! Mackerel pluginを書いたことが…

Knativeワークショップに参加したあとKnative on kindを構築してみた #serverlessdays #serverlessfukuoka

参加ワークショップが午後からだったときの顔.jpg #serverlessfukuoka— k1LoW (@k1LoW) 2019年12月13日 ServerlessDays Fukuoka 2019にワークショップから本編、懇親会まで参加して楽しんできました! fukuoka.serverlessdays.io 本編ではサーバレスな最新事…

色つけツール colr に、逆に受け取った標準入力から色を消す --erase オプションを追加した

Go

地味に普段から重宝している colr に --erase オプションを追加しました。 colr についての紹介エントリは以下をご覧ください。 k1low.hatenablog.com 色をつけたいことがある。そして色を消したい時がある colrによってカジュアルに色をつけた標準出力を得…

filtに tail -Fなストリームだけでなくcat /path/to/access.log のような標準出力に対しても何度でもコマンドを試行錯誤できる機能を追加した

Go

"トライアルアンドエラーパイプ"ことfiltに、tail -F /path/to/access.log なストリームだけでなく cat /path/to/access.log な標準出力に対しても何度でもコマンドをパイプで繋げて試行錯誤できる機能を追加しました。 k1low.hatenablog.com 今回新たに追加…

PostgreSQLの運用練習の成果をコードで残していっている

RDBMSのレプリケーションなど、なんとか調べてギリギリ理解して組んで、その後新規レプリケーションを組むか障害が発生したとき、また一から調べている気がするので、動く環境として記録していくことにしました。 github.com これはなに 今のところ、Postgre…

第5回Web System Architecture研究会に参加した #wsa研

第5回がまた福岡で開催されるということで、第2回参加から久しぶりでしたが、参加・発表してきました。 発表内容 予稿 github.com 発表資料 発表内容は、「関係する(コンポーネント間で通信をしている)コンポーネントのログの流量の間には相関があるはずで…

filtのコマンド履歴を保存できるようにした

Go

"トライアルアンドエラーパイプ"ことfiltで、パイプに繋いだコマンドの実行履歴を保存して次回filt実行時に補完候補として利用できるようにしました k1low.hatenablog.com コマンド履歴保存の有効化方法 以下のコマンドを実行することで有効化できます。 $ f…

"2 hours" のような文字列をパースして time.Duration を取得する duration パッケージを作った

Go

Harvest のログ取得期間指定をより柔軟にできるように --duration オプションを追加したかったのですが、 標準の time.ParseDuration() ではあまり柔軟ではない 既存パッケージを探したけれども time.Duration を返すものを見つけられなかった ので作りまし…

debパッケージをダウンロードURLを指定して直接インストールしたい

「yumコマンドならできるのに」 そんなことを思ったことが何度もありました。皆さんはどうしているんでしょうか? シェルスクリプトで書くならどんな感じかなと思って書いてみました。 そして、そのシェルスクリプトを毎回コピペするくらいならスクリプト自…

サーバ/プロセスのメトリクスを使ったNagios/Mackerel/Consulのチェックコマンドを作るときに便利な metr を作った

Go

Consulでちょっとしたヘルスチェックを追加したいと思ったのですが、例えば iowaitが高いかつuserは低いとき という条件を書こうとしたときに、「うっ。。!どう書けばいいんだ。。」となってしまったので、作りました。 github.com これはなに metr は次の…

標準入力の指定の文字列に色をつけるツール colr

Go

Go Conference ‘19 Summer in Fukuokaでも少し紹介したcolrです。 github.com これはなに まずは以下のスクリーンキャストをご覧ください colr は tail -F /path/to/access.log のようなログにカジュアルに色をつけるツールです。 $ tail -F /var/log/nginx/…

Goなどでクロスコンパイルしたワンバイナリなソフトウェアを最小工数でdeb/RPMパッケージにしてくれるNFPMが便利

Go

みなさんはdeb/RPMパッケージを作ったことはありますか? 私はtcpdpのパッケージ作成ではじめて作りました。具体的にはここらへんです。 tcpdpはlibpcapに依存していることもあり、DockerでUbuntu/CentOSの環境を作ってその上でコンパイルして、合わせてdeb/…

tblsがデータソースとしてCloud Spannerに対応した

tbls now supports Cloud Spanner !!! https://t.co/TeTg4ulPb6— k1LoW (@k1LoW) 2019年8月12日 約1,000円の資金を投じて作りました。 1000円超えてた。。。 pic.twitter.com/b60FVMw5V6— k1LoW (@k1LoW) 2019年8月13日 Cloud Spannerのスキーマをtblsで出力…

google/gopacket + libpcap で作るツールのパケットバッファ戦略

Go

tcpdpの中のお話です パケットを一時的に保持するバッファ google/gopacket/pcap パッケージでパケットを取得するようなツールを作る場合、2つのバッファを持つことになります。 libpcapが持つバッファ google/gopacketが持つバッファ(バッファ付きチャネル…

tail -F /path/to/access.log のようなストリームに対して何度でもgrepを試行錯誤できるツール filt を作った

Go

filtというツールを作りました github.com これはなに まずは以下のスクリーンキャストをご覧ください tail -F /path/to/access.log のようなログの流れを止めてはgrepをして、止めてはgrepのコマンドを変更してしています。 その間、実は裏では実際のストリ…