タグ

perlに関するtekiomoのブックマーク (90)

  • [perl] コントローラがどのテンプレを表示したかをテストする - tokuhirom's blog

    Module::Spy をつかう。 my $render = spy_on('Text::Xslate', 'render'); # コントローラをよぶ ...; my $tmpl = $render->calls_first->[1]; ok { $tmpl eq 'my/index.tt' };

  • cron周りのベストプラクティス読んだ - $shibayu36->blog;

    WEB+DBPerl Hackers Hubで書かれていた「cron周りのベストプラクティス」を読んだ。かなり参考になった。 経緯としては読みたいって呟いたら感想よろしくと言われたので慌てて読んだ。 @shiba_yu36 「読んだ」なら言ってもいい— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジに謝られても…— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジになって感想エントリを書いてください。— songmu (@songmu) 2014年2月24日 特に参考になったこと batch.pl batch.plは非常に良いと思った。というのもcronとかのスクリプトで非常に簡単な事をやっている場合は適当にplファイルを作っちゃって登録するんだけど、得てしてそういうのはテストが無くてバグってて、しかもcronのロ

    cron周りのベストプラクティス読んだ - $shibayu36->blog;
  • Test::TCPを使ってテスト用にmemcached, app, nginxサーバを立てる - $shibayu36->blog;

    テストをするときに、テスト用のみのMySQLとかmemcachedとか、アプリケーションサーバとかを立てたい時がある。MySQLの場合はTest::mysqldを利用すればすぐできるが、それ以外の場合もdaemonの場合はTest::TCPを使ってすぐにテスト用のサーバを立てることができるので、そのメモ。 テスト用memcachedサーバを作る Test::TCPが渡してくれるportを使って起動 Test::TCPが返すオブジェクトがguardのようなオブジェクトになっていて、スコープが切れるとプロセスを勝手に落としてくれる my $memd = Test::TCP->new( code => sub { my $port = shift; exec "memcached -p $port"; }, ); my $client = Cache::Memcached::Fast->new(

    Test::TCPを使ってテスト用にmemcached, app, nginxサーバを立てる - $shibayu36->blog;
  • Carton考2014 | おそらくはそれさえも平凡な日々

    こうするのがいいかなーと思ってる。経緯は端折って大枠だけ。Webアプリケーションプロジェクトの場合です。 cpanfileちゃんと書いてコミット 今やどこでもやってますね。scan-prereqs-cpanfileも便利です。 開発者は各自carton installでモジュールをインストール。プロジェクトごとにPerlをビルドしたりしてる場合は、cpanm --installdeps .でも別に良い。 CI環境でcpanfile.snapshotを作る CI環境は必ず以下のとおりとする。 番環境と同じアーキテクチャ 番環境と同じバージョンのPerl まっさらな状態(Globalに何のモジュールも入っていない) CIにcarton installもさせて、必要なモジュールをlocal/に入れてテストさせる。毎回サラからcarton installしてたら時間かかるので、git pull

    Carton考2014 | おそらくはそれさえも平凡な日々
  • 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 をハックする謎コードをつみあげていたのだが、つみあげたコードの方がでかいぐらいのノリになってき

    tekiomo
    tekiomo 2014/02/17
  • Pod::Text::Color::Delight というモジュールをリリースしました - その手の平は尻もつかめるさ

    [追記] 色々と問題を修正しましたので、最新版 (v0.0.5) をご利用なさる事をおすすめ致します。 (問題を報告して下さった@__gfx__さん、@uzullaさんありがとうございます) [追記ここまで] この度、Pod::Text::Color::Delight というモジュールをリリース致しました。 https://metacpan.org/pod/Pod::Text::Color::Delight https://github.com/moznion/Pod-Text-Color-Delight Perlの入門書や入門エントリ等を読みますと、「Perlのドキュメント調べるなら、`perldoc` コマンドでひくのが手っ取り早くて良い!」みたいな事がよく書かれていて、まあまあそれはその通りだよなーとは感じつつも、 `perldoc` コマンドで出力されるドキュメントって白黒で淡泊す

    Pod::Text::Color::Delight というモジュールをリリースしました - その手の平は尻もつかめるさ
    tekiomo
    tekiomo 2014/01/21
  • TDD use Perl - Qiita

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

    TDD use Perl - Qiita
  • 普通のデーモンを 1) Server::Starterでホットデプロイ+ 2) slow-restart対応にする - Qiita

    序章 最近筆者があるシステム上の非同期ワーカーに対して作業していたところ、新しいコードをデプロイしてこのプロセス達を再起動すると全てのワーカーが同じタイミングで停止→再起動してしまうのでアラートがちらほら流れてきました。クリティカルなものではないのですが、アラートはうざいです。さらに開発機では何回か失敗もしたのですが、その失敗のせいでワーカーが起動に失敗することもありました。その間は当然ワーカー機能は止まったままです。 アラートはできればみたくないのです。さらに万が一新しいコードが起動に失敗した場合でも前の世代が動いていればこのあたりの心配をする必要がなくなります自分がそのあたりに手を入れるタイミングでServer::Starterをかまして対処してしまうことにしました。 元のワーカー まず前提として、このワーカー達は以下のような形で「実行するワーカーのコマンド名(実際はクラス名)」と「い

    普通のデーモンを 1) Server::Starterでホットデプロイ+ 2) slow-restart対応にする - Qiita
    tekiomo
    tekiomo 2013/12/06
  • SQL::Translator::Producer::Tengを書きました | おそらくはそれさえも平凡な日々

    https://metacpan.org/module/SQL::Translator::Producer::Teng TengのSchemaは手で書くのがタルいので、Teng::Schema::DumperなりTeng::Schema::Loaderなりを使ってごにょったりしていたのですが、無理やりだし、自動生成すればいいよねとは思っていたので、書きました。 Kyoto.pmでも先日のYAPC::Asiaでも「SQL::Translator::Producer::Tengみたいなのがあればいいかもしれないけど特に不便を感じてないからやってない」とか言っていたのですが、書いてみたら案外サクッとかけたので、CPANizeした次第。 以下の様なSQLファイルがあったとして、 CREATE TABLE `user` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT

    SQL::Translator::Producer::Tengを書きました | おそらくはそれさえも平凡な日々
    tekiomo
    tekiomo 2013/11/26
  • Perlのデータ構造をダンプするためのモジュール群 | hirobanex.net

    マコピー(@mackee_w)にDDPって教えてもらったので、この機会にみんなに大人気のCPANモジュールまとめ記事を書くよ!!とりあえず、みんな大好きなまとめ記事なんで、はてぶをポチっとしてね!! 今回紹介するモジュール群 Data::Dumper Data::Dumper::AutoEncode Data::Dumper::Concise Data::Printer DDP 結論的には、DDPがいいよって話ですが、よく知らない方は以下を読んでいただくととても楽しいと思います。 Data::Dumper みんな大好き定番モジュールですね!!これがないと死んじゃうって近藤先生がおっしゃっていた気がします。 以下のように使います。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $data = +{ hash => +{

    tekiomo
    tekiomo 2013/11/26
  • YAPCで「はてなブログの開発フロー」について話してきました - 大西ブログ

    今年も参加しました!YAPC ASIA TOKYO!今回は40分トークを応募して、はてなブログの開発フローについて話してきました。 プロジェクトの開発プロセスを健全に保つための タスク管理、ワークフロー テスト、CI リリース管理 を中心に、実際にチームで行っている開発フローやさまざまなとりくみについて紹介しました。 開発フローは、作るものやチームにとって最適なものを選ぶべきだと思いますので、この手法が誰にでも使えるものではないと思いますが、何かの参考になれば幸いです。 また、こんな事をやるといいよ、というあなたの工夫もぜひ教えてください!

    YAPCで「はてなブログの開発フロー」について話してきました - 大西ブログ
    tekiomo
    tekiomo 2013/11/14
  • 第21回 Carton & cpanm―Perlモジュール管理最新事情(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 Carton Cartonもcpanmと同様に、宮川達彦さんを中心に開発しているツールです。Cartonがどんなツールかについては、PODにズバリな一文があるので引用します。 carton is a command line tool to track the Perl module dependencies for your Perl application. 「Cartonとは、アプリケーションにおけるPerlモジュールの依存関係を管理するコマンドラインツール」というわけです。 また、PODのNAMEセクションには次の記述があります。 Carton - Perl module dependency manager (aka Bundler for Perl) Rubyでお馴染みのBundlerという単語が出てきました。Rubyを使う人にはこちらの

    第21回 Carton & cpanm―Perlモジュール管理最新事情(3) | gihyo.jp
  • SeleniumとPerlの話 | Hachioji.pm 日めくりテックトーク

    どうも, YAPCが終わって文字通り燃え尽きているpapixです. 今日は, 「SeleniumとPerlの話」ということで, YAPC::Asiaの前夜祭であるLTソンで発表した「Seleniumで捗る話」の補足(?)エントリを書いてみようと思います. Selenium IDEを導入する Seleniumのテストを書く一番簡単な方法は, Selenium IDEを利用する方法です. というわけで, まずはSelenium IDEをインストールしましょう. ちなみにSelenium IDEはFirefoxのアドオンなので, Chrome派の人は仕方ないと思いますがまずはFirefoxの導入からスタートしてください. まあ, Firefoxは艦これ用の便利なアドオンがいくつかあるので, 提督エンジニアな方は導入済みだぜ! という感じだと思います. Selenium IDEはこちらのページから

  • 目指せ、テストカバレッジ100%

    Improve public relations reach and effectiveness with search engine optimization and RSS. Presentation by Lee Odden of TopRankResults.com during Bulldog Reporter's PR University event, Chicago 2007.

    目指せ、テストカバレッジ100%
  • Perlの使ってないメソッド探すやつ - hitode909の日記

    Perlの使ってないメソッド探すやつ作った. hitode909/perl-find-unused-methods · GitHub r7kamuraさんのやつそこそこ使えるって聞いたのでPerl用のを作ってみた. https://github.com/r7kamura/guideline/blob/master/lib/guideline/checkers/unused_method_checker.rb プロジェクト内で,fooっていうメソッド定義だけして,プロジェクト内で呼んでないときに,消しましょうって教えてくれる.メソッド名だけ見ているので,他のクラスに同名のメソッドがあって,そっちは呼んでない,みたいなのは発見できない. 中村さんのはメソッドの定義とかにフックしてコールバックが呼ばれるといったかっこいい設計だけど,Perlでどうやるか分からなかったから,PPIでsub xxx

    Perlの使ってないメソッド探すやつ - hitode909の日記
    tekiomo
    tekiomo 2013/09/25
  • bless と Mouse、あとClass::Accessor::Lite でオブジェクトを作る際の性能比較 - その手の平は尻もつかめるさ

    巷で「爆速! ヤバすぎ!」と目下話題の Mouse ですが、「bless でオブジェクト作るよりも速い」という風なことがちらほら聞こえて参りましたので、そこら辺を比較してみました。 今回は生 bless と、Mouse、そして参考として Class::Accessor::Lite の3つを比較しました。 なお、Perl のバージョンは 5.16.3、Mouse のバージョンは1.11、C::A::Lite のバージョンは0.05 でお届けして参ります。 比較に利用したのは以下のコードです。 かくして結果はこのようになり、流石に bless よりも速いという結果は得られませんでしたが、Class::Accessor::Lite よりかは高速ということで Mouse すごい、という感じですね。 しかしながら、上記のコードを以下のように書き換えると (わかりにくい! との指摘を受けましたので補足

    bless と Mouse、あとClass::Accessor::Lite でオブジェクトを作る際の性能比較 - その手の平は尻もつかめるさ
    tekiomo
    tekiomo 2013/09/25
  • perl な web application のためのテスト情報 を #yapcasia で話してきました - soh335 memo

    yapc::asia 2013 で perl の test 回りの話をしてきました。 去年からテストについて色々取り組んでいた所で、実際どういうモジュールでどうコードを書いてるかっていう説明が出来たと思います。 他の人がどういうテストを書いているかとかも気になるので、なにか気になったりしたら話したりしたいです。 継ぎ足しでスライドを作っていたら、 test::mock::guard のコードの説明がなくなっていて、なくなっていたと思ったら後ろから出てきたり、久しぶりに人前で喋ったせいか、珈琲のストローとマイクを間違えて喋ったりしました。 335さんこういうキャラの人だったのか。— ダメ人間 (@dameninngenn) September 20, 2013 335「びっくりだ!」聴衆(こっちがだ) #yapcasia— ひさいち (@hisaichi5518) September 20,

    perl な web application のためのテスト情報 を #yapcasia で話してきました - soh335 memo
  • いまどきのカジュアルなデータベース関連開発

    profile id: Songmu (ソンムー) Masayuki Matsuki http://www.songmu.jp/riji/ https://metacpan.org/author/SONGMU カヤック技術部ソーシャルゲーム事業部 二年半ソーシャルゲーム漬け 今年新たに上げたCPANモジュール Riji Puncheur DBIx::Schema::DSL Cache::Redis Config::PL Redis::LeaderBoard DBIx::FixtureLoader SQL::Maker::Plugin::JoinSelect Teng::Plugin::SearchJoined Git::Repository::FileHistory GitDDL::Migrator UnazuSan Plack::Middleware::Woothee Plack::Mi

    tekiomo
    tekiomo 2013/09/24
  • How to build a High Performance PSGI/Plack Server

    How to build a High Performance PSGI/Plack Server PSGI/Plack・Monocerosで学ぶ ハイパフォーマンス Webアプリケーションサーバの作り方Read less

    How to build a High Performance PSGI/Plack Server
  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】