タグ

Perlに関するntmukaiのブックマーク (40)

  • Webアプリのディレクトリ事情 - ゆーすけべー日記

    現在進行中で開発・運用しているWebアプリのファイルとディレクトリが若干ゴチャゴチャしてたんで、整理したらだいーぶスッキリした。こんな感じ! MacBook@yusuke % tree -L 1 -F . ├── Makefile.PL ├── cli/ ├── config/ ├── deploy/ ├── etc/ ├── lib/ ├── log/ ├── psgi/ ├── public/ ├── sandbox/ ├── script/ ├── t/ └── templates/ ちなみにこのプロジェクトは以下が前提です。 Perl製、WebのフレームワークはMojoliciousを使っている 一つじゃなくていくつかのアプリのエンドポイントがある つまり一つのModel、複数の「Contoroller郡」で構成されている 一個一個見て行こう! Makefile.PL Perlプロ

    Webアプリのディレクトリ事情 - ゆーすけべー日記
    ntmukai
    ntmukai 2013/01/30
  • 開発メモ#3 : レガシーなCGIアプリケーションのリファクタリング - naoyaのはてなダイアリー

    開発メモその3です。今回は Perl のおはなし。 何年も前に作ったウェブアプリケーションのコードを開いてみたら黒歴史なコードが出てきて憂な気分になる、そんな経験ありませんか。私はあります。ずっとそんな現実から目を背けて生きてきました。 さて、先日 Perl + CGI で書いて Apache::Registry で高速化している、実行環境が Apache に癒着した CGIアプリケーションを発見しました。おえ〜っ。一から作り直したい気持ちをぐっと堪えて、これを Plack 化したりとリフォームしていくとしましょう。その過程を以下記します。劇的ビフォア・アフター! ・・・とかは期待せず、地道な変更を積み重ねていくのがコツです。 方針 いきなりコードをがりがり書き換えていくというよりは、試行錯誤のしやすい環境に移行させていきながらリフォームを進めます。遠回りですが、結果的にその後の運用が楽

    開発メモ#3 : レガシーなCGIアプリケーションのリファクタリング - naoyaのはてなダイアリー
    ntmukai
    ntmukai 2013/01/30
  • WWW::Mechanize のメモリ消費量について - make world

    WWW::Mechanizeは、通常の利用範囲ならば、メモリ消費量について問題にはならないと思う。 しかし、一回の実行で、数千回以上の URL アクセスを繰り返すようならば、WWW::Mechanize のメモリ消費量を考慮すべきである。考慮しないと、そのうちに Out of Memory エラーが発生して、異常終了してしまうからだ。 WWW::Mechanize でメモリ消費量が増加する理由 それは、WWW::Mechanize はアクセスした URL の接続履歴をずっと残す初期設定があるからだ。履歴をどれだけ残すかどうかの設定があるので、要件に応じて残す履歴の件数を制限するとよい。 WWW::Mechanize の初期設定 $mech->stack_depth($max_depth) Get or set the page stack depth. Use this if you're

    WWW::Mechanize のメモリ消費量について - make world
  • Text::MeCab(日本語変換系Acmeモジュールを支える偉大なモジュール) - Articles Advent Calendar 2010 Acme

    こんにちは、とみたトミールです。 Text::MeCabに依存しているモジュールリストがAcmeばかり、しかもかなりぼくのモジュールじゃないかwと気づいたので、この偉大な日語変換系Acmeモジュールを支えるText::MeCab様についてあらためて使い方を紹介してみます。 mecabとは mecabとは、日形態素解析を高速に、未知語もいい感じで補足してくれるよくできたライブラリです。作者の方はGoogleにいて(今も、たぶん。)エイプリルフールに日語お笑い系機能を出したりしています(それが職じゃないと思いますけど)。 インストールすると入るmecabコマンドから、コマンドラインではこんな感じに使います。mecabを起動してから、文を入力してエンターです。 $ mecab わたしはたわしをわたしました。 わたし 名詞,代名詞,一般,*,*,*,わたし,ワタシ,ワタシ は 助詞,係助

    Text::MeCab(日本語変換系Acmeモジュールを支える偉大なモジュール) - Articles Advent Calendar 2010 Acme
  • Spreadsheet::WriteExcelで積み上げ棒グラフを表示 - end0tknr's kipple - web写経開発

    2013/11/23追記 当時は、種類を混合したグラフ作成に苦労しましたが、Spreadsheet::WriteExcel の後継である Excel::Writer::XLSX なら add_chart() に subtypeを指定できるので、混合グラフも問題なく作成できそうです。 http://search.cpan.org/perldoc?Excel%3A%3AWriter%3A%3AXLSX my $chart = $workbook->add_chart( type => 'bar', subtype => 'stacked' ); Spreadsheet::WriteExcelで積み上げ棒+折れ線グラフを表示したかったのですが、積み上げ棒までなら表示できたので、その方法を書き留めておきます。 積み上げ棒+折れ線グラフ(やりたかったグラフ) 積み上げ棒グラフ(ここまでならできたグラ

    Spreadsheet::WriteExcelで積み上げ棒グラフを表示 - end0tknr's kipple - web写経開発
  • サイトのクローリングにはScrappyがすごくいいかもしれない - Perl勉強メモ アルパカDiary出張版

    クローリング楽しいですよね! perlで高速にクロールしたいのであればGunghoなど使うのがいいかもしれませんが、 基手軽にやりたいことが多いので WWW::Mechanize+Web::Scraper という組み合わせでクロールするのが定番でした。 しかしたまたま Scrappy を知り、 少し触ってみたところすごくいいのではないか!?と思い 記事にしてみました。*1 基系(crawlコマンドを利用する場合) my $scrappy = Scrappy->new; $scrappy->crawl('1.クロールするルートURL', '2.URLにマッチするパス' => { '3.コンテンツにマッチするxpath or CSSセレクタ' => sub { my ($self, $item) = @_; # 4.キューに追加 $self->queue->add($item->{href

    サイトのクローリングにはScrappyがすごくいいかもしれない - Perl勉強メモ アルパカDiary出張版
  • Calendar::Japanese::Holiday - 日本の祝日を求める - Articles Advent Calendar 2011 Casual

    こんにちはこんにちは、sakurako_sです。 日の祝日を求めるのに便利なCalendar::Japanese::Holidayをゆるふわっと紹介します。 このモジュールには2つの関数があります。 isHoliday() - 指定日が祝日なら祝日名を返す getHolidays() - 指定月の祝日とその名前のハッシュリファレンスを返す コードを見てみましょう。 use strict; use Calendar::Japanese::Holiday; use YAML qw/Dump/; use Perl6::Say; binmode STDOUT, ':utf8'; # 祝日の名前 say isHoliday(2012, 1, 9); # 指定月の祝日 say Dump getHolidays(2012, 1); 実行結果は次の通り。 成人の日 --- 1: 元日 9: 成人の日 振

    Calendar::Japanese::Holiday - 日本の祝日を求める - Articles Advent Calendar 2011 Casual
  • tokuhirom blog

    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

  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
    ntmukai
    ntmukai 2013/01/24
  • 簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト - DQNEO起業日記

    13行のコードで、Yahoo!Japanのトピックス一覧を取得する! PerlHTML取得・解析したいときはLWP::UserAgentHTML::TreeBuilderというのを使うと簡単にできます。 LWP::UserAgentを使うと、Webページの取得ができます。 HTML::TreeBuilderを使うと、HTMLのDOM解析ができます。 この2つのモジュールを使って、Yahoo!Japanのトピックス一覧を取得してみましょう。 コメント行と空行を除くとたったの13行です。 use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # urlを指定する my $url = 'http://www.yahoo.co.jp'; # IE8のフリをする my $user_agent = "Mozilla

    簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト - DQNEO起業日記
    ntmukai
    ntmukai 2013/01/24
  • Number-ZipCode-JP-0.20240329 - Validate Japanese zip-codes - metacpan.org

    The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

    ntmukai
    ntmukai 2013/01/24
  • +{...} の意味 - ymkoの日記

    検索しにくくてこれが何だったのか悩んでたけれどようやく再発見 たとえば、新しいハッシュを作って、それへのリファレンスを返す関数が欲しければ、 以下のような選択肢があります: sub hashem { { @_ } } # silently wrong sub hashem { +{ @_ } } # ok sub hashem { return { @_ } } # ok その一方で、以下のようにすることもできます: sub showem { { @_ } } # ambiguous (currently ok, but may change) sub showem { {; @_ } } # ok sub showem { { return @_ } } # ok 先頭にある +{ や {; が、その式が実際には ハッシュのリファレンスなのかブロックなのかの 曖昧さを除去するためにありま

    +{...} の意味 - ymkoの日記
    ntmukai
    ntmukai 2013/01/13
  • Encode 日本語などのマルチバイト文字列を適切に処理する - Perl入門〜サンプルコードによるPerl入門〜

    Perl › モジュール › here 日語などのマルチバイト文字をPerlで適切に扱うにはEncodeモジュールを使用します。次の3つのことを覚えておけば多くの場合適切に日語を扱うことができます。 外部から入力された文字列はEncodeモジュールのdecode関数でデコードする 外部へ出力する文字列はEncodeモジュールのencode関数でエンコードする ソースコードはUTF-8で保存しutf8プラグマを有効にする この解説での用語 この解説では外部から入力された文字列のことを「バイト文字列」と呼ぶことにします。Perlの内部表現に変換された文字列を「内部文字列」と呼ぶことにします。また「バイト文字列」が特定の文字コードで記述されている場合は「UTF-8バイト文字列」「Shift_JISバイト文字列」などと呼ぶことにします。 プログラミングで日語を扱う場合にその文字列がバイト文字

    Encode 日本語などのマルチバイト文字列を適切に処理する - Perl入門〜サンプルコードによるPerl入門〜
    ntmukai
    ntmukai 2013/01/13
  • よく使用する関数・標準モジュール一覧 - Perl入門ゼミ

    Perl › よく使う関数・モジュール よく使用する関数・標準モジュールの一覧です。これらの関数を覚えておけば、Perlをより便利なものにすることができます。詳細な解説は避け、簡単なサンプルを紹介しています。戻り値のあるものについては$retという記号で表しています。 また、よく使用する特殊変数、標準モジュールについても、解説しています。各項目から、関数の詳細にもリンクしていますので、便利にご利用ください。 数学関数 文字列操作 配列操作 ハッシュ操作 ファイル入出力 ファイル・ディレクトリ操作 時刻・時間 その他の重要な関数 関数とモジュールのドキュメントの調べ方 よく使用する特殊変数 よく使用する標準モジュール 数学関数 abs 絶対値を求めるにはabs関数を使用します。 $ret = abs $num; abs(-3)は3になります。 sqrt 正の平方根を求めるには、sqrt関数を

    よく使用する関数・標準モジュール一覧 - Perl入門ゼミ
    ntmukai
    ntmukai 2013/01/13
  • モダンPerl製サイトのベース解説書『Plack Handbook』を読んだ | hirobanex.net

    Plack Handbookは、CGI以降の最近のPerlを使ったウェブサイトを作る上でベースとなるPSGIという仕様の実装であるPlackのまとまった(電子)書籍です。待ちに待ってましたという感じだったんですが、でやっと入手して読んだ感想とかをメモります。 といいつつPlackって何?詳しく教えて? 上述した通りなものがPlackなのですが、FTPでアップしてふんふんふん、という事をしている人にとって、いまいちピンとこないのがPlackだと思います。昔は、FTPを使って.cgiファイルみたいなのをアップしてちょっとした動的な動きをするページを作るには、PerlだとCGI.pmというCPANモジュールに準拠しながらいろいろと作っていたのです。ただ、ApacheのCGIという技術の上だと、何分毎回プログラムファイルの読み込みをとかを行うので遅かったりしたのです。そこで、FastCGIとかmo

    ntmukai
    ntmukai 2012/11/07
  • tokuhirom blog

    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

    ntmukai
    ntmukai 2012/09/01
  • Perlの排他制御 (flock,open,symlink,mkdir,rename)

    ファイル操作の排他制御といえば、以下のものが代表的です。 flockとロックファイル(ディレクトリ)式に大きく分けられます。 ロックファイル(ディレクトリ)を使う open関数 symlink関数 mkdir関数 rename関数 古いロックファイル(ディレクトリ)の削除 シグナルトラップ flockを使う flock関数 読込モード 追加モード 上書き・読み書きモード エラー処理 まとめてロックする タイムアウト ■ロックファイル(ディレクトリ)を使う 基は単なる使用中の目印です。目印が無いときに入って、自分で目印を作り、操作が終わったときに消して出るだけですね。トイレみたい(^^) で、使用中なら何回かノックします。(せかすな〜) open関数 ファイルオープン関数でファイル作成。 1.ファイルが存在するか。 2.しなければ作成。 と2段階を要するので、その隙に他のプロセスが

    ntmukai
    ntmukai 2012/01/07
    ファイルロックの説明はここが一番分かりやすい。
  • モジュールをuseした際のメモリ使用量(増加量)を調べてみる (iandeth.)

    iandeth. Perl, Flash ActionScript, MySQL, Movable Type, システム開発 - そんなテーマのサイトdeth. gtop.plx #!/usr/bin/perl use strict; use warnings; use GTop; my $gtop = GTop->new; my $before = $gtop->proc_mem($$)->size; eval $ARGV[0]; die $@ if $@; my $after = $gtop->proc_mem($$)->size; my $diff = GTop::size_string($after - $before); print "$diff : $ARGV[0]\n"; 例) CGIモジュールのメモリ増加量は... $ ./gtop.plx 'use CGI' 704k :

    ntmukai
    ntmukai 2011/12/29
    startup.plを書くときに参考になる。
  • 第5回 Xslate 次世代テンプレートエンジン(2) | gihyo.jp

    ※1)Xslateではテンプレートのコンパイル結果をキャッシュできる ※2)デフォルトは$ENV{HOME}/.xslate_cacheだが、$ENV{HOME}が書き込み可能でなければほかのディレクトリも試す ※3) テンプレートの構文によってデフォルトは変わる。これらはデフォルト構文Kolonのデフォルト値 リスト8 オプションを指定する(hello_xslate2.pl) use strict; use Text::Xslate; my %vpath = ( header => "- - - - - - - - - - -\n", footer => "- - - - - - - - - - -\n", hello => "Hello, Xslate world!\n", ); my $tx = Text::Xslate->new( path => \%vpath, header =

    第5回 Xslate 次世代テンプレートエンジン(2) | gihyo.jp
    ntmukai
    ntmukai 2011/12/13
    オプション一覧などあって分かりやすい。
  • DBIx::Skinny の on_connect_do - まぁ、えぇんとちゃいますか〜

    perlDBI で utf8 な文字列を扱う場合には、 接続時に、 $dbh->do('set names utf8'); と指定するが、 DBIx::Skinny でこれ相当のことをやるには、Model で次のように定義すればそさそう。 package MyApp::Model; use strict; use warnings; use DBIx::Skinny connect_info => +{ dsn => 'dbi:xxx', username => 'xxxx', password => 'xxxx', connect_options => { mysql_enable_utf8 => 1 } on_connect_do => [ 'SET NAMES utf8', ] }; on_connect_do で指定するのは、ドキュメントにも書いておらず、 ソースを見ないとわ

    DBIx::Skinny の on_connect_do - まぁ、えぇんとちゃいますか〜
    ntmukai
    ntmukai 2011/12/04
    DBIx::SkinnyでUTF-8を扱うやり方。色々あるがmysql_enable_utf8のみ指定すればOK。