Wednesday, February 28, 2007

以為用了 dp.SyntaxHighlighter 就可以放心貼程式碼....

之前在 ingramchen 那看到 dp.SyntaxHighlighter 就很想裝,現在終於裝了....

以為可以放心用力貼程式碼,結果要重新編輯貼了程式碼的文章就出問題,LifeType 的編輯框也用 <textarea>,而且編輯內容裡面的 </textarea> 後端處理沒改成 &lt;/textarea>,整個編輯頁面就很悽慘....

緊急自救一下,把 templates/admin/editpost.template 75行

{$postText}

改成

{$postText|replace:'</textarea>':'&lt;/textarea>'}

算是可以用了....

一直有個疑問,blog 系統都是寫程式的人寫出來的,怎麼本身貼程式碼的支援都很差....Orz(之前試過不少,都不太滿意)

JSON, Object Literal 傻傻分不清楚

Foundations of AjaxAjax in Action 都沒把 JavaScript 中以大括號宣告物件的方式(稱作 Object Initializer 或 Object Literal)和 JSON 講正確,都把 Object Literal 講成是 JSON

Foundations of Ajax 是在 68、69 頁之間有點小誤導,Ajax in Action 則是在 B.2.1 完全講錯,還說 JSON 是 JavaScript 的核心特性(The JavaScript Object Notation (JSON) is a core feature of the language.)

Object Literal 才是 JavaScript 核心特性,JSON 是學 Object Literal 的部分語法而成的,一個資料交換的文字格式

所以絕對不可以說在 JavaScript 中以大括號選告物件是 JSON,它是 Object Literal,例如

var cat = {
name: "Kitty",
miaow: function() { return "喵喵喵" }
};

// 這是 Object Literal,不是 JSON
// 這是 Object Literal,不是 JSON
// 這是 Object Literal,不是 JSON

Object Literal 屬性名稱可以不加引號,但 JSON 中那裡得是一個字串,一定要加引號,而且 JSON 不支援函式,所以:

// 把上面 object literal 屬性加上引號當成字串
var s = '{"name": "Kitty", "miaow": function() { return "喵喵喵" }}';

// 用 JSON 的 JavaScript library 去 parse 回 JavaScript 物件
var o = s.parseJSON();

// 這是 parse 不出來的,因為 JSON 不支援函式
// JSON library 會丟出 parseJSON 的 error - throw new SyntaxError("parseJSON");

將 cat 物件用 JSON 的 JavaScript library 輸出 JSON 字串,也不會包含函式部分

cat.toJSONString()
// '{"name":"Kitty"}'

雖然字串 s 如果用 eval 可以成功變回 object

var o = eval('(' + s + ')');
o.name
// "Kitty"

o.miaow()
// "喵喵喵"

不過這是因為 eval 接受的是 JavaScript,s 是一個合法的 Object Literal 所以 eval 接受,但 s 不是一個合法的 JSON

JSON 格式是 Object Literal 的子集,所以合法 JSON 資料,eval 一定接受,反過來則不一定,合法的 Object Literal 不見得符合 JSON 格式


  • 留言者: 小笨笨
  • Email: pbird123@secureix.com
  • 網址:
  • 日期: 2007-05-09 00:59:36
「JSON is a subset of the object literal notation of JavaScript」!?

有時候看了wikipedia上面的說明,會讓人困惑

Sunday, February 4, 2007

Portable NetBeans

把 jdk1.6.0、netbeans-5.5 兩個目錄複製到隨身(硬)碟裡

再修改 netbeans-5.5/etc/netbeans.conf 這兩行

netbeans_default_userdir="../.netbeans/5.5"

netbeans_jdkhome="../../jdk1.6.0"

就可以了

Friday, February 2, 2007

PermGen space

之前 Eclipse 一直爆掉....看 log 都有一行

java.lang.OutOfMemoryError: PermGen space

不過也沒想到要改什麼,看了 NetBeans 的 netbeans.conf 才想到學著在 eclipse.ini 裡面照樣加

-XX:MaxPermSize=160m

就沒爆了....Orz