What Is Software Design?

程式設計不是 “building software”,而是 “designing software”。

Is Design Dead?

軟體系統的設計是演進來的,不能一步到位,而是要藉由憑繁與使用者互動得到的回饋來修改系統設計。

Programming is Gardening, not Engineering

與其把程式設計比喻成蓋房子,實際上更像是園藝。

Orthogonality and the DRY Principle

所有程式設計活動其實都是維護,因為絕大部分的時間都在改code,寫一點改一點。即使是新專案,也很快需要回頭作修改。

2014年2月26日 星期三

利用sublimall來管理您的 sublime text Packages 版本

step1.

先到sublimall來申請帳號密碼

http://sublimall.org/

step2.
安裝 Sublime Text 3 主程式

主控台視窗,或直接按下 Ctrl + ` 組合鍵

view => show console 

  1. 請注意:這段安裝程式碼,僅適用於 Sublime Text 3 版本!
  2. import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) 

安裝好之後的畫面如下,你可以再按一次 Ctrl + ` 組合鍵以關閉主控台視窗

step3.
 [Preferences] –> [Package Control] 啟用這個 Sublime Text 套件管理員
Ctrl+Shift+P 然後輸入 inst 之後按下 Enter 鍵
Install Package
Ctrl-Shift-P Install Package and type Sublimall to install it.

將sublimall安裝進去


step4.設定您sublimall的email and api key

You just have to click on PreferencesPackage SettingsSublimall and Settings - User.

{
    ////////////////////////////
    //// Sublimall settings ////
    ////////////////////////////
    "api_root_url": "http://sublimall.org",
    "api_upload_url": "/api/upload/",
    "api_retrieve_url": "/api/retrieve/",

    ///////////////////////
    //// User settings ////
    ///////////////////////
    "email": "請輸入您的emil",
    "api_key": "請輸入key",
    // Paths must be: "Packages/SublimeCodeIntel" or "Installed Packages/Sublimall"
    "ignore_packages": [],
    // Set true if you want to exclude packages managed by Package Control
    "exclude_from_package_control": false,
    // Set false if you don't want to encrypt your configuration
    "encrypt": true,
    // Upload timeout in seconds
    "http_upload_timeout": 120,
    // Download timeout in seconds
    "http_download_timeout": 120,
    // Path to 7zip executable, though Sublimall tries to find it out itself
    "7za_path": "",
    // HTTP proxy to use for HTTP requests. Support for authentication
    // Examples: http://user:password@host:port or http://ip:port
    "http_proxy": ""
}




2014年2月6日 星期四

asp.net api mvc4 資料庫 更新 更新.edmx 與 model

step1.尋找已經加入的Model1.edmx的檔案,開啟檔案,找到要更新的table按下右鍵,點選"從資料庫更新模型"進入更新精靈


step2. 更新好後 會發現 .tt檔中的 model沒有跟著更新,請點選.tt檔按右鍵 "執行自動工具"

2014年2月4日 星期二

ASP .NET C# MVC4 寫 Api 自定api說明文件 利用HelpPage套件

STEP1. ASP.NET Web API 的相關路由設定
 App_Start\WebApiConfig.cs 檔案












讓我們的 ASP.NET Web API 永遠只回應 JSON 格式

setp2.替 ASP.NET Web API 的 API 控制器加上註解

我們先為 API 控制器加上 XML 註解,直接在類別上方輸入三條斜線 ( /// ) 就會自動產生 XML 註解範本

























setp3.產生專案的 XML 文件檔案
修改方案總管中的「專案屬性」




切換到「建置」頁籤,再勾選「XML 文件檔案」




預設的 XML 文件檔案會儲存在 bin\ 目錄下,請把內容改成 App_Data\XmlDocument.XML 這個路徑與檔名,之後才能讓 ASP.NET Web API 的說明頁面讀取到這個檔案。



最後執行 建置專案 ( F6 ) 就會自動在 App_Data 目錄下產生 XmlDocument.XML 檔案,而且每次建置都會自動更新此 XML 文件。




step4.透過 NuGet 安裝 Microsoft.AspNet.WebApi.HelpPage 套件


若要安裝 ASP.NET MVC 4 內建的 ASP.NET Web API ( v1 ) 相容的 HelpPage 版本,必須安裝舊版的 HelpPage  套件
安裝舊版套件需要透過套件管理器主控台才能執行安裝命令,如下指令與圖示:
Install-Package Microsoft.AspNet.WebApi.HelpPage -Version 4.0.30506



安裝的過程,它會自動幫你安裝一個名為 HelpPage 的 MVC 子網站 ( Area )

最後,我們開啟 Areas/HelpPage/App_Start/HelpPageConfig.cs 進行設定,把第一行註解取消,即可自動讀入 API 控制器所設定的那些 XML 文件。


config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));

其重點還是在上述陳述式的路徑與檔名必須正確:

"~/App_Data/XmlDocument.xml"

setp4.

我們測試一下,直接瀏覽到 http://localhost/Help 網址


















接下來你可以到 專案 的view的資料夾內 index中
加入聯接過去的方法
<a href="~/Help">API Document 說明書請點這裡</a>



最後小提醒

在撰寫注解的時候<param name =""  如果沒有出來顯示
表示你在你的mvc 方法中沒有設定輸入的參數  只有寫注解他是不會顯示的





參考網頁:http://blog.miniasp.com/post/2013/11/05/Creating-ASPNET-Web-API-Help-Pages-for-ASPNET-MVC-4.aspx

ios AFNetworking 將token包入 header中 比較安全

setp1.
在api溝通中可以將資料放置 header or body  透過ssl



-(void)modifyWater:(WaterSync*)water uuid:(NSString*)uuid completionHandler:(void (^)(NSDictionary *retDic, NSDictionary *errorDic))handler{

    NSString *path = [NSString stringWithFormat:@"v2/Drinkings"];

    NSDictionary *dic = @{@"uuid": water.uuid, @"cc":water.amount, @"drinked_at":water.time, @"auth_token":[[PassionBeanAccount sharedAccount] authToken]};
    
    [self setDefaultHeader:@"auth_token" value:[[PassionBeanAccount sharedAccount] authToken]]; //將token包入header
    
    [self patchPath:path parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"ok");

        [MyWeb handleJsonResponseWithDataWithCompletionHandler:handler error:nil data:responseObject];
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        [MyWeb handleJsonResponseWithDataWithCompletionHandler:handler error:error data:nil errorCode:[operation.response statusCode]];
        
    }];


}