「YAPC(Yet AnotherPerl Conference)」は、Perlを軸としたITに関わるすべての人のためのカンファレンスです。ここで面白法人カヤックのmacopy氏が「デプロイ今昔物語 〜CGIからサーバーレスまで〜」をテーマに登壇。続いて、mod_perl、FastCGI、PSGIについて話します。前回はこちらから。 mod_perlの手法macopy氏:というわけで、mod_perlの話をします。mod_perlは「Apacheの中にPerlのインタプリタを組み込んでしまいましょう」という発想(のこと)ですね。 Apacheの中にもMPMという、どういうふうにプロセスを立ち上げておくか、リクエスト・レスポンスを処理するかを決めるモジュールがあります。それによってプロセスやマルチスレッドを処理したりするんですが、そのワーカーの中にmod_perlがロードされて、その中にP
Google App EngineでPerlが利用可能になったようです。 Your favorite languages, now onGoogle App Engine Your favorite languages, libraries and tools (中略) Want to runPerl? Love Elixir? Need to migrate your Parse app? You can do all this and more in App Engine. (太字訳) あなたの好きな言語、ライブラリ、ツールをGoogle App Engineで動かせます。Perlを動かしたいですか? これらすべてをApp Engineで動かすことができます。 興味のある人は、どんなものか一度チャレンジしてみよう!
仕事のコードで,子クラスがたくさんいる難しいクラスがいて,継承関係を整理したいけど,どこがどうなってるのか一見すると分からなかったので,静的解析してクラス図をレンダリングするやつを作った.github.com package2plantumlclassdiagramっていうコマンド(長い)に,このファイルたちをレンダリングしてくれ,って渡して,PlantUML形式のファイルを作る PlantUMLでPNGとかに変換 という手順で使う. % package2plantumlclassdiagram ~/Plack/lib/**/**.pm > plack.plantuml % GRAPHVIZ_DOT=$(which dot) plantuml -charsetUTF-8 -tpng plack.plantuml Plackのソースコード全体をレンダリングするとこんなかんじで,継承してる
この10年間で、3つのメジャーなプログラミング言語が、それぞれPerl 6、Python 3、PHP 6へと大幅なバージョンアップに乗り出しました。ところが、Unicodeのサポート問題などの表面的な類似点があるにも関わらず、根本的に異なった展開を見せています。 今年Perl 6.0.0が公式にリリースされるのに伴い、いま一度振り返って、リリース後の展開について考えてみるのに、今はちょうどいいタイミングでしょう。 これを書いていることが自分でも信じられないのですが、PHPから学ぶべきことがあるかどうか見ていきましょう。ZendTechnologiesのCEOであるAndi Gutmans氏は2008年2月の インタビュー でこう答えています。 我々はPHP 6に対し長いサイクルでのロールアウトを予想している。Perlプロジェクトに対しては、プロジェクトのコントリビューターがいまだPerl
今、perlがあつい!よって require について知るしかない! "普通" のrequire require(もしくはuse)関数は Module をロードしたいときに使う。 例えば、 require Foo::Bar; # もしくは use Foo::Bar とすると、perlは@INCに入っているディレクトリ以下のFoo/Bar.pmファイルを探しload(eval)しようとする。 すなわち仮に@INCが @INC = ("/path/to/dir1", "/path/to/dir2", "/path/to/dir3") ならば、perlは 候補1: /path/to/dir1/Foo/Bar.pm 候補2: /path/to/dir2/Foo/Bar.pm 候補3: /path/to/dir3/Foo/Bar.pm の順に Foo/Bar.pm を探し、見つかった時点でそれをlo
Perl › バージョン情報 › here 2015年6月1日に、最新バージョンのPerl 5.22がリリースされました。Perl 5.22 リリース 今回のリリースでは、活発な機能追加が行われています。 パフォーマンスの改善Perl 5.22の一番うれしな点は、性能改善です。マルチデリファレンスの構文解析とメソッドの構文解析の改善によって、パフォーマンスがアップしています。 複数階層のデリファレンスの性能改善Perlの内部パーサーは、複数階層のデリファレンスを効率的に解析できるようになりました。このために、複数階層のデリファレンスのパフォーマンスが上昇しています。 $scores->[0]{math}; メソッド呼び出しとSUPER擬似クラスの性能改善 メソッド呼び出しと、SUPER擬似クラスは、事前に解析され、その情報がキャッシュされるようになっています。そのため、実行時の、メソ
一見Emailアドレスにマッチする正規表現を組み立てるのは簡単そうに思えますが、RFC 5322に厳密に準拠した正規表現を創りだそうとするととんでも無い努力が必要となるようです。 「Email Address Regular Expression That 99.9% Works」は、様々なプログラミング言語ごとに、Emailアドレスに99%マッチする正規表現を掲載したサイトで、例えばPerl 5.10より前のバージョンのPerl用として、掲載されている長大な正規表現を見れば、その難易度の高さを確認することができます。 正規表現にはなんの解説もなくどのような意図をもって作られたのか説明はありません(よって99%マッチするかどうかは本当のところは不明)。ちなみに日本語で読める貴重な情報「Perlメモ」では、「perl5.6.0以前のperl ではメールアドレスの正規表現を正確に記述すること
あるディレクトリにファイルが置かれたら何かしたい、 みたいにディレクトリを監視して処理を行いたい場合、Linux::Inotify2 が便利ですね。 もちろん、inotify が利用できる環境でしか使えませんが。 下は、ホームディレクトリの”backup”ディレクトリにファイルを置くと"backup_server"にそのファイルをscpします。 watch_and_scp.pl #!/usr/bin/perl use strict; use warnings; useLinux::Inotify2; my $watch_dir = $ENV{HOME} . '/backup'; my $inotify =Linux::Inotify2->new or die $!; $inotify->watch( $watch_dir, IN_CLOSE_WRITE | IN_MOVED_TO, s
Perl Advent Calendar 2014の枠が空いていたので、ただのメモですが10日目の記事として晒すことに。 今さらかなり基本的なことだけど、Perlでのベンチマークの実行方法を調べて、適当にいろいろ試してみたメモ。 Benchmarkモジュール 基本的にはperldocを見れば良い。 ゆとりなのでPerldoc.jpにて。 いろいろ関数があるけども、よく使いそうな雰囲気なのは次の2つな気がした。 timethis : 特定のコードの実行速度を測る cmpthese : 複数のコードの実行速度を測りつつ比較する timethis DateTimeは遅いって言われているけど、実際にどれくらい遅いのか試しに測ってみる。 現在の時間を取得して1日足すという処理を例に。 timethisの1つ目の引数は、2つ目の引数の処理を実行する回数を示している。 第2引数には、CodeRefかev
2014/9/3に行われた YAPC::Asia Tokyo 2014 Reject con で発表したトークのスライドです。Read less
Scala InPerl Company :Hatena - YAPC::Asia Tokyo 2014Scala inPerl Company という内容で発表しました。はてなではPerlを10年近く利用していますが、最近作っているMackerelというサービスの開発ではScalaを利用しています。この発表では、Perlによるソフトウェア進化の困難さと、Scalaでその課題がどのように解決できるかについて解説しました。 発表時間がたりず、ScalaでのWebアプリケーション開発についてはくわしく紹介できなかったのですが、資料にはその部分も含めています。雰囲気でもつたわればうれしいです。話しきれないところがいろいろあったので、まだ会場にいる方はぜひ声をかけてください!
2014-08-26 職業としてのPerlを書き続けることの難しさとPerl教育革命 もうすぐ、世界最大のPerlの祭典・YAPC::Asiaですね。 私も2日間、慶應義塾日吉キャンパスまで遊びに行きます。 ただ、最近やはり正直Perlに関して思うところはあるんですよね〜。職業としてのPerlを選択できる道は年々狭くなっているなと。それこそ針の穴をラクダが通るよりも難しい。 以前、「ついに顕在化し始めたPerlリスク」なんて増田の投稿が出たりして、詳しい人から手斧が投げられたりしましたが、やはり年々Perlを採用する企業は増えていないし、YAPCのスポンサーを見ていても毎回ほぼ同じ企業が並びますよね。スピーカーも人気を集める人は固定化されてて、(Perlだけじゃない話をする場とはいえ)インフラ系の話題の比重も大きくなっています。 私は1999年にPerlの魅力に触れてから、ずっとPerlを
Perl の正規表現の「名前付き捕捉」がとても便利 2014-08-07-1 [Programming]Perlの正規表現で「名前付き捕捉」を使うと、マッチした部分に名前をつけておけるのであとから参照するときに便利。 「(?<name>...)」でマッチさせると、ハッシュ「%+」に保存されて、「$+{name}」でアクセスできるのです。同じ正規表現内では「\g{name}」など。 サンプルプログラムです。日付表現にマッチしたら、年、月、日をそれぞれ別途格納。そしてそれを正規化して出力。 サンプルプログラム: #!/usr/bin/envperl use strict; use warnings; while (<DATA>) { chomp; if (m{ (?<Y>[0-9]{4})\s?年\s? (?<m>[01]?[0-9])\s?月\s? (?<d>[0-3]?[0-9])\s
This story describes the development of the Apache::LogFormat::Compiler (ALFC) module by an operations engineer to optimizelogging performance in a web application. The originalPM::AccessLog module was identified as a performance bottleneck byprofiling tools. Several optimizations were tried, including thePM::AxsLog middleware, butit only supported fixedlog formats. The operations engineer t
Songmuです。Perlは5.10以降多くの機能が追加されていますが、巷のCPANモジュールの多くは5.8と互換性を保って書かれていることもあり、普段その機能を目にしない人も多いでしょう。僕自身のCPANモジュールも多くは5.8.1以降対応ですが、最近手元で動かすようなものに関しては5.10.1対応にすることも増えてきましたがそれでも、5.10.1止まりです。 実際のプロジェクトにおいては5.10以降の機能も使えるものは積極的に使っているのでその辺りの話。 say: 改行付きprint (5.10) printしてその後に改行を入れてくれる関数です。地味に便利です。 use 5.010; say 'Hello'; # Hello ワンライナーでも -E スイッチで使えるようになるので近年は-eを使わずに専ら-Eです。 %perl -E 'say "Hello"' Hello //:
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPerlについて知っていることを書いた。 パッケージマネージャ まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。Perlの場合は cpanm というCPANクライアントでライブラリをインストールする。バージョンの固定とライブラリパスの設定は carton で行う。 https://github.com/miyagawa/cpanminus https://github.com/miyagawa/carton アプリケーションサーバ Webサーバへのインターフェイスとしては、PSGIという仕様がある。PSGIに準拠したツールキットとしてPlack
精神の時の部屋でお馴染みのはてなインターン(8/12 - 9/6)に、Perlの書けない情弱女子大生が参加してきました。 photo by Norio.NAKAYAMAはてなインターンのいいところ *Webアプリ開発をひと通り体験できる 詳しくは インターン前半まとめに書きますが、はてなインターンでは設計からサーバーサイド/クライアントサイドの実装までを2週間で体験することができます。 毎日午前中に講義を受け、午後にはその話題に関連する課題が出されます。 わからないこともたくさんありますが、 スーパーエンジニアさんが学生2人に対して1人メンターとして常についてくれるという最高に贅沢な環境でプログラミングをすることができます。 楽しすぎて定時には帰れませんでした。 *エンジニアになりたい学生にとって最高の環境エンジニアになりたい学生にとって最高の環境とはなんでしょうか。 6万円以上す
ざっくりいうと: 他の人にかわりにアップロードしてもらう時は x_authority を設定するとよい CPAN では、共同メンテナ(co-maintainer)を任命するなど、権限まわりでいろいろなことができます。 しかし、この共同メンテナ機能は、基本的にパッケージ単位で管理されていることに注意する必要があります。 得に注意が必要なのは、パッケージの追加時です。新しいパッケージが PAUSE に登録されると、そのパッケージをふくむ dist をアップロードした人が権限をもつことに なってしまいます。 たとえば Teng を例にとると、Teng の primary maintainer は nekokak さんですが、現在は cho45 さんが主にメンテナンスをおこなっています。 ある時、cho45 さんが Teng::Plugin::BeautifulQuery というパッケージを Te
Python使いとしては「なぜ国内でPerlが急速に萎んだのか」について一言ツッコみたいところがあります。 >遂にPerlにとどめを刺したのはPythonである。守備範囲は当然ながらPerlと駄々被りで えっ、PerlとPythonの守備範囲がだだかぶりって、著者の観測しているそれぞれの言語の「守備範囲」ってどんだけ狭いんでしょう? まあそんな重箱の隅をつつくのはやめておきましょう。このエントリーには結論の文章(の一部)はとても素晴らしいです。 >10年でここまで時代は変わる。今のメインテクノロジーも明日は我が身だ。 >変化の速い時代に生きる我々に必要なのは本質を学ぶ事だ。 >もっと10年20年たっても色あせない情報工学を身につけなければならない。 そう、そこで拙著「コーディングを支える技術」のような本が必要になるわけです!(宣伝) ちなみに僕自身は仕事でも趣味でもPerlは使っていません
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く