分類
.net

在Windows2003 64Bit下執行ASP.NET2.0應用程式

由於要測試 windows 2003 64bit OS 下的效能, 必須將 ASP.NET 2.0的應用程式部署上去.

但擔心會有相容性的問題, 於是開始找相關的資料. 其實也都沒有找到. 相關的資料僅有在 x64 上的 iis 若要跑 64bit 模式, 就一定得用 asp.net 2.0 才行, 若是 asp.net 1.1 的話, 就僅能跑在 32bit 模式下. 後來直接將 compile 好的 asp.net 2.0 程式, 部署上去在 x64 下的 iis, 結果可以順利執行, 真是方便, 沒有相容性的問題.

應該是 asp.net build 好的 msil code 並沒有含 32/64相依的程式碼, 而要到 runtime 時, 依 runtime 的環境, 來執行 msil code, 所以沒有相容性的問題. 至於為什麼 1.1 要在 32bit 模式下執行, 想必是因為在 x64 os 上, 並沒有 64bit 的 1.1 runtime isapi, 所以只能在 32bit 模式下執行囉.

以上是升級作業系統至 x64 時的一個小插曲, asp.net 2.0 是不會有什麼問題的啦…

分類
程式技術

利用CSS做簡單排版

傳統的表格式排版, 除了實作上比較麻煩外, 更令人不便的地方在於調整版型或移位, 解決這個問題最簡單容易的方法就是利用 CSS 來排版.

CSS可以很容易地調整版位, 內容不受影響, 但很容易地調度所有內容的格式及位置, 所以將 CSS 研究一下是很有幫助的. 例如我們想做一個兩欄式的排版, 左側功能, 中右方是內容, 下面是一個下標(footer)功能的版本可以很簡單的這麼安排:

<div class=coll>
<ul>
<li>Item 1
<li>Item 2
<li>Item 3
<li>Item 4
</ul>
</div>
<div class=colmain>
中央氣象局上午發佈低溫特報,明天起,寒流逐漸南下,各地的溫度將會明顯下降,預估28號,29號兩天,各地寒流籠罩,各地溫度明顯偏低,台南以北,東北部沿海空曠地區及金門馬祖,也晚及清晨出現攝氏十度以下的低溫,30號起到二月二號,各地的溫度仍然沒有回升的跡象,清晨仍維持十度以下的低溫,農漁養殖業應慎防寒害,民眾使用熱水器,應該要避免一氧化碳中毒,民眾應該注意保暖。未來一週,溫度都偏低。
</div>
<div class=footer>
<a href=#>contact us</a>&nbsp;copyright 2007
</div>

從上面看到三個排版用的 DIV 區塊, 不設定 CSS 的狀況下, 呈現的效果就是類似上面這樣, 參考: 連結, 但若加入了 CSS 就不同了, 我們分別將 coll class 設定為浮動靠左, 將 colmain 做一個左邊留空, 而 footer 做一個兩方清空的這樣三個內容:

分類
ASP

列舉asp中session的值

在 web 程式中, 有時會利用 session 來存放一些存在於 session 中的資料, 因為不想放 cookie 在 client 端, 而又非全域的 application 變數, 所以採用 session 將會是一個比較理想的方式.

利用 session 可以存放使用者在該次訪問的變數, 在 session timeout 時或是 session 中斷後, 該 session 即回自動消失. 他使用的基本技術是採用一個 client side 的 cookie 來做對應, 利用這組資訊可以對應出此 session 的變數出來.

接下來我們看如何將所有的在 session 變數內的值都取出來.

For Each key in Session.Contents
  Response.Write key & "=" & Session(key) & "<br>"
Next

利用 Session.Contents 將所有的內容配合 For Each 指令列舉出來, 如此一來便能將該 session 內的所有 key value pairs 找出, 並檢視是否有問題, 方便除錯上使用!

一般在程式寫作時, session 的值往往比較不好取得而不易 debug, 利用這種方式將能有效找出 session 問題值的關鍵.

參考資料:
http://www.w3schools.com/asp/asp_ref_session.asp

分類
Javascript

動態寫入popup視窗內容

在利用瀏覽器發出提示訊息時, 可以利用 window.alert(‘message’); 的方式來進行, 但功能過於單調而能呈現的效果較少, 若是要呈現一些圖片或較多的訊息時, 可以利用 popup 視窗的方式(不過要注意快顯封鎖問題).

接下來我們來看一下如何利用 popup 視窗來動態產生訊息.

利用 window.open 開啟一個新的視窗, 利用傳回的視窗實體, 進行對該視窗的文件(document)開啟並進行寫入內文的動作. 整理測試的程式碼如下:

<script>
var popwin = window.open("", "", "top=10,left=10,width=250,height=250");
popwin.document.open();
popwin.document.write("this is a test text<br>");
popwin.document.write("this is second line<br>");
popwin.document.close();
</script>
分類
程式技術

使用vbs產生文字檔

有時候, 我們需要一組連續流水號的文字檔, 例如從 36~420 號, 每行一個數字, 通常會寫程式的人就開始用手邊的工具, 如 delphi, vc++, vb, asp 等程式語言來實作了, 但最快速最簡便的方法就是利用 excel 的自動編號(哇咧, 那和這篇主題有什麼關係), 呃….

當然是必須有安裝這些程式語言(delphi, vc++, vb….)及這些程式(excel)才能實作出來, 然而內建在 windows 內最方便的工具就是 vbs, 僅需要單純的幾行, 就可滿足囉, 而且還可以利用 console 下的輸出導向來進行檔案的輸出, 先寫個簡單的上面例子來看看:

for i=36 to 420
   WScript.Echo i
next
分類
PHP 懶得分類

php中改變ini設置方法

在 php 中, 有時需要調整 ini 內的設定值, 以獲得某些特性, 例如將 display_errors 參數設置為 Off 時, 做為錯誤資訊隱藏, 但是在寫作或除錯程式時, 希望能將此參數設置為 On, 設置完成後又要重起 apache, 這樣不僅不方便, 又會影響服務, 此時使用 ini_set() 函數將會是最方便有效的方式.

string ini_set ( string varname, string newvalue )
函數用法: http://tw2.php.net/manual/tw/function.ini-set.php

利用 ini_set 可以將 ini 的參數於設置時更動, 並於該 php 結束時復原, 若需要提早復原, 可以利用 ini_restore ( string varname ) 進行參數復原操作.

如此一來, 便能方便快速地在某些程式裡進行參數調整又不影響其他程式運行, 將能有效方便維護及應用. 後面為一個範例:

http://sample.diary.tw/6/ini.php

另外值得注意的是, 此參數可用 On, on, 1 代表開啟, 利用 Off, off, 0 代表關閉!

參考資料:
http://blog.chweng.idv.tw/archives/413/

分類
Database 懶得分類

SQL Server的Identity欄位使用/複製/重設

在資料庫中, 常用的一個流水編號通常會使用 identity 欄位來進行設置, 這種編號的好處是一定不會重覆, 而且一定是唯一的, 這對table中的唯一值特性很重要, 通常用來做客戶編號, 訂單編號等功能, 以下介紹關於此種欄位常用方式及相關技術.

後面的範例表皆以此表為建立:

CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
分類
程式技術

Referer參數的最大長度

在分析網站記錄時, 很常用的一個資訊就是來源參考, 也就是 http reqeust header 中的 referer, 我們先來看看 rfc 的規格:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36

在 rfc 內並未對此進行規範, 也就是說, 沒有限制該參數的最大長度限制, 這樣看來應該從 url 的最大長度來看, 接下來我們再來看看相關的 rfc 資料:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

分類
Javascript 懶得分類

全域form變數的取得

在寫網頁全域 javascript 的部分, 由於 ie 可以很容易的解析全域型變數, 也造成有些網站在實作 client javascript 時, 會發生一些問題.

基本上在網頁上存取頁面元件時, 可以利用 DOM 的方式進行, 以免發生跨瀏覽器的問題, 以下為一些常見的狀況. 例如頁面上有個唯一的 form, name為 f1 時, 通常會有人這麼寫:

f1.submit();

分類
PHP 懶得分類

在php中的UTF-8字元斷字方式

在 PHP 中, 若是有中文字時, 使用 substr() 函數時, 會發生斷字的問題. 如何解決呢? 我們可以利用 mb_ 開頭的系列函數來操作我們需要的行為, 例如取出左五碼, 可以這麼下:

$str = "中文字及english測試";
echo mb_substr($str, 0, 5, 'UTF-8');

這樣會顯示 “中文字及e” 這樣五個字出來.

另外一個重點在於該組函數後面加入的 encodeing 是關鍵, 若是 UTF-8, 可以用 UTF-8 或 UTF8 皆可以正常使用, 還有較常用的兩個函數: mb_strlen 及 mb_strwidth, 前者是用來取得字元個數, 後者則是取得寬度, 後者目地主要在於排版顯示用途, 因為寬字元會計算為 2, 如此一來便能有效地算出參考寬度.

以下為參考程式碼:
http://sample.diary.tw/4/php.php