2013年2月28日 星期四

ASP.Net MVC4 - Web API



Resource 與 HTTP 方法的對應

資源資源說明GETPUTPOSTDELETE
http://kkbruce.net/Products/Products是一組資源集合列出 該組資源集合中每個資源的詳細資訊更新 當前整組資源新增 或附加一個新資源。該操作傳回新資源的URL刪除 整組資源
http://kkbruce.net/Products/1Products/1是單個資源取得 指定的資源的詳細資訊更新 或新增指定的資源新增 或附加一個新元素刪除 指定的元素

KingKongBruce 系列文章

2013年2月26日 星期二

[遠端] Windows 與 Mac xos 的相互連結

  • 從 Mac 遠端到 Windwos 使用 Microsoft Remote Desktop Connection Client for Mac ( RDC )
    與一般 Win 對 Win 的遠端桌面連線無異。
  • 從 Windwos 遠端桌面到 Mac 則需使用 TightVNC
    使用 TightVNC ,需先在 Mac 端設定 VNC 連線及密碼。
    登入完關掉 VNC 前要先手動登出 Mac 端使用者

    [Mac OS X 10.6.2]->[系統偏好設定]->[共享]->[遠端管理]
    “電腦設定”
    勾選 “VNC 檢示程式可以使用密碼來控制螢幕” ,並且填寫密碼。

2013年2月21日 星期四

Xcode Git-TF


http://git-scm.com/

Why Git is better than SVN

http://www.worldhello.net/2012/04/12/why-git-is-better-than-svn.html

SourceTree - 好用的 Git / Mercurial GUI 管理工具 for Mac OS X

GotGitHub

Git GUI Clients


Mac下配置Git-TF來連接TFS2012

Git-TF是微軟提供的讓TFS Server支持Git的工具,但網上幾乎沒有文章來針對Mac OS下安裝Git-TF的說明,Mac下配置Git-TF的操作步驟如下:

下載文件

請從官方地址下載:Git-TF for Visual Studio Team Foundation Server 2012
下載後,解壓縮文件到本地,本例中,解壓縮到/Users/[ME]/Git-Tf 目錄,其中[ME]是當前登錄用戶名

添加環境變量

添加環境變量要在MAC中添加環境變量,保證能訪問到Git-Tf的目錄,參考如下步驟

  1. 打開Terminal命令行窗口,並進入用戶根目錄

    cd ~/
  2. 驗證.profile 文件是否存在:

    ls -la | grep ".profile"
  3. 如果文件沒有找到,用命令行創建:

    touch .profile
  4. 打開.profile問津,並編輯

    open .profile
  5. 在文件底部添加如下代碼,其中"/Users/[ME]/Git-Tf/"請修改為你的Git-Tf目錄

    export PATH="/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/":$PATH
    export PATH="/Users/[ME]/Git-Tf/":$PATH
  6. 保存,並關閉文本編輯窗口,回到命令行窗口,輸入如下命令行:

    source .profile

獲取項目

重新啟動命令行窗口,輸入如下命令測試,其中的shanghai\liujunmin 請替換自己的TFS登錄賬號:

git tf clone http://pd-tfs2012:8080/tfs $/demo
Username:shanghai\liujunmin
Password:***********

保存帳號密碼

如果要保存賬號密碼,可以用如下命令,其中的shanghai\liujunmin 請替換自己的TFS登錄賬號:

git config git-tf.server.username "shanghai\liujunmin"
git config git-tf.server.password ***********

配置完成

試用後,發現Git-tf可以在XCode中進行Commit,但不能直接在XCode中Push,只能在命令行中調用Checkin命令去提交

2013年2月2日 星期六

log4net



  • 官方網站
     
  • 可將 Log 寫入文字檔 或 寫入 資料庫中

設定檔 log4net.config 說明

  • 輸出訊息,訊息有五種等級由低而高為Debug、Info、Warn、Error、Fatal,訊息要輸出那一等級的訊息,由<root>裡的<level>設定,如果設定檔設為INFO,則所有大於等於INFO的訊息都會輸出。

寫入文字檔

  • 官方說明文件
  • appender 標籤 - 輸出格式的設定
    1. type: 輸出類型,例如 ConsoleAppender 為主控台輸出、RollingFileAppender 為文字檔輸出
    2. file: 輸出檔案的路徑位置
    3. layout: 記錄的格式設定
  • logger 標籤  - 記錄器,可自訂設定屬性(可多個)
    1. level: 記錄級別設定
    2. appender-ref: 指定參考的Appender設定
  • root logger 標籤 - 為根記錄器,當其他記錄器執行完後最後會執行根記錄器(唯一)

Logger Level - 等級由高向低排序

  • Off :表示最高的等級,如果一個logger的等級標記為Off,將不會記錄任何信息;
  • Fatal :表示非常嚴重的錯誤等級,記錄極有可能導致應用程序終止運行的致命錯誤信息;
  • Error :表示較嚴重的錯誤等級,但是程序可以繼續運行的信息;
  • Warn :表示可能對系統有損害的情況;
  • Info :默認的等級,當日誌等級配置為Info時,真正的等級不一定是Info,而是LoggerRepository.LevelMap["INFO"],雖然這個默認值是Info,但是可以通過重新配置日誌等級映射來改變;
  • Debug :這個等級表示用於調試程序的正常的事件信息;
  • All :表示最低的日誌等級。

PatterLayout的格式化字符串:

Conversion Pattern NameEffect
a等價於appdomain
appdomain引發日誌事件的應用程序域的友好名稱。(我在使用中一般是可執行文件的名字。)
c等價於  logger
C等價於  type
class等價於  type
d等價於  date
date
發生日誌事件的本地時間。使用  %utcdate輸出UTC時間。date後面還可以跟一個日期格式,用大括號括起來。例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}如果date後面什麼也不跟,將使用ISO8601格式。
日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。
另外log4net還有3個自己的格式Formatter。它們是"ABSOLUTE", "DATE"和"ISO8601"分別代表  AbsoluteTimeDateFormatter ,DateTimeDateFormatterIso8601DateFormatter例如:%date{ISO8601}%date{ABSOLUTE}
它們的性能要好於ToString。
exception
異常信息
日誌事件中必須存了一個異常對象,如果日誌事件不包含沒有異常對象,將什麼也不輸出。異常輸出完畢後會跟一個換行。一般會在輸出異常前加一個換行,並將異常放在最後。
F等價於  file
file
發生日誌請求的源代碼文件的名字。
警告:只在調試的時候有效。調用本地信息會影響性能。
identity
當前活動用戶的名字(Principal.Identity.Name).
警告:會影響性能。(我測試的時候%identity返回都是空的。)
l等價於  location
L等價於  line
location
引發日誌事件的方法(包括命名空間和類名),以及所在的源文件和行號。
警告:會影響性能。沒有pdb文件的話,只有方法名,沒有源文件名 ​​和行號。
level
日誌事件等級
line
引發日誌事件的行號
警告:會影響性能。
logger
記錄日誌事件的Logger對象的名字。
可以使用精度說明符控制Logger的名字的輸出層級,默認輸出全名。
注意,精度符的控制是從右開始的。例如:logger名為"abc",輸出模型為%logger{2} ,將輸出"bc"。
m等價於  message
M等價於  method
message
由應用程序提供給日誌事件的消息。
mdc
MDC (舊為:ThreadContext.Properties)現在是事件屬性的一部分。保留它是為了兼容性,它等價於  property
method
發生日誌請求的方法名(只有方法名而已)。
警告:會影響性能。
n等價於  newline
newline
換行符
ndc
NDC (nested diagnostic context)
p等價於  level
P等價於  property
properties等價於  property
property
輸出事件的特殊屬性。例如:  %property{user}  輸出user屬性。屬性是由loggers或appenders添加到時間中的。有一個默認的屬性" log4net:HostName"總是會有。
%property將輸出所以的屬性。
(我除了知道可以用它獲得主機名外,還不知道怎麼用。)
 
r等價於  timestamp
t等價於  thread
timestamp
從程序啟動到事件發生所經過的毫秒數。
thread
引發日誌事件的線程,如果沒有線程名就使用線程號。
type
引發日誌請求的類的全名。.
可以使用精度控制符。例如:類名是"log4net.Layout.PatternLayout",格式模型是 %type{1}  將輸出"PatternLayout"。(也是從右開始的。)
警告:會影響性能。
u等價於  identity
username
當前用戶的WindowsIdentity。(類似:HostName/Username)
警告:會影響性能。
utcdate
發生日誌事件的UTC時間。後面還可以跟一個日期格式,用大括號括起來。例如:%utcdate{HH:mm:ss,fff}或者%utcdate{dd MMM yyyy HH:mm:ss,fff}如果utcdate後面什麼也不跟,將使用ISO8601格式。
日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。
另外log4net還有3個自己的格式Formatter。它們是"ABSOLUTE", "DATE"和"ISO8601"分別代表  AbsoluteTimeDateFormatter ,DateTimeDateFormatterIso8601DateFormatter例如:%date{ISO8601}%date{ABSOLUTE}
它們的性能要好於ToString。
w等價於  username
x等價於  ndc
X等價於  mdc
%
%%輸出一個百分號



參考資料:

2013年1月28日 星期一

AttributeRouting

Define your routes directly on actions and controllers in:
ASP.NET MVC OR ASP.NET/Self-Hosted Web API

RESTful

WEB API ROUTING 網址路由

  • Web API 使用HTTP 方法的名稱慣例(naming convention)來替代。你也能明確在 action 方法上指定使用 HttpGet, HttpPost, HttpPut, HttpDelete 屬性。

     如果說我們使用的方法名稱不是 Get/Post/Put/Delete 的規則時,我們就一定要宣告它的接受動詞 (Accept Verb)。

    AccecptVerb 內寫入需對應的 HttpMthod


     
  • 在一個 RESTful API,你應該避免在 URI 使用動詞(verbs),因為 URI 應該是定義資源而不是action。
  • 如果要預防一個 action 被呼叫,可以使用 NonAction 屬性。這是一個信號跟 Framework 說此方法不是一個 action 方法。
參考資料:

2013年1月20日 星期日

iOS delegate

iPhone 地圖 app

Objective-C的記憶體管理

Objective-C VS C#

Xcode:開發IDE,像是 Visual Studio 或 Netbeans 或者 ShareDevelop。
Cocoa:函式庫,像是 MFC、.NET、Swing


  • 減號 ( 或加號 )

    C#
  • private void hello(bool ishello)
    {
       //OOXX
    }
    
    Objective-C
    -(void) hello:(BOOL)ishello
    {
       //OOXX
    }
    
    在 Objective-C 中沒有 public 和 private 的概念,可以認為全是 public。
    加號的意思在於其他函數可以調用這個類中的這個函數,而不用創建這個類的實例。

  • 中括號

    中括號可以認為如何調用你剛才寫的方法,通常在 Objective-C裡叫做「消息」。

    C#
      this.hello(true);
    
    Objective-C
      [self hello:YES];
    
  • NS****
    Jobs被Apple公司的CEO史考利趕出Apple後,建立的公司叫 NextStep,後來 Apple 買下 NextStep,就有了後來的 Mac OS X。
    NextStep 除了變身為 Mac OS X 也變成現在 iPod、iPhone、iPad 上的 iOS

    這些開發NextStep的人們比較自戀地把函數庫裡面所有的類都用NextStep的縮寫打頭命名,也就是NS****了。比較常見的比如:
  •   NSLog
      NSString
      NSInteger
      NSURL
      NSImage
    
      NSLog (@"%d",myInt);
    
    NSLog 主要是在 console 裡追蹤使用。

    還有一些其他開頭的類別
    CF:Core Foundation
    CA:Core Admination
    CG:Core Graphics
    UI :User Interface
    等...

    2013年1月8日 星期二

    檢查頁面否有輸入特殊字元

      
        
        String strReturnPageUrl ="www.google.com";
    
        protected void Page_Error(object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError();
            if (ex is HttpRequestValidationException)
            {
                Session.Clear();
                JSUtil.AlertSussTranscation("請勿輸入特殊字元!", strReturnPageUrl);
            }
        }
     

    2013年1月6日 星期日

    中止操作被 WSACancelBlockingCall 呼叫打斷

    • WSACancelBlockingCall呼叫打斷 --> 最簡單的方式, 攔截 (Try Catch), 然後不理它, 因為處在 Receive 的狀態, 另一方斷線一定會引發這個 Execption。
    • 在同步Accept的等待狀況下, 一旦被打斷就會出現這個Execption. 一般是可以攔截此例外做處理就好。

    資料來源

    dynaTrace應用程式效能監控

    聚碩科技
    dynaTrace應用程式效能監控

    PA & Spotlight


    Spotlight 

    資料庫即時監控模組

    PA ( Performance Analysis )

    資料庫效能分析工具

    參考資料
    ( PDF ) Performance Analysis for Oracle

    2013年1月5日 星期六

    免費圖示網站 Glyphish


     Glyphish


    使用此網站的免費版圖示完全不需付費,只需記得在你的軟體介紹裡提及圖片是從 glyphish 而來即可。

    2013年1月4日 星期五

    Objective-C 基本教學

    Objective-C 的 Nil、nil 與 NULL
    The difference is that while NULL represents zero for any pointer, nil is specific to objects (e.g., id) and Nil is specific to class pointers.
    • nil : 正常來說,它所指的是一個物件對象,而這個對象的指標指向空 Empty。
    • Nil : 用來區別所指向的對象是一個類別 Class 而非物件。
    • NULL : 任何指向空值的指標 ( 可以想成當成一個數值來使用 )。

    Objective-C 基礎筆記

    • NULL 是使用 nil ,且 nil 是能夠傳遞訊息的,例: [nil Message];
    • BOOL 在 Object-C 型態為 YES 跟 NO;
    • 盡量使用 #improt 不使用 #include
    • 使用 NS 為型別的前輟名,例: NSString, NSNumber
    • ARC(Automatic Reference Counting) 支援 iOS 4.0 以上SDK
    • 在方法中開頭為 「+」號的是靜態方法,「-」號的是實例方法,例: +(void) helloWold; -(NSString) helloWorld;
    • .h 為標頭檔,做為宣告屬性及方法使用, .m 為Objective-C檔,做為實際編寫屬性值及方法內容使用。
    • 屬性宣告需要在 .h檔的 @interface { ........ } 之中
    • 方法宣告需要在 .h檔的 @interface {} .............. @end 之中
    • 方法實作需要在 .m檔的 @implementation {} ......................... @end 之中
    • 如宣告屬性需要在 .h檔加入 @property ,並且在 .m檔加入 @synthesize,例:
      .h > @property (nonatomic, retain) NSString userName;
      .m > @synthesize userName = _userName;
      使用 self.userName = @"Arvin"; 方式操作
    • 如宣告型別為 NSInteger, CGFloat, int, float, double, char 時,@property 需使用 assign
    • retain:保留, release:釋放, alloc(Allocation):分配, dealloc(Destruction):銷毀
    • 呼叫方法的方式為
      .h > -(void) MethodName;
      .m > -(void) MethodName {  ....... };
      呼叫使用 [self MethodName];
    • 呼叫帶參數方法為
      .h > -(void) MethodName:(NSString*) arg1 withAge:(int) arg2;
      .m > -(void) MethodName:(NSString*) arg1 withAge:(int) arg2 { ......... };
      呼叫使用 [self MethodName: @"Arvin" withAge: 27];
    • Sleep 的方法為 [NSThread sleepForTimeInterval:1];
    • #pragma mark - 可以標註區塊,例如: #pragma mark - 更新方法
    資料來源:

    Objective-C 教學網站


    分享 NB Wi-Fi


    2013年1月1日 星期二

    Xcode 使用


    教學網站


    使用Objective C 創造類別

    類別的宣告

    @Interface + 類別名稱 + @end
    ex:
    @Interface Dog
    @end

    類別的繼承

    @Interface + 類別名稱  + :+ 父類別名稱 + @end
    ex:
    @Interface Dog : Animal
    @end

    • Objective-C 不予許多重繼承。

    類別的 member

    @Interface + 類別名稱  + :+ 父類別名稱 + {
            member 1 的type + member 1 的大名 + ;
            member 2 的type + member 2 的大名 + ;
    }
    @end
    ex:
    @interface MyController : UIViewController {
       SString *name;
       BOutlet UIButton *myButton;
    }
    @end
    

    • NSString 是類別名稱,name 是個物件,在 Objective-C裡,宣告物件時必須加上星號。
    • NSObject 是所有類別的祖先。
    • NSString 為 iOS SDK 的 Foundation Framework 裡定義專門處理字串的類別。
    • Objective-C 的程式碼裡,也可以參雜 C 和 C++ 的語法和 API
    • 在 iOS SDK裡,隨處都可以看到以 NS 開頭的型別,NSNumber 即是處理數字的類別,NSArray 即是處理陣列的類別。





    Java Queue