タグ

ブックマーク / perl-users.jp (33)

  • Cache::LRU が速い理由 - Articles Advent Calendar 2010 Hacker

    先日、オンメモリなキャッシュモジュール Cache::LRU を書きました。Kazuho's Weblog: Cache::LRU (a handy and fast in-memory cache module in pure-perl) を見ていただければ、Cache::LRU が他のモジュールより速いことは明らかだと思います。速度差の原因としては機能や実装上の差異もあるのですが、設計上の工夫も Cache::LRU が速い理由のひとつです。 LRU (Least Recently Used) アルゴリズムを備えたキャッシュを実装しようと思うと、 エントリルックアップのためのハッシュ アクセス順を表現するためのリスト の2種類を組み合わせる必要があります。リストを表現する手法としては配列を利用するものとリンクリストを利用するものがありますが、Perl だと前者のほうが速い、ということは

    Cache::LRU が速い理由 - Articles Advent Calendar 2010 Hacker
  • HTTPサーバフレームワークとしてのPlack活用法と、Plack::Middleware::Pictogram::MobileJpを使ったその事例紹介 - Articles Advent Calendar 2010 Hacker

    HTTPサーバフレームワークとしてのPlack活用法と、Plack::Middleware::Pictogram::MobileJpを使ったその事例紹介 実はお腹回りが入らなくなってスーツを新調したhirose31です。 みなさん、Plack使ってますか? 弊社でもStarletをNginxのバックエンドに置いてプロダクション環境でモリモリ使っているのですが、ちょっとした検証にもPlackは大変重宝しています。 具体的には、キャッシュに関連するレスポンスヘッダ(Last-Modified、Expiresなど)の組み合わせと、条件付きGETやブラウザキャッシュの挙動をブラウザごとに調べたときに使いました。あくまで検証用と割りきって特にファイル分割などはせず、psgiファイルにゴリゴリっとベロっとコードを書いてパパパっと検証用のHTTPサーバを作りました。 このように、限定された目的のHTTP

    HTTPサーバフレームワークとしてのPlack活用法と、Plack::Middleware::Pictogram::MobileJpを使ったその事例紹介 - Articles Advent Calendar 2010 Hacker
  • How to run MovableType with Plack - Articles Advent Calendar 2010 English

    Hello, this is typester. I'm now creating kamakura.pm website with MTOS, but I'm using nginx as web server that doesn't support CGI. But no worry about that. Now we have Plack! This article shows you how to setup MovableType with Plack. Let's get started. Requirements Plack 0.9952+ Starlet or Starman MovableType or MTOS (MTOS-5.04, I confirmed) At first, make sure your Plack version is higher than

    How to run MovableType with Plack - Articles Advent Calendar 2010 English
  • DBIx::Inspector で DB の中をのぞきみる - Articles Advent Calendar 2010 Hacker

    ベストスピーカー賞をもらった tokuhirom です。 1981忘年会でのみすぎて、二日酔いが大変ひどいです。 さて、今回は裏をかいて、DBIx::Inspector の話をかこうかおもいます。最近わたくしは、Web エンジニアの7つのはしかのうちの一つである O/R Mapper を書いてます。 これは、高速で、ミニマリスティックで、安定していて、DBI をリスペクトしていて、みたいな、そんなのをめざしてます。 O/R Mapper かく人って、O/R Mapper をかくときに必要なものとかを、まるっと同梱したがりがちなんですね。 そういうつくりにしてしまうと、別個なかんじの O/R Mapper をかこうとしたときに、つかいまわしがきかなくていっぱいコピペしなくちゃいけないです。 それかなしいよねってことで、みんなが共通につかえるパーツをちょっとずつかいてみようかな、とおもってます

    DBIx::Inspector で DB の中をのぞきみる - Articles Advent Calendar 2010 Hacker
  • 続・Encodeでラクラク日本語処理 - Articles Advent Calendar 2010 Casual

    この考え方が当に正しいかを確かめるために、UnicodeのコードポイントがU+00E8である「è」という文字を使って試してみましょう。 use strict; use warnings; use utf8; use Encode qw/is_utf8 encode_utf8/; sub disp_hex($) { use bytes; join ' ', map {sprintf '0x%X', ord($_)} split //, $_[0]; } my $utf8flagged = 'è'; # 内部表現がUTF-8の「è」 my $latin1 = "\x{00E8}"; # 内部表現がLatin-1の「è」 for ($utf8flagged, $latin1) { print "Dump: ", disp_hex($_), "\n"; print "UTF-8 flag: ",

    続・Encodeでラクラク日本語処理 - Articles Advent Calendar 2010 Casual
  • コマンドラインで使えるかもしれないツール等あれこれ - Articles Advent Calendar 2010 Casual

    鎌倉で毎日どんぶりべてます、sugyanです こんにちは! 皆さん、ターミナルやシェルは何をお使いでしょうか?僕は現在MacにてiTerm2+zshを使っています(あんまり使いこなせてませんが…)。 プログラミングして書いたコードを実行するには、ターミナルでコマンドを打つのがほぼ必須ですよね。皆さんも毎日たくさんのコマンドをターミナルで叩いていることと思います。 CPANで配布されているモジュールたちは、Perlスクリプト内でuseして使うためのものだけではなく、シェルから実行できるコマンドが用意されている場合もあります。[/articles/advent-calendar/2010/casual/1:title=1日目]で紹介されたperlbrewやcpanmも、Perlで書かれたコマンドラインツールですよね。 今回はそんなコマンドたちを紹介してみようと思います。 ■開発環境系 per

    コマンドラインで使えるかもしれないツール等あれこれ - Articles Advent Calendar 2010 Casual
    tzccinct
    tzccinct 2010/12/27
    json_xsはJSON::XSに付属するコマンドです。jsonの文字列を他の形式に変換したりできますが、実はjsonの文字列だけでなくyamlやperlコードで記述されたデータ構造も扱うことができる非常に便利なコマンドです。
  • Encode::EUCJPMSで楽々日本語処理(ただしWindowsに限る) - Articles Advent Calendar 2010 Win32

    こんにちはSongmuです。Win32 Trackが止まりかけているので、どさくさにまぎれて書きます。 さて、WindowsではShift_JISからJISX0208外の文字を含んだ独自拡張(かつ一部Unicodeとマッピングが異なる)であるcp932(Windows31J)が使われていることはご存知かと思います。cp932はEncodeにも標準搭載されていますね。 EUC-JPにも同じような独自拡張が存在します。以下の二つです。 eucJP-ms Unix/Linux界隈で制定されたcp932互換の文字集合を持つEUC-JPの拡張。PostgreSQLなんかのEUC-JPはこれになり、MySQLも5.0.4以降eucjpmsが選択できるようになっています。 cp51932 Windowsで使われているEUC-JP。cp932/eucJP-msに比べると文字集合が小さく、IBM拡張漢字部分

    Encode::EUCJPMSで楽々日本語処理(ただしWindowsに限る) - Articles Advent Calendar 2010 Win32
  • 使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual

    gfxと申します。 Perlは後方互換性を重視しているので、標準モジュールはめったに取り除かれる事がありません。しかしそれでも、いくつかのモジュールが将来的に取り除かれる見込みです。そのようなモジュールは使用しないほうがいいでしょう。また、取り除かれはしないものの、様々な理由から使用すべきでないモジュールもいくつかあります。今日は、そういった使うべきでないモジュールを紹介します。なお、このエントリの対象バージョンは5.8から5.14を想定しています。 さて、まずは取り除かれるモジュールです。現在のところ、以下の三つのモジュールが5.14でコアから削除される予定です。 Class::ISA Pod::Plainer Switch Class::ISAはクラス階層を直列化するモジュールですが、5.10以降はmroに取って代わられました。5.10未満のバージョン用にはMRO::Compatが用意

    使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual
    tzccinct
    tzccinct 2010/12/24
    base の代わりに5.10(.1)から標準になったparent を使う。utf8 flag の立っていない、Latin-1(ISO-8859-1)でエンコードされた文字列もまた正しいテキスト文字列だからutf8-flagged 文字列やユニコード文字列と呼ぶのは誤り。
  • モジュールのバージョンを確認するときどうやってますか? - Articles Advent Calendar 2010 Casual

    もう恋なんてしないなんて、言わないよ絶対kamipoです。 ときに皆さん、Perlのモジュールのバージョンを確認するときどうしてますか? 僕はPerlをはじめた最初のころ、ずっとこうやっていました。 $ perl -MAcme::Hidek -le 'print $Acme::Hidek::VERSION' 40.0 こうやってたの、僕だけじゃないですよね!? いまでは以下のワンライナーにaliasを張っているので毎回がんばってワンライナーを打たなくてよくなりました。 $ alias pmversion='perl -le '"'"'for $module (@ARGV) { eval "use $module"; print "$module ", ${"$module\::VERSION"} || "not found" }'"'" $ pmversion Acme::Hidek Ac

    モジュールのバージョンを確認するときどうやってますか? - Articles Advent Calendar 2010 Casual
  • Cygwin Perlに関する小ネタ - Articles Advent Calendar 2010 Win32

    gfxと申します。 Strawberry PerlやActive Perlばかりが取り沙汰される今日この頃ですが、Windowsで使えるPerlはこれらだけではありません。そう、Cygwin Perlです。 Cygwinとは、Linuxライクな環境をWindowsに提供するシステムです。VMWareやVirtual BoxのようなCPUのエミュレーションではなく、単にPOSIX APIを提供することで実現しているため、Windowsのプロセスやファイルと直接やりとりできるのが特徴です。Perl体のビルドがStrawberry PerlやActive Perlと比べて圧倒的に簡単であるため、bleadperlを触ってみたいときなどはCygwin Perlが楽でしょう*1。 ただ欠点もあります。よく指摘されるのが、速度でしょうか。たとえば、Mouseのmake testを同じマシンのVMWa

    Cygwin Perlに関する小ネタ - Articles Advent Calendar 2010 Win32
  • SQL::Makerで動的に SQLを生成する - Articles Advent Calendar 2010 Hacker

    どうもこんにちは。hacker track がやる気なさすぎるのでもう一回かくよ!というわけで tokuhirom ですこんにちは。こんにちは。 さて、最近つくった SQL::Maker というモジュールについて紹介します。SQL::Maker は、要は SQL::Abstract みたいなやつです。じゃあなんで SQL::Abstract じゃなくて SQL::Maker なの?ってことになるわけですが、 SQL::Abstract は実績があるし、非常に便利なんですが、いかんせんコードがまじよみづらいっていうかこれよむの無理じゃね!!ってことをおもうので、あたらしくつくったという次第。 また、SQL::Maker は method chain で SELECT 文を構築する機能もついてます。あらべんり。こんなかんじ↓↓ my $sql = SQL::Maker::Select−>new

    SQL::Makerで動的に SQLを生成する - Articles Advent Calendar 2010 Hacker
  • オススメしないperlの実行方法 - Articles Advent Calendar 2010 Win32

    今回は、オススメしないperlの実行方法を紹介します。 みなさんは、wsfをご存知でしょうか? Windows スクリプト (*.wsf) ファイルは、XML (Extensible Markup Language) コードを含むテキスト ドキュメントです。Windows スクリプト ファイルでは、スクリプトの柔軟性を向上するいくつかの機能がサポートされています。Windows スクリプト ファイルはエンジンに依存しないので、Windows スクリプト互換の任意のスクリプト エンジンで作成したスクリプトを Windows スクリプト ファイルに含めることができます。Windows スクリプト ファイルは、一種のコンテナとして機能します。 http://msdn.microsoft.com/ja-jp/library/cc392507.aspx だそうなので、さっそくperlをスクリプト エ

    オススメしないperlの実行方法 - Articles Advent Calendar 2010 Win32
  • system 使用時にプログラムの終了を待たずに制御を返す方法 - Articles Advent Calendar 2010 Win32

    こんにちは。いつまでたっても Perl が全然わからないはせがわです。 ActivePerl を使っていて外部のコマンドを system で呼び出したはいいけど、そのプログラムが終了するまで system の呼び出し以降のコードがブロックされて困ったことはありませんか? 例えば print "abc\n"; system "notepad.exe"; print "def\n"; というコードだと、"def" が表示されるのは、起動したメモ帳が終了してからになってしまいます。 メモ帳が起動すれば終了を待たずに速やかに次のコードが実行されるほうが嬉しい場合もあります。 こういう場合は、system で直接 notepad.exe を呼び出すのではなく、いったん start コマンドを介するようにして起動します。 print "abc\n"; system "start", "notepad.

    system 使用時にプログラムの終了を待たずに制御を返す方法 - Articles Advent Calendar 2010 Win32
    tzccinct
    tzccinct 2010/12/04
    Cygwin ではperl -le 'print "abc"; system "cygstart " . `which notepad`; print "def"' とする必要あり。→ cygutils-1.4.6-1 で直った。