Java並行処理プログラミング ―その「基盤」と「最新API」を究める― をぱらぱらめくっていて出てきた、以下二つをCoroで実装してみた。 並行処理タスクの実行方法を抽象化した Executor タスクの生成とその消費を分離する CompletionService 実装とか例とかぺたぺた貼ってたらすごい長くなっちった。 gistにもあります > http://gist.github.com/191924 。 まとめ (長いので先に結論) ExecutorやCompletionServiceのようなパターンにそってプログラムをかくと、すっきりと並行処理プログラムを構成できて良い感じ。Coroでも簡単に実装できる。 これまでやられたことに名前を付けただけという話もあるけど、名前をつけて区別して理解しておくと、コード読むときの思考が整理されて良いとおもう。 Executor Executorと
DBIx::Skinnyにはネイティブにpagingをしてくれる便利機能はありません。 (最近ないないばっかり言ってるな) DBICとかだと$rs->pagerみたいにしてData::Pageのオブジェクトを返してくれるんですが、 Data::Pageのオブジェクトを作る際に、内部でcountを発行しています。 pagingするにはSQLにLIMIT/OFFSETをかけてると、思うのでLIMIT/OFFSETを掛けなかった際の トータルな件数を取るためですね。 結構このcountが馬鹿にならないくらい内部で発行されることがあるのでSkinnyではあえてサポートしなかったです。 あと、独自にSQLを書かせる事をお題目にあげているので、 独自に書かれたSQLを内部でごちゃごちゃしてcount発行するとかヤッテラレナイてのもあります。 ただ、アプリを作ってる時にpagingは必須なのでどうすれば
AnyEventの練習をしてみようってんで、とりあえずtail -fぽいのを書いてみる。こんなんでいいんだろうか……。よくわからない。 #!/usr/bin/env perl use strict; use warnings; use AnyEvent; use AnyEvent::Handle; $| = 1; my $file = shift or die qq{usage: $0 filename}; open my $fh, '<', $file or die qq{can't open file: $file}; my $cv = AE::cv; my $handle = create_handle(); sub create_handle { new AnyEvent::Handle fh => $fh, on_error => sub { my ($handle, $fata
AnyEvent はじめ そろそろAnyEventでもやってみようと思ったので AntEvent::Handle いわゆるIOまわりの面倒を色々便利にやってくれる君。イベントベースなIOと言うよりかはevent queueなIOみたいな捉え方するとすんなり。 read/writeの処理はqueue的な感じで登録できるの。 ->push_read() で、どんどんqueueにreadイベントを登録してく。fhがreadableになったらread queueがどんどん処理されるってわけ。 ->unshift_read() だと、queueの先頭に突っ込んでく。 そう、まさしくperlのarrayへのpush/unshiftそのもの。AnyEvent::Introを読むとその辺の命名に関する思いが読める。 ->push_write() だと、writeイベントを登録してく。writeできるように
PSGI/Plack勉強会を開きました(ひとりで)。資料はGitHubにあげてあります。いろいろまとめ書き足りてないのですが、自分的には納得したので満足してしまいました。 http://github.com/kentaro/psgi-study 以下にもコピペ。 PSGI/Plackとは? PSGI = Perl Web Server Gateway Interface Specification WebサーバとWebアプリケーションとの間のインタフェイス仕様 Plack = PSGIのリファレンス実装 PSGI実装のひとつ(とはいえ、やたら気合いの入った感じになってるけど) PSGI != Yet Another WAF PSGI != Plack PSGI策定の背景 各Webアプリケーションフレームワークがバラバラに実装していた、WebサーバとWebアプリケーションとのインタフェイスを
AnyEventでタイマー YAPC::Asiaでの宮川さんの発表を聞いて perl -MAnyEvent -le ' map{ $i = $_; my $c = AnyEvent->condvar; my $w; $w = AnyEvent->timer( after => $i, cb => sub {$w; print "OK"; $c->send}); $c->recv }(0.1,0.5,1,2,0.1)' なんてワンライナーで簡単なタイマーを作れる事を知りました.それで思いついたのがモールス信号,テキストを入力すると何かちかちかと点滅するものを作ってみようと思いました.まず,CPANでMorseをキーワードにして検索してみたところ,モジュールはいくつかでてきましたが,テキストを短点('-')と長点('ー')に変換するものばかりで,長点が短点の何倍の時間なのかなんてことはわかりま
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
id:miyagawa さんからTwitterで教えてもらったネタ。Twitterだけで完結するのはもったいないのでここに書いておく。 元ネタはこちら。matsuuNet::Twitter/Net::Twitter::Lite最新版のencode/decode周りがおかしい。utf8プラグマとLWPが絡むともうなんつーかバッドノウハウのオンパレードですよ。 ( 2009-08-27 00:14:01 )miyagawa@matsuu 3.04005 でなおしたはずなんですがね。update() には decode したのを渡さないとだめです。 ( 2009-08-27 00:15:31 )miyagawa@matsuu 動作がおかしいスクリプトをみせてもらえれば対応できます。ただし Net::Twitter 3.x で直したのは、2.xでたまたま動いていた(utf8 バイトを渡せばなんとな
PC初心者から社内IT担当くらいまでを対象と想定しているLifeHack系ブログ。私のPC活用ノウハウ等を記したり興味ある分野についてを綴ります。 富永です。 昨日の特別講義においての課題と私の回答(ググっていろいろコピペしてこしらえた)はこんな感じでした。 printenvをHTML化せよ #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; print "<html>\n"; print "<head><title>ex1</title></head>"; print "<body>"; print "<center>\n <table border>\n"; foreach $a (keys(%ENV)){ print " <tr> <td>$a</td> <td>$ENV{$a}
DBIx::SkinnyにはDODやData::Modelのようにキャッシュを透過的に扱う 便利機能はありません。 無いのでラッパーを書きませう。 毎度の事でデモは http://github.com/nekokak/p5-dbix-skinny-sample/tree/master/cache/ に置いてあります。 ユーザテーブルがあるとします。 CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL, UNIQUE(name) ); ユーザの情報をキャッシュからひけなければDBから引っ張って キャッシュしておき、次に使う時はキャッシュデータを使うという典型的なパターンです。 userテーブルの定義などはこのようにします。 今回はinflate/deflateも一緒にやってみ
ログ last updated on 新着情報リスト フォームデコードサービスV2 郵便番号検索 文字コードチェック サポート掲示板 PSLブログ このサイトについて トップページのアイコンたち サポートについて プライバシーポリシー 著作権表示の削除をしたい方へ お問い合わせ/依頼/申請窓口 フリープログラム利用規約 設置代行等に関する規約 登録事業者リスト 特商法に基づく表示 設置代行サービス カスタマイズサービス オーダーメイドサービス 手数料・設定項目一覧表 CGI・SSIの基礎の基礎 読むとためになる本の紹介(3) 読むとためになる本の紹介(4) CGI環境変数 UNIXの基礎の基礎 基本認証の方法 ASCIIコード一覧表 文字化けする文字一覧表 "^"(0x5e)を含む文字一覧表 "|"(0x7c)を含む文字一覧表 SMTP応答コード一覧表 アクセスカウンタ アクセス統計版 v
YAPC::Asia 2009で(少なくとも個人的に)話題だったセッションから、StardustとIM::Engineを使って3分クッキングしてみる。(実際どのくらいかかるかはよくわからん。) 概要 Stardust(CPAN, github)は簡単に使えるCOMETサーバ。COMETでStardust…ああ、ネーミングセンスが良すぎる…。てのはともかく、COMETのデモはやっぱりインパクトがあって楽しい。起動すると/channel/の下にAPIが出来て、外からそいつに適当にアクセスすれば話は済むようになっている。APIにPOSTしてあげればデータが登録されて、APIからGETすることで引き出せるってわけだ。 IM::Engine(CPAN, github)はAPI Designのセッションで登場するのだけれど、HTTP::Engineのように使える(らしい)Instant Messagi
このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2024年5月時点の調査。
m コマンドでモジュールの情報を調べます。 $ cpan ... snip ... cpan[1]> m DBIx::DBSchema Module id = DBIx::DBSchema DESCRIPTION Database-independent schema objects CPAN_USERID IVAN (Ivan Kohler <ivan-pause@420.am>) CPAN_VERSION 0.33 CPAN_FILE I/IV/IVAN/DBIx-DBSchema-0.33.tar.gz UPLOAD_DATE 2007-06-29 DSLIP_STATUS bmpOp (beta,mailing-list,perl,object-oriented,Standard-Perl) INST_FILE (not installed) 現在のメンテナの PAUSE ID が
今まで CPANPLUS を使っていた理由は root 以外のユーザが使った場合,インストール時に sudo してくれる インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる モジュールのアンインストールできる モジュールの古いバージョンを検索してインストールしたりできる だったんですが,最近の CPAN.pm って 1, 2 あたりはできるようになってるんですね(がんばれば 3 もできます⇒cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower)。あと force だけじゃなくて fforce や notest とかコマンド指定できるようになってます。 なので, root で最新の CPAN(Bundle::CPAN じゃなくて)をインストール 一般ユーザでインストール時に sudo を使うように設定
YAPC::Asia 2009に行ってきました。 2日間行ってきたんだけど、まとめるのに思ったより時間がかかってしまっているので、 とりあえず一日目の内容です。 Daisuke Maki (lestrrat) - Welcome 今回からYAPC::AsiaはJPAという団体が主催になり、JPAの代表理事である牧大輔(lestrrat)さんが取り仕切るという形になり、Welcomeなメッセージと、今回のYAPC::Asiaのテーマ3つの「C」の事とか話してました。 Richard Dice - 基調講演 (Richard Dice) stable な Project は 既に死んでしまっている。例えばText::Templateとかw 死んでしまったProjectには原因がある。 問題を全部解決してしまったとか 興味が他に移ってしまったとか 次のステップに時間がかかるとか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く