2009/04/30

Slique :: Slick & Sleek Leather Theme for Bold 9000 - Bottom Dock v1.0

Slick theme的作者又有新的作品出爐了!



http://go.mobihand.com/?op=dlm&pd=28624&l=1&ps=150&ext=jad



使用storm的風格,桌布是皮格感覺的rim logo,按鈕跟文字顯示上都很讚哦!



另外有一款相同風格的today theme也提供下載。



http://go.mobihand.com/?op=dlm&pd=28623&l=1&ps=150&ext=jad





發送自我的BlackBerry®智慧型手機。

2009/04/03

Trigger Error Handling For ASP

最近遇到一個情況,在A資料表內有不同的trigger,其中有個trigger 1的作法是在update數量時要去同時update另一個B資料表的數量,
而這個A資料表的另一個trigger 2也會被執行,如果這時trigger 1內的另一個C資料內的Constraint裡觸發時,ASP的ADO會誤以為Trigger 2執行成功,
而不會返回錯誤,以致於程式裡無法作error handling

此時的解法就只能去調整trigger的執行順序,讓有Constraint的Trigger能先被執行,這樣才能抓到錯誤。
以下是範例示範:


-- 1. Constraint : CK_MyProduct_Qty_Selling
ALTER TABLE [dbo].[MyProduct] WITH NOCHECK ADD CONSTRAINT [CK_MyProduct_Qty_Selling]
CHECK (([MyProductQty]-[MyProductQtySelling])>=(0) AND [MyProductQty]>(0))
GO
ALTER TABLE [dbo].[MyProduct] CHECK CONSTRAINT [CK_MyProduct_Qty_Selling]

-- 2. Trigger : InsertLog
CREATE TRIGGER [dbo].[TRI_InsertLog]
ON [dbo].[JesseWangDB]
FOR UPDATE
AS
BEGIN
IF UPDATE (Product_Qty)
BEGIN
INSERT MyLog .....
END
END
GO

-- 3. Trigger : UpdateDetails
CREATE TRIGGER [dbo].[TRI_UpdateDetails]
ON [dbo].[JesseWangDB]
FOR UPDATE
AS
DECLARE @OldProductId int

BEGIN
IF UPDATE (Product_QtySelling)
BEGIN
SELECT @OldProductId=ProductId FROM deleted

UPDATE MyStock
SET MyStockQty = MyStockQty + 1
WHERE MyStockProductId = @OldProductId
END
END
GO


當我執行以下程式時,觸發MyStock的Constraint :



UPDATE MyProduct SET MyProductQtySelling = MyProductQtySelling + 1 WHERE MyProductId = 38382


結果:


(1 個資料列受到影響)
訊息 547,層級 16,狀態 0,程序 TRI_UpdateDetails,行 29
UPDATE 陳述式與 CHECK 條件約束 "CK_MyProduct_Qty_Selling" 衝突。衝突發生在資料庫 "JesseWangDB",資料表 "dbo.MyProduct"。
陳述式已經結束。


因為TRI_InsertLog先被執行到了,所以ASP的ADO誤以為執行結果無誤。

所以我們要調整Trigger順序


EXEC sp_settriggerorder @triggername=N'[dbo].[TRI_UpdateDetails]', @order=N'First', @stmttype=N'UPDATE'


調整後的結果:


訊息 547,層級 16,狀態 0,程序 TRI_UpdateDetails,行 29
UPDATE 陳述式與 CHECK 條件約束 "CK_MyProduct_Qty_Selling" 衝突。衝突發生在資料庫 "JesseWangDB",資料表 "dbo.MyProduct"。
陳述式已經結束。


這樣ASP的ADO就可以抓到error了。

2009/02/19

Oanda FXConverter for BlackBerry - 即時匯率換算軟體

這麼好用的軟體居然沒人發現...LOL



雖然WORLDMATE LIVE可以設三個匯率換算,但是Gold的會員要錢,有時連網路又慢...

OANDA FXConverter完全沒有這個困擾,即時的換算164個貨幣,連線速度快而且免費!



操作很簡單,主畫面就可設定二個匯率的換算...看到台幣直直落實在是...

下方還有秒數告知你是多久前更新的匯率,酷!



Link:http://m.fxconverter.com/



發送自我的BlackBerry®智慧型手機。

2009/02/18

Maximum URL length is 2,083 characters in Internet Explorer

Maximum URL length is 2,083 characters in Internet Explorer

URL的長度最大是2,083字元,Get的長度最大則是2,048字元

IE 8 新功能 : Web Slice 、Accelerators (加速器) 、Search Provider (搜尋提供者)

Accelerators 跟 Search Provider 都只要準備好xml檔即可

可參考:邊做邊學Internet Explorer 8:為你的網站穿上新衣 - Internet Explorer 8 新功能

講一下web slice

1.在某個div加入hslice即可


<div id="ws" class="hslice ProductName">

2.有幾個必要的class要加
hslice, feedurl 或 entry-content, entry-title


<div id="ws" class="hslice ProductContent">
<a rel="entry-content" href="display.aspx?pid=11122211" style="display:none;">
<div class="entry-title ProductTitle">
blackberry bold 9000 on sale!
</div>
</div>

3.feedurl及entry-content
entry-content --> display內的連結,必需使用 target="_blank" 另開視窗顯示,不然跳頁的頁面會在ie8裡的web slice小視窗中顯示
feedurl --> 連結不必特別處理,會在目前視窗中顯示,但必須使用xml格式

使用feedurl:


<div id="ws" class="hslice ProductContent">
<a rel="feedurl" href="myfeed.ashx?pid=11122211" style="display:none;"></a>
<div class="entry-title ProductTitle">
blackberry bold 9000 on sale!
</div>
</div>


myfeed.aspx:


<?xml version="1.0" encoding="big5"?>
<rss version="2.0" xmlns:mon="http://www.microsoft.com/schemas/rss/monitoring/2007">
<channel>
<title>my web slice feed</title>
<link>http://192.168.51.64</link>
<description>my web slice</description>
<pubDate>2009/2/18 下午 02:46:14</pubDate>
<ttl>1440</ttl>
<item>
<title>BlackBerry Bold 9000</title>
<link>http://192.168.51.64/product.aspx?pid=1112233</link>
<description><![CDATA[
<div>
<div><img src="http://192.168.51.64/myproduct.jpg"></div>
<div>product name : BlackBerry Bold 9000 on sale!</div>
<div>price : $17500</div>
<div><a href="http://192.168.51.64/pay/buynow.aspx">Buy Now!</a></div>
</div>
]]></description>
</item>
</channel>
</rss>


其他參考資料:

2009/01/22

ASP - 小心ASP在Dictionary裡的用法....

這是asp,不是asp.net哦!

比如說我有個dictionary


dim dicProduct
set dicProduct = server.CreateObject ("scripting.dictionary")

...

如果要判斷dicProduct某個key是否存在,請使用:


if dicProduct.exists("product_createddate") then
...
end if


請不要用


if dicProduct("product_createddate") = "" then
...
end if


因為不但會無法判斷,還會自動的把你的dicProduct裡長出一個key叫product_createddate, 會給後面的程式碼帶來災難!

遇到後,只有一句話來形容asp, 那就是「吃飽太閒了」

使用 VRTA 加快網頁速度的 12 個步驟

這是我同事Luke在週會上分享的主題,對於前端工程師來說相當的有幫助,有時候會覺得該作都都作的差不多了,但為何網頁還是會慢呢?

分析後就能很快的找到問題所在,對症下藥改善缺失。

也提供了幾個soultion,像css小圖合併,減少零零散散的小圖loading...等等。

分享幾個連結:

使用 Visual Round Trip Analyzer 加快網頁速度的 12 個步驟
http://msdn.microsoft.com/zh-tw/magazine/dd188562.aspx#id0100011

CSS整形與最佳化工具
http://www.isparkle.cn/show/csstidy/?lang=zh

CSS 圖片合併產生器
http://spritegen.website-performance.org/

軟體工程的重要的指標