![「Server::Starterに対応するとはどういうことか」の補足 : sonots:blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/da78a05937633f7a2b4b2219826151c370cd607b/height=288;version=1;width=512/https%3A%2F%2Fparts.blog.livedoor.jp%2Fimg%2Fusr%2Fcmn%2Fogp_image%2Flivedoor.png)
インターネットからリクエストを直接受け付けるのはApacheやnginxで、そこからリバースプロキシでPSGIアプリを使ってレスポンスを返しているというケースを想定して書いてます。 やり方は色々とあるんだろうけれど、apachectlライクにstart,stop,restartでお手軽に運用したいのでstart_serverスクリプト(Server::Starter)をラッピングしたものを書きました。 使い方は下記の通りです。 usage: /path/to/script/appctl --stage=[development|production] [--start|--stop|--restart] githubのソースはこちらで、以下はappctlスクリプトのソースです。ログのリダイレクトや、starman, starletの個別のオプションは直に変えてください。 #!/home/k
ログファイル出力スキームを提供する use Log::Log4perl; パッケージをロードする。 == 設定ファイルの書式 == log4perl.logger=<LEVEL>,<appenderID>,… log4perl.logger.<module>=<LEVEL>,<appenderID>,… log4perl.appender.<appenderID>=<appender module> log4perl.appender.<appenderID>.layout=[SimpleLayout | PatternLayout] log4perl.appender.A1.layout.ConversionPattern=<pattern> log4perl.logger:デフォルトのロギング動作指定 get_loggerメソッドでロギング動作指定のないモジュール名を指定すると、このロ
Amon2のbasic flavorな自動出力を眺めていたら、"script/myapp-server"*1にこんなソースが有りました。 my $app = builder { enable 'Plack::Middleware::Static', path => qr{^(?:/static/)}, root => File::Spec->catdir(dirname(__FILE__), '..'); enable 'Plack::Middleware::Static', path => qr{^(?:/robots\.txt|/favicon\.ico)$}, root => File::Spec->catdir(dirname(__FILE__), '..', 'static'); enable 'Plack::Middleware::ReverseProxy'; MyApp::W
春ですね! 新年度ですね! Perl 書くことになってしまいましたか! 奇遇ですね! sigil が意味わかりませんか! 特殊変数がググれませんか! リファレンスが謎ですか! 1; の存在が不明ですか! オブジェクト指向が難しいですか! むしろオブジェクトじゃないコードの方がゆるくて大変ですか! XS が読めませんか! ええ、XS は僕もあんまり読めません>< さて、この春から Perl を学ぶことになった人も多いかと思いますが、なにはなくともこれまず覚えたら後が楽になるんじゃないかというモジュールを、いくつか紹介したいと思います! (まあ、自分の初期を思い返すと、この辺はやく知っておきたかったなあというリストです) Data::Dumper, YAML 変数(リファレンス)やオブジェクト(blessされたリファレンス)をダンプする用途では、Data::Dumper が一番メジャーのような
メールを大量にテスト受信するサーバを作ってみた話 Posted 2013年3月16日 by uchiyama & filed under プログラミング. とにかく大量のメールを受信するだけサーバが欲しかったのでPerlで作ってみました。 Net::Server::Mail::SMTP + Parallel::Preforkを使ったプリフォーク型サーバにしました。 Net::Server::Mail::SMTPでSMTPコマンドそれぞれの処理を書き、 Parallel::Preforkでプリフォークの制御を行っています。 以下がサーバのプログラムになります。 プログラムの構成としては、Starletのコードを参考にしています。 package TestMailReceiver; use strict; use warnings; use IO::Socket::INET; use P
以下に単純なTCPサーバを示します。 「#!/usr/bin/perl」の行は環境に応じて変更してください。 もし、/usr/bin/perlにperlが無い場合は「#!/usr/local/bin/perl」にあることが多いと思います。 UNIX系環境(Linux含む)では、「which perl」とやるとperlへのパスがわかります。 「which perl」を実行しても無い場合には、perlがインストールされていないかパスが通していないかのどちらかを疑ってみてください。 #!/usr/bin/perl use IO::Socket; $sock0 = new IO::Socket::INET(Listen=>5, LocalAddr=>'localhost', LocalPort=>12345, Proto=>'tcp', Reuse=>1); die "IO::Socket : $
プロジェクトが依存しているモジュールをローカルミラーで管理します。 ローカルミラーはプロジェクトのバージョン管理下に入れます。 こうすることで、依存モジュールのバージョンを固定することができます。 管理ツールインストール ローカルミラーを管理するツールOrePANをインストールします。 $ cpanm OrePAN ローカルミラーを作成する cpanmコマンドを使って、ローカルミラーを作成します。 基本は「--save-dists」オプションを使い、ローカルミラーを作成していきます。 以下のようにcpanmコマンドを実行します。 $ cpanm -L local-tmp --save-dists=cpan-mirror Mojolicious バージョンを指定してインストールしたい場合は、「Mojolicious@3.82」というように@をつけて指定します。 $ cpanm -L loca
筆が遅くてすいません・・・fork第2回です。 前回はforkで全く同じプロセスが2つ出来るよーという話をしました。 しかし前回のままでは子プロセス生成したらしっぱなしで、その状態やらをハンドリングすることは出来ません。 さらに子プロセスは終了してもそのままではプロセステーブルから削除されず、いわゆる「ゾンビプロセス」の状態になります。 そこで登場するのがwait関数です。 これはwaitシステムコールを行うもので、wait()で任意の子プロセスが終了するまで待ち、回収をします。(正確にはSIGCHLDシグナルが発生するまで待つ) 返り値はwait()が成功した場合は回収したプロセスのID、失敗した場合は-1となります。 これを使ってみます。 #!/usr/bin/env perl use strict; use warnings; my $pid = fork(); if ($pid)
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
ちょっと波に乗り遅れた感じもしていますが,Coroの5.2もリリースされたことだし,今まで勉強してきたことの復習も兼ね, Coro::Introを訳してみる. http://search.cpan.org/~mlehmann/Coro-5.2/Coro/Intro.pod 訳やそもそもの理解が間違っていたら是非コメントとかで教えてくださいm(__)m どうでもいいけどマジでインデントがスペース3つだ...w Coroの紹介 これはCoroとCoroのサブモジュールの重要な機能について紹介するチュートリアルです. まず基本的なコンセプトを紹介し,その後にそれらの簡単な使い方を紹介します. Coroって何? Coroは初期の段階ではコルーチン*1と呼ばれるファーストクラスの継続の特定の要件を実装したシンプルなモジュールとして作られ始めた. これは基本的には,現在の実行ポイントを保ったまま他のポ
gfxと申します。 Perlは後方互換性を重視しているので、標準モジュールはめったに取り除かれる事がありません。しかしそれでも、いくつかのモジュールが将来的に取り除かれる見込みです。そのようなモジュールは使用しないほうがいいでしょう。また、取り除かれはしないものの、様々な理由から使用すべきでないモジュールもいくつかあります。今日は、そういった使うべきでないモジュールを紹介します。なお、このエントリの対象バージョンは5.8から5.14を想定しています。 さて、まずは取り除かれるモジュールです。現在のところ、以下の三つのモジュールが5.14でコアから削除される予定です。 Class::ISA Pod::Plainer Switch Class::ISAはクラス階層を直列化するモジュールですが、5.10以降はmroに取って代わられました。5.10未満のバージョン用にはMRO::Compatが用意
多くの参考サイトや本では、LWPモジュール群を利用してのSSLアクセスには「Crypt::SSLeay」モジュールが必要と説明されているが、どうやら「Net::SSLaey」モジュールがあれば可能なようだ。 もちろんサーバにSSL環境(OpenSSLとかmodSSLとか)があるっていうのが前提ではあるが。 OpenSSLとLWPのつなぎ役をしてくれるのがCrypt::SSLeayだが、もともと、OpenSSLとSSLeayとの高度な機能インタフェースを提供するモジュールが「Net::SSLaey」モジュールである。 以下確認作業 ■まず適当なスクリプトでPerlの@INCの中身を確認---------------------------------------------------------------------------------------------- #!/us
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く