あろえの備忘録

移転しました http://blog.vitamin11.org/

Subscribe to RSS feed

移転しました

Plack::Middleware::Parallel::Scoreboard

,

ちょうどPlackでServerStatus表示機能が欲しかったところで、Parallel::Scoreboardの話しを聞いのでPlack::Middlewareにしてみた。

http://gist.github.com/464066

Opera blogはJavascript使えないから困る

MySQL Proxyをちょっと触った

,

MySQL Proxyを少し触ったのでメモ

MySQLサーバとクライアントに入るミドルウェア。
現在のversionは0.8.0でbeta状態。

--proxy-addressで自分の待ち受けポート等を指定できる。
FAQだとsocketで待ち受けはできないって書いてあるけど、すげー下の方にあるコメントを読むと待ち受けできるよ!って書いてあった。
実際できる。

ただし作成されるsocketの権限が1755で、オーナーが--userで指定したユーザではなく起動ユーザになっているので、
他のユーザから書き込めない可能性がある。
CentOS 5.4Finalのyumから入れたmysqld-serverだとデフォルトで作成されるsocketは1777になっていた。
同じパーミッションに変更してあげると普通にmysql-clientからも接続できた。

またmysqlはデフォルトでsocketとTCP接続の両方で待ち受けるけど、MySQL Proxyはどちらか片方でしか待ち受けできない。
localhost上にあるMySQLへの接続をProxyしようとすると、MySQL Proxyを二つ走らせる必要がありそう。

シグナルの処理がおかしい気がする SIGTERMとかSIGHUPを送っても反応がなかったりとか。

Mojoliciousのメモ

,

Mojoliciousをちょっと使ってて覚えたことをメモ。

まずリダイレクトではまった

Apache(mod_proxy)+Mojolicious(daemon_prefork)の構成

ProxyRequests Off
ProxyVia On
ProxyPass /hoge/ http://localhost:3000/
ProxyPassReverse /hoge/ http://localhost:3000/

上記のように設定して、http://example.com/hoge/http://example.com/hoge/fuga/xxxxxにredirectしようとredirect_toを使ったら、http://example.com/fuga/xxxxxにredirectされた。

原因はMojoliciousのredirect_toが吐き出すLocation headerが相対URLだったため、ProxyPassReverseでドメインが書き換えられなかったことだった。

解決策としてMojolicious::Controllerを継承したクラスにredirect_to_absを実装した。

package MyApp::Controller;

use strict;
use warnings;
use base 'Mojolicious::Controller';

sub redirect_to_abs {
    my $self = shift;
    my $url = $self->url_for(@_);
    return $self->redirect_to( $url->to_abs->to_string);
}
1;


次にpathのcaptureで時間を食ったのでメモ

pathをcontroller側でパラメータとして受けとる場合は下記のようにしないといけない。
my $r = $self->routes;
$r->route('/hoge/:id')->to('example#hoge', id => undef);

"id => undef"がポイント。デフォルト値を与えない場合は明示的にundefを渡してやらないと、controller側で値を取得できない。

controller側では下記のようになる。
package MyApp::Example;

use strict;
use warnings;
use base 'Mojolicious::Controller';

sub hoge {
    my $self = shift;
    my $id = $self->param('id');
}
1;

Catalystみたいに$cに続いてキャプチャできるのかと思ってたら、全然違ってハマった。

VMware上のUbuntuの移行でnetworkに接続できない

, ,

会社で使用しているPCがリースアップするため、新PCに移行作業中におきた現象。

旧PCで使用していたUbuntuのイメージを新PCへコピーしたところ、ネットワークに接続できなかった。
原因はNICのMACアドレスが変更されていたため、eth0になるべきところがeth1になっていたことだった。

検索すると同様の現象が結構でてきた。
VMWareのUbuntuは複製するとNetwork設定変更が必要

udevのruleを書きかえて再起動で無事ネットワークに接続可能になった。
June 2012
S M T W T F S
May 2012July 2012
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30