お役立ちフリーCGI、Perl Module、Perl テクニックなど Perl ネタが中心

TheSchwartz でジョブを登録順に処理する方法(手抜き)

perlのジョブキューの仕組みとしてメジャーなTheSchwartzは残念ながら投入したジョブ順序で処理されません。今回はジョブ登録順に処理する要件のシステム開発があったため、patchを作成して対応しました。workerを多重化できない欠点がありますが、要件は満たすことができるようになりました。

2012年3月10日 | drk | コメント(0)

PerlMagick が OpenMP 有効だと高負荷になる件

ImageMagickを使ったCGIが原因不明の高負荷になりドツボに嵌った備忘録です。apache + ImageMagick + PerlMagick を安定稼働させるにはImageMagickコンパイルをOpenMP無効化する必要があります。

2011年12月29日 | drk | コメント(0)

Google Developer Day (GDD) 2011 DevQuiz 回答スクリプト

GDD 2011 DevQuiz に挑戦してました。パズルが苦手な僕にとっては、チャレンジクイズのスライドパズルは難題でした。C言語で記述したかったけどpure-perlで記述。実行速度とメモリに苦しみながら取り組みました。

2011年9月12日 | drk | コメント(0)

perl と CrenaHtml2jpg を使って大量のサイトを自動キャプチャする方法

大量のサイトのキャプチャ画像(スクリーンショット)を取得したい!そんな要件のお仕事もたまにあるでしょう。そんな要件に答えるために随分昔に作ったツールがあったのでスクリプトと使い方を公開します。

2011年8月 5日 | drk | コメント(3)

高精度な顔認識&加工サービスを作ってみた

僕は自分のブログに掲載する写真は顔をモザイクやぼかしを入れて個人情報を保護するようにしています。毎回手動で処理するのが面倒なので高精度に加工処理できるサービスを作りました。

2011年3月27日 | drk | コメント(0)

Image::Imlib2 を使ってサーバ上の画像を一括圧縮

ブログを自宅サーバから sakuta VPS へ移行しましたがディスク容量が小さいので、既存の画像ファイルを一括圧縮する perl script を書きました。圧縮にはImage::Imlib2を使います。圧縮効率は50%程度です。

2011年3月21日 | drk | コメント(0)

サイトの言語を判定する perl script

多言語対応のサービスを作る際に必要となる要素の1つとして言語判定があります。考えた結果として判定器としては Lingua::LanguageGuesser もしくは Google Translate API を使うのが適当かと思います。

2011年2月21日 | drk | コメント(0)

携帯の端末名とUserAgentと画面サイズの対応表をつくるスクリプト

とあるモバイル系サービスのシステム設定値の整合性評価のために書いたバッチスクリプトです。docomo,softbank,auの各種ページから端末名+UA+画面サイズの一覧表を作成します。スクレイプはWWW::MobileCarrierJP任せなので楽ちんです。

2010年9月 3日 | drk | コメント(0)

Web 上の画像をリサイズする perl-script を書いた

ブログのモバイル対応を行うに辺り開発したモバイル向けの画像変換スクリプトを作ったので公開します。Image::Imlib2 を使っているので非常に高速に画像変換が可能です。サービス利用に必要な機能は揃えているのでご自由にご利用ください。

2010年7月24日 | drk | コメント(1)

SWFUpload の Cookie バグに悩まされました

ブラウザからファイルをajax風に画面遷移なしでアップロードする swfupload というFlashのファイルアップローダ・ライブラリが有名ですが、cookie周りにバグがあります。解決方法として同梱のswfupload.cookies.jsを使い、サーバ側でpostパラメータをcookie代わりに使う処理があります。そこら辺のまとめです。

2009年12月 5日 | drk | コメント(0)

アラビア数字→漢数字変換(桁付き)する JavaScript

フォームに入力されたアラビア数字に適切な桁を付与して表示するスクリプトをJavaScriptで実装しました。ロジックを考えるのが面倒だったのでPerlのLingua::JA::Numbersから表示変換ロジックのみを移植しました。なので漢数字変換ロジックも実装されています。

2009年11月29日 | drk | コメント(0)

Log::Dispatch::Email は即座にメールが配信されない件

今面倒を見ているアプリケーションのログ管理として Log::Dispatch 系を採用しました。アラート通知にLog::Dispatch::Emailを使ってますが、実装上mod_perlのような永続環境下ではメールが遅延する可能性があります。インスタンス生成ときにbufferd=0の指定を必ず付けましょう!

2009年11月 7日 | drk | コメント(0)

GraphViz によるグラフ描画が超便利すぎる件について

GrapgVizですがDOT言語を覚えるとグラフ描画が必要な要件に対する解決策として大変有効かつ便利な事に気がつきました。いろいろと自分が触るのに、いちいちアレコレするのが面倒になってきたので、簡易CGIも記述しました。これが超便利。ソースも晒しておきます。

2009年6月28日 | drk | コメント(0)

UML::Class::Simple で Catalyst のクラス継承図を描いてみた

UML::Class::Simpleとumlclass.plを使って様々なperlアプリケーションのクラス継承図を簡単に図示化することができます。このエントリではCatalystフレームワークで作成したMyAppのクラス図の作成について、モジュールのインストールから図示までの手順を説明します。

2009年3月22日 | drk | コメント(0)

CPAN 最速検索を自サーバにコピーってみた

cpanを貪るときには、いつもCPAN 最速検索を使っていたのですが、前々から気がついてはいたんだけど、どうもモジュールリストの辞書データが最新に更新されていないっぽいです。CPAN 最速検索が無いと生きていけない体になっているので、自サーバにコピって辞書作成スクリプトをでっちあげてみました。

2009年2月26日 | drk | コメント(0)

Log::Dispatch::FileRotate のローテートサイズではまった件

Log::Dispatch::FileRotate のデフォルト設定ではファイルサイズが 10MB でファイルがローテートされます。10MB 以上のサイズが予想される場合(もしくは10MB 以上のサイズでローテートしたい)場合は、size => 指定のバイト数の引数を new 時に設定する必要があります。

2009年1月22日 | drk | コメント(0)

(byte|文字列)計算系のバッチ処理と Inline::C の相性の良さ

C 言語を知っていれば、Inline::C はすぐにはじめて、すぐに実行することができます。XS より手軽に perl で書かれたバッチ処理の高速化が可能です。

2008年12月21日 | drk | コメント(0)

Devel::Profiler を使ってスクリプトのチューニング実践編

前回の Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf のエントリで、 Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得...

2008年11月14日 | drk | コメント(0)

Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf

今仕事で書いてる Sledge アプリがあるのですが、先日負荷テストを行った結果びっくりすることに現行アプリの10倍遅いことが判明してしまいました・・・orz Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定す...

2008年11月 8日 | drk | コメント(0)

Perl の内部処理系をお勉強

ちょっと前に perlfilter - Source Filters - についてお勉強したときから調べようと思っていたことなのですが、Perl の内部処理の流れ(Perl 5 Internals)についてお勉強中です。思いっきり見逃してしまいましたが、Perl 5 Internals に興味を満ち始めたこのタイミングにあわせたかのように Shibuya Perl Mongers : Shibuy...

2008年6月26日 | drk | コメント(3)

Perl 言語自身すら拡張する Filter 機能をお勉強

PERL HACKS を読んだときに何となく流し読みをしてしまった Source Filters ですが改めて勉強中です。perl 上級者の方々は既にご存じで、ここぞという使い方をされていることと思います。 Source Filters とは何か? perlfilter - Source Filters - search.cpan.org まずここから勉強です。ものすごく簡単に説明すると、perl...

2008年6月15日 | drk | コメント(0)

続 perl で CAPTCHA 認証(セキュリティ画像)をやる方法について

さて、前回の perl で CAPTCHA 認証(セキュリティ画像)をやる方法について の続きです。 perl 上級者であれば Catalyst / Sledge / CGI::Application とかを使ってアプリ書いてることも多いと思うので、 CAPTCHA を扱う際には Catalyst::Plugin::Captcha や Sledge::Plugin::Captcha や CGI::...

2008年5月28日 | drk | コメント(0)

perl で Captcha 認証(セキュリティ画像)をやる方法について

ユーザ登録とかでロボット等でのスパム登録を防止したりって用途に使われているアレです。こんなヤツ。 最近はブログのコメントとかのスパム防止でもよく見かけます。まずは基礎知識。このような画像で認証を行うことを Captcha っていいます。wikipedia の情報を引用すると、 CAPTCHA(キャプチャ、"Completely Automated Public Turing test to tel...

2008年5月25日 | drk | コメント(4)

国勢調査の性別×年齢×都道府県の人口分布データを収集するスクリプト

仕事でたまたま聞かれた国勢調査による人口分布に関するデータ。国勢調査の結果は 総務局 - 統計局ホームページ にて公開されています。最新の国勢調査結果としては 平成17年国勢調査 第1次基本集計結果 が公開されています。基本的に各都道府県別と全国の集計結果がエクセルシートで公開されています。 んがっ、この結果がこれまた非常に見づらいフォーマットのものが多いんですわ。そのままではとても統計データとし...

2008年3月 5日 | drk | コメント(0)

メールログを解析する簡易 Perl スクリプト

「あなたの作ったメール配信システムはエラーメール処理をしていますか?」 という記事が結構よく読まれています。最近は本業の方でもメール未達について調べて欲しいとかいろいろ頼まれた経緯もあり、そのときにでっちあげたスクリプトを晒しておきます。誰かの役にたちそうだなぁ〜と思いまして。 ちなみにメールログの形式は qmail のものでしか試したことがないので各メールサーバにあわせて若干の改変は必要かもしれ...

2008年3月 4日 | drk | コメント(0)

Cache::Memcached 1.21が突如クラッシュした

お仕事で使っているサーバが突如落ちた。データセンターまで 30 分ほどかかるのでリモートハンドサービスってのでリブートして頂いてますが、それでも 20 分くらいかかります。正直不便。まぁその話はおいておいて、どうにも腑に落ちないのですがログを見る限りエラーを吐いているのは Cache::Memcached らしい。 ってか半年ほど前にこの業務アプリに Cache::Memcached を入れて実装...

2007年11月 2日 | drk | コメント(0)

Web サービスを高速化するコツは壱にキャッシュ弐にキャッシュ

えーっと、いきなりですがタイトルが全てです。ここ最近痛感しているのが Web サービスの応答を高速化するコツは キャッシュを如何に利用するか キャッシュを利用可能とするための仕掛けを如何に作り込んでいくか に尽きると思います。単純に squid 等のキャッシュサーバをフロントに置けと言うことを言っているのではなく、動的コンテンツを生成するスクリプト内にキャッシュ可能なポイントを作っていくことが重要...

2007年10月20日 | drk | コメント(0)

Perl で作る画像類似検索システムの考察

今日はとてもショッキングな出来事がありました。あまりにショックがでかいので何かに没頭しなければ気が紛れそうにありません。と言うわけで全く専門分野でもないし当面使う予定もないのですが、1年ほど前にちょっと気になっていた画像の類似検索についていろいろ調べてみました。 どうやら ImgSeek ってソフトが結構有名らしいです。最新バージョンは 0.86 で Linux Only です。1つ前のバージョン...

2007年8月18日 | drk | コメント(0)

Win32::OLE で Excel を操る perl スクリプト

えーつい最近、Spreadsheet::WriteExcel について聞かれました。ちょっとしたサンプルプログラムを教えたついでに Win32::OLE のサンプルも教えたのでどうせならブログのネタにと記事にしてまとめておきます。よく考えたら、以前 Spreadsheet::WriteExcel が 2.10 から便利になっている件について を書いたときに ちなみに、Windows 上の Acti...

2007年7月27日 | drk | コメント(2)

Image::Magick を使って大量画像のサムネイル画像を一括自動生成

お仕事で素材集 CD-ROM 内の画像ファイル全2万点を全てリサイズして欲しいという依頼が来た。自社のコンテンツに使うためのリサイズ作業です。初めは OPTPiX webDesigner のバッチ処理で何も考えず 50 x 40 px にリサイズ。縦横比が違う画像が一杯なので何とも無惨な画像が数時間後にできあがった・・・orz 仕方がないので、PhotoShop のバッチ機能でトリミング〜リサイズ...

2007年4月11日 | drk | コメント(0)

Catalyst + Lighttpd + FastCGI + DBIC + Schema::Loader に関する備忘録

ここ数ヶ月 Catalyst を触っていなかったらメキメキと記憶から知識が抜けてました・・・orz 恐ろしいことに DBIC もメキメキと忘れてました・・・orz 僕はどちらかというと OR Mapper を使うよりも SQL 直書きしたほうが理解が早い部類の人間なので DBIC つかって distinct とかするコードを書くのが面倒くさくて仕方がない。なので本業の Sledge ベースのアプリ...

2007年4月 5日 | drk | コメント(0)

Spreadsheet::WriteExcel が 2.10 から便利になっている件について

久々に Perl で Excel ファイルを処理する必要がでました。前回スクリプトを書いたころは Spreadsheet::WriteExcel も version 2.04 の頃と随分と昔のことなので、どうやるかなんて綺麗さっぱり忘れています。最新の Spreadsheet::WriteExcel は version 2.18 らしく changes を見ていたら + Added aut...

2007年3月19日 | drk | コメント(3)

JIS X 0213:2004(JIS2004) で本当に文字化けする文字

前回「Vista で導入される JIS X 0213:2004(JIS2004) のまとめ(お勉強編)」という記事を書きましたが、本当に文字化けする文字について調査しました。僕は Perl 使いなので検証は Perl のみです。 今回の文字化けの定義は、 SJIS - EUC - UTF8 を相互変換する過程において元の文字コードに戻したときに元のコードに戻ってこない文字を文字化けする とします。...

2006年12月19日 | drk | コメント(0)

【続】やはり Perl はメモリ喰いな言語。データ型の内部構造

以前、「やはり Perl はメモリ喰いな言語。データ型の内部構造」という記事を書いたことがあるのですが、自分で書いておきながらしばらく立つと完全忘却してました。時代は変わって、今仕事で運用しているサーバは、64bit 版のOSです。 最近になって、DB のテーブルのデータを加工・集計しながら CSV にダンプするってプログラムが、データ数が非常に多いときに、1.5 GByte ほどメモリを食いつぶ...

2006年11月 7日 | drk | コメント(0)

那須高原で休息してきました。紅葉が綺麗でした。

那須の友達の家に遊びに行ってきました。日頃の行いが悪いのか、AM 8:30 とちょっと早めに出かけたのですが、東北道で事故渋滞が2回もあって、2時間で付く予定が4時間もかかりました。渋滞の中、途中どうしてもトイレが我慢できなくなって、緊急用に車内に置いてある携帯トイレでおしっこをしました。何とも言えない気分でした・・・orz 特にコレと言ったイベントは無いのですが、ゆっくりと時間をつぶしました。友...

2006年11月 5日 | drk | コメント(2)

【備忘録】CPAN Author の登録手順とモジュールの登録手順

えーっと、一応 CPAN サイトを読みまくったのですが、英語が苦手なためか、ずーっと CPAN Author の登録手順やら CPAN へのモジュール登録手順がわかりませんでした・・・orz  幸いなことに、社内のモヒカン族な方に PAUSE ってキーワードを教えて頂きました。ググッたらすぐに情報でてきました。この前の Shibuya.pm でライトトークされてた、kawasaki さんのサイトに...

2006年10月28日 | drk | コメント(3)

DBIx::Class で sql_maker が生成した SQL をロギングする方法

DBIC いろいろ使って検証を続けているのですが、O/R Mapper って当たり前だけど万能じゃぁないなぁ〜とすごく思う今日この頃。正直、リレーションとか張りまくってる場合、自前で JOIN とか View 定義して書いた方が遙かに効率の良い SQL が記述できる。 複雑な SQL を表現するには、O/R Mapper だと逆に見づらいなぁ〜と思ったり。 とはいえ、単純な SQL の場合はやはり...

2006年6月22日 | drk | コメント(0)

DBD::Oracle に激遅のコードが混在している件について

えーっと、ここ数日やっている DBIx::Class 関連なんですが、DBIx::Class::Schema::Loader::Oracle を作ってみたものの、Oracle の場合、なぜか _load_relationships が異常に遅いんですよ。でかなり深追いしてみました。 DBIx::Class::Schema::Loader::Base->_load_relationships あたり...

2006年5月30日 | drk | コメント(0)

DBIx::Class::Schema::Loader::Oracle 作りました

「DBIx::Class::Loader::Oracle 作りました(多分ちゃんと動いてる・・・)」で書きましたが、今の主流?は DBIx::Class::Loader ではなくて DBIx::Class::Schema::Loader を使うらしい。 ってことで、DBIx::Class::Loader::Oracle の他に DBIx::Class::Schema::Loader::Oracle...

2006年5月29日 | drk | コメント(4)

DBIx::Class::Loader::Oracle 作りました(多分ちゃんと動いてる・・・)

Catalyst の Model に Class::DBI でなくて DBIC 試してみようと思ったら、DBIx::Class::Loader::Oracle がないので Helper スクリプトがエラーになってしまいます。 script/test_create.pl model DBIC DBIC dbi:Oracle:testdb test test123 exists "/test/s...

2006年5月25日 | drk | コメント(0)

LWP で https + authorization_basic を使うと セグメンテーション違反する件

最終的な結合試験中に見つかった不具合なんですが、Crypt::SSLeay + openssl-0.9.8a でセグメンテーションフォルトします。多くの場合、デフォルトで rpm されている openssl-0.9.7 系では問題が発生しないようです。 あまり深追いをしていないのですが、セグメンテーションフォルトっていうエラーなので、Perl スクリプトではなくて、XS の C で描かれた部分だろ...

2006年5月 1日 | drk | コメント(0)

Perl の make 時に miniperl でエラーになる場合の対処方法

急遽、会社で構築中のサーバの Perl のをリコンパイルする必要がでました。RHEL 3.0 - X86_64 - Update 7 を使っているのですが、どうにも Perl 5.8.6 のコンパイルが通らないんですよ。こりゃ困った。 `sh cflags "optimize='-O2'" opmini.o` -DPERL_EXTERNAL_GLOB opmini.c clude/gdbm -...

2006年4月30日 | drk | コメント(0)

Catalyst の Catalyst::Helper::Model::CDBI でいつもハマる・・・orz

何か、Catalyst をいろんな環境にインストールするたびに、Helper スクリプトを実行して、create model CDBI するといつも同じエラーで躓くので備忘録として記事にしておこうと思いました。 その1)Class::DBI::mysql をインストールし忘れる perl myapp_create.pl model CDBI CDBI dbi:mysql:WebService te...

2006年3月25日 | drk | コメント(1)

負荷値取得プラグイン Sledge-Plugin-SNMP 作りました。

「ワンランク上の負荷対策を Web アプリに実装するには・・・(Sledge編)」で、SNMP 経由でサーバの負荷を取得する Sledge / Catalyst プラグインが欲しいって書きましたが、急に作る必要がでたので Sledge 版を書きました。Net::SNMP 使ってます。 ※CPAN に登録しようとしてドキュメントずーっと読んでいたのですが、全然わからなかったので取りあえず公開・・・|...

2006年2月10日 | drk | コメント(0)

ワンランク上の負荷対策を Web アプリに実装するには・・・(Sledge編)

最近、お仕事で悩ましいのがデータベース負荷。結局のところ、Web サービスでボトルネックになるのは、バックグラウンドの DB 処理。特にどうしようもないのが、更新系リクエスト。つまりはマスターDB。 既に多くのところが採用している構成と思いますが、MySQL とかでよくやる手段といえば、 参照系は、レプリケーション機能を使って参照系DBを用意して負荷分散。マシンを増やせば負荷に対応可能。 更新系の...

2006年2月 8日 | drk | コメント(0)

イケてないプログラム(使えない成果物)に見られる3つの共通点

クイックソートの話で書いたとおり、相変わらず Excel - VBA と格闘する日々が続いております・・・orz 「大企業にありがちな問題。委託開発の甘い罠・・・」でも書いたとおり、今まで外注して作ったソフトウェアってほぼ 100% の確率でイケていないものが完成してます。年末に納品されたソフトウェアのできも酷いの何のって・・・ さて、いままで見てきたイケてないプログラムのダメソースに共通して...

2006年1月26日 | drk | コメント(3)

再帰処理のクイックソート vs 非再帰処理のクイックソート

最近、会社の仕事で全く触ったこともない Excel-VBA を触るハメになりました・・・orz 理由は「大企業にありがちな問題。委託開発の甘い罠・・・」で書いた通りで、委託開発したソフトウェアが涙がでるようなできばえで納品されまして、仕方なくソースを解読しつつバグ修正や仕様通りに動いていないロジックの変更などをやっております。 さて、VBA って実はいろいろ不便なこともありまして、通常の言語のよう...

2006年1月21日 | drk | コメント(2)

古いファイルを一括削除する perl script

サーバの Disk 容量が足りなくなってきたので、Amazon Search とかの Web Service として提供しているアプリケーションのコンテンツ・キャッシュファイルを、ある一定期間更新がされていないファイルを一括削除することにしました。 簡単な削除スクリプトを書いてみました。キャッシュをファイルベースで管理している場合に、ひょっとして他の方にも役立つかも?と思ってソースを公開しておこう...

2005年11月27日 | drk | コメント(4)

prototype.js を使ったインクリメンタル・オート Selecter クラス

prototype.js を以前から使ってみたいと思っていたのですが、なかなか時間がとれなくて触ることができませんでしたが、必要に迫られて JavaScript のコーディングをすることになりました。良い機会なので prototype.js を使ってみることにしました。 今回の要件(前提条件)として、 リストボックス・リストボックス内のデータが数千件とあまりにも多くなってしまい、選択するにも何処に...

2005年11月16日 | drk | コメント(0)

64bit OS と 32bit OS でのデータ型の相違一覧

Perl-XS なモジュールを 64bit OS で使っていると、ごく希に変数型サイズが問題で不具合を経験することがあります。例えば、メジャーどころで言えば、日本語係り受け解析器のCaboCha/南瓜を例に挙げますと、 src/common.h の103〜107行目 static inline void replaceString (std::string &s, const std::stri...

2005年11月 3日 | drk | コメント(0)

Date::Handler でも9時間ズレる!POSIX::strftime に注意

Date::Simple で9時間ズレる問題(2131) - TokuLog! で取り上げられていた、POSIX::strftime を用いたときの時間ずれ問題。 僕は Date::Simple をもっと拡張した感じの Date::Handler ってモジュールで同様の経験をしました。...

2005年10月22日 | drk | コメント(0)

Perl の MVC フレームワーク Catalyst のお勉強〜その1〜

時間が空いているときに Catalyst のお勉強をしていたのですが、なかなか情報をまとめる時間がとれないのです・・・。思ったより苦戦したので少しずつでもお勉強の情報をまとめていこうと思ってます。今回はその1ってことで。Catalyst をこれからお勉強してみようって方の参考にでもなれば幸いです。 実際には、アプリケーションを1つ作ってみるってところまで既に2週間前に終わっていたりするのですが、そ...

2005年10月16日 | drk | コメント(0)

高速&省メモリ perl-xs版 split モジュール

大量の csv ファイルを読み込んで処理をするとき、カンマやタブ区切りのレコードを split や正規表現を使って文字列を分割して配列に入れて処理・・・なんて事は良くやります。mysql 等のデータベースに入っているデータなら速度的に問題が発生することは少ないのですが、どうしても csv のまま処理をしなければならない場合、文字列の分割のコストがバカになりません。 perl の split はかな...

2005年9月18日 | drk | コメント(0)

使える言語は Perl と言うと何故にバカにされるのか?

前から思っていたことなんですが、このネット業界ですらそうなんですが、 ?さん 「言語何使ってる?」 僕 「Perl がメインかなぁ〜」 ?さん 「( ´_ゝ`)フーン Java じゃないんだぁ・・・今時 CGI で書いてるの?」 ってなことが良くあります。まぁそういうときは、あぁこの人は Java しか知らないんだろうなぁ〜とか思います。...

2005年8月 2日 | drk | コメント(6)

Template Toolkit の配列へのアクセス方法メモ

Perl でデザインとビジネスロジック分割して開発効率と保守性を改善する MVC な Web アプリケーションを作るには欠かせないテンプレートエンジン。Perl な世界では、HTML::Template と Template-Toolkit が有名です。 前者は Pure Perl でかかれているので、レンタルサーバとかでもライブラリパスを通すだけで使えるので手軽で便利です。後者は XS で書かれ...

2005年7月 6日 | drk | コメント(0)

Think IT で Perl フレームワーク Sledge 特集!

最近の Web アプリといえば、MVC は当たり前な訳ですが、Perl の世界で言えば、CGI::Application、 Sledge、Catalyst あたりが実績と知名度がありますね。 仕事でライトな案件や社内ツール類は CGI::Application で書くことが多いのですが、ちょっと大きめの Web サービス向けのシステムは Sledge が抜群に作り勝手が良いですね。実際、liveb...

2005年6月 8日 | drk | コメント(0)

やはり Perl はメモリ喰いな言語。データ型の内部構造

「Perl 5.6系 と 5.8系では巨大配列の処理効率が違う」でも書いたのですが、巨大な配列データの扱い方でメモリ使用量でハマってます。そもそも csv ファイルで 100MByte 程度のデータが Perl 内部では 1GByte 程度もメモリを喰うのが納得いかない。 そこで、Perl のメモリ使用量を調査してみるととにしました。必要となるモジュールは、 Devel::Size と Dev...

2005年4月21日 | drk | コメント(2)

Perl 5.6系 と 5.8系では巨大配列の処理効率が違う

仕事で、OLAP チックな処理を MySQL でやらせて、その結果を Perl で整形して出力なんてことを書いているのですが、久々に原因不明の処理速度低下でハマりました。   5万レコード×200セルほどのデータを DBI 経由の fetchrow_arrayref で取得して、その配列リファレンスを元にゴニョゴニョ置換処理やら文字列マッピング処理などをやっていたのですが、Perl 5.6.1 で...

2005年4月18日 | drk | コメント(0)

CGI で特定フレームを指定して実行する方法

Perl CGI でフレーム分割したアプリケーションにおいて、リクエスト毎の認証チェックでエラーになったときに、フレームの親、つまり全画面("_top")で認証画面にリダイレクトする要求仕様を満たすために、いろいろ調べました。次のようなヘッダーを出力すれば良いみたいです。   print "Location: http://www.xxxx.co.jp/auth.cgi\n"; print "Wi...

2005年4月15日 | drk | コメント(4)

Time::HiRes で取得できる値は CPU によって異なる

バッド・ノウハウですが、何度も記事に書いている Opteron サーバですが、かなり不具合でまくりで精神力も体力も力尽きそうな訳ですが、一番はまったのは、Perl モジュールの Time::HiRes で取得できる値の精度が、Intel 系と AMD 系で異なるということでした。   ミリ秒の値、すなわち Time::HiRes::time() で取得できる値の「.」以下の値が Intel 系(P...

2005年4月10日 | drk | コメント(0)

指定の日数以上更新がないディレクトリを消す方法

Amazon Search は全ての検索結果をディスク上にキャッシュする仕組みになっているのですが、最近、キャッシュ容量が 20 GByte 程になり、ディスクを圧迫してきたので、60日以上更新がないアソシエイトID 配下の Amazon Search のキャッシュファイルを削除する事にしました。 ※すいません・・・誤って必要なディレクトリまでかなり削除してしまったので、検索 query が多すぎ...

2005年1月29日 | drk | コメント(0)

Spreadsheet::WriteExcel = Perl で Excel 出力(2)

Spreadsheet::WriteExcel = Perl で Excel 出力でご紹介した、Perl で Excel データを出力する方法ですが、Spreadsheet::WriteExcel オブジェクトで生成可能なファイルサイズには制限があります。出力データサイズが 7〜10 MB程度になると、Spreadsheet::WriteExcel::Big を使ってくれっていうエラーが出力されま...

2005年1月18日 | drk | コメント(0)

楽天アフィリエイトを自動化

アフィリエイターの方々。楽天アフィリエイトって商品リンクを生成するの、凄く面倒とは思いませんか?最近、楽天も「大量の商品を紹介する新型アフィリエイト」なる機能を実装したようですが、所詮ヘッダーと色を変えただけの楽天サイトなんですよね。ちょっと残念。 Amazon Web Service のように、API が公開されていて XML でシコシコ加工できれば、いろいろ独自サービスが勝手に創られるので...

2005年1月 7日 | drk | コメント(0)

Perl でプロセス数チェックする方法

プログラミングしていると、プロセス数を監視しながら動作の制御をしたい時があったりします。Amazon Search でも、各ユーザに均等にリソースを分配するために、内部でドメイン毎のリクエスト数(プロセス数)を監視しながら負荷の調整を行っていたりします。 その他にも、いろいろ使い道があると思いますので、Perl でプロセス数を監視する Tips を紹介致します。Linux や Solaris のよ...

2004年11月 3日 | drk | コメント(0)

ithread 配下で Scalars leaked

Amazon Search のスレッド実行時に Perl のメモリーリークエラーが発生していたので、いろいろ調査。詳細な原因は特定できていないのですが、例えば perl 5.8.x の ithread においてはスレッド内で eval を使用すると、Scalars leaked が発生するようです。例えば、次のコードを linux な環境で実行して見て下さい。 perl -Mthreads -...

2004年9月23日 | drk | コメント(0)

Perl 5.8.4 以下 の ithread にバグあり

Amazon Search が遅いってコメントを見て、いろいろデバッグ情報を見ていたら、スレッドの生成が怪しいことが気がついた。Amazon Search では1リクエストに対して、検索スレッドが 8 つ並列で起動する仕組みなのですが、全スレッド生成が最短で1秒。最長で50秒もかかっている。 おかしいと思い、いろいろ調べてみると、perl 5.8.4 までの ithread の生成アルゴリズム...

2004年9月17日 | drk | コメント(0)

カテゴリ分類 AI::Categorizer

次なるサービスのネタ探しとしてテキストマイニング系の実験をしているのですが、最近流行のベイズ理論では、なかなか最適解っぽいものを出力してくれません。もっとも最適解に近いものを出力してくれると最近話題の SVM を使っていろいろやりたいなぁ〜と考えるも、何やら小難しいです。 * Algorithm-NaiveBayes-0.03.tar.gz * Algorithm-SVM-0.08.tar.gz ...

2004年9月11日 | drk | コメント(0)

ダウンロード管理CGI

要望があったので、Blog を始める前の HP で公開していたダウンロード管理 CGI の公開を再開することにしました。いろいろとモジュール依存しているので、動作しないレンタルサーバ等あるかと思いますが、ご了承下さい。 <特徴> * 任意の場所の任意のコンテンツ(html,txt,rm,lzh,zip等各種形式)のダウンロードが可能です。 * 各々のコンテンツに対してダウンロードしたユーザー数をカ...

2004年9月 4日 | drk | コメント(1)

Spreadsheet::WriteExcel = Perl で Excel 出力

業務系アプリを書いていると、csv 出力ぢゃなくて、Excel データそのものを出力できたらなぁ・・・と思うことがあると思います。そこで、 Perl で Excel データを生成する方法と日本語を扱うときの注意点をまとめてみました。 環境構築編/必要な Perl モジュールをインストールします。 下記コマンドを root 権限のあるユーザで実行してください。 perl -MCPAN -e 'i...

2004年8月29日 | drk | コメント(5)

ithread を使って処理の高速化の例

Perl5.8 では、ithread というスレッドモデルが採用されました。XML や SOAP といった通信処理を書くと、応答を待っている時間が非常にもったいない。例えば、サイトをクロールするときとかは通信時間がバカにならないので、並列化は特に有効です。 ちょっとした実験をしてみたのですが、概ね良好な結果が得られたので、随所にスレッド処理を施そうと思います。...

2004年7月25日 | drk | コメント(0)

XML::Simple の処理はとても遅い

最近 Perl で XML を処理することがとっても多いですね。Amazon Search の高速化のためいろいろデータを取得してみたら、XML::Simple の部分で異様に時間を喰っていることが判明。いろいろググッってみたら、「Perl で XML の処理はどれが速いかベンチ : NDO::Weblog」という記事を見つけました。 なるほど、XML::Simple と XML::LibXM...

2004年7月24日 | drk | コメント(0)

Perl5.8 での Unicode 文字列の注意点

Amazon Search とかを EUC ベースから UTF8 ベースで実装し直したのですが、場合によって length や substr 等の文字列関数で処理が違うことが判明。備忘録として記事にしました。 Perl5.8 では Unicode 文字列に対して UTF8 フラグという内部データを設けて、その有無によって文字単位で扱うかバイト単位で扱うかを決定しています。また UTF8 フラグ...

2004年7月24日 | drk | コメント(2)

PerlでTomcatのフリをする

PerlでTomcatのフリをしよう。Net::AJP13の巻: module.jp の OYAMA さんが、とっても有益な Module を開発中。 WebサーバとTomcatを連携させるプロトコル"AJP13"を、ちょっとした出来心からPerlで実装してみました。というわけでPerlでServletコンテナのフリをする方法。意外にパフォーマンスもよさげ。 簡単なベンチマークでTomcat 5 ...

2004年6月10日 | drk | コメント(0)

Perlな人は必読!! Spidering Hacks

Spidering hacks―ウェブ情報ラクラク取得テクニック101選Kevin Hemenway, Tara Calishain, 村上 雅章Linux World Expo 2004 の会場内の O'RELLY ブースにて先行発売していたので購入!! 今まで自前で作ってきた Perl モジュールはいろいろあるが、より良いものがこの本にある!! と衝撃を受けた。 この本のタイトル「SPIDER...

2004年6月 6日 | drk | コメント(0)

日本国内 IP かを判定するモジュール

以前ご紹介した「日本国内に割り当てられたIPの調査」を利用して、リクエスト元が日本国内かを判定する Perl module を作成しました。割り当て IP は時々刻々と変化していくので、いずれ陳腐化していくと思いますが、当面は利用価値のある module となると思います。 利用用途としては、Blog 等の Comment SPAM 対策などに利用できます( MT への組み込み方もあわせて紹介しま...

2004年4月17日 | drk | コメント(6)

形態素解析 エンジン 一覧

blogkid さんが、形態素解析ツールの一覧を記事にしていたのでチェキ!! ChaSen  日本語形態素解析システム CaboCha  Support Vector Machines に基づく日本語係り受け解析器 JSplitter  日本語の単語抽出ツール MeCab  ChaSenを基に開発された高速な形態素解析器 Sen  Java 形態素解析エンジン すもも  NTT 物性科学基礎研究所...

2004年4月17日 | drk | コメント(3)

形態素解析の専門用語の精度UP

google SimilarとAmazon Similarで使っている形態素解析は、定番の「茶筅」なのですが、どうもま専門用語の抽出に弱い欠点があります。いくつか独自のロジックを埋めて補正しているのですが、もっと精度を良くしたいと思い、ぐぐってみたら、TermExtractなるモジュールを 発見!キタ━\(゚∀゚)/━ !!!!! TermExtractを使うと何が解決できるのかっ!! 以下引用...

2004年3月11日 | drk | コメント(0)

Sledge1.11リリース嬉しいねぇ!!

1年ぶりにSledge のメンテナンス。 社内版だけに入ってるモジュールを SF 版に追加したり、バグ修正をいくつかして 1.11 リリース。 SledgeWiki もつくってみた。フルスペックの Wiki にするのはかなりうっとうしいな。。Sledgeはかなり洗練されたPerlフレームワークなので、今回の社内版モジュールの追加が本当に嬉しい。DLはこちらから。こうして慣れ親しんだPerlを手放せ...

2004年2月25日 | drk | コメント(0)

文字コード一覧についてメモ

なんつーかCGI書いているときに文字コードについて、いっつも検索して調べている気がする。ということで、文字に関するPerlメモ書き。一番上のリンクから大体全てがたどれる。 * 正規表現/文字コード最新リンク2004 * 文字コード、標準化について * Perl正規表現雑技 * ベンダ別 SJIS コード一覧 ...

2004年2月14日 | drk | コメント(0)

形態素解析+google API実験

形態素解析mecabのインスコで記載したとおり、形態素解析を使った「何か」を実験中。作成途中でかなり同じコンセプトの「Bulkfeeds: Similarity Search」がリリースされました。あっちの方がデキはイイですが、現在実験中のモノの相違点はリアルタイムに指定のURLのコンテンツを形態素解析してgoogle APIを通してgoole DBから似たコンテンツを探してくるというモノです。 ...

2004年2月 8日 | drk | コメント(1)

デザインパターンを学ぶ

Webな世界で活躍されている小山浩之さんが関わった雑誌・ムック・書籍などの情報にPDFが追加されました。デザインパターンを学ぶが特にお奨めです。やっぱしっかりしたプログラムを記述するには、デザインパターンを学んでおいた都合がいいです。興味のある方は、HPにアクセス!! プログラムからMySQL操作 (PDF: 1.3M) デザインパターンを学ぶ (PDF: 138K) 礎編:Perl実行環境とモジ...

2004年1月29日 | drk | コメント(0)

高速半角全角ライブラリ

Perlで半角・全角・絵文字処理を行うのに欠かせない Jcode モジュールですが、如何せん処理が遅い。Perl 5.8.xでは Encode モジュールがあるのですが Jcode と扱いが結構違うので (+д+)マズー Jcode 1.9 系/2.x系も内部実装が Encode モジュールに変更されたので、Jcoce 0.x 系と動作が違って (+д+)マズー そこで XS を使った半角・全...

2004年1月15日 | drk | コメント(9)

GDpngcat.pm

アクセスカウンタとかでgifの連結を行うgifcat.plというPerl Moduleがあるのですが、コレがなかなか速度が激遅で(#゚Д゚)ゴルァ!! そこでGDモジュールを利用して高速なpng連結Perl Moduleを作成した。当然ながらGDが必要だが、XREAの一部のサーバにはインスコ済みのようだ。gifcat.plに比べて10倍近い高速化が実現されておる。 ≫スクリプトはこちら(GDpn...

2003年12月27日 | drk | コメント(0)

オリジナルPerlモジュール集

オリジナルPerlモジュールを公開していきます。ココで公開するモジュールは、基本的に全てmod_perl対応のオブジェクト指向で作成されたモジュールとなります。また全てフリーソフトとして使用できます。なお、説明のないモジュールは、ソースを解読してご利用ください。 利用するにはPerl5以降(5.004以降推奨)が必要です。Perl4では動作しません。 ...

2003年12月11日 | drk | コメント(0)

CONTACTご相談・お問い合わせ

drk7.jpでは、小規模な CGI 開発から技術支援まで幅広くご相談にのります。

ご相談・お問い合わせはこちら からお気軽にどうぞ。

楽天から貴方に最適な商品をご紹介

ページのTOPへ

Copyright © drk7.jp, All Rights Reserved.