2013年12月26日 星期四

Nuget 無法載入

Nuget 是一個 Open Source 的軟體套件管理器,
因為 Microsoft 開發有太多可以用的套件,
會使得開發者下載使用後維護上的困擾,
透過 Nuget 可以更快速搜尋開發者需要的套件,
並且下載包裝成極其方便維護的 packages 資料夾。
以下小弟就介紹一下 Nuget 安裝、使用、移除,
以及同事遇到 Nuget 無法載入問題解決方法。
小弟是用 Visual Studio 2012才知道有這個東西(近年才有的東西吧...)。

2013年12月25日 星期三

[C#]Convert、Parse、TryParse 差異

上次介紹過Convert(轉型)與Int32(強制轉型)的差別、效能
※基本上強制轉型可以分成:
類型 Example
安全性轉型 is、as (參考MSDN)
強制性轉型 (資料型別)Object
效能上 as -> is -> 強制行轉型,
(有興趣的看倌可以參考DotBlogs)。
以上都不是小弟想說這篇的重點.....ToT
※至於轉型可以分成(Int32為範例):
類型 Example
Convert Convert.ToInt32("")
Parse Int32.Parse("")
TryParse Int32.TryParse("")
上述三種方式都可以進行轉型,
以下是小弟經過Google大神所整理的資料。

2013年12月23日 星期一

[C#]最大公因數與最小公倍數

國小最常考的數學題目,
方法有很多種:表列法、指數法...etc,
網路上有非常好的舉例,
Wiki也寫得相當的清楚
程式部分小弟寫了最簡單的「輾轉相除法」。
(參考:Wiki)

[C#]Convert(轉型)與Int32(強制轉型)的差別、效能

寫程式時常遇到文字轉換成數字,
或是某個資料型別轉成資料型別,
轉型別基本上分為兩種,

//其一為轉型
Console.WriteLine(Convert.ToInt32("5.5"));
//其二為強制轉型
Console.WriteLine((int)(5.5));
但是以上兩種答案卻是不一樣的!!!
所以千萬不可亂用,
小弟就稍微分析一下該兩者不同點,
以及性能上該如何使用較好。
小弟最近就是被這種小小細節...,常常誤會自己的邏輯有問題。

2013年12月20日 星期五

SyntaxHighlighter設定與調整

Read Code in Blog With Syntax-Highlighter
當初只是為了希望Blog的程式可以看得美美的,
但是現在反而成為部落格讀取的負擔,
而且當初還不是很會用...,
後來詳讀了一些官方文件與Google大神,
發現了一些小細節,
事實上官網也說得很明白了,
還附加範例...小弟在此做個比較常用的紀錄。

2013年12月19日 星期四

Auto share blog to Facebook/Twitter

小弟是個很懶的人,
以至於寫完blog以後疲勞指數達到Max,
就懶得在上FaceBook分享文章,
外加上公司整天鎖這鎖那,
每次都需要連外網...,
在此時我突然想到應該有自動分享器才對,
有請Google大神一下就神到了,
目前分享器有一下四種:

LinksAlpha NetWorkedBlogs dlvr.it NextScripts

[C#]輸出數字範圍內所有的質數

數字是否為質數?
這個問題想必大家都有一定的了解,
記得小時候數學常常考100的質數有哪些?
最簡單的方式就是試除法,
根據Eratosthenes演算法
原理就是將數字N當中,
小於等於根號N(√N)的所有質數去試著整除數字N,
若均無法整除,則N為質數,
知道觀念後請看以下範例吧。

2013年12月4日 星期三

[C#]遞迴---費氏數列

身為一個專業的數學家學者,
一定都有聽過或者使用過偉大的「費氏數列」,
正因為有此數列才衍生出樹狀結構(真是高手),
費氏數列原理:
F0 = 1
F1 = 1
Fn = Fn-1 + Fn-2
知道觀念後請看以下範例吧。

[C#]遞迴---基本[1+2+3+...+n & 1-2+3-...-(n+1)]

上次介紹過[C#]遞迴---階乘
小弟就寫一些常常在業界上考試的小範例,
譬如:1+2+3+...+n 與 1-2+3-4+...-(n+1),
請看以下範例。

[C#]遞迴---階層

還記得階層是國中教過的東西,以前覺得好難,
因為大學學機率與統計要計算一大堆,
根據Wiki, 我們可以知道 n! = n × (n - 1) × (n - 2) × ... × (n - n + 1),
在此發現寫程式時最重要的還是邏輯與觀念,
知道觀念後請看以下範例(For Loop & Recursive)。

2013年11月29日 星期五

[C#]擲回Catch且強制離開程式

有時候程式會利用 Try-Catch 來進行,
或是只要遇到 Catch 便會強制離開程式,
以上所描述該如何做到?請看以下範例。

2013年11月28日 星期四

[C#]Random(一般與設定種子)

念碩班時寫的論文程式,
幾乎都是運用 Random 方式,
來解決一些沒有正確答案的問題,
盡可能將結果逼近最佳解,
但是 Random 每次都不一樣,
該如何撰寫該程式呢...?
還好可以將 Random 設定種子,
使得該 Random 一直得到相同的解果,如下範例。

Visual Studio 執行 Console Program 亂碼

小弟之前買了一台 Mac Pro,
並且於 Parallels Desktop 下灌了 WIN7,
在該環境中灌 VS 執行Console Program,
輸出中文的時候結果一直出現亂碼,
找了很久Google,結果答案很簡單,
我忘記設定語言是中文如下圖。

[C#]計算程式執行時間

不管是在學術界或是業界中,
程式執行的時間佔不小的地位,
在科技快速進步下,程式執行的時間當然越快越好,
除了越快越好之外還需要越準確才可以,
但是該如何實作計算?
以下有三種常用的方法,
可以簡單的計算目標程式所花費的執行時間。

2013年11月27日 星期三

[C#]params(彈性引數)

撰寫副程式時,
如果需要動態多個參數,
該怎麼辦呢?
根據MSDN可以利用params
Params也是有些邏輯上的限制,
譬如在使用Params之後不可再有其他參數,
且一個方法宣告中只能有一個 params 關鍵字。

2013年11月26日 星期二

[C#]參數賦予預設值

MSDN翻譯是具名和選擇性引數
簡單來說就是在寫副程式時,
可以將參數預先賦予初始值,
或是選擇性的設定參數,
可以將之變換成多型(Polymorphism) 的方式。

[C#]Dictionary

Dictionary顧名思義就是搜尋工具,
用過的都說好用,我也不例外,
他就是一個可以快速搜尋的好物,
廢話不多說請看以下範例。

2013年11月21日 星期四

Visual Studio 2012 擴充--- Local History(歷史紀錄)

小弟在撰寫程式的時候,
常常打了一大段程式然後又註解掉再打另一大段程式,
或是常常刪掉一些感覺沒用的code,
寫了兩三天程式就開始回想之前是怎麼寫,
所以小弟在管控版本的時候,
就會在專案中開個TXT來做紀錄大綱,
可是這樣還是只能記錄「大綱」,
當然現在管控版本也出很多工具,
例如:SVN、TFS、GIT...etc,
但是小弟不想要那麼麻煩去設定一大堆環境,
所以小弟推薦在VS2012---Local History。

[C#]Array---Add & Delete

以前在寫C/C++時,
常常裡用point去指定Array,
並且控管Array的長度,
在C#中當然也出現好用的Array運用,
例如:ArrayList、List、Queue、Stack...etc,
小弟我偏好喜歡用List,
事實上C#中的Array也是有很方便擴充功能。

2013年7月31日 星期三

[C#]String的應用---字串的搜尋、去除、添加、取得、刪除

繼上次[C#]基本(5) --- 字串(元)切割[C#]String的應用---字串的比對之後,
小弟決定把string常應用的全部都寫個小範例,
廢話不多說請看以下範例!!!

Blogger QR-Code

Blogger變成具備有QR Code的功能,
而且並非只是固定的QR Code,
隨著點選不同文章時,
將會得產生出不同的QR Code(動態QR Code),
小弟真的覺得太方便。

[C#]String的應用---字串的比對

這是非常常見的小小技巧,
小弟最常使用的方式,
就是把兩個要互相比對的字串都轉成大寫或是小寫,
最近看到其他不同的方式,
就是透過string.Compare進行判斷,
優點就是即使大小寫不同也可以辨識(參考MSDN)。

2013年7月19日 星期五

[C#]List.add() 陷阱

C# List 真的是很好用,
它會自動擴充記憶體位置(應該說它本身就有固定的記憶體位置),
但它也是有陷阱...
這個陷阱是小弟跟同事在開發程式時發生的,
故事是這樣的(長篇短說),
在使用List.add(object)時,
所以不管add多少次List內容都是一樣的!!!
原來上述add的方式是call by reference
以上應該使用call by value 才對,
改成List.add(new object)才是正解喔!!!
PS:(Call By Value/Reference 的差異)

[C#]基本(7) --- call by value/reference

Call by value
傳遞參數時,會將此參數複製再傳給方法, 這個複製參數稱為虛擬參數(formal parameter)。 虛擬參數與實際參數(actual parameter)位於不同的記憶體位置。 所以call by value需要額外的記憶體空間。
Call by reference
虛擬參數(formal parameter)與實際參數(actual parameter)位於相同的記憶體位址。 語法:多個ref或out

2013年7月18日 星期四

[C#]基本(6) --- override(複寫)

C# 中的每一個類別與結構 (Struct) 都會隱含繼承 Object 類別。
所以,每一個Object都會有 ToString()的方法。
當建立自訂的類別或結構 (Struct) 時,
應該覆寫 ToString(),方便提供與型別相關的資訊。

2013年7月17日 星期三

[C#]基本(5) --- 字串(元)切割

在處理資料很常用到這個技巧,
利用「,」去區隔兩個欄位,
當然大家一定都知道最基本的切割(string.Split),
但如果遇到字串中有多個字元需切割?
繼續使用string.Split?
答案是可以的,
缺點就是會佔記憶體位置,
既然是切割當然要乾淨一點,
畢竟都是從字串(string)轉字元(char)。

2013年7月16日 星期二

標籤/搜尋文章只顯示標頭

Blogger中搜尋或分類標籤,
通常都會列出標頭及一點點內文,
這樣實在很難迅速的找到某一篇文章。
如果能夠只出現標題列表,
再點選你要看的文章,
操作上應該會比較方便。

[C#]基本(4) --- Console 顯示 MessageBox

小弟第一次寫GUI的程式是VB.Net,
之後迷上了C#...
所以看到Dos視窗很陌生(我不能當駭客任務的主機了ToT)
雖然知道Console.WriteLine一樣可以顯示訊息,
之前Dos 視窗控制變更顯示的字顏色,
但是還是不夠清楚...(畢竟Console程式跑很快...訊息一下就被洗掉了)
這時候使用MessageBox剛剛好~
必須經過按鈕確認才會進入下一個程序(Process)
這也是小弟想述說的重點...

2013年7月15日 星期一

[C#]基本(3) --- public, protected, private, internal, protected internal

private:私有型別,成員只能在自身類別內存取(只限定在類別大括號內進行存取)。
public:對任何類別和成員都無存取限制(其他命名空間也可)。
internal:只有同一組件的類別可以進行存取。
protected:保護型別,成員能在自身類別和被繼承的子類別內進行存取。
protected internal:不管是否在相同的命名空間中,該成員能在自身類別和被繼承的子類別內進行存取和相同命名空間的類別(不一定是子類別)。

2013年7月11日 星期四

Visual Studio 2012 無法啟動 IIS Express Web 伺服器

之前小弟的同事遇到這個問題,
不過當時同事的電腦重灌...
所以就沒繼續追究下去(重灌以後就沒事了),
過了不久的某一天早上,
小弟的電腦也出現一樣的問題,
F5按下去後,只看到滑鼠游標一直在做讀取的動作,
然後就跑出下圖的警告...
難道說...老天爺再指示我要重灌了!?
事實上有解決的方法,方法如下:

2013年7月10日 星期三

[C#]基本(2) --- Dos 視窗控制

C/C++執行程式時都會跑出黑黑的Dos視窗,
在C#開新專案一樣也是有的,
(雖然C#當中大多都是開發GUI介面為主)
在開新專案選擇主控台應用程式,如下圖:
新增主控端應用程式
以上都不是小弟要說的重點,
重點是希望Dos視窗可以不要哪麼死板板,
老是黑底白字,萬一有些資訊是非常重要...
I want some Special(EX:把字變成紅色的)。

螢幕錄影工具 LICEcap

前言

常看到許多部落格分享動態教學,如 .git 、avi ⋯⋯等等,當然有時動態教學感受會比靜態的好很多,不管是動態圖檔或是影像檔概念皆是把一連串的照片快速撥放,至於如何製作動態的.gif檔參考:GIFup.com,製作過程 參考:痞客邦

不過如果要分享資訊要一直拍照再去製作真的很辛苦,於是小編查了許多螢幕錄影程式,於是決定了使用「LICEcap」。
下面將介紹小編如何在 Windows 安裝與使用

2013年7月4日 星期四

[C#]基本(1) --- 參考及撰寫DTO與自行增加註解

原本是想將這些超基本東西分開,
但是最後還是決定一鼓作氣寫在同一篇
不知道效果好不好就是了。
首先介紹「參考」,雖然這個動作非常普通但對於人家寫好的.dll檔看得到用不到真的會很痛心,以下使用的參考亦可用在別人寫好的.dll

PS.[dll、lib、h 的差別] 參考
      dll = 屬於動態鏈結,不包含內部Code且在執行檔進行靜態加載
      lib = 屬於靜態鏈結包含內部Code且在執行檔進行鏈結
      h   = 標頭檔,可將dll與lib Method名稱中聲明

接著撰寫一個簡單的DTO,並且賦予註解,最後說明註解的好處
以下小弟我~就利用上一次的DTO寫個小小範例

2013年7月1日 星期一

Visual Studio 擴充套件 程式碼虛線

前言

通常為了程式的閱讀性
會透過IDE縮排
但是縮排後階層過多反而讓人更 混亂
該如何解決呢 ?

2013年6月21日 星期五

PO BO VO DTO DAO 名詞解釋與關係

前言

剛出社會的工程師,很多專有名詞聽都沒聽過!
小編倒是只會用幾個
以下將針對POBOVODTODAO 說明 :

2013年6月20日 星期四

Visual Studio 方案消失

前言

開啟 Visual Studio 只看到專案
方案 消失了!!!
該如何把方案尋找回來呢?

2013年5月27日 星期一

Blog 程式碼

前言

Google Search : Read Code in Blog With Syntax-Highlighter

部落格Blog該如何展示美觀又看得順眼的程式 ?

2013年4月8日 星期一

C# 命名規則 前綴字

前言

程式撰寫難免會遇到取名上的問題…嘆~
取名真的難!!!
以下參考整理由Google神人搜尋:程式縮寫

通常取名會有以下兩種準則:

  1. Perfix 前綴字
    EX : 按鈕 -> Button -> btn
  2. 有意義物件名稱
    EX : 儲存 -> Save

以下只針對Perfix駱駝峰式寫法提供參考 :
(寫久了就會習慣)

2013年4月2日 星期二

新手上路

在創立這個Blogger的時間是2011,

當初目的是為了記錄碩班所學的一切,

沒想到時間飛逝,

時間已到了2013,

連我可愛寶貝的女兒都要出生了,

代表我年紀也到了會常常忘東忘西的階段了!!!

尤其最近發覺曾經查了一堆資料中,

有將近一半都是以前查過卻又在查一遍的問題…

剛好同事也在用此Blog…

才熊熊想起來我也該做一下紀錄了,

避免錯過很多在程式上的技巧、用法…等等,

以及在錯誤中尋求幫助與我遇到一樣問題的大眾,

希望有了這個Blogger能讓世界有一點點的變化。