Big Sky :: 非同期UI
Objective-Cはひとつないと思ったけど非同期処理はあった。しかもしっかりしてる。
UIの開発に有利な言語にはある程度、共通する物があると思う。
* 匿名関数をコールバックとして扱える
* サードパーティでも良いので非同期処理の仕組みがある
* GCが効く
この内、2個か3個あてはまるとUIを扱う上で有利になると思う。
でもjsからやってくると辛い。匿名関数かけないのはめんどいだけだけどGCが効かないのは辛い。
PHPのstaticを知ろう!
たとえば文字列から数字の部分だけを取り出して整数として返す関数を作ることにします。
class Util { function asNumber($s) { return intval( preg_replace('/\D/', '', $s) ); } }
こういうの関数を作って呼び出すときに
$name = 'ku0522';
$util = new Util();
$util->asNumber($name);
このようにUtilのインスタンスを作ってそのメソッドとしてasNumber()を呼び出していませんか。
PHPだと
<?php (new Util())->asNumber($name); ?>
とするとエラーになっていちいちnewするのがめんどくさいですよね。
こういうthisを参照しないメソッドを呼ぶときは関数にstaticとつけてあげればnewする必要がなくなります。
class Util { static function asNumber($s) { return intval( preg_replace('/\D/', '', $s) ); } }
このようにfunctionの前にstaticつけるだけで
<?php Util::asNumber($name); ?>
こう書くことができるようになります。
chromeのヒストリ検索の謎
実装はsqliteのfull text searchで細かいところは見てないけど動作がよくわからない。
1. ヒストリを消去
2. googleで"京都大学"を検索 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6
3. chromeのヒストリ検索で京都大学生協を検索 -> ヒットする chrome://history/#q=%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E5%8D%94
4. 京都大学で検索 -> ヒットする chrome://history/#q=%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6
5. 生協で検索 -> ヒットしない chrome://history/#q=%E7%94%9F%E5%8D%94
でも
http://mall.seikyou.ne.jp/shop/WFTankyoTop.aspx?t=6501はヒストリ検索で"生協"で検索したらヒットする。なんで? 文字コードの違いかなあ...
辞書は持ってないようなので単純なn-gramかと思ったら"都大"だとヒットしない。検索した時にそのキーワードを含んでないページもヒットしたりすることもある。ちょっとコード見たら入力されたテキストを加工してから検索してるみたいなので、そこにバグがあって大体正しく動くけどへんになってるとかなのかも。
文字クラス(漢字とひらがな、英数とか)が違うところで単語として分けてるみたいなので、そのクラス分けが正しくないとか? でもそれだと生協現象は説明できないな。
chromiumタンブラーはじめました
Twitter / swdyh: chrome情報おっかけたい、どこみてるの?
Chromium/Google Chrome - 0x集積蔵
Firefoxは一般向けニュースからXPCOMの仕様変更まで、いろんな日本語のブログがあるけれどchromeにはそういうのがない。
みんなでおんなじのを見るのも不毛だからそういうのを立ち上げたらいいんじゃないかと思って、先週からtumblrにchromeタグつけてpostしてみてます。
http://ku.tumblr.com/tagged/chrome
RSSもあります。http://ku.tumblr.com/tagged/chrome/rss
(thx Twitter / cxx: @ku http://ku.tumblr.com/t ...)
tumblr特定タグのついてるものだけのRSSとか出してくれないので、そのうちちゃんと用意したいところです。Tomblooだけでpostできるようなブログをお手軽に新しく作る方法がないかなーとおもってるんですけどいい方法が教えてください。
けっきょく別に作りました。
一番遅いところを速くしないと意味がない
yahoo tech blog祭りに便乗してあんまりyahoo tech blogとは関係ないんだけどひとつ書くよ!
時間が掛かりすぎるので100回にしました。それでもEの例では4秒も掛かっています。
こういう1000回測ってこんだけ速い!っていうのはよく見る。ここでは100回で4秒なのでフォームを作るのに40msかかってる。けっこう遅い。複数これくらいの遅さのやつがあって100msオーダーになってくると多分体感速度でも違ってくる。amazonだと100msで売り上げが1%変わるとかって書いてあるので100msレベルで遅いのは努力して改善できるのなら改善するべき。
あなたのウェブサイトを高速化する方法 - page3 - builder by ZDNet Japan
でも10,000回測って4秒(1回4ms)くらいのレベルだったら、そこに努力を注ぎ込むくらいならほかのところで努力した方がいい。わりとシンプルなJavaScript の不思議な面白さ - 第三回 (Yahoo! JAPAN Tech Blog)のページでもレンダリングされるのに700msくらいかかる。そこで4ms速くしたところで通信にちょっと時間がかかっただけで吹き飛んでしまうので意味がない。
なにがどれくらいの時間がかかってるっていうのを測定しておくのは大切で、その努力して改善させられる実行時間が実行時間全体に与えるインパクトがわかるようになる。わかってないと意味のないところに努力を注ぎ込んでたりすることになる。