2013年3月1日 星期五

DataContractJsonSerializer 序列化成 JSon時,欄位名稱主動擴展的問題


  • 前言
    • DataContractJsonSerializer 反序列化物件時,發現 Json 的欄位名稱多了"k__BackingField"。
      查找問題時發現是 Serializable 屬性造成的。
  • 主文
    • 解決方法:物件屬性加入 DataContract, DataMember
    • 如下:
    • JSON的內容: "{\"Name\":\"Adm\",\"PID\":\"1\"}"
      1. "ID" 因為設定屬性 Name="PID" 所以 JSON 的 Key 為PID
      2. Age 沒設定 DataMember 所以沒有值。
  • 參考

C# 用 sqlite 筆記

單純筆記


2013年2月26日 星期二

Silverlight 無法進入 breakpoint


  • 前言
    • 執行 Silverlight 專案時,無法進入 Breakpoint。
  • 主文
    • 下面有我試過的方式,包括很無腦的動作 ...
      1. 結束 ASP .Net Framework Develope Server
      2. 網頁更新數次:
        • 有時候是 browser 問題
      3. 修改專案的 Property(這才是正解!!):
        1. 打開引用 Silverlight Web 的專案,記得是 Web 的,不是Silverlight 專案本身。
        2. 打開專案的 Properties,選擇 Web
        3. Debuggers 項目(最下面),勾選 Silverlight,完成。




2013年2月6日 星期三

Node.js筆記 - 加入自己的 module


  • 前言
    • 我們可以將不同的 method、function,放在不同的實體檔案(xxx.js),之後再根據需要,適當的用  require('./xxx') 語法加入。
    • 這裡只談加入自己的文件,而module 的機制可以看參考提供的連結。
  • 主文
    • 加入自己的 module 有幾種方式:
    1. 使用 require("檔案名") 的方式直接引入單一檔案
      • 檔案名必須由 ./ 開頭。Ex. require("./route.js");
      • 可簡略附檔名(.js);實際上Node.js 會搜尋附檔名決定引用方式。
      • 三種附檔名
        1. .js:通過 fs 讀取檔案,同時編譯執行內容。
        2. .json:使用 JSON.parse( ) 解析檔案。
        3. .node:通過 C/C++ 所寫的Add On,使用dlopen方式載入。
      • 檔案名可以包含相對路徑。Ex. require("./../public/routes/user.js");
    2. 使用 require("資料夾名") 引入資料夾底下的所有檔案。
      • 同樣可包含相對路徑。
      • 資料夾底下要包括 index.js 檔案。
      • 可在 index.js 內容引入資料夾內的其他檔案。
        • exports.something = require("./routes/something.js");
        • exports.something = require("./routes/others.js");
    3. 使用 package.json:
      • 這方法在此不討論,跟 npm 的機制有關。
  • 參考

2013年1月29日 星期二

Node.js 筆記 - npm install (-g) 差別 - Local V.S Global

  • 前言
    • 使用 npm 安裝元件時, 有兩種模式- local & global
  • 說明
    • npm install (-g)
    • local:
      • 預設的安裝方式  npm install  
      • 安裝位置在當下資料夾的  ./node_modules
      • 使用  require()  語法時, 用此安裝方式
    • global:
      • 必須明確加入 npm install -g   指令
      • 安裝位置在 /usr/local 底下, 或是 node.js 安裝的資料夾
      • 以 command line 的方式使用。
  • 範例
    • express 安裝為 global 時, 可以使用 command line 建立基本的 Web 專案
  • 參考

2013年1月17日 星期四

Node.js筆記 - 非同步的try/catch

執行非同步的 methods 時,
若要用try/catch 去抓錯誤,
需要特殊的方式

參考如下
http://syshen.cc/post/10726736762/catch-exception-thrown-in-javascript-callback

http://benno.id.au/blog/2011/08/08/nodejs-exceptions

2013年1月11日 星期五

Node.js筆記 - REPL

說明
Repl 指的是交互作用的介面
簡單的說 我們可以直接在如 終端機, 執行 node 的指令
可參考 (http://nodejs.org/api/repl.html)

幾項重點

  1. 可以同時開啟多個 REPL的介面
  2. 共用所有的全域變數
  3. 擁有各自的IO
  4. 可用 repl.start(), 啟動一個 repl
  5. _ => 代表上一個表達示(expression)的執行結果
  6. 特殊的 Command:
    • .break:中斷目前的輸入, .break前面打的訊息 都不算數
    • .clear:將context 重置為空的物件, 還有清除 multi-line expression.
    • .exit:退出當前的 repl
    • .help:展示有哪些特殊的 Command.
    • .save:將目前 repl 的 session 存在檔案裡,
      • Ex. .save ./file/to/save.js
      • 預設起始位置為呼叫 node 指令時的資料夾
    • .load:將上面存起來的檔案, 載入到當前的 session.
      • Ex. .load ./file/to/load.js
  7. Ctrl:
    1.   Ctrl + C:如同 .break
    2.   Ctrl + D:如同 .exit
  8. Tab鍵:自動填滿變數名稱, 若有多個可能, 則會顯示所有選項.