タグ

perlに関するhi-rocksのブックマーク (282)

  • Perlなんて大嫌いですし、YAPC楽しみです - アルミ缶の上にアルフォート

    Perlなんて大嫌いです。 モジュールの最後の「1;」のダサさったらないし、$@とか諸々の省略形に吐き気がするし、オブジェクト指向は完全に後付けで「bless」でまず脱落しそうになったし、クラスメソッドとインスタンスメソッドの区別もないし、アンスコ始まりをprivate methodとみなす紳士協定だし、インスタンス変数は外からいじり放題だし、$@がグローバル変数なのも罠だし、Test::Moreなどのモジュールはsub{}で頑張ってDSLっぽくしようとしているのがなんだか涙ぐましいし、ググり方次第でインターネット黎明期のしょうもないCGI記事がわんさか出てくるし、そもそもPerlのスローガン「TMTOWTDI(やり方は1つじゃない)」とか大嫌いだし(初心者は酷い書き方ができてしまうし、ベストなやり方を模索する必要があるし、それでいて他人と開発するときは全てのやり方を把握していないと読めな

    Perlなんて大嫌いですし、YAPC楽しみです - アルミ缶の上にアルフォート
    hi-rocks
    hi-rocks 2013/09/20
    大丈夫!全然アグラかいてないし閉じてないしきっと今日それを実感できるでしょう。君のようになんだかんだブツクサ言いながらも愛着湧いてしまった人の集まりがPerlコミュニティだから。
  • PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream (legacy)

    あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPerlについて知っていることを書いた。 パッケージマネージャ まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。Perlの場合は cpanm というCPANクライアントでライブラリをインストールする。バージョンの固定とライブラリパスの設定は carton で行う。 https://github.com/miyagawa/cpanminus https://github.com/miyagawa/carton アプリケーションサーバ Webサーバへのインターフェイスとしては、PSGIという仕様がある。PSGIに準拠したツールキットとしてPlack

    PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream (legacy)
  • DBI-tip: Private State Variables : D-7 <altijd in beweging>

    主に自分用メモ。例えば以下のようなコードからDBIハンドルを取得してるとする use strict; use DBI; sub get_dbh { DBI->connect_cached(....); } sub foo { my $dbh = get_dbh(); $dbh->do(...); } sub bar { my $dbh = get_dbh(); $dbh->do(...); } foo(); bar(); .... で、まぁSET NAMES utf8を自動的に発行したいなーと思ったので、get_dbhに手を入れる sub get_dbh { my $dbh = DBI->connect_cached(...); $dbh->do("SET NAMES 'utf8'"); return $dbh; } そうするとget_dbh()内で DBIハンドル自体はconnect_c

    DBI-tip: Private State Variables : D-7 <altijd in beweging>
    hi-rocks
    hi-rocks 2013/08/27
    ハマった。そして助かった。
  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

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

    hi-rocks
    hi-rocks 2013/08/06
    ていねい
  • YappoLogs: Perl徹底攻略という本を作った話

    Perl徹底攻略というを作った話 来週火曜日に、ここ最近もっともイケてる Perlが出ることになりました。 ちなみに僕もなんか書いてるけど、役に立つことは書いてません。 基的には Web+DB PRESS で連載されている記事が集まっていますが、ちょさんの部分は Perl 5.18 までの話題を取り扱ったり、yusukebeのところなんかは TwitterAPI がもろもろ変わっちゃったので、ほぼ全部書き直しで YouTube API の話になってたりとか、既存の連載を読んでる人にも新しい情報ありますね。 載っている記事としても連載だけではなくて弾さんのアルファギークに逢いたいから Perl Hacker が出ている記事を中心に再収録してあるところもポイントです。 あとは今回のために naoya さんが新規に原稿書いてくれた事も目玉ですね。内容としては「Perlプログラミン

    hi-rocks
    hi-rocks 2013/07/18
    最近の情報とか断片的にしか追えてないおれのような人にも最適な本のようなのでこれは買いましょう。
  • 【書籍情報】Perl徹底攻略 (WEB+DB PRESS plus)、7月23日発売です | LINE HR BLOG

    弊社の開発3センターに所属しているエンジニア達が著者として参加している書籍が出版されます。 タイトル:Perl徹底攻略 (WEB+DB PRESS plus) 出版社:技術評論社 発売日:2013/7/23 Perl徹底攻略 (WEB+DB PRESS plus) [大型] <概要> WEB+DB PRESS plus徹底攻略シリーズでは、Webアプリケーション開発のためのプログラミング技術情報誌『WEB+DB PRESS』の掲載記事をテーマ別に厳選し、再編集してお届けします。 『Perl徹底攻略』では、誌で人気のリレー連載「Perl Hackers Hub」の過去記事を中心に、Perlの基礎からモダンなPerl開発までを名だたるPerlハッカー達が解説していくほか、小飼弾さんによるインタビュー記事や、伊藤直也さん、大沢和宏(Yappo)さんによる書き下ろしなど、内容満載でお届けします

    【書籍情報】Perl徹底攻略 (WEB+DB PRESS plus)、7月23日発売です | LINE HR BLOG
    hi-rocks
    hi-rocks 2013/07/18
    「ぜひこの書籍を手にエントリーしてください!」
  • Docopt.pm - Command-line interface description language in Perl5 - tokuhirom's blog

    https://metacpan.org/module/Docopt I released Docopt.pm to CPAN! Docopt.pm is perl port of [docopt]. docopt helps you: define interface for your command-line app, andautomatically generate parser for it.Docopt.pm analyze SYNOPSIS section in your CLI tool's pod! When you write SYNOPSIS to describe CLI tools usage, then you got a working code. docopt is based on conventions that are used for decades

  • PSGI/Plackアプリケーションの起動方法いろいろと本番環境アレコレ - blog.nomadscafe.jp

    PSGI/Plack/PSGIアプリケーションを動かす時に一番使われているのは plackup でしょう。 $ cat app.psgi use Plack::Builder; use MyApp; my $app = MyApp->psgi_app; builder { enable 'ServerStatus::Lite', => ..; $app; }; $ plackup -E production -s Starlet --max-workers 30 --port 5000 -a app.psgi plackup コマンドの -s にハンドラ名を指定して起動します。番環境では -E や $ENV{PLACK_ENV} を指定してStackTraceやLintといった開発に便利なPlack::Middlewareが追加されないようにする必要がありますね。 Starmanの場合は

    hi-rocks
    hi-rocks 2013/06/07
    はー
  • Reply is awesome! - tokuhirom's blog

    https://metacpan.org/release/Reply Reply is new REPL command written by doy++! It's pretty lightweight! I switched to this repl yesterday!

    hi-rocks
    hi-rocks 2013/06/07
    ほー
  • Tengのco-maintainer変更のお知らせ - blog.nekokak.org

    背景としては、私自身がTengのメンテナスに時間を割くことができず、利用者からの要望に答えることが難しくなってしまった為です。 せっかくpull-requestを送ってもらっても気づくこともできず長期間放置してしまったり、 仕様に関する議論もしっかりできず、これでは死んだプロジェクトとなってしまうと思いました。 後任としては現在Tengを実際に利用しており、意欲的にpull-requestを送ってくれているcho45さんにお願いすることとなりました。 cho45さんであれば安心して後をお任せできると確信しております。 cho45体制のTengをこれからも応援よろしくお願い致します。 :D

  • YAPC::Asia 2013 ゲストスピーカーの4名が決定! | YAPC::Asia Tokyo 2013

    YAPC::Asia Tokyo 2013 Sep. 19, 20, 21 at Keio Univ. Hiyoshi Campus こんにちは、櫛井です。 例年は開催告知時点で決まっていたメインのゲストスピーカーですが 今年はちょっと遅れまして、公式サイトにも先ほど追記しましたが 決定いたしましたのでお知らせいたします。 Matt S. Trout Moose, Moo, Catalyst, fatpacker等様々なツール・ライブラリを世に送り出しているMSTこと Matt Trout氏が満を持して初来日! Paul J Fenwick Paul Fenwick氏はPerl Training Autralia のマネージャーとして活躍されている傍ら、 autodie.pmの作者、White Camel Awardの受賞者、そしてPerl Best Practicesのテクニカル エディ

    hi-rocks
    hi-rocks 2013/04/16
    CTO!! CTO!!
  • Starlet の次期バージョンは少し速くなる - Hateburo: kazeburo hatenablog

    3/8に開発バージョンの0.17_1が出ましたが、このバージョンはひとつ前の0.16に比べて少し高速になっています。 local $SIG{...} = sub {}が使われていた部分を最適化してリクエストの前後でsystem callを減らしました。straceでみると before 23:02:27.213488 accept(4, {sa_family=AF_INET, sin_port=htons(32851), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5 23:02:28.500636 ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff0140fd80) = -1 EINVAL (Invalid argument) 23:02:28.500710 lseek(5, 0, SEEK_CUR) =

    Starlet の次期バージョンは少し速くなる - Hateburo: kazeburo hatenablog
  • 2013年 のPerl5 の OOP について考える - tokuhirom's blog

    Moo今年の命? 新しくつくるならこれが無難な気がします。速度的にも Mouse とあまりかわらない。 若干依存がおおい気もするけど、インストールベースがふえれば気にならなくなるかな、ともおもいます。 Class::XSAccessor とかつかってるんで、速度的にもホットスポットは速いのがよい。 なお発音はムーだとおもう。 (http://www.forvo.com/word/moo/) Mouse完成している感じがする。得にわるい点もないが、あえていうと xs 部分がおおいので、gfx 以外がメンテできないかんじがするのが欠点か。 Xslate をつかっている場合は自動的に xslate が mouse つかってるので、自然と Mouse がロードされるので、そういった意味では Mouse つかってもいいかなとおもっている。

    hi-rocks
    hi-rocks 2013/01/15
    Mooは「もー」か「むー」か問題
  • Perlで補完のきくインタラクティブシェル - Cside::Weblog

    2012-11-13 Perlで補完のきくインタラクティブシェル perl すなわちRubyでいうpry相当のもの。Perlのインタラクティブシェルは たくさんある のだけれど、自分は Devel::REPL を使っているのでそれを推したい。 Devel::REPL Devel::REPL の何がいいかというと モジュール名やメソッド名の補完がきく もうこれに尽きる。デフォルトでは補完が若干貧弱なので、 ~/.repl/repl.rc を こんな感じ にすればとりあえず快適に使えます。 Examples モジュール名補完メソッド名補完coderefもよしなにdump Devel::REPL を拡張したいとき Devel::REPL::Plugin::* もっと軽いのでいいやって気分のとき Eval::WithLexicals の tinyrepl が軽いのでそっち使ってます。 Cside

    hi-rocks
    hi-rocks 2012/11/14
    この手の最初に知ったのがShell::Perlだったから後から他にも試したけど結局それに落ち着いちゃってるな。補完効くのはよさげだから試してみてもいいのかも。
  • Q4M + Parallel::Prefork + Signal handling + Log::Minimal - tokuhirom's blog

    conditions precedent: use daemontools & multilogPoints: make DB connection after forkdo not trap SIGTERM while calling queue_wait(), so that the process can be shut down while waiting for the response from q4mremove $time and add $PID for log. Because I'm using multilog. It prints the tai64n automatically(and, tai64n is better).package OreOre::Worker::Base; use strict; use warnings; use parent qw/

  • にひりずむ::しんぷる - DBI で実際に発行されるクエリーを取得する DBIx::QueryLog を書いた

    季節が変わって、早速風邪をひいています。 さて、もう秋を通り越して冬の様相を呈してきた昨今ではありますが、DBI では、普通はプレースホルダを使い my $stmt = 'SELECT * FROM user WHERE user_id = ?'; my @bind = ($user_id); $dbh->do($stmt, undef, @bind); とか書くと思います。 このときに、実際にバインドされた後の SQL をみたいなーって衝動に駆られると思いますが*1、どう頑張ってドキュメントを読んでもわかりませんね。 こういうときは仕方ないので、$stmt と @bind を両方ログに出してお茶を濁していました。 $self->log->_dump($stmt, @bind); # => SELECT * FROM user WHERE user_id = ?, [1234] でもこれっ

  • Kazuho@Cybozu Labs: String::Filter っていうモジュール書いた - 続: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について

    先のエントリ「(Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について」の続き。 弾さんが「404 Blog Not Found:DHTML - 構造化テキストは構造化するのがやっぱ正しい」で示されているような DOM ベースの操作を行えば、原理的に XSS 脆弱性を防ぐことができます。ただ、クライアントサイド JavaScript によるレンダリングはウェブの構造を破壊するという点で筋が悪い(テーブルと FONT タグを利用したページレイアウトが批判されていた頃を覚えていらっしゃいますでしょうか。JavaScript によるレンダリングはウェブのリンク構造も破壊するので一層たちが悪いというのが自分の考え)ですし、サーバサイドでの DOM 操作は重たいので、できれば避けたいところです。 構造化テキストの HTML への変換は、よほど複雑な記法でない限り

  • プログラミング言語"Perl"の商標登録について - JPA 運営ブログ

    一部の方はすでにご存じの通り、先日 "RUBY"や"OPENSOURCE"などの商標登録が出されていた他、"Perl"および"パール"の商標登録がプログラミング言語Perlの開発およびコミュニティと全く関係のない法人(テラ・インターナショナル)により出願され、受理されてしまっていることが発覚いたしました。 Japan Perl Association (JPA) としては件に関して法的な対応をするかどうかを含め検討中ですが、取り急ぎ現実的にプログラミング言語「Perl」を日常的に使用されている皆様に向けて現在の状況とそれに対してどのように対応するべきかJPAとして調査した結果をお知らせいたします。 まず プログラミング言語「Perl」を自社製品、サービスに対して使用することについてはなんの問題もございませんし、それを使って作られた製品を使用・開発することに対して使用料等が発生することはあ

    プログラミング言語"Perl"の商標登録について - JPA 運営ブログ
  • おさかなラボ - Coroでより賢い非同期クローラを作る

    前回のエントリでは簡単なクローラの作り方を説明した。しかしこのクローラには欠点があり、取得したいURLが何千何万とある場合、一度にhttp_getが走ってしまい、リソースを使い切ったり同じサーバーへのアクセスを待つ間にタイムアウトしたりと都合が悪かった。そこで今回はAnyEventに加えCoroを使うことにより、並列を使ってリソースへの同時アクセス制限を行うクローラの書き方を解説する。 これは前回のエントリの改良版になるので、初めてこれを読む方は当該エントリを先に読んで頂きたい。 まず、前回はAnyEventを使い、condvarとsend-recvを使ってイベントの監視をしていたが、Coroと同時に使う場合これでは都合が悪い。イベントループを回す場合、一般的にAnyEventはrecvを、Coroはjoinを使うが、これらはどちらもイベントループが終わるまでブロックするのでどちらかし

  • おさかなラボ - Coroの並列をあっさり理解するための3つのサンプルスクリプト

    Coroが非同期にルーチンを扱う(コルーチンを扱う)モジュールだということはご存知だと思うが、いまいちピンと来ていない人も多いのではないだろうか。これは、1つにCoroやCoro::Introの例題が悪すぎると思う。例えば、Coro::Introのサンプルスクリプトはこうだ。 use Coro; async { print "async 1\n"; cede; print "async 2\n"; }; print "main 1\n"; cede; print "main 2\n"; cede; このスクリプトは確かに面白い挙動をするが、スレッドを実現してるんだよと言われるとちょっと「?」である。こんなのgoto文でできるじゃんみたいな。そしていきなりセマフォやチャネルの話に飛んでしまい、肝心の「Coroはスレッドが実現できるんだよ」というところが分かりにくい。そこ