2011年7月13日 星期三

附件備份小程式(Attachment)

┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 目的 (purpose)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 分享附件備份小程式, 使用的時機在整理實體的檔案附件, 或透過 SQL 指令刪除Database資料後, 需要重新整理實體附件檔案.

 ■ 使用方式, 先建立 Data_new 及 Attachment_new 這2個 Folder, 讓舊的附件 copy 到新的資料夾下.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 執行畫面 (screen)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 使用前, 附件大約 4萬筆.



 ■ 使用後, Data 附件剩2千筆, 有效的節省空間, 和增加檔案存取的效率.



 ■ 使用後, Attachment 附件剩1千600筆.

2011年7月11日 星期一

分享2個常見的密碼檢查用的功能(password)

┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 目的 (purpose)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 分享3個常見的密碼檢查用的功能,
 ● 1. 每N天更換一次密碼.
 ● 2. 文字長度檢查. (須八碼以上,十六碼以下)
 ● 3. 文字內容檢查. (英數字混合可有特殊符號)



┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ source code 要修改的地方
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 每N天更換一次密碼. (修改 login.asp)



 ■ 每N天更換一次密碼. (修改 Update.asp)

2011年7月7日 星期四

又遇到身份驗證缺陷 (Broken Authentication) 的程式

客戶的新需求, 密碼規則變更:
 ◎ 1. 須八碼以上,十六碼以下,並英數字混合可有特殊符號ex.!@#(但不包括全形符號與$).
 ◎ 2. 每三個月更換一次.

於是著手從即有的別人寫好的應用程式 copy出來修改, 發現一些問題.



--------------------------------------------------
 ■ 問題 1: 身份驗證缺陷 (Broken Authentication)
--------------------------------------------------
某些程式會透過 url 來傳送使用者帳號(ID). 這是一個嚴重的問題, 代表一般的 user 也許可以修改到管理者的資料!

 ● 解決方法:
 ◎ 1. 把帳號先放到 session 裡,
 ◎ 2. 在接收帳號的程式碼, 修改成從 session 裡取值.


--------------------------------------------------
 ■ 問題 2:
--------------------------------------------------
如果固定都是從 session 取得帳號資料, 那這支程式就不能用來修改其他帳號的資料,

 ● 解決方法:
 ◎ 1. 在接收帳號的地方, 再增加權限的判斷, 是管理者才能做 使用者帳號(ID) 的 request,
反之其他人在 request 完之後, 固定再把 使用者帳號(ID) 指派成 session 裡的 使用者帳號(ID).

2011年7月5日 星期二

動態產生的select box 裡的 item 在回一頁時會跑掉

user 反應, 他的訂單資料有錯.

經反複的測試, 終於找到錯誤的原因, 這個bug 是必需輸入過錯誤的資料, 才測試的出來, 發生的因為 user 曾輸入過錯誤的資料, 造成回上一頁時, 動態產生的 select box 裡的 item 會固定變成第1個項目.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 執行畫面 (Screens)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 1. 在下拉框(select box)輸入正確的資料, 松山區.



 ■ 2. 固定輸入錯誤的資料.



 ■ 3. 畫面一回來, 就會看到 動態產生的下拉框裡固定被帶入第1個項目, 而不是正確的 "松山區".




┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 解決方式 (Solution)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 增加一個隱藏的欄位, 用來存放送出之前的內容值. 並在回一頁時, 把該值填入動態產生的下拉框之中.

 ※ 附註: 這個隱藏欄位的用法, 建議不要使用 input 的 hidden 欄位來做, 經測試 google chrome 很神奇的會抓不到該 hidden 欄位的值, 即使你在 submit 按鈕按下去之後有給他值. 建議使用 type='text' style='display:none;'

 ※ 附註: 由於 google chrome 和 firefox 都太聰明了, 會 cache 住前一頁的 image, 會造成回上一頁時, 驗證碼會是舊的, 所以要在回上一頁之後, 執行一次 reset 驗證碼的動作.

研究 google 提供的繪圖 API

有一個問卷統計的部分會用到圓餅圖,
發現使用 google 提供的 API 更快, 更方便.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 範例 (Example)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ hello world:
 → http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World


 ■ pie chart (圓餅圖):
 → http://chart.apis.google.com/chart?chs=220x110&cht=p&chd=s:9DBBB&chl=Windows|Linux|Macintosh|iPhone|iPad


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 相關連結 (Links)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ Google Chart Tools / Image Charts (aka Chart API)
 → http://code.google.com/intl/zh-TW/apis/chart/image/docs/gallery/chart_gall.html

 ■ Chart Wizard
 → http://code.google.com/intl/zh-TW/apis/chart/image/docs/chart_wizard.html
 → http://imagecharteditor.appspot.com/

2011年7月1日 星期五

MSSQL 不支援此種介面 (No such interface supported)

下面要分享的是解決問題的過程和方法.

今天發生客戶的主機, 無法進行全文檢索的指令, 在執行SQL 指令後, 會發生
"不支援此種介面" (No such interface supported) 的錯誤.




這個問題, 似乎在2年前我有處理過, 由於都沒有留下文件, 而且年代久遠已經完全忘記發生過什麼事情及如何解決, 所以重新再處理一次.

■ step 1: 先用中文字 google 看看, 發現都沒有相關的文章.

■ step 2: 改用英文字 google 看看, 看了很多篇, 似乎也無解.

■ step 3: 縮小 google seareh 的範圍, 加入 /site:microsoft.com , 似乎也無解.

■ step 4: google 無效, 改成比較正式機與測試機間的差異. 開始提出可能的假設.

■ step 4.1: 由於客戶給的Database 主機是給一般的 user 帳號, 所以很多指令無法執行, 先假設是權限造成. 請客戶用管理員帳號, 重建一次全文目錄, 結果還是一樣, 會出錯, 所以排除是權限因素.

■ step 4.2: 測試看看, 使用不同語言的詞庫來斷詞, 看看是否能成功. 結果可以, 但由於詞庫不合, 用英文來斷中文字, 會查不出資料. 可以確定原因之一是: 是中文繁體斷詞出錯.

■ step 4.3: 檢查測試機與正式機上面斷詞的相關參數, 發現 classid 不一致.

v12.0 版就是使用 SQL server 2005 的斷詞 classid 應該是:
954F1760-C1BC-11D0-9692-00A0C908146E

v2.0 就是不斷詞 classid 應該是:
1680E7C3-9430-4A51-9B82-1E7E7AEE5258


■ step 5: 請客戶設定 class id 後, 重啟 SQL Server 服務, 就大功告成, 正常運作了.

2011年6月30日 星期四

允許後台的排序與前台不同(Order By)

今天要分享的是, 讓資料在後台的排序欄位與前台不同,
解決方法有2:

───────────────────────────────────
 ■ 方案1: 用 DND
───────────────────────────────────
 ※ 缺點: 之後欄位資料調整, 要改2個(以上) 的 xml.
 ※ 優點: 現行程式不需調整.


───────────────────────────────────
 ■ 方案2: 在 xml 裡增加新的 tag
───────────────────────────────────
 ※ 缺點: 要改寫程式.
 ※ 優點: 多個節點, 都用共同一個 DSD 的情況下, 只需要使用同一支 xml.

step 1: 修改 xml 檔, 增加新的tag.


step 2: 更新 asp 程式及 select box 在使用 xsl 版型.

step 3: 大功告成了, 執行畫面如下:

Facebook 留言板