タグ

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

  • Text::Xslate TTerse の深淵なる罠 - Articles Advent Calendar 2012 Casual

    みなさんこんにちわ!みなさんはテンプレート使ってますね! Xslate つかってますね! TTerse 使ってますね!今回はうっかりハマってしまう罠を教えます! SET で作った変数はブロックスコープである ブロックスコープなんだけど SET したスコープの中にあるブロックはスコープの対象外なので以下のテストは動かなかったりするんだ。 my $tx = Text::Xslate->new({ syntax => 'TTerse' }); my $ret = $tx->render_string(<<TMPL,); [% SET chin = 'kiru' -%] [% MACRO xaicron BLOCK -%] [% chin = 'kiranai' -%] [% chin -%] [% END -%] [% xaicron() -%] [% chin -%] TMPL is $ret

    Text::Xslate TTerse の深淵なる罠 - Articles Advent Calendar 2012 Casual
  • Web アプリケーションのデプロイについての考察 - Articles Advent Calendar 2012 Casual

    Web Application をデプロイする際に、carton をつかうという方法もありますが、もっとゆるふわでいいんじゃないかなーとおもうので、もっとゆるふわにやる方法について考えてみました。 carton について carton は以下のようなことをやってくれます。 * バージョンの固定 * インストール * モジュールパスのロード carton は carton.lock というファイルにインストールしたバージョンを記録することによって、いいかんじにバージョンを固定できて、複数の環境でアプリをうごかすときに便利です。 が、しかし carton.lock は JSON ファイルなので、複数人が同時に作業しているときに conflict したりしてメンドイ! という噂もききます。実際、carton.lock をつかうと conflict がダルすぎるので carton.lock を .

    Web アプリケーションのデプロイについての考察 - Articles Advent Calendar 2012 Casual
  • Script::Ichigeki - 相手は死ぬ - Articles Advent Calendar 2012 Hacker

    @songmuです。Hackerではありませんが、僭越ながら書かせていただきます。 運用とは戦いであり、オペレーションエンジニアたちは日々殺す殺されるの戦いを繰り広げています。 殺る前に殺るしかない。可能なら一撃で。そこでScript::Ichigekiの出番です。 Script::Ichigekiは一撃こっきりしか実行しないスクリプトを安全に実行するために作られたモジュールです。 具体的には以下の要件を満たしてくれます。 クリティカルな一発スクリプト(ゲームの報酬付与処理、データ修正処理等)を 実行前に実行確認プロンプトを表示して 実行ログを残しつつ 再実行を防ぎたい(特にシェル履歴からの誤爆とか) 後々の参照のために、スクリプト自体は残しておきたい 使い方は簡単で、あなたが実行するplファイルに use Script::Ichigeki; と書くだけ。以下使用例。 % ls -A ic

    Script::Ichigeki - 相手は死ぬ - Articles Advent Calendar 2012 Hacker
  • vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual

    @tokuhirom です。Perlを書き始めて8年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 僕の秘伝のタレ的な .vimrc の中から perl に関係ある部分だけをぬきだしてお教えしましょう。すべて設定すればだいぶ快適になりそうです。とかかいてると教えるのもったいない気分になってきた。 ぼくの環境 僕は vim の環境として以下のようなものを指定しています。mattn さんからは DIS られがちです。 neosnippet unite.vim pathogen vim-perl プロジェクトの成果物をつかう https://github.com/vim-perl/vim-perl なんか最近、perl-vim から vim-perl にかわ

    vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual
  • 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
  • @__gfx__ は病欠です。 - Articles Advent Calendar 2012 Hacker

    @__gfx__ は病欠です。 - Articles Advent Calendar 2012 Hacker
    makamaka_at_donzoko
    makamaka_at_donzoko 2012/12/04
    回転して迫ってくる……
  • テストダブルについて - Articles Advent Calendar 2011 Test

    はじめに ikasam_a です。クリスマスイブいかがお過ごしでしょうか。私は寿司べたりしてました。 16日のエントリでテストダブル、特にフェイクやスタブについて触れましたが、今日はそもそもテストダブルって何ぞや、という話をします。またまた Perl の話はあまり出てこない予定です。 テストダブルとは http://xunitpatterns.com/Test Double.html:title=xUnit Test Patterns] で登場した言葉で、システムのある部分をテストするために特定箇所を置き換えることがあるが、その置き換え手段の総称として「テストダブル(代役)」という名前を当てたということです。 置き換え手段としては、以下の5つが挙げられています。 ダミー スタブ スパイ モック フェイク ダミー メソッド呼び出しの数合わせに使うことを目的とした、ダミーオブジェクトのことで

    テストダブルについて - Articles Advent Calendar 2011 Test
  • All Test::Successful - Articles Advent Calendar 2011 Test

    はじめに こんにちは、xaicron です。みんな、僕のグラビア写真は買ってくれたかな?買ってない人は WEB+DB Press vol.66 を今すぐゲットだぜ!! さて、ついに長かった Test Track も最終日がやって参りました!みなさんはどうせリア充を尻目にリナカフェの閉店を見たり、独り者同士でなんとなーく集まってお酒飲んだり、もしくは僕のように一人寂しく Advent Calendar を書いているのでしょうね!!その昔、コンビニでゆでたまご買って間違って「あ、あっためてください」っていっちゃったことを何故か思い出しました。 というわけで、クリスマスぐらいはせめてテストを書きたくないし、そもそもコケたテストとか見たくないわけですね。ですので、僕からのスペシャルなクリスマスプレゼンツ!!その名も Test::Successful だぜ!ベイベー!! これはなに? これはあれです

    All Test::Successful - Articles Advent Calendar 2011 Test
    makamaka_at_donzoko
    makamaka_at_donzoko 2011/12/26
    ちなみにokになるテストを自動生成するAmce::TestがCPANにあります
  • STF分散オブジェクトストレージ - Articles Advent Calendar 2011 Hacker

    lestrratです。日めでたく正式にSTFがオープンソースとしてlivedoor ラボ EDGE上でリリースされました! プレスリリースはこちら。 いままでちょこちょこと先出し先出しで情報をだしていましたが、これで当に当の正式公開です。一応上記のサイト以外に「公式」サイト的なものも用意しました。ソースコードはgithub上に公開されています。ということで使って欲しいので紹介記事です。 STFは分散オブジェクトストレージです。Perlメインの似たようなシステムとしてはMogileFSが有名ですが、STFは後発のメリットを生かしてPSGI互換にしたり、使用するプロトコルを基的にHTTPというオープンで枯れた技術を採用したりとメンテナンス・運用の利便性があがっていると考えています。 歴史 STFは元々ApacheモジュールといくつかのPerlワーカーで書かれていましたが、ひょんなことか

    STF分散オブジェクトストレージ - Articles Advent Calendar 2011 Hacker
  • Devel::CoverとJenkins - Articles Advent Calendar 2011 Test

    数日前にカバレッジの話がありましたが、そんな事言ってたって自分でカバレッジなんてとらないでしょ?僕はそうそうとらないです。 なのでそんなのJenkinsにやらせればいいんですよ。 自動的にカバレッジを計測しましょう (Jenkinsじゃなくてもそうですが)Devel::Coverでカバレッジを計測するならPERL5OPTで渡すのが一番簡単ですね。 export PERL5OPT="-MDevel::Cover" ちなみにJenkinsでテストしてるときにはなるたけテストに使っているPerlから見えるところに余計な依存ライブラリを置きたくないので、Devel::Coverはそれだけ別の場所にいれてます。こうすればDevel::Coverを使う時以外はDevel::Coverをインストールしてあるディレクトリを有効化しないようにしてます。 cpanm -l/path/to/devel-cove

    Devel::CoverとJenkins - Articles Advent Calendar 2011 Test
  • テストのためにデーモンを自動的に起動するやりかた2011年版 - Articles Advent Calendar 2011 Test

    はじまりはパクり 最近あんまりコード書いてません、lestrratです。 テストを走らせる時にいろんな他のデーモンを立ち上げたり、そのテストのためだけの設定を先にしないといけなかったりとか色々ありますよね。結構長い間Makefile.PLはModule::Installで書いていたせいもあって、ちょっと前にxaicronさんが書いてたModule::Install::TestTargetでごにょごにょやってたのですが、ちょっと前にYappo/tokuhiromさんがproveで書いてたセットアップがまるっと自分の欲しい用途にも使える事に気づいたのでいろんなアプリケーションのテストをそのように変えてみました。 流れ proveでテストをすると、proveのプラグインを呼び出す設定ができるのですが、これをプラグインというよりテスト前に実行されるフックとして利用する事によって任意の設定用のコード

    テストのためにデーモンを自動的に起動するやりかた2011年版 - Articles Advent Calendar 2011 Test
  • Acme::Text::Glitchでテキストをぐちゃぐちゃにしよう - Articles Advent Calendar 2011 Acme

    初日に続き、新潟Perl人のneko_gata_s(shinpei)です。型さんとかしんぺいさんとかぺーちゃんとかいろんな呼ばれ方をしてるので好きに呼んでください。今日は拙作のAcme::Text::Glitchというモジュールの紹介をさせていただきます。CPANにはあがっておらず、GitHubに置いてあるのでインストールは $ cpanm https://github.com/Shinpeim/p5-Acme-Text-Glitch/tarball/master からどうぞ。 何をするモジュールなのか/どう使うのか その名のとおり、テキストをグリッチします。つまり、たとえば"Glitch"という文字列をAcme::Text::Glitchに掛けると、̦̩̲ͩ́͘G̬̤̱̈́͜l̠̺͑͟ỉ͓͚̹̓͊͟͞t̛͇̙̩̟̐ͪͣchとなります。 なんだがぐちゃぐちゃになりましたね。使い方は以下の

    Acme::Text::Glitchでテキストをぐちゃぐちゃにしよう - Articles Advent Calendar 2011 Acme
  • Acme::Jiro - ラーメン二郎ジェネレータ in Perl - Articles Advent Calendar 2011 Acme

    こんにちわ. けいおんの映画を未だ見れていない syohexです. 今週の出張が終わったらぜひ映画館に行きたいですね. はじめに Acme::Jiroは の Perl版です. ラーメン二郎というお店はメニューを頼むときに呪文を唱えないといけないそうです. もたもたしていると怒られるとかなんとかって話も出ているんで, しっかり準備していきたいですよね. 使い方 各パラメータをコンストラクタに与えるだけです. コンストラクタのキーは '麺', '固さ', '野菜', '背脂', 'タレ', 'にんにく'です. #!perl use strict; use warnings; use utf8; use Acme::Jiro; binmode STDOUT, ":utf8"; my $jiro = Acme::Jiro->new( '野菜' => '極めて多め', '背脂' => '普通', '

    Acme::Jiro - ラーメン二郎ジェネレータ in Perl - Articles Advent Calendar 2011 Acme
  • 実践 Acme::Spinner - Articles Advent Calendar 2011 Acme

    探し求めていたモジュールはAcmeでした 画像データを扱うと、なかなか結果が返って来なくて。それで、プログレスバーみたいなのがあればいいなーって思ってたのですが、そんな大げさじゃなくていいから、動いてるよって教えてくれるモジュールを探してました。 そして、ついに見つけてしまったのです、Acme::Spinnerを。 使い方 use strict; use Acme::Spinner; # 時間のかかる処理 my $spinner = Acme::Sipnner->new(); for my $i (0..100) { print STDERR $spinner->next . "\r"; # いろいろやる } すると、 | \ - / の順番でアニメーションする。 ちゃんとやる ちゃんとアニメーションさせるには、 print STDERR $spinner->next . "\r"; が呼

    実践 Acme::Spinner - Articles Advent Calendar 2011 Acme
  • Acme::AirRead - perl初心者が初心を一歩抜け出すために - Articles Advent Calendar 2011 Acme

    こんにちは。perl初心者見習い足軽系のkoji_magiです。主にHokkaido.pmによくお邪魔させてもらったりしてます。 koji**とかkoji*とかkoji--とか名前を適当に付けすぎて涙が止まらないです。 さて、今回は空気を読まない系でいいらしいので、こんなAcmeをご用意しました。 Acme::AirRead 中身は何の変哲も無いアクセサです。Class::Accessor::Liteとか見てなんとなく作りました。 ただし、空気読めない系です。 use strict; use warnings; use Acme::AirRead; write_air( air => 'cant read air', declair => 'cant read near air', luft => 'kann keine Luft lesen', yomeru => 'kuuki yome

    Acme::AirRead - perl初心者が初心を一歩抜け出すために - Articles Advent Calendar 2011 Acme
    makamaka_at_donzoko
    makamaka_at_donzoko 2011/12/03
    ちょっとAcme::Oil思い出した
  • Acmeモジュール入門 - Articles Advent Calendar 2011 Acme

    ついに今年もAdvent Calendarが始まりましたね!Acmeトラックの初日を担当させていただくneko_gata_sです。最近は新潟県に住んでいます。新潟はとてもごはんがおいしいので、機会があれば是非べにきてくださいね! さて、今日は初日なので、特定のモジュールの紹介の前に、Acmeとはなんぞや、というお話から始めてみたいと思います。 Acmeとは何ぞや Acmeとはそもそも「絶頂」を意味する英単語ですが、Perlの世界ではジョークモジュールの名前空間を意味します。Perlの有用なモジュールがたくさん登録されているCPANの中に、ジョークモジュールがなんの手綱もなしに野放しになっていたらまずいよね、という観点から、ジョークモジュールはAcmeという名前空間におさめよう、ということになりました。それ以来CPANのAcme名前空間には楽しいジョークモジュールがたくさんアップされ、時に

    Acmeモジュール入門 - Articles Advent Calendar 2011 Acme
  • Mouseに関する4つの誤解 - Articles Advent Calendar 2010 Hacker

    メリクリ!Hacker Trackもいよいよ最終日となりました! 今回は以下のようなMouseに関するよくある誤解を晴らそうと思います*1。 MouseはMooseとの互換性に難がある Mouseは依存モジュールが多い Mouseはロードが遅い Mouseは実行が遅い MouseはMooseとの互換性に難がある これは誤解です。確かにMouseはMooseと互換性のない部分もありますが、それはほとんどがメタオブジェクトプロトコルレベルの話です。メタオブジェクトプロトコルは普通に使っている限り意識する必要のないものなので、ほとんどのケースでは問題になりません。普通に使う限りは非互換な点は特にないでしょう。 Mouseは依存モジュールが多い これは誤解です。Mooseは大量の依存モジュールがありますが、Mouseが依存しているのは標準モジュールのみです。また、CコンパイラがあればXSコードをビ

    Mouseに関する4つの誤解 - Articles Advent Calendar 2010 Hacker
  • Net::DNS::Lite - a module for handling timeout of hostname lookups safely, and more - Articles Advent Calendar 2010 English

    Net::DNS::Lite - a module for handling timeout of hostname lookups safely, and more Hostname lookup functions (like inet_aton) are one of the functions that aren't cancellable, and that makes hard to set timeouts within perl scripts that connect to other servers. Net::DNS::Lite is a port of AnyEvent::DNS without dependency on AnyEvent, intended to be used in ordinally perl scripts not event-driven

    Net::DNS::Lite - a module for handling timeout of hostname lookups safely, and more - Articles Advent Calendar 2010 English
  • Windows の STDIN を非同期で読み込む。 - Articles Advent Calendar 2010 Win32

    こんにちわ。mattn です。 先日、Maki_Daisuke さんからお題を頂いた件の回答です。 https://gist.github.com/742977 use AnyEvent::Handle; my $c = AE::cv; my $out = AnyEvent::Handle->new(fh => \*STDOUT); my $in; $in = AnyEvent::Handle->new( fh => \*STDIN, on_read => sub{ my $hdl = shift; $out->push_write($hdl->rbuf . "\n"); $hdl->rbuf = ""; } ); $out->push_write("Start\n"); $c->recv; これを Windows で実行してもウンともスンとも行かないという現象。色々調べている内に Win

    Windows の STDIN を非同期で読み込む。 - Articles Advent Calendar 2010 Win32
  • Email::MIME::MobileJPで文字コードまわりに気をつかわないでメールの送受信をおこなう - Articles Advent Calendar 2010 Hacker

    メール関係のモジュールをとりまとめて、カジュアルにつかえるようにするためのモジュールをかいてみました。 メールの受信(Parsing) メールのパーズは、以下のように、メールの文字列をくわせてやればいいです。 use Email::MIME::MobileJP::Parser; my $src_text = do { local $/; <> }; my $mail = Email::MIME::MobileJP::Parser->new($src_text); メールオブジェクトから Subject をえるには以下のようにしましょう。 ここでとれるものは MIME ヘッダにはいっている情報をもとに、UTF-8 に decode された文字列です。 可能ならば絵文字も decode します。これには [Encode::JP::Mobile](http://search.cpan.org/p

    Email::MIME::MobileJPで文字コードまわりに気をつかわないでメールの送受信をおこなう - Articles Advent Calendar 2010 Hacker