2008年7月31日 星期四

改變 Schema

在 SSMS 中,操作是很方便的事情,以致於許多 sql script 可以不用了解,不必知道。
例如,create table xxx 是很麻煩的事情,如果一定要寫成 sql script 就更可怕了。
所以各家的工具會不斷的出 UI 工具,將這些事情簡化。

我已經建立了一個 MyTable 的資料表,使用預設的 schema 為dbo,故要使用時,應該使用 select * from dbo.MyTable
後來,我想更改所屬的schema 為 NewSchema。
怎麼做呢?

在SSMS 中找不到UI介面可以操作哦!

這時候,必須下指令了

	ALTER SCHEMA NewSchema TRANSFER dbo.MyTable

VSTO 2 的部署記錄

之前使用 VS2005 開發了一個 Excel 2003的程式,是使用 VSTO 2.0。
當然在自己的機器開發起來非常的愉快,但一旦要給使用者時,才發現部署起來真的不容易。
我將我的經驗記錄下來,給大家參考。

  1. Client 端之Excel 必須使用 Excel 2003 Professional 版
  2. Client 端必須安裝 vstor (visual studio tool for office runtime)
    http://www.microsoft.com/downloads/details.aspx?FamilyID=f5539a90-dc41-4792-8ef8-f4de62ff1e81&displaylang=zh-tw
  3. 於 Client 機器,打開 cmd, 執行
    gacutil -i "C:\Program Files\Microsoft Office\Office11\Addins\Msosec.dll"
    其中 gacutil.exe 及 gacuti.exe.config 必須從開發機器的 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin 位置複製到 client machine 來執行
  4. Client 端必須設定security policy,參考HOW TO:在共用位置中授與文件和活頁簿使用權限
    請於Client 機器,打開cmd,並執行下列 script
    cd %systemroot%\Microsoft.NET\Framework\v2.0.50727
    caspol -m -ag "CodeGroupName" -custom "C:\Program Files\Microsoft Office\Office11\Addins\Msosec.xml" FullTrust -n "My Data Documents" -d "descriptions"

    caspol -m -ag LocalIntranet_Zone -url \\servername\folder\* FullTrust -n "CodeGroupName" -d "descripions"

不看英文的後果

查詢微軟的 KB,找到了一篇以機器翻譯出來的文件。看標題,突然覺得自己知識不足。

當您有大量的程式執行時, 就會出現 「 郵件答錄機的記憶體 」 錯誤訊息

clip_image001

學了一生的電腦,還不知道什麼是郵件答錄機。

按了右邊的查詢鍵,看英文的原文,才知道人是非常容易相信「網路謠言」的。

人,還是腳踏實地的比較好。

clip_image003

2008年7月30日 星期三

Aync in Asp.net 2.0

之前在 asp.net 所使用的非同步呼叫,看來在 asp.net 2.0 是行不通了.

 

在 asp.net 2.0 的做法,標準的要參考 http://msdn.microsoft.com/zh-tw/magazine/cc163725(en-us).aspx

礦泉水瓶勿重複使用

這是別人寄給我的 email,我不知道原本的出處。但我覺的很重要,因此在這裡貼上。 如果有侵犯到您的智財權,請來信通知我。

保特瓶雖是最方便的容器,但也是易造成致癌的兇器

clip_image001[7] 以前還以為這個符號內的數字是回收的$$ 原來不是這樣子滴

clip_image002[5] 杜拜一個十二歲的女童,因為連續十六個月使用同一個礦泉水瓶,她得了癌病。一般保特瓶裏面含一種叫做 polyethylene terephthalate(聚對苯二甲酸乙二醇酯), 或簡稱 PET的塑膠材質,是由對苯二甲酸(Te rephthalic acid)和乙二醇(Ethylene glycol)化合後產生的聚合物。PET塑膠具質輕、透明度高、耐衝擊不易碎裂等特性,也可阻止二氧化碳氣體,讓汽水保持有「氣」。因此,PET塑膠適合作包裝用,特別是裝載水和飲品。部分學者認為其裏面有一種叫做diethylhydroxylamine (乙基己基胺)或簡稱DEHA 的? 蝳b致癌物質,用一次是安全的,如果你因節儉或方便而重複使用,就有致癌危機 clip_image003[5] 原來每個保特瓶,在底部都有一個數 ( 它是一個帶箭頭的三角型 , 三角型裡面有一個數字 ) 假若數字在 "05" 或以上就可以循環再用 而數字愈大愈安全 假若小於 "05",即 "04" 或以下,甚至沒有數字, 請勿再利用或加熱使用 一般礦泉水瓶子 底部標示 1 (所以不要放在汽車內曬太陽 !! 麵攤的塑膠耐熱碗 底部標示 5 一般泡茶的塑膠耐熱杯 ? 陶□苭?/B> 5 雀巢奶精瓶子底部標示 2 林志玲廣告的優酪乳瓶子底部標示 2 clip_image001[8] 塑膠材質編

clip_image001

聚乙烯對苯二甲酸酯polyethylene TerephthalatePET),俗稱寶特瓶

clip_image002

高密度聚乙烯(High Density polyethyleneHDPEPE)

clip_image003

聚氯乙烯polyvinyl chloride,PVC

clip_image004

低密度聚乙烯(Low Density polyethyleneLDPEPE)

clip_image005

聚丙烯polypropylenePP

clip_image006

聚苯乙烯polystyrenePS),若是發泡聚苯乙烯即為俗稱之「保麗龍

clip_image007

其他類(OTHERS

PET(polyethylene Terephthalate,聚乙烯對苯二甲酸酯): PET最初的用途是做為人造纖維,及底片、磁帶等,在 1976 年才用於飲料瓶。 以PET為原料做為填充容器,就是俗稱的「寶特瓶」。 寶特瓶的硬度、韌性極佳,質量輕(僅玻璃瓶重量的1/9 ~ 1/15),攜帶和使用方便,生產時能量消耗少,加上不透氣、不揮發,耐酸鹼,是碳酸飲料的好包材。 近年來成為碳酸飲料、茶、果汁、包裝飲用水、酒及醬油等產品之重要填充容器,此外! ,如清潔劑、洗髮精、食品用油、調味品、甜食品、藥品、化妝品、及含酒精飲料的包裝瓶子,都已在大量使用寶特瓶。 clip_image011[4]clip_image012[4] PVC(polyvinyl chloride,聚氯乙烯): PVC材質的發明相當早,且多方應用於工業產品中,由於PVC同樣具有其他塑膠材質的優點,且在加工上、可塑性上相當優良,加上價錢便宜,使用量很普遍,但大多在非食品方面,像水管、雨衣、書包、建材、塑膠膜、塑膠盒等等。 在容器用途上,多用於填充植物油、清 ! 潔劑、糕餅盒及包裝飲用水等。 由於該材質因本身含有氯元素,在製瓶、填充、回收再處理之過程中疑有VCM單體易釋出,有危害人體健康之虞,再加上近年來環保意識高漲,業者已逐漸改用其他材質為填充容器裝填產品。 clip_image013[4] PE(「polyethylene,聚乙烯」: PE是工業、生活上應用最廣的塑膠,一般常分為高密度聚乙烯(HDPE)與低密度聚乙烯(LDPE)兩種。 PE對於酸性和鹼性的抵抗力都很優良。HDPE較LDPE熔點高、硬度大,且更耐腐蝕性液體之侵蝕。 目前市面上所見到的塑膠袋及各種半透明或不透明的塑膠瓶幾乎都是PE所製造,像清潔劑、洗髮精、沐浴乳、食用油、農藥…等,大部份以? 痌牶煍茞~來盛裝。LDPE在現代生活中可謂無所不在,不過不是因為它做成的? e器,而是你隨處可見的─塑膠袋。大部份的塑膠袋和塑膠膜是用LDPE做成的。 clip_image014[4]clip_image015[4] PP(polypropylene,聚丙烯: PP與PE可說是二兄弟,但若干物理性能及機械性能比PE好,因此製瓶商常以PE製造瓶身,瓶蓋和把手用有較大硬度與強度的PP來製造。 PP熔點高達167℃,耐熱,製品可用蒸氣消毒是其特點。 以PP製瓶的,最常見的是豆漿、米漿瓶,還有用來裝100%純果汁、優酪乳、果汁飲料、乳製品 (如布丁)等, 較大的盛器,像水桶、垃圾桶、洗衣槽、籮筐、籃子等等多是以PP做成。 近年來亦大量使用於製成免洗餐具或免洗杯(供速食餐飲業者裝填冰品使用,如市面盛行之「快可利」連鎖店所用之盛裝容器) 該材質容器係屬不透明或半透明容器,具備有耐酸鹼、耐化學物質、耐碰撞及耐高溫(約20℃~120℃)等優點。 clip_image016[4]clip_image017[4] PS(polystyrene,聚苯乙烯): PS吸水性低,且其尺寸安定性佳,可用射模、壓模、擠壓、熱成型加工。 一般依其是否經過「發泡」製程區分為發泡與未發泡兩類。未發泡PS主要應用於建材、玩具、文具等,也可常見製成容器填充發酵乳品(如養樂多、健健美、多多等乳製品或乳酸產品等,近年來亦大量使用於製成免洗餐具。 發泡PS(即俗稱保麗龍)則是在製程中利用發泡劑作20倍至100倍不等之發泡,用於包裝家電或資訊物品之緩衝包材或具隔熱效果之冰淇淋盒、魚箱等,一般稱為EPS(Expanded polystyrene);同 時也用於製成免洗餐具,這種保麗龍通常先做成平板,稱為PSP(Expanded polystyrene Paper),再成形加工成各種容器,亦有以食品級E! PS注模成形的保麗龍,如? @啡杯,燒仙草杯等即是clip_image018[4]clip_image019[4]

.

2008年7月29日 星期二

VS2008 的小技巧

開發程式碼時,當然需要 intellisense的功能。但有時,在選擇所需要的method/properties 時,會如下圖一樣,被 tooltip 所擋住,看不到原本的程式碼

image

 

此時,按 Ctrl 鍵, tooltip 將變的透明。

image

2008年7月25日 星期五

Windows Form 的 Exception 處理

之前對於 WinForm 的 Exception 處理方法,一直搞不懂。
原來,微軟有 sample

public static void Main(string[] args)
{
    // Add the event handler for handling UI thread exceptions to the event.
    Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException);

    // Set the unhandled exception mode to force all Windows Forms errors to go through
    // our handler.
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

    // Add the event handler for handling non-UI thread exceptions to the event. 
    AppDomain.CurrentDomain.UnhandledException +=
        new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

    // Runs the application.
    Application.Run(new ErrorHandlerForm());
}

 

也就是說,UI Thread 上發生的錯誤,會產生 Application.ThreadException 事件
而非 UI Thread 上發生的錯誤,則會產生 AppDomain.CurrentDomain.UnhandledException 事件

如何在 DataGridView 的 Cell 中使用 DateTimePicker

希望能做到像這樣

image

要怎麼做呢?原來微軟就有 sample 了

How to: Host Controls in Windows Forms DataGridView Cells

Could not find an implementation of the query pattern for source type 'XXX'

當我以 Linq 來查詢設定檔(app.config)的資料時,會使用下列的語法

System.Configuration.Configuration config =
       ConfigurationManager.OpenExeConfiguration(configFilePath);
      ZipConfigurationSection section = config.GetSection("zipSetting") as ZipConfigurationSection;
      var q = from i in section.Periods
              select i;

結果出現下面的錯誤

Could not find an implementation of the query pattern for source type 'A.B.PeriodsConfigurationElementCollection'.  'Select' not found.  Consider explicitly specifying the type of the range variable 'i'.   

這是因為 section.Periods 並未實作 IEnumable<T>。
這怎麼辦呢?

還好,這方面微軟已經幫我們注意到了。此時改用下面語法即可

var q = from i in section.Periods.Cast()
        select i;
Cast後的結果,就是 IEnumable<PeriodConfigurationElement>了。

同樣的方法,適用在 System.Collections 中的 Class,如 ArrayList
 

Naming Convention

撰寫程式時,對於又臭又長的名稱,有的同事一定不喜歡吧。

例如, InvoiceActionHistory 代表著 發票動作歷史,記載著誰在什麼時間,對該張發票做過哪些事情。

但是,名字有點長,19個字元長,因此,有的同事就會改成 InvActHstry 之類的縮寫。

可是,這樣需要猜一猜原來的意思。有時候很難想像。

看看下面的圖表,微軟的 .net framework 的 type name, 也是這麼長哦! 最長使用的長度是 16。

所以,不要太杏嗇了。

資料來源見 http://blogs.msdn.com/mwinkle/archive/2008/05/01/proving-a-point-with-linq-or-the-longest-type-names-in-the-net-framework.aspx 

 

 

Histogram of Type Name Sizes

image

 

Top 100 Longest Type Names

Rank Length Name Version
1 54  AttachedPropertyBrowsableWhenAttributePresentAttribute   v3.0
2 53  ListViewVirtualItemsSelectionRangeChangedEventHandler   v2.0
3 52  ServiceModelEnhancedConfigurationElementCollection`1   v3.0
4 50  DataGridViewCellContextMenuStripNeededEventHandler   v2.0
5 50  ListViewVirtualItemsSelectionRangeChangedEventArgs   v2.0
6 49  DataGridViewRowContextMenuStripNeededEventHandler   v2.0
7 49  WorkflowServiceAttributesDynamicPropertyValidator   v3.5
8 48  DataGridViewColumnDividerDoubleClickEventHandler   v2.0
9 47  DataGridViewCellContextMenuStripNeededEventArgs   v2.0
10 47  DataGridViewCellStyleContentChangedEventHandler   v2.0
11 47  ReadOnlyActiveDirectorySchemaPropertyCollection   v2.0
12 47  ExtendedWorkflowRuntimeServiceElementCollection   v3.5
13 46  IDataGridColumnStyleEditingNotificationService   v2.0
14 46  DataGridViewRowContextMenuStripNeededEventArgs   v2.0
15 46  UpdateProgressAssociatedUpdatePanelIDConverter   v3.5
16
46
 SharedConnectionWorkflowCommitWorkBatchService 
 v3.0
17 46  DispatcherUnhandledExceptionFilterEventHandler   v3.0
18 45  DataGridViewColumnDividerDoubleClickEventArgs   v2.0
19 45  DataGridViewCellToolTipTextNeededEventHandler   v2.0
20 45  DataGridViewEditingControlShowingEventHandler   v2.0
21 45  DataGridViewRowDividerDoubleClickEventHandler   v2.0
22 45  NamedServiceModelExtensionCollectionElement`1   v3.0
23 45  StandardBindingOptionalReliableSessionElement   v3.0
24 45  X509CertificateTrustedIssuerElementCollection   v3.0
25 45  X509ScopedServiceCertificateElementCollection   v3.0
26 45  InitiatorServiceModelSecurityTokenRequirement   v3.0
27 45  RecipientServiceModelSecurityTokenRequirement   v3.0
28 45  DataContractSerializerMessageContractImporter   v3.0
29 45  ClientWindowsAuthenticationMembershipProvider   v3.5
30 45  IClientFormsAuthenticationCredentialsProvider   v3.5
31 45  AttachedPropertyBrowsableForChildrenAttribute   v3.0
32 44  DataGridViewCellStyleContentChangedEventArgs   v2.0
33 44  DataGridViewColumnDesignTimeVisibleAttribute   v2.0
34 44  CodeParameterDeclarationExpressionCollection   v2.0
35 44  ReadOnlyActiveDirectorySchemaClassCollection   v2.0
36 44  ServiceModelConfigurationElementCollection`1   v3.0
37 44  UseManagedPresentationBindingElementImporter   v3.0
38 44  WS2007FederationHttpBindingCollectionElement   v3.0
39 43  KeyContainerPermissionAccessEntryCollection   v2.0
40 43  KeyContainerPermissionAccessEntryEnumerator   v2.0
41 43  DataGridViewAutoSizeColumnsModeEventHandler   v2.0
42 43  DataGridViewCellErrorTextNeededEventHandler   v2.0
43 43  DataGridViewRowHeightInfoNeededEventHandler   v2.0
44 43  DataGridViewRowHeightInfoPushedEventHandler   v2.0
45 43  PerformanceCounterPermissionEntryCollection   v2.0
46 43  TypeUniqueIdentifierSchemaImporterExtension   v2.0
47 43  IRemoteArgumentDictionaryEnumeratorContract   v2.0
48 43  ForeignKeyReferenceAlreadyHasValueException   v3.5
49 43  SecurityPackageContextConnectionInformation   v2.0
50 43  PrintSystemObjectPropertiesChangedEventArgs   v3.0
51 43  IssuedTokenClientBehaviorsElementCollection   v3.0
52 43  IssuedTokenParametersEndpointAddressElement   v3.0
53 43  X509ServiceCertificateAuthenticationElement   v3.0
54 43  TransportConfigurationTypeElementCollection   v3.0
55 43  ClientFormsAuthenticationMembershipProvider   v3.5
56 43  ServiceDescriptionFormatExtensionCollection   v2.0
57 43  DispatcherUnhandledExceptionFilterEventArgs   v3.0
58 42  DataGridViewCellToolTipTextNeededEventArgs   v2.0
59 42  DataGridViewEditingControlShowingEventArgs   v2.0
60 42  DataGridViewAutoSizeColumnModeEventHandler   v2.0
61 42  DataGridViewColumnStateChangedEventHandler   v2.0
62 42  DataGridViewRowErrorTextNeededEventHandler   v2.0
63 42  DataGridViewRowDividerDoubleClickEventArgs   v2.0
64 42  ToolStripItemDesignerAvailabilityAttribute   v2.0
65 42  EdmRelationshipNavigationPropertyAttribute   v3.5
66 42  BehaviorServiceAdornerCollectionEnumerator   v2.0
67 42  DirectoryServicesPermissionEntryCollection   v2.0
68 42  ForestTrustRelationshipCollisionCollection   v2.0
69 42  X509ClientCertificateAuthenticationElement   v3.0
70 42  ServiceControllerPermissionEntryCollection   v2.0
71 42  DatabaseNotEnabledForNotificationException   v2.0
72 42  DesignTimeResourceProviderFactoryAttribute   v2.0
73 41  CryptographicUnexpectedOperationException   v2.0
74 41  DataGridPreferredColumnWidthTypeConverter   v2.0
75 41  IDesignTimeResourceProviderFactoryService   v2.0
76 41  SiteMapDesignerHierarchicalDataSourceView   v2.0
77 41  WindowsUserNameSecurityTokenAuthenticator   v3.0
78 41  PrintSystemObjectPropertyChangedEventArgs   v3.0
79 41  ConnectionOrientedTransportBindingElement   v3.0
80 41  SecurityContextSecurityTokenAuthenticator   v3.0
81 41  SecureConversationSecurityTokenParameters   v3.0
82 41  X509CertificateInitiatorServiceCredential   v3.0
83 41  X509CertificateRecipientServiceCredential   v3.0
84 41  RecordDescriptionToTypeReferenceConverter   v3.0
85 41  BlobMessageEncodingBindingElementImporter   v3.0
86 41  DistributedTransactionPermissionAttribute   v2.0
87 41  CompositeActivityDesignerLayoutSerializer   v3.0
88 41  SqlPersistenceWorkflowInstanceDescription   v3.0
89 41  AttachedPropertyBrowsableForTypeAttribute   v3.0
90 40  DataGridViewAutoSizeColumnsModeEventArgs   v2.0
91 40  DataGridViewCellErrorTextNeededEventArgs   v2.0
92 40  DataGridViewCellStateChangedEventHandler   v2.0
93 40  DataGridViewRowHeightInfoNeededEventArgs   v2.0
94 40  DataGridViewRowHeightInfoPushedEventArgs   v2.0
95 40  ListViewItemSelectionChangedEventHandler   v2.0
96 40  DesignerSerializationVisibilityAttribute   v2.0
97 40  TypeSmallDateTimeSchemaImporterExtension   v2.0
98 40  SchemaImporterExtensionElementCollection   v2.0
99 40  ProtectedConfigurationProviderCollection   v2.0
100 40  DirectoryAttributeModificationCollection   v2.0

Share with Facebook