發表文章

目前顯示的是 2月, 2012的文章

.NET – XMLAttribute Attribute 在 Class Serialize 的時機

圖片
在 .NET 中對 Class 做序列化是很簡單的一件事,只需短短的二行 Code 就可以搞定,但當資料量大時如何簡少資料的 Size 呢?在此來看一下簡單的 Code. 首先建立一 Class 及所需的 properties. 在此產生 10000 筆的資料序列化成 XML 後存至 File 中. 來看一下所產生的 File size 為何? 在其 property 上加上 XmlAttribute Attribute. 其產生的 File size 為何? 由上面二者比較後可以得知有加入 XmlAttribute Attribute 的部份所產生的 Size 是比較小的.當所序列化後的資料是使用在網路上做資料的傳遞可以使用此方法讓資料壓縮已減少傳遞的流量.

Java – Tomcat + Axis2 架設 Web Service

圖片
使用 Java 在開發 Web Project 至今並沒有寫過任何 Java 版的 Web Service,不過還是要做個小小的 example 記錄如何在 Tomcat 下開發 Web Service .在此使用 apache 下提個的 axis2 project 來架設 Web Service. 1. 首先從 Apache Axis2 Web 下載最新版的 Binary Distribution,解壓至存放的 Folder 中. 2. Eclipse 中設定 Tomcat Server 的 Runtime Environment 再來是 Web Services 的部份. 3. Create new dynamic web project. 4. 寫一個一般的 Java Class,此部份的範例是使用 HelloWorld 做為 Sample. 6. 在所需的提供 Web Service 的 Class 上按右鍵選取Web Service –> Create Web Service 按下 “configuration” 選取相對映的 Tomcat 及 Axis2 之後按下 Finish 鈕後已完成 Tomcat + Axis2 架設 Web Service.使用 Web Browser 上輸入 http://localhost:8080/TestWebWervice 後即可看到的畫面如下所示: PS : 如未有上面的畫面時,請查看 web.xml 上其 welcome-file-list 中是否有加入 <welcome-file>/axis2-web/index.jsp</welcome-file>

2012-02-25 大坑之濁水巷櫻花

圖片
今天是228連假的第一天.昨天晚上開始就在大雨大雨一直下.還好早上起床就已經停雨了.反正離大坑只要20分的路途..來去賞櫻啦.. 今天上大坑真的一點車都沒有.不知是不是剛下完雨的關係.不過真的是太好了.最少不用塞車而且賞櫻的人數稀少.讚啦. 看一下山中的風景..霚好大...而且天好陰..但遊客也好少... 好美的櫻花喔.不過剛下完雨的關係.如果是天氣好.又有微風..那櫻花瓣一起飛舞不知有多好啊... 小美女來跟櫻花合照啦... 最後當然是跟老豆我一起照一張.. 好啦.賞櫻之旅結束了.可是在回途之中看到某公園延著腳踏車步道有盛開著整排的櫻花啊.天氣好時我會再來的...

轉貼 BlazeDS 的架構及工作原理

圖片
  一、先來簡單的看blazeDS. 1、blazeds是一個web應用框架。無非就是servlet,jsp和filter,無他。 2、一個web應用框架的基礎還是servlet和過濾器。所以它裡面有個MessageBrokerServlet。這個servlet的用處和其他框架,如struts,spring,或者xwork裡的新增配置文件(struts.xml,application.xml)所起到的作用類似,匹配url,決定將請求發往給哪個服務。 3、blazeds的名詞解釋。 我要裝修房子,知道張三是做裝修的,有三種方式(電子郵件,電話,快遞)都可以聯繫,他可以提供多種服務,如牆漆,家具,地板,燈具。 1)channels通道,就是三種聯繫方式。 2)endpoints端點,就是三種聯繫方式的具體內容,每種聯繫方式可以有多個。如電話,他裝有三個12365444,451325648,45668,當然也可以僅有一個。我第一個打不通就打地二個,第二個打不通就打第三個。 3)serive,是張三的家務事,他可以安排電話專門負責接牆漆的單子,email接家具的單子。 4)destination目的。我們需要什麼牆漆,綠色的,紅色的等等具體的服務內容。 6)adapter適配器。這是張三的家事了,他知道誰誰嘴巴子甜,就讓他接電話,哪個喜歡在網上漫遊就讓他收發郵件。 4、張三的所有的服務在他內部是通過services-config.xml等幾個文件安排的,對外他可以發佈自己的destination,endpoints和channels到報紙,雜誌,網絡,或者其它公共信息載體,也可以僅僅發給自己的私密好友。 二、Blazeds 體系結構 一個Blazeds應用包含了一個運行在瀏覽器或者Adobe AIR的客戶端應用並且和J2EE應用服務端通信。客戶端可以是Flex也可以是結合Flex、HTML/JavaScript的應用程序。 整個體系主要包括 通道、端點、消息、服務、目的地、適配器 等,把這些搞懂也就差不多了。 通道使得組件能夠和Blazeds服務端的端點通信,將請求送到目的地 。 端點和通道是相互映射的 。 1. Blazeds 客戶端體系結構        Blazeds使用一個基於消息的框架與服務端結合。這個框架使用通道封裝了Flex程序和Blazeds服務端之間的連

Flex – File 的選取及讀取內容

圖片
Flex 中要使用 File Browser 來選取 File 及讀取內容時,需使用 FileReference 及 FileFilter 這個 component 來提供這部份的功能. private var file:FileReference = new FileReference(); private var filter:FileFilter = new FileFilter("TEXT", "*.txt"); 對 FileReference 的 component add “ Event.SELECT ” 及 “ Event.COMPLETE ” 這二個 EventListener protected function onFileSelect(event:Event):void { file.load(); } protected function onFileComplete(event:Event):void { data.text = file.data.readUTFBytes(file.data.length); } 最後在所需提供 File Browser 的地方加入 “ file.browse([filter]); ” 這段程式碼.就可以達到使用 File Browser 來選取及讀取 File 的內容了.那畫面如下所示:

Flex – Bindable 及 RemoteClass Attribute 同時使用資料無法 Binding 成功

在 Flex 中使用 Bindable Attribute 來提供 Data Binding 的功能,而 RemoteClass 是在使用 Remote Obejct 來跟 Server 端的 Model 做 Mapping 的.有些時候我們會有需要同時使用 RemoteClass 及 Bindable Attribute 在一個 Model ,此時如沒有強制轉型時可能會遇成其資料無法 Data Binding 成功.

JQuery - 實作 Busy Indicator

圖片
一般在 Web 中當 Client 在跟 Server 擷取資料時,一般都需 Hold 畫面上的部份不讓 Client 端做任何的動作及告知目前動作正在處理中,故最常使用的是在原上的畫面在再利用圖層的觀念再上層再疊上一個 Busy 的畫面,再此提供一個使用 JQuery 最簡單的方式來實作這個功能. 1. 在 CSS 中設定下面的屬性 <style type="text/css"> html, body { overflow: auto; } body { padding: 0; margin: 0; } #mask { position:absolute; z-index:9000; background-color:#000; display:none; } #window { position:absolute; left:0; top:0; background-color: #FFF; width:230px; height:90px; display:none; z-index:9999; padding:20px; } </style> 2. 在 HTML 中加入下面程式碼 <div id="mask"></div> <div id="window"> <table border="0"> <tr> <td align="center"><span style="color : Red; font-weight : bold" >Data proce

Flex – 使用 Drag 實作 AdvancedDataGrid 刪除功能

圖片
雖然在 RIA 的領域裡使用 Drag 來達到的功能是最基本也是最常見的,故在這裡還是來實作一下 Drag AdvancedDataGrid 的 Row 來達到 Delete 的效果.(這個功能只能說是炫而己,並不實用)… 首先在 AdvancedDataGrid 中加入 dragEnabled="true" 此設定. <mx:AdvancedDataGrid id="grid" width="100%" height="100%" dragEnabled="true"> 其次在所需 Drag 至的目標上加入 dragDrop 及 DragEnter 的 Event Handler. <s:Image id="recycleBin" source="@Embed('images/RecycleBin.png')" dragDrop="recycleBin_dragDrop(event);" dragEnter="recycleBin_dragEnter(event);" /> 其 dragDrop 及 DragEnter 的 Code 如下所示: private function recycleBin_dragEnter(event:DragEvent):void { var obj:IUIComponent = IUIComponent(event.currentTarget); DragManager.acceptDragDrop(obj); } private function recycleBin_dragDrop(event:DragEvent):void { var values : Array = grid.selectedItems; while(values.length > 0) { var item : object = values.pop() as object; arraycollection.removeItemAt(arraycollection.get

Flex – Popups 中使用 Bubbling Events 的方法

圖片
在 Flex 中非常容易的使用 event bubble,可是當 Bubbling events dispathed 來至 Popups 時,此時 Flex Application 不能附加 listener 至此 application instance.由下方這張圖就可以說明其 Popup 並不是在 Application 下,詳細的部份可以可以參考 “ Bubbing Events out of Popups ” 這篇文章. 如果想要 listener 其 Popups 所發出 event dispatched 可以使用另一種方法來達成. var obj : IFlexDisplayObject = PopUpManager.createPopUp(this, ClassName, true); obj.addEventListener(CustomEvent.EventName, handleEventName); 使用 PopupManager.createPopUp 來建立 Popup Object ,再針對此 Object 加入 EventListener,把其 Event Handler 指給目前的 UIComponent 交其處理,來解決此問題.

Flex - 使用 Popup 及 Title Window 達到 modal window 的效果

圖片
在 Flex 中並沒有提供 modal window 的 component,故可利用 Popup 及 Title Window 來達到此效果. 1. 首先建立一 Flex MXML Component ,Based on : spark.components.TitleWindow 2. 需在 Close Event 中加入 “PopUpManager.removePopup(event.target as IFlexDisplayObject)” 這段程式碼,讓 UI 隱藏起來;Source Code 如下所示: <?xml version="1.0" encoding="utf-8"?> <s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" title="Data Source" horizontalCenter="center" width="360" height="370" close="closeHandler(event)"> <fx:Script> <![CDATA[ import mx.core.IFlexDisplayObject; import mx.events.CloseEvent; import mx.managers.PopUpManager; protected function closeHandler(event:CloseEvent):void { PopUpManager.removePopUp(event.target as IFlexDisplayObject);

Flex – Mouse Event 之 Scope 的描繪

圖片
一般的繪圖程式都會提供 Mouse Down 時拖拉會出現所選取的 Scope,而 Mouse Up 時其 Scope 就不會見.那在 Flex 上如果去實作這個部份呢?在此提供一個簡單的方式. 1. 新增 MXML Component File, 取名為 Scope.mxml 那它的內容如下所示: <?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:Rect width="100%" height="100%" alpha="0.2"> <s:fill> <s:SolidColor color="#8080FF" /> </s:fill> </s:Rect> </s:Group> 2. 在 Default Application 中的內容如下所示: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xml

Flex – 使用 Scroller 替 Container 加上 Scroll Bar

圖片
在 Flex 4 上如需替 Container 加上 Scroll Bar 時需使用 Scroller Library 來達至此功能. 1: < s:NavigatorContent label ="Accordion Button for Panel 1" width ="100%" height ="100%" > 2: < s:Scroller width ="100%" height ="100%" > 3: < s:Group > 4: < s:layout > 5: < s:VerticalLayout gap ="0" paddingLeft ="5" paddingTop ="5" /> 6: </ s:layout > 7: < s:Label text ="Accordion container panel 1" /> 8: < s:Label text ="Accordion container panel 1" /> 9: < s:Label text ="Accordion container panel 1" /> 10: < s:Label text ="Accordion container panel 1" /> 11: < s:Label text ="Accordion container panel 1" /> 12: < s:Label text

Flex – Panel title 改變顏色

圖片
在使用 spark 的 Panel Control Library 時需對 title 改變其 color , font size, font weight 時,此時可以使用 style 的方式來設定. 加入上述的 style 時其在顯示 Panel title 的顏色就會變成是白色.

JAVA–POI 產生 Excel 2007 Format

圖片
在 Java 中要產生 Excel File 歸 Apache POI 莫屬,那 POI 如何產生 Excel 2007 以上的檔案呢?在此提供一個 Sample Code. Workbook wb = new XSSFWorkbook(); Sheet s = wb.createSheet(“Sheet 1”); Row row = s.createRow( 0 ); row.createCell( 0 ).setCellValue(“test”); s.addMergedRegion(new CellRangeAddress(0, 0, 0, 3)); FileOutputStream out = new FileOutputStream(“sample.xlsx”); wb.write(out); out.close(); 執行上述程式後用 Excel 開啟此檔其顯示如下所示:

Oracle – 使用 to_number 函數把 varchar 轉換至 int

圖片
當資料如果是數字但所儲存的 Column Type 為 varchar 時,當在排序如下所示: 那如要正確的排序時可以使用 to_number 這個函數來把 varchar 轉至 int 後才排序.

WPF – Command 的用法

    現在來說明一下 Command 的用途,一般很多時候會在很多的地方提供相同的方法,如在 Menu 中會有 Cut, Copy, Paste 的 Action,及在 ToolBar 上也會有 Cut, Copy Paste 的 Action,那在實作時可能會做一個 Member ,那 Click 指來這個 Member,在 WPF 中有另一種作法,使用 Command 這個 Property 來達到此功能~ XAML : < Button Command ="Properties" Content ="_Properties" /> C# public MainWindow() { InitializeComponent(); InputBinding ib = new InputBinding ( ApplicationCommands .Properties, new KeyGesture ( Key .Enter, ModifierKeys .Alt)); this .InputBindings.Add(ib); CommandBinding cb = new CommandBinding ( ApplicationCommands .Properties); cb.Executed += new ExecutedRoutedEventHandler (cb_Executed); this .CommandBindings.Add(cb); } void cb_Executed( object sender, ExecutedRoutedEventArgs e) { MessageBox .Show( "Properties" ); } 在此 Button 上提供了 Click 的動作,也提供了 Alt + Enter 的動作~

Java – Hibernate 簡單使用

圖片
程式在存取 Database 時通常都會建立 DAO 的方式來儲存,也是所謂的 ORM 的方式,那在 JAVA 中比較有名的 ORM 就屬 Hibernate 莫屬了. 在剛接觸 Hibernate 時,所配置的 Configurate File 真的是一大的困擾~那來記錄一下 就 Hibernate 的部份,它所需的 Library 如下所示: 其次是 configurate file . 在 Hibernate 最重要的 Configuration File 為 hibernate.cfg.xml,它所儲存著Database Driver, Account, Password 及Table mapping 的部份.當 Hibernate 在使用時第一次所載入的便是此 File. 當完成此 hibernate.cfg.xml 的配置之後,再來就是 Table Mapping 的 File 及相關的 Model / Class,此部份 Hibernate 提供了 reverse Engineering 的功能,可從所需的 Tables 轉換到相關的 Model / Class 及 mapping xml files. 當完後所有的 Configuration File 的配置之後,接下來就是 Code 的部份了~在使用 Hibernate 時首先需載入 hibernate.cfg.xml 中的配置,取得所要使用 Driver 及 DB Connection 的 Information,來建立 SessionFactory Object. 當連線建立成功後及可以使用 HQL 的方式來取得資料或是所熟悉的 SQL 來取得所需的資料.