タグ

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

  • AxsLog - Yet Another AccessLog middleware - Articles Advent Calendar 2012 Hacker

    「君のPSGIファイルを僕のミドルウェアでいっぱいにしたい」という台詞を思いついたけど、埋めれるほどPlack::Middlewareを書いてないkazeburo です。 そんな僕が一番最近書いた Plack::Middleware がYet Anotherなアクセスログ記録ミドルウェア AxsLog です。某二人組は今年でデビュー20周年らしいですが、あんまり関係ありません。 https://metacpan.org/module/Plack::Middleware::AxsLog Plackのコアパッケージの中に Plack::Middleware::AccessLog が含まれてますが、以前からこのミドルウェアが比較的「重い」ということが気になっていました。マイクロベンチマークですが、 $ cat test.psgi sub { [200,['Content-Type'=>'text

    AxsLog - Yet Another AccessLog middleware - Articles Advent Calendar 2012 Hacker
  • @INC にみる Perl のやりかたがいっぱい - Articles Advent Calendar 2010 Casual

    こんにちは。最近は PHP ばっかり書いている、永遠の Perl 初心者 hatyuki です。 とつぜん質問ですが、みなさんが最も多くみている Perl のエラーはなんですか? 自分の場合は、う〜ん。。。 Can't locate Hoge.pm in @INC (@INC contains: ~~~~ .). BEGIN failed--compilation aborted. かな?いつまでも進歩がないのが伺えますね! 皆さんご存知の通り、このエラーは "@INC" で指定されたディレクトリの中にモジュールが見つからなかった場合に発生するエラーです。つまり、モジュールをインストールし忘れているか、モジュールがどこに置いてあるのかを適切に設定していないか、の (およそ) どちらかですね。 さてさて、Casual Perler な皆さんは、このエラーを回避するためにどんな方法を使って @

    @INC にみる Perl のやりかたがいっぱい - Articles Advent Calendar 2010 Casual
    amari3
    amari3 2013/10/01
  • どの Flavor つかったらいいのん? - Articles Advent Calendar 2011 Amon2

    ふっつかっめです! tokuhirom です。 % amon2-setup.pl --flavor=Lite Foo みたいにして、フレーバーをみなさん指定いるかとおもいますが、これのつかいわけの話をかこうかとおもいます。 標準添付のフレーバー 現在標準添付の Flavor は Amon2::Setup::Flavor::Basic と Amon2::Setup::Flavor::Minimum そして Amon2::Setup::Flavor::Large です。 それぞれのつかいわけがむずかしいなあとおもうところもあるので、それぞれの使い分けかたをここにしるす次第です。 Amon2::Setup::Flavor::Basic これが一番の基形です。Basic となづけてあるところからも明白です。これこそがまさにデフォルトです。 とくに理由がなければこれがいいんじゃないでしょうか、とい

    どの Flavor つかったらいいのん? - Articles Advent Calendar 2011 Amon2
  • Path::Classで簡単ファイル操作 - Articles Advent Calendar 2010 Casual

    こんにちは!モダンPerlの裏側しか知らないkoba04です。 今日は、少し前まで「続・初めてのPerl」を読んでいた自分が、遅ればせながらその便利さに感動して使うようになったPath::Classについてを。(ってもう使ってますよね。。) 多分Casual Trackの中でも最も初心者向けな内容になっているんじゃないかと思います。。 何が便利かというと、「File::Spec」や「File::Path」、「IO::Dir」、「IO::File」、「File::stat」などのモジュールにある関数を「Path::Class」をインターフェイスとして使うことが出来ます。 とりあえず「use Path::Class」でいいので便利ですね! オブジェクトの作成 まずはファイルオブジェクトの作成。(file) use Path::Class; my $file = file('path', 'to

    Path::Classで簡単ファイル操作 - Articles Advent Calendar 2010 Casual
    amari3
    amari3 2013/04/25
  • 使っちゃいけない標準モジュール - 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
  • カジュアルにデータを確率とか優先度で処理する - Articles Advent Calendar 2012 Casual

    こんにちは、こんにちは。カジュアルにPerl使っているkoba04 です。 Webアプリを作っていて、確率で処理を分けたり複数の要素を重み付けて選びたいことってありませんか? 真っ先に浮かぶのはガチャみたいなものですが、それ以外にもランダムでバナーを出し分けてみたり、接続するサーバーを重み付けて選んだり色々と使い道が思い浮かびます。 そんな時に使える二つのモジュールをご紹介したいと思います。 詳しくは下記の作者の方のブログを見てください。 Sub::Rate Data::WeightedRoundRobin 以上! でもいいのですが..順番に紹介してみたいと思います。 モジュールなしで実装 優先度を付けてデータを選びたい時はrandを使っての実装が思い浮かびますが、バグりそうな気もするし面倒だし出来れば書きたくないです。 (書き方が悪いという説もある) # 結果をdumpする関数 sub

    カジュアルにデータを確率とか優先度で処理する - Articles Advent Calendar 2012 Casual
    amari3
    amari3 2013/02/14
  • List::Compareで二つの配列の集合を扱うの巻 - Articles Advent Calendar 2012 Casual

    こんにちは!hirobanexです!日はフランクに、2つの配列の集合を良い感じに取り扱えるList::Compare のご紹介です。podみると、いろいろなメソッドとかオプションがあるのですが今回ご紹介するのは、 get_intersection get_union get_Lonly get_Ronly の基的な4つのメソッドです。 取り扱う集合とメソッドの関係 それぞれのメソッドの機能をコトバで説明するよりも図で説明したほうがわかりやすいのですが、ベン図のあれっていえばだいたいの方はわかると思うので、図は出しませんwというわけで、それぞれ以下のようになります。 get_intersection : 2つの配列の共通部分を取り出す get_union : 2つの配列で合わせた部分を取り出す(List::MoreUtilsのuniq関数と同じ) get_Lonly : 2つの配列のうち

    List::Compareで二つの配列の集合を扱うの巻 - Articles Advent Calendar 2012 Casual
    amari3
    amari3 2013/02/14
  • App::YG - ログをう゛ぁーてぃかるぱみゅぱみゅしちゃう!! - Articles Advent Calendar 2012 Hacker

    やあハッキングモンスターのみんな、元気かーい? ぼくは普通です。 きょうはみんなでログをう゛ぁーてぃかるぱみゅぱみゅしちゃうぞ!あ、こんにちは bayashi です。 さて、ログは見てるかい?cat してるかい? tail してるかい? GB単位のログを vim で開いてフリーズさせてやいないかい?ログは吐いたら終わりじゃいけないぜ!ちゃんとうぉっちしないと鬼がでちゃうぞ!! とはいえ、そんなログも、たいていは1行につらつらと書かれてて見るのがつらいね!!例えばこんなやつだ。 $ tail log 127.0.0.1 - bayashi [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.0 (compatible

    App::YG - ログをう゛ぁーてぃかるぱみゅぱみゅしちゃう!! - Articles Advent Calendar 2012 Hacker
  • ひらがなをカタカナに変換したいだって?それなら Lingua::JA::Regular::Unicode - Articles Advent Calendar 2010 Hacker

    ひらがなをカタカナに変換したいだって?それなら Lingua::JA::Regular::Unicode ここにきて気をだしている tokuhirom です。こんにちは。 Perl でコードをかいていると、全角カタカナを半角カタカナに変換したいとか、そういう要望ってよくあるとおもうんですよね。そんなときは Lingua::JA::Regular::Unicode をつかうといいですね。 use Lingua::JA::Regular::Unicode qw/alnum_z2h hiragana2katakana space_z2h/; alnum_z2h("A1"); # => "A1" hiragana2katakana("ほげ"); # => "ホゲ" space_z2h("\x{0300}"); # => 半角スペース ちょうべんり。 たぶん、だいたいのケースでいま実装されてる関数

    ひらがなをカタカナに変換したいだって?それなら Lingua::JA::Regular::Unicode - Articles Advent Calendar 2010 Hacker
  • Time::Piece::Over24 - 24時以降の時間をTime::Pieceで扱う - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。はじめまして i47_rozary と申します。みなさん、意識は高まっていますか? 僕は上々でいたーいです。今回は拙作のTime::Piece::Over24というモジュールを紹介いたします。 皆さん Time::Piece ってモジュールご存知ですか? 軽いとの評判もあり、DateTime に代わって使われるようになってきている時間系のモジュールであります。 ボクは時間周りの処理をよくするので、よく使うんですけれども。Time::Pieceは、24時以降の時間(例えば、25時は翌日の1時であるとか)を扱えないので、深夜帯に生きるボクには活かせづらいときがままありました。 だので、そこら辺をよしなにしたいなといった趣向のモジュールになります。 24時以降のTime::Pieceオブジェクトを作っちゃう use strict; use warnings; use Time

    Time::Piece::Over24 - 24時以降の時間をTime::Pieceで扱う - Articles Advent Calendar 2011 Hacker
  • あるある ORM ドハマリ大辞典 - Articles Advent Calendar 2011 Dbix

    こちら Yappo の日でございますが、 Yappo の執筆ペースが芳しくないので、日も社員のオオサワが代打で「DBI」や「ORM」について書かせて頂きたいと思います。 trigger / hook point insert, update, delete クエリの前後処理を拡張して、レコード作成時刻の設定や update 時刻の更新はたまたレコード削除時に削除テーブルへの自動コピー等を、一度ベースクラス上で定義しておけば新しく作るテーブルへも use parent する等して簡単に適用出来きるように便利になりますが、うっかりしてると後続の開発者がハマったり制約が出てきます。 DBMS の trigger ORM の機能の trigger を多用していると、後続は DBMS 体の trigger を使う事に躊躇します。使っちゃいけないというわけではないでしょうが、一つのクエリに対する副

    あるある ORM ドハマリ大辞典 - Articles Advent Calendar 2011 Dbix
  • SQL::Interpで生がお好きなあなたも満足 - Articles Advent Calendar 2011 Dbix

    Perl AdventCalendar初投稿でドキドキしているriywoです。目指せhirose31ということで「コードも書けるインフラエンジニア」を所望していますが、正直、DBI使ってゴリゴリアプリとか作ってない。。。限りなくひとりDBIx::Casual Trackではありますが、そんな僕だからこそ書けるゆるふわなエントリをどうぞ! 情弱なんで生SQLがいいんです。。。 Tengとかすごい魅力的なんですが、ゆるふわ過ぎてついつい生でSQLを書きたくなります。ORMのメソッド覚える努力をしないだけ情弱なんですが、特にインフラはいつも慣れ親しんでいるSQLをそのままアプリでも使いたくなっちゃいます。 とは言え、こんなコードを書いてしまうと色々と残念な感じです(注:2年前くらいの僕)。 my @line = `mysql -N -uuser -ppass hoge -e "select *

    SQL::Interpで生がお好きなあなたも満足 - Articles Advent Calendar 2011 Dbix
    amari3
    amari3 2011/12/21
    この組み合わせいいかも!
  • DBI::Profileでお手軽プロファイリング - Articles Advent Calendar 2011 Dbix

    aloelightです。 みなさん、DBIx書いてますか?私は5年以上はPerlを使っていますが、DBIxを書いたことがありません。CPANの既存ライブラリとDBIの基機能で間に合ってしますからです。今日はDBI付属の機能の中からDBI::Profileを紹介したいと思います。 どんな時に使うの? 開発時には何気なく実行してたけど、なんかこの機能が遅いような気がする。そんなことありませんか? MySQLではEXPLAINを使ってクエリの実行計画を確認することで、そのクエリがなぜ遅いかを判断することができますが、その前にどのクエリが遅いかを判断しなければいけません。お手軽さを求めるなら、DBI::Profileを使うのがいいんじゃないでしょうか。 使い方 DBI::Profileの使い方はいくつかありますが、今回は$ENV{DBI_PROFILE}にセットする方法を使います。他には$dbh

    DBI::Profileでお手軽プロファイリング - Articles Advent Calendar 2011 Dbix
  • DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix

    こんにちは、最近 PSP1000 の電池が一瞬で切れてしまってまともにゲームができない xaicron です。 さて、みなさんは DBI から吐かれた SQL をみたいなーと思うこともあるでしょう。 そんな時は、$ENV{DBI_TRACE} = 2 とかしてみると、ドバーッといっぱいデバッグログが出てきて、 その中に実際に発行された SQL がちょろっと出てたりするのでこいつを頑張ってパースすればいい感じですね! っていうのはだいぶ面倒だったりしますね。あたりまえですね。 そこで、use するだけでとりあえず全部の発行された SQL を STDERR にはいてくれるモジュールを書きました。 その名も DBIx::QueryLog です。そのままですね。 つかいかた 使い方は至極簡単で、どっかで適当に use するだけです。ほかには何もいりません。 そうすると、以下のような感じで STDE

    DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix
    amari3
    amari3 2011/12/12
  • Module::Setup でらくらくモジュール作成 - JPerl Advent Calendar 2009

    Module::Setup でらくらくモジュール作成 - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? こんにちわ!こんにちわ!acotie hackathon の懇談会来てるのに一人寂しくビール飲んでる Yappo です。 皆様お元気ですか?僕は寂しいです。 さて今日は今さっき shipit したての Module::Setup について紹介しましょう。 what is Module::Setup? Module:Setup とは miyagawa さん作の pmsetup を CPANize した物です。 で、 pmsetup は何かというと Module::Starter などのモジュール開発を始める上の雛形を便利な感じで作ってくれる物です。 まぁ pmsetup でも良かったんですが、みんな好き

  • Plack::Middlewareの使い所 - Articles Advent Calendar 2011 Casual

    2011-12-08 00:40追記 @karupaneruraさんに指摘されて、s/Plack::Middleware::Conditionals/Plack::Builder::Conditionals/ しました。ありがとうございます。@kazeburoさんすみませんでした。 こんにちは。Songmuです。鎌倉の面白法人でPerlでソーシャルゲームの開発をおこなっています。 「ぼくらの甲子園熱闘編」や「ぼくらのワールドリーグ」の開発に携わっております。 アプリはArk + DBIx::Class + Text::MicroTemplate::Extendedという構成で作ることが多いのですが、 今回はソーシャルゲーム開発で活用しているPlack関連モジュールを2つ紹介させていただきます。 ちなみにArkのadvent calendarもやっておりますので、併せて読んでもらえると嬉しい

    Plack::Middlewareの使い所 - Articles Advent Calendar 2011 Casual
  • HTTP通信を含むモジュールのテスト - Articles Advent Calendar 2011 Test

    こんにちは!こんばんは!寒いのがめっぽう苦手、bayashi です! きょうは、HTTP通信を伴うモジュールのテストについて書いてみます! サンプルモジュール WWW::Foo8 具体的に説明するために、WWW::Foo8 というモジュールを書きました! package WWW::Foo8; use strict; use warnings; our $VERSION = '0.01'; use Class::Accessor::Lite ( rw => [qw/agent error/], ); sub new { my ($class, %args) = @_; $args{agent} = _default_agent() unless $args{agent}; bless \%args, $class; } sub get { my ($self, $uri) = @_; my

    HTTP通信を含むモジュールのテスト - Articles Advent Calendar 2011 Test
  • 配列操作をカジュアルに - Articles Advent Calendar 2011 Casual

    こんにちは。新潟在住Perl人、neko_gata_sです。AdventCalendarの敷居を下げにきました。ものっそいカジュアルな話をします。今日はList::Utilについて書こうと思います。 どちらが良いコード? さて、いきなりですが、以下のふたつのコードを比べてみてください。 use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_uc; foreach my $shugo_chara (@shugo_charas) { push @shugo_charas_uc, uc $shugo_chara; } use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_

    配列操作をカジュアルに - Articles Advent Calendar 2011 Casual
  • perl でテストを始めよう!! - Articles Advent Calendar 2011 Test

    はじめに こんにちはこんにちは!最近会社のモニターが二枚になって持て余している xaicron です。 さて、Test Track と称して始まったトラック。全部よめばあなたもテストを書かずには生きていけない、そんな身体に大変身していること間違いなしです。 とりあえず今日は初日なので、perl でテストを書くときに必ずと言っていいほど利用する Test::More を使ったテストの書き方を書こうと思ます。 また、「テスト」とざっくりといってもいろいろなものがありますが、その辺の細かい話はきっと ikasam_a さんが書いてくれるのでスルーします。 Test::More チートシート まず、More というだけあって、結構機能がいっぱいあるので、チートシートを先にあげておきます。perldoc Test::More のほぼコピペですが、きっと皆さんは perldoc Test::More

    perl でテストを始めよう!! - Articles Advent Calendar 2011 Test
  • AnyEvent::RabbitMQ - メッセージキュー…使いこなしてますか? - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。cooldaemon と申します。みなさん、意識は高まっていますか? 私は上々です。今回は拙作の AnyEvent::RabbitMQ というモジュールを紹介いたします。 AnyEvent::RabbitMQ は、AMQP ブローカーと非同期にメッセージを送受信するための AMQP クライアントです。AMQP とは、メッセージを扱うミドルウェアのオープンな標準仕様です。AMQP の正確で詳しい内容は、AMQP の公式サイトや Google をご確認ください。 当の事を言うと、名前は AnyEvent::AMQP::Client でも良かったのですが、私は、AMQP ブローカー実装の一つ RabbitMQ を常用しており、RabbitMQ 以外の AMQP ブローカーを利用する機会も必要もなく、また、接続性を保証する事もしたくなかったので、あえて名前に AMQP を含め

    AnyEvent::RabbitMQ - メッセージキュー…使いこなしてますか? - Articles Advent Calendar 2011 Hacker