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
MogileFS::Clientは通常、get_pathsで得られた結果をperlbal側にX-REPROX-CACHE-FORでキャッシュさせることでtracker(MySQL)へのアクセスを抑えるように運用するのが一般的ですが、たまにアプリ内でget_file_dataしてそれをもとに微妙にカスタマイズして画像を返したり、認証をつけたりしていると、毎回appサーバーにアクセスがきてしまいます。ということで、get_paths呼んだ前後でmemcachedにそのまま結果を透過的にキャッシュしてくれるやつを書いてみました。 http://github.com/walf443/p5-mogilefs-client-withcache これを使うと、アプリ内でget_file_dataとか呼んでもget_pathsの結果はキャッシュを使ってくれるのでトラッカーへのアクセスを抑えることができます
序章 最近筆者があるシステム上の非同期ワーカーに対して作業していたところ、新しいコードをデプロイしてこのプロセス達を再起動すると全てのワーカーが同じタイミングで停止→再起動してしまうのでアラートがちらほら流れてきました。クリティカルなものではないのですが、アラートはうざいです。さらに開発機では何回か失敗もしたのですが、その失敗のせいでワーカーが起動に失敗することもありました。その間は当然ワーカー機能は止まったままです。 アラートはできればみたくないのです。さらに万が一新しいコードが起動に失敗した場合でも前の世代が動いていればこのあたりの心配をする必要がなくなります自分がそのあたりに手を入れるタイミングでServer::Starterをかまして対処してしまうことにしました。 元のワーカー まず前提として、このワーカー達は以下のような形で「実行するワーカーのコマンド名(実際はクラス名)」と「い
Net::Server - Extensible, general Perl server engine Net::Server - Perlによる拡張可能な汎用サーバエンジン 概要¶ #!/usr/bin/perl -w -T package MyPackage; use Net::Server; @ISA = qw(Net::Server); sub process_request { #...コード... } MyPackage->run(port => 160); exit; 取得方法¶ * Single Server Mode * Inetd Server Mode * Preforking Simple Mode (PreForkSimple) * Preforking Managed Mode (PreFork) * Forking Mode * Multiplexing M
Perl入学式 公式ブログ プログラミング未経験者/Perl初心者を対象としたワークショップ『Perl入学式』のブログです。 一緒にプログラミングの楽しさを体感しましょう! みなさまこんにちは, Perl入学式校長のpapixです. いきなりですが, Perl入学式は今年で4年目となりました. ここまでの3年間, 多くの方と一緒にPerlを学ぶことができていて, とても嬉しく思っています. その中で, Perl入学式の卒業生からよく頂く意見の1つが, 「卒業後に使えるカリキュラムが欲しい」というものです. Perl入学式で扱う内容は, プログラミングを学ぶために不可欠な環境構築からスタートし, Perlという言語を通して「プログラミングに必要な考え方」を学んでいくという, まさに「基礎中の基礎」といえる内容になっています. 最終回でMojoliciousを利用したWebアプリケーションの開
先日、moznion氏の「実行中のプログラムの進捗度を手っ取り早く確認したい」という面白い記事を読みました。 これに影響されて、Perlと$0のウンチクを id:lesamoureuses に語ったところ地味にウケが良かったので、さらに調子に乗って、細かすぎて伝わらないPerlと$0の関係について語ります。なお、本稿の実用性はあまりありませんが、ちょっとだけあります。 概要 上述のmoznion氏のブログは、Rubyで$0をいじるとpsコマンドで見えるコマンド名が変わって便利、という話でした(「アッアッ」)。 Perlでも同様に、$0をいじることでpsコマンドで見えるCOMMAND値を変えることができます(なお時折勘違いする人がいますが、元のファイル名は変わりません。psコマンドで見える値だけです)。ただしこれはOSによって結構動作が違うので、以下しばらくLinux(CentOS)限定の話
現状、本稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 本稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl
■ 文法ミスをチェックする(-wc) ◆ -wc オプション perl を -wc オプションで実行することにより、スクリプトファイルの文法チェックを行うことができます。-w は警告(ワーニング)メッセージまで表示することを、-c はスクリプトの構文チェックのみを行って実行せずに終了することを意味します。-w により、通常はエラーにはならない、警告レベルの指摘もチェックすることができます。 ◆ チェックの実例 例えば、下記のようなスクリプトがあるとします。 $num = 26; $msg = num; print "$msg\n"; $msg = $num; とするつもりが、$ を書き忘れて $msg = num; となっています。Perl では、無理にダブルクォーテーションで囲まなくても、それが文字列としてしか解釈できないものであれば文字列として解釈してしまうので、26 と表示して欲しい
Perlのithreadsについて ithreadsに関する日本語のサイトがあまりないので、何か適当にメモっておきます。 基本 サンプル 留意点(重要な基本事項) できるだけ最新のPerlで使おう スレッドのコンテキスト スレッドと値 オブジェクトの共有 オブジェクトは二度(以上)死ぬ Windows上でのdetach 特別なサブルーチンCLONEについて マルチスレッドにおけるrand()の使用 スレッドにおけるシグナル処理 関連情報 モジュール その他 forkによるthreadsのエミュレート cond_timedwait なぜかスレッドの生成に時間がかかる時があるのですが… Thread::Queueについて CLONEサブルーチン マルチスレッドにおける再現性のある乱数列 Thread::TieをWIN32 with activeperlで使う スレッドが生きているかどうかのチェ
NAME IPC::Shm - Easily store variables in SysV shared memory. SYNOPSIS use IPC::Shm; our %variable : shm; Then, just use it like any other variable. EXPLANATION The "shm" variable attribute confers two properties to a package variable: 1. The variable will persist beyond the program's end. 2. All simultaneous processes will see the same value. Scalars, hashes, and arrays are supported. Filehandles
序文 もしもプログラミング言語が宗教だったら……(全訳版)[絵文録ことのは]2008/12/21 によると、ブードゥー教徒らしい dankogai です。 ブードゥー教徒らしく、「上司があなたに金曜夜21時に緊急の仕事を命ずるときにしばしば使われる」呪文をここでまとめておくことにします。 基本中の基本 コマンドとしてのperlは、スイッチがない場合、引数はスクリプト名として扱われます。 % cat hello.pl print "Hello, world!\n"; % perl hello.pl Hello, world! % コマンドライン中の文字列をスクリプトとして解釈させるには、-eを使います。 % perl -e'print "Hello, World!\n"' Hello, world! % ちなみに、perlとコマンド名だけで起動すると、標準入力をスクリプトとして返します。 %
perl+DBI プログラムの鉄則 のつつき。 鉄則その3. while ( my $arr_ref = $sth->fetchrow_arrayref ){ my ($hoge, $fuga) = @$arr_ref; ... } SELECT 時は上記のように fetchrow_arrayref を使うこと。そして必ずスカラーに 代入すること。せっかく fetchrow_arrayref を使っていても while ( my $arr_ref = $sth->fetchrow_arrayref ){ print "$$arr_ref[0] $$arr_ref[1]\n"; } などと書いては台無しである。配列のインデックスで指定すると取得カラムの 増減に非常に弱い。そしてなりより、$$arr_ref[1] が何を意味するのか さっぱりわからない。 fetchrow_array は使わな
The exec function executes a system command and never returns; use system instead of exec if you want it to return. It fails and returns false only if the command does not exist and it is executed directly instead of via your system's command shell (see below). exec 関数は、システムのコマンドを実行し、戻ってはきません; 戻って欲しい場合には、execではなく system 関数を使ってください。 コマンドが存在せず、しかも システムのコマンドシェル経由でなく 直接コマンドを実行しようとした場合にのみこの関数は失敗して偽を返しま
perlipc - Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores) The basic IPC facilities of Perl are built out of the good old Unix signals, named pipes, pipe opens, the Berkeley socket routines, and SysV IPC calls. Each is used in slightly different situations. Perl uses a simple signal handling model: the %SIG hash contains names or references of use
Starman のコード読んでみたのでまとめ。 Starmanとは Plack/PSGIに対応したPerl製のWeb Server。 Perlと言えばこの人、miyagawa さん作。 Plack/PSGI に関してはこのへんとか。 バカでもわかるPlack/PSGI - JPerl Advent Calendar 2009 第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (1):Perl Hackers Hub|gihyo.jp … 技術評論社 Apacheやnginxをリバースプロキシとして、バックエンドにStarmanを使うなどするらしい。(e.g. ゆーすけべー日記) サーバーのタイプは、起動ログにあるように、Net::Server::PreFork 型。Apacheと同じ。 prefork型というのは、予め一定数の子プロセスをforkしておき、並列に処理を行
目次 Perlの概要 なにか なにか バージョン ラクダ画像とPerl 環境別インストール 基礎的なperldocコマンド 変数 スカラー(文字列・数値) 配列 ハッシュ リファレンス 条件分岐 if / elsif / else ループ foreach while デバッグ手法 print warn Data::Dumper YAML XXX ファイル操作 open() IO::File Path::Class stat() / -f / -d / -e / -x サブルーチン プロトタイプ 正規表現 メタキャラクター キャラクターセット データ tie Storable Encode 入出力の考え方 ワンライナー データベース DBI mysql PostgreSQL SQLite オブジェクト bless モジュール CPAN 各OSでのCPANのつかいかた WindowsでCPAN
Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ
プログラムを書く際に処理をタイムアウトさせたい場合というのはよくあると思います。 そんなときに便利なのが、alarmです。 今回は、Perlプログラムでalarmを使ってタイムアウト処理を実装したいと思います。 alarmは対象の処理が指定した時間(秒)たっても終了しない場合、SIGALRMシグナルを発生させます。 例として、ユーザからの入力を30秒でタイムアウトさせるプログラムを書いてみます。 #!/usr/bin/perl use strict; # タイムアウトするまでの時間(秒数) my $TIMEOUT = 30; print "What your name??: "; alarm($TIMEOUT); my $name = ; my $timeleft = alarm(0); print "Hello! $name"; alarmで囲った部分、ユーザからの入力待つ部分がタイムア
深遠な理由で、connect(2) に掛かった時間と、リクエストを送ってレスポンスが得られるまでに掛かった時間を出したい #!/usr/bin/perl use strict; use warnings; use AnyEvent::HTTP; use AnyEvent::Socket; use AnyEvent::DNS::Cache::Simple; use Time::HiRes; my $guard = AnyEvent::DNS::Cache::Simple->register; for my $i ( 1..3 ) { my $cv = AE::cv; my @times; http_get "http://livedoor.blogimg.jp/", persistent => 0, keepalive => 0, tcp_connect => sub { my ($host
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く