タグ

ブックマーク / hirose31.hatenablog.jp (19)

  • InfluxDB をちょっとさわってみた - (ひ)メモ

    InfluxDBとは http://influxdb.org メトリクスやイベントといった時系列データを格納するのに適したデータストアです。 ちなみに go で書かれています。 ちなみに 2013のOpen Source Rookiesに選ばれました。 InfluxDBの特徴 RRDやMySQLに時系列データを格納する場合と比較して、InfluxDBの特徴を紹介します。 バックエンドは LevelDB LevelDBとは、キーでソートされた状態で可能されたKVSです(Google製)。詳しくはこのへん参照のこと。 http://en.wikipedia.org/wiki/LevelDB https://code.google.com/p/leveldb/ https://speakerdeck.com/smly/influxdb-and-leveldb-inside-out 将来的にLev

    InfluxDB をちょっとさわってみた - (ひ)メモ
  • プロセス間の期限付き排他ロック - (ひ)メモ

    追記 2013-03-04 [twitter:@dankogai] さんにも言及されてました>< 404 Blog Not Found:perl - soloで任意のコマンドを期限付きで排他実行する 追記 2013-03-01 つづきを書きました。 続・プロセス間の期限付き排他ロック - (ひ)メモ 追記 2013-02-27 コメント欄でのやりとりの通り、穴がある(クリティカルセクションに複数プロセスが突入する可能性がある)のでちょっと出直してきます!! やりたいこと プロセス間の排他的実行を制御したい 一定時間経過したら実行できるようにしたい 例えば、フェイルオーバーを実行するスクリプトは、何度も実行できるとフェイルオーバー/バックを繰り返してフラップするので、一度フェイルオーバーしたら一定時間は実行できないようにしたい 実装 シンボリックリンクを使って排他制御する 期限切れは、シンボ

    プロセス間の期限付き排他ロック - (ひ)メモ
  • Re: UNIX Command Idioms - (ひ)メモ

    Re: [twitter:@riywo]'s UNIX Command Idioms ps auxwwwwwww number of "w" depends on my mood in that day :D ps auxwwwwwwwww -L netstat -tna / -una / -tnl / -tnap tar xvf tar zxvf / jxvf / Jxvf are boring trailing slash in rsync rsync -av file [file] HOST:dir/ rsync -av dir/ HOST:dir/ tcpdump -i any -nlx strace -s 100 -fFTttt diff -u /path/to/file <(ssh host cat /path/to/file) see also: http://d.haten

    Re: UNIX Command Idioms - (ひ)メモ
  • WEB+DB PRESS Vol.73にRedisの特集記事を書きました - (ひ)メモ

    WEB+DB PRESS Vol.73にRedisの特集記事を書きました。 2/23発売なので、もう書店に並んでいると思います。 http://gihyo.jp/magazine/wdpress/archive/2013/vol73 WEB+DB PRESS Vol.73 作者: 設樂洋爾,白土慧,はまちや2,大和田純,松田明,後藤大輔,ひろせまさあき,小林篤,近藤宇智朗,まかまか般若波羅蜜,Mr. O,川添貴生,重国和宏,柳澤建太郎,奥野幹也,佐藤鉄平,後藤秀宣,mala,中島聡,堤智代,森田創,A-Listers,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2013/02/23メディア: 大型購入: 12人 クリック: 131回この商品を含むブログ (7件) を見る 前半がRedisの概要、2.6の紹介と運用系の話で自分が担当、後半がRedisのコマンドや実

    WEB+DB PRESS Vol.73にRedisの特集記事を書きました - (ひ)メモ
  • 感情に訴えかけるログ、 Log::Minimal::Emotional !!!! - (ひ)メモ

    某所で 人間の脳には人の顔を識別するための特別な神経回路が最初から組み込まれていて、人の顔の違いを見分けたりというのが、他の図形よりも格段に高速に行えるようになっています。ということで、ログメッセージに顔文字を入れてみたら、なにこれすごいヽ(=´▽`=)ノ ってなったところ。 という発言をみかけたので、つくりました。 Log::Minimal::Emotional - https://gist.github.com/hirose31/4958764 「エモーショナル」はお好みなものに容易に再定義可能です。 #!/usr/bin/env perl use strict; use warnings; use utf8; use Log::Minimal::Emotional; $Log::Minimal::Emotional::EMOTION->{CRITICAL} = '⊂二二二( ^ω^)

    感情に訴えかけるログ、 Log::Minimal::Emotional !!!! - (ひ)メモ
  • bashのhistoryに時刻を表示する - (ひ)メモ

    追記: HISTTIMEFORMATが使用可能なbashのバージョンを明記。あざーっす> id:kdaiba bash 3.0から(2.05bを含んでそれより以前のはダメ)使用可能なHISTTIMEFORMATという環境変数を使うと、ヒストリに時刻も記録できると同僚に教えてもらた。これは便利。 $ HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTTIMEFORMAT $ man ci $ man co $ shutdown now && echo nigeteeeee | wall && shutdown -c $ history 1 2008-01-17 15:42:48 HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTTIMEFORMAT 2 2008-01-17 15:42:52 man ci 3 2008-01

    bashのhistoryに時刻を表示する - (ひ)メモ
  • dstatの万能感がハンパない - (ひ)メモ

    サーバーのリソースを見るにはグラフ化は重要ですが、推移ではなくリアルタイムな状況、例えば秒単位のスパイキーな負荷を見るには、サーバー上でvmstatやiostatなどの*statファミリーを叩く必要があります。 さて、vmstatはメモリの状況やブロック数単位のI/O状況は見られますが、バイト単位のI/O状況やネットワークの送信、受信バイト数を見ることはできません。 # vmstat 1 procs -----------memory---------- ---swap--- -----io----- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 0 4724956 355452 726532 0 0 54 484 3 3 1 0 99 0 0 2 0 0 47

    dstatの万能感がハンパない - (ひ)メモ
  • HTML5のapplication cacheがつかえない件 - (ひ)メモ

    ちょっと思い違いをしていたのでメモっておきます。 HTML5にはオフラインでも参照できるapplication cacheという機構があります。 HTML5 Rocks - A Beginner's Guide to Using the Application Cache 6.6 Offline Web applications ― HTML Standard 「ローカルキャッシュなんで速いし!サーバーの負荷も減るし!!」と思ってちょっと試してみたんですが、これ、動的なページが基Webサービスには役に立ちません。 application cacheは、HTMLに <!DOCTYPE html> <html manifest="/cache.manifest"> <head> ...という風にキャッシュの指示ファイル cache.manifest を指定して、そこでキャッシュするとかしな

    HTML5のapplication cacheがつかえない件 - (ひ)メモ
  • そういえばsshfsが便利な件 - (ひ)メモ

    以前はリモートのファイル編集するのにEmacsでTRAMP使ってたんですが、sshfsの方がシェルでcdとかlsできるし、Emacsでoccurとかもできるしいいよねってんで最近はsshfs使ってます。 で、sshfsしたいホストが多いといろいろめんどくなるんで、↓みたいなヘルパスクリプト書いて使ってましたよって話です。 マウントポイントをまとめておくディレクトリ(~/r/とか)の下に、予めsshfsするリモートホストの名前のディレクトリを作っておきます。sshするときユーザー名が必要なホストはUSERNAME@HOSTNAMEでmkdirしときます。 $ cd ~/r/ $ mkdir host1 $ mkdir foo@host2 あとは末尾のヘルパスクリプトで、sshfsでマウントしたり、sshfsなマウントポイントの一覧を見たり、アンマウントしたりできます。 $ ./m host1

    そういえばsshfsが便利な件 - (ひ)メモ
  • LinuxのLVS(IPVS)でMySQLをロードバランスするときはtimeoutに注意 - (ひ)メモ

    構成 [appサーバ] -> [lvs] -> [MySQL]群 DRでMySQLのスレーブ群にロードバランス appサーバはDBコネクションのプーリング、永続化をしている 問題の現象 DBサーバ上ではmysqldへのコネクションが存在するのに、appサーバ上ではコネクションが存在しない。(netstat調べ) →無用なコネクションが残留するせいで、MySQLのmax_connectionsに達してしまう。 原因 MySQLの世界の無通信時のコネクションのタイムアウトはデフォルトで 28800秒 (8時間)。一方、IPVSの世界の無通信時のタイムアウトはESTABLISHEDなコネクションで900秒 (15分)。 # ipvsadm -Ln --timeout Timeout (tcp tcpfin udp): 900 120 300なので、DBコネクションの永続化等でコネクションを張りっ

    LinuxのLVS(IPVS)でMySQLをロードバランスするときはtimeoutに注意 - (ひ)メモ
  • WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ

    だいぶ前の記事(2007/04〜2008/2の連載記事)ですが、WEB+DB PRESSで連載していた拙著の『スケーラブルWebシステム工房』の記事を公開しました。ふと、思い出したので。 連載目次 第1回 いろんなものをロードバランス ― MySQL、SMTPサーバ… 第2回 DRBDとkeepalivedで、障害性の高いストレージサーバの構築 第3回 監視にまつわるエトセトラ 第4回 LinuxとVLANで作る、シンプル&スケーラブルネットワークの極意 第5回 止まらないネットワークの極意 ― bonding × リンクアグリゲーション × スパニングツリー 第6回 見逃さない通知の極意 これらの文書は、ソフトウエアの名称、バージョン、設定項目、社名などの固有名詞などなどは当時のまま掲載しています。 ですので、インストール手順や設定内容は最新版のドキュメントを参照していただき、この文書か

    WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ
  • nginxで名前ベースのバーチャルホストの複数指定をするときの注意点 - (ひ)メモ

    先日、wikipedia:冒険遊び場 に参加してきて、森の中を駆けずり回ったり、泥んこ遊びをしたり、たき火でおにぎりや焼きイモを焼いたりましまろを炙ったりしてべたhirose31です。あといまだにnginxかngnixかつづりがおぼえられないhirose31です。 nginx (0.6系) で、ひとつのserverブロックで複数の名前ベースのバーチャルホストを設定するには、server_nameディレクティブをこんな感じで指定します: 列挙する: chikin.curry.example.com beef.curry.example.com pork.curry.example.com 先頭(か末尾)にワイルドカード: *.curry.example.com 正規表現 ここで注意しなければならないのは、nginxがLocationヘッダのリダイレクトをする場合です。例えば、http://

    nginxで名前ベースのバーチャルホストの複数指定をするときの注意点 - (ひ)メモ
  • 外部からChromeをリロードする - (ひ)メモ

    自分のノートPCに開発用マシンから ssh ではいれるようにするのは嫌だしめんどくさいなーとおもったので、perl でちょろっとかいたら快適にうごいた。 http://d.hatena.ne.jp/tokuhirom/20110304/1299221559 sshではいるのは確かにアレなので、自分もHTTPでコマンドうけつけるdaemon書いてそれ使ってます。ただ、自分のMacにはPlack入ってないのでHTTP::Daemonを使ってます。 https://gist.github.com/894033 MacChromeAppleScriptで制御できる(リロードできる)ってのをid:os0xさんに教えてもらったので、MacならばChromeRepl要らずでできました! vim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分で

    外部からChromeをリロードする - (ひ)メモ
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

    目的 フロントがHTTPリクエストを受けて、バックエンドのアプリケーションサーバにreverse proxyするような構成において、指定秒数以内に何かしらのレスポンスを返したい。 200が返せない場合は、処理を打ち切って500を返したい。 背景 フロントでApacheやNginxをreverse proxyとして使っている場合、バックエンドが無応答になってしまうと、クライアントにレスポンスが返るのはデフォルトで数十〜数百秒後(ApacheのTimeoutのデフォルトは300秒、Nginxのproxy_read_timeoutのデフォルトは60秒)になってしまいます。 通常のWebサービスではこのオーダーのタイムアウトでもいいのかもしれませんが、数秒以内に(エラーでもいいので)レスポンスを返すことが求められる環境も存在します。(最近、特に多いのではないでしょうか:P) もちろんバックエンドが

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
  • ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ

    ぼくは長年こういう方法で管理してますよ、というお話です。Linuxです。 ディレクトリレイアウト概観 たとえば、asoとbmdという名前のソフトウエアをインストールしている状態はこんな感じ: /usr/local/ ┬ app/ ┬ aso → aso-1.3 │ ├ aso-1.2/ ┬ bin/ ┬ armored │ │ │ └ scrum │ │ ├ sbin/ ─ syd │ │ └ share/ ─ man/ │ ├ aso-1.3/ ┬ bin/ ┬ armored │ │ │ └ scrum │ │ ├ sbin/ ─ syd │ │ └ share/ ─ man/ │ ├ bmd → bmd-2.0 │ └ bmd-2.0/ ┬ bin/ ─ tri │ ├ include/ ─ angle.h │ └ lib/libsnk.so.2.0.0 ├ bin/ ┬ armor

    ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ
  • 多すぎて使えないオプション選手権 - coreutils-7.6 編 - (ひ)メモ

    さあ!栄冠の一位は誰の手に!? 発表はわっふるわっふるの後で!! わっふる! わっふる!! lsさん、オプション大杉>< ls.c : 40 abcdfghiklmnopqrstuvwxABCDFGHILNQRSTUXZ1 pr.c : 30 -0123456789DFJNTWabcdfhlmortvw od.c : 26 AaBbcDdeFfHhIijLlNOoSstvXx sort.c : 24 -bcCdfghikmMnorRsStTuVyz cp.c : 20 abdfHilLnprstuvxPRST uniq.c : 20 -0123456789Dcdfisuwz du.c : 17 0abchHklmsxBDLPSX ptx.c : 17 AFGMORSTWbifgotrw tail.c : 17 cnfFqsv0123456789 fmt.c : 16 0123456789c

    多すぎて使えないオプション選手権 - coreutils-7.6 編 - (ひ)メモ
  • 安全に一気にファイルの内容を書き換える - (ひ)メモ

    ファイルを書き換えるときに、単純に open, write, close だと、そのファイルの性格にもよりますが、問題になるケースがあります。 書き込み処理中に異常終了しちゃった 例えば open my $fh, '>', '/foo/bar'; print $fh gen_header(); print $fh gen_section_1(); print $fh gen_section_2(); # ← die print $fh "# EOF\n"; close $fh な処理で、get_section_2 が異常終了してしまうと、その後書き込まれるはずのものが書き込まれずファイルの内容が中途半端になってしまいます。(まぁでもこのケースはエラー処理をちゃんとやれば回避できますね) 書いている途中で読まれちゃった サーバ名一覧のような定義ファイルや、毎回読まれるタイプの設定ファイルの場

    安全に一気にファイルの内容を書き換える - (ひ)メモ
  • gitのブランチ名をプロンプトに表示すると結構便利 - (ひ)メモ

    gitの配布物に含まれる contrib/completion/git-completion.bash を . すると、gitのサブコマンドやそれに応じたオプション、加えて~/.gitconfigで自分用にaliasしたサブコマンドまで補完してくれるようになり、小学生もにっこりです。 同じく git-completion.bash の中で定義されてる関数 __git_ps1 を使ってシェルプロンプト($PS1)を設定すると、 #... if [ -r "$HOME/.bash_completion.d/git" ]; then # = git-completion.bash # boldにするエスケープシーケンスは省略してます PS1="${PS1}[\$(__git_ps1 \"%s)\")\w]\\$ " else PS1="${PS1}[\w]\\$ " fi #...こんなふうにg

  • コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ

    誰に教えられたのでもないのですが、ぼくは冬眠前のリスのようにコード片を溜め込んでいます。 コード片とは、ライブラリにするほどまとまった大きさではない、数行〜十数行のコードのことで、溜め込んだコード片は、アプリケーションやツールを作るときに使っています。 例えば「Perlでメール送るのどう書くんだっけかな」とか「Pythonでファイル開いて全部読むのどう書くんだっけかな」とかというときに、溜め込んだ中からコード片をさっと取り出してコピペした後、なじむようにちょっと修正して使っています。 コードポケット コードを溜め込んでいるディレクトリをぼくは「コードポケット」と名付けていて、コード片を取り出すことを「ポケットからコードを取り出す」と呼んでいます。先日、知り合いが似たようなことを実践していて、その人は「コードスケッチ」と呼んでました。いい名前ですね。 ぼくの場合、コードポケットは ~/lan

    コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ
  • 1