愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

2011-01-01から1年間の記事一覧

ソースコードリーディングとblogやプレゼンにおける問題意識とのんのんばあとオレ

ここ3日間ほど、家で山にこもって一人ソースコード読み大会みたいなことをしていた。Perlのコードについては、だいたい以下のような手順が最も読みやすいことがわかった。 1. Foo.pmのPODの上の方をよむ 2. Fooについてのblog記事などを検索して、そのモジュ…

メッセージングでまあまあ捗るかもしれない話

この記事はJavaScript Advent Calendar(オレ標準コース)の13日めのエントリイになります。 ちなみに家に帰った瞬間、マシンの時計がずれて12/14になってて、大分一人で焦りました。てへぺろ。ぺろぺろ。この記事の題材はJavaScriptにおけるメッセージング(…

ネストするDSLっぽいアレ

なんか foo { bar { baz { # barはfooのなかでしか、bazはbarのなかでしかよべない } } } みたいなDSLちっくなものを簡単にかけるモジュールがあってもいいかもしれない、と思って、Plack::Builderをみると、おおむねこのような感じだったのでhttps://gist.g…

クライアントサイドとサーバサイドのvalidationを共通化する(未遂)

http://d.hatena.ne.jp/antipop/20111101/1320164459これを見て、「JSでHTML5 form validationのruleをDOMから引っこ抜いて、JSON schema ( http://tools.ietf.org/html/draft-zyp-json-schema-03 ) に変換して、それをsubmitの直前にtype="text"なinputとか…

Android4.0にはHTML5 History APIが実装されていない

(※このエントリーは、「Androidのブラウザは本当のクソAdvent Calendar」の一日目の記事として書いています)12/2に発売予定のGalaxy Nexusにも搭載される予定のAndroid4.0ですが、なんと標準ブラウザにHTML5 history APIが「実装されていません」。2.2系、…

個人的Java並行/非同期処理めも

仕事でJava使ってるわけでもないし、っていうかJava触ってたのって研究室でのごく一時期だけでJavaのジャの字も分かっていないのだけど、「体調が悪いときはひたすらダラダラインプットする」といういつも通りの行動を取っていたら「Java並行処理プログラミ…

location.host部分だけを置き換えて、そっくり同じURLを新しいタブで開くためのVimperatorプラギン

Webサイトをつくっていると、だいたい最低でも * 本番環境 * 開発環境の2つくらいは環境があって、当然ながらどちらも別のホスト名で参照しているとおもうのだけど、開発とかテストの際に「このURLを開発環境のhostで開きたい!」とか「このURLを手元のVMの…

個人的epollめも

仕事柄、「ああいうデカいサイズのファイルアップロードとか、preforkでやるべきじゃないよね。イベントモデルじゃないと厳しい」とかそんな話をすることがあって、「確かにpreforkだとあの場合すぐプロセスが埋まっちゃいますよね」とか自分も分かったよう…

AJaxとかhistoryとかの補遺

なんか自分で「hashとpushStateの両対応はこういう風にめんどくさいんです」とか煽っておいてアレだけど、ここ最近は「(スマートフォンに関しては)別に両対応いらなくね?」という気分になっている。というのは、元々両対応のコードはスマートフォンのブラ…

本当はそれなりに面倒くさいJavaScriptとhistoryとAjaxのお話

口上 historyとAjaxといえば、JavaScriptからある程度任意でhistoryのエントリをpushできるhistory.pushStateとか、history.replaceStateは既に大分有名になった感がある。素晴らしい未来では、全てのブラウザにpushStateが乗っていて「location.hashを使っ…

新・循環参照によろしく

前回までのあらすじ Sinon.jsのspyをぱくったSub::Spyとかいうモジュールを作る ↓ blessせずに特定のcoderefにひもづいたデータを保存したい ↓ @__gfx__「それHash::FieldHashで出来るよ!」(参照: http://d.hatena.ne.jp/__gfx__/20111015/1318640600) ↓ …

続Sub::Spy

結局こんなインタフェースにした。 use Sub::Spy qw/spy inspect/; my $subref = { $_[0] + $_[1]; }; my $spy = spy($subref); $spy->(1, 2); my $i = inspect($spy); $i->called; # 1 (true) $i->called_once; # 1 (true) $i->called_twice; # 0 (false) $…

bashでzshのhistory-begining-search-backward相当

ゆとりなので、remote環境etcでbashを使うときにzshのhistory-begining-search-backward相当ができなくてすごいイライラしてたんだけどhttp://futuremix.org/2008/08/bash-history-searchちゃんと調べたら.inputrcで出来るっぽい。そしてこれだと影響範囲がr…

Sub::Spyとか作った、けどナントカの夜は明けない

TestのmockやらVerificationやらの話を聴いて、そういやサブルーチンリファレンスを一回くるんで引数/返り値/投げられた例外を記録してくれるサブルーチンリファレンスもどきを、Sinon.JS (http://sinonjs.org/) のspyみたいな感じで実装できないかなあ、と…

Webページに適当な個人的メモ書きを残すためのブックマークレット

YAPC::Asia 2011のタイムテーブル (http://yapcasia.org/2011/timetable.html) に、「みる」「絶対みる」「まあ見る」とかそういう個人的なメモ書きを残したかったのでつくった。http://dl.dropbox.com/u/439702/bookmarklet/memomo.htmlダブルクリックでそ…

DartのPromiseでモナド

class MonadPromise<E> { Promise<E> pure(E e) { return new Promise.fromValue(e); } Promise<E> bind(Promise<E> p1, Promise<E> f(E e)) { Promise<E> p2 = f(p1.value); return p2; } } main() { Promise<num> dbl(num n) { return new Promise.fromValue(n * 2); } MonadPromi</num></e></e></e></e></e></e>…

Firebugのinspect用hint, contenteditable hint

特定の要素をFirebugでinspectしたい時に、いちいちその要素をマウスでクリッコするのがめんどくさいからつくった。 " firebug inspect mode hint js <

iPhone, Androidでの日本語入力監視メモ

DOM Level3で規定されているComposition Eventを使うと、IMEの入力開始 -> compositionstart, IMEで文字追加,変換 -> compositionupdate, IMEで変換確定 -> compositionend, という風にIMEによる英語以外の文字の入力をイベントとして受け取ることが出来るこ…

うんたらかんたら

プロファイラ(関数単位で出るやつ)でパフォーマンス測りたいときに、長い関数があると分かりにくくなっちゃうから function myLongFunction() { ... (function doAPartOfTheWork() { ... })(); ... } ってする、っていうのがHTML5 Rocksの記事に書いてあっ…

さよならを教えて

Term::ANSIColor::Relaxなんとかの、autoboxやめた版を作ってたのを思い出した。autoboxはオワコンだ、とid:xaicronに言われたので。ついでに元のは消した。https://github.com/zentooo/p5-term-ansicolor-simpleというか、初めからこのインタフェースで良か…

やったーJavaScriptの動くMySQLできたよー

※ネタです ※UDFです Mysql 5.1 Plugin Development作者: Andrew Hutchings,Sergei Golubchik出版社/メーカー: Packt Publishing発売日: 2010/08/30メディア: ペーパーバック購入: 1人 クリック: 45回この商品を含むブログ (2件) を見る しばらく積ん読してい…

Aardwolfにみるブラウザに頼らないブレークポイントの実装

weinreっていう、iPhoneやらAndroidやらの実機(別に実機じゃなくてもいいんだけど)で見ているWeb画面のJavaScriptをリモートdebugできるツールがあって、これは割と有名。http://alpha.mixi.co.jp/blog/?p=3248有名なんだけど、試してみると普通にブレーク…

memcachedとRedisの生存戦略、というかmemory allocation戦略

ちょっとmemcached & Redisについて調べたのでめも。ちなみに、生存戦略って言葉は最近Twitterでよく見るから使ってみただけで、実際に何かは知りません。歌か何かかな。ちなみに見ているソースについては、memcachedは1.4.6、Redisは現時点でのgitの最新(多…

あいだの何か

適当な、本当にすごい適当なWebアプリケーションが必要なんだけど、既存のうぇぶあぷりけーしょんフレームワークの書き方を思い出すのがだるい、generator的なscriptを叩くのすらだるい、さらには「ここにルーティング設定書いて、ここにテンプレート置いて…

あれやらこれやら

(前略)Log::HandyからData::UtilとClass::Loadへの依存を消した。Data::Utilは自動dumpしたいもの(scalar値)と自動dumpしたくないものの区別にのみ使っていたんだけど、会社で審議した結果「全てdumperに食わせればよくね?」ってことに。また、Class::L…

結局Jasmineで非同期のテストを書く場合にはどうするのがcoolなの…

waits(500)とかあんまりだし、でも調べてもなんかみつかんないので誰か教えて下さい...

JavaScriptが100ms以上実行されてると怒られるようにする

http://www.slideshare.net/nzakas/high-performance-javascript-2011わかりやすいスライドだなー、と思いつつ。1つのJavaScript job(わかりにくい表現だけど、event handlerとかtimerからキックされるJS code)の実行は目安として100ms以下に抑えましょう…

iPhone/Androidにタッチ!

stats.js (https://github.com/mrdoob/stats.js) という、JavaScriptでfpsもどきの値を出すライブラリをiPhone/Androidで試していた時に気づいたんだけど、iPhone/AndroidのWebKitではデフォルトのスクロール中はsetIntervalの監視が無効になっているっぽい…

iPhoneをhtmlなプレゼンのリモコンにするための何か

会社でid:gfxさんがWebSocketを使って夢が広がるエクストリームなプレゼンをしてくれたので、海外の空気を読まずに作ってみました。https://github.com/zentooo/SkyWalk端的に言うと、Socket.IOを通じてリモコンとなるiPhone/Android(?) のブラウザでキャッ…

Log::Handyとかそんなものをでっちあげた

Mandyではありません。Handyです。 http://github.com/zentooo/p5-log-handy 個人的にLoggerにあってほしいのは 色々な場所への出し分け/同時出力が出来る(STDOUT, file, syslogくらいがとりあえずあればいいけど) インタフェースが煩雑でない(例えば$sel…