ps の日付パース
ps
の出力をパースしたかったんだけど、日付部分めんどいなと思いきや Date::Manip
使ったら一発だった。覚えててよかった!
30boxes.pl とかで使われてるやつ。
そろそろはてグのスタイル何とかするかと思って環境作ってみた
はてグで書いてるモンハン日記のスタイルがデフォルトのままであれなので変えようと思ってちょっとCSSいじろうとしてみたら @import
がつかえなくてズーンってなったのでローカルプロクシの環境をなんとかすることにした。
普段の開発では、ローカルにすべて環境作れるものばかりなのであまり使わないのだけど、前につくったperl製のプロクシの性能が悪すぎるのもあり、なんとかしたいとおもってた。
今回は fiddler2 をためした。
起動して Rules -> Customize Rules... するとエディタが立ち上がるのでそこのうえのほうに
public static RulesOption("Replace Hatena Group CSS")
var m_HATENAGROUPCSS: boolean = false;
とかかく、つぎに、static function OnBeforeRequest(oSession: Session)
の中に
if ( m_HATENAGROUPCSS && oSession.hostname.match(/\w+\.g\.hatena\.ne\.jp/) && oSession.PathAndQuery.match(/^\/headerstyle/) ) {
oSession.hostname = 'static.murase.dev';
oSession.PathAndQuery = '/mh/mh.css';
}
とかいれる。
これで、RuleメニューにReplace Hatena Group CSSとか言うのが追加されるので、それONにするとCSSが自分のにかわるという。
結構お手軽でいいね。パフォーマンスが自前のやつより全然いいのが何よりいい。
Webcam買いました
手元ライブはじめます!
どういう形で置こうかは検討中。twitterと組み合すと面白そうではあるけど。
Teach them to fish, don't feed them
とかDBICのチャンネルで言っててへーと思った。
むずかしいね。
We're hiring!
現在 KAYAC では BEYES の製作スタッフを募集しています。興味ある方は是非!
拡張で描画が遅くなる
これみて開発時しかつかわない拡張いろいろ無効にしてみたところすげー速くなった。うは。
でも開発時は使いたいから、プリセット設定してON/OFF変えて再起動とかしてくれる拡張がほしい!!
開発用にあたらしくFirefoxのプロフィール作ってわけてもいいけど、普段使ってなじんでいるFirefox設定で開発しないと効率悪いしUIチェックとか何とか微妙になる気がするし。
あと、上記URLの最後にIPv6を無効にするの意味ないって書いてあるけどおなじURLを表示するテストとかDNS最初しかひかないでしょ。それじゃわからないくない?
IP認証とBasic認証を同時に使うCatalystコードサンプル
Catalystは Authentication::Credential::*
プラグインを複数使うことにより、複数の認証方式に対応できる。
IP認証などのような、Credプラグインが提供されていないものも即席でCredインタフェースにそったモジュールを作ることで簡単に認証方法を追加することができる。
MyApp.pm はこんな感じ
package MyApp;
use strict;
use warnings;
use Catalyst::Runtime '5.70';
use Catalyst qw/
ConfigLoader
Authentication
Authentication::Credential::HTTP
+MyApp::Credential::IP
Authentication::Store::DBIC
/;
our $VERSION = '0.01';
__PACKAGE__->setup;
Cred::HTTP
が Basic 認証用のモジュール。+MyApp::Credential::IP
がIP認証用のオリジナルモジュール。
この MyApp::Credential::IP
のコードはこんな感じ。
package MyApp::Credential::IP;
use strict;
use warnings;
use base qw/Catalyst::Plugin::Authentication::Credential::Password/;
sub authenticate_from_address {
my $c = shift;
my $ip = $c->model('DBIC::UserIp')->find({ ip => $c->req->address }, { prefetch => 'user' })
or return;
my $user = $c->get_user( $ip->user->username )
or return;
$c->set_authenticated($user);
1;
}
1;
こんな短いコードで認証増やせるの。なかなか便利。
で、実際に利用するのは以下のように、Root Controller の auto アクションに
sub auto :Private {
my ($self, $c) = @_;
# basic auth
$c->authenticate_http and return 1;
# ip auth
$c->authenticate_from_address and return 1;
# return basic auth response when no auth success
$c->authorization_required_response( realm => 'Require Authentication' );
return;
}
などとする。
全体に認証かけたいときはルートコントローラの auto に、コントローラ個別に指定したいときは、上記コードを埋め込んだ認証用の親コントローラクラスつくって認証必要なコントローラはそれを継承する。
パスごとにやりたいときは Authentication::ACL
ってのがあるけど僕は使っていない。