Math::Random::MT benchmark
on 2010/08/19 12:12, under perl | 2 Comments
randのばらつき方が均等になる、という理由でMath::Random::MTが使われているようです。(身近で
macにXS版を入れようとすると
In file included from _mt.c:1:
mt.h:17: error: expected specifier-qualifier-list before ‘uint32_t’
mt.h:21: error: expected ‘)’ before ‘seed’
mt.h:22: error: expected ‘)’ before ‘*’ token
_mt.c:17: error: expected declaration specifiers or ‘…’ before ‘uint32_t’
_mt.c: In function ‘mt_init_seed’:
_mt.c:20: error: ‘uint32_t’ undeclared (first use in this function)
_mt.c:20: error: (Each undeclared identifier is reported only once
_mt.c:20: error: for each function it appears in.)
_mt.c:20: error: ‘mt’ undeclared (first use in this function)
_mt.c:22: error: ‘struct mt’ has no member named ‘mt’
_mt.c:23: error: ‘seed’ undeclared (first use in this function)
っていうようなエラーがでてmakeがこけるところは、
#if defined(_MSC_VER) && (_MSC_VER < = 1300)
typedef unsigned __int32 uint32_t;
#elif defined(__linux__) || defined(__GLIBC__) || defined(__WIN32__)
#include
#elif defined(__osf__)
#include
#else
#include
#endif
このifdefがうまくいってないようだったのでとりあえず
#include <inttypes.h>
と手で書いてあげたりするとうまくmake && make testが通るようになりました
この辺はどう書くのが鉄板なんでしょうね?
ということでベンチマーク
ここがボトルネックになることはあまり無いとは思いますが。
iTunesの重複曲を削除する - perl
on 2010/08/04 10:54, under perl | 2 Comments
家のPCのWindowsを入れなおすついでに家のiTunesとmacbookのiTunesの中身を同期しようと思い、何も考えずにiTunesのホームネットワークに追加して曲をコピペしたら大量に重複曲ができていっこいっこ手で削除するなんてめんどくさくてできない場合の話。
iTunesには「重複する項目を表示」って機能はあるのに重複してる曲を削除する、っていう便利機能は無い。
ただし、同じアーティスト名、同じアルバム名(つまり同じディレクトリ)の同名曲は、
ファイル名の末尾に数字をつけてincrementしていく、ってルールでコピーしてきたファイルを置くようだ。
そこで、perlで重複曲を削除してみる
% perl remove-duplicate.pl /Users/mash/Music/iTunes/iTunes\ Media/Music/
って実行すると重複してるっぽい曲だけ消してくれる
その後、実体が無いけど曲のリストがあるiTunesを開き、上から順に →カーソルキー を押しっぱなしにしたりすると

のようにびっくりマークがつくので、表示項目に「追加日」を追加して、
びっくりマークを目印に、複数選択しながら消していくとまあ許容できるめんどくささになった
Term::Prompt がなんか楽しくて意味もなく “really?” とか聞くちょっとしたスクリプトを書く今日このごろ
PS. iTunes Music Library.xml をいっしょに編集したりすればもっと簡単なのかもしれない
daemontoolsのmultilogでエラーだけ抜き出す
on 2010/06/28 19:28, under daemontools | Comment
ここ: multilogによるログ収集 を読みましょう
この設定は:
- t: タイムスタンプつける
- 全部の行をこのrunスクリプトのあるディレクトリに吐く ファイルサイズ最大16MBで100世代まで
- [error]の含まれる行のみを errorsディレクトリ以下に吐く ファイルサイズ最大16MBで100世代まで
svc -u /service/app/log
ってするとmultilogが立ち上がって、runスクリプトのあるディレクトリ、errorsディレクトリにcurrentって空のファイルができる
appのログに[error]の含まれる行が出てきたら、
errors/current ってファイルに書き込まれるので、
errors/current ってファイルを監視してれば眠れない夜になったりならなかったり
svc -a /service/app/log
ってするとログローテーションされてcurrentはまた空ファイルになるのでいらっとしたらこれ。
WWW::Mechanize::Firefoxで簡単スクリーンショット
on 2010/05/19 17:06, under perl | 3 Comments
WWW::Mechanize::Firefox-すごいな
mozreplと組み合わせてこんなコードで簡単にスクリーンショットがとれる
perl mechanize-firefox.pl "yahoo.co.jp" yahoo.png
とかってやってとれたスクリーンショットはこんな

write error: filehandle isn't open at /path/to/MozRepl/Client.pm line 186
とかって出たらFirefoxのmozreplが立ち上がってない。
maximum input buffer length exceeded: 1048576 bytes at /path/to/MozRepl/Client.pm line 186
とかって出たらmozreplとperlスクリプトのtelnetのバッファが足りないようなのでgistにあるbufsizeを大きめにとる
PS: 開いてるFirefoxでとったのでMacBookProの解像度を活かしてサイズは(1899 x 1607)になってるのは自慢です
cant use webcam in Firefox3.6.3 + Flash Player 10 + Mac OSX10.6.3
on 2010/05/13 21:06, under diary | Comment
今日、奇妙なFirefoxのバグ?に遭遇
ウェブカムを使うFlashで、Camera.getCameraしたCameraインスタンスをVideo.attachCameraしたりするときに、
Flashの設定パネルが表示されて、

この「許可」をクリックするとカメラから画像がとれるようになるんですが、
Firefox3.6.3 + Flash Player 10,0,42,34 + MacOSX 10.6.3
で、これがクリック出来ないんですね。周りにも何人かいたから近いバージョンでも起こるっぽい。
クリックできないから許可できないので進まない。
HTMLの要素をカットして戻して、とかってやりながら原因を切り分けていくと、、原因、というかこうなおすと直った、のはCSS
CSSの差分はこんな
-
667c673,674
-
<width:465px;
-
---
-
> /* width:465px; */
-
> text-align: center;
-
670c677
-
<width: 465px;
-
---
-
> /* width: 465px; */
-
673c680
-
<border-right:1px solid #e6e6e6;
-
---
-
> /* border-right:1px solid #e6e6e6; */
これでFlash Playerからウェブカム使えるかどうか変わるとかありえねー
けど実際ありえた
参考になるだろうと思って最小のHTMLとCSSで再現パターンつくろうと思ったけど他にも周りの要素が関係してそうだったのでめんどくさくて断念。
Firefox3.6.4のbetaでは起こらなかったようなので、一時的な不具合かもしれない。
幸運をいのる。
P.S. macにしましたよ
Context Free Art for Actionscript3/Flash
on 2010/03/20 15:29, under contextfreeart, actionscript3 | Comment
FITC Amsterdam 2010で得た刺激を形にした1つ目
Context Free Artをas3でつくるためのライブラリをつくりました。
sourcecode: http://github.com/mash/ContextFreeArt-AS3
sample:
cfdgは本家と同じフォーマットで記述して、
StringをContextFreeArtクラスに渡してaddChildすれば描画されたContextFreeArtを見られる、という簡単仕様。
-
var art :ContextFreeArt = new ContextFreeArt( cfdg );
-
addChild( art );
javascript+CanvasによるContext Free Artの実装があったのでそれを移植する+Flash向けに最適化(@nutsu ++)しただけですね
jsの方の例はこちら
再帰を繰り返してベクターが多くなってきた時に描画が重くなるのを解決できたらなー
描画しおわった、removeChildされた後に掃除したりするのを追加したら、swcにしてwonderflにライブラリとして追加しようー
ContextFreeArtクラスはただのSprite継承したものなので、ContextFreeArtをBox2Dの世界につっこんだり、マウスとインタラクションしたり、いろいろ試してほしいものです。
まだ対応していないcfdg文法もたくさんあるので、興味をもった方はgithubでforkしてほしいです!
FITC Amsterdam 2010で話してきました
on 2010/03/20 15:06, under actionscript3, fitc, wonderfl | Comment
2/19~2/24だったのでもう1ヶ月になってしまいますね。びびる!
ではプレゼン資料をどうぞ。
@mariroomがiPhoneから撮ってくれた録画はこちら
slideshareでプレゼン資料からリンクしたい!けどできないので
http://twitter/maaash
http://www.kayac.com/
http://wonderfl.net/
Explore wonderfl
http://wonderfl.net/codes
http://wonderfl.net/tags
My Favorites
http://wonderfl.net/tag/graphics
http://wonderfl.net/code/b8ec2e7155357ddc65d21eb8b1fa2e94c8363cfc
http://wonderfl.net/tag/particle
http://wonderfl.net/code/6efe4c0d9b5e27e91db92b1175409f31e7005dca
http://wonderfl.net/tag/3d
http://wonderfl.net/code/d79cd85845773958620f42cb3e6cb363c2020c73
http://wonderfl.net/code/3e921a9e3eeedb891c2c09ca7792d77a94e6be7e
http://wonderfl.net/tag/sound
http://wonderfl.net/code/ce10335ea45949194f7b26b2a7906faf1860037d
http://wonderfl.net/code/a61ade6375f452e6dbcc873f241652ef0f80bb96
http://wonderfl.net/tag/game
http://wonderfl.net/code/e3ad9058e4ee2e00d7ff7a40e806e7ed82fdb0ef
Supported libraries
http://wonderfl.net/libraries
Fastest when you want samples
http://www.google.com/search?q=papervision3d
http://wonderfl.net/search?q=papervision3d
Cool idea of actionscriptbible
by Roger Braunstein
http://wonderfl.net/user/actionscriptbible
Collaboration example:
http://wonderfl.net/code/23552f1d7a0805e6a44c812715e89bf6b520e346
http://wonderfl.net/code/6e076415a6d24cbe1c1ce65fb5db5fc9284e9c10
http://wonderfl.net/code/aa66ffdabd0d60b9b0f78bc98d35054860212703
http://wonderfl.net/code/685b39a67b560fd762e25fb805c7cb30780efb78
http://wonderfl.net/code/e40b7ab8221ba0b85632726091fc9211c5f503c4
Flash LIVE Coding
http://wonderfl.net/live
wonderfl本
on 2009/12/23 11:40, under actionscript3, flash | 2 Comments
ワークスコーポレーション
売り上げランキング: 3750
wonderfl本、出ましたね。自分は、「はじめに」と「1-1」を担当させていただきました。
これからFlashやActionscript3をはじめたい、という初心者にとっては本当に役に立つサービス&本だと思いますので、よろしければ読んでみてください。
DBICでcreate_relatedをoverrideする
on 2009/11/26 14:11, under perl | Comment
DBICを使っています。
User has_many Histories
っていう関係のテーブルUserとHistoryがあった時に、
Userの行それぞれに対して、最新のHistoryをUserの行の中にキャッシュしておくと便利なときがあります。
そんな時に、$user->add_to_histories ってやった時に $userもupdateしたい、という話です。
-
CREATE TABLE user (id unsigned not null auto_increment, **中略**, history unsigned not null);
-
CREATE TABLE history (id unsigned not null auto_increment, user unsigned not null, **中略**, created_date datetime not null);
UserのRowクラスは
-
中略
-
__PACKAGE__->has_many( histories => 'Schema::Row::History', 'user' );
HistoryのRowクラスは
-
中略
-
__PACKAGE__->belongs_to( user => 'Schema::Row::User' );
UserのRowクラスに追加されるadd_to_$relを使って
-
$user->add_to_histories({ action => 'marriage' });
とかってやるわけです。
HistoryのRowを追加する時にcreated_dateを意識せずに設定したいときとかに、
HistoryのRowクラスに↓って書いておきます
これはよくやるんですが、同じタイミングでUserの方もupdateしたいって時に、
UserのRowクラスに、
って書いておくと、便利だわー
typester++
[perl]32bit/64bitでメモリ使用量違うけど
on 2009/11/12 13:39, under perl | Comment
同じperlのコードを、2台の違うサーバで動かした時に、やたらメモリ量が違うなぁと。
サーバ1: 50MBくらい
サーバ2: 200MBくらい
なんでだろと調べる
サーバ1で
-
perl -V
-
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
-
Platform:
-
osname=linux, osvers=2.6.26-1-686, archname=i486-linux-gnu-thread-multi
-
...
-
use64bitint=undef, use64bitall=undef, uselongdouble=undef
-
...
-
Compiler:
-
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
-
optimize='-O2 -g',
-
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
-
ccversion='', gccversion='4.3.2', gccosandvers=''
-
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
-
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
-
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
-
alignbytes=4, prototype=define
サーバ2で
-
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
-
Platform:
-
osname=linux, osvers=2.6.26-1-vserver-amd64, archname=x86_64-linux-gnu-thread-multi
-
...
-
use64bitint=define, use64bitall=define, uselongdouble=undef
-
...
-
Compiler:
-
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
-
optimize='-O2 -g',
-
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
-
ccversion='', gccversion='4.3.2', gccosandvers=''
-
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
-
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
-
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
-
alignbytes=8, prototype=define
longsize, ptrsizeとかが違う
32bit → 64bit!
モジュールをuseした際のメモリ使用量(増加量)を調べてみるで紹介されていたGTopのスクリプトを使ってみる
サーバ1で
-
% script/gtop.pl 'use Catalyst'
-
10.5M : use Catalyst
-
% script/gtop.pl 'use DBIx::Class'
-
396k : use DBIx::Class
-
% script/gtop.pl 'use Moose'
-
Moose does not export its sugar to the 'main' package.
-
4.6M : use Moose
fmfm
サーバ2で
-
% script/gtop.pl "use Catalyst"
-
42.6M : use Catalyst
-
% script/gtop.pl "use DBIx::Class"
-
920k : use DBIx::Class
-
% script/gtop.pl "use Moose ()"
-
17.9M : use Moose ()
!!!
搭載してるメモリ量は4GBとかで変わらないから、
リスクが無ければ32bitでコンパイルしたperlを使ったりするもんなのだろうか?
IO::AIOお試し
on 2009/10/22 23:09, under perl | Comment
AnyEvent/Coro期がわたしにもやってきましたよ。
ファイル書き込みを非同期でやりたいのでIO::AIO試してみました。
Coro::AIO使えばcallback形式ではなく綺麗に書けるようだけれどとりあえずIO::AIOの書き方で。
結果は、↓とかってなるから非同期的な感じだなぁっていうのはわかるんですが、
AnyEventの $cv->send , $cv->recv をとっぱらっても同じように動く。
なぜ?
Event loop integrationっていうのはそれが無い状態に対して、何してくれるの?
-
perl try/anyevent_aio.pl
-
[pre] at try/anyevent_aio.pl line 5.
-
[aft] at try/anyevent_aio.pl line 13.
-
[opened]0
-
[opened]1
-
[opened]2
-
[opened]3
-
[opened]4
-
[opened]5
-
[opened]6
-
[opened]7
-
[opened]8
-
[opened]9
-
[wrote]0
-
[wrote]1
-
[wrote]2
-
[wrote]4
-
[wrote]6
-
[wrote]3
-
[wrote]7
-
[wrote]5
-
[wrote]8
-
[closed]9:0
-
[closed]8:1
-
[closed]7:2
-
[closed]6:4
-
[closed]5:6
-
[closed]4:3
-
[closed]3:7
-
[closed]2:5
-
[wrote]9
-
[closed]1:8
-
[closed]0:9
going to Adobe MAX NA 2009
on 2009/09/24 10:45, under fitc, wonderfl, adobe, flash | Comment
I'm going to Adobe MAX NA 2009!
to give a talk about
wonderfl build flash online, the browser-based Actionscript IDE and community
http://wonderfl.net/
at the FITC Unconference room
http://www.fitc.ca/events/schedule/?event=100
Wednesday October 7, 10:30 - 11:00
might be hard to wake up to attend a 10:30 session if you're having beer whole night long,
but FITC Unconference room has a FREE BEER for you,
so why not have one in the morning?
おすすめのパスタレシピ本
on 2009/06/13 14:57, under gourmet | Comment
家で料理をすることも週末は多いので、レシピの本を何冊か持っている。
ケンタロウさんの本や、にんにくのレシピ本や他のも。
レシピ本には、たいていレシピとできあがりの画像だけ載っている。
著者によって、使う素材が違ったり、にんにくばかり使うレシピだったり。
先日ラ・ベットラ・ダ・オチアイ、という、落合さんがやってるイタリアンレストランに行って来た。
普段は長い行列のところ、何曜日だったか、その曜日に行けば並ばずに済む、という日。
スパゲッティも前菜もおいしくて、店主である落合さんの書いているレシピ本に気がついて、
ご飯を食べ終わった後しばらく読みふけり、帰ってからamazonでぽちっとした。
幻冬舎
売り上げランキング: 215921

思ったよりシンプルでも本格的な味
やっぱりラ・ベットラ
作りやすいレシピです
ちょっと残念
スパゲティを極める
おすすめするのは、
何のためにワインを入れるのか、そしてせっかくワインを入れたのになぜ煮詰めなきゃいけないのか・・・。そういう”どうして?”をひとつひとつ解決できれば、もっとおいしい料理を作れるようになるはず。そういう理屈を知っていけば、料理はすごく楽しくなると思う。
という考えが見えるから。
そういったロジックがレシピの前後にちょろっと書いてある。
土日しか作らないから、先週つくって失敗したリベンジしようと思っても、
試行錯誤しておいしさのロジックを自分の身体で学んでいくほど味と手順を覚えていられないし、
至高の味を目指しているのにレシピの可能性は無限だ。
先人の知恵にすがるべきところ。
スパゲッティ好きな人はみんな買うといいと思います。
県毎のiareaの数
on 2009/05/27 15:22, under mobile | Comment
memo
宮城: 4
茨城: 5
北海道: 32
福島: 4
岩手: 3
滋賀: 4
三重: 8
高知: 4
東京: 99
宮崎: 3
長野: 12
広島: 9
沖縄: 3
静岡: 15
山梨: 3
青森: 3
山形: 4
山口: 4
京都: 20
埼玉: 12
熊本: 5
福岡: 15
和歌山: 8
大阪: 27
徳島: 4
石川: 11
千葉: 10
愛媛: 4
奈良: 4
秋田: 3
兵庫: 22
神奈川: 31
富山: 5
新潟: 6
福井: 5
鹿児島: 7
岐阜: 6
大分: 5
佐賀: 2
岡山: 5
群馬: 6
島根: 6
鳥取: 3
長崎: 5
香川: 4
栃木: 6
愛知: 39
Hoppyいいよ
on 2009/05/15 21:41, under flash, perl | 1 Comment
Hoppyいい
シリコンバレー行った時に参加した Flash Game Summit とかでも、FITC Toronto 2009でも、マルチプレーヤーFlash熱そうだったので自分の周りではきてる。
汎用的なXMLSocketサーバを書いた
POEとか使ったシングルプロセスシングルスレッドのデーモンでデータベース扱う時はどうするのがいいんだろう?
裏にDB扱うためだけにhttpサーバ置いてデーモンからはそれに非同期でhttpリクエストするという方法がある。
ということでまずはauthを非同期にしてみました。
http://github.com/mash/Hoppy/tree/master
$c->handlerってtcp周りのイベントのハンドラってことでいいのかな。
-
$c->regist_service(
-
auth => 'MyApp::Auth',
-
);
ってやると $c->handler->{auth} に入るのは気のせいかと思いたかったので
s/handler/service/ してみました。めっちゃコアっぽいけどまぁいいか。
ごめんねColinちゃん。
keep looking »
