2008年5月30日 星期五

Fedora 9 安裝輸入法

今天心血來潮想說趕快解決沒有輸入法的問題,也真是奇怪,裝了這麼多版的LINUX,這還是在下第一次裝完後,竟然找不到輸入法的。
解決的方法就是把原來的FEDORA9光碟掛上去,進Package裡找
下指令 ls | grep 'scim'
把所有SCIM有關的全部找出來一個一個用RPM的方法裝上去即可。
找到的結果如下:
scim-1.4.7-23.fc9.x86_64.rpm
scim-anthy-1.2.4-4.fc9.x86_64.rpm
scim-bridge-0.4.15-5.fc9.x86_64.rpm
scim-bridge-gtk-0.4.15-5.fc9.i386.rpm
scim-bridge-gtk-0.4.15-5.fc9.x86_64.rpm
scim-bridge-qt-0.4.15-5.fc9.i386.rpm
scim-bridge-qt-0.4.15-5.fc9.x86_64.rpm
scim-chewing-0.3.1-13.fc9.x86_64.rpm
scim-hangul-0.3.2-4.fc9.x86_64.rpm
scim-lang-assamese-1.4.7-23.fc9.x86_64.rpm
scim-lang-bengali-1.4.7-23.fc9.x86_64.rpm
scim-lang-chinese-1.4.7-23.fc9.x86_64.rpm
scim-lang-gujarati-1.4.7-23.fc9.x86_64.rpm
scim-lang-hindi-1.4.7-23.fc9.x86_64.rpm
scim-lang-japanese-1.4.7-23.fc9.x86_64.rpm
scim-lang-kannada-1.4.7-23.fc9.x86_64.rpm
scim-lang-korean-1.4.7-23.fc9.x86_64.rpm
scim-lang-malayalam-1.4.7-23.fc9.x86_64.rpm
scim-lang-marathi-1.4.7-23.fc9.x86_64.rpm
scim-lang-nepali-1.4.7-23.fc9.x86_64.rpm
scim-lang-oriya-1.4.7-23.fc9.x86_64.rpm
scim-lang-punjabi-1.4.7-23.fc9.x86_64.rpm
scim-lang-sinhalese-1.4.7-23.fc9.x86_64.rpm
scim-lang-tamil-1.4.7-23.fc9.x86_64.rpm
scim-lang-telugu-1.4.7-23.fc9.x86_64.rpm
scim-lang-thai-1.4.7-23.fc9.x86_64.rpm
scim-lang-tibetan-1.4.7-23.fc9.x86_64.rpm
scim-libs-1.4.7-23.fc9.i386.rpm
scim-libs-1.4.7-23.fc9.x86_64.rpm
scim-m17n-0.2.2-3.fc9.x86_64.rpm
scim-python-0.1.11-1.fc9.x86_64.rpm
scim-python-chinese-0.1.11-1.fc9.x86_64.rpm
scim-python-pinyin-0.1.11-1.fc9.x86_64.rpm
scim-python-xingma-0.1.11-1.fc9.x86_64.rpm
scim-python-xingma-cangjie-0.1.11-1.fc9.x86_64.rpm
scim-python-xingma-erbi-0.1.11-1.fc9.x86_64.rpm
scim-python-xingma-wubi-0.1.11-1.fc9.x86_64.rpm
scim-python-xingma-zhengma-0.1.11-1.fc9.x86_64.rpm
scim-sinhala-0.2.0-6.fc9.x86_64.rpm
scim-tables-0.5.7-5.fc9.x86_64.rpm
scim-tables-chinese-0.5.7-5.fc9.x86_64.rpm

語系的部份在下並沒有全裝,反正中文出得來就好,倒是scim-python.......不知道是幹嘛用的?裝了以後才發現好像沒用到。
其他不知道用途的還有scim-sinhala-0.2.0-6.fc9.x86_64.rpm感覺像是某個國家的怪異語言。反正不管啦!有注音就好!

裝完後重新登入後,再繼續安裝嘸蝦米,在LINUX下用嘸蝦米,比在WINDOWS下難多了,不過因為之前裝在FEDORA7的經驗所以直接套上嘸蝦米的字形檔及ICON放在指定的位置即可。
只是因為太久沒裝了,一時找不到安裝的路徑。
字典檔放在這:/usr/share/scim/tables/
ICON放在這:/usr/share/scim/icons/

2008年5月28日 星期三

IIS 6.0上下載限制

今天孫姐發現無法在2003上傳圖片,原來是iis6有最大上傳下載的限制
修改的方法如下:

主機上傳檔案大小設定 找出 MetaBase.xml 找出 AspMaxRequestEntityAllowed=204800 修改值 路徑為 c:\Windows\System32\Inetsrv\MetaBase.xml IIS 6 (Windows Server 2003) 一般預設為 200 KB <204800> 更改為 1073741824 (unlimited)修改其他的值。 到安全模式下修改,否則無法儲存被IIS鎖住!!

最後修改的結果如下:
AspMaxRequestEntityAllowed=1677722
1.6MB
ASPBufferingLimit = 16777216
16MB

資料來源:http://www.shinher.com/article/view_5.html (感謝品仲提供)
此資料由鼎傑修改於2008/05/28修改

2008年5月18日 星期日

關於xml的感想

今天(其實應該是昨天5/18)星期日,和Heather衝去買了一本xml的書,其實這已經是第二本了。第一本是在5/3零晨在誠品敦南店所購得,但因為內容似乎還不太夠,所以又再去買一本內容較完整的回來讀。企圖想在短時間大致了解xml技術的運作。
首次接觸xml是在銓敘部的某幾支報表中(據說是銓敘部以前一位龍哥所著),在下雖然看不懂這位功力高深的龍哥的程式,不過他的xml報表跑出來的效能快得讓我大吃一驚。
重點是他的txt檔(其實是由xml改名而來)經改名後,居然可以用word等應用程式「正確地開啟」,並且用記事本可以觀看其檔案的內容。這跟在下所認識的word檔有不小的差距。(我一直以為經word存過的word檔,用記事本開起來,必定是亂碼)這位龍哥的xml顛覆了我過去對word的了解。

這個技術是一定要了解的。看過這位高人寫過的報表後,在下也想實做一支新的xml報表,儘管資訊室科長已經很明白告訴我,他不想要非模板檔的資料來當作模板檔,但我覺得要實做一支出來看看。
經過三天的努力後,果然讓在下完成第一支word報表,效能果然較word塞書籤的快很多。在windows server 2003測試無誤後正式上線接受測試。

假設我想要把教會的週報資料全部當做資料庫做貯存的話,理論上應該可以用xml產生週報word檔、pdf檔甚至是htm檔,也就是說做一份週報,網頁也有了,文件也有了、保存也有了,還可以供大家上網查詢。

想要達到上述目標,需要建一台 DB server、查詢程式、展示程式、web site、insert modify的function web維護介面。
上述的每一樣,在下都實做過,皆下來就是把這些東西全部串在一起然後用xml做server與client的傳送媒介,如此一來,即便client沒灌office,一樣可以看週報。

2008年5月15日 星期四

異康工作項目評估

銓敘部報表
文書科紙本、電子發文系統操作介面
退撫司網路作業系統修改
法規司網路報送作業系統內網上傳下載及組編規程核議表產製
銓審司網路報送作業系統外網上傳下載
慶豐銀行WebATM線上手冊(部份)

專案工作項目明定及時程控管
熟悉各開發工具之使用
同仁間資訊及技術共享及交換
問題排除及開發文件之撰寫

專案開發所需技術運用或新技術之導入
專案執行中成本及資源分配

2008年5月7日 星期三

睿揚公文系統造成無法選擇印表機

今天阿富轉述邱小姐的狀況,在同時運行敝公司的網路作業系統及睿揚公司的公文系統時,在執行睿揚系統的某個指令後,使用者的word功能選單消失,造成使用者無法點選「檔案」->「列印」->選擇印表機 -> 列印。
造成該使用者欲列印時,只能點選印表機的icon,word直接以「預設之印表機」進行列印。
但該司使用者列印不同文件時,因為紙張特殊,以致必須改以其他印表機列印時發生無法選取印表機之情事。

在下提出治標不治本之方法如下:
在使用者word裡的模板中加入一個指定印表機的巨集,並新增一個econ的指令列,令使用者的word裡放入該巨集即可。

2008年5月5日 星期一

Microsoft .NET Framework 2.0 應用程式開發基礎

Microsoft .NET Framework 2.0 應用程式開發基礎

作者:朱明中

技術背景

在新一代的微軟開發人員認證體系中,最明顯的不同就是多了這一個應用程式發展的基礎技能考試(70-536),以往的 MCSD 與 MCAD 都是將工具的使用(Visual Studio)以及發展特定類型的應用程式為考試內容,這樣很容易有一個問題-開發人員是否對真正底層的東西有一定程度的了解?這也是為什麼要有這個科目的原因。

若開發人員對於基本的類別庫功能沒有足夠的了解,那未來在發展應用程式時會有更多的問題,例如 Do Less With More(撰寫程式碼來做類別庫已經有的功能),或是沒有善用類別庫的功能等等,就像是 MCSE 卻不懂網路一樣,等於只是半吊子的認證人員而已,對於微軟來說,MCSD/MCAD 應該是要培養並認可出真正具實力的專業人員,但是可能因為對於基礎類別庫的應用不夠了解,而讓開發品質下降,或者讓開發人員寫了更多的程式,但只是做了一個類別庫中早己有的功能,也間接的造成開發效率下降。

所以微軟在 MCTS 與 MCPD 中加入了這一項考試,主要原因就是希望能夠踏入 MCTS 與 MCPD 的專業人員都能夠在操作與應用基礎類別庫的部份,具有一定以上的水準,這樣的好處是,在之後的考試中,就只要專注在特定的範圍內,不必再去考驗基礎部份的能力,這對 .NET Framework 2.0 這種相當大範圍的類別庫與平台來說,是很重要也是最經濟的方法。

不過由於這一科只是測驗基礎能力,所以通過了這科考試,並不會取得 MCP 或是 MCTS 認證,這個情形和 Windows NT 4.0 時代的 MCSE 考科中的 Exam 70-058:Networking Essentials 一模一樣,但這個作法也引起了許多人的意見,很多人都拿 SCJP 來比較,SCJP 的考試只考一科就可以拿到認證,不過筆者認為這二個是不能相比較的,因為SCJP考的是 Java 語言和 Java 類別庫的使用,範圍比較大;而 70-536 考的只是基本類別庫的使用,不考語言(那是考生的事),而且相對於 MCTS,SCJP 也只是證明了考生具有撰寫 Java 程式與應用類別庫的能力,但沒有考驗對於特定平台的發展能力(不然怎麼會有 SCJD, SCWCD, SCBCD, SCMAD,…),若要測驗特定平台的發展能力,得再考一科考試,等於要考二科。以這種方式來計算,其實考 Java 部份是比較貴的(150*2 = 300美金),而微軟的部份相對而言比較便宜(80*2=160美金)。

考試背景

Microsoft .NET Framework 2.0 應用程式開發基礎是以 .NET Framework 2.0 類別庫為主要出題方向,因為整個類別庫有數百個命名空間(namespace),以數百計的類別,就有如 .NET Framework 上的 Windows API 一樣(API 已經是數以千計),未來 .NET Framework 3.0/3.5 會更多,所以微軟在這科考試中所測驗的類別庫,都已經排除了特定平台以及特殊的類別(例如 Microsoft.Win32 與 Microsoft.VisualBasic 等),只留下了各種平台都會用到的命名空間與類別。

微軟要求考生必須要了解 .NET Framework 類別庫,而且需要使用 C#, Visual Basic或Visual C++ 來操作類別庫,由於考試開始時可以選擇考試題目中所使用的程式語言,所以考生可以選擇自己熟悉的語言來考試。微軟建議考生最好能有 Visual Studio 的使用經驗,若有 Visual Studio.NET 2003 與 .NET Framework 1.x 的使用經驗就更好。

若考生是學生身份,則建議最好是大學以上,對於 C#, VB 或 C++ 熟悉,並且有修過下列課程(或具有同等級的知識):

  • 程式設計(型別、集合、泛型處理、陣列、堆疊與佇列)
  • 物件導向程式設計(類別的使用與概念)
  • 作業系統(資料流 I/O,行程與執行緒的概念)
  • 程式語言(RTTI 與執行期型別處理)
  • 網路程式設計(XML 與字串編碼)
  • 資訊安全(密碼學與資訊安全的概念)

考試測驗的技能

70-536 考的是考生對於 .NET Framework 2.0 基本類別庫的操作與使用,不過在操作類別庫的背後,卻隱藏了許多的基本知識,如果考生對一些基本概念不夠熟悉的話,看到程式碼可能會不知所云,而這也是此科考試最常出現的出題方式。考試分為七個主題,分布在各個類別庫中,一個主題會考到許多的類別,但重點還是在使用,所以考生就算不是全部了解,也要了解至少八成以上.才會有機會通過考試。

  • 使用系統型別與集合物件開發應用程式(15%)

    筆者認為這真的是基本中的基本了,寫程式不可能用不到任何的資料,就算是程式自己產生的,也還是一些資料,而能夠承載資料的記憶體空間,就是變數(variable),而變數都會有一個資料型態(data type),在 .NET Framework 中,每個語言的內建型態都可以對應到 .NET Framework 的資料物件(繼承自 System.ValueType 類別),考生要能夠會操作這些型別。

    泛型(Generic)是 .NET Framework 2.0 的新功能,讓類別可以在不受資料型別的限制下做到最大的共用性,而 .NET Framework 2.0 多數的集合物件都可支援泛型,未來 .NET Framework 3.5 的 LINQ(Language in Query)會大量使用到泛型能力,所以考生要多下點工夫在泛型應用上。

    集合物件(Collection)是資料處理上相當好用的工具,根據不同的需求,會有不同的集合物件來處理,例如陣列有 List或ArrayList,鍵值對應部份則有 Dictionary 與 Hashtable 可用,瀏覽集合物件則有 IEnumerate 介面物件可用,堆疊和佇列則各有 Stack 與 Queue 類別可以用,這些集合物件在開發應用程式的資料處理上非常實用,考生必需要會至少五種以上的集合物件用法,最好是全部都會。

    標準協約(Standard Contracts)介面對於處理物件間的聯繫有相當的重要性,例如物件間的比較、轉換、複製(Clone)、判斷與格式化等等,考生至少要學會如何實作這類型的協約,以套用到應用程式之中。

    事件處理(Event handling)與函式委派(Delegation)是 .NET Framework 所有事件的基礎能力,考生至少要知道如何處理由物件所發出的事件,以及幫自已的類別加上事件能力。

  • 在 .NET Framework 應用程式中實作服務、執行緒與應用程式定義域(11%)

    Windows Service 是 Windows 平台上特有的能力,它最主要的特性就是存在於作業系統中,能夠持續性的處理特定的事情(例如定時工作),.NET Framework 提供了 System.ServiceProcess.ServiceBase 基礎物件,讓開發人員得以很簡單的方式來撰寫 Windows Service,並且提供了 installutl.exe 來簡化服務的安裝,建議考生可以實際寫一個簡單的 Windows Service 來了解開發流程。

    執行緒(Threading)是發展進階應用程式時,經常會用到的工具,例如處理長時間工作的程式,要保持使用者介面可使用時,就需要用到執行緒處理,執行緒的概念本身就可以寫一本書了,考生在利用這個工具前,最好是對概念有一些了解,才知道要如何使用,作業系統的書籍都會有執行緒的章節,考生可自行參考相關書籍。執行緒的另一個重點在於非同步處理(Asynchronous Process),這在開發企業級應用程式時會非常重要,考生必須要熟悉,而非同步的概念在作業系統的書籍也有,筆者就不在此說明(因為說明也可以寫很多)。

    應用程式定義域(Application Domain)是CLR執行程序時所產生的隔離單元,開發人員可以利用這個定義域做動態的組件載入工作,這是實作可插拔式應用程式(Pluggable Application)的基礎,考生至少要了解如何產生定義域與動態載入組件的方法。

  • 在 .NET Framework 應用程式中加入組態、診斷、管理與安裝功能(14%) 組態管理(Configuration Management)是在每一個具規模的應用程式都會具備的能力,它可以讓使用者在不改變程式的情況下,可以改變應用程式的行為或設定資料,最典型的就是 ASP.NET 的 Web.config,Windows 應用程式則是 .exe.config,考試必需要知道如何透過程式來讀寫組態檔,例如 ConfigurationManager 類別的操作。

    診斷能力(Diagnostics)可以幫助開發人員在除錯或是偵錯追踪時的處理工作,像是 Trace 可以輸出變數資訊、Debugger 可以直接控制除錯器、Debug 可以輸出除錯訊息、StackTrace 可以找出錯誤發生點等;同時類別庫也提供了可以存取行程(Process)、效能計數器與事件記錄等等,考生必須要注意與知曉這些方法。

    管理能力(Management ability)以 System.Management 命名空間為主,它是包裝 Windows Management Instrumentation(WMI)的能力,並提供介面來查詢 WMI 資料,考生至少要會使用 ManagementObjectSearcher、EventQuery 與 ObjectQuery 等類別。

    安裝功能(Installation feature)則是以 System.Configuration.Install 命名空間為主,為 Windows Installer 提供了可延伸的能力,在 Visual Studio 的安裝專案中可增加自訂動作(Custom Action)來加強安裝功能,建議考生最好是實際做幾次安裝程式,以了解開發安裝程式的流程。

  • 在 .NET Framework 應用程式中實作序列化與輸入輸出功能(18%)

    I/O 功能是應用程式中最基本的能力,不論是對檔案、對網路或是對記憶體皆然,.NET Framework 中特別針對具有 I/O 能力的部份實作成資料流物件(Stream),檔案就是 FileStream、網路是 NetworkStream、記憶體是 MemoryStream,緩衝區資料流則是 BufferedStream,另有一種特殊的資料流,稱為隔離儲存區(Isolated Storage),這些資料流都具有特定的 I/O 能力,但開發人員只要了解基本的資料流讀寫方法,以及資料流的特性即可。

    除了資料流本身以外,.NET Framework 也提供了資料流讀寫工具,分別為 StreamReader/StreamWriter 以及 BinaryReader/BinaryWriter 等類別,這些類別提供了便利的讀寫方法供開發人員使用,考生必須要了解如何使用,但在實務中則不一定要使用。

    壓縮能力(Compress ability)則是 .NET Framework 2.0 新增的功能,目前支援了 GZip 及 Deflate 兩種演算法,分別為 GZipStream 與 DeflateStream 類別,開發人員可以善用這兩種類別的壓縮與解壓縮功能來減少資料量,對網路傳輸會有相當的幫助。

    除了 I/O 以外,檔案系統的管理也是系統服務的基本功能之一,.NET Framework 提供了 DriveInfo、Directory、DirectoryInfo、File、FileInfo 與 FileSystemWatcher 等類別來處理檔案系統部份的工作,考生必須要熟悉基本的用法,例如如何用 DriveInfo 來列舉磁碟機、如何用 DirectoryInfo.GetFiles() 來搜尋檔案等。

    序列化(Serialization)能力是 .NET Framework 的核心功能之一,舉凡 .NET Remoting、Web Service、物件讀寫與傳輸等都需要利用序列化的能力,目前序列化能力分為二種:二進位序列化(Binary Serialization)與 XML 序列化(XML Serialization),二進位序列化多用於物件讀寫以及 .NET Remoting 的物件傳輸;而 XML 序列化則多用於 Web Service 物件傳輸以及將物件格式化成 XML 時使用(這個部份對 XML 與物件交換資料的能力有相當大的幫助,例如把 XML 轉換成 Business Component 的資料物件),也因為序列化能力如此重要,所以考生必須要多下工夫在序列化能力上,尤其是 XML Serialization 的規則要很熟。

  • 使用 .NET Framework 2.0 安全功能來強化 .NET Framework 應用程式的安全性(20%)

    資訊安全在現在的應用程式中佔有很重要的地位,不論是 Windows 應用程式或Web應用程式皆然,在大型企業應用程式就更形重要,因為安全性設計可以保障資料的正確性、完整性以及機密性,在應用程式設計時皆需要將安全性部份一併考量,以保障應用程式的安全。應用程式的安全性不外乎三個部份:驗證(Authentication)、授權(Authorization)與存取控制(Access Control)與加密(Encryption)四個部份,在 .NET Framework 中都有提供功能。

    程式碼存取安全性(Code Access Security; CAS)是 .NET Framework 的核心功能之一,它可以允許開發人員可以在程式碼的層級中設定權限,讓特定的使用者無法執行特定的程式碼,或者可以限制程式碼只能存取某些系統功能,例如 GacIdentityPermission 可限制組件只有在安裝於 GAC(Global Assembly Cache)的情況下才可執行,而 FileIOPermission 則控制了存取檔案的權限;再結合 .NET Framework 的程式碼原則(Policy),可在撰寫少量程式碼的狀態下,達到控管程式碼安全的目標。

    作業系統的安全性也是 .NET Framework 所重視的部份,在 .NET Framework 2.0 新增了可以存取與修改檔案系統安全性(即存取控制表)的類別,如 FileSecurity 與 DirectorySecurity 等類別,可以修改檔案或資料夾的 ACL 權限表,以控制存取的規則。

    除了程式碼部份的安全性以外,資料的安全性也很重要,在公開網路或是公開的範圍內傳輸機密資料時,必須要進行加密與解密工作,此時加密演算法(Cryptographic Algorithm)就非常重要,.NET Framework 支援了許多的對稱性演算法與雜湊計算的演算法,可利用的演算法都在 System.Security.Cryptographics 命名空間中,同時也支援非對稱性演算法與密碼金鑰產生能力等等。

    同時,應用程式也需要記錄使用者狀態,或者直接取用 Windows 使用者帳戶資訊,.NET Framework 提供了 WindowsPrincipal/WindowsIdentity、GenericPrincipal/GenericIdentity 等類別物件可用,若應用程式需要實作自己的邏輯時,就可用 GenericPrincipal 與 GenericIdentity,直接取用 Windows 使用者帳戶資訊時則用 WindowsPrincipal 與 WindowsIdentity。

    資訊安全是 .NET Framework 應用程式的重點項目,所以考試在這個部份佔了 1/5 的篇幅,考生要對 CAS、權限、密碼雜湊與加解密、層級管理與使用者狀態等的程式設計方法要很熟悉,這個部份可算是本科考試中最雜也最不好準備的部份,考生需要多加注意。

  • 在 .NET Framework 應用程式中實作互通性、型別反映與郵件功能(11%)

    互通性(Interoperability)係應用程式透過 .NET Framework 提供的交換能力,讓應用程式可以存取 COM 元件或是 DLL 所開放出來的函式,亦可以將應用程式開放給 COM 元件取用,互通性包含了 DLL 的函式宣告、產生 COM 參考組件及產生組件的型別函式庫(Type Library)等。在實務上,這個功能經常會使用到,例如呼叫廠商提供的 DLL 來控制 RFID Reader。

    型別反映(Type Reflection)則是透過存取物件的 Metadata,以取得物件的資訊、組件資訊、甚至可以呼叫物件的方法或是存取屬性等等,具有相當強大的物件控制能力,開發人員可以善用它實作出動態載入與動態存取的能力。

    開發人員可以透過 System.Net.Mail 命名空間中的 SmtpClient 與 Message 類別來實作發送 SMTP 郵件的能力,這個類別比較簡單,卻有許多可研究之處,例如透過 SSL 發信,或是 SMTP Server 驗證都是。

    考生要特別針對DLL函式宣告、COM 元件的取用、開放組件給 COM、Reflection 與 SmtpClient 要多所了解。

  • 在 .NET Framework 應用程式中實作全球化、文字操作與繪圖功能(11%)

    全球化(Globalization)在大型或是跨國型的資訊系統來說很重要,例如文字的區域化(Localization)、貨幣單位與時間的同步等等,在 .NET Framework 中也提供了基礎上的支援(System.Globalization),而最常見的,還是文字的編碼問題(例如 UTF-8 轉成 Big5),System.Text.Encoding 類別提供了預設 ASCII、UTF-7、UTF-8 與預設編碼(Default)的支援,可以讓開發人員簡單的將文字轉碼。

    文字的操作除了編碼外,還有搜尋(Search)與組合(Append),搜尋部份 .NET Framework 支援了 Regular Expression 的搜尋方式(System.Text.RegularExpression),而組合則有 StringBuilder 可以利用,最基本的文字操作則都包含在 System.String(也就是 string 資料型態)的成員函式中。

    繪圖能力(Drawing ability)則是以 System.Drawing 為主,提供了筆刷(Brush)、筆(Pen)、畫布(Graphics)、影像(Bitmap/Image)、形狀(Rectangle/Region)、字型(Font)與顏色(Color)等功能,開發人員可以利用這些類別來在應用程式上進行影像處理與繪圖工作,然後存成資料流或是檔案。

    考生應對基本文字處理、Regular Expression 使用、編碼、繪圖功能、區域設定等有所基本了解,最好是實作幾次程式。

準備方法

由於 70-536 考試的範圍比較廣且比較雜,在準備方面,筆者建議先建立好基礎概念,例如執行緒、資料流、RTTI、加密與權限管理、文字處理與繪圖等等,有許多主題概念都分布在不同的書中,若想要對於部份類別有較多且較佳的應用,概念還是需要了解,並且搭配實作來驗證。

準備用書籍部份,微軟官方有出一本教育訓練的教材,目前已有出版社翻譯為中文版,另外,微軟出版社也有幾本好書:

  • Programming Visual C# 2005: The Language
  • Programming Visual Basic 2005: The Language
  • Programming Visual C# 2005: The Base Class Library

都適合作為準備用書。

官方的教育訓練課程則有:

Collection 5160: Core Development with the Microsoft® .NET Framework 2.0 Foundation

Collection 5161: Advanced Development with the Microsoft® .NET Framework 2.0 Foundation

其實準備本科最好的方法,就是寫,而且要多做實驗,這樣才會知道哪些正確,哪些不正確,有些程式是不能用看的就好了,要實際下去寫,才能夠感受到差異的地方,也比較能夠了解真正的 .NET Framework 的類別庫操作,在未來做 Windows、Web 或分散式開發時,才會有正面幫助。

考試資訊

考試代碼:Exam 70-536
考試名稱:TS:Microsoft .NET Framework 2.0 Application Development Foundation
題目數量:45
通過分數:700

轉貼自:http://www.microsoft.com/taiwan/msdn/columns/jhu_ming_jhong/exam_70-536.htm

簡易任審動態檔案及清冊下載電子檔下不到client

簡易任審動態檔案及清冊下載
BAE1070100資料夾內供外網下載的審定核備電子清冊檔案下不到client端
原因如下:
該目錄為:med\Program\BAE1070100\BAE1070100Grid1\BAE1070100Grid1Grid1\
產生電子清冊檔案之BAE1070100Grid1Grid1_T.asp檔未設定匿名存取,導致將產生之電子檔搬入T槽時造成寫入失敗。

解決方法:
進入各台iis下前針對該路徑下之該asp檔額外設定匿名存取即可。
目前已完成設定機器編號如下
101~106,108~111,113

個人建議:
最好還是將BAE1070100Grid1Grid1_T.asp這支asp檔改放至report目錄下,並統一對各台iis之report目錄做匿名存取之設定,避免某台新加入服務之機器漏設定造成服務不一致(有的client可以下載,有的client出現錯誤訊息)

2008年5月1日 星期四

關於LINQ

為什麼需要LINQ ? 我的一些想法

LINQ 新書工作室還在寫,不過,我一直遇到很多人提到這個問題,「我們為什麼還需要LINQ ? SQL已經夠好了不是嗎」,事實上,在我去年第一次接觸 LINQ 的時候,腦海裏浮現的也是這個問題,資料庫技術發展這麼多年了,沒有人會懷疑 SQL 的威力,直覺、好用,最重要的是,它已經是所有關聯式資料庫的存取標準了,還有,太多人已經熟悉這門技術,究竟為了什麼,我們還需要新的資料存取技術。

我想,是該好好釐清一下這個問題,畢竟,沒有足夠動機,讓技術人員想要學習LINQ,我的書怎麼會賣得好(路人甲:扯東扯西原來為了賣書啊 …)-.-|||。

會讓第一次接觸 LINQ 的技術人員有上面的疑問,最主要的原因在於,幾乎每一個接觸 LINQ 的技術人員被灌輸的第一印象便是,LINQ 是一種可以用來存取物件、資料庫以及XML等等不同資料來源的新技術,這些是事實,但不是重點。

MS發展 LINQ 一定有它的用意。

一 個已經成為標準而且被廣泛應用的技術-例如 HTML,就算它不夠好,基本上已經很難被取代,更何況 SQL 本身是一項非常成功的技術,如果 LINQ 只是一個單純的替代品,我想沒有人會想要放棄 SQL 去用它,XML亦是如此,儘管它沒有統一的存取方法,但是各種主流的開發框架,對於XML亦早已提供了完整的支援,我想也沒有人會想要放棄這些已經熟悉的 API 再去學 LINQ,只為了作同樣的事,我這個小小的電腦書作者都知道了,匯集了全球頂尖人才的MS怎麼會不知道 ??

所以,重點不在於LINQ可以存取這些資料來源,LINQ 真正的精神,在於它終於正視了集合物件元素的存取操作這件事。

電 腦這門行業之所以稱為資訊工業,在於它是人類為了處理資料而發展出來的一門技術,資料只有經過有效的整理歸納與萃取之後,才能成為有用的資訊,我們所開發 的軟體,都是為了處理各種資料而設計,而為了應付資料處理的需求,所以有了資料庫,有了XML文件,然後有了存取這些資料來源的相關的技術。

回到源頭,早期程式語言剛開始發展出來的時候,並沒有上述談到的這些東西,最早期的資料處理,一般均透過所謂的陣列與集合進行操作,一直到現在,只要資料被載入記憶體處理,我們所依賴的依然是這些技術。

瞭解問題在那裏了嗎,集合,長久以來,一直沒有足夠「好」的技術,可以針對儲存在集合中的元素執行存取維護作業,.NET 2.0導入了對泛型的支援,也僅是讓資料的存取更為嚴謹靈活,如此而已,一直到LINQ,這個問題終於有了好的解答。

你很難想像,將集合物件當作資料庫來操作,無論是篩選、計量、關聯或是切割等資料操作,這些 SQL 的基本功能,傳統的程式語言都很難、或是不容易在集合身上辦到,LINQ 為我們提供了一套出色的解決方案。

你可以將 LINQ 視為一套專門用來對付集合物件的資料操作語法,想像有了LINQ,只要將資料儲存於集合,就可以如同資料庫一般進行操作,例如,你可以載入硬碟檔案系統資訊,與資料庫中的資料透過 LINQ 合併作處理,多麼美好的技術,不是嗎。

即 然對於集合物件元素的存取有了好的方案,SQL 與 XML 同時一併納入處理最大的好處,是可以在原有的基礎上,提供更好的資料整合能力,而非我們原先認為的,LINQ 的出現只是為了取代這些技術,相反的,它可 以讓我們更有效的處理各種不同來源的資料,而當你只是要針對特定的資料來源進行存取,原來的技術還是可以運作的很好。

資料來源:http://www.kangting.tw/2008/01/linq_15.html