タグ

perlに関するfukumuraのブックマーク (54)

  • 『PHPとかいう糞言語』

    数々の糞仕様の発見で驚きを提供してくれる人気プログラム言語PHP 今日また新たな糞仕様を知ったよ 今回使ったPHPのバージョン $ php --version PHP 5.3.6-13ubuntu3.3 with Suhosin-Patch (cli) (built: Dec 13 2011 18:18:37) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies <?php $array = array(1,2,3); $ref = &$array[1]; $copy = $array; $copy[0] = 'a'; $copy[1] = 'b'; $copy[2] = 'c'; foreach( $array as $v ) { print

    『PHPとかいう糞言語』
    fukumura
    fukumura 2013/03/08
    ”ゆるく使いたいときはC#、Ruby、Perl” Perlが入っててちょっとほっとした。
  • Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ

    Perlでコマンドラインオプションをparseしようと思うと組込みモジュールとしては Getopt::Std と Getopt::Long がある。が、long style option *1 つまり --option-name のようなオプションを解釈してくれるのは Getopt::Long だけだ。なので普通はこちらを使おう。 ただし 絶対にデフォルト、つまり以下のようにして使ってはいけない。 use Getopt::Long; my (@primary, @secondary, $silent); GetOptions( "server-primary|p=s" => \@primary, "server-secondary|s=s" => \@secondary, "silent|S" => \$silent ); これダメ! 絶対ダメ! 死ぬ! 最初に結論を書く 必ず以下のように

    Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ
  • Perl Download - www.perl.org

    Perl runs on over 100 platforms! We recommend that you always run the latest stable version, currently 5.40.0. If you're running a version older than 5.8.3, you may find that the latest version of CPAN modules will not work.

    fukumura
    fukumura 2012/09/11
    get !
  • 最近のPerl WAFをベンチマークした - Perl日記

    試したのは以下。 Catalyst -- 元祖WAF Mojolicious -- 軽量WAF Dancer -- 軽量WAF Amon2 -- シンプルWAF Amon2::Lite Amon2(Flavor::Minimum) Kossy -- ISUCONのWAF Web Application Frameworkなので、HTMLの出力を測定。 またテンプレートエンジンにはText::Xslate(1.5007)、PSGIでWebサーバにはStarmanを使用した。 起動してから1回はアクセスしてテンプレートキャッシュは作った状態にした。 $ ./ab -n 1000 -c 50 http://127.0.0.1:5000/ 結果 WAF VERSION Requests per second[#/sec] (mean) Amon2Minimum (3.32(Amon2)) 1228

    最近のPerl WAFをベンチマークした - Perl日記
  • mysql の binlog api を利用するための Perl Binding を作りました - tokuhirom's blog

    mysql の binlog api をあつかうためのライブラリである libreplication というものがあるのですが、これの perl binding を開発しました。 https://github.com/tokuhirom/MySQL-BinLog とりあえず、examples/basic-2.cpp でやっていることができるところまでつくっておきました。 バイナリログの内容を streaming で処理できるのがおもしろいです。 以下のような用途での応用が考えられるようです。夢がひろがりんぐですね。 libreplication のセットアップ方法については riywo さんの記事をごらんください。 http://blog.riywo.com/2012/07/08/133005 はまりポイントは、streaming 開始時に ROTATE_EVENT が発生して、最新のログ

  • Data::Validator::Managerなるものを書いてみた。 - 時計を壊せ

    メソッドや関数の引数をバリデーションするときにData::Validatorを使わせて貰っているのですが、 低レベルAPIと高レベルAPIで同じバリデーションルールを適用したい事があって、 そういうときに複数箇所にコピペして使ったりしていると、 低レベルAPIのインターフェースを変えたくなったときにそれに依存している高レベルAPIのバリデーションルールも変える必要があってだるかったり、 そもそもクローンとも言えるオブジェクトが複数ヶ所で静的変数に保持されているのは無駄なのではないか。 あと、そもそも5.10未満では静的変数は使えないので5.8しか使えない環境とかで使いたくなったとき困るのではないか*1とか、そんな事を思ったので、 そんな問題を解消するモジュールを書いてみました。 PrePAN: http://prepan.org/module/429En4oFcf Github: http

    Data::Validator::Managerなるものを書いてみた。 - 時計を壊せ
  • Perl Ocean

    Overview Oceanは、XMPPプロトコルを中心とする、リアルタイムコミュニケーションフレームワークスイートです(XMPPプロトコルについては プロトコルガイドで解説します)。つまり、リアルタイムコミュニケーションサービスを実現するためのフレームワークの集合で、次のような機能の提供を実現することを目指しています。 一対一のインスタントメッセンジャー プレゼンスサービス グループチャット オーディオチャット、ビデオチャット イベントのプッシュ通知 また、他のJabber/XMPPライブラリやフレームワークと比べたときの特徴として、次のようなものを目指しています。 Webサービスとのインテグレーションを前提とした設計 クラスターサポート デファクトスタンダードな拡張を一通り標準サポートしたフルスタックフレームワーク WebSocketなどを利用したHTTP Bindingの独自サポート

  • groonga(単体サーバ)で大量データロード - WebService::Blog-&gt;new( user =&gt; ’hide_o_55’ )

    groonga(単体サーバ)で大量のデータをロードする場合はファイルにloadコマンド+データを書いて、標準入力にリダイレクトしましょう。 データはJSON形式なのでこんな感じで適当に作れます。 use strict; use warnings; use utf8; use JSON qw(encode_json); my @load_data; my $table_name = "Foo"; #do something my $json_data = encode_json(\@load_data); print <<"__EOS__"; load --table $table_name $json_data __EOS__ あとは、以下の様にすればデータをロードできます。 スタンドアローンモード groonga /path/to/db < /path/to/data クライアントモード

    groonga(単体サーバ)で大量データロード - WebService::Blog-&gt;new( user =&gt; ’hide_o_55’ )
  • warn() で吐かれるログを捕まえて投げる - 酒日記 はてな支店

    Perl では $SIG{__WARN__} という疑似シグナルハンドラを使って、warn() で出力されようとする内容をトラップして処理することができます。 package MyWorker; my $logger = Fluent::Logger->new; sub work { my $job = shift; local $SIG{__WARN__} = sub { my $msg = shift; # warn() で出力される文字列が渡ってくるので logger で送る $logger->post( "job" => { jobid => $job->jobid, # jobid で検索できるように message => $msg, }, ); }; # job の処理 # warn("Error!") } 最初からログを何らかのオブジェクトに渡す仕組みを入れて作っていればよか

    warn() で吐かれるログを捕まえて投げる - 酒日記 はてな支店
  • perlbrew+Carton+Amon2+Test::mysqldみたいな - As a Futurist...

    モダンな感じで perl でウェブアプリ作りたいなーと思ってほげほげしてます。メモ書き。 最近の流行りでは、system perl なんてもう使わないわけで、自分で perl を make して入れるもの。それを簡単に管理できるのがperlbrew。で、アプリ毎に perl を入れてもいいなぁとは思ったんですが、さすがにそこまで仰々しくしたくはない。でも、CPAN モジュールについてはアプリ毎に依存が無いようにしたい(あるアプリが変にバージョンアップしちゃって他が動かないとか嫌)。 どうするのがいいかなーと色々考えたんですが、そういえば miyagawa さんのCartonというのが、依存関係やバージョンも含めて CPAN モジュール管理できるということでこれをアプリ毎に使うのが正統だろうなと思ったので使ってみた。 まずは perlbrew でインストール これは説明の通り。 $ curl

    perlbrew+Carton+Amon2+Test::mysqldみたいな - As a Futurist...
    fukumura
    fukumura 2011/12/28
    参考になります。
  • Perl style guide - nDiki

    パッケージ名のつけ方 パッケージ名は大文字で始まり、大文字小文字を混ぜたものを使用する(小文字のモジュール名は非公式に予約されている)。 perlstyle では一般的な識別子では単語をアンダスコアでつなげる形式を推奨しているがこの場合必然的に長い識別子となる。 パッケージ名は直接ファイル名に関係しているため、ファイルシステム上のファイル名の長さの制約にひっかからないように短い名前になるようアンダスコアを使わない形式にする。 プロジェクトに固有なパッケージ名 プロジェクト名固有のものなど公開する予定のないものは、 Locall:: 以下にするか、Foo_Corp:: のようにトップレベル名前にアンダスコアを使う(The Perl5 Module List より)。 Perl モジュールの作り方

  • Furlでhttpsリクエストがtimeoutになる場合がある件

    FUJI Goro @__gfx__ なぜだろう。環境は?逆にbufsizeが小さいともっと少なくても問題がおきるのかな? / Furlで躓いてる途中 - すぎゃーんメモ http://t.co/UU4TWm4 すぎゃーん💯 @sugyan @__gfx__ あ、自分のMacローカル環境でしか試してないです。外部サイトとかでもbufsize小さくすると起こることがあったんですが うまく再現できず、、

    Furlでhttpsリクエストがtimeoutになる場合がある件
  • Webアプリケーションにおける Job Queue システムの構成例と Worker を作る際に気をつけること - blog.nomadscafe.jp

    Webアプリケーション内で処理を直列に実行せずにJob Queueに回して非同期に実行することが多くなって来て久しいと思いますが、そのおすすめ構成と気をつけることについてつらつらと。 1) 既存のデータベースをキューとして使う構成例 1つ目はMySQLなどのデータベースをキューとして用いる例。既にアプリケーションで利用しているデータベースにキュー用のテーブルを作成して利用します。データベースを利用したキュー管理の仕組みとしてJonk、Qudo、TheSchwartzなどがPerlでは有名どころです。 依存するミドルウェアが増えないので最もシンプルな構成になると思います。 上記の図ではWorkerはアプリケーション内で実行することで冗長性を確保しますが、キューを格納するデータベースはSPOFになります。しかし、、データベースに障害があった場合キューだけでなくすべてのサービスが停止すると思われ

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • にひりずむ::しんぷる

    タイトルですべてを語っていますし、http://blog.livedoor.jp/sonots/archives/32645828.html あたりを読むと良いのですがメモ。 最初にまとめると CORE::print() を使う場合は 4096 or 8192 byte 以下に収めること CORE::syswrite() なら混ざらない 男は度胸。flock(2)する ということです。 これでわかった人は読む必要ありません。 以下蛇足。 perl ではファイルハンドルに書き込むときには何も考えずに CORE::print() を利用しますが、この人はなんかいい感じにバッファリングしたり、長い文字列だったらぶった切ってくれたりしてくれます。 で、普通はバッファリングのことはみんな意識しているので以下のようにヒットアンドアウェイをやったりしますね。close() で自動的に flush される

    fukumura
    fukumura 2011/04/09
    ユースケース としては、Cache::Memcached::Fast とかで set とか get に失敗したときに retry するとかが挙げられます。<便利かも。
  • mixiに入社しました - LAPISLAZULI HILL#diary

    上長に書いてもokといわれたので.最初に聞けよって感じですが というわけで,4/1付けで株式会社ミクシィに入社しました 前職をやめると発言してからいくつかの会社に声を掛けていただいてありがとうございました.その上で不安になって他のいくつかの会社も受けさせてもらって,迷惑を掛けてしまったような気がしますが.いろいろな会社で話を聞けたのは大変参考になりました.時間を割いていただいたことに感謝しています 今回はなにより「Perl仕事をする」というのを最大の目的にしていました.Perlのコミュニティに参加しているのにもかかわらず,いままでPerlをメインの言語として仕事ができないのを歯がゆく思っていました.あとこのタイミングを逃すと(子供の学年的に)移動がきびしいと云うこともありました.ようやく何年か越しの目的が達成できてほっとしています 2006年からKansai.pmに参加させていただいて,

    mixiに入社しました - LAPISLAZULI HILL#diary
  • perlreref - Perl の正規表現のリファレンス

    This is a quick reference to Perl's regular expressions. For full information see perlre and perlop, as well as the "SEE ALSO" section in this document. ドキュメントは、Perl の正規表現のクイックリファレンスです。 完全な情報は、perlre と perlop、また、ドキュメントの "SEE ALSO" セクションを参照してください。 演算子¶

  • Perl programming documentation - perldoc.perl.org

    #Perl 5.40.0 Documentation The perldoc program gives you access to all the documentation that comes with Perl. You can get more documentation, tutorials and community support online at https://www.perl.org/. If you're new to Perl, you should start by running perldoc perlintro, which is a general intro for beginners and provides some background to help you navigate the rest of Perl's extensive docu

  • warnings - Perl pragma to control optional warnings - Perldoc Browser

    fukumura
    fukumura 2011/03/23
    warningsについて勘違いしていたかもしれないので。
  • WWW::GoogleAnalytics::Mobileというモジュールを書いた - blog.nomadscafe.jp

    JavaScriptが使いにくい携帯などの環境でGoogle Anlyticsを利用する場合は、通常このサイトで配布される1x1の画像を吐き出すサーバサイドのビーコンスクリプトを設置し、 Webサイドからリンクを張りますが、このサーバサイドのスクリプトのうちPerlのコードはCGI以外では実行しづらいモノなので、PSGIにアプリケーションにしてCPANにリリースしました。 加えて、タイムアウトの制御が細かくできるようLWPをFurlにし、勝手にビーコンが他人に利用されないようchecksumを追加しています。また、PSGIアプリケーションで利用できるURL生成用のクライアントライブラリもつくりました。 使い方。まずサーバサイド。 use WWW::GoogleAnalytics::Mobile::PSGI; use Plack::Builder; builder { mount "/ga"

    fukumura
    fukumura 2011/03/22
    かっこいい。