Windows2003 on Virtual PC

Posted by on | | 0 意見
今天正式開始Virtual PC, 來灌個windows 2003好了!

灌好之後遇到幾個問題,
第1個:如何和實體主機共享資料夾呢?雖然選單中,Edit --> Setting中有個share folder的設定項目,可是一直是反白的,無法操作,後來查到要先安裝"Install Or Update Virtual Machine Additions",在選單位置為,Action --> Install Or Update Virtual Machine Additions,然後就可以設定囉!

第2個:如何在VPC播放音樂呢?
發現音效卡是sound blaster 16,可是找不到driver,怎辦?
發現一篇文章,http://kb.vmware.com/selfservice/viewContent.do?externalId=1115&sliceId=1
安裝步驟如下:

  1. Insert a Windows 2000 CD-ROM, then open a Command Prompt window and navigate to the i386 directory.
  2. Run the following two commands to extract the needed files:
    expand driver.cab -f:ctlsb16.sys c:\windows\temp
    expand wdma_ctl.in_ c:\windows\temp\wdma_ctl.inf
  3. Choose Control Panel>Add New Hardware, then click Next.
  4. When prompted, answer Yes, I've already connected the hardware.
  5. Select Add a new hardware device from the list, then click Next.
  6. Select Install the hardware that I manually select, then click Next.
  7. Select Sound, video and game controllers, then click Next.
  8. Click Have Disk and browse to C:\Windows\temp.
  9. Click wdma_ctl.inf and follow the prompts, choosing to install the unsigned driver.
  10. Choose Start>Settings>Control Panel, then open Sounds & Audio. Select Enable Windows audio.

原來非同步作業時,不能呼叫.....

Posted by on | | 0 意見
近來一直在學如何在asp.net網頁,執行非同步呼叫的動作。
這二天,一直再修改某個頁面程式,因為要非同步的寄出email,可是不知怎的,email一直寄不出去,看來看去,程式應該沒有寫錯,也沒有error產生,到底是怎麼一回事呢?

努力的k code,發現前人加了一句
response.end()
嗯,這應該是停止所有的回應,我想可能非同步的動作也會停止吧!
果真,改寫後,email就寄出去啦!

心想,這書上沒有教,也查不到相同的情況的例子,若沒有猜到是那個原因的話,那.....我要搞多久啊?????

ASP.NET非同步網頁

Posted by on | | 0 意見
在asp.net web page非同步的寫法有二種,我常用的這一種,覺得比較彈性。
有幾個重點步驟,如下:
  1. 建立一個真的要執行任務的function - ex. myAction
  2. 建立一個AsyncTaskDelegate物件 - ex. ATDObj
  3. 建立3個非同步必要的function - onBegin,onEnd,onTimeout
  4. 在web page註冊非同步的任務 - ex. myReg


所以執行順序為:myReg -> onBegin -> ATDObj -> myAction

底下的範本Code:
public class DATA
{
public string a;
public string b;
}

private void myAction(DATA  inDATA)
{
//do something
}

private  delegate void AsyncTaskDelegate(DATA  inDATA);

public IAsyncResult onBegin(object sender, EventArgs e, AsyncCallback cb, object state)
{
        AsyncTaskDelegate _dlgt = new AsyncTaskDelegate(myAction);
        return _dlgt.BeginInvoke((DATA)state, cb, state);
}

public void onEnd(IAsyncResult ar)
{}

public void onTimeout(IAsyncResult ar)
{}

private void Asnyc_NotifyGuest(string inGuestID)
{
DATA tmpData = new DATA();
        tmpData .a= "xxxx";
        tmpData .b= "yyyy";

        this.Page.RegisterAsyncTask(new PageAsyncTask(this.onBegin,
           this.onEnd,
           this.onTimeout,
           tmpData ,
           true
       ));
}

為什麼需要非同步程式設計

Posted by on | | 0 意見
ASP.NET 會使用 Common Language Runtime (CLR) 執行緒集區中的執行緒來處理要求。
一旦執行緒集區呈現飽和狀態 (也就是說,其中的所有執行緒都在忙著處理要求,沒有可用的其餘執行緒),
對新的要求回應「辦不到」。

解決方案:
  1. 就是增加執行緒集區的大小上限,以便建立更多的執行緒。
  2. 另一個常見的做法就是投入更多的硬體,亦即在 Web 伺服陣列中加入更多的伺服器。
  3. 非同步程式設計。

真正可擴充的 ASP.NET 網站能夠對執行緒集區做最佳的利用,而不是在等待 I/O 完成。
如果執行緒集區是因為所有執行緒都已經在 CPU 上持續運作而呈現飽和狀態,您才需要新增伺服器。


ASP.NET 支援三個非同步程式設計模型:
  1. 非同步網頁
  2. 非同步 HTTP 處理常式
  3. 非同步 HTTP 模組

請參考http://msdn.microsoft.com/zh-tw/magazine/cc163463.aspx

ASP.NET 在web page上執行非同步的任務。

Posted by on | | 0 意見
ASP.NET 在web page上執行非同步的任務。

有些重點要注意:
(http://msdn.microsoft.com/zh-tw/library/system.web.ui.page.executeregisteredasynctasks(VS.80).aspx)
在頁面處理過程中,針對不是非同步頁面叫用任何已註冊的非同步工作 (如果有的話) 時,
會自動呼叫 ExecuteRegisteredAsyncTasks 方法。
在 PreRenderComplete 事件之前,發生對 ExecuteRegisteredAsyncTasks 的自動呼叫。
除了對這個方法的自動呼叫以外,您也可以針對所要叫用的工作呼叫 ExecuteRegisteredAsyncTasks 方法。
請注意,即使可以多次呼叫 ExecuteRegisteredAsyncTasks,但非同步工作只能執行一次。

每次呼叫 ExecuteRegisteredAsyncTasks 方法時,AsyncTimeout 屬性會重設。
叫用 ExecuteRegisteredAsyncTasks 方法前 AsyncTimeout 的最後一個值為優先。

步驟:
1.在aspx頁面上要加入 Async="true"。
2.建立一個PageAsyncTask。
3.在page上註冊,RegisterAsyncTask。
4.如上重點所述,在 PreRenderComplete 事件之前,會自動呼叫註冊的PageAsyncTask。

程式碼:
MyObject tmpObj = new MyObject();
PageAsyncTask tmpTask = new PageAsyncTask(tmpObj.OnBegin,
           tmpObj.OnEnd,
           tmpObj.OnTimeout,
           null
       );
this.Page.RegisterAsyncTask(tmpTask);

Mac MINI 的吸入式光碟

Posted by on | | 0 意見
不知為何Update mac時,重新開機後,就進入了"藍色畫面",就粉藍色的,什麼訊息也沒有,開了一整天,還是在同樣的畫面裡,網路上查查,好像只能重灌的樣子,殘念啊.....

重點是,有片光碟在裡頭,無法開機完成,開機過程中,按退片鍵也沒有用,因為是吸入式的,也沒有小孔可以讓人用力戳,怎麼辦啊?不會是要送修,或是把它給解體吧!

不信邪,努力的拜託Google大神,用力的一篇一篇的文章給它看下去,原來,在開機時,"按住"滑鼠左鍵,不是多按幾次喔,而是一直按著不放,光碟就會被退出來了,so gooooooood!

下一步,就是再找找看,有沒有救回小白的機會了!我懶的重灌啊!

asp.net2.0 的login元件

Posted by on | | 0 意見
請參考幾個地方:
如何在自己的db中加入login元件的table:
http://blog.blueshop.com.tw/topcat/archive/2005/12/27/15649.aspx

如何自已檢查是否登入成功:
http://blog.blueshop.com.tw/topcat/archive/2005/12/19/15562.aspx

另外有幾個要注意的,請看程式了:

System.Web.UI.WebControls.Login tmpLG = (System.Web.UI.WebControls.Login)this.LoginView1.FindControl("Login1");
if (chkLogin(tmpLG.UserName,tmpLG.Password))
{
FormsAuthentication.RedirectFromLoginPage(tmpLG.UserName,tmpLG.RememberMeSet);
}
else
tmpLG.FailureText = "登入失敗!請重新登入!!";

從MSSQL取得Table Schema

Posted by on | | 0 意見
來源請參考:
Get Table Schema from MS SQL

SELECT table_schema ,
table_name ,
ordinal_position,
column_name ,
data_type ,
is_nullable ,
character_maximum_length
FROM information_schema.columns
WHERE table_name NOT LIKE 'dnt_%'
AND table_catalog = 'master'
ORDER BY table_name,
ordinal_position

資料庫表格資料轉成 INSERT INTO 指令

Posted by on | | 0 意見
這是個重要的功能。
當使用2005 mssql express時,這版本不提供export/import的功能,所以要自己想辦法囉!
這世界還是有高手的,只是還是需要咕狗的搜尋功能,才能找到!
言歸正傳,就是產生一支stored procedure,其會幫你把table轉成insert指令,參考囉!

請看這篇:
將資料庫表格中的資料以 INSERT INTO 指令的方式匯出


最簡單的使用法,就是:
exec [dbo].[sp_generate_inserts] table_name