Go

データベースドキュメント生成コマンド tbls 更新情報 (テンプレート変更機能/ドキュメント内リンクのbaseUrl変更機能/テーブルリレーション自動検出機能)

Go

https://t.co/bxDrGgWriy がマージされたらtblsの新機能紹介エントリ書く— k1LoW (@k1LoW) 2020年11月9日 無事マージされてさらに便利になったtblsの新機能紹介エントリです。ちなみに、自分が追加した機能は1つもありません。 tblsをさらに便利にしてくれる…

GitHubやSTNSと会話して公開鍵を取得・更新するツールkeypを作った

GMOペパボではLinuxユーザ、グループの管理にSTNSやOCTOPASSを利用しています*1。 stns.jp github.com これらは簡単に言うとそれぞれTOMLファイルやGitHub(GHE)のユーザ情報をデータソースとしてLinuxユーザ、グループ、さらに公開鍵の管理をするものです。…

~/.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カーネル…

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でいつの間…

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

Go

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

色つけツール 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 今回新たに追加…

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

Go

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

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

Go

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

サーバ/プロセスのメトリクスを使った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のコマンドを変更してしています。 その間、実は裏では実際のストリ…

Songmu/timeoutからコマンドの停止処理部分を理解しつつ切り出してk1LoW/execを作っている #gocon

Go

Go Conference'19 Summer in Fukuoka、私の中でもう少し続いています。 exec.CommandContext は "孫プロセスがあった場合にそれが止まらない" #gocon でのsongmuさんの発表を聞いて、孫プロセスを雑に放置してきたなーと思いまして、気持ちを改めようとして…

tblsがデータソースとしてBigQuery / Amazon Redshiftに、出力フォーマットとしてxlsx / PlantUMLに対応した etc.

前回のエントリからtblsにいくつか機能追加をしたので、v.1.15.2時点での現状報告です。 BigQueryを bq:// でサポート 家庭内の要望によりtblsのBigQuery対応を進めています— k1LoW (@k1LoW) 2019年5月11日 データセット単位でドキュメント化できるようにな…

プロセスやホストのメトリクスをトリガーに任意のコマンドを実行できるデバッグ用ツール Sheer Heart Attack を作った

Go

サーバの運用をしていると、 なぜかホストのCPU使用率やメモリ使用率が上昇するタイミングがあるが、なぜ(何が)そのタイミングで上昇しているのかわからない CPU使用率やメモリ使用率を通常時以上に使用しているプロセスにはあたりがついているが、なぜそ…

undockerでdocker imageの中身を確認する

最近、同僚の @r_takaishi からの非常にありがたいPull Requestもあって、sshcの整備を行なっています。 github.com そのときにDockerを利用してSSH接続のインテグレーションテスト環境を(ほぼ @r_takaishi が)作りました。 そして紆余曲折あって、https:/…

tcpdpをPROXY protocolに対応させた

Go

なるほど!面白そうです!— k1LoW (@k1LoW) 2019年1月30日 というわけで、勉強も兼ねてtcpdpをPROXY protocolに対応させてみました。 今回想定したユースケース 私自身がPROXY protocolのユースケースを持っているわけではなかったので、まずは「TCPパケット…

ディレクトリを遡ってMakefileを探してそのディレクトリでmakeを実行するmkを作った

Go

makeコマンド、rakeみたいにディレクトリを遡ってMakefileを探してくれないので面倒— k1LoW (@k1LoW) 2019年2月2日 Goを書くようになってからなのか、GMOペパボに入ってからなのか、make を実行することが多くなったのですが、make はMakefileがあるディレク…

evryの実装をシンプルにした

Go

evry を公開してからオンラインオフライン問わず様々な場でフィードバックをいただいて、それをもとに修正したv0.2.0をリリースしました。 github.com 指定コマンドを実行するための実装をシンプルにした Use `sh -c` instead of go-shellwords by k1LoW · P…

tail -Fなどの標準出力を一定時間ごとに指定のコマンドに渡し、その実行結果をシーケンシャルに出力するコマンド evry を作った

Go

ログの流量やサマリを、カジュアルに、そしてリアルタイムに確認したかったので作ってみました。 github.com これはなに 標準入力の内容を、一定時間ごと(もしくは一定行ごと)にまとめて指定のコマンドに渡し、その実行結果をシーケンシャルに出力するコマ…