2008/12/23

String.Empty 和 "" 的寫法,那個好?

今天突然想到這個問題...

上網查了一下,雖然""看起來比較直覺,但是多數人認為String.Empty比較好,理由是:
1.比較快
2.型別安全
3.不用管null的問題
4.code看起來比較有professional的fu

這樣看來,之前介紹可以使用 "".Equals(myStr) 不見得是個好用法。

以下文章提供大家參考:

http://codebetter.com/blogs/brendan.tompkins/archive/2003/10/14/2585.aspx

2008/12/16

.NET 指定應用程式.dll的位置

在應用程式的.config檔內,加入
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="mydll"/>
</assemblyBinding>
</runtime>
</configuration>


mydll目錄內即是存放.dll檔案。

.NET 安裝共享組件的方式

1. 直接拖拉,把已經設有強制名稱的供享組件.dll檔拉進C:\WINDOWS\assembly
2. 使用Visual Studio 2008 Command Prompt的gacutil指令安裝。

.NET 反組譯程式

開啟Visual Studio 2008 Command Prompt 輸入:
ildasm

把.dll檔拉到ildasm視窗內即可。

2008/11/18

[教學]如何不透過電腦抓取黑莓機的圖? 使用CaptureIt!

最近敗了一台BlackBerry Bold 9000, 想寫幾篇教學文章,當然要有抓圖軟體,本來有下載一個在PC端使用的Mobiola Screen Capture for Blackberry, 但是如果想要在黑莓機上直接抓圖該怎麼做呢?這時候就要靠CaptureIt!了。
CaptureIt是一個jad的程式,下載方式很簡單,首先到以下網頁:
http://www.geardiary.com/2008/11/15/blackberry-screenshots-without-cabling-your-device-os-43/

拉到最下方,有個download link

按下去後會開始下載安裝,按確認即可,之後到選項-->進階-->應用程式裡,去設定執行權限

都設成允許好了= =

這樣一來,你回到主選單-->下載目錄裡,就會看到「CaptureIt」了,執行CaptureIt後,會振動提示,之後在每次按黑莓鈕時,都會有一個選項叫「Capture It」,按下去後就可抓圖了!


現在測試的結果是....沒辦法抓首頁的畫面,因為按黑莓鈕會先跳到主選單的緣故,而且也抓不到子選單的畫面,上一張圖是我用PC端的抓圖軟體抓的。

---------------------------------------------------

抓選單跟首頁圖的問題解決了!
我把左側便利鍵設成Capture It就可以利用按鈕來抓圖囉~



2008/11/14

[SQL]遇到欄位資料型別為xml時,不可使用union的問題

會出現:
不能選取 xml 資料類型作為 DISTINCT,因為無法比較。

改為使用union all即可....




select product_id, product_name, product_xmlrule
from product1
where product_date > getdate()
union all
select product_id, product_name, product_xmlrule
from product2
where product_status = 0

2008/11/06

.Net 非同步呼叫執行function



//宣告:
delegate void CallRefreshServerIpsDelegate(int aaa, int bbb, string logPath);

//使用:
CallRefreshServerIpsDelegate dlgt = new CallRefreshServerIpsDelegate(this.CallRefreshServerIps);
dlgt.BeginInvoke(aaa, bbb, logPath, null, null);

//Function:
private void CallRefreshServerIps(int aaa, int bbb, string logPath )
{
...

}


注意: 非同步的呼叫,在function內不可存在任何有關HttpWebRequest、HttpWebResponse的物件。
例如:
Request.ServerVariables["REMOTE_ADDR"] ...

.Net Regex.Replace 造成CPU Loading 升高....

這二天公司遇到怪事,所有伺服器主機突然CPU飆高到100%,在同事徹夜努力下才找出問題,原來出在一句Regex.Replace的語法...

.NET的Regex.Replace很奇怪,在樣本文檔內若找不到符合pattern的條件,就會hand住,然後CPU飆高...但若樣本文檔內找得到,則又沒事...

同事給我一個參考連結:

CODING HORROR : Regex Performance

文章內可以看到,在不符合pattern的情況下,回應時間是倍數的成長,這就是造成效能下降的主因!

因此,爾後在使用Regex.Replace時,最好能先使用Regex.Match確認一下,再做Replace,以避免此情況發生。

其他參考資料:

2008/11/03

javascript: n位元的四捨五入

四捨五入無小數點 --> Math.round(4.5) // return 4.5
四捨五件指定位數 --> Math.toFixed(4.0005,3) // return

2008/10/28

javascript: 以javascript取得query string (Netlobo.com | Get URL Parameters Using Javascript)

http://www.netlobo.com/url_query_string_javascript.html


function gup( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}

var myid= gup("id");

PowerShell : 如何使用PowerShell呼叫WebRequest?

節錄出程式內的function應該就能了解了:


function GoRefresh($gdString)
{
$today = Get-Date
write-host "更新:" $id "-->" $today

$url = "http://192.168.1.100/refresh_html.ashx?id=" + $id
write-host "url:" $url

$request = [System.Net.WebRequest]::Create($url)

$response = $request.GetResponse()
$requestStream = $response.GetResponseStream()
$readStream = new-object System.IO.StreamReader $requestStream
new-variable tmp
$tmp = $readStream.ReadToEnd()
write-host "response:" $tmp
$readStream.Close()
$response.Close()
}

參考來源:Basic Powershell examples, couple useful commands

PowerShell : 運算子說明

PowerShell 運算子的說明:

運算子 說明
-eq 相等 (大寫或小寫均可)
-lt 小於(大寫或小寫均可)
-gt 大於(大寫或小寫均可)
-le 小於等於(大寫或小寫均可)
-ge 大於等於(大寫或小寫均可)
-ne 不等於 (大寫或小寫均可)
-not 邏輯運算的反向運算 (亦可以 ! 表示)
-match 使用規則運算式比較字串
-notmatch 使用規則運算式比較字串
-like 使用萬用字元比較字串
-notlike 使用萬用字元比較字串
-replace 替換字串(如果執行替換且傳回True)
-and 邏輯 and 運算
-or 邏輯 or 運算
-bor 位元 OR 運算
-band 位元 AND 運算
-xor XOR 運算子
-comp 反向運算子 (~)
-sr 向右位移
-sl 向左位移
-ceq 相等 (必須都是小寫)
-clt 小於 (必須都是小寫)
-cgt 大於 (必須都是小寫)
-cle 小於等於 (必須都是小寫)
-cge 大於等於 (必須都是小寫)
-cne 不等於 (必須都是小寫)
-ieq 等於 (大寫或小寫均可)
-ilt 小於 (大寫或小寫均可)
-igt 大於 (大寫或小寫均可)
-ige 大於等於 (大寫或小寫均可)
-ine 不等於 (大寫或小寫均可)
-inot 邏輯運算的反向運算 (大寫或小寫均可)
-imatch 使用規則運算式比較字串 (大寫或小寫均可)
-ilike 使用萬用字元比較字串 (大寫或小寫均可)
-inotlike 使用萬用字元比較字串 (大寫或小寫均可)


2008/10/27

PowerShell : 換行符號

以下範例是將dataset一行一行的存入text file:


function SaveTxtBody($ds)
{
$txtBody = ""

foreach ($item in $ds.Tables[0].Rows)
{
$line = ""

for ($index = 0; $index -lt $ds.Tables[0].Columns.Count; $index++) {

$line += $item[$index]
if (!($index -eq ($ds.Tables[0].Columns.Count -1)))
{
$line += ","
}
}

$txtBody += $line
$txtBody += [char]13+[char]10 # 換行符號
}

$txtBody > $pathSampleFile
}

2008/10/23

TomTom也有自拍功能?!

今天逛Mobile01時看到的,回去拿車子裡的TomTom One XL來試試...

1. 先在TomTom的根目錄開一個"screen"的資料夾
2. 在"screen"資料夾內,新增一個無副檔名的檔案,名為"capture"
3. 重開機,按螢幕的左上方角落,聽到「咔嚓」的照相機聲即是擷圖成功

資料來源:Mobile01-TomTom 也會自拍哦!

2008/10/22

javascript : jquery ajaxStart and ajaxStop 的用法

ajaxStart和ajaxStop主要是在頁面觸發ajax時,呼叫其他function或程式碼做處理。
要加在$(document).ready(function(){});內
$().ajaxStart(function() {
$.blockUI.defaults.pageMessage = "<table class='loader' summary='Loader Layout' border='0' cellpadding='5' cellspacing='1' width='300px'><tr><td align='left' valign='baseline'><div id='innLoader' style='position: absolute; z-index: 999; border-right: #bbbbbb thin solid; border-top: #bbbbbb thin solid; border-left: #bbbbbb thin solid; border-bottom: #bbbbbb thin solid; width: 300px; background-color: white;'><table><tr><td><img src='/res/layout/v5/ps_loading.gif' width='80' height='80' align='left' style='margin: 3px;' alt='請稍候' /></td><td><p><strong>資料處理中, 請稍候....</strong></p></td></tr></table></div></td></tr></table>";
$.extend($.blockUI.defaults.pageMessageCSS, { margin: '-50px 0 0 -125px', top: '50%', left: '50%', color: '#000', backgroundColor: '#fff', border: '0px solid #aaa' }); $.blockUI();
}).ajaxStop($.unblockUI);

2008/10/21

javascript: string to JSON


string myJSONText = "{ /"name/", /"jessewang/", /"age/", /"18/"}";
var myObject = eval('(' + myJSONtext + ')');

如果不想使用eval這個函數,可以下載JSON Parser來使用會比較安全。
下載: The open source code of a JSON parser and JSON stringifier is available.
參考: JSON in JavaScript

下載後,include到html裡,使用以下指令即可:


var myObject = JSON.parse(myJSONtext);


PANERAI PAM00000  Luminor 經典手上鍊腕錶-44mm

PowerShell 如何在command line執行?


powershell c:\test\mypowershell_test.ps1

或是

powershell ./mypowershell_test.ps1


要把powershell放到排程裡,可用.bat檔把以上指令包起來即可。

PowerShell 安全性的設定

因為安全性設定的關係,在預設ps1 script無法執行,請在PowerShell Console執行以下指令調整安全性:

Set-ExecutionPolicy RemoteSigned

還原本的設定:

Set-ExecutionPolicy Restricted

其他的設定請參考:

What Can I Do With Windows PowerShell?

2008/10/20

Vista開啟防火牆後,設定遠端桌面可連線

一般來說,防火牆打開後,我們都會在防火牆的例外裡打開terminal service的port 3389



但告訴各位,這樣是行不通的!
重開機後又會讓你的terminal service無法連線...

解法是: 開始-->執行-->輸入 gpedit 後,打開群組原則物件編輯器
展開系統管理範本-->網路-->網路連線-->Windows防火牆-->網域設定檔, 將Windows防火牆:允許輸入的遠端桌面例外設定成已啟用

系統管理範本-->網路-->網路連線-->Windows防火牆-->標準設定檔, 將Windows防火牆:允許輸入的遠端桌面例外設定成已啟用


這樣重開機terminal service也可以連線了。

2008/10/19

LINQ 語法簡介

介紹幾個基本的LINQ語法

LinqSample.aspx:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqSample.aspx.cs" Inherits="LinqSample" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>LINQ Sample</title>
<style type="text/css">
.style1
{
font-size: xx-large;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>

<span class="style1">Linq Sample</span><br />
<br />
<asp:Button ID="ButtonFromAndSelect" runat="server" Text="select"
onclick="ButtonFromAndSelect_Click" />
<asp:Button ID="ButtonWhere" runat="server" Text="where"
onclick="ButtonWhere_Click" />
<asp:Button ID="ButtonForeach" runat="server" Text="foreach"
onclick="ButtonForeach_Click" />
<asp:Button ID="ButtonSelectNew" runat="server" Text="select new"
onclick="ButtonSelectNew_Click" />
<asp:Button ID="ButtonOrderBy" runat="server" Text="orderby"
onclick="ButtonOrderBy_Click" />
<asp:Button ID="ButtonTake" runat="server" Text="take"
onclick="ButtonTake_Click" />
<asp:Button ID="ButtonSkipAndTake" runat="server" Text="skip and take"
onclick="ButtonSkipAndTake_Click" />
<asp:Button ID="ButtonInsert" runat="server" Text="insert"
onclick="ButtonInsert_Click" />
<asp:Button ID="ButtonUpdate" runat="server" Text="update"
onclick="ButtonUpdate_Click" />
<asp:Button ID="ButtonDelete" runat="server" Text="delete"
onclick="ButtonDelete_Click" />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>


LinqSample.aspx.cs


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class LinqSample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
// LINQ : Select
protected void ButtonFromAndSelect_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
select pt;
GridView1.DataSource = dt;
GridView1.DataBind();

}
// LINQ : Where
protected void ButtonWhere_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
where pt.ProductID == 1
select pt;
GridView1.DataSource = dt;
GridView1.DataBind();
}
// LINQ : Foreach
protected void ButtonForeach_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
select pt;

foreach (var item in dt)
{
Response.Write("product id:" + item.ProductID.ToString() + "<br>");
}
}
// LINQ : Select New
protected void ButtonSelectNew_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
select new
{
ProductId = pt.ProductID,
ProductName = pt.ProductName
};
GridView1.DataSource = dt;
GridView1.DataBind();
}
// LINQ : Orderby
protected void ButtonOrderBy_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
orderby pt.ProductID descending
select pt;
GridView1.DataSource = dt;
GridView1.DataBind();
}
// LINQ : Take
protected void ButtonTake_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
select pt;
GridView1.DataSource = dt.Take(5);
GridView1.DataBind();
}
// LINQ : Skip and Take
protected void ButtonSkipAndTake_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();
var dt = from pt in northwind.Products
select pt;
GridView1.DataSource = dt.Skip(10).Take(5);
GridView1.DataBind();
}
// LINQ : InsertOnSubmit
protected void ButtonInsert_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();

Products newPt = new Products();
newPt.ProductName = "iphone";
newPt.SupplierID = 5;
newPt.CategoryID = 4;
newPt.QuantityPerUnit = "10 - 500 g pkgs.";
newPt.UnitPrice = 25000;
newPt.UnitsInStock = 80;
newPt.UnitsOnOrder = 0;
newPt.ReorderLevel = 0;
newPt.Discontinued = false;
northwind.Products.InsertOnSubmit(newPt);
northwind.SubmitChanges();

var dt = from pt in northwind.Products
orderby pt.ProductID descending
select pt;

GridView1.DataSource = dt;
GridView1.DataBind();
}
// LINQ : Update
protected void ButtonUpdate_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();

Products pt = northwind.Products.Single(currPt => currPt.ProductName == "iphone");
pt.ProductName = "iPhone 3G";
northwind.SubmitChanges();
}
// LINQ : Delete
protected void ButtonDelete_Click(object sender, EventArgs e)
{
NorthwindDataContext northwind = new NorthwindDataContext();

Products pt = northwind.Products.Single(currPt => currPt.ProductName == "iPhone 3G");
northwind.Products.DeleteOnSubmit(pt);
northwind.SubmitChanges();
}
}

2008/10/18

字串比對上的眉角



if (e.Row.Cell[0].Text.Equals("mytest"))

...

改成



if ("mytest".Equals(e.Row.Cell[0].Text))

...

可避免因為e.Row.Cell[0].Text如果是空值而造成程式exception.

2008/10/13

jquery: 取出指定form內的所有select物件

在myform裡取出所有select name 開頭是'att'的值:

$("form[name='myform'] select[name^='att']").each(function(){
alert($(this).val());
});

判斷瀏覽器是否為Google Chrome的二種方法

1. 使用jquery,但要先加入一個jquery plugin, 可以以下連結下載:

jQuery Browser Plugin

下載後,include到你的html裡,然後直接下指令即可:


if ($.browser.name == "chrome")
alert("google chrome!");


2. 直接判斷navigator.userAgent裡的文字, 請參考:Detecting Google Chrome Using Javascript


var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

2008/09/26

WCF WebService how to use Server.MapPath function. 如何在WCF WebService裡使用Server.MapPath

為何預設的WCF WebService沒有enable ASP.NET相容模式呢?
因為WCF是微軟新推出的分散式架構解決方案,有些client端的應用程式並不一定是web,
所以也就沒有必要先把ASP.NET相容模式打開,保留了一些彈性。

若開啟ASP.NET相容模式後:

  • WCF 行為就會在下列 ASP.NET 功能上與 ASMX 行為一致:
  • 在 ASP.NET 相容性模式中執行的 HttpContext: WCF 服務可以存取 Current 與其關聯狀態。
  • 檔案架構授權:在 ASP.NET 相容性模式中執行的 WCF 服務可以將檔案系統存取控制清單 (ACL) 附加至服務的 .svc 檔中,以保護自身的安全。
  • 可設定的 URL 授權:在 ASP.NET 相容性模式中執行 WCF 服務時,會強制執行 WCF 要求的 ASP.NET 的 URL 授權規則。
  • HttpModuleCollection 擴充性:由於在 ASP.NET 相容性模式中執行的 WCF 服務會充分參與 ASP.NET HTTP 要求的生命週期,任何透過 HTTP 管線設定的 HTTP 模組都能夠在叫用服務前/後在 WCF 要求上運作。
  • ASP.NET 模擬:如果已經針對應用程式啟用了 ASP.NET 模擬,則透過 ASP.NET 模擬執行緒目前的身分識別來執行的 WCF 服務可能會與 IIS 處理序身分識別不同。 如果同時針對特定的服務作業啟用了 ASP.NET 模擬與 WCF 模擬,則服務實作最終將會透過從 WCF 取得的身分識別來執行。
  • Server.MapPath無法使用是因為在WCF Server端中,HttpContext.Current會是null,所以無法使用。

設定步驟如下:

1. 開啟aspNetCompatibilityEnabled=true



在web.config裡會看到下面這段:


<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />


2. 在Implemente的class加入AspNetCompatibilityRequirements

ITestService.cs :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

[ServiceContract]
public interface ITestService
{
[OperationContract]
void DoWork();

[OperationContract]
string GetLogFilePath();
}


TestService.cs :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Activation;
using System.Web;

[ServiceBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TestService : ITestService
{
public void DoWork()
{
}

public string GetLogFilePath()
{
string logFile = "~/res/iislog/100/ex07021023.log.gz";
return HttpContext.Current.Server.MapPath(logFile);
}
}


這樣在client就不會有exception了....

參考資料:


象印不鏽鋼真空保溫瓶(SF-CC20)

2008/09/12

How to use HttpWebRequest object submit form data?

請參考:
p2p.wrox.com Forums - WebRequest/WebResponse form submit problem. HELP!

內容介紹如何使用HttpWebRequest送出form的資料,節錄解答的code如下:

string url="http://www.365articles.com/modules.php?name=Your_Account";
string data="username=gogo&user_password=newnewne&op=login";
byte[] buffer=Encoding.UTF8.GetBytes(data);
string result="";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType ="application/x-www-form-urlencoded";
req.ContentLength = buffer.Length;
//req.Proxy = new WebProxy(proxy, true); // ignore for local addresses
req.CookieContainer = new CookieContainer(); // enable cookies

Stream reqst = req.GetRequestStream(); // add form data to request stream

reqst.Write(buffer, 0, buffer.Length);
reqst.Flush();
reqst.Close();

Console.WriteLine("\nPosting data to " + url);
HttpWebResponse res = (HttpWebResponse)req.GetResponse(); // send request,get response
Console.WriteLine("\nResponse stream is: \n");
Stream resst = res.GetResponseStream(); // display HTTP response
StreamReader sr = new StreamReader(resst);
result=sr.ReadToEnd();
using(System.IO.StreamWriter writer=new StreamWriter("C:\\Temp\\checkcheck.html"))
{
writer.Write(result);
}



source by Mystic

2008/09/10

抓圖程式 url2bmp

雖然現在Vista有內建「剪取工具」可以用來選取抓圖,但對於網頁這種有scroll bar的就沒輒了...
找到一個免費的小工具可以用: url2bmp



直接把url貼上後,按「go」就會產生output.bmp的圖檔放在程式的目錄內,當然也可以自定檔名,
支援.bmp, .png, .jpeg, .tiff 等副檔名,網頁如果太長,可以調整image size的大小。

缺點是只能抓網頁,想抓有scroll bar的視窗程式就沒法度了。

2008/09/05

替代Ultra Edit的文字編輯器 part 2 - Notepad++

Notepad++

相當好用!尤其是語法摺疊的功能,在寫script時一目瞭然...
雖然沒有像Ultra Edit的欄模式編輯,但是可以使用Alt+滑鼠左鍵來替代,作者是位台灣人,開發出這麼好用的軟體真是令人敬佩!

2008/09/04

C# Remove Chinese Char



string txtBody = "中文chinese";
txtBody = Regex.Replace(txtBody , "[\u4E00-\u9FFF]", ""); // 移除中文

結果
---------------

txtBody : "chinese"

會用到的這regex的原因為是為css裡中文註解,搞到utf-8的網頁變亂碼,索性把css內的所有中文給過濾移除(暴力)。


Silicon Power  Ultima Ⅱ I-Series 4GB  隨身碟

2008/09/03

SQL Server 在 charindex 全形及半形判斷上的問題

在預設的情況下,中文的SQL Server的定序設定為Chinese_Taiwan_Stroke_CI_AS, 會把全形及半形視為相同字元,這會影響到我們在SUBSTRING及CARINDEX上的判斷,如果字串內同時有全形及半形的符號,SQL Server皆會把它視為相同的符號...
如果我們在不能改資料庫設定的情況下,如何讓全形及半形的符號有所區隔呢?

直接用以下例子說明:



declare @txt nvarchar(200)
select @txt = '華,碩平,台【重裝火炮】DVD燒錄遊戲電腦'

select charindex(',', @txt)
select charindex(',', @txt COLLATE Chinese_Taiwan_Stroke_CI_AS_WS)


結果:

-----------
2

(1 個資料列受到影響)


-----------
5

(1 個資料列受到影響)

update:
如何執行區分全型/半型的sql select?
select * from aaa(nolock) where aaa_name like '%?%' COLLATE Chinese_Taiwan_Stroke_CI_AS_WS
-- COLLATE Chinese_Taiwan_Stroke_CI_AS_WS放在like的後面



重點就在於預設的COLLATE是Chinese_Taiwan_Stroke_CI_AS,改成Chinese_Taiwan_Stroke_CI_AS_WS就OK了,詳細請參考:

1.Windows Collation Name (Transact-SQL)
2.COLLATE (Transact-SQL)
3.Collation Precedence
4.定序對話方塊 (Visual Database Tools)

PHILIPS移動世界 2.5吋 250G SATA行動硬碟-聯強貨

2008/08/28

Application, Page and Control events in ASP.NET v2.0 - Jeff's Junk

Application, Page and Control events in ASP.NET v2.0 - Jeff's Junk

Application, Page and Control events in ASP.NET v2.0 發生順序的列表

Application: BeginRequest
Application: PreAuthenticateRequest
Application: AuthenticateRequest
Application: PostAuthenticateRequest
Application: PreAuthorizeRequest
Application: AuthorizeRequest
Application: PostAuthorizeRequest
Application: PreResolveRequestCache
Application: ResolveRequestCache
Application: PostResolveRequestCache
Application: PreMapRequestHandler
Page: Construct
Application: PostMapRequestHandler
Application: PreAcquireRequestState
Application: AcquireRequestState
Application: PostAcquireRequestState
Application: PreRequestHandlerExecute
Page: AddParsedSubObject
Page: CreateControlCollection
Page: AddedControl
Page: AddParsedSubObject
Page: AddedControl
Page: ResolveAdapter
Page: DeterminePostBackMode
Page: PreInit
Control: ResolveAdapter
Control: Init
Control: TrackViewState
Page: Init
Page: TrackViewState
Page: InitComplete
Page: LoadPageStateFromPersistenceMedium
Control: LoadViewState
Page: EnsureChildControls
Page: CreateChildControls
Page: PreLoad
Page: Load
Control: DataBind
Control: Load
Page: EnsureChildControls
Page: LoadComplete
Page: EnsureChildControls
Page: PreRender
Control: EnsureChildControls
Control: PreRender
Page: PreRenderComplete
Page: SaveViewState
Control: SaveViewState
Page: SaveViewState
Control: SaveViewState
Page: SavePageStateToPersistenceMedium
Page: SaveStateComplete
Page: CreateHtmlTextWriter
Page: RenderControl
Page: Render
Page: RenderChildren
Control: RenderControl
Page: VerifyRenderingInServerForm
Page: CreateHtmlTextWriter
Control: Unload
Control: Dispose
Page: Unload
Page: Dispose
Application: PostRequestHandlerExecute
Application: PreReleaseRequestState
Application: ReleaseRequestState
Application: PostReleaseRequestState
Application: PreUpdateRequestCache
Application: UpdateRequestCache
Application: PostUpdateRequestCache
Application: EndRequest
Application: PreSendRequestHeaders
Application: PreSendRequestContent

來源 : Jeff's Junk

ConSonic 8GB 玩美時尚碟

2008/08/05

PowerSheel ADO.NET SQLAdapter Timeout Error

Ben.geek.nz » ADO.NET SQLAdapter Timeout Error

在使用PowerShell寫批次時,用到SqlDataAdapter的Fill時,常會遇到timeout的情況,如:


$ds= new-object "System.Data.DataSet" "ds"
$adapter = new-object "System.Data.SqlClient.SqlDataAdapter"
$adapter.SelectCommand = new-object "System.Data.SqlClient.SqlCommand" ($sql, $conn);

if ($adapter2.Fill($dstoprank) -gt 0) #在這裡會出現timeout error


解決方案:


myAdapter.SelectCommand.CommandTimeout = int.MaxValue; //(.Net)

or


$adapter.SelectCommand.CommandTimeout = 2147483647; # int.MaxValue (PowerShell)

2008/05/14

jquery 的$(document).ready 在 firefox 有 onclick 的問題

最近在使用jquery 1.2.3 版本,發生了奇怪的問題….

通常我們在送出一個form表,會使用一個function檢查form的內容,

例如以下為一個CheckForm的Function



<script language="javascript" type="text/javascript">

Function CheckForm(thisForm){

$(document).ready(function(){
If (thisForm.text1.value != “") {
thisFrom.submit();
}
}
}

</script>


若使用



<a href="javascript:CheckForm(this.form);">submit button</a>


完全沒問題,在IE及FireFox都正常!
但若使用button



<input type="button" name="btnSubmit" value="submit button" onclick="javascript:CheckForm(this.form);">


在FireFox則會無法送出form,原因出在於CheckForm()裡的$(document).ready()沒有反應…跑到這裡就停住了…

查了許久,仍查不出原因,初步推斷可能是jquery 1.2.3在firebox的一個onclick的bug,因為在jquery 1.1.1時是沒有問題的。

現在的解決方式是,在

<script language="javascript" type="text/javascript"></script>
裡,
加一段:



$(document).ready(function(){

});


如此一來正常work了…只是沒找出真正的原因,要花點時間去找找官方的討論區。

2008/04/16

javascript : How to call opener function & set opener element ?

Opener window : openerwindow.html



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>Opener window</title>
</head>
<script type="text/javascript" language="javascript">
function OpenNewWindow()
{
window.open("newwindow.html");
}
function CallMe()
{
alert("hello!");
}
</script>
<body>
<form action="#" method="post" name="form1">
<a id="clickme" href="#" onclick="OpenNewWindow();">Click me !</a>
<br />
<input name="textbox1" type="text" value="" />
</form>
</body>
</html>



New window : newwindow.html



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>New window</title>
</head>
<script type="text/javascript" language="javascript">
function CallOpenerFunction()
{
if (!window.opener.closed)
{
// call opener function
window.opener.CallMe();
}
}
function SetOpenerElement()
{
if (!window.opener.closed)
{
// set opener element
var tf = opener.document.forms[0];
tf.textbox1.value = "hi!";
}
}
</script>
<body>
<a href="#" onclick="CallOpenerFunction();">call opener function</a>
<br />
<a href="#" onclick="SetOpenerElement();">set opener element</a>
</body>
</html>

2008/03/19

ASP與ASP.NET在Cookie互通上遇到的問題

現在工作的平台上有asp與asp.net程式並存,
因此也會有cookie互通上的問題,這幾天在傳Cookies值時,由asp.net產生的cookie在asp上可以正確的讀取,
但在asp產生的cookie卻一直抓取不到...
直到看了這篇文章才了解,原來有urldecode的問題..= =

ASP与ASP.NET互通COOKIES的一点经验-ASP.net技术

不只是中文亂碼,像是一些特殊符號也會出錯...
例如在asp上Response.Cookies("jesse_wang"),
在aspx上寫Request.Cookies["jesse_wang"]是行不通的,因為cookie的名稱會變成jesse_%5Fwang,
用for迴圈跑一之所有的cookie就可以看出來了,我是因為平台上太多cookie一時不查才沒有想到...浪費了不少時間。

所以,不管如何,如果在aspx上要接收asp的cookie,只好這樣作了



for (int z = 0; z < Request.Cookies.Count; z++)
{
HttpCookie cookie =
System.Web.HttpContext.Current.Request.Cookies[z];

if (HttpContext.Current.Server.UrlDecode(cookie.Name).Equals("pay_chkimghash"))
{
Response.Write(cookie.Value);
break;
}

}

應該會有更好的作法吧,沒時間研究了,將就點用....= =

2008/02/19

HOW TO:指定網站的 Web 伺服器

HOW TO:指定網站的 Web 伺服器

P.S. 當你開發Web專案時,IIS指定特定的測試IP時,可使用此方法來偵錯。

  1. 在 [方案總管] 中,以滑鼠右鍵按一下您要為其指定 Web 伺服器的網站名稱,然後按一下 [屬性頁]。
  2. 在 [屬性頁] 對話方塊中,按一下 [起始選項] 索引標籤。
  3. 在 [伺服器] 下,按一下 [使用自訂伺服器]。
  4. 在 [基礎 URL] 方塊中,輸入執行目前的網站時,Visual Web Developer 應該起始的 URL。

替代UltraEdit的TextEditor :「Crimson Editor」

Homepage of Crimson Editor - Free Text Editor, Html Editor, Programmers Editor for Windows

Homepage of Crimson Editor - Free Text Editor, Html Editor, Programmers Editor for Windows

2008/01/31

PPC單手輸入法解決方案 - Resco Keyboard Pro v5.00 + 倉頡

那天裝了Resco Keyboard來取代Spb的Full Screen Keyboard,
意外發現可以使用Resco Keyboard來輸入倉頡,單手操件起來還蠻順手的,
一直在找好按的倉頡鍵盤,Resco Keyboard是個不錯的選擇!

Step 1. 首先,先開啟PPC內建的倉頡鍵盤,然後隨便輸入幾個字根...


Step 2. 選擇Resco Keyboard


Step 3. 如此一來,按英文字母會自動變成倉頡的字根....


如果熟練的話,輸入起來蠻快的哦,最重要的是可以單手操作,不用抽筆出來手寫,也不必按那個內建的小小鍵盤了...

軟體工程的重要的指標