2013/12/27

在 Console 程式中讓文字保持在同一行顯示

我們都知道我們可以在 Console 程式中以 Console.WriteLine 和  Console.Write 輸出文字到一個命令視窗裡。但是不管是 Write 或者 WriteLine 方法, 文字的走向都是向右、向下的, 從來不會回頭。因此, 如果你的輸出文字太多, 就會需要捲頁; 如果超過差不多12頁以後, 它只會保留12頁(大約是288行左右, 根據預設值), 更上方的文字通通會被截掉, 再也看不見了。

有沒有辦法讓我們既看到輸出結果, 又能讓這些輸出的文字不要佔據那麼多空間呢?

2013/12/23

[ASP.NET] 在 GridView 中對欄位進行排序時顯示上下箭頭

自從 ASP.NET 4.0 開始, GridView 控制項就多了一個 SortedAscendingHeaderStyle SortedDescendingHeaderStyle 屬性。顧名思義, 它是專門針對欄位排序功能而設計的。在 MSDN 說明頁上(見上方連結), 它載明了「當這個屬性設定為 true 時,指示排序方向的箭號會在資料行標題中顯示」。可是我們應該在哪裡把它設定為 true 呢? 我們又應該在哪裡指定上下箭頭呢

2013/12/18

[SQL] SQL 安裝與配置小小最佳實務

我個人算不上什麼驚天動地的 SQL 專家, 只是一個離不開 SQL 的開發人員而已。在這篇文章裡, 我也不打算講什麼高深的 SQL 理論或技巧, 只打算把我個人研究出來的小小 SQL 管理心得拿來給大家分享。

我還記得以前在設置開發環境時, 經常被 SQL 搞得七暈八素。不是怎樣都連不上資料庫, 就是必須牢記在什麼情況下要先裝 SQL, 後裝 VS, 再裝 SQL Management Studio 等等。不過時序來到 VS2013, 我發現似乎所有的事情都變得簡單了, 而且穩定。不過, 坦白說, 過去的陰影始終籠罩在心裡, 所以我把我的成功經驗寫在下面, 萬一有人又遇到類似的問題, 或許可以參考我的方法, 成功率也許高一點 (至少我自己試過是成功的)。此外, 我也要分享一個許多人不知道或者不熟悉的管理小技巧。

2013/12/5

Linq2Excel 的陷阱與處理方法

Linq2Excel 是一個非常方便好用的小工具, 它是一個 Excel 專用的 LINQ Provider, 可以讓我們很快速地讀取 Excel (包括 Excel 2013) 的試算表。我們可以直接在 Visual Studio 中透過 NuGet 取得, 目前的版本是 1.7.1。

如果你對這個套件有興趣, 你可以參考「LINQ - 實作 LinqToExcel」這篇文章, 足以讓你快速入門

2013/12/2

[ASP.NET] 在 App_Code 下存取外部 Assembly

App_Code 是一個 ASP.NET 網站專案的特殊子目錄。如果你的專案不是 Web Site 專案而是 Web Application 專案, 你並不需要、也不應該特別建立一個 App_Code 子目錄來存放你的程式碼 -- 除非是為了某種特殊的目的

2013/11/25

[ASP.NET] 在網頁上執行靜態 JavaScript 的超級小技巧

我想, 凡是已經寫 ASP.NET 很久的程式設計師, 一定都知道如何透過 RegisterStartupScript(key, script) 和 RegisterClientScriptBlock(key, script) 這兩種指令在頁面中插入動態的 JavaScript 程式。但是只有這種方法嗎?

以下, 我要示範一個「超級小」的技巧, 以更簡單的方式達到相同或類似的功能。只不過, 這種方式比較適合「罐頭」式的 JavaScript 指令, 也就是比較偏向靜態、很少改變的 JavaScript 程式。我將使用 ASP.NET 的網頁的 PostBack 機制, 讓已經寫好的 JavaScript 程式在網頁 PostBack 之後自動執行

2013/11/12

台灣三碼郵遞區號對應程式庫

不知道是否我的查詢功力太差, 或者真的沒有人願意提供, 我在網路上找了老半天, 就是找不到一個可用的現成程式。那些現成的程式, 如果不是非 C# 語言, 就是欲言又止... 說真的, 這東西一點都不難, 只差要不要把資料打上去而已。

既然找不到, 就自己寫吧!

2013/10/27

打造動態 Enum

在 C# 中 Enum 是一個純粹靜態的結構, 當你宣告了一個 enum, 那麼它的值就固定在那裡了, 你非得去更改它的定義, 才能看到內容項目的變更。那麼, 如果我們能把它的內容項目 (包括它的值) 變成動態的呢? 

在接下去之前, 我必須先把它適用的情境清楚的描述一遍, 否則大家可能無法理解為什麼要這麼做

2013/10/15

在 VS2013 以 Code First 方式建立 EF 資料庫

當你下載並安裝 Visual Studio 2013 Preview 之後, 要如何建立一個使用 Entity Framework 的專案呢? 在以下文章裡, 我要介紹一個使用 Code First 方式建立的專案。我所將描述的內容可以在以下影片中看到

2013/10/1

[ASP.NET] 動態變更 SqlDataSource 中使用的 Web.config 裡的 Connection 字串

在我目前的工作中, 環境略為有點複雜, 牽涉到開發、測試和正式環境, 而使用的資料庫伺服器也有兩到三個。如果能夠動態地切換不同環境下所使用的資料庫連線字串, 一定對工作相當有幫助。

當然, 如果我都寫 ADO.NET 指令去指定連線字串, 我自然可以動態地決定應該採用哪一個連線字串。但是, 我又不想放棄簡單易用的 GridView/FormView 搭配 SqlDataSource 的作業方式。無可誨言的, 對於那些許多很小型的資料表、很少的資料、很簡單的工作, 實在沒有什麼能比上述情境更方便處理了!

2013/9/5

.Net 程式內註解的幾個小細節

最近在編寫程式時, 注意到幾個關於程式註解的注意事項, 我把它記錄起來, 同時提供朋友們參考。

註解內要怎麼斷行? 例如以下用來註解 interface 的程式行, 你在註解中把它斷行是無效的:

2013/8/30

[ASP.NET] 莫名其妙的「不允許循環檔案參考」錯誤

這是一個真的莫名其妙的問題, 而且這個問題在本機測試時並不會發生, 只有當發行到 IIS (不論是本機或遠端伺服器) 時, 才會發生, 並造成發行失敗。

問題的症狀是這樣的, 當我想把一個 ASP.NET 專案發行到本機的 IIS 時, 跳出一個 「不允許循環檔案參考」錯誤, 從而導致發行失敗。但是, 如果在 VS (我使用的是 VS2012) 中執行, 倒是沒有任何問題發生。

後來我在 "Circular file references are not allowed. Publish ASP.NET (2.0) Website" 這篇文章裡找到解答。原來我並不是唯一遇到這種問題的人; 有其他朋友發現, 這種問題只會出在特定的情況之下, 就是網頁中若包含 User Control, 而且這個 User Control 是放在上層子目錄的時候。此外, 也有人提到這問題發生在網頁有套用巢狀 Master Page 的情況。

在我的專案中, 問題出在我將一個新網頁加入, 而且我有套用巢狀的 Master Page, 也加入了一個 User Control。不過, 我發現我即使改用單層的 Master Page, 錯誤依舊。而且, 我的 User Control 和網頁是位於同一個子目錄。

不管怎樣, 我把這個網頁搬到其它子目錄之後, 這個問題就解決了!

2013/8/27

在單元測試程式中取得 Connection 字串

這是一個相當古老的問題。不過, 似乎也很久沒遇到過了。當今天再度遇到時, 突然被嚇了一跳。問題是這樣的, 當我們建立單元測試專案時, 如果你看到測試不成功的原因是什麼「System.ArgumentException: 此處不允許應用程式相對虛擬路徑 '~/'」之類莫名其妙的錯誤的話, 大概就是依照以下解法就對了。

2013/7/18

[SQL] 將關聯資料彙整成單一欄位並傳回的小技巧

今天在設計 Master-Detail 顯示畫面時, 面對煩雜的關聯資料, 一時突發奇想, 然後隨口問了公司的 DBA 老大, 想請教他有沒有什麼想法, 結果竟然有解法, 而且異常的簡單! 所以就有了這一篇文章的出現。(順便說一下, 對一個沒有時間去鑽研資料庫的開發人員而言, 公司裡有位 DBA 是件蠻幸福的事情)

2013/7/11

在 VS2013 Preview 中使用 Scaffolding 快速建立 CRUD 網頁

在 VS2013 Preview 中, 我們可以透過它的 Scaffolding (支架) 功能在 MVC 專案中快速建立一整套的 CRUD 網頁, 不用寫一行程式碼。甚至, 它已經內建了 Bootstrap 框架, 這使得我們甚至不需要具備美工能力, 也能設計出比以前漂亮得多的網頁。

在 Visual Studio 建立資料庫專案

我從很久以前就對 Visual Studio 中新加入的資料庫專案範本感到很有興趣; 但是一來我並不熟資料庫, 二來工作上也用不到, 所以從來沒有真正較深入地研究它, 只有嘗試過建立幾個測試專案, 然後被搞得灰頭土臉之後, 被迫放棄。但是最近由於工作上突然有了一點變化, 讓我回頭來思考在原來的方案中加入一個資料庫專案的想法, 所以就重新把它又拿來研究一番。

2013/6/30

ASP.NET 和 VS 2013 新功能彙整

微軟在近日 (2013/6/26) 公開了最新的 Visual Studio 2013 Preview (預覽) 版本; 我在前幾天的發文中也有提到過。不過, 到底這個最新版本有什麼不一樣之處? 微軟又為什麼在短短一年之後, 再度推出 Visual Studio 的新版本? 由於現在的資訊都不充份, 我想, 唯一, 也是最好的答案, 恐怕也只有 Scott Hanselman (現任微軟 Azure & Web Tools 的 Principal Community Architect 兼書籍作者) 能夠回答你了! 有興趣的朋友可以參考由他主講的 What's New in ASP.NET and Visual Studio 2013 這段影片

2013/6/28

使用 VS2013 Preview 開發 ASP.NET 專案並登入 AD

下載 Visual Studio 2013 Preview 之後, 我迫不急待地把它安裝起來, 並且建立了幾個測試用的專案。我把幾個值得注意的細節記錄起來, 同時供大家做個參考。

2013/6/18

在 ASP.NET Web Form 專案中加入 Bootstrap 套件

Bootstrap 是由 Twitter 所開發的一個免費的網頁框架, 它提供了許多從基本到進階的 CSS 和 JavaScript 功能, 讓網頁開發者可以很快速地把網頁架起來, 同時還兼顧了還算不錯的美感。通常, 網頁設計師不會、也不懂得美工設計, 所以我們如果只是很單地把網頁建立起來, 很不幸的, 這個網頁通常不會跟「美觀」這兩個字有交集。但是有了 Bootstrap, 你的網頁很容易就能讓人為之驚艷 (尤其是跟之前的做法對比的話)。

當然, 我不是說 Bootstrap 從此會讓美工人員丟掉工作。我相信美工人員也會感謝 Bootstrap 的存在, 這樣至少可以讓網頁在進行 layout 時省去一些功夫, 能夠早一點下班。

2013/6/15

在 ASP.NET 4.5 專案中套用 OAuth 登入

我們都知道, ASP.NET 從 2.0 開始, 原本已經提供了一個相當完整的會員認證/授權系統。但是隨著時代進步, 社群網站風起雲湧, 幾乎每個人都有一個 FaceBook、Twitter、Live 或者 Google 等帳號。如果你的網站可以允許你的使用者使用這些帳號登入, 讓他們不需要申請另一個新的帳號, 這樣對他們而言, 豈不是更加方便? 其實這種做法等於是 SSO (Single Sign On) 的概念, 而且微軟的 MSN/Live 帳號在很久以前就已經提供了這種功能, 但是由於那時候 MSN/Live 的認證是收錢的 (我記得並不便宜), 所以並沒有普及。

2013/5/26

JavaScript 中的日期比較問題

在我們在處理 JSON 的日期轉換時, 總會遇到轉得過去, 卻轉不回來的問題。這時候, 我們必須另外把日期字串進行重新格式化的動作。這個問題可以在 Stack Overflow 網站上找到現成的解答,  就是使用一個 dateReviver 函數, 當作 JSON.parse 方法的第二個參數。

2013/4/19

JavaScript 的繼承與實作

我差不多是在十幾年前開始接觸 JavaScript 的。和許多那時候的程式設計師一樣, 我並沒有很認真的把 JavaScript 當作「正常」的程式語言來對待。我寫的程式主要是以 ASP.NET 搭配 VB.NET 為主, 後來改為 C#; 可以說從一開始就戴著物件導向的眼鏡。而那個時候我們都被教導說 JavaScript 並非 OOP, 所以我也從來不認為 JavaScript 是一種物件導向語言, 也因此, JavaScript 從一開始就被我當作玩具, 是工作之餘的娛樂

2013/2/7

Windows 8 快速鍵匯整

Windows 8 用了那麼久, 總覺得它跟 Windows 7 差不多; 但是慢慢的可以感覺到一些比較細微的小差異, 包括與過去略有不同的快速鍵。當然, 很多事情依然可以使用滑鼠或者其它方式達成, 但是怎麼說也比不上使用快速鍵來得方便。於是我花了一點時間把這些快速鍵整理了一下, 供我自己和大家參考: