タグ

perlとwebappに関するbayashi_netのブックマーク (13)

  • Web アプリケーションのロジックを手続きとして実装する話 - tokuhirom's blog

    yusukebe のObject::Containerを応用したModel呼び出し のあたりをよんでの感想ですが。 一時期 Catalyst の影響もあって、モデルのインスタンスつくったりなんだりもしていたのですが、結局のところウェブアプリケーションにおいては、モデルをがんばってオブジェクトにモデリングしようとか考えるよりも、つまり手続として扱った方がしっくりくるな、ということに自分の中でなりまして、最近は、ごちゃごちゃ考えるのをやめて、手続きとして実装しています。 yusukebe の例をベースにはなしをすすめると、コントローラを以下のようにかきます。 package MyApp::Web::Controller::Root; use Mojo::Base 'Mojolicious::Controller'; use MyApp::M::Entry; sub index { my $se

  • 手元のPODを簡単・綺麗に見るひとつの方法 - Charsbar::Note

    ほかにもやり方はいろいろあるわけですが、カレントディレクトリにCPANモジュール風のディレクトリ構成をもった何かがあるとすると、コマンドラインから > cpanm Mojolicious Pod::Simple (必要なら) > mojo generate lite_app podviewer > perl podviewer daemonとタイプして、http://localhost:3000/perldoc/lib/Hoge のようなURLを見ると、http://mojolicio.us/perldoc 以下で使われているPODビューアを構文ハイライトやらなにやら込みで利用できます。 また、実際には@INCの中をチェックしているので、必要ならpodviewerを起動するときに-Ilibを追加するか、podviewerの中でuse lib "lib";のような行を追加してやると、http

    手元のPODを簡単・綺麗に見るひとつの方法 - Charsbar::Note
  • Config::ENV - 環境変数で config を切替えるためのモジュール - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。cho45 です。みなさん、意識は高まっていますか? 僕は上々です。今回は拙作の Config::ENV というモジュールを紹介させて頂きます。 アプリケーション開発をするとき、開発用・テスト用・番用で、設定を変えたいわけですよね。だいたいのウェブアプリケーションフレームワークでは、環境変数にある値を設定することで、複数の設定を一括で切替えられるような機能を提供していると思います。Config::ENV は、その機能を1つのモジュールとしたものです。 Config モジュールを書く とりあえず簡単な使い方を紹介します。まずは以下のように設定を保持するモジュール (MyApp::Config) を作ります。 package MyApp::Config; use Config::ENV 'PLACK_ENV'; # (1) common +{ # (2) api_key

    Config::ENV - 環境変数で config を切替えるためのモジュール - Articles Advent Calendar 2011 Hacker
  • CoW 要点まとめ

    CoW とは CoW = Copy-On-Write [ CoW - Wikipedia ] プロセスのコピーを作成 (fork) するとき、書き換えることのないメモリページは、両方のプロセス(元のプロセスと生成されたプロセス)で共用し、書き換える可能性のあるメモリページは、新たなメモリページを割り当ててコピーを作成する 鉄則 fork するプロセスを生成する場合、親子間でメモリ共有した方が良い forkする前に確保したメモリ領域は子プロセスとの間で共有される 共有されたメモリ領域に対して書き込みを行うと共有は解除(コピー)される forkした後に確保したメモリ領域は子プロセスごとに確保される(共有されない) どのプロセスでも同じように参照するだけの(書き換えない)データは、fork前に確保して共有した方が全体でのメモリ使用量を小さく保てる。つまり、fork 数を多くしたりできる。そして、

    CoW 要点まとめ
  • Brahman: a supervisor clone in Perl (under development) - D-6 [相変わらず根無し]

    Brahman: a supervisor clone in Perl (under development) 2011年6月13日 15:57 D | ブログ記事のURL | コメント(0) | トラックバック(0) 週末にsupervisorっていうものについて話してる人がいたので、特に理由なくPerlでクローンを書いてみようと思った。というわけで当に基の部分まで書いた。名前はBrahman。神様の名前にしたかったのはプロセスの生死を管理するから。 繰り返すけど、特に理由はない。書きたかったから。ちなみに内部的には多分家と全然互換性はない。設定ファイルがだいたいクローンできればいいや、というくらい。 今のところできることは、例えば今daemontoolsで管理してるplakupサーバーがあったとして、こんな感じの設定を書くと立ち上がってstdout/stderrを一緒のログに保存

  • Webアプリケーションにおける Job Queue システムの構成例と Worker を作る際に気をつけること - blog.nomadscafe.jp

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

  • Mojito-0.25 - Web Document System - metacpan.org

    The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

  • Contextの生成・破棄を任意のタイミングで制御可能にする Scope::Container(仮) - blog.nomadscafe.jp

    追記 CPANリリースしました http://search.cpan.org/dist/Scope-Container/ /追記 mod_perl のアプリケーションでは、Apacheモジュールの提供するpnotesを使うとリクエスト毎のデータを簡単に持つことができます。pnotesに入れたデータはリクエストの処理が終了したところで自動的にクリーンアップされます。これを利用したのがリクエストごとにインスタンスを作成破棄できる、Apache::Singleton(::Request)です。 また、pnotesはデータベースの接続の管理にもしばしば使われます。1リクエストを裁いている間だけデータベースとの接続を維持し、リクエストが完了したところで接続を閉じるような処理に利用されています。このようにすることでmod_perlのプロセス数分(数百)の接続がMySQLに常に張られることもなく、また1

  • GitHub - kazeburo/NoNoPaste: yet another nopaste

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - kazeburo/NoNoPaste: yet another nopaste
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Log::Dispatch::Email は即座にメールが配信されない件

    今面倒を見ているアプリケーションのログ管理として Log::Dispatch 系を採用しました。 SQL などのトレースログは Log::Dispatch::FileRotate を使ってファイルに書き出しています。エラーログは同じく Log::Dispatch::FileRotate を使ってファイルに書き出すとともに、Log::Dispatch::Email を使ってメール通知をする仕組みで実装しました。 すでにこのアプリケーションは稼働させてから半年ほど経つわけですが、どうにもエラーメールの配信が遅れたり遅れなかったりと不思議な挙動をしていました。幸いにも致命的なエラーは1つもなく今に至っているので、大事には至っていないのですが、長い間メールの遅延の原因がわからず悩んできました。 最初はメールサーバが遅延しているかと考えていたので、メールサーバ側を解析していたのですが、どうにも原因わ

  • GitHub - miyagawa/psgi-specs: Moved to https://github.com/plack/psgi-specs

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - miyagawa/psgi-specs: Moved to https://github.com/plack/psgi-specs
  • GitHub - yappo/website-hatetter

    This is Perl module Hatetter. INSTALLATION Hatetter installation is straightforward. If your CPAN shell is set up, you should just be able to do % cpan Hatetter Download it, unpack it, then build it as per the usual: % perl Makefile.PL % make && make test Then install it: % make install DOCUMENTATION Hatetter documentation is available as in POD. So you can do: % perldoc Hatetter to read the docum

    GitHub - yappo/website-hatetter
  • 1