發表文章

目前顯示的是 2009的文章

Javascript 飛向雲端 @ COSCUP 2009

今年有幸於 COSCUP 2009 跟大家分享 javascript 於雲端的發展與潛力。 Slides 簡報內容: 若有任何問題,歡迎一同討論。 Video 影像紀錄: http://www.youtube.com/watch?v=M57UELMrYGI (1/3) http://www.youtube.com/watch?v=GSbfS6O7kG4 (2/3) http://www.youtube.com/watch?v=OZU4uM-Jv4A (3/3)

把不小心關掉的 tab 分頁救回來

常常不小心關錯 tab 分頁又找不回來嗎? 這裡有個方法把你不小心關掉的分頁救回來。只要開個新分頁,右下角會列出最近關閉的網頁。 :) 影片教學: Lost a tab? Not to worry.

讓你的 Chrome 跑的順暢 不再卡卡的方法

大多數的人一開始使用 Chrome 瀏覽器都會愛上它的反應快速,但是隨著分頁愈開愈多的時候卻發現 Chrome 的反應急遽下降,變的頓頓卡卡的,這其實是因為 Chrome 預設會一直釋放資源,如果你的系統有充足的記憶體,其實只要在啟動命令列後面加上 --memory-model=high,就可以讓你的 Chrome 跑的順暢許多,不再卡卡的。 參考: Chromium Developer Documentation - Memory Usage Backgrounder

完美演出

一個音樂家爸爸為他7歲女兒Sarah改編及演奏她最喜歡的流行音樂,非常動聽。 LOVE STORY (Taylor Swift) + VIVA LA VIDA (Coldplay)

Chrome 小字典

由於苦於在 Google Chrome 下沒有 Google 工具列的翻譯工具,常常要開回 Firefox 切來切去又很麻煩,於是乾脆自己動手寫了一個 小字典 add-on for Google Chrome,雖然功能還很陽春,不過本著軟體常常放、大家放的精神,就先放出來給大家試用看看,畢竟比完全沒有還要好一點,看有什麼可以改進的地方,歡迎大家指教。 使用方法如下,在書籤上新增一個網頁,名稱隨便填,然後網址的地方把下面文字方塊裡的文字貼入,就大功告成了。 當你想要使用字典功能的時候,就點一下那個書籤,啟動之後右上角會跳出一個 banner,代表字典在運行,之後只要把滑鼠移到需要翻譯的字上面,就會自動查詢。 把這裡面的東西貼到書籤網址: javascript: function translate(word){ var glf = document.getElementById("glf"); glf.contentWindow.gtrans(word); }; function findAndReplace(searchText, replacement, searchNode) { var regex = typeof searchText === 'string' ? new RegExp(searchText, 'g') : searchText, childNodes = (searchNode || document.body).childNodes, cnLength = childNodes.length, excludes = 'html,head,style,title,link,meta,script,object,textarea,iframe'; while (cnLength--) { var currentNode = childNodes[cnLength]; if (currentNode.nodeType === 1 && (excludes + ',').indexOf(currentNode.nodeName.toLowerCase() + ',') === -1) { arguments.callee(searc

Aza Raskin 給的 UI design talk

很有意思... Don't ake Me Click Away with Applications: The Death of the Desktop

Brainfuck interpreter and jit-compiler in Java

同事之前介紹我一個奇怪的語言,叫做 brainfuck (名字不是很雅,不知道是不是暗示寫程式寫到頭腦發狂...),以下簡稱 bf,說要用 c 語言實做它的 compiler,我聽了覺得有趣,心想反正之前也沒有寫過 compiler,不如就拿這個語言當練習寫個 Java 版的 compiler 吧! 於是就有了這個 project -  bfj  ,一開始先實做 interpreter,做了些許的 optimization,大約快十倍,後來加入 just-in-time compiler ,大約快 5 ~ 10 倍。 在 jit 模式下執行,程式會先把 bf 的 source code 讀進來轉成 IR,做該有的優化,之後轉成 Java bytecode  再 load 進來,然後 JVM 會再跟據 bytecode 執行的狀況把重複執行的部份轉成 native code 來執行。 雖然執行的方式有點迂迴,其他的語言我不敢說,不過在Java上目前我還沒看到更快的實做。 補充一下,動態產生 Java bytecode 的部份用到了 之前提過的   ASM ,dynamic codegen 的技巧在系統需要提供動態行為但是又不想失去效能的情況下常被用到,比方說 spring 跟 hibernate 這兩個 framwork 都需要動態建立許多 proxy ,這個時候就會用這種技巧來產生取代由 reflection 達成的功能以加快速度。hibernate 跟 spring 用的是 cglib,而 cglib 底層也是用了 ASM。 這裡有篇 文章 比較了 reflection 跟 codegen 速度上的分別。 另外還有個叫 JPC 的 project 是用 Java 寫了一個 x86 PC 模擬器,也是用這種方法實做出來的,目前的速度可以玩一些以前的 PC Game,蠻屌的,我個人覺得啦。