CasperJS で JQuery を使う

CasperJS は PhantomJS の機能を使って現在扱っているページに対して JS を差し込める。 var casper = require('casper').create({clientScripts: ['jquery-1.9.1.min.js']}); clientScripts にローカルの JQuery へのパスを指定する。phantom.incectJs() を…

CasperJS を Mac OS X にインストールする

CasperJS とは CasperJS: CasperJS is a navigation scripting & testing utility for PhantomJS and SlimerJS written in Javascript JavaScript で書けるスクレイピングとテストを便利にしてくれるツール。PhantomJS/SlimerJS を使っているので Mechanize …

UserAgent での iPhone / iPad / Android phone / Android Tablet の見分け方

if ($ua =~ /Android/) { if ($ua =~ /Mobile/) { $type = 'Android phone'; } else { $type = 'Android tablet'; } } elsif ($ua =~ /iPhone/) { $type = 'iPhone'; } elsif ($ua =~ /iPad/) { $type = 'iPad'; } http://googlewebmastercentral-ja.blogspo…

Kyoto Tycoon memcached plugin VS memcached のベンチを取ってみた

#!/usr/bin/env perl use strict; use warnings; use Benchmark qw(:all); use Cache::Memcached::Fast; my $mf = Cache::Memcached::Fast->new( { servers => ['127.0.0.1:2010'] } ); my $mfm = Cache::Memcached::Fast->new( { servers => ['127.0.0.1:11…

KTのHTTPとMemcachedプロトコルのベンチを取ってみた

環境は以下の通り mac mini 2.66GHz 4GB RAM kyotocabinet 1.2.30 kyototycoon 0.9.18 KTをMemcachd pluginサポート起動 ktserver -plsv /usr/local/lib/ktplugservmemc.dylib -plex 'port=2010'ベンチを取ったコードはこんな感じ とりあえずsetのベンチ #!/…

お手軽gitリモートリポジトリの作り方メモ

git

リモートリポジトリの作成 @example.com cd ~ mkdir git mkdir git/FooBar.git cd git/FooBar.git git --bare init --shared=trueローカルリポジトリからpush mkdir FooBar cd FooBar git init touch README git add README git commit -a -m "initial impor…

Ubuntu 10.10 に XML::LibXMLをインストールする

一身上の都合でMacが使えなくなったのでUbuntuが入ったラップトップを引っ張り出してきたついでに、10.10をインストールして XML::LibXMLをインストールしようとしたらlibxml2が見つからないと怒られた。 hide@localhost:~$ perl Makefile.PL enable native …

Jetty のベンチマークを取ってみた

- Linux version 2.6.18-164.el5xen - Memory: 532480k - http://localhost:8080/ Jetty 6 w/o keepalive concurrency num [#/sec] 10 10000 1352.23 100 10000 3793.19 1000 10000 3836.32 w/ keepalive concurrency num [#/sec] 10 10000 3351.16 100 1000…

QRコードを表示するapp.psgi

QRコードを表示するだけの簡単なお仕事を大量にさばきたいって言われたので書いてみた。 use Imager::QRCode; use Plack::Request; my $qrcode = Imager::QRCode->new( size => 2, margin => 2, version => 1, level => 'M', casesensitive => 1, lightcolor…

cronologを32bit環境下で動かすときの注意

lighttpdを使ってるとログローテートにcronologをよく使うと風の噂でよく聞きます。そんなcronologをそのまま32bit環境下で動かすとファイルサイズ2GBを超えて書き込めないですねーというありがたい説法をid:kazuhookuさんにしてもらいました。要は32bitアプ…

Macのデフォルトのファイルディクリプタ数は最大256

mac

Macで ab -c 1000 -n 10000 http://example.comとかすると socket: Too many open files (24)とか怒られる。 CentOSとかなら大丈夫なのに。おもむろに ulimit -nとかしてファイルディスクリプタの制限値を見ると、Macは 256おふっ。 ちなみにCentOS 5.3だと1…

mac で移行アシスタントを使って困った

mac

会社のmacが交換になったので移行アシスタントとやらで移行してもらったんだけど、色々不具合が… /etc/以下のファイルが色々バックアップされてた(hostconfig~(古い Mac から)みたいなファイル名) /etc/hosts がバックアップなしに綺麗にデフォルトに戻っ…

実名とか匿名とか何とかかんとか

実名(hideo)出したって匿名(hidek)でも呼んでもらえない俺(hideki)がいる。

PlackをProxyサーバーに使う意義

ircで聞いたときはうまく説明できなかった&tokuhiromさん、Yappoさん、kazuhoさんに直接教えてもらったのでまとめとくなり。Proxyサーバーを作ることになった。 こんな感じのやつ。で、これの問題として対抗のサーバーの応答速度が遅い場合があってそこにPr…

PSGI/Plackを追っかける準備

今は時間取れないのでポインタだけ。Blog PSGI - Perl WSGI - bulknews.typepad.com http://d.hatena.ne.jp/tokuhirom/20090904/1252091316 PSGIまとめ - Angelos in Action - angelosグループ Googleグループ: psgi-plack Googleグループ FAQ/SPEC GitHub -…

モバイルアプリで2-legged OAuthを使うことへの疑問

http://developer.mixi.co.jp/appli/appli_mobile/lets_enjoy_making_mixiappmobile/process_flowmixiモバイルアプリはユーザーからのリクエストを一旦受け取ってアプリケーションサーバーへリクエストするという形をとっています。これ自体は色んな事情があ…

CFStringRefをSVに変換

追記: id:tokuhirom先生に添削してもらった。 malloc使うべからず -> NewXX()系でアロケート、SafeFree()で解放すべし(そういえばid:hirose31さんも言ってた) newSVpvの第二引数(STRLEN)は明示的に指定すべし -> 0で自動計算は\0 終端前提 SV * getString(CF…

CFStringRefのtypemap

http://developer.apple.com/documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html CFStringRef T_CFSTRINGREF INPUT T_CFSTRINGREF $var = CFStringCreateWithCString(kCFAllocatorDefault, (char *) SvPV_nolen($arg), kCFString…

git svn cloneでリポジトリの一部の最新だけ持ってきたい

git

git svn clone http://svn.coderepos.org/share/websites -r HEADでいけると思ったけどだめだったので svn log --limit 1 http://svn.coderepos.org/share/websites ------------------------------------------------------------------------ r34214 | Neo…

SQLiteとトランザクション

SQLiteの追加/更新はトランザクションを使うと高速化に効果があるというのはよく効くので実際試してみました。 use strict; use warnings; use DBI; use Benchmark qw(:all); my $count = 100; my $loop = 100; cmpthese( $count, { commit_each_insert => \…

YAML色々

コードリファレンスのシリアライズとデシリアライズ use strict; use warnings; use YAML; use Data::Dumper; $Data::Dumper::Deparse = 1; { no warnings ('once'); $YAML::UseCode = 1; } my $obj = { hello => sub { print "hello\n"; }, name => "hoge",…

C::P::FV::AutoのCatalyst 5.8対応パッチを書いた

typesterさん謹製のC::P::FV::Autoはとっても便利なのですが、例に漏れず5.8対応されていません。で、意外とニーズがあるようなのでさくっとpatch書いてみました。(といってもMRO::Compat化したくらいですが…)ただ、sub forwardでlocal $NEXT::NEXT{}してる…

初めてのDevel::BindPP

Standard C++ foo-bar.cpp #include <iostream> int main () { std::cout << "Hello World"; } $ gcc -o foo-bar foo-bar.cpp -lstdc++ $ foo-bar Hello Wolrd Devel::BindPP $ perl -MDevel::BindPP -e 'use Devel::BindPP::WriteFile()'foo-bar.cpp include <iostream> #includ</iostream></iostream>…

MooseのマニュアルとTPF

Moose Docs Grant Is Complete – House Absolute(ly) Pointlesshttp://cpansearch.perl.org/src/DROLSKY/Moose-0.74/Changes 0.66 Tue, February 3, 2009 * Moose::Manual - This is a brand new, extensive manual for Moose. This aims to provide a compl…

for(;;)とforeach()とLoop unrollingと

YappoLogs: CPUの気持ちは大事だけど、VMの気持ちも考えようよ http://d.hatena.ne.jp/yappo/20090330/1238360153会議中なので-MO=Consiseしてないし特に言いたいことはない。 use strict; use warnings; use Benchmark qw(:all); cmpthese( timethese( 0, {…

ソースフィルタを使わないでtry/catchを提供してくれるTryCatch

http://marcus.nordaaker.com/2009/03/a-proper-trycatch-for-perl/メモ 後で書く { package HTTPStatus; use Moose; has code => (is => 'rw', isa => 'Int', required => 1); __PACKAGE__->meta->make_immutable; } use strict; use warnings; use TryCatc…

Delegationを使わないでNon-Mooseクラスを継承

FAQにもあるけど、Moose::Objectも継承して->meta->new_objectを明示的に呼ぶことにより、delegationを使わないでNon-Mooseクラスを継承することもできる。 use strict; use warnings; { package Parent; sub new { my ($class, %args) = @_; bless {name =>…

Non-MooseクラスをDelegationを使って継承

久々にMoose書こうとしたら酷いことになってたのでリハビリ開始。 Non-Mooseなクラスを継承する時には委譲を使うのは知ってたけどコンストラクタも継承するとこんな感じ? 自信なす>< { package Parent; use strict; use warnings; sub new { my ($class, %…

モダンなCatalystコンポーネントを書くときは

Catalystがモダンかどうかは置いておいてCatalystのコンポーネントを書く時のお作法として大昔は ... use base qw(Catalyst::Action); use NEXT; sub execute { my $self = shift; $self->NEXT::execute( @_ ); ... ちょっと前は ... use base qw(Catalyst::…

モダパー開催のお知らせ

追記:2009/02/19 場所変更になりました。 追記:2009/02/19 場所仮決めしました。2/19 15時までに出欠をはてブコメントで表明してください。なお人数が多い場合には渋谷の他の店なる可能性があります。 追記:2009/02/10 日程が変更になりました id:lestrratさ…