wtatsuruの技術方面のブログ

はてなスタッフ id:wtatsuru です。日常ブログはこちら https://tatsuru.hatenablog.com/

mysql client での localhost

  • 特別扱いされてる。へぇ。

localhost is a synonym for your local host name, and is also the default host to which clients try to connect if you specify no host explicitly.
To avoid this problem on such systems, you can use a --host=127.0.0.1 option to name the server host explicitly. This will make a TCP/IP connection to the local mysqld server. You can also use TCP/IP by specifying a --host option that uses the actual host name of the local host. In this case, the host name must be specified in a user table row on the server host, even though you are running the client program on the same host as the server.

http://dev.mysql.com/doc/refman/5.5/en/access-denied.html
  • mysqld_multi で複数立てたときなんかに困った

nginx のシンタックスハイライトが効くと聞いて

IP アドレスホワイトリスト+それ以外からはbasic認証、というのをやりたいと思ったんだけど、auth_basic が if の中に入れられないので仕方なくこうしたという話。

perl_set $allowed '
    sub {
        my $r = shift;
        my $remote_addr = $r->remote_addr;
        return "1" if $remote_addr =~ /^127./;
        return "0";
    }
';
server {
    listen 80;

    location / {
        if ($allowed ~ "1") {
            # no authentication
            proxy_pass http://app;
        }
        # basic auth
        proxy_pass http://localhost:1080;
    }
}

server {
    listen 1080;

    location / {
        auth_basic "Authentication Required";
        auth_basic_user_file "/etc/nginx/htpasswd";
        proxy_pass http://app;
    }
}

UNIX ソケットでいいとかそういうのは置いといて、どうやるのがいいんだろう。if 使ってるのも evil だからよくない。もといい方法知ってたら教えて下さい。

socks, dante

dante.conf に、サーバ側で設定してもらえるのを追加。これまで追加せずに使えてた気がするけど何だったんだろうな。
こんな感じになった(実際はもう少しルーティング細かい)

resolveprotocol: fake
route {
  from: 0.0.0.0/0 to: 0.0.0.0/0 via: 127.0.0.1 port = 1080
  protocol: tcp udp
  proxyprotocol: socks_v5 socks_v4
  method: none
}

weechat 使ってみてる

諸事情により、WeeChat を使い始めました。文字コードSSLまわりではまることもなく、割と快適です。

  • weechat-scripts にいろいろついてきたので、適当によさげなプラグイン入れる:buffers, highmon, notify
  • window 間移動がだるいので ctrl+space で次の ウィンドウへ移動

もうちょっといじってみよう。手元で動かす必要ないかもしれない。

新しいCPUでわくわくする話

いよいよ SandyBridge-E な Xeon が出回り始めましたね。DDR3-1600 4channel、Nehalem 以降久々の大幅スピードアップでワクワクしますよね。ね。
Web系でLLが動くアプリサーバですが、まだコア数とクロックが一番効いてくるように見えるくらいの評価軸しか持てていません。少し悲しくなります。SIMD系が使えることはまぁ限られるにしても、uop cache とか効くのかなと適当なベンチマークを家の i5 で回してたりしたのですが、あんまり効いてない印象。perf list すると branch-load, branch-load-misses とかあったので、今度ちゃんと調べてみます。L3 の影響がどの程度効くのかなんかも全く把握してないので気になるところ。
さてXeon E5 ですが、いろいろラインナップがあって分かりにくいので、気になるところだけWikipedia から引っ張ってみる。

model core*clock/power
E5-2687W 0.165
E5-2690 0.171
E5-2680 0.166
E5-2670 0.180
E5-2667 0.133
E5-2665 0.166
E5-2660 0.185
E5-2650L 0.205
E5-2650 0.168
E5-2643 0.101
E5-2640 0.157
E5-2637 0.046
E5-2630L 0.200
E5-2630 0.145
E5-2620 0.126
E5-2609 0.120
E5-2603 0.090

実際の消費電力は、同じモデルならカタログスペックに比例すると思うのでこんなもんでしょう。いつも通り 'L' のついたモデルが強そうです。

はてなでコードを書くときに気をつけていること

wtatsuru と申します。はてなで運用まわりを担当しております。
Hatena::Staff Advent Calendar 2011 : ATND というものがありまして、私も楽しく拝見していたのですが、なぜか id:nanto_vi さんのところで fork(!) して飛び火・玉突きの結果、私のところに「はてなでコードを書くときに気をつけていること」バトンが回って来ました。不思議なこともあるものです。

それにしてもバトンというのはまた懐かしい響きですね。バトンもしくはリレー日記なるものは、学生時代にブログmixi 掲示板あたりでやっていた記憶があります。友達の少ない私は最近あまり聞きませんが、今でもインターネットのどこかで回ってたりするのでしょうか。

さてコードを書くといっても、私はたぶんエンジニアの中でも一番コードを書かない部類の人間です。学生時代はC/C++ と Python を書いていました。FORTRANに怯えていた時代もあります。最近仕事でメインで書いているのはシェルスクリプトruby です。書くよりアプリケーションやミドルウェアのコードを読む時間の方が長いかも。Perl の会社にいますが、Perl力はあまり高くないです。

そんな私が偉そうに語ることもあまり無いので、はてなでコードを書くときに気をつけていることとして1点だけ、 "Fail Safe, Fool Proof" という原則。誤動作しても安全側に、ミスしても惨事が起きない、ミスができない設計にする。基本ですね。ある程度のプロジェクトなら当然必要になる話なのですが、数行程度の書き捨てに近いスクリプトでも root で動かしてシステム系のファイルをいじるものが多いので、特に気をつかいます。引数なし実行はさせない、入力validation, trapで後片付け, etc. 画面に向かって指差し確認までやれば完璧です(たまにやってますが気にしないでください)。

次は、部内で最もコードが書けそうな id:smly さんにお願いしたいと思います。

JAWS-UG@Kyoto で発表してきました

[http://atnd.org/events/21055:title-JAWS-UG - Kyoto勉強会 第2回] で、「はてなブログの下側」というタイトルで発表してきました。


内容に関してはこんな感じです。

  • はてなのサービスとして初めてAWS上でリリースされた、はてなブログのインフラ面について。
  • ベータ中の体制と将来的な案、それに関わるメリットと不安。
  • 柔軟なインフラが作れてうれしい!
  • L2, L3 の自由が無くて苦しい!
  • CPU・メモリは安くてうれしいが、SSD中毒なのでI/Oつらい!
はてなで一緒に働きませんか?