タグ

perlに関するhondallicaのブックマーク (127)

  • お待たせしました。Perl で BDD を簡単に実践する最高にクールなフレームワークができました - YAPC::Asia Tokyo 2014

    私は過去に Test::TCP, Test::SharedFork, Test::Power, Test::Pretty... たくさんのテストを便利にするモジュールを書いてきました。これらのモジュールは Test::Builder の上に構築されております。 我々は、 Test::More 2.0 がでる日を夢見て、ただひたすらに Test::More が出る時代が出る時を待ち続けてきました。 しかし、2014 年にいたり、Test::More 2.0 の開発中止が正式に宣言され、Test::More 2.0 の夢は消え、人々は失意のどん底に打ちのめされております。この暗黒の時代に我々は何をすべきか、それを考え無くてはならないと思います。 そして、今、 Perl5 アプリケーションテスティングを劇的に簡単にするフレームワークが登場しました。その名も Test::Kantan です。非常に

  • FurlX::Coro を使ってみたかった - はちゅにっき

    節電対応で休日が日・月になった hatyuki です。ということで、明日がおやすみ! 「DB から引っ張ってきた 5,000 件くらいの URL が、全部 HTTP Status Code 200 を返してくるか調べたいんだけど。」 という、なさそうでやっぱない依頼をうけたのでささっと書いてみることに。 ぱっと思いついたのはこんな感じ。 use strict; use warnings; use Furl; use My::Util qw/ db /; use Test::More; my $furl = Furl->new; my $itr = db->search('tables'); while (my $row = $itr->next) { my $res = $furl->head($row->url); is $res->code, 200, $row->url; } don

    FurlX::Coro を使ってみたかった - はちゅにっき
  • Porboという開発用PSGIサーバを作った - Qiita

    概要 Mojoliciousに付随しているMorboのような開発用サーバが欲しかったので、 勉強がてらにPorboという開発用PSGIサーバを作った。 以下のような条件を全て満たす開発用サーバが欲しかった。 シングルプロセスで複数のポートをListenできる(HTTP::Server::PSGIだとできない) SSLに対応している(Twiggyだと対応していない) Plack::Middlewareが使える(Morboだと使えない) 個人的にこれらの機能が備わっていると開発が捗る。 Porboの中身 複数ポートをListenするからイベント駆動が必要そうだな、 ということでAnyEventを使用して書いた。 TwiggyやHTTP::Sever::PSGIを読んで、見よう見まねで作ったので、 AnyEventの仕様や動作などをまだよく理解できておらず勉強中。 テストはTwiggyのものを流

    Porboという開発用PSGIサーバを作った - Qiita
  • Module::CoreList の Web Interface を作りました - blog.nomadscafe.jp

    あるモジュールがPerlのコアモジュールに含まれているか、どのバージョンが含まれているかをたまに確認したくなりますが、その時に使うのが Modure::CoreList です。Modure::CoreListにはコマンドラインツールも用意されているのですが、tokuhiormが Web Interface版を作っていてとても便利でした。が、こちらは今404になってしまっているので、tokuhiromに確認の上、新しくサイトを動かしました。 http://corelist.rpee.be/ 画面はこんな感じ あるバージョンのperlにどのモジュールのどのバージョンが含まれているのかと、モジュールがどのPerlに含まれているのかのリストがでます。 もとのソースコードを参考にしつつ、Kossyとboostrap3で移植しました。移植するついでに、Proclet、Server::Starter、c

  • perlの変数のデータ量を測定する - $shibayu36->blog;

    perlの変数のデータ量を調べたいということがあって、何を使ったらいいか調べたんだけど、Devel::Sizeというのが便利そうだった。 こんなかんじで使える。 use Devel::Size qw(size total_size); my $size = size([1, 2, 3, 4, 5]); warn $size; my $total_size = total_size({ a => [1, 2, 3], b => { c => [1, 3, 5], }, }); warn $total_size; sizeというのは構造のために使われている容量を出してくれるやつ。 The size function returns the amount of memory the variable returns. If the variable is a hash or an array,

    perlの変数のデータ量を測定する - $shibayu36->blog;
  • http://argrath.ub32.org/perldocjp/5.20.0/perl5200delta.html

  • Zero-crossing rate (ZCR) を使った音楽解析 - えがわたにっき

    音声認識音楽解析によく使われる指標として Zero-crossing rate (ZCR) というのがあるそうだ。これは、音声の波形を描いたとき、波が中央より上(正)から中央より下(負)に、またはその逆に変化する頻度を数えて、その頻度により音声の特徴を表すというもの。ZCRが大きいほどより noisy な音声と捉えられるらしい。 この ZCR を使って様々なジャンルの音楽で分析を行った実例が、Elias Pampalk 氏の Computational Models of Music Similarity and their Application in Music Information Retrieval という論文で紹介されている。面白そうな上、案外簡単に実装できそうな気がしたので、オイラも早速 perl で作ってみた。 (ソースは GitHub に置いておきました) 今回は分析方

    Zero-crossing rate (ZCR) を使った音楽解析 - えがわたにっき
  • Perlで存在しないメソッドを呼ばれたけど同名のキーがあったらもしかしてとか言いながら死ぬやつ - hitode909の日記

    $user->{name}を呼ぶのが正しいけど$user->nameを呼んでしまったときに,もしかして:->{user} とか出る,みたいなのができる. package Mosikasite { sub new { my ($class) = @_; bless {}, $class; } sub AUTOLOAD { my ($self) = @_; my $method = (split '::', $AUTOLOAD)[-1]; if (@_ == 1 && exists $self->{$method}) { die "もしかして:->{$method}"; } else { die; } } }; my $m = Mosikasite->new; $m->{hoge} = 1; $m->hoge; https://gist.github.com/5e61b92f56c4d2c1b

    Perlで存在しないメソッドを呼ばれたけど同名のキーがあったらもしかしてとか言いながら死ぬやつ - hitode909の日記
  • APIドキュメントからモックサーバを立ち上げるWeb::API::Mockを書いた - akihitoのログ置き場

    APIドキュメント(API Blueprint)からモックサーバを立ち上げるWeb::API::Mockを書きました https://github.com/takihito/Web-API-Mock 使い方: https://github.com/takihito/Web-API-Mock/wiki/Usage Plackで作った事もあり以前紹介したapi-mockよりも、ちょっと便利になっています APIドキュメントからモックサーバを立ち上げたい - akihitoのログ置き場 モックサーバ立ち上げ時にplackupのオプションが使える 複数個のAPIドキュメントに対応 未実装のAPIリストを渡す事でステータス:501を返す モックサーバからアプリケーションサーバへURL毎にスイッチする 3番目の仕組みを利用することで、nginxを使ってモックサーバからサーバアプリケーションに差し替える

    APIドキュメントからモックサーバを立ち上げるWeb::API::Mockを書いた - akihitoのログ置き場
  • “Perl::Lint - Yet Another Static Analyzer for Perl5”というタイトルでTPF助成金に応募しました - その手の平は尻もつかめるさ

    I proposed a tpf grant. I’m waiting for your feedback! #perl #tpf http://t.co/PUJLf4VIOR— セカイ系 (@moznion) 2014, 3月 16 The Perl FoundationのGrants Committeeのルールが変わったそうで,折角の良い機会なのでGrantにProposalを出してみました. TPF Grants Committeeのルールの変更については次の記事を参照してください. TPFによるPerl助成金の交付の変更等について : D-7 <altijd in beweging> 提出したProposalの詳細は以下です. http://news.perlfoundation.org/2014/03/grant-proposal-perllint---yet.html ざっくり

    “Perl::Lint - Yet Another Static Analyzer for Perl5”というタイトルでTPF助成金に応募しました - その手の平は尻もつかめるさ
  • Perl 5.19.9 で実装された signatures の構文をためしてみる - tokuhirom's blog

    use 5.019009; use autodie; use feature 'signatures'; no warnings "experimental::signatures"; package Foo { sub new($class, $n) { bless {n=>$n}, $class; } sub bar($class, $a) { $a+3; } sub baz($self, $a) { $self->{n} * $a; } } sub add($left, $right) { return $left + $right; } say add(1,2); say Foo->bar(4); say Foo->new(5)->baz(4); みたいな感じでつかえる。 【追記】 use 5.019009; use feature 'signatures'; no warning

  • 第23回 Perlアプリケーションのテストと高速なCI環境構築術(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はmyfinderこと久森達郎さんで、テーマは「Perlアプリケーションのテストと高速なCI環境構築術」です。テストに利用するさまざまなモジュールから、CI(Continuous Integration、継続的インテグレーション)環境の構築、そして増えたテストを高速に実行する枠組みの構築までを紹介します。 なお稿のサンプルコードは、誌サポートサイトから入手できます。 テストの目的 まずはテストを行う目的を整理します。 コードを壊していないことを確認する 1人で開発するものであれば、どんな状況であれ責任を負うのは自分だけですが、チームや組織が複数にまたがる場合にはテストが重要になります。プロダクトが大きくなるにつれ、自分の開発によって想定外の機能にも影響を与えることが多くなります。逆にほかの開発者が行ったコミットによって

    第23回 Perlアプリケーションのテストと高速なCI環境構築術(1) | gihyo.jp
  • Shipped Localizer 0.01 - tokuhirom's blog

    https://metacpan.org/release/Localizer Abstract: I released yet another localizetion library for us(me and co-workers). Localizer というモジュールをだした。 Locale::Maketext はよいモジュールだが、OO-ish ではないしドキュメントがわかりづらい。 Locale::Maketext::Lexicon は便利だが、内部のコードが高度すぎてなにをやっているのかよくわからず、オーバースペックな感じだなと感じることがあるし、なにか変えようとしたときになにをしているのかさっぱりわからないので、よく困っていた。 Locale::Maketext::Lexicon をハックする謎コードをつみあげていたのだが、つみあげたコードの方がでかいぐらいのノリになってき

  • Perlでインストールされているモジュールを全部リストアップする - (ひ)メモ

    [twitter:@fujiwara] さんのこれ、 新しいPerlに今まで使ってたモジュールをまとめてインストールする - 酒日記 はてな支店 ExtUtils::Installedで現在インストールされているモジュールからcpanfileを作る をベースにちょっと弄ってモジュールをリストアップするスクリプトを書いて使ってたんですが、core モジュールがリストアップされてなかったので、もろもろ対応したのを上げましたのでどうぞみなさまお使いくださいませ。 https://github.com/hirose31/list-installed-perl-modules 出力フォーマットは、バージョン固定な cpanfile と Perl のハッシュの2つです。 Carton使ってないけど、同じモジュール、同じバージョンのモジュールを一式、新環境にもりっとまるっと入れたい!とかってときに便利か

    Perlでインストールされているモジュールを全部リストアップする - (ひ)メモ
  • Test::Base::SubTest というモジュールを作った。またはテストケースとテストコードは分離されていたほうが嬉しい話 - Cside::Weblog

    2014-01-15 Test::Base::SubTest というモジュールを作った。またはテストケースとテストコードは分離されていたほうが嬉しい話 perl 自分は Test::Base が好きでよく使うのだけど、subtest 的な、テストのグルーピングができないのがずっっっと不満だったので、Test::Base::SubTest というモジュールを書いた。 https://metacpan.org/release/CSIDE/Test-Base-SubTest-0.1 https://github.com/Cside/Test-Base-SubTest 以下の様な拡張記法が使えるようになる。### でsubtestの 1 単位を表現する。 use Test::Base::SubTest; filters { input => [qw(eval)] }; run_is input =

    Test::Base::SubTest というモジュールを作った。またはテストケースとテストコードは分離されていたほうが嬉しい話 - Cside::Weblog
  • TDD use Perl - Qiita

    あけましておめでとうございます。 昨年は JS くらいしか書いてないような気がするので Perl +TDD で年始め。 題材には これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE の問題を流用します。文量がありますが良記事なので、未読の方は一度読んでおくと良いです。(Perl環境は用意されているとします) 今回利用するモジュールとかツールとか Test::Harness ... テストを実行するコマンド prove を利用できるようにする App::Cpanminus ... CPANモジュールをインストールするコマンド cpanm を利用できるようにする Carton ... 開発するディストリビューションで依存するモジュールを管理するツー

    TDD use Perl - Qiita
  • Mojolicious最速マスター - Qiita

    PerlのWeb Application Frameworkである Mojolicious でアプリをつくる場合に必要な基礎的な使用法を紹介します。1枚スクリプトから書けるMojolicious::Liteを前提としていますが大きなモノにも対応出来ます。 イントロ インストールする cpanm コマンドでコアモジュール以外の依存関係無しで一発。

    Mojolicious最速マスター - Qiita
  • Test::Synopsis::Expectationというモジュールをリリースしました - その手の平は尻もつかめるさ

    このたび,Test::Synopsis::Expectationというモジュールをリリースしました. https://metacpan.org/pod/Test::Synopsis::Expectation https://github.com/moznion/Test-Synopsis-Expectation 使い方や仕組み等をid:mackee_wさんの記事で紹介していただいたので,そちらの方も併せてご覧いただくと良いと思います. SYNOPSISのコメントを使ってテストするTest::Synopsis::Expectation - ぱいぱいにっき CPANに上がっているモジュールを使う時,多くの方が何は無くとも真っ先にSYNOPSISを見て使い方をザックリ把握するかと思います.とりあえずSYNOPSISのコードをコピペしてみて,動くかどうか見てみる的な. で,SYNOPSISのコード

    Test::Synopsis::Expectationというモジュールをリリースしました - その手の平は尻もつかめるさ
  • HTTPクライアントとStream::Bufferedの合わせ技 - Qiita

    鼻が詰まって困ってます LWPやFurlを使ってインターネットから様々なファイルをダウンロードする。よくやりますよね。その際に大きなファイルをGETしてしまい、perlのプロセスがメモリを大量に使い、OOM Killerに殺されて2年経つ、なんて経験をした人もきっと多いはず。 そこで使うのがレスポンスをファイルに書き出す技。Furlであれば my $furl = Furl->new(); open my $fh, '>', $filename; $furl->request( url => 'http://example.com/4k.jpg', write_file => $fh ); my $size = -s $fh; seek($fh, 0, 0); と書けて、$filenameのファイルに大きな画像データが保存されます。 しかし、取得対象とするデータが、大きなファイルから小さいフ

    HTTPクライアントとStream::Bufferedの合わせ技 - Qiita
  • Perl XS を書くようになったきっかけ - Islands in the byte stream (legacy)

    THE INTERVIEWS がサービス終了ということで、一つだけ消えるには惜しいというか懐かしい記事があったので少し加筆修正して転載します。JHackers でも似たようなことを話してますね。 Perl XS を書くようになったきっかけ、また、どのようにして今のような XS マジシャンになったのか。そのあたりの事をお聞かせください 2000年頃の話です。ぼくはCGIスクリプトでちょっとしたゲームデータの集計サイトをやりたくてプログラミングを覚えたのでした。これがそこそこ重い処理で、次第にもっと高速にしたいと考えるようになりました。一方、当時ぼくはお金もなくVPSも一般的でなかったので、CGIスクリプトしか選択肢はありません。そこで初心者ながらいろいろ調べることにしました。 とりかかったのは行指向のテキストで保存していたデータをSQLiteにすることでした。しかし当時はWindows上で開

    Perl XS を書くようになったきっかけ - Islands in the byte stream (legacy)