由於現在很多 Google Map 的應用, 主要用到圖片的 GPS 資訊不外乎緯度, 經度, 高度, 版本.
所以本篇僅說明如何利用 .Net 本身的 Library 從圖檔中取出這些資訊.
不過, 若圖檔本身未包裝這些資訊進去, 程式本身亦不可能讀到.
在說明如何取得這些資訊前, 請記得參考以下資訊:
2010/07/30
[C#] 在 .Net 程式中呼叫 Java 的 Web Service
先前測過 Java 中呼叫 .Net 的 Web Service (here), 現在反過來, 在.Net 中呼叫 Java 的 Web Service.
環境說明:
環境說明:
- Java 開發工具: Netbeans 6.5.1
- Java Web Server: Tomcat 6.0.18
- Java Web Service 套件: JAX-WS 2.1
[ASP.Net] Regular Expression 的密碼驗證
[Other] ADO Stream 的轉碼說明
一般在使用 AJAX 時, 會遇到回傳資料的中文亂碼問題.
不過, 因為網頁瀏覽器的安全性設定問題, 所以使用 AJAX 呼叫的頁面都是在同網域頁面.
也就是說, 呼叫的頁面是在開發者能掌控的範圍 (包括可修改).
因此, 許多網頁對於 AJAX 所呼叫的頁面傳回亂碼的解答, 就會是建議開發者去修改被呼叫頁面的 charset.
不過, 因為網頁瀏覽器的安全性設定問題, 所以使用 AJAX 呼叫的頁面都是在同網域頁面.
也就是說, 呼叫的頁面是在開發者能掌控的範圍 (包括可修改).
因此, 許多網頁對於 AJAX 所呼叫的頁面傳回亂碼的解答, 就會是建議開發者去修改被呼叫頁面的 charset.
[ASP.Net] Session.IsNewSession 與 Session.SessionID
在微軟的 MSDN 中有 Asp.Net 的 Session 說明:
http://msdn.microsoft.com/zh-tw/library/system.web.sessionstate.ihttpsessionstate_members(VS.80).aspx
其中 SessionID 與 IsNewSessiont 的說明如下:
http://msdn.microsoft.com/zh-tw/library/system.web.sessionstate.ihttpsessionstate_members(VS.80).aspx
其中 SessionID 與 IsNewSessiont 的說明如下:
- IsNewSession: 取得值, 指出工作階段是否以目前要求建立.
- SessionID: 取得工作階段的唯一工作階段識別項.
2010/07/29
[SQL Server] 建立 SQL Server Express 的定期自動備份
在 SQL Server 的 Express 版本中, 沒有自動備份的功能可使用.
一般備份就分成兩種方式:
一般備份就分成兩種方式:
- 透過 Management Studio Express 進行手動備份.
- 自行撰寫 T-SQL 的 Script, 或是寫程式去呼叫 T-SQL 的備份指令, 進行資料庫備份.
[ASP] 設計 UTF-8 網頁的注意事項
過去很多人在撰寫中文網頁時, 常以 Big5 編碼做為顯示和資料儲存的編碼方式.
不過, Big5 能顯示的字集畢竟沒 UTF-8 多. 所以, 若要讓網頁可顯示更多的字(簡體中文, 日文等), UTF-8 編碼是不錯的選擇.
以下分別就資料庫, 前端網頁, 後端程式三個部分, 說明若要讓網頁顯示 UTF-8 編碼, 有哪些地方需要調整.
不過, Big5 能顯示的字集畢竟沒 UTF-8 多. 所以, 若要讓網頁可顯示更多的字(簡體中文, 日文等), UTF-8 編碼是不錯的選擇.
以下分別就資料庫, 前端網頁, 後端程式三個部分, 說明若要讓網頁顯示 UTF-8 編碼, 有哪些地方需要調整.
[Other] 讓 IE7 的 RSS 按鈕 On
有些人會以為 IE7 上面那個看起來像是 RSS 訂閱的按鈕, 是瀏覽器在閱讀 RSS 資料時會開啟, 然後讓使用者按下那個按鈕進行訂閱.
不過實際上, 那個按鈕是在 HTML 網頁 <head> 中有一個特定的 <link> 時才會開啟.
參考如下:
不過實際上, 那個按鈕是在 HTML 網頁 <head> 中有一個特定的 <link> 時才會開啟.
參考如下:
2010/07/28
[C# & Java] .Net 加密 (DESCryptoServiceProvider) VS. Java 解密
前言: 這邊只列出我工作上有遇到的情況, 並未對所有的加解密做很完整的舉例/說明.
不過如果有人能提供其他情況, 我是可以試著去解看看.
情境: 在 .Net 中, 利用 DESCryptoServiceProvider 進行加密. 加密的 Mode 為 ECB, Padding 為 None, Zeros 與 PKCS7.
不過如果有人能提供其他情況, 我是可以試著去解看看.
情境: 在 .Net 中, 利用 DESCryptoServiceProvider 進行加密. 加密的 Mode 為 ECB, Padding 為 None, Zeros 與 PKCS7.
[c#] Regular Expression 抓取/取代特定資料的說明
在網路上常見到一些想用 Regular Expression 取資料的問題.
有些解答看起來很複雜, 實際上只要一個一個 pattern 拆解, 就不難發現道理其實很簡單.
以下的例子將視情況進行補充:
有些解答看起來很複雜, 實際上只要一個一個 pattern 拆解, 就不難發現道理其實很簡單.
以下的例子將視情況進行補充:
[C#] 利用 Regex 查詢 Html/Xml 標籤中的屬性值
作用: 取得 HTML 或 XML 內容中, 某個標籤下所指定的屬性值.
輸入參數:
輸入參數:
- strHtml(string): HTML 或 XML 的內容.
- strTagName(string): 標籤名.
- strAttributeName(string): 屬性名.
[ASP.Net] 利用 RegularExpressionValidator 排除特定字串
在常被用來檢查欄位的驗證控制項中, RegularExpressionValidator 算是最常被用到的.
不過還是不要為了用 RegularExpressionValidator 而用, 以免為了兜出想要的 ValidationExpression 而傷透腦筋. 舉例來說, 設計一個只允許數字的輸入欄, 我們可以用以下兩種做法:
不過還是不要為了用 RegularExpressionValidator 而用, 以免為了兜出想要的 ValidationExpression 而傷透腦筋. 舉例來說, 設計一個只允許數字的輸入欄, 我們可以用以下兩種做法:
[ASP.NET] 在 html 中加入遠端網頁的內容
- 使用 <iframe>: 這種方式大概是最常被使用到的.
Sample:<iframe NAME="outer_frame" width="100%" height="100%" frameborder="0" src="http://www.w3schools.com/" ></iframe>
Note: iframe 的 width 或 height 設定成 100% 時, 並不會依 iframe 網頁內容而造成無捲軸的現象. 若要透過 javascript 去依 iframe 的內容調整 iframe 的 width 或 height, 也只有同 iframe 所嵌頁面與外部網頁同 domain 的情況下可行, 不同 domain 會因 access deny (存取被拒) 而無法完成此修改 width 或 height 的動作.
[C#] 使用 Regex 將 0123456789 轉成中文
有時在處理數字的顯示時, 會有一種需求是希望將 "第123期" 轉為 "第一二三期", 或是將其轉為 "第壹貳參期".
像這種一對一的轉換, 有一種寫法如下:
像這種一對一的轉換, 有一種寫法如下:
[Java] 在 Java 程式中呼叫 .Net 的 Web Service
開發工具:
- Java: Netbeans6.5 (plugins: Web Services)
- dotNet: Microsoft Visual Studio 2008
- 透過 VS2008 在網站 (Ex: MyTest) 中建立一個名為 HelloWs.asmx 的 Web 服務.
HelloWs.cs 的程式碼如下:
[C#] 利用 Regex 或 XPath 查詢 xmlns, 並設定 XmlNamespaceManager
本文所使用的 XML 檔案 (ns.xml) 如下:
<?xml version="1.0" encoding="utf-8" ?> <root> <h:table xmlns:h=http://www.w3.org/TR/html4/> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table xmlns:f="http://www.w3schools.com/furniture"> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> <table> <name>Microsoft Visual C# 2008 Step by Step</name> <author>John Sharp</author> </table> </root>
[ASP.NET] XML 與 XSL 的操作
users.xml 的內容如下:
<?xmlversion="1.0"encoding="utf-8" ?> <root> <user> <account>John</account> <name>王小明</name> </user> <user> <account>Mary</account> <name>吳阿美</name> </user> <user> <account>David</account> <name>徐丁丁</name> </user> </root>
[C#] 利用 XPath 的 translate 函式查詢資料
XPath 中有一個函式: translate(string1,string2,string3)
w3schools 網站對其函式的說明: Converts string1 by replacing the characters in string2 with the characters in string3.
利用這個函式, 我們可以進行不區分大小寫的查詢 (如下):
w3schools 網站對其函式的說明: Converts string1 by replacing the characters in string2 with the characters in string3.
利用這個函式, 我們可以進行不區分大小寫的查詢 (如下):
[Other] 好用的 XCOPY
這邊舉例兩個有關 XCOPY 指令的應用:
- 匯出GAC中的組件:
- 切換到 Windows 的 assembly 目錄: cd C:\WINDOWS\assembly
- 將 GAC 目錄中的檔案複製到 C:\Temp: XCOPY /S .\GAC C:\Temp
- 匯出某時間點後異動的檔案: 將 C:\Test 目錄中, 2008-11-20 以後異動的檔案 (連同子目錄) 搬移至 C:\Temp
XCOPY C:\Test C:\temp /S /D:11-20-2008
[ASP.Net] 廣告輪播的控制項 (without AJAX)
由於最近要在網頁上加入一個廣告輪播的功能, 且 AJAX Toolkit 的 SlideShowExtender 又因為 OutputCache, 未能正常地產生輪播效果, 所以我使用 JavaScript 搭配 UserControl 做了以下的範例.
[Virtual PC] Virtual PC 的 Image 瘦身 (shrink)
網路上已經有很多這部分的教學, 大致整理如下:
- 在虛擬作業系統中進行磁碟清理.
- 在虛擬作業系統中進行磁碟重組. (這個步驟不要使用 Windows 內建的磁碟重組工具, 因為會導致後續瘦身的功效不彰)
網路上有很多免費的磁碟工具可以用, 我是使用 Smart Defrag 這套工具(有支援繁體中文), 不過要記得重組的選項要選"重組&優化", 不然也會失去瘦身的效果.
[ASP.NET] 縮減 AJAX 的 axd 內容大小
由於使用 AJAX 時發現網頁因為包含了一些 axd 內容要下載, 所以整個網頁的內容會變得蠻大的.
為了讓 axd 檔的 size 減少, 讓網頁載入的時間縮短, 所以查了一些網路資料並整理如下:
為了讓 axd 檔的 size 減少, 讓網頁載入的時間縮短, 所以查了一些網路資料並整理如下:
2010/07/27
[C#] 利用 OleDb 讀取 csv 檔
透過 OleDb 的方式讀取 csv 檔常會遇到型別轉換的問題.
以機關 OID 為例, "2.16.886.101.20003" 會被轉成 "2.1688"
若要解決這問題,就要參考微軟提供的這個設定檔的說明 (http://msdn.microsoft.com/en-us/library/ms709353.aspx).
以機關 OID 為例, "2.16.886.101.20003" 會被轉成 "2.1688"
若要解決這問題,就要參考微軟提供的這個設定檔的說明 (http://msdn.microsoft.com/en-us/library/ms709353.aspx).
[ASP.Net] 驗證上傳檔案的副檔名
利用 RegularExpressionValidator 進行檢查:
- 僅限上傳PDF檔案(pdf):
ValidationExpression="^.+\.((p|P)(d|D)(f|F))$"
- 僅限上傳WORD檔案(doc,docx):
ValidationExpression="^.+\.((d|D)(o|O)(c|C))(x|X)?$"
- 僅限上傳圖檔(gif,jpg,jpeg,png):
ValidationExpression = "^.+\.(((g|G)(i|I)(f|F))|((j|J)(p|P)(e|E)?(g|G))|((p|P)(n|N)(g|G)))$"
因為 RegularExpressionValidator 控制項, 沒有設定 Regular Expression case-insensitive 的地方, 所以只好用 (e|E) 的方式進行.
雖然看起來有點醜, 不過可以用就好.
[SQL Server 2005] 在查詢中建立小計的資料列並排序
在SQL的應用中, 常見到要查出數量與小計的問題.
以下提供一個以 SQL Server 2005 的 ROW_NUMBER() 與 RANK() , 在一次的查詢中將資料查出數量與小計的方式.
不過還是建議在程式中進行這些作業, 以避免當資料量大時, 查詢效能或擴充性不好的問題.
以下提供一個以 SQL Server 2005 的 ROW_NUMBER() 與 RANK() , 在一次的查詢中將資料查出數量與小計的方式.
不過還是建議在程式中進行這些作業, 以避免當資料量大時, 查詢效能或擴充性不好的問題.
[CSS] 相容 IE 與 FireFox 的 CSS 寫法
IE 與 FireFox (FF) 在 CSS 的屬性值上有著許多差異, 例如: center與-moz-center
以下是整理網路上的討論並測試出的兩個做法:
以下是整理網路上的討論並測試出的兩個做法:
[C#] Regular Expression 的 Named Group
概念:
使用 (?<GroupName>Regular Expression) 將符合 Regular Expression 的字串放進群組, 並以 GroupName 做索引值來取用.
以下範例來自於 [藍色小鋪]
範例1:
將 [QryGuideIDList:0001+2=g1+n1+g2+n2+g3+n3] 拆成
PGID: 0001
ListSize: 2
GuideID: g1,g2,g3
GuideName: n1,n2,n3
使用 (?<GroupName>Regular Expression) 將符合 Regular Expression 的字串放進群組, 並以 GroupName 做索引值來取用.
以下範例來自於 [藍色小鋪]
範例1:
將 [QryGuideIDList:0001+2=g1+n1+g2+n2+g3+n3] 拆成
PGID: 0001
ListSize: 2
GuideID: g1,g2,g3
GuideName: n1,n2,n3