- JSCONF 2011 js 著名的會議 2011 年
- JSCONF 2011 Slide 投影片
- 李松峰 blog 很多 web 優良文章翻譯
- JavaScript,只有你想不到
- 理解 JavaScript 閉包
- traceur 支援新的 js 特性並將其編譯成目前瀏覽器看得懂的版本的翻譯年糕
分類: 程式設計
printf and write
一般在使用 printf 都會直接將結果印出在螢幕上,都不會發生問題,也不會發現其實 printf 的行為背後其實有一個緩衝區在紀錄。除非遇到 \n 或 程式結束,或者有其他東西要輸出,否則不會自動 flush 緩衝區,要強制清空緩衝區可以使用 fflush(stdout) 。
而 write(1 /*stdout*/, buffer ,size) 則可以直接將字串印到 stdout 中,不經由緩衝區處理。
在一般的情況下還是 printf 效能會比較好,在多執行緒或多行程的情況下也比較不會有不合乎預期的情況發生。例如 兩個行程同時輸出 output 變成 ooututppuutt 之類的。
會發生這種現象通常是在無窮迴圈的程式,由於程式沒有結束,又沒有輸出一些換行符號,造成輸出一直卡在緩衝區中。
#include <stdio.h> int main() { while(1) { printf("hello");// printf("hello\n") sleep(1); } }
參考資料:
GAE 的很多件事筆記…
轉載跟紀錄一些蒐集到的 GAE 資料。
Continue reading…
appengine 全文搜尋
appengine 的 GQL 不支援像 SQL 一樣的 LIKE %string%,所以有一些專案來解決這些問題,大概都是撈出來用 pythno 做吧…
appengine search
http://www.billkatz.com/2009/6/Simple-Full-Text-Search-for-App-Engine
https://github.com/DocSavage/appengine-search
Whoosh-Appengine
https://github.com/tallstreet/Whoosh-AppEngine
WordPress 3.2.x SlimStat-Ex 2.1 issue
可能是 WordPress 3.2.1 的 jQuery 版本變更了,造成 SlimStat-Ex js 執行錯誤,造成整個頁面無法產生。
把這行改成這樣就好了。
if (!((el.attr('title') == '') || (typeof(el.attr('title')) == 'undefined'))) {
看起來是 jQuery().attr(‘title’) 是空值時的回傳值改變了。
—
由於原始版本已經沒有維護了,這個版本的瀏覽器判斷有些舊了,沒有把 chrome 包含進去,我想要把他加入統計所以改了一些地方~
程式碼是參考原始的 slimstat 的
function parse_browser(..) { .. 432 } else { 433 $info['version'] = $sniff[3]; 434 } +435 if($info['browser'] == '190' || $info['browser'] == '191') { +436 mb_eregi( "^([0-9]*).(.*)$", $info['version'], $v ); +437 $info['version'] = $v[1]; 438 } 439 if ( sizeof( $sniff ) == 5 && $info['platform'] == '-1' ) { 440 $info['platform'] = $sniff[4]; 441 } .. } function _determineBrowser(..) { .. 455 array( 'netscape', '1', 'netscape[0-9]?/([[:digit:]\.]+)', 1 ), +456 array( 'chrome', '190', 'chrome/([[:digit:]\.]+)', 1 ), +457 array( 'chromium', '191', 'chromium/([[:digit:]\.]+)', 1 ), 458 array( 'safari', '2', 'safari/([[:digit:]\.]+)', 1, '10' ), 459 array( 'icab', '3', 'icab/([[:digit:]\.]+)', 1, '10' ), .. }
$this->browserString2ID = array(....., 'Chrome' => '190', 'Chromium' => '191');
$id2browser = array(.. 190 =>'Chrome' , 191 => 'Chromium' .. );
這樣就不會再誤判成 Safari 了,附上我修改完的版本…
or
https://github.com/mlwmlw/wp-slimstat-ex