タグ

ブックマーク / weblog.nqou.net (7)

  • Perlのreturn - 日曜プログラマのそゞろ事

    ちょっと前に作ったプログラムを見ていて、悪い習慣だなぁ、と思ったので、改めるためにメモ。 Perlを覚えていく中で、関数の返り値を偽として判定させたいときは「undefを返す」という事をやっていた。 return undef; しかし、これは返り値を配列で受け取るときに微妙になり、わかりにくいバグを発生させてしまう原因にもなる。 どういう場合に問題になるかを、実際にコードを書いて試してみる。 # utf8 use 5.8.1; use strict; use warnings; use utf8; use Perl6::Say; use Data::Dumper qw/Dumper/; my $charset = 'cp932'; binmode STDOUT => ":encoding($charset)"; sub return_less { my $a = 1; } sub ret

    lapis25
    lapis25 2010/05/23
  • Kansai.pm第11回ミーティングに行ってきました - 日曜プログラマのそゞろ事

    細かい内容については、Kansai.pmのページから誰かがアップしてくれているページが見れるので、個人的な感想とか気になったこととかをメモ。 ・イベント/第11回ミーティング報告 - Kansai.pm 開始前 ・集合場所についたら、すでにそれらしき人たちがいた。 ・オフ会は久しぶりだったので、なんかそういう空気に懐かしさを覚えた。まあ、知らない人が見たら怪しい集団だっただろうなぁ。 ・あまりミーハーではないと思っていたが、はてなオフィスとか、生naoyaさんを見ると、なんだか妙に嬉しくなってにやけてきた。 発表 ・Cell Challenge 2009の規定問題(文字列の編集距離計算)について。 PS3にはとんでもないCPUが使われている、ということを初めて知った。 高速化にはアルゴリズムによって単純計算にする事がとても重要。 ビット並列化とループアンロールが鍵。何かで使えるか

  • MENTA::TemplateとText::MicroTemplate - 日曜プログラマのそゞろ事

    MENTAを追いかける絡みでNanoAにも手を出しましたが、もし、今からこれらのフレームワークに入門(あるいは再入門)するのであれば、とりあえず最新版(MENTAは0.14、NanoAは0.17)にしたほうが良いでしょう。 というのは、これらの最新版で使われているテンプレートエンジンはText::MicroTemplateですが、それ以前のものはMENTA::Templateが使われています。 それに伴って、若干ですが文法にも違いがあります。 なので、古いMENTAやNanoAで作ったプログラムは、最新版ではエラーによって動かない場合があります。 文法の大きな違いは、HTMLエスケープについてです。 テンプレートファイルに埋め込んだPerlの出力は、デフォルトでHTMLエスケープされることになっています。これは、セキュリティと利便性が大きく関与しています。 参考:Kazuho@Cyb

  • StrawberryPerlにGDをインストールするならPPMを使え - 日曜プログラマのそゞろ事

  • CodeRepos版NanoAをWindowsで動かす方法 - 日曜プログラマのそゞろ事

    NanoAの配布元は0.16が最新だったが、CodeReposにあるNanoAの最新版は、バージョンが0.17であった。 CodeRepos版は開発版ということで、そのまま使えるはずだったのだが、Windows上で使うには少し工夫が必要だった(詳しい説明は「lib/NanoA/Config.pm」に書いてあるので、そちらを読もう)ので、将来のため(?)に手順をメモしておく。 まず、CodeReposからsvnで外部参照ごとチェックアウトする。 svn co http://svn.coderepos.org/share/lang/perl/NanoA/trunk NanoA 次に「nanoa.cgi」と同じフォルダに「nanoa-conf.cgi」という名前のファイルを作成する。その中身はとりあえず以下のとおりにしておく。 data_dir = var ついでに、同じフォルダに新しく「var

  • NanoAの最新版がインストールできなくて困った件 - 日曜プログラマのそゞろ事

    NanoAを使ってみようと思って、最新版の0.16を入れてみたのだが、Windows上ではうんともすんとも反応しない。 install.cgiを試してみたが動かなかったので、tarballを取ってきて解凍。 nanoa.cgiにアクセスするも反応がない。 ANHTTPDを使ってるからかもしれないので、cgi版を取ってきて共用サーバー(ちなみにxrea)で実行してみたが、system/setupにアクセスした時点でエラーになった。 デバッグモードにしてどうにかエラーメッセージを見たら、pluginのsession.pmが犯人らしい(?)のだが…。 エラーメッセージ。 Modification of a read-only value attempted at app/plugin/session.pm line 38. 検索していたら、同じように困っていた人を発見した。 bulkit

  • Perlの裾野が広がらない問題について - 日曜プログラマのそゞろ事

    どこで読んだか忘れましたが、Perlのコミュニティの中では中堅クラスが少ない、という話がありました。 私としては、CPANによる自由拡張性が、そもそも裾野を広げる障害ではなかったか、と思います。 これは、MENTAを使っていく中で色々と読んでの感想ですが、軽量フレームワークが誕生した背景にも同じことがあったと思います。 Perlでウェブアプリケーションを開発する時にCPANモジュールを多く使っていると、公開する時点でサーバーを選んでしまいます。 つまり、Perlを学んでいけばいくほど公開する場所に制限がかかっていきます。CPANが自由に使えるサーバーは自前で用意する必要があるでしょう。 例えばMooseを使ってスクリプトを作っても、公開できるレンタルサーバーとなると、サクラサーバーくらいしかないのではないでしょうか? 私は使ったことがないのでわかりませんが、ユーザー領域にインストー

    lapis25
    lapis25 2009/02/16
  • 1