タグ

ブックマーク / www.drk7.jp (14)

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

    UML::Class::Simple ってモジュールがあります。このモジュールを使うと既存のプログラムを解析してクラス図を作成することができます。業務で仕様書を書く必要がでた場合、もしくは Catalyst のようなフレームワークをより深く知りたくなったときなどに大いに役立つモジュールです。 http://search.cpan.org/~agent/UML-Class-Simple/lib/UML/Class/Simple.pm UML::Class::Simple is a Perl CPAN module that generates UML class diagrams (PNG format, GIF format, XMI format, or dot source) automatically from Perl 5 source or Perl 5 runtime. Per

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

    仕事で書いてる Sledge アプリがあるのですが、先日負荷テストを行った結果びっくりすることに現行アプリの10倍遅いことが判明してしまいました・・・orz Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得ることができました。この内容に関してはまた別エントリにて。 さて、プロファイラを使うとプログラム実行時の各種情報を収集し、性能解析を行うことが可能です。プロファイラについてもう少し詳しくしるには 性能解析 - Wikipedia あたりを読むと良いでしょう。 プロファイラ(英: Profiler)は性能解析ツールであり、プログラム実行時の各種情報を収集する。特に、関数呼び出しの

  • lighttpd + FastCGI は mod_perl + Apache1.3 より1割ほど高速 :: Drk7jp

    巷で超高速 Web サーバとして話題になっている lighttpd を試してみました。lighttpd に関する日語ドキュメントは非常に少なく、ちょっと込み入った設定ファイルの記述方法とかの解析に手間取りました。 lighttpd のコンセプトは、「セキュアで省メモリで高速に動作し、柔軟性もある」なのですが、「lighttpd 公式サイトのベンチマーク結果」や「UnknownPlace. - Catalyst ベンチ」で簡単な Catalyst - Hello.cgi のベンチマークが公開されているとおり、Apache 1系、Apache 2系よりも高速に動作するようです。特に static なページの処理は Apache の 2〜3 倍程度は高速に処理できるみたいです。 また注目すべき点として、Apache + mod_perl よりも lighttpd + FastCGI の方が1割

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

    Perl でデザインとビジネスロジック分割して開発効率と保守性を改善する MVC な Web アプリケーションを作るには欠かせないテンプレートエンジン。Perl な世界では、HTML::Template と Template-Toolkit が有名です。 前者は Pure Perl でかかれているので、レンタルサーバとかでもライブラリパスを通すだけで使えるので手軽で便利です。後者は XS で書かれていて遙かに高機能でしかも高速です(実際の動作速度はほぼ同じですが、遙かに高機能な Template Toolkit の内部動作が如何に高速かがわかるでしょう・・・)。 最近 Template Toolkit を使ってアプリを書くことが多いのですが、日語なドキュメントが極端にすくないです。より深きを知るためにオリジナルのドキュメントを読んでいて初めて知ったことが沢山ありました。 いままで、配列は

    joan9
    joan9 2008/08/27
  • XML::Simple の処理はとても遅い :: Drk7jp

    XML::Simple の処理はとても遅い 最近 Perl で XML を処理することがとっても多いですね。Amazon Search の高速化のためいろいろデータを取得してみたら、XML::Simple の部分で異様に時間を喰っていることが判明。いろいろググッってみたら、「Perl で XML の処理はどれが速いかベンチ : NDO::Weblog」という記事を見つけました。 なるほど、XML::Simple と XML::LibXML では実に 200 倍以上の速度の差があることが判明しました。正規表現との比較では、実に 2500 倍以上の速度差。XML::Simple を使って記述してるプログラムを全てリプレースしようと思います。大量のリクエストが来るので、正規表現を使うしかなさそうだなぁ・・・ スポンサード リンク Trackback : Posted by drk at 20

    joan9
    joan9 2008/08/26
  • Perl 言語自身すら拡張する Filter 機能をお勉強

    で、そんなことをして何が嬉しいかというと、perl に独自の言語仕様(構文)を加えることができます。ぱっと思いつくものでいえば、Filter::SQLSwitch あたりで使われていたりします。 そもそもなんで今毎 source filter 機能なんて調べているかというと、つい最近、このブログのカテゴリ部分に jQuery の jquery.pager.js を使ってページ分割をしてみました。最近エントリ数が多くなってきて見づらいなぁ〜と思っていたところなんです。 脱線しないように詳しい話はまた別エントリにするとして、MovableType 3.3 の ContextHandlers.pm を一部書き換えないとコレが実現できなかったんですけど、どうせなんでプラグインで配布しようかなぁ〜と考えてしまったわけです。・・・がですね、MT4 系等をサポートしようとすると・・・結構ソースが違

  • ワードサラダ技術について

    後半部分が重要で、未来の挙動が現在の値だけで決定され、過去の挙動と無関係である ということです。 さて、実例です。たとえば次の文章を考えてみます。 「通信販売大手セシールは9日、生命保険の販売に格参入する方針を明らかにした。」 まず形態素解析するとこんな感じになります。 通信 名詞,サ変接続,*,*,*,*,通信,ツウシン,ツーシン 販売 名詞,サ変接続,*,*,*,*,販売,ハンバイ,ハンバイ 大手 名詞,一般,*,*,*,*,大手,オオテ,オーテ セシール 名詞,固有名詞,組織,*,*,*,セシール,セシール,セシール は 助詞,係助詞,*,*,*,*,は,ハ,ワ 9 名詞,数,*,*,*,*,9,キュウ,キュー 日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ 、 記号,読点,*,*,*,*,、,、,、 生命 名詞,一般,*,*,*,*,生命,セイメイ,セイメイ 保険 名詞,一般

  • 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 testid testpw exists "/home/apache/tmp/MyAPP/script/../lib/MyAPP/Model" exists "/home/apache/tmp/MyAPP/script/../t" created "/home/apache/tmp/MyAPP/script/../lib/MyAPP/Model/CDBI.pm" Couldn't require lo

  • Lighttpd 1.5 系がスゴイらしい

    はてブで lighty のブログがあることを知ってブログを見てみました。lighty の中の人が書いてます。 ナント、lighty 1.5 系が pre release されているではありませんか! なんでも、1.5 系は いままでより 80% のスループット向上が見込めると書かれています。激速の lighty が更に高速になるってわけですよ。Σ(゚Д゚; Using Async IO allows lighttpd it overlap file-operations. We send a IO-request for the file and get notified when it is ready. Instead of waiting for the file (as in the normal sendfile()) and blocking the server, we ca

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

    以前、「やはり Perl はメモリ喰いな言語。データ型の内部構造」という記事を書いたことがあるのですが、自分で書いておきながらしばらく立つと完全忘却してました。時代は変わって、今仕事で運用しているサーバは、64bit 版のOSです。 最近になって、DB のテーブルのデータを加工・集計しながら CSV にダンプするってプログラムが、データ数が非常に多いときに、1.5 GByte ほどメモリをいつぶしているってことに気がつきました。理由は至って簡単なのですが、結構ハマリどころなので備忘録として記事にしておくことにしました。 みなさん、仕事とかでは特にそうだと思うのですが、DBI の処理って何らかのラッパーを書いて使っていると思います。僕は適当に書くとよくやってしまいがちなのですが、イメージ的には、こんな処理の流れのコードを書いていました。 (・・・えっ?そんなへぼコード書いてない??・・・す

    joan9
    joan9 2006/11/08
  • 【備忘録】CPAN Author の登録手順とモジュールの登録手順 :: Drk7jp

    えーっと、一応 CPAN サイトを読みまくったのですが、英語が苦手なためか、ずーっと CPAN Author の登録手順やら CPAN へのモジュール登録手順がわかりませんでした・・・orz 幸いなことに、社内のモヒカン族な方に PAUSE ってキーワードを教えて頂きました。ググッたらすぐに情報でてきました。この前の Shibuya.pm でライトトークされてた、kawasaki さんのサイトに [Perl] 作成したモジュールをCPANで公開する手順 とそのまんまのタイトルで手順でてました。PAUSE ってキーワードがわからないと、このページにすらたどり着けなかったです・・・orz ってことで、以下登録までの備忘録。 1. PAUSE(Perl Authors Upload Server)のアカウントを取得します http://pause.perl.org/pause/query?ACT

  • 今更ながら Linux のコマンドを覚え直すことを考えた

    最近、Linux の設定をしている間にもググって調べて初めて汁 linux コマンドがいろいろあります。例えば、今日知ったコマンドは、ethtool と lspci の2つ。 ethtool は man で調べると Display or change ethernet card settings とあるように、ネットワークカードがどの状態で通信しているかを表示・設定するコマンドです。Giga-switch であえて 100M full-duplex に設定したりするときにこのコマンドを使ったりします。lspci は list all PCI devices とあるように、PCI に繋がっている全てのデバイスを表示してくれます。 と言った具合に、知らないコマンドが山ほどある。逆に普段使っているコマンドが少なすぎる印象を覚え、覚え直そうと思った次第です。 Linux のコマンドは、/bin、/

    joan9
    joan9 2006/08/30
  • セキュリティレベルの高いサイトを構築する 22 カ条 :: Drk7jp:

    最近、何処の会社でもセキュリティに関してうるさく言われているかと思います。自分としても今まで気を遣ってきていたつもりではあります。しかしながら、 なぜSSL利用をケチるのか:IT Pro SSLを入力画面から使用しないのはそろそろ「脆弱性」と判断してしまってよいころかも 安全なWebサイト設計の注意点 を読んでみて、お恥ずかしい限りですが勘違いしていた部分もありました。実際、Amazon とか Yahoo! のログイン画面を見ても、デフォルトが http によるアクセスになっていたりして、メジャーどころでも最新の注意が払われている訳ではないのだなぁ〜と思ったり・・・。当は全ページ SSL が理想とは知りつつも、SSL の処理負荷の高さ故に、ついついケチったページ遷移にしまうからなのでしょう。。。自分含めて。 自分への情報もかねて、上記ページに記載されている、31箇条の鉄則と最近の事情を加

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

    ?さん 「言語何使ってる?」 僕 「Perl がメインかなぁ〜」 ?さん 「( ´_ゝ`)フーン Java じゃないんだぁ・・・今時 CGI で書いてるの?」 ここで言う Java ってのは Tomcat や Resin に代表される Servlet / JSP コンテナを利用したプロセス常駐型 java の事を指してます。決して Java-cgi のことを意味していません。多分彼らも、そういったことは意識していないと思います。 業で随分昔(servlet 技術が出る前)に作成した Java-cgi で作られたアプリケーションが現役で活躍していますが、とてつもなく遅いです。いわゆる Perl-cgi が遅いと言われる理由と一緒です。一番の勘違いのポイントは、 CGI = Perl って図式が無意識のうちにあると言うことですね。でも実際は、CGI の定義は、アクセスがあるたびにサーバが新し

    joan9
    joan9 2005/08/02
  • 1