weblog of key_amb

主にIT関連の技術メモ

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 <データベー…

MySQL binlog_format とバイナリロギング、レプリケーションについて

少し雑なメモです。 MySQL で binlog を記録するかどうかについて。 master で binlog を書き込まなければ、レプリケーションもされません。 --binlog-do-db (master 側) や --replicate-do-db (slave 側) のようなオプションは運用従事者ならご存知の方も多…

(メモ) nghttp2 を MacOSX の特定パス上にビルド

最初、homebrew で入れたのだけど、よく見たらバージョンがかなり古かったので、最新をインストールしたくなった。 自分の環境は Mac OSX Yosemite。 基本、 Kazuho's Weblog: [memo] Installing nghttp2 onto OSX を参考に。 下準備 自分の環境で足りてなか…

(メモ) redis の運用で気をつけること

KVS

雑なメモ。 大量に key があるときの注意 1M 以上 key があるときに、気軽に keys * などのコマンドを乱発するものではない。 他のクライアントが待たされることになる。 試したバージョンは redis 2.6。

(メモ) postfix で特定の宛先のキューを削除する

MTA

元ネタ: Postfixのメールキューから指定の配信先メールだけ削除する #!bash TARGET_DOMAIN="example.com" for id in `postqueue -p | grep $TARGET_DOMAIN | awk '{print $1}'`; do postsuper -d $id sleep 0.02 # なんとなく sleep しておく done 以上。

(メモ) S3 バケットの使用ストレージ量を調べる

AWS

雑なメモです。 1. マネジメントコンソールの Usage Report で確認 参考: AWS S3のバケット別使用量を調べる | Siguniang's Blog 2. aws cli で aws s3 ls --summarize で合計オブジェクト数、合計サイズが出力できます。 $ aws s3 ls s3://mybucket/path --…

Gotanda.pm #6 で障害について話してきた #gotandapm

こんにちは、@key_amb です。ご無沙汰しています。 最近ブログの更新が遅れてまして、なんとなく申し訳ない気持ちになっている今日このごろです。 なんと、2ヶ月も更新してなかったんですね。*1 さて、前回の Gotanda.pm #5 では、テーマ(「高速化」でした)…

吉祥寺.pm で Perl と Perl 以外の運用について発表しました #kichijojipm

7/10(金) 吉祥寺.pm #4 で発表をしてきました。 お題が「PerlとPerl以外」ということだったので、PerlとPerl以外のWebアプリケーションのサーバサイド運用について話そうかなーと思い、発表枠で申し込みました。 …で、下のスライドで話をしました。 PerlとPe…

JAWS-UG Meguro #1 で LT をしてきました #jawsmeguro

昨日、JAWS-UG Meguro #1 で LT をしてきました。 今回のテーマは「DB(データストア)」とのことで、MySQL on EC2 や DynamoDB、Cognito Sync、Amazon Aurora 等についてのトークがありました。 私が発表した資料は下のものになります。 とある AWS サービ…

Gotanda.pm #5 で Koyomi の LT をしてきました #appkoyomi #gotandapm

今日は1周年を迎えた Gotanda.pm #5 で Koyomi の LT をしてきました! Koyomi は私が個人で開発している分散ジョブスケジューラです。 v0.1 をリリースした際に、下のエントリで紹介しました。 シンプルな分散ジョブスケジューラを作ってみた #appkoyomi - …