読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

Hugoのドキュメント用テーマ「bootie-docs」v1.3までの更新について

Go製の静的サイトジェネレータHugo向けに、Bootstrapを使った簡素なドキュメンテーション用のテーマBootie Docsなる物を以前に作って、折りに触れてメンテナンスしています。 今回は特に大きな変更や機能追加はないのですが、互換性のない変更もありますので…

MECEな木構造による分類方法の提供は要求定義を間違えているのではないか

一昨日ふと思ってSNSに何件か短文を投稿したのですが、今後この件について再考したり、何か作ったりすることもあるかもしれないなと思ったので、記録がてらにこちらにも投稿しておきます。 タイトルについて ケース・バイ・ケースで、それで十分ということも…

メモ:ソフトウェアにキラキラネームを付けることの功罪について

あるソフトウェア・プロダクトを開発するにあたって、名前を決めたい。 次の2つの選択肢を考える。 キラキラネームを付ける。 神様の名前とか、古語とか、プロダクトの機能と紐付かない固有名詞っぽい名前 機能に即した名前を付ける。 …で、前者の後者に対す…

bashrc 内で bind を使うとリモートからコマンド実行時に警告が出る

peco などを快適に使うために ~/.bashrc 内で bind コマンド*1を使って、キーバインドをカスタマイズしています。 このとき ssh $host "コマンド" のようにリモートからコマンドを実行すると、 ~/.bashrc から bind を実行する行で、下のような警告が出ます:…

2016 年を Software Engineer として振り返って

はじめに 概要と、昨年との比較 2016年に作ったもの ピックアップ shove (ShellScript) fireap (Ruby) poloxy (Ruby) grifork (Ruby) perl5-App-Memcached-CLI 関連記事 他に、こんなのも作ってました Contributions 勉強会で発表した 終わりに OSS 活動と業…

ちょっとしたワークフローエンジンを作るときは Rake で十分だと思う

Ruby なら特に。 Ruby 以外でも、使えるケースはありそう。 Rake には次のような機能が有る。 タスクの依存関係定義 並列実行 別のタスクの呼び出し また、タスクを記述する Rakefile 内では Ruby の文法が使えるので、特に外部の gem を使わなくても、任意…

Ginza.rb で "grifork" について発表してきた

10/18(火)に、第40回の Ginza.rb に参加してきました。 初参加でしたが、今回は他にも初参加の方が8名ほど(?)いらしていたようです。 Ginza.rb では、毎回、別々のテーマについて会を催しているようです。 今回は「自分でつくったものを見せてみよう」とい…

ssh と rsync だけで Tree Deploy を実現する "grifork" を作った

はじめに〜fireap to grifork Tree Deploy とは grifork: standalone モード grifork: grifork モード 使い方 動作例と実行ログ 今後の展望 余談〜デプロイの未来について おまけ〜grifork の語源 はじめに〜fireap to grifork 約半年前に fireap というデプ…

"clenv" がそこそこ xxenv っぽく使えるようになってきた

3日前に上の記事を書いたばかりですが、また少し工事をしたので、自分の中での整理も兼ねて、お知らせ。 "clenv" は私が趣味で作っているもので、シェルスクリプトのパッケージ管理ツールのようなものです。 ソースコードは https://github.com/key-amb/clen…

シェルスクリプト用テストツール "shove" v0.8 までの更新のお知らせ

シェルスクリプト用のテストツール "shove" を作って、初めて上の記事で紹介したのは約5ヶ月前になります。 今回は、上記事の時点からこれまでの主な差分をお知らせします。 言うなれば CHANGELOG + αな記事となります。 shove は GitHub で公開しています。…

"clenv" というシェルスクリプトのモジュール管理ツールを引き続き作っている

keyamb.hatenablog.com 上の記事を書いたのが3ヶ月前ですね。 趣味で作っているのでだいぶ波があるのですが、初コミットからは5ヶ月ほど経ちました。 "clenv" って何? "clam" モジュール NEW - "cload" コマンドと "cllib" 関数 NEW - shims/ に shim を置…

enhancd を改修して引数なし cd コマンドの挙動を変えずに使えるようにした

先日、上の記事を書きました。 記事末尾に「余談」として、次のように書きました。 もう1つ enhancd による cd の挙動変更でときどき戸惑うのは、 cd 単体で実行したときです。 enhancd ではこのときもディレクトリ履歴検索による選択画面になります。 これ…

RSpec で example の外で定義したローカル変数を使うのはアリか?

※9/3 @jnchito さんのコメントを受けて追記しました。 RSpec で example の外で定義したローカル変数を使う テストコードの例 特徴・用途 「アリ」なのか、「ナシ」なのか? 2016/9/2 現時点の結論 9/3 追記:ローカル変数が使えそうな例 (1) 長いメソッド等…

enhancd を改修して "cd -" や "cd .." の挙動を変えずに使えるようにした

Bash で enhancd を導入することにした cd の履歴を peco で移動したい。 シェル環境で peco を使いだした人なら、きっとそう思うことがあるでしょう。 zsh だと、cdr と組み合わせることで実現できます*1。 下の記事あたりを参考に設定するといいでしょう。…

Bash Infinity よりずっと前に Bash on Rails なるものを作った人がいると記録しておく

備忘録を兼ねて、ブログを書いておきます。 きっかけは、昨日のはてブでホットエントリに上がっていた下の記事です。 元記事から、GitHub のソースコードにたどりついて、少しだけ内部のコードを読みました。 https://github.com/niieani/bash-oo-framework …

Googleサイト上の個人WikiでMarkdown Hereを使うことにした

気づけば1ヶ月以上ブログの更新が滞っていたようです(汗) いくつか小ネタが溜まっているので、隙を見て消化していきたいと思っています。 さて、半年ほど前に、日々の個人的な雑メモは こちらの Google サイト に書くことにしました。 その経緯については、…

#PrometheusCasual #1 に行ってきた

発表資料 @wyukawa Hadoop, Fluentd cluster monitoring with Prometheus and Grafana @mtanda Prometheus on AWS @tokuhirom promgen - prometheus management tool kawamuray HBase, Kafka cluster monitoring with Prometheus and Grafana @moznion 5分で…

6/8 appengine ja night #33 に行ってきた #gcpja

後でブログ書こうと思って、土日にも書くのを忘れていた(汗)のですが、珍しく早起きして思い出したので、今更ブログを書いています。。 というわけで、掲題の通り、6/8 に appengine ja night #33 に行ってきました。 ご存知、GAE こと Google App Engine の…

Ubuntu + xkb で JISキーボードのキー配置入れ替え

はじめに 仕事で使っている Mac は、昔USキーボードがかっこいいと思っていた頃にUSキーボードにしたままなのですが、家ではJIS配置のキーボードを使っています。 JIS配置の場合、「変換」「無変換」キーが余ること、「半角/全角」「Esc」キーが遠いことから…

"clenv" というシェルスクリプトのパッケージ管理ツールのようなものを作った

主に先月、開発していました。 いまバージョンは 0.1.12 です。 最近、久しぶりにやりかけだった機能拡張を進めようかと思ったのですが、拡張した機能を今後、自分自身でもあまり使うイメージが持てなくて、現状をひとまずこの記事にまとめておくことにしま…

アラートをまとめるシステム "poloxy" の v0.2 をリリースしました

前回の記事で紹介した poloxy をその後リリースして、本稿の執筆時点で v0.2.1 までバージョンが進みました。 ※5/8 v0.3.1 になったので追記しました。 目次: "poloxy" とは Motivation Current Status (※5/8 追記アリ) Milestone (余談) Another Approach …

ドキュメンテーション用の Hugo のテーマ "bootie-docs" を改善しました #gohugo

Bootie Docs はちょうど一年前ぐらいにドキュメンテーション用の静的サイトジェネレータがほしくて作った Hugo*1 の Theme (テンプレート)です。 当時の記事はこちら: Hugo で "bootie-docs" というドキュメンテーション用のテーマを作った #Hugo - weblog …

西日暮里.rb で "poloxy" というアラートシステムの話をした #ninirb

昨夜、GW 突入前に下の勉強会に参加してきました。 西日暮里.rb ゴールデンだよLT大会 @ 秋葉原UDX!! - 西日暮里.rb | Doorkeeper poloxy は未完成なのですが、"pool" + "proxy" の造語で、通知の送信者と受信者の間で動いて、流量をコントロールしたりし…

find ... xargs ~ のラッパーを2つ書いたけど ag に移行していこうと思う

自分がよく使うコマンドを、自分が使いやすいオプション付きでラッパー化しました。 自分はこれまで ag(the silver searcher) をほとんど使っていなかった *1 ので、いつもこんなコマンドを叩いていました。 …が、このエントリを書くにあたって改めて調べた…

"shove" というシェルスクリプト用のテストツールを作った

CONTENTS: "shove" とは Motivation こんなツールにしたい 使い方について 中で何をやっているのか おわりに "shove" とは こちらです。 github.com 動作イメージとしては README.md にも貼っているスクリーンショットがわかりやすいと思うので、こちらにも…

渋谷.rb で "fireap" という pull 型デプロイツールの話をした #shibuyarb

拙作の fireap について、最初のお披露目記事(↓)を書いてから1ヶ月と少しが経ちました。 それから Ruby 系の勉強会に参加する機会を伺っていたのですが、ようやく昨日 4/20 に 渋谷.rb[:20160420] で少し話すことができました。 下がその発表スライドになり…

Bash で pathctl という PATH 操作ツールと bb という簡易ベンチマークツールを書いた

小さな Bash のスクリプトを2つ書いたという小ネタです。 使い方 1. pathctl 環境変数に対する push, pop, shift, unshift 操作を提供します。 #!bash source pathctl.shrc pathctl_push /path/to/your-bin # 末尾に追加 pathctl_unshift /path/to/your-bin …

時系列DBって結局どれがいいんだっけ #TSDB

※4/6 その後調べた情報などを記事末尾に追記 前提となるニーズ サーバの負荷情報とか、アクセス状況のような KPI を取得・保存し、可視化(参照してグラフ化)したい。 リアルタイム性が要求される。5分以上前のデータしか見れませんみたいなのはお呼びでない…

Git のリポジトリを1コマンドで統合できるシェルスクリプトを書いた

気づいたら GitHub にリポジトリが40個以上ありました。 古いものは作りかけだったり、実験して後に放置したものなどがいろいろありました。*1 そのままでも特に困ることはなく、これまで気にすることはなかったのですが、最近ときどき邪魔だなと思うことが…

DateTime::Format::Strptime にパッチを送った話 #Perl

CPAN モジュールの DateTime::Format::Strptime は DateTime と同じ Dave Rolsky さんが開発しているもので、日付時刻を含む文字列のパースによく使われているのではないかと思います。 このモジュールの挙動が v1.58 から変わっていました。 #!perl use fea…

Gotanda.pm #8 で memcached-cli について喋ってきた #gotandapm #memcached

既に2回このブログで紹介している memcached-cli について、昨日開催された第8回 Gotanda.pm で LT してきました。 資料はこちらです。今回は Speaker Deck に上げてみました。 Speaker Deck だとスライド中のリンクが無効になる(?)ようなので、いくつか貼…

Ruby コード中の "=" や "=>" を整列してくれる "ruby-align" というツールを作った

こちらになります。 github.com 使い方・動作例 ruby-align [-f] ファイル で結果を標準出力に吐きます。 README には vim の設定例を書いてますが、エディタから呼んでその場でコード整形すると捗るかと。 動作例としては、README に挙げたものをこちらにも…

memcached-cli の v0.9.4 までの追加機能の紹介

3/24 の記事で、最近作った memcached-cli というツールの紹介をしました。 keyamb.hatenablog.com 別に困ってはいないのですが、もっと便利にしたので、Changes から抜粋して追加機能を紹介しておきます。 昨日か一昨日に手元に入れて試してみた、という方…

Memcached に対話的にコマンドを実行できる "memcached-cli" を作った

Redis*1 には redis-cli というツールがあって、Redis サーバに接続して対話的にコマンドを発行して、結果を得ることができます。 Memcached*2 の場合、いい感じに使えるツールがなくて*3、必要なときはいつも TELNET でつないでコマンドを実行していました…

Consul クラスタ上で動作する S3 非依存の pull 型デプロイツール "fireap" を作った

github.com fireap = fire + reap です。 Consul Event を発火(fire)して、受信側でそれを収穫(reap)する、という意で。 読み方は「ファイリープ」で良いかと思ってます。 どんなツール? GitHub に上げた README.md より、かいつまんで日本語に変換しつつ説…

Consul Kv の Lock 機構の仕様と使い方のメモ

Consul の Kv は気軽に使えるデータストレージという印象だけど、ロック機構もあるようだ。 何度かドキュメントに目を通したけど、イマイチ使い所がわからなくて素通りしていた。 が、意を決して読み込んで手元で試したりして、だいたい理解できたと思うので…

git push する前に stash して pull --rebase してくれるシェルスクリプト書いた

git push しようとして陥りがちなパターン: remote branch が更新されてて push がこける local 差分があるため git pull --rebase できない こういうケースでイライラしないために、 git stash && git pull --rebase && git push && git stash pop みたいな…

Unbound と Consul を組み合わせて使う方法について

DNS キャッシュサーバの Unbound と DNS インタフェースを持つサーバ・クラスタ管理ツール Consul を組み合わせて使う方法について。 Consulの公式ドキュメントには、BIND や dnsmasq と組み合わせる方法が載っている。 Unbound はどうだろうとふと気になっ…

Ruby で TOML を使うための gem

Ruby で TOML*1 を使いたいと思って RubyGems.org を探したところ、ダウンロード数の上位3つは、順に以下だった。 https://rubygems.org/gems/toml (v0.1.2) https://rubygems.org/gems/tomlrb (v1.2.0) https://rubygems.org/gems/toml-rb (v.0.3.10) 結論…

コンテナ型仮想化のメリット・デメリット

サーバインフラ運用の観点から。 メリット 起動が高速なので急な負荷上昇時に迅速にスケールアウトでき、機動的なキャパシティ制御(リソース管理)が可能。ピーク負荷に備えておくために、余分に起動しておくということが不要になり得る。 ただし、コンテナを…

CentOS 7 では iptables が firewalld になっている

デフォルトで有効になっていることがあるが、 service iptables status や systemctl status iptables では当然見つからず、一見止まっているように見えるので要注意です。 これに気づかず、Vagrant で private_network を作って VM 間通信できないな、おか…

CentOS 7 で特定の (IP, port) に対する通信が可能か確認

CentOS 6 な環境では、下の記事にあるように nc -zv $ip $port で確認できる。 IPv4 な環境では nc -zv4 でいい。 【初心者向け】各OSのTCP通信チェックコマンド入門 | Developers.IO が、CentOS 7 の nc は nmap-ncat に置き換えられている。 だいたい同じ…

daemontools のない環境で envdir 的なことをする

daemontools*1は便利だけど、時には使えない環境もあると思う。 そんな環境で envdir 的なことをしたいとき、どうするかという問題。 envdir とは ドキュメントに書いてあるけど、指定したディレクトリ以下のファイルの中身を読み込んで、環境変数を読み込ん…

ライブラリの ver. up 後、翌日3時にシンボルが見つからなくなる

CentOS 6.x でライブラリ rpm の ver-up をしたときの話。 依存プログラムをそのときに再起動したのだけど、翌日3時になるとなぜか共有ライブラリが見つからないのようなエラーが。 このとき、プロセスがどんなライブラリを開こうとして何が見つからなくなっ…

AWS CLI で Access Key から IAM 情報を取得

AWS

aws iam get-user でできます。 aws iam get-user --user-name Foo で Foo ユーザの情報を取得しますが、省略した場合には、aws cli を叩いている人の情報を取ってくれます。 もちろん、IAM 参照権限が必要になりますが。 参考 get-user — AWS CLI 1.10.9 Co…

psql でパスワードを聞かれずに PostgreSQL に接続する

PGPASSWORD=xxx psql -h $Host -U $User -d $Db 参考 https://www.postgresql.jp/document/9.4/html/libpq-envars.html

雑なメモをいくつか Google サイトに移してみた

最近メモレベルの雑な記事を連投していました。 まあ、Evernote に書くよりはいいよねって思うのは以下記事に同意して。 blog.kyanny.me とはいえ、一応このブログをわざわざ読者登録して読んでくれている方もいる様子。 あまり雑なエントリばかりでも、なん…

シェル上で特殊な文字が入ったファイルを削除する方法

主に使ってるのは Bash で Linux です。 先頭に - ハイフンとか入ってると困ることがあります。 1) '' で括る rm '*' 2) \ でエスケープ rm foo\ bar 3) -- を前置 -- でオプション解析を止める。 rm -- -f 4) パス指定 rm /path/to/-i rm ./-v 参考 man rm

(メモ) PostgreSQL サーバの kernel パラメータ調整

公式マニュアルを読むべし。 PostgreSQL 9.4.5文書 - 17.4. カーネルリソースの管理 Linux の場合は以下2つを変更する例が書いてある。(マシンのリソースに応じて要変更) $ sysctl -w kernel.shmmax=17179869184 $ sysctl -w kernel.shmall=4194304 他のデフ…

(メモ) PostgreSQL の操作覚え書き

PostgreSQL の操作を毎回忘れてググってしまうので、ここに追記していく。 MySQL に慣れ親しんだ PostgreSQL 初心者向けになる予定。(私がそうなので) psql CLI クライアント。 // 接続 $ psql [-h <ホスト名>] [-p <ポート>] -U <ユーザ名> [-d <データベー…