タグ

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

  • Mojolicious::LiteでDBIx::Skinnyを使ってみた - 日曜プログラマのそゞろ事

    的には前記事と同じです。 私の観測範囲ではData::ModelよりもDBIx::Skinnyの方がよく使われているような気がしますが、テーブルとschemaを両方作る必要があるのがちょっと微妙に感じます。 DBIx::Skinny::Schema::Loaderというschemaを自動的に設定してくれるモジュールもあるので、それを使えば問題ないわけですが。 ORLiteの記事を見て「いいな」と思ったのは、テーブルの定義をするだけで使えるところでした。 あと、テーブル毎にクラスを自動的に作ってくれるようで、それも面白い機能だと思います。 しかし、Skinnyなどで言うconnect_optionsが設定(簡単に言えばsqlite_unicodeを有効に)できないため、日語には対応できていません。 ORLite.pmのソースコードを書き換えてやればうまく動くのは確認済みですが

  • Web::Scraperで正規表現を使って必要なリンクだけを取得する方法 - 日曜プログラマのそゞろ事

    わかってしまえば単純なことでした。 process 'a[href=~/\.jpe?g$/]', 'urls[]' => '@href'; XPathでも同じようにできます。 process '//a[@href =~ /\.jpe?g$/]', 'urls[]' => '@href'; Web::Scraperにはフィルタの概念があって、取得してからごにょごにょできるので、そっちのほうばかり調べていました。 例えば以下のようなHTMLの場合、そのまま取得すると、前後に改行が入ってしまいます。 <title> タイトルなのだ </title> で、それを取得する時に、前後の改行を削除してやることができます。 process 'title', 'title' => ['TEXT', sub { s/^\s+//o; s/\s+$//o; } ]; こういう機能をフィルタと呼んでいます。 その

  • sourcereader.cgiをMojolicious::Liteで書きなおした - 日曜プログラマのそゞろ事

    Mojolicious::Liteネタですが、もう周回遅れ気味ですね。 6月3日にversion1.41になっています。 このスクリプトは、devel.nqou.netを作ったときに、ソースを見るビューアとして書いたものを、Mojolicious::Liteで書きなおしたものです。 サンプルばかりではなく、実際に使うもの(使えるものかどうかはともかく)を作ってみるのも良いものですね。

    poppen
    poppen 2011/06/15
  • cpan-outdatedも使ってみた - 日曜プログラマのそゞろ事

    cpanm(cpanminusのコマンド名)と共によく使われているのを見るのだが、何をしているのかよくわかっていなかった。 で、ちゃんと検索したらあっさりと見つかった。 要するに cpan -r のminusバージョンという感じのアプリケーションでした。 で、これとcpanmを組み合わせることで、古いモジュールを楽に更新できる、という仕組みです。 Windowsではxargsがないので、以下のように試してみました。 cpan-outdated | cpanm 今、実施中ですが、upgradeをかなりサボっていたので結構時間がかかっています。 途中でミラーも設定できそうなことに気がついたので、minicpanの保存先を使って試してみました。 cpan-outdated --mirror file:///strawberry/minicpan | cpanm が、今度はなかなか動きません。

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

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

  • Web::Scraperに入門した - 日曜プログラマのそゞろ事

    かなーり今更感がありますが。 モジュール自体は、大分前にウェブにあったスクリプトをコピペして使ったときにインストール済みでしたが、なんとなく難しそうで敬遠していたところもありました。 が、やってみると簡単かつパワフルなモジュールであることがわかりました。 参考:use Web::Scraper; - 今日のCPANモジュール XPathがなかなかわからないのですが、CSSセレクタでもいけるのが超絶簡単です。 例えば、aタグのhref属性を取得する場合のprocessは以下のとおり。 process 'a', 'urls[]' => '@href'; で、この場合だと、href属性がないaタグも対象になってしまうので、未定義(undef)が入る場合があります。 なので、href属性があるものだけを対象としたのが以下のprocessです。 process 'a[href]', 'url

  • 1