2011年5月3日 星期二

asp 實作 base64 加/解密

┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 1. Base64 定義
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Base64是一種使用64基的位置計數法。它使用2的最大次方來代表僅可打印的ASCII 字符。這使它可用來作為電子郵件的傳輸編碼。在Base64中的變量使用字符A-Z、a-z和0-9 ,這樣共有62個字符,用來作為開始的64個數字,最後兩個用來作為數字的符號在不同的系統中而不同。一些如uuencode的其他編碼方法,和之後binhex的版本使用不同的64字符集來代表6個二進制數字,但是它們不叫Base64。


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 2. 執行結果
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 3. 程式碼
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 4. 心得
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
base64 的好處就是可以把原本用數字 0~255 來表示的字元, 改成用 0~63 來表示, 好處是資料可以放在URL裡被傳遞, 也可以避免掉部份 cross site script 的問題.

下圖是我被植入 script site script 的結果, 因為把字串放到 value="" 屬性裡, 因為變數內容有雙引號, 所以字串就跳脫了.



┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 5. 資料來源
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
將UTF-8編碼的字串轉成base64編碼
http://achtung.webhop.net/allenj/?p=628

2011年4月19日 星期二

研究 jQuery 輪播(轉場) 特效

1.InnerFade 範例 下載
http://medienfreunde.com/lab/innerfade/jquery.innerfade.zip
InnerFade 提供了三種輪播效果,我們可以在 index.htm 調整它的顯示速度及相關參數:

1. News輪播
$('#news').innerfade({
animationtype: 'slide',
speed: 750,
timeout: 2000,
type: 'random',
containerheight: '1em'
});


2. 圖片輪播
$('ul#portfolio').innerfade({
speed: 1000,
timeout: 5000,
type: 'sequence',
containerheight: '220px'
});


3. 段落輪播
$('.fade').innerfade({
speed: 1000,
timeout: 6000,
type: 'random_start',
containerheight: '1.5em'
});


修改要輪播的資料:

1. News輪播
<ul id="news">
<li>
<a href="#n1">1 Lorem ipsum dolor</a>
</li>
<li>
<a href="#n2">2 Sit amet, consectetuer</a>
</li>
...
...
</ul>

2. 圖片輪播
<ul id="portfolio">
<li>
<a href="http://medienfreunde.com/deutsch/referenzen/kreation/good_guy__bad_guy.html"><img src="images/ggbg.gif" alt="Good Guy bad Guy" /></a>
</li>
...
...
</ul>

3. 段落輪播
<div class="fade">
<p> 段落 1 </p>
<p> 段落 2 </p>
...
...
</div>


資料來源:
http://www.xt-commerce.cn/forum/archive/index.php/t-83.html


相關網站:
SmallSlider圖片輪播插件
http://www.d2nb.com/smallslider/index.html

我的第2個 javascript Object 程式, 實作 jQuery 的 Fade 特效

第1個 javascript 實在 object 的是 swfupload
下載 URL:
https://sites.google.com/site/max32002/webapp/swfUpload_%E5%A4%9A%E6%AA%94%E4%B8%8A%E5%82%B3_20110309.zip?attredirects=0&d=1

第2個實作的 javascript object 是 maxFadeObj,
下載 URL:
https://sites.google.com/site/max32002/webapp/gallery.20110329.zip?attredirects=0&d=1

心得:
1. 原來要用 jQuery 要做出特效還滿簡單的.
2. javascript 裡寫 settings 和 object 會比較好在其他的情況下做修改, 比較好移植(重覆利用), 比較容易了解, 比較方便做修改. 缺點, 寫出第1個object 需要多一點時間.


setting 的寫法:
2. 圖片輪播
$('ul#portfolio').innerfade({
speed: 1000,
timeout: 5000,
type: 'sequence',
containerheight: '220px'
});
再配合 extend() 來補齊不足的參數.


資料來源:
http://www.xt-commerce.cn/forum/archive/index.php/t-83.html


相關網站:
SmallSlider圖片輪播插件
http://www.d2nb.com/smallslider/index.html

除錯 flash 花了3小時

接到一個 flash 廣告輪播要內容要調整需求.

因為, 太有自信, 所以先用猜的, 以為只是小問題, 所以直接發佈到正式的環境做測試, 為了避免 browser cache swf 檔. 所以先清除掉 快取的暫存檔. 為了看 flash 取得及送出的 xml 檔正不正確, 再執行 fiddler2 來 debug. 每修改一次, 測試一次需要花5分~7分鐘.

東猜猜, 西猜猜, 都找不到實際的錯誤在那裡, 也改寫了很多地方的程式, 也都猜錯, 找不到實際出的錯誤在那裡, 最後就用正規的做法, 結果一下子就找到問題:
1. 先用假資料(實際的xml檔) 來取代從網路即時取得 xml.
2. 在程式碼裡, 加入 trace() 來輸出 debug 的資訊,

發現應該要被觸發事件的button 沒被觸發, 原來是有一個透明的圖層也被加入了 on(release) 事件, 上層的圖層的 on(release) 被執行, 被壓在下面的button 的 on(release) 就不會被執行. 移掉透明圖層裡的事件後, button 就變正常了.

用svn exprot 出貸時產生的錯誤來學習svn commit怎麼使用

畫面1: 裝機後的錯誤畫面.



trace 程式碼之後才發現是有少檔案,為什麼會少檔案呢?
原來是使用 svn 的 export, 沒有把所有的檔案都匯出來.
正確的 commit 方式, 請勾選 "show unversioned file"

2011年3月18日 星期五

iis 壓縮網頁,增加網頁效能

應用 IIS 6.0 的 Gzip 壓縮功能降低網路傳輸量

生存在資訊爆炸的網頁程式設計師們應該都會遇到網站效能不佳的問題,然而網站效能不佳有多種原因,舉凡 Web Server 本身的效能問題、系統架構設計不良、後端資料庫負載過重及設計不良,Web Server 將網頁內容傳輸到使用者瀏覽器的網路傳輸問題等等,這些都是需要面對的問題,網路傳輸問題最簡單也最容易解決的就是降低Web Server傳輸到使用者瀏覽器的網頁內容大小,降低網頁內容大小也有多種方法,例如把HTML檔案的換行及不必要的空白字元移除,CSS 盡量設計共用架構不要使用 Inline,壓縮 Javascript 檔案,縮小引用的圖檔等,還有一個大部分 Web Server 如: WebSphere、APACHE、IIS 5.0 以上都支援的 GZIP HTTP 壓縮功能,不過你用壓縮功能一定要犧牲一些 CPU Time ,目前大部分入口網站也都使用此項功能來減少頻寬的使用率,有效的提高網頁瀏覽的速度,我的 E 政府 (www.gov.tw)、Yahoo(tw.yahoo.com) 等大型入口網站也都有使用 GZIP,這也說明了他是個很普遍的技術,如果想提升瀏覽速度的話,不妨盡快評估導入此功能。


壓縮前:
傳回的 html 為未壓縮的內容.


壓縮後:
content-encoding: 的內容己修改為 gzip


相關工具:
IIS 6.0 Resource Kit Tools:
http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en


相關文章:
1.應用 IIS 6.0 的 Gzip 壓縮功能降低網路傳輸量:
http://www.icopy.net.tw/print/forum_posts.asp?TID=459

2. 網頁壓縮檢測: http://gzip.zzbaike.com/
檢測結果:
原本 24.3 kb 的 html 到 client 端只剩 4.5kb, 壓縮率到 81.4%.

3. Enabling HTTP Compression (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true



設定方式:
啟用動態頁面(asp,dll,exe)內容壓縮的指令:
cscript adsutil.vbs set w3svc/filters/compression/parameters/HcDoDynamicCompression true

建議: 動態壓縮比設低一點, 可以兼顧 Server CPU performance 及 網路傳輸的 performance


啟用靜態頁面(html,htm,js,css)內容壓縮的指令:
cscript adsutil.vbs set w3svc/filters/compression/parameters/HcDoStaticCompression true

附註: adsutil.vbs 檔案已經放在 C:\Inetpub\AdminScripts\ 目錄下.

這2個步驟, 可以用滑鼠來做,

1.開啟「網際網路資訊服務(IIS)管理員」,選擇「網站」後點選滑鼠右鍵選擇「內容(R)」。

2.選取「服務」頁籤後,請勾選「壓縮應用程式檔案」和「壓縮靜態檔案」,其餘HTTP壓縮相關設定請視伺服器效能設定。

3.返回「網際網路資訊服務(IIS)管理員」,選擇「網頁服務延伸」,選擇後右方區塊會顯示網頁服務延伸項目,請在空白處點選滑鼠右鍵選擇「新增網頁服務延伸(A)」。

4.請設定延伸名稱為「GZIP」,新增一筆需要的檔案為「C:\WINDOWS\system32\inetsrv\gzip.dll」(此為預設位置可能因為您安裝的不同而有所不同),並勾選「設定延伸狀態成允許」後確定。

5.當前述步驟執行完畢後,就會在網頁服務延伸項目中看到GZIP。

6.接下來設定GZIP可以壓縮的副檔名,返回「網際網路資訊服務(IIS)管理員」,選擇「主機名稱(本機電腦)」後點選滑鼠右鍵選擇「內容(R)」。

7.在「網際網路資訊服務」頁籤,請勾選「啟用直接Metabase編輯(N)」。

8.接下來請開啟「c:\windows\system32\inetsrv\MetaBase.xml」(此為預設位置可能因為您安裝的不同而有所不同),並搜尋「IIsCompressionScheme」字串。
可以執行指令 notepad c:\windows\system32\inetsrv\MetaBase.xml


9.請設定「HcDoDynamicCompression」及「HcDoOnDemandCompression」兩個屬性為TRUE。

10.設定「HcDynamicCompressionLevel」壓縮等級1 - 9,數字越大越耗費CPU資源,請視伺服器效能設定。建議: 使用 3 或 5 即可.

11.設定「HcFileExtensions」靜態頁面副檔名,可設定類型建議為
htm
html
xml
css
txt
pdf
doc
js
swf
txt

12.設定「HcScriptFileExtensions」動態頁面副檔名,可設定類型建議為
asp
aspx
asmx
dll
exe

13.存檔完畢,重新啟動IIS。



資料來源:



2010年5月26日 星期三

以Asp實作Virtual Directory

原理:
透過自定 Http 的 404 - file not found, 來實作 Virtual Directory (虛擬目錄).


執行畫面:
把 max.jsp 設定成去執行某個 asp



設定方式:
1. 設定 IIS:
設定 404 的類型為 URL,
內容為 /inc/max.404Handler.asp


2. 設定 重導 URL 的 mapping 在 /public/404Handler/404.xml
3. 後台 Virtual Directory 的設定界面在 /admin/virtualDirectory/editact.asp


附件清單:
\web\inc\max.404Handler.asp
\admin\virtualDirectory
\admin\inc\max.404Handler.asp
\admin\inc\max.DB.Function.asp
\admin\inc\max.File.Function.asp
\admin\inc\max.String.Function.asp
\admin\virtualDirectory\editact.asp
\public\404handler\404.dtd
\public\404handler\404.xml


附件下載:



資料來源:

Facebook 留言板