2008年12月1日 星期一
元件在Windows 2000會當掉
原來是沒更新到KB909520
關於KB909520的說明如下:
KB909520 Base 智慧卡密碼編譯服務提供者將軟體更新的描述
這個更新程式可讓多個智慧卡廠商在 Microsoft Windows可使用輕量型專用卡模組而不是完整專用 CSP 啟用智慧卡。
為來自受信任的 「 公開金鑰基礎結構憑證 注意 若要啟用智慧卡大多數的安全性, 使用者必須仍註冊。
請檢查以下檔案日期判斷是否已更新:
Date Time Version Size File name
-------------------------------------------------------
29-Oct-2005 06:49 6.0.5066.164 133,120 Axaltocm.dll
28-Oct-2005 23:40 6.0.5066.160 96,792 Basecsp.dll
29-Oct-2005 06:49 6.0.5066.164 25,600 Bcsprsrc.dll
29-Oct-2005 06:49 6.0.5066.164 151,552 Ifxcardm.dll
29-Oct-2005 06:49 6.0.5066.164 84,480 Pintool.exe
以下作業系統需要更新:
Windows 2000(需套用SP4)
Windows XP
Windows 2003
更新程式會建立下列登錄子機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft Base Smart Card Crypto Provider
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Axalto Cryptoflex .NET
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Infineon SICRYPT CardModule Card
以上資訊來自:http://support.microsoft.com/kb/909520
2008年11月20日 星期四
2008年11月13日 星期四
嘗試用C++寫一顆元件發生錯誤
沒錯!這就是遇到的錯誤!完全跟我的程式碼無關。看起來像是辨識作業系統版本的問題,卡彈卡超久的。
2008年10月3日 星期五
2008年9月30日 星期二
2008年9月26日 星期五
何謂ActiveX
ActiveX® 在廣義上是指微軟公司的整個COM架構,但是現在通常用來稱呼基於標準COM介面來實現物件連結與嵌入的ActiveX控制項。後者是指從VBX發展而來的,面向微軟的Internet Explorer技術而設計的以OCX為副檔名的OLE控 制項。透過定義容器和零件之間的介面規範,如果編寫了一個遵循規範的控制項,那麼可以很方便地在多種容器中使用而不用修改控制項的代碼。同樣,透過實現標 準介面叫用,一個遵循規範的容器可以很容易地嵌入任何遵循規範的控制項。由於OLE在ActiveX控制項中的應用的普及,現在OLE技術中只有少數獨立 於ActiveX技術,例如複合文檔。
一些瀏覽器,例如Internet Explorer、網景瀏覽器等 等都不同程度上支援ActiveX控制項。這允許網頁透過腳本和控制項互動產生更加豐富的效果,同時也帶來一些安全性的問題。Internet Explorer和一些其他應用程式同時支援ActiveX Documents介面規範,允許在一個應用程式中嵌入另一個支援這個規範的應用程式。很多應用軟體,例如微軟的Microsoft Office系列和Adobe的Acrobat Reader都實現了這個規範。
伺服器端ActiveX零件通常是指運行在服務行程中的零件。一個典型應用是在IIS中運行的ASP腳本創建的ActiveX Data Objects,也稱ADO。
市場上有很多開發工具支援開發和使用ActiveX控制項。
以上資料轉載自http://zh.wikipedia.org/w/index.php?title=ActiveX&variant=zh-tw
安裝ActiveX:
regsvr32 mcscal.ocx
卸載ActiveX:
regsvr32 /u mcscal.ocx
2008年9月1日 星期一
Mysql啟用記錄設定
1 [mysqld]
2 datadir=/var/lib/mysql
3 socket=/var/lib/mysql/mysql.sock
4 user=mysql
5 # Default to using old password format for compatibility with mysql 3.x
6 # clients (those using the mysqlclient10 compatibility package).
7 old_passwords=1
8 default-storage-engine=INNODB
9 default-character-set = utf8
10 collation-server = utf8_general_ci
11
12 #同步記錄檔
13 #binlog-do="wunsanmessage"
14 server-id=1
15
16 #系統記錄檔
17 log-error=/var/log/mysql/mysqld-err.log
18 log-bin=/var/log/mysql/mysqlPS02DB
19 log=/var/log/mysql/mysqlPS02access
20
21 [mysqld_safe]
22 pid-file=/var/run/mysqld/mysqld.pid
23
24 #***INNODB ***
25 #skip-innodb
26
27 innob-additional-mem-pool-size=2M
28 innodb-flush-log-at-trx-commit=1
29 innodb-log-group-home-dir=/var/log/mysql
30 innodb-log-files-in-group=4
31 innodb-log-file-size=32M
32 innodb-log-buffer-size=5M
33 innodb_buffer_pool_size=512
34
35 innodb_thread_concurrency=8
以上是設定檔,除了設定檔外,還要記得/var/log/mysql這個自設的目錄是否有mysql的權限;用640或660皆可。
2008年8月21日 星期四
Fedora 9 製作FAT32分割區
一般create ext2或ext3分割區時,直接用mke2fs即可,但fat32或其他分割區時則不行。
拜過google大神後,找到了下列指令:
mkdosfs -c -F32 -v /dev/sda7
需改用mkdosfs這個指令。
參數部份
-c 這個就不瞭解了
-F32 指定格式
-v 應該是顯示進度吧?
欲格式化的磁碟機
2008年5月30日 星期五
Fedora 9 安裝輸入法
解決的方法就是把原來的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上下載限制
修改的方法如下:
主機上傳檔案大小設定 找出 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的感想
首次接觸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日 星期四
2008年5月7日 星期三
睿揚公文系統造成無法選擇印表機
造成該使用者欲列印時,只能點選印表機的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
2008年3月30日 星期日
轉移MySQL的資料
重新建了一個LINUX的伺服器並嘗試用備份檔寫入新的資料庫中...........但失敗了!
錯誤發生在無法建立VIEW..........語法錯誤的樣子。
後來再建一個T43的主機來測試語法,總算找回原來的VIEW
目前週報講稿整理相關的資料庫表格建立如下:
#資料庫建立之SQL語法
#make message table
#主要表格內容:週報日期、講員、題目、講稿整理、講道日期
create table message(paperdate date, speaker varchar(10), title varchar(30), collator varchar(10), message_date date, primary key(paperdate))
#產生講員索引
create index idxspeaker on message(speaker)
#產生講稿整理索引
create index idxcollator on message(collator)
#輸入資料語法
insert into message
values('2006-01-01', '陳勝三牧師', '禮物', '蘇云薇姐妹', '2005-12-25')
#產生經節表格
create table message_scripture(ms_date date, scripture varchar(30), primary key(ms_date, scripture))
#產生講稿內容表格
create table message_pre(mp_date date, discourse text, primary key(mp_date), foreign key(mp_date) references message(paperdate))
#產生主要表格View
create VIEW message_maintable as
select message_table.paperdate paperdate, speakerID.UserName SpeakerName, message_table.title title, message_table.message_date message_date, collatorID.UserName CollatorName
from message_table, person speakerID, person collatorID
where message_table.speaker = speakerID.IDnum and message_table.collator = collatorID.IDnum order by message_table.paperdate
PS:MySQL備份時會把所有的table用sql把它匯出,但不見得可以匯得回去,即便用同一版本的MySQL也是如此,令在下實在很難相信其備份功能。
建議以後備份時,資料表與view分開備份。反正view也只是一段sql。
2008年3月27日 星期四
文書科發文系統修改
原來的流程是
輸入文號 -> 函文內容校對 -> 設定發文日期(設定發文日期後,即關閉函文內容、設定發文日期功能) -> 發文
承辦人希望發文日期和函文內容即使在設定發文日期後繼續能修改。
新的流程如下:
輸入文號 -> 函文內容校業 -> 設定發文日期 (設定日期後日期項目變色)-> 發文
在發文過程中若有任一機關曾經以電子發文時,則系統自動關閉「整批電子發文」功能。
系統檢查gtaoer中的rtype是否有'E'值。
另外承辦人希望函稿編輯中文件速等、密等設定為「普通件」、「普通」(預設值)
這部份需要修改退撫系統的每一支程式
2008年3月24日 星期一
2008年2月28日 星期四
退撫系統維護(撫卹金證書)
承辦人員表示最後服務機關跑不出來,經檢查資料庫後發現
mca table 中的ORGN若為空值,則該欄位跑不出來。
直接修改資料庫,將該欄位的機關名稱補上即可。
2008年2月15日 星期五
2008年2月13日 星期三
文書科電子發文錯誤訊息
Oracle Automation 錯誤 '800a01b8'
SQL execution error, ORA-00904: 資料欄名稱無效
/adm/program/BDE10B0000/BDE10B0000_S.asp, 列454
資料發生原因:
執行UPDATE的SQL文在進行 EEMC Table的資料更新時使用了未定義的欄位。
經查明後,BDE10B0000_S.asp第452行裡其中「prdate」欄位打成「prodate」造成此錯誤,經更新後已解決該錯誤。
組織規程核議表使用限制
- 外部機關上傳之組織規程WORD檔必須在前三行裡(一般是在標題)顯示該機關名稱。例如:國立台北科技大學組織規程
系統會抓取組織規程字樣前的字串當作該機關名稱(校名),若前三行系統抓不到校名或該機關組織名稱者,則自動以「測試組織規程」為該核議表檔名
- 原則上,系統以「行」為處理單位,若遇外部機關以" "、" "、換行符號來進行WORD的排版時,則會出現不可預期的格式錯誤(此部份需依賴承辦人員手動修正)
- 若該外部機關上傳之組織規程檔案有附上組織表,則最後一條文會與組織表合併在一起,此部份需由承辦人員刪除多餘的資訊。
- 某些外部機關組織規程條文以章節分類者,在最前頭第一章與前段文字,因為各人排版方式不同,可能會有連在一起的情形(較常發生於使用大量空白符號者)
2008年1月31日 星期四
宏誠的撫卹金證書報表
發生原因:最後在職時服務機關職稱過長,一換行,造成下面一個表格跳至下一頁,循環的結果
解決方法:改原來的模板即可。
退休案函稿編輯系統,資料初始後發生ORACLE錯誤。
發生原因:Fun_Gtao_s.asp 第616、617行delete gtaoer、gtaoat兩個table的敘述被mark起來了。
解決方法:這兩行解MRAK即可!
2008年1月28日 星期一
鄭哥的筆電
奇怪的是當灌入WINxp 企業版後,會一直LOAD helpctr.exe這支程式直到把記憶體耗盡。
看起來像是病毒,但各大防毒軟體廠商網站上卻尋不著有關這種症狀的敘述。
可以確定的是:也有人有類似的情形發生,但解決的方法是「換一片正版的」XP灌灌看(要是請我重灌電腦的人會自備正版光碟)我哪還需要這麼辛苦!@#$@#$
我的作法是重灌後先灌防毒軟體KAV or KIS or NOD32之類的,然後用眼睛看不見的速度先作xp的更新,再更新病毒碼,再觀察系統的狀況。
鄭哥的筆電竟然只有256MB的記憶體,我顯卡上的記憶體好像也是這個容量,坦白說:這麼少量的記憶體跑WIN XP是非常克難的(記憶體現在也沒多少錢)有機會還是加一下吧!
我不太確定是否因為系統記憶體太少,WINXP徑行執行了降低記憶體的模式,包含「只」用384MB的虛擬記憶體,所以整個系統總共只有384+256=640mb的記憶體。
虛擬記憶體竟然是手動設定384mb的位置,而不是設定在系統配置,這個現象也是令我難以理解的狀況?這張企業版的光碟我灌過無數的電腦,從沒發生過這種狀況。
總之這個CASE算是非常特殊的case,特殊到我必須詳盡的把處理過程記錄下來。
一次撫慰金計算單模板修正
原本第二頁的內容被擠到第三頁
修改辦法:直接改ADBR101096.DOT這支模板,將格式稍微修改即可,不過尚需更多的文號來測試產製的WORD檔案內容是否正確!
2008年1月25日 星期五
ADAR101076_Word.asp 維護記錄
檢查程式碼後發現是公式錯誤
原來程式
F_1E=((rs("pontamt")+rs("peramt"))*rs("fobase")*1/2)
把所有資料庫撈出來的值予以轉換型別修正後
F_1E=(CSng((rs("pontamt")) + CSng(rs("peramt"))) * CSng(rs("fobase")) /2)
2008年1月10日 星期四
BDE10B0000這支文書科的程式
裡頭使用的巨集主要功能如下:
巨集 Copyer :複製一份文貼在書籤"NextPage"之後。
巨集 ReNum:搜尋指定字串,並將其後的編號予以重新編號
巨集 FixStyle:修正執行ReNum後,部份樣式跳掉(第一階層至第五階層樣式)
2008年1月8日 星期二
一支叫ReNum的word巨集
命令其大綱編號「重新編號」
但此程式放在ASP迴圈中執行會造成類似疆屍程序的狀況。ASP沒當,但就是卡在那裡直到逾時。
拿掉這段指令,就正常。
將此巨集單獨放入WORD中,並以呼叫巨集的方式執行,則一切正常。
為何無法放入ASP中執行,原因不明。
此巨集是以WORD「錄製巨集」的方式製成,語法上應無問題。