クライアントからmemcachedを利用する際の、ベストプラクティスは以前書いているので、その前段階でmemcachedを含めたWebアプリケーションのアーキテクチャ(と一部クライアントの話)について今の個人的な考えをまとめてみます。Kyoto Tycoonを使ったキャッシュサーバでも基本は同じだと思います 1) 使わない memcachedをアプリケーションに組み込むことで、プログラムがどうしても複雑になりがちです。データの削除や更新の際にキャッシュの更新を忘れると多くの問題が発生します。例えばユーザがニックネームやプロフィール写真を更新したのに画面上変わらないなどの現象が起こると、ユーザに対して不快な思いをさせてしまうでしょう。またデータベースが非同期のレプリケーションを行っている場合、masterに対してデータの変更をかけ、更新が反映される前にslaveから読み込んでしまい、キャッシ
https://github.com/tokuhirom/mixi2gmail/blob/master/mixi2gmail mixi日記のスクレイピングにながらく plagger をつかっていたのですが、そのためだけにつかうにはちょっと大仰すぎるというのもあって、回帰してオレ専用 mixi2gmail をかいた。 依存しているモジュールは以下のとおり。WWW::Mixi::Scraper がなんといっても本命で、charsbar++ といわざるをえない。 requires 'WWW::Mixi::Scraper' => 0.30; requires 'Email::Sender'; requires 'Config::Pit'; requires 'DBD::SQLite'; requires 'DBI'; requires 'Mouse'; requires( 'Net::SMTP::
* [Perl] ORM的なものでLEFT JOINしたカラムの値をRowオブエジュクトにまとめる タイトルが意味不明ですが。DBIx::Skinnyなどを使っててhas-manyな関係のデータをLEFT JOINしたりします。するとまあJOINで掛け合わせた分、Rowオブジェクトが複数個返ります。 # 著者authorと著作bookがhas-manyな関係だとして # SELECT a.id, b.id AS book_id, b.title AS title # FROM author a JOIN book b ON a.id = b.author_id # WHERE ... ... なんか色々あって my $itr = $skinny->search_by_sql(...); # この$itrを回すとbook_idとtitle以外 # (つまりid)は同じデータ while (
Log::Minimal v0.08 で2つの機能を追加しました。1つは例外を投げるメソッド、もう1つはメッセージの色付けです。 http://search.cpan.org/dist/Log-Minimal/ http://search.cpan.org/dist/Plack-Middleware-Log-Minimal/ Plack::Middlewareも同時にアップデートしています 例外を投げるメソッド追加 Log::Minimalの今までの機能は基本的にwarnを吐くものでしたが、新規に追加したメソッドはdieします。 use Log::Minimal; croakf("Flying Saucer"); これは 2011-06-10T17:41:59 [ERROR] Flying Saucer at sample.pl line 23 というメッセージを吐いてdieします。もちろ
package Log::Minimal::FlyingChair; use strict; use warnings; use utf8; use open IO => ':encoding(utf-8)', ':std'; use Log::Minimal; use Time::HiRes qw(sleep); our $VERSION = '0.01_01'; our $Interval = 5; our $Chair = "ε=コ_"; my $pid; my $print_orig = $Log::Minimal::PRINT; $Log::Minimal::PRINT = sub { $print_orig->(@_); kill "TERM", $pid if $pid; $pid = fork || do { $|++; while (1) { sleep $Interva
Xslate 1.3000でhtml_builder()に非互換な変更を行いました。 html_builder()で作成したフィルタは、いままではunmark_raw()で型情報を落とした引数を受け取っていました。しかし1.3000からは引数をそのまま受け取るようになります。これによりフィルタが全ての責任を負えるようになりましたが、非互換な変更なので挙動が変わるフィルタも出てくる可能性があります。ご注意ください。 また未修正の問題も幾つかあります。いずれ対応するつもりですが、修正するまではご注意願います。 コメント終端子としてセミコロン(;)を使っているため、コメント内に& < >などが書けません。 TTerseにおいて、変数名として「x」が使えたり使えなかったりします。これはxが演算子であるためです。
今回は東京から@tokuhiromさんをお招きしての開催でした。JPAさん++ まずは @d_tsuruさんの「MojoliciousのCRUD構築ワークショップ」 Mojolicious触った事無かったので良かったです。 全員のペースが同じじゃないので1時間は厳しかったですね。 ゆっくり教え合うような場面もあってほのぼのしました。 お次は @tokuhiromさんの 「dotcloudっぽい環境を sakura vps に自前でつくる方法」 DotCloudはまだベータのサービスで、APIのレスポンスも安定していないし いつ有料になるのかとかわかんないよね。いきなり使えなくなるのも困っちゃうし DotCloudとまったく同じように使える自分用の環境があったらいんじゃね? てことでやってみたよという話だったと思います。 DotCloudはSSHできるのでpsでプロセス確認したりなんだりして
久々にチェックしてみたらMojolicious::Plugin::CSRFDefenderのテストが全く通っていなかったので、調べてみました。 原因 原因はMojoliciousが1.1か1.2くらいに更新したときに、after_dispatchのhookがsessionをストアした後に動作するようになっていたため、sessionに内容を入れることができなくなっていたためでした。Mojolicous::Controllerのrenderedメソッドの部分です。 sub rendered { my ($self, $status) = @_; # Disable auto rendering $self->render_later; # Make sure we have a status my $res = $self->res; $res->code($status) if $statu
ご無沙汰投稿です。津留です 2011年6月11日(土)にFukuoka.pm #19が開催されました。 反省も含めてレポートさせていただきます。 津留(@d_tsuru) 「MojoliciousのCRUD構築ワークショップ」 予定では14:10から50分間であったはずなのに2時間ぐらい使ってしまいました。 @dragon3さんの時間を潰してしまい申し訳ありませんでした。 今回、ワークショップとしてMojoliciousで簡単なCRUDを構築するというお題で実際にはページ遷移レベルのマイブックリストを作成しました。 お題としては面白くないのでやはりFullAjaxタイプまで行きたかったですね。ワークショップタイプの勉強会をもっと重ねていって経験をつまないかんな!! Mojoliciousはこれからが面白いのでもっとやりたいですね。乞うご期待ということで。 演習題材(dotcloudへのデプ
土曜日、Fukuoka.pm #19 に参加しました。 前日までひどいかった雨もほぼあがって、よかったですね。 Mojolicious ワークショップ ( @d_tsuru さん ) じつは Mojolicious は使ったことなかったです。 最近はずっとAmon2を使っているので、他のフレームワークに触れるいい機会でした。 もっとがっつり使ってみないとわかんないとこありますが、 標準モジュール以外の依存が無いところは、やっぱり良いところですね。 ワークショップは、参加しているみなさんが実際に手を動かし、 ものができあがるところはとても良いですね。 @d_tsuru、ありがとうございました。 準備が大変なところもあるので、今後はみんなで分担してやってみるのも良いんじゃなかろうかと思いました。 dotcloudっぽい環境を sakura vps に自前でつくる方法 ( @tokuhirom
愛宕山太郎坊 アニメーション制作進行支援ソフト 愛宕山太郎坊 ログイン 会社id ユーザー名 パスワード ユーザー名またはパスワードが正しくありません。 閉じる ログイン
Brahman: a supervisor clone in Perl (under development) 2011年6月13日 15:57 D | ブログ記事のURL | コメント(0) | トラックバック(0) 週末にsupervisorっていうものについて話してる人がいたので、特に理由なくPerlでクローンを書いてみようと思った。というわけで本当に基本の部分まで書いた。名前はBrahman。神様の名前にしたかったのはプロセスの生死を管理するから。 繰り返すけど、特に理由はない。書きたかったから。ちなみに内部的には多分本家と全然互換性はない。設定ファイルがだいたいクローンできればいいや、というくらい。 今のところできることは、例えば今daemontoolsで管理してるplakupサーバーがあったとして、こんな感じの設定を書くと立ち上がってstdout/stderrを一緒のログに保存
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く