hideden.hatenablog.com

はてなぶろぐー。URLなげー。

perl

JSONPなAPIの負荷対策にngx_http_jsonp_callbackってのを書いてみた

認証が不要で、結果をJSONPで返してくれるAPI。大体は高速化の為にmemcachedを使用し、cacheが存在すればcacheから、存在しなければDB等から引いてcacheに入れ、その後結果を返す設計になってるはず。 URL: http://api.example.com/count?user_id=12345&entr…

mod_perlで親プロセスとのCopy on Writeな共有メモリを増やす方法。

大量にアクセスがあってMaxClientを大きく設定したい場合、Apacheの1プロセスあたりのメモリを少なくするのが重要。当然アプリ側で大きなライブラリを読み込まずに画像の変換はGearmandにタスクとして投げたりとかの工夫するのも有効だが、fork元になるApach…

x演算子のメモリの使い方。

10MBのダミーデータをメモリ上に確保しようと思ったらよくわからないことが。 [hideden@hideden-x61]$ perl -e '$a = "." x (10*1024*1024); sleep 60;' & [1] 7433 [hideden@hideden-x61]$ perl -e '$a = "."; $a x= 10*1024*1024; sleep 60;' & [2] 7434 […

レキシカルスコープやらシンボルテーブルやら型グロブやら。

メモっとく。 use strict; our $hoge = 'HOGE'; my $hoge = 'hoge'; print $hoge; # hoge print ${hoge}; # hoge print $::hoge; # HOGE print $main::hoge; # HOGE print $::main::hoge; # HOGE print ${*hoge{SCALAR}}; # HOGE 型グロブからスカラー変数の…

参照カウンタ。

オブジェクトのリファレンスがつまった配列@arrayを$#arrayで短くしたとき、ちゃんと中身が開放されるのかなーって思って参照カウンタをみてみた。 #!/usr/bin/perl use Devel::Peek qw/SvREFCNT/; my (@a, @b); push(@a, \$_) for (1 .. 10); @b = @a; $#a …

perl-win32で再起動前に終了処理をする方法

結構つまったのでメモ。Win32では通常、ユーザーが再起動またはログアウト処理を開始すると全てのWindowに対してWM_QUERYENDSESSIONというメッセージが送られてくる。これを受信した際に各種終了処理(データを保存したり接続を切ったり)を行い、その結果終…

ハッシュへの代入。

ぼーっとClass::DBIのソースを眺めてたら、 @data{@columns} = $self->get(@columns);なんてのがあった。CSVファイルなんかをハッシュの配列にする時とかに、 my @tmp = split /\t/, $_; push(@data, { id => $tmp[0], name => $tmp[1], age => $tmp[2], add…

CGI.pmを継承せずにカスタマイズする方法?

Y.Sawaさんがまたd:id:succeed:20051114でアドバイスしていただいたのでそれをふまえて色々と。CGI::ConvertParamはすごく汎用性があり素敵な実装だと思います。 use CGI; use CGI::ConvertParam::UTF8; my $org_cgi_q = new CGI; my $q = CGI::ConvertParam…

継承と委譲の選択。

見ての通りはてな初心者なので毎日いろんな機能を試して喜んでたら、なにやらidトラックバックとやらが!なにげにblog系の物を使ったのが初めてなので地味にうれしかったり。笑 で、見てみたらShibuya.pmでICFPへのPerlでの参加結果を発表しておられたY.Sawa…

PerlでWindows操作(Win32::GuiTest編)

昨日に引き続き、Win32系を。OLEオートメーションでは一部のソフトの操作しかできないため、いわゆるマウス・キー操作マクロのようなモノを実現してみる。使うモジュールはWin32::GuiTest。ActivePerlのppmだと古いバージョンしか登録されていないので、CPAN…

PerlでWindows操作。(OLEオートメーション編)

Perlを使い出すと結構なんでもPerlでやりたくなる。ま、楽だし。でも結構、Windows上でスクリプトのテストや簡単な計算以外で使ってる人ってあんまり見ない気がする。って事で、何気に結構CPAN上にいっぱいあるWin32モジュール群の一部を紹介でもしてみよう…

CGI.pmを継承してメソッドを追加したりしてみる。

文字コードの変換とかが面倒なのでCGI.pmを継承して、自動で文字コード変換をしてくれるモジュールを作ってみた。Perlで他のモジュールを継承するのは簡単。 package CGI_JP_conv; use base qw(CGI); sub new { my $class = shift; my $self = $class->SUPER…