タグ

perlに関するyassan0627のブックマーク (186)

  • Plack Handbook: Plack and PSGI Development guide ebook

    Plack Handbook for Developers This little handbook is based on the content of the website Plack Advent Calendar. The calendar had 24 useful short posts explaining the concept of PSGI and tutorials how to adapt Plack to the existing web applications. The calendar was so successful and it's been considered a canonical reference for many beginners trying to learn Plack and also web framework authors

  • Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf

    仕事で書いてる Sledge アプリがあるのですが、先日負荷テストを行った結果びっくりすることに現行アプリの10倍遅いことが判明してしまいました・・・orz Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得ることができました。この内容に関してはまた別エントリにて。 さて、プロファイラを使うとプログラム実行時の各種情報を収集し、性能解析を行うことが可能です。プロファイラについてもう少し詳しくしるには 性能解析 - Wikipedia あたりを読むと良いでしょう。 プロファイラ(英: Profiler)は性能解析ツールであり、プログラム実行時の各種情報を収集する。特に、関数呼び出しの

    yassan0627
    yassan0627 2016/05/26
    プロファイリングの話
  • 「Cartonの内部」について社内勉強会で発表した - $shibayu36->blog;

    Perlのバージョン管理ツールであるCartonの内部について、社内勉強会で発表したので、その時の資料をそのまま公開する。けっこう雑に作ってしまったので、正確性については保証できないけど、Cartonのソースコードリーディングの際の参考になればと思う。 アジェンダ Cartonとは いろいろトラブル carton installの挙動を理解する Cartonとは Perlのモジュール管理ツール 依存モジュールを特定のバージョンに固定して、インストールしてくれる Cartonとは(深堀) 一番重要なのはcarton install 基的にはcpanmのラッパーとしてcarton installが実現 Module::CPANfileなど、小さいモジュールを組み合わせている いろいろトラブルもある cpanfile.snapshotが環境によって変わる carton install --de

    「Cartonの内部」について社内勉強会で発表した - $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 | おそらくはそれさえも平凡な日々
  • Carton 1.0 にアップグレードするときに PERL_CARTON_PATH を設定している人は気をつけようという話 - tokuhirom's blog

    Carton 1.0 では carton exec が cpanfile.snapshot を読むようになっています。 なので、PERL_CARTON_PATH を設定して carton exec していて、current directory に cpanfile がないような場合には Can't locate cpanfile: (cpanfile) というエラーになって乙る場合があります。 このようなケースをさけるために、PERL_CARTON_PATH を設定している人が 1.0 にあげるときには PERL_CARTON_CPANFILE を設定しておいた方が無難です。 なお、PERL_CARTON_PATH は local/ の位置をあらわし、PERL_CARTON_CPANFILE は、cpanfile の位置をあらわす環境変数となっております。

  • 複雑なデータ構造の中にうまっているデータのパスをさがす方法 - tokuhirom's blog

    Perl5 の場合、Data::DPath をつかえば、 my $data = { foo => { bar => 'candy', }, }; のようなデータから、 say dpath('/foo/bar')->match($hashref); などとして、candy を簡単にとりだすことができます。 しかし、ここで、たとえば以下のように複雑なデータになってしまった場合は、DPath をつくるのがまじめんどいかんじになります。 my $data = { foo => { bar => 'candy', boz => 3, iyan => { bakan => 7, yappo => 'candy', dan => [ 'suspender', 'hige', 'candy'] }, }, }; そんな場合、以下のようなコードをささっと書いてcandyをさがしましょう。 #!/usr/bi

  • CPAN における Authority の話 - tokuhirom's blog

    ざっくりいうと: 他の人にかわりにアップロードしてもらう時は x_authority を設定するとよい CPAN では、共同メンテナ(co-maintainer)を任命するなど、権限まわりでいろいろなことができます。 しかし、この共同メンテナ機能は、基的にパッケージ単位で管理されていることに注意する必要があります。 得に注意が必要なのは、パッケージの追加時です。新しいパッケージが PAUSE に登録されると、そのパッケージをふくむ dist をアップロードした人が権限をもつことに なってしまいます。 たとえば Teng を例にとると、Teng の primary maintainer は nekokak さんですが、現在は cho45 さんが主にメンテナンスをおこなっています。 ある時、cho45 さんが Teng::Plugin::BeautifulQuery というパッケージを Te

  • HTTP::Session2 has been released. - blog.64p.org

    English document is available on metacpan! Following document is written for non-english speakers. HTTP::Session2 を作成した。主に Amon2 で使用することを想定しているが、広く一般につかえるものと思う。 特徴 必要なときに必要なだけ Set-Cookie ヘッダを発行する 必要なときだけストレージにアクセスする クライアントサイドストレージとサーバーサイドストレージの両方をサポート XSRF トークンの管理をセッションライブラリ側に内蔵 AngularJS フレンドリー 上記が、重要なことである。 弊社のようなハイトラフィックなサービスを運営している場合には、できるだけリソースをケチりたいので、そういう思想なものが必要となった。通常の用途では Plack::Session

  • Perl5 において chomp() とはなにをするものか - tokuhirom's blog

    えてして、プログラミングにおけるバグの発生源は、使い方をまちがえていることに起因するものも多い。 を電子レンジでかわかす人がいるように。 そもそも chomp() という組み込み関数はなぜ必要なのか。 Perl5 では、データを行単位で処理するということが重視されたインターフェイスになっている。これは一般的なテキスト処理の頻出パターンだからだ。 while (<>) { chomp; say if /foo/; } これは、入力データを行ごとにとりだし、改行をとりのぞき、/foo/ という正規表現にマッチする行だけを表示するというプログラムだ。 Perl5 を知っている人なら、だれもが簡単に理解できる。 ここで $/ という変数が問題となる。$/ は、行の区切りがはいっている特殊なグローバル変数で、awk でいうところの RS にあたるものだ。 この $/ を変更することにより「行」の区

  • Xslate と Mouse と Perl 5.20の話 - tokuhirom's blog

    Perl 5.20 で Mouse とか Xslate がおかしいな! ってことになったら、Mouse のバージョンが古くないかを確認しよう。 Mouse の 1.13 より前のバージョンは Perl 5.20 で実行時エラーになる問題がある。 通常はおきないが、 おきるケースがありえる。 具体的には cpanfile に required 'Mouse', '==1.12'; って書いていたり、cpanfile の中身をとか書いてたりするとか、古いバージョン対象でつくった cpanfile.snapshot を carton install --deployment でいれたりすると、Mouse の古いバージョンがはいってしまう。 この状況におちいったときにわかりづらいエラーになるので、今のうちに Mouse のバージョンをあらかじめアップデートしておいてもよいかもしれない。 たぶんこれ

  • Web Application の validation はどのレイヤーでかけるべきか - tokuhirom's blog

    数年前にも同じことかいた気がするけど、最近の状況にあわせてかいてみる。 途中で面倒になってきて説明が雑になっている点をご容赦ください。 言いたいことは「結局、昔はサーバサイドで懇切丁寧なエラーメッセージを出すためにModelではなくControllerでバリデーションに関する知識が必要だったけど 今はJavaScriptでやるから不要だよね111」ってことです。 この表題は、よく話題にあがるところなのだが、理想論としては Model, Controller, Client side のいずれにおいてもきっちりと validation を行うことがのぞましい。 しかし、実際にはなかなか面倒である。ということで、どこをはぶくかというと Controller における Validation であろう。 ユーザーに対する親切なメッセージは JS の側でだすのが理想的。model の validat

  • なぜ Teng は良いものなのか - tokuhirom's blog

    なぜ Teng は良いものなのか、を YAPC で再考させられたのでここにメモしておく。 Teng は自社開発のウェブアプリケーションを作ってる人たちが作っていて、それがうちのニーズにあってるのでいいっていう話であって、どこでもすごい最高!! と主張したいわけではないです。まあ、個人の感想ですね。 ソースが読みやすい ソースがよくモジュール化されていて、読みやすい。自身で書いている部分が多いという贔屓目を抜きにしても読みやすいんじゃないかなーと。 僕らのような自社開発のウェブ屋では、なにか無茶な要望を受けた時にささっと対応するということが求められるシーンが多いので、ソースの読みやすさというのはかなり重要なファクターとなっています。 複雑な SQL を発行できないように機能が制限されている SQL ビルダーを使って JOIN やサブクエリを駆使したウェブアプリケーションを開発してしまうと、運

  • [perl] epoch 秒っぽいやつを置換する - tokuhirom's blog

    https://metacpan.org/pod/from_unixtime をみてやってみた。 > cat sql_result id 1 created_at 1419702037 updated_at 1419702037 > perl -MTime::Piece -pe 's/\b(1[0-9]{9})\b/"$1(".localtime($1)->strftime("%F %T").")"/ge' < sql_result id 1 created_at 1419702037(2014-12-28 02:40:37) updated_at 1419702037(2014-12-28 02:40:37) 自分の場合だとこんぐらいのワンライナーでいいかな、と。 上記の正規表現は極めて雑だが、以下のように、一般的に求めたい範囲の unix time にはそれなりにマッチする。 > ep

    yassan0627
    yassan0627 2016/05/15
    これは便利!
  • https://github.com/perl-entrance-org/Perl-Entrance-Textbook/blob/master/oop.md

    https://github.com/perl-entrance-org/Perl-Entrance-Textbook/blob/master/oop.md
  • antipop - Perl の学習コストを大幅に軽減するスゴイ方法

    にわかに Perl の学習コストについて優れた Perler のみなさんがあれこれ述べておられるので、大変勉強になります。 Unknown::Programming - 新人教育 SQLAlchemy Database Engines 日記。 (TokuLog) - Perl は学習コストが高すぎる naoyaグループ - naoyaの日記 - Perl の学習コスト SQLAlchemy Database Engines 日記。 (TokuLog) - Perlの学習コストとライブラリ naoyaグループ - naoyaの日記 - アンテナ張りまくらないとの件 subtechグループ - Bulknews::Subtech - Perl、アンテナの話 Charsbar::Note - Perlの学習コスト 上記にリンクしたエントリをまとめると、オールドファッションな書き方であれば Per

  • Perl6入門

    この文書はプログラミング言語Perl6 の全体像を素早くつかんでもらうことを目的として書かれたものです。 まだPerl6を触ったことのない読者の方々が、ここからPerl6をはじめてもらうことを狙いとしています。

  • VimでPerl(に限らないけど)を書くときにこれだけはやってほしい設定

    " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use underbar completion. let g:neocomplcache_enable_underbar_completion = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Use camel

    VimでPerl(に限らないけど)を書くときにこれだけはやってほしい設定
  • vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual

    @tokuhirom です。Perlを書き始めて8年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 僕の秘伝のタレ的な .vimrc の中から perl に関係ある部分だけをぬきだしてお教えしましょう。すべて設定すればだいぶ快適になりそうです。とかかいてると教えるのもったいない気分になってきた。 ぼくの環境 僕は vim の環境として以下のようなものを指定しています。mattn さんからは DIS られがちです。 neosnippet unite.vim pathogen vim-perl プロジェクトの成果物をつかう https://github.com/vim-perl/vim-perl なんか最近、perl-vim から vim-perl にかわ

    vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual
  • Big Sky :: VimmerなPerl開発環境

    えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ

    Big Sky :: VimmerなPerl開発環境
  • 例えば、正規表現を避ける

    Profile id: Songmu (ソンムー) Masayuki Matsuki おそらくはそれさえも平凡な日々 http://www.songmu.jp/riji/ https://metacpan.org/author/SONGMU 趣味はCPANizeでした はてな東京オフィス チーフエンジニア Mackerel ディレクター 最近作ったgoプロダクト https://github.com/Songmu/horenso https://github.com/Songmu/prompter https://github.com/Songmu/goshim https://github.com/Songmu/retry/cmd/retry https://github.com/Songmu/wrapcommander https://github.com/mackerelio/che