Posts

Showing posts from September, 2012

[鐵人賽] [IT的奧義]專業型象

Image
轉自自己發的文章 http://ithelp.ithome.com.tw/question/10099146
在資訊業呆久了,發現很多人有意無意的把資訊業人員跟"宅男"劃上等號。

他們覺得資訊工程師就是整天窩在電腦前面,穿上一件舊舊的T-shirt,短褲拖鞋不刮鬍子的從早到晚宅在電腦前面看著一堆有的沒的看不懂的符號。有時候更會聽到長輩說:"你穿那麼正式不像修電腦的耶"。雖然我極力嘗試用心的解釋系統工程師跟重灌電腦有什麼不一樣,不過看來成功光復的機率比中樂透還要少。

我們自信的認為自己是資訊工程師(事實上也是),跟建築工程師,律師,醫師,藥師,老師,斯斯(離題了)理論上應該同樣的是專業人仕,為什麼卻給很多人誤會成我們跟修理汽車的,修理冰箱的,修理電吹風的是同一類?(晚輩絕對沒有看不起這些職業,只是職能不同啦)

還有更傻眼的事,我們知道資訊業的工種很多,未必所有的人也會修或重灌電腦。可是當您跟其他人說你是系統分析師所以不會灌電腦(而實際上是會灌也不會刻意的講出來,除非是流鼻血的正妹)的時候,他們會用懷疑的眼神看你,臉容就好像暗示說自己跑去買賓士卻不會開車一樣的不可思議。

為什麼?為什麼?為什麼?為什麼我們就不當專業人仕???

其實理由非常複雜,不過我覺得可能是因為以下幾點:

1. 我們設計的是無型的東西:
建築師可以建出一座很大很高的摩天大樓,大家會覺得很棒;醫師醫治了無數的病人,大家會覺得好棒;老師教了無數成績很好的學生,大家會覺得很棒;那我們呢?我們把非常龐大的系統寫成手機的一個icon,我們自己覺得很棒。 !!!等一下,是我們覺得自己很棒,其他人呢?老實說你拿一個apps去跟人家說很棒,其實未必會很懂....無型的東西很難很容易的令人家信服。

2. 我們賣的是服務:
我們幫我們的顧客寫系統,建網路,安裝軟體,目的就是提供服務支援他們的實際業務。而服務本身就是一種無型的東西,也沒有絕對簡單易懂的標準去測量,當老百姓無法簡單的了解我們做些什麼的時候,當然也不會覺得我們專業了。

3. 還有很多很多的理由....

最後,我不會提供解決方法,因為以上只是晚輩的一些看法。如果硬要有解決方法(IT人的老毛病),以我的方法就是開會見客戶的時候盡量穿整齊一點,還要多跟其他人互動,不要老是只聽不說讓人覺得你很不會跟人互動,還有大膽說出你看出的問題,因為我們唸工科的天…

我參加了IT鐵人賽(啥?)

最近不知道幹嘛參加了IT邦幫忙的鐵人賽, 比賽內容是30天po30篇文章(嚇)

接下來的三十天我會把在那邊發的灌水文章順便貼在這裡,希望大家指教。^_^

[ASP.NET] 淺談SqlDataSource及Data access Layer

Image
在ASP.NET的世界, 如果介面上的物件要連結到資料庫,大部分的參考書會教你使用SqlDataSource物件進行連結。看起來這個方法非常的不錯,既快速方便又簡單,是實上也是如此。不過......(雷聲) 當你開發的系統越變越複雜的時候,問題就出現了。一個畫面可能會出現幾個到十幾個SqlDataSource物件,而且使用者版面與版面之間由於無法共用SqlDataSource;然後你慢慢會發現越來越多重覆又重覆又重覆的SqlDataSource出現在不同的版面上,使得系統越來越笨重你也越來越笨;而且自己辛辛苦苦寫好的Sql statement團隊中的其他懶人卻不能享用你的成果,也沒有一個集中的圖形化介面控制所有存取資料庫的Sql statement. 到最後你更會發現程式碼根本無法維護然後也開始發求職信。

由於以上的缺點,因此就出現了Data Access Layer(DAL)這樣東西。嚴格來說它是一種概念,並不是ASP.NET提供的新功能。根據Microsoft的說法:"DAL for short, and is typically implemented as a separate Class Library project."。就是要解決上面SqlDataSource帶來的各種問題。當你使用Data Access Layer這個概念來存取資料庫的時候,系統不是像Sqldatasource一樣直接存取資料庫,而是使用其中的DataSet,再由DataSet對資料庫進行存取。

老實說這不是有點多餘?那就要看你系統的複雜性。畢竟在資訊產業,系統維護佔了一筆非常大的開支,而且大家心知肚明,對於實在爛透的程式碼,錢有些時候的確未必能夠解決所有問題。所以我是建議如果知道未來系統會變很大,最初的時候多花那一點點時間用DataSet建立Business Layer吧......XD

下篇文章會談一下如何實作。

參考資料
[1] Tutorial 1: Creating a Data Access Layer http://msdn.microsoft.com/en-us/library/aa581778.aspx
----



[Winform] 兩個ComboBox怎樣連動?

Image
今天同事問了小弟一個很基本又很常用的Winform問題:

如果表單中有兩個ComboBox,第一個ComboBox顯示帳號,第二個ComboBox顯示屬於這個帳號的子帳號,當使用者選擇帳號時子帳號的ComboBox要動態顯示選項,最簡單最不用寫Code的方法是怎樣???

我自己試了一下幾個方法,感覺下面這個方法應該是最簡單方法中的其中一個:

首先設好DataSet中的DataTale並進行關連, ACCAO為帳號, SUBACCAO為子帳號.


接下來拉下畫面,上面的ComboBox是帳號,下面的ComboBox是子帳號。


把ComboBox對應在DataSet中ACCAO跟SUBACCAO兩個DataTable, 它們分別的設定如下:



最後在帳號的ComboBox中的SelectedIndexChanged事件加入下面一句程式碼:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { sUBACCAOBindingSource.Filter = "ACCAO_NO = '" + comboBox1.SelectedValue.ToString() + "'" ; } 意思就是說在子帳號ComboBox所對應的BindingSource中加入篩選條件,條件就是依據上面帳號ComboBox中使用者所選擇的帳號號碼。

就那麼一句就搞定了!



我想應該找不到給一句程式碼更簡單的做法吧XD,不過有的話記得跟我說一下,天外有天人外有人,給小弟機會好好學習啊!!!