タグ

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

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

    Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得ることができました。この内容に関してはまた別エントリにて。 と書きましたが、プロファイラ使っていろいろ見つかったパフォーマンス劣化を招くモジュールについて少しだけまとめてみました。もちろん全ての環境で同じ結果になるとは限りませんし、僕が書いてるアプリに依存しまくっている前提ですが、何かの参考になればと。 想定していたパフォーマンスより10倍遅い状態の時の Devel::Profiler の結果は以下に示すとおり。 Log::Dispatch::Config::config_dispatcher が全体の 50% 程度も占めています。そ

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

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

  • Windows で消えないファイルを消す方法

    エクスプロラーが不正終了したり、ダウンロードが途中で不正終了した場合、たまに消せないファイルができることがあります。ごみ箱へ移動しようとすると、「ファイルを削除できません。送り側のファイルまたはディスクから読み取れません。」と表示されてしまいます。 このようなときは、dos 窓を開いて、windows からは直接設定することのできないファイル属性を変更する必要があります。以下に説明する手順で削除することが可能となりますが、手順を間違えると大変なことになるので、慎重に作業する必要があります。 「スタート」→「プログラム」→「アクセサリ」→「コマンドプロンプト」から dos 窓を起動する。 cd  "消したいファイルが存在するディレクトリ名" と入力し、ディレクトリを移動。"" で囲むと半角スペースを含むディレクトリが指定できます。 attrib と入力。通常のファイルなら「A 〜」と表示され

  • ISP から帯域制限をかけられてたので ISP 変更しました

    ここ数ヶ月、回線速度が妙に遅いと感じていました。僕の住まいは団地で各棟にBフレッツマンションの VDSL 方式でネット接続ができるようになっているのですが、他の人が動画とか見ていて帯域を使ってるのかなぁ〜と思いこんでました。 仕方がないからBフレッツファミリーへ乗り換えるべく新規加入申し込みをしました。NTTから通常マンションタイプがあるときはファミリーはひかないと思うので管理人に工事許可を取ってきて下さい。と言われて週末に話をしに行くかというところでした。でそんなときに読んだのが、 ゆーすけべー日記: 「連絡 - ISP から帯域制限をかけられつがりにくくなってます」自宅サーバ管理者の憂 あぁっっっ!なるほどっ! この可能性があったかっ! まさに見落とし。早速調べてみました。 今使っているプロバイダは ASAHI ネットです。いろいろと調べてみるとでてくるでてくる。大量のリクエストがあ

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

    今日はとてもショッキングな出来事がありました。あまりにショックがでかいので何かに没頭しなければ気が紛れそうにありません。と言うわけで全く専門分野でもないし当面使う予定もないのですが、1年ほど前にちょっと気になっていた画像の類似検索についていろいろ調べてみました。 どうやら ImgSeek ってソフトが結構有名らしいです。最新バージョンは 0.86 で Linux Only です。1つ前のバージョン 0.85 は Windows binary があります。 過去にいくつか画像類似検索ソフトを試したような記憶がありますが忘れてしまいました(vector でも結構類似検索ソフトありますね)。まずは windows binary 版をダウンロードしてきて実行してみました。 それなりに使えそうな予感がします。Linux 向けの imgSeek-0.8.6.tar.bz2 をダウンロードしてインストー

  • Windows で別のプロセスが使用中ですファイルを消す方法

    Template::ToolKit のファイルキャッシュの拡張子って .ttc を使うことが多いわけですが、この拡張子、実は Windows 上では True Type コレクションっていう特別な意味を持つ拡張子に割り当てられています。特別な意味っつーのは、True Type Font をまとめて1つにしたファイルのこと(多分・・・)を指すって意味なのですが、間違ってダブルクリックでもしようものならそのファイルを Font ファイルを勘違いしてインストールしようとし始めます。 当然 Font ファイルではないのでインストールは失敗するのですが、一度でもインストールを試みると消せないファイルの化けてしまいます。懸想としてもこんなエラーがでます。 「別のプロセスがこのファイルを開いているので、操作を完了できません」 なんて訳のわからないことをほざきます。システムの復元とかレジストリを調査したり

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

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

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

    ここ数ヶ月 Catalyst を触っていなかったらメキメキと記憶から知識が抜けてました・・・orz 恐ろしいことに DBIC もメキメキと忘れてました・・・orz 僕はどちらかというと OR Mapper を使うよりも SQL 直書きしたほうが理解が早い部類の人間なので DBIC つかって distinct とかするコードを書くのが面倒くさくて仕方がない。なので業の Sledge ベースのアプリは Model 部分に自前の DBI ラッパー使ってコネクションとかも管理してます。 ※ココ時代と逆行してるんでしょうね・・・ とはいえ忘れたままは悔しいので、最近ちょっとしたアプリを作るために Catalyst を使って書いていろいろメモったのを備忘録として残して自分用に公開。ってか DBIC のことなら DBIx::Class::Manual::Cookbook - Miscellaneous

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

    久々に PerlExcel ファイルを処理する必要がでました。前回スクリプトを書いたころは Spreadsheet::WriteExcel も version 2.04 の頃と随分と昔のことなので、どうやるかなんて綺麗さっぱり忘れています。最新の Spreadsheet::WriteExcel は version 2.18 らしく changes を見ていたら + Added automatic Unicode handling via utf8 in perl 5.8 and later. Thanks Mark Fowler. Added several unicode_*.pl examples in different encodings. Thanks to Sean Burke for the sample encodings. てことが書いてあります。ちょっとぐぐってみ

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

    DBIC いろいろ使って検証を続けているのですが、O/R Mapper って当たり前だけど万能じゃぁないなぁ〜とすごく思う今日この頃。正直、リレーションとか張りまくってる場合、自前で JOIN とか View 定義して書いた方が遙かに効率の良い SQL が記述できる。 複雑な SQL を表現するには、O/R Mapper だと逆に見づらいなぁ〜と思ったり。 とはいえ、単純な SQL の場合はやはり便利。コードも見た目、OO っぽくてかっこいいし。 でも、どうにも解析できなかったことが一つ。DBIC しか見てないんですが、sql_maker が生成した SQL をロギングする方法がわかりません。なんかコードを深追いしていくと、 メンドウなので、モジュールにしてなくってとってつけたような感じで実現。たとえば、Catalyst だと MyApp.pm で use UNIVERSAL::requi

  • qmail の配信能力を極限まで引き出す方法(ログ関連)

    「syslog は I/O 負荷が高い → daemontool に移行しよう!」でも書きましたが、メール配信サービスのような用途の場合、メールサーバの配信ログってのは極めて重要。qmail の配信能力を極限まで引き出すには、様々なチューニングの中でも重要なのがログの出力。 そこで思いついたのがログの出力を RAMディスク上に出力するって方法。もちろんログの出力は daemontool 経由で。 もちろん出力したログは日時バッチでローカルディスク上にバックアップログとして保存。OS フリーズ等でメモリ上のログが失われるって可能性は許容するって要件で構築。 実際に業務で採用して速度の計測をしていたところ、 Intel(R) Xeon(TM) CPU 3.06GHz × 2、 メモリ4G (うち、RAMディスクは2G) なHW環境、 net-qmail ベースにいろいろな patch を適用し

    kaz_goto
    kaz_goto 2006/07/02
    RAMディスクにログを書いてスピードアップ
  • Perl の iThread 使って負荷試験ツールを書いてみた

    えーっと、最近のお仕事でデータベース関連やってまして、DBMS としての性能試験みたいなのを実施したくて(しなくてはいけなくって・・・)、Perl で作ってみました。 いや、Apache bench とか使ってもいいんですが、httpd のメモリ使用量とかも馬鹿にならないので、Perlithread 使って書いてみることにしました。 →Perlithread 使うとメモリ一杯使うので、結果的に同じだったけど・・・(苦笑 プログラムの構造は、producer & consumer モデルってやつの応用です。具体的にはこんな感じ。 で、負荷スクリプトを走らせている間にデータベースサーバの負荷を vmstat なり、sar なりで計測すればOKです。キューに投入するリクエスト数(producer スレッドの enqueue 数)や処理スレッド数(consumer スレッドの数)を増減

  • 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

    kaz_goto
    kaz_goto 2006/03/26
    自分もはまってた。
  • XML を JSON に変換するサービス - ベータ版を公開 :: Drk7jp

    JavaScript 2.0 支援ツール「XML 2 JSON service」って何? XML を JSON に変換するサービスです。この技術を用いることで、 クロスドメイン制限を超えて JSON 形式で XML 形式のデータを利用することが可能となります。 JSON は XML と比較して JavaScript 上で非常に扱いやすいため、コツを掴めば簡単に自分のサイトで利用できます。 既に幾つかのサイトで実装されていますが、不特定多数の方にサービス提供するために負荷対策を施し、XML 2 JSON service ベータサービスを公開することにしました。 最近良く聞く Ajax とは何が違うの? 最近、流行りまくっている Web 2.0 と呼ばれるものの基礎技術の1つとして Ajax があげられます。Ajax は大変便利な技術なのですが、セキュリティの観点から自ドメインへのアクセスしか

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

    時間が空いているときに Catalyst のお勉強をしていたのですが、なかなか情報をまとめる時間がとれないのです・・・。思ったより苦戦したので少しずつでもお勉強の情報をまとめていこうと思ってます。今回はその1ってことで。Catalyst をこれからお勉強してみようって方の参考にでもなれば幸いです。 実際には、アプリケーションを1つ作ってみるってところまで既に2週間前に終わっていたりするのですが、その解説に至るまでどれくらい時間かかるんだろう・・・ (。・x・)ゝ Catalyst の基礎知識 Catalyst のフレームワークの構成は上図のような構成になっています。純粋な MVC ではなく、MV C + A(Apprication) のような構成になっていますが、Application の部分は Dispatcher 機能に相当する部分で、実装時には MVC の考え方で問題ありません。 M

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

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

  • 1