2009年6月28日 星期日

如何在Windows上建置mobile device的模擬環境

由於瀏覽器的支援度與螢幕的大小等問題, 常常我們以電腦上的瀏覽器和以行動裝置上的瀏覽器觀看網站, 所看到的結果會有所不同, 因此我們會需要另外建置一適合行動裝置所瀏覽的網站, 這時就需要建置行動裝置的模擬環境了...

建置Windows Mobile 6與設定網路共用
Download and install Microsoft ActiveSync
Download and install the Microsoft Device Emulator 3
Download and install the Windows Mobile 6 Professional Images
Start -> Programs -> Windows Mobile 6 SDK -> Tools -> Device Emulator Manager->Right Click the Entry and select "Cradle"
In ActiveSync panel, check the Allow connections to one of the following box, then select DMA from the dropdown list and click OK
相關圖文可參考這篇


建置Android
Download and install Android SDK
Download and install Eclipse(若只需使用Android的瀏覽器則不需安裝)
相關圖文可參考這篇

2009年6月9日 星期二

Split Function in SQL Server 2005

有鑒於事情應該正常分工的政策下(其實是覺得資料庫使用率偏低@@), 在有欄位需要以類似split的函式取出所要的部份需求, 撰寫一函式與相關的SQL語法如下:

1. SQL Server 2005->Object Explorer->Databases->New Query
2. Create split function
IF OBJECT_ID (N'dbo.split', N'IF') IS NOT NULL
DROP FUNCTION dbo.split
GO

CREATE FUNCTION dbo.split(@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items VARCHAR(8000))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)

SELECT @idx = 1
IF LEN(@String)<1 idx =" CHARINDEX(@Delimiter,@String)" slice =" LEFT(@String,@idx" slice =" @String">0)
INSERT INTO @temptable(Items) VALUES(@slice)

SET @String = RIGHT(@String,len(@String) - @idx)
IF LEN(@String) = 0 BREAK
END
RETURN
3. Using nested queries with split function
SELECT DISTINCT FIELD1_NAME FROM TABLE1_NAME WHERE FIELD2_NAME = (
SELECT TOP (1) items FROM
dbo.split(
(SELECT FIELD3_NAME
FROM TABLE2_NAME
WHERE (FIELD4_NAME = 'FIELD4_VALUE')), ':')
)

參考Split Function in Sql Server

2009年6月8日 星期一

FreeTDS的加密傳輸(Secure Connection)

最近遇到的鐵板是使用FreeTDS連接SQL Server會出現模稜兩可的Msg 20017錯誤訊息,
Msg 20017, Level 9, State -1, Server OpenClient, Line -1
Unexpected EOF from the server

使用TDSDUMP看錯誤訊息後發現在傳輸建立初期就已經被中斷,
util.c:334:tdserror(0x997e0a8, 0x997ea50, 20017, 0)
util.c:368:tdserror: client library returned TDS_INT_CANCEL(2)

在來回比對之後才發現遇到了有加密(Force Encryption)的SQL Serve,

需以--with-openssl=/src/openssl --with-gnutls的設定重新安裝FreeTDS, 並且在FreeTDS的設定檔中加上 encryption = required或request的參數,

看似美好, 但重新安裝後仍遇到一樣的錯誤訊息, 再度以TDSDUMP檢查後發現訊息有所不同了, 是在送出表頭前出錯的...
net.c:779:Sending packet
0000 12 01 00 34 00 00 00 00-00 00 15 00 06 01 00 1b |...4.... ........|
0010 00 01 02 00 1c 00 0c 03-00 28 00 04 ff 08 00 01 |........ .(......|
0020 55 00 00 00 4d 53 53 51-4c 53 65 72 76 65 72 00 |U...MSSQ LServer.|
0030 f2 31 00 00 - |.1..|

原來因為一開始安裝機器時不想裝進一些亂七八糟的東西, 所以只選了確定要的套件, 因此少裝了某些加密模組, 最後還是只好拿出光碟片乖乖的把base的東西補齊,

終於可以快快樂樂的以FreeTDS進行加密傳輸了...