タグ

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

  • PDLで数値計算 - Articles Advent Calendar 2012 Casual

    こんにちは、週末海でマンボウを獲っていたらラギアクルスに襲われた@hirataraです。今回はPerl Data Languageについて紹介します。 Perl Data LanguageとはMATLABやNumpy、Rなどと同様に、多次元配列を効率よく扱って数値計算を実現するためのライブラリです。cpanmで普通にインストールすれば使えますが、グラフを描画したり格的な数値計算のライブラリであるGSLのバインディングを利用したりする場合はhomebrewでゴニョゴニョしたりする必要があるので、多少頑張って下さい。 基的にはpdl関数でオブジェクトに変更してから使います。 use PDL; my $pdl = pdl [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; print $pdl; 【実行結果】 [ [1 0 0] [0 1 0] [0 0 1] ] pdlが

    PDLで数値計算 - Articles Advent Calendar 2012 Casual
    kicchomu3
    kicchomu3 2012/12/11
  • それCallbacksで - DBIxを作りだす前に - Articles Advent Calendar 2011 Dbix

    どうもkazeburoです。DBIx Trackなのに、DBIxを作らない話。 myfinderさんがDBIxを作る第一歩としてDBIのサブクラスの作り方を紹介しましたが、実際にDBIxを作り出す前に、その機能がDBIの標準機能でできないか調べるのがオススメです。 Callbacksの基 CallbacksはDBIに標準で用意されているHook機能です。 my $dbh = DBI->connect('dbi:SQLite:dbname=test.db','','', { RaiseError => 1, PrintError => 0, Callbacks => { connected => sub { ... } } }); 接続時のAttributesにCallbacksを追加します。上では接続が完了(connected)したらcoderefが呼び出されます。 接続時にテーブルを作

    それCallbacksで - DBIxを作りだす前に - Articles Advent Calendar 2011 Dbix
    kicchomu3
    kicchomu3 2011/12/07
  • 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
    kicchomu3
    kicchomu3 2010/12/24
  • DBIx::ObjectMapperでData Mapperパターン! - Articles Advent Calendar 2010 Hacker

    こんにちわ。nekokakさんをはじめ#dbi-ja@irc.perl.orgのPerlハッカーのみなさまにムチャ振り声をかけていただき、突然hacker trackで書くことになりました。eisukeoishiともうします。はじめまして。 今回は、私が作成したDBIx::ObjectMapperというO/Rマッパーについて紹介させていただきます。 DBIx::ObjectMapperとは みんな大好きな「PofEAA」のData Mapperパターンを実装したものです。 Data Mapperパターンをごく簡単に説明すると、データベースやO/Rマッパーに依存せずにオブジェクトをデータベースと連携させるためのものです。 DBIx::ObjectMapperで使用するクラスはPOPO(Plain Old Perl Object)であり、O/Rマッパーだけで使用する必要もありません。 他言語で

    DBIx::ObjectMapperでData Mapperパターン! - Articles Advent Calendar 2010 Hacker
    kicchomu3
    kicchomu3 2010/12/15
    DBIx::ObjectMapperでData Mapperパターン!
  • 続・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
    kicchomu3
    kicchomu3 2010/12/06
  • MySQL と SQLite に対応した DBIx なモジュールを PostgreSQL に対応させる Tips いくつか - Articles Advent Calendar 2010 Casual

    こんにちは。PostgreSQL をよく使っている id:sfujiwara (@fujiwara) です。 世間では MySQL のほうが PostgreSQL より人気のようですね (特に Web 業界では)。なので、DBIx な便利なモジュールも開発当初は MySQLSQLite でしか動かなかったりして悲しい思いをすることがあり、こちゃこちゃ patch を書いたりしておりました。 そこで溜まったいくつかの Tips をここで公開したいと思います。 1. auto increment の扱い まず、いわゆる自動発番なカラムの扱いについて。MySQL ではカラム定義で AUTO_INCREMENT 指定、SQLite では最初のカラムの型を INTEGER にして PRIMARY KEY 指定、でできるやつですね。PostgreSQL では SERIAL 型を使用して定義します

    MySQL と SQLite に対応した DBIx なモジュールを PostgreSQL に対応させる Tips いくつか - Articles Advent Calendar 2010 Casual
    kicchomu3
    kicchomu3 2010/12/06
  • Plack::Server::Standalone系を使ってウェブアプリケーション開発と運用が楽になる話 - JPerl Advent Calendar 2009

    Plack::Server::Standalone 系を使ってウェブアプリケーション開発と運用が楽になる話 - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? 既存の環境に対する不満 Perl のウェブアプリケーションを構築するにあたっては、リバースプロキシと mod_perl を組み合わせるか、あるいは FastCGI (ExternalServer) を利用するのが一般的だと思います。しかし、どちらをとっても、環境を構築して設定するのが難しいというのが個人的な不満でした (mod_redirect を設定したり mod_fastcgi にパッチをあててインストールしたり startup.pl を書いたり...)。自分が Plack の開発 (主に Server::Standalone と Server

  • Perldocの話 - JPerl Advent Calendar 2009

    Perldocの話 - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? lestrratこと牧です。AnyEventの話を書こうと思ったけど、それはを書くくらいの厚さになりそうなのでやめました。「リアルタイムWebのためのPerl」って書きたいので、編集さん誰か連絡ください。 ああ、advent calendarでした。 カジュアルトラックなので、カジュアルに使うために有用なテクニックってなんだったのかと考えたのですが、やっぱりperldocじゃないかな、と。僕がperlを2000年頃に使い始めてまず感動したのはドキュメントを漁りにネットに繋げなくてもよいということでした(当時はJavaを大学で使っていたので、ものすごく頻繁にjava.sun.comのjavadocページを見ていた)。 コマンドライン

  • DBIx::RewriteDSN で - JPerl Advent Calendar 2009

    前置き みなさんこんにちは、cho45 です。 こちらは hacker track ということで、僕がつくったモジュールの一つを紹介したいとおもいます。今回ご紹介するモジュールは DBIx::RewriteDSN です。 DBIx::RewriteDSN は非常に小粒なツールですが、なかなか苦しいモジュールなんじゃないかと自分でもおもっています。使わなくていいなら幸せでしょうね。 歴史あるプロジェクトを開発する際、データソースがハードコードされているというようなケースはままあります。さっさと書きかえられる程度ならばいいのですが、修正箇所が多ければ多いほどミスが発生しやすいわけですし、それが番のデータベースであるならば、一箇所ミスをしただけで甚大な被害が出ることも予想するに難しくありません。 「DBI は使っているが、データベースサーバへの IP などが各所にちらばっており、こわくて

  • Encodeでラクラク日本語処理 - JPerl Advent Calendar 2009

    こんにちは!ラブプラスとときメモ4の狭間で揺れ動いているxaicronです!! 今日は日でプログラムを書いていたら避けては通れない気がする、Encodeの話をしようと思います! はじめに まず、この記事を読む前に、Perlのバージョンの確認をしてください。以下のようにやればバージョンが表示されます。 % perl -v ここで、5.8.1より下の数字ができてきた方は、Perlのバージョンアップをしてください。5.8.1より下のバージョンでは、Perlの内部文字コードが安定していないので、いい感じになりません。できれば5.8.8以上のバージョンを使いましょう。 それから、文字コードってなによって人も適当にWikiとかで調べてから読んだ方がいいと思います!! Encode.pm Encodeは昔のjcode.plやJcode.pmに代わる、現在の文字コード処理のスタンダードModuleです。

  • Perl のローレベルエラー処理 (もしくは Errno.pm のススメ) - JPerl Advent Calendar 2009

    Perl のローレベルエラー処理 (もしくは Errno.pm のススメ) - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? 例えば、「ディレクトリが存在しなければ作成」という処理を書くことを考えてみます。 if (! -d $dir) { mkdir $dir or die "failed to create dir:$dir:$!"; } でいいしょうか? いえ、違います。これだと、-d 演算子でディレクトリの不存在を確認した後、mkdir を呼ぶまでの間に他のプロセスがディレクトリを作成してしまう可能性があります。なので、たとえば C ならば、 if (mkdir(dir) != 0 && errno != EEXIST) { fprintf(stderr, "failed to create d

    kicchomu3
    kicchomu3 2009/12/06
  • ヒアドキュメントの中でPerlの式を書く

    初代新幹線「0系」最後のラストランの日に、新幹線N700系のぞみでイーモバイルしながらこの記事を書いているid:TAKESAKOです。 Perlのヒアドキュメントを使うと複数行にわたる文字列を一気に代入したりするときに楽なので、使っている人も多いと思います。 my $foo = "bar"; my $tmp = time(); # ←関数の実行結果 print<<EOF; <div class="${foo}1"> <h1>TIME: $tmp</h1> </div> EOF しかし、ヒアドキュメントの途中でサブルーチンの実行結果も一緒に埋め込みたいときがでてくるときがあります。 @{[ Perlの式 ]} そのようなときは、@{[ リスト ]} というイディオムを使うと非常に便利です。 print<<EOF; <div class="${foo}1"> <h1>TIME: @{[ tim

  • エキスパートPerl - 変態モジュール総覧

    Perl の世界には、「変態モジュール」と呼ばれるモジュールがたくさん存在します。 これらは、モジュールの形態をとりながら、Perl の内部に踏み込み、蹂躙しているという恐ろしい存在です。 しかしながら、これらのモジュールは使いどころを間違えなければ非常に有用であり、あなたのプログラムに無限の可能性をもたらすことでしょう。 自分の足をどうやって撃ちぬくか、よく考えてからつかってください。 下記のモジュールたちは、それ自体が変態的なものもあれば、変態的なことをするときに使うモジュールもあります。 PadWalker PadWalker は変態モジュールの筆頭です。レキシカルスコープの変数を、レキシカルスコープの外から見たり書き換えたりできます。 peek_my peek_our peek_sub closed_over という4つの関数をサポートしています。 下記のようなありえない操作を可能

  • Perl-users.jp - 日本のPerlユーザのためのハブサイト

    Perl Mongers Perl Mongers とは、日各地に存在する、Perl ユーザーのコミュニティのことです。各種イベントが行われていますので、是非参加してみましょう。 Shibuya.pm Fukuoka.pm Kansai.pm (@kansaipm) Yokohama.pm (@yokohamapm) Hokkaido.pm (@hokkaidopm) Nagoya.pm (@nagoyapm) Kushiro.pm (@kushiropm) Kyoto.pm (@kyotopm) Kamakura.pm Niigata.pm (@niigatapm) Sendai.pm (@sendaipm) Tokyo.pm Hachioji.pm (@hachiojipm) Chiba.pm (@chibapm) Yomitan.pm (@yomitanpm) Machida.pm

  • 1