2015年8月11日 星期二

JQuery Datatables 無法分頁, 排序

起因:
這二天打算練習 MVC.NET 與 JQuery Datatables 整合,好不容易克服 JSON 的資料傳遞問題,結果又遇到 Datatables 無法排序,分頁也不正常。依照經驗,先查看看網頁引用的 JQuery 的版本是否與 Datatables 不相容,修改後仍然無解,看來設定也都沒有問題,在網頁估狗也看不到什麼有用的解法。突然見到 Java Script 中的參數名稱 serverSide 和有些網友寫的不太一樣,有些網友是加上 b 這個前置字元,代表 binary。那就試試看,沒想到這就是問題點,改完後就運作正常了。

Status: Case closed.

image

 

image

2015年4月15日 星期三

MS-SQL Multiple-step OLE DB 錯誤

昨日在進行新系統上線測試,而這個測試是個報表相關程式。在一般的查詢條件之下,系統都可以正確無誤統計出資料,但是速度不快。但是下到某一個特定的字串查詢,怪事就發生了,系統出現附圖中的錯誤訊息:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

天呀,這是什麼鬼東東,照例往估狗大神請教去,世界各地專家大都建議查查 SQL connection 連結字串,或查詢時欄位設定的問題,也有可能是 MDAC driver 的問題,我就照著那些建議試著去調校但仍不得其解,只好悶著頭自己測試,突然發現有一段的 SQL 查詢速度慢的不正常,像是 index 未使用到,心想試試也無妨就多加一個 index 作測試。Bingo,SQL 的執行速度立馬恢復正常,錯誤訊息也不見了。沒想到此錯誤訊息找一下午,只要加上 index 就可以打包收工。只能說上天保佑程式人。

Status: Case closed.

image

2014年12月12日 星期五

Android手機聯絡人: 群組同步問題

起因:
話說某朋友有隻三爽牌的 S3 Note 手機,因為 Gmail 帳號在原舊手機刪除後造成每個聯絡人群組內的聯絡人都不見了,我心想不就把手機上的聯絡人再同步一次不就可以了?No No No,並沒有同步,Gmail 和三爽牌手機一邊一國各管各的,無論同步幾次都無法將群組內的聯絡人更新到手機內。經過一番Google後發現有個聯絡人群組同步的功能,但是只有 HTC 手機有此功能,三爽牌沒有,殘念,難不成要將手機重置才以將聯絡人群組同步回來??但是,真是漂亮的但是…天公疼好人,在測試的過程中,突然發現如果增加一個新群組,這個新群組內的聯絡人竟然可以同步到手機。叮噹…靈光一閃,我可以解決這個問題了!

詳細解法在底下! 不用在手機上刪除帳號,聯絡人群組也可以恢復正常哦。步驟請見下圖說明。

Status: Case closed.

步驟一、GMail 聯絡人: 增加一個新群組,將此群組命名為 Test

步驟二、將各群組內的聯絡人全部加上此一新群組: Test

步驟三、開啟手機的帳號同步,各群組內的聯絡人數量會同步為最新資料

步驟四、檢查各群組的資料無誤後,可將剛剛新增加 Test 群組刪除

image

2013年11月14日 星期四

Excel 外掛: SEO Tools

最近 user 有個需求,需要處理 Excel 中的資料,把有前置詞的字串從儲存格取出。照我原本思考的方式是將資料轉入資料庫再作處理,但是還要建 Table ,轉資料,還是免不了一番功夫。

懶人如我,心裡一陣動念就上 google 找工具,就翻到的這個工具,雖然此物並非專門給 regular expression 處理字串,但在其 String 的功能組下方有 RegexpFind 可符合此次任務需求,立馬就下載測試,一試就成主顧。這套 SeoTools 如其名,專長在處理 Web SEO 相關的資料,就待以後有空再來使用了。如果有在 Excel 下使用正規表示式(Regular Expression),相信你也會和我一樣滿意它。

image

官方網站: SeoTools for Excel

2013年5月22日 星期三

PHP + MS SQL 安裝問題

作戰計劃: PHP + MS SQL 由單機移至 Hyper-V

狀況出現: PHP 安裝完成, 但出現資料庫連結錯誤

接到任務後,騎兵就快手快腳下載 PHP 專用的 Appserv 開始安裝,過程相當簡單,依照執行步驟下一步下一步就完成了,請見下圖作為參考。

接著啟動 Apache 進行測試。哦,代誌發生了,出現錯誤訊息。看來是資料庫問題,騎兵我直接判讀為資料庫連結錯誤,這小角色應該容易解決。

錯誤訊息: Fatal error: Call to undefined function mssql_connect() in C:\AppServ\….

image

過了二天,小角色解決沒?喔…還沒哦,在 Google 大神裡看遍中外高手之祕方、旁門左道,仍不得其門而入。只能再檢查,看看有無蛛絲馬跡,網路上眾人的意見大部份都是 dll 檔案的問題,ntwdblib.dll 與 php_mssql.dll,試了再試,將 .dll 複製到 windows\system32 之下仍是無解,錯誤訊息仍有如惡鬼上身賴著不走。但就在此時騎兵我透過狙擊鏡上的十字標記瞄到 System32 目錄之下竟然有個 SysWOW64,哦~哦~哦~ 這台主機是 64 位元,那就將 ntwdblib.dll 與 php_mssql.dll 複製到此目錄下之看看,再重啟 Apache 服務,打開 PHP 網頁,馬上天空就傳來陣陣悠揚的聲音,噹  噹  噹  噹,下課收工。

image

 

* 作戰方針: windows 32 要 copy 到 C:\windows\system32, 但 64 bit 則要 copy 到 C:\windows\SysWOW64

* 最佳參考來源:
http://www.ptt.cc/bbs/PHP/M.1284709077.A.7C7.html 
http://www.appservnetwork.com/

下面截圖來自 PTT,是搜尋國內說明最詳細最清楚的,特別收錄,以玆鼓勵。image

2012年2月22日 星期三

從 MS-SQL 到 MySQL – 第一天

誰需要參考此篇 post? 如果你剛好是以下三者之一,歡迎你,相信此篇對你一定有幫助。

  • MySQL 初學者,想學習 MySQL 有關知識的朋友 
  • 碰到公司內部要求將 DB 由 MS-SQL 移轉到 MySQL的朋友
  • 評估 MS-SQL 移轉到 MySQL 可行性及難度的朋友

案情說明:
Godaddy 網路商所提供的 MS-SQL 只有 200MB 的檔案空間,目前已使用約 190MB,預估於一個月內到達限制,造成網站無法運作。

Action:
Godaddy 除了 MS-SQL 外仍有提供 MySQL 1GB 的空間,雖然相關人員未接觸過 MySQL,經評估可將資料庫移轉到新的 MySQL,雖有語法上的差異,但程式可配合修改。

Schedule:
預估三個工作日

 

第一日: 沒有截止日期的工作,不要期待有結果

首先,很快的第一天的工作就要開始了,別忘了 PM 的工作就是要盯住下面的同事再加上 PDCA,Plan – Do – Check – Action 。不過,老規矩施工前先來抱怨一下,為何每次處理的問題都是大家早就知道,但賴皮愛拖的等到最後一週或剩下幾天才處理,想搞不好事情拖久了,你忘了,我忘了,大家都忘了,最後大家 happy 嗎?但總是事與願違,問題是紙包不住火的?像這個 case 算是拖了三個月,才認命開始動手解決。所以我為這個案子定了一個平常不過的完工時間,三天。

對,就只有三天要搞定它,因為 "沒有截止日期的工作,不要期待有結果"

這是件單兵作戰的案子,沒有 team 成員和我同甘共苦,不過身於資訊專業人員,工作雖然不多但總是要計劃一下,來來來…安排一下這三天的進度,這次可是 PM,DBA,還有 Programmer 自己全包,包山包海就是沒包下午茶,說到下午茶,真是令人懷念。

第一日計劃

  • 程式 & DB備份
  • MySQL 安裝
  • 建立測試環境
  • 開 Table, 建 index 再 import data

第二日計劃

  • 網頁程式修改
  • 網頁單元測試

第三日計劃

  • 資料庫轉檔程式修改
  • 整合測試
  • 新網頁發佈
  • 系統監視及修正

 

各位朋友,一切都會好轉的,只要啟程了,目的地就不遠了。

第一天的工作中,程式 & DB 備份為何要列為首件呢?因為我見過一些令人悲傷的 IT 慘劇,所以只要我執行或是參與的案子,第一件事就是備份,備份永遠不會嫌多。不過,因為各家系統都不同,請自行執行這個第一天的第一步驟,唯一要小心的就是不要把 export DB 作成 import DB,當然,這也是我看過的 IT 杯具之一。

接下來是 MySQL 安裝、建立測試環境,最後開立 Table,  index 再作 data import 作為第一天的結束。

MySQL 安裝

以下提供 MySQL 的連結,請自行下載後逐步安裝即可,並再安裝 MySQL Workbench CE 5.2,此工具類似於 MS-SQL 的 SQL Server Management Studio,但二者比較,相關功能陽春多了,不過我們還是可以利用內建的工具進行今天預定要作的 SQL 查詢及 import data。

在MySQL 安裝的過程會產生一個內建的 DB,請將使用者名稱及密碼記下,以利後面的建立測試及 data import。

MySQL DB 下載連結: http://dev.mysql.com/downloads/
MySQL Workbench CE 下載連結: http://www.mysql.com/products/workbench/

image
MySQL Workbench CE 執行畫面

建立測試環境

當進入 MySQL Workbench 後,直接開啟一個 connection 進入 MySQL,此時你就可以試開個測試 table 當作首次練習。

image 
MySQL Workbench CE 執行 Query Database 畫面

但如果不知道從何開始的朋友,那就參考以下範例熱身一下。相信原本熟悉 MS-SQL 的朋友看到下面這二段 SQL 指令,應該可以輕易的分辨出差異吧。原本 My-SQL 的 select top 10 * from eps 變成了 select * from eps limit 10。還有 [table name] 變成了 `table name`,這個我們少用的符號 –> `。再提供一個查詢目前時間的 SQL 語法, select sysdate() 在 MySQL 則是 select Now() 。

imageMySQL Workbench CE 執行 Query 範例

開 Table, 建 index 再 import data

接下來我們開始建立更完整的測試環境,在開 Table 項目,有關 MySQL 和 MS-SQL 差異的地方,我們可以直接使用下面 5 個步驟作轉換時的參考,這是我實際執行時所作的隨手記錄。再來開好 Table 之後是建 index,我建議可以使用 MySQL Workbench 圖形化界面操作比較直覺也快速,此處就不另加說明。

  1. 移除 "[dbo]"
  2. 移除 "[" and "]"
  3. 更改 nvarchar 為 varchar
  4. 更改 numeric 型別為 integer
  5. 更改 identity 為 auto_inrement 並加上 primary_key 參數
  6. Unix 版本的 MySQL table 有大小寫區分,為避免困擾,建議 table 名稱一筆為小寫

imageMS-SQL 開 Table 圖示

今天最後的一個步驟是 import data,利用 MS-SQL 的 SQL Server Management Studio 協助將 table 資料轉為文字檔 (Flat-file) ,再經由 MySQL Workbench import 進指定的 table,過程皆為圖形化界面,此處也不再詳述。

溫馨提示: 在 table 的 export / import 過程中,記錄各個 table 的資料筆數作為前後的結果驗證,力求資料一致。

自動編號在 import data 時會是你的另一個問題,當我於 MySQL 開新 Table 時,原始設定都不先行啟動自動編號,待完成 import 後再將 ID 欄位修改為自動編號,這種作法可以控制 ID 編號為來源及目的一致。以下有二段有關比較重要的自動編號 SQL 指令給各位參考。

    • 修改 table 某欄位為自動編號
      ALTER TABLE `table name` CHANGE `欄位` `欄位` INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
    • 修改欄位自動編號的開始數字
      ALTER TABLE `db name`.`table name` AUTO_INCREMENT = 某數字;

imageSQL Server Management Studio

註: 在資料庫管理工具方面,我個人有使用另一套 Aqua data studio 4.7 (個人免費使用) ,值得推薦。原因為此軟體可以橫跨 MS-SQL/MySQL/Oracle ,多種資料庫皆可使用,我使用起來相當的順手,使用方式也是將 MS-SQL table 匯出為以逗號分隔的 .txt 文字檔,再匯入 MySQL。

2011年10月10日 星期一

[Web site] 網站可用性 (Site availability) 檢查

上星期有使用者回報網站無法執行,簡單作三分鐘自行檢查 (開瀏覽器,Ping) 看不出什麼問題,就要再稍微深入的利用網路上的工具作個基本驗證。以下幾個工具網站可以很快的幫忙檢查網站,確認是網站本身的問題或是使用者誤判。

  • 網站可用性 (Site availability) ,測試由世界各地連到你的網站
    由於使用者所在的地點及 ISP 都不一定,像我的網站放在新加坡,如果從家裡作測試只有 "電信商: 中華電信" + "地點: 台灣" 。利用這類的網站作測試,可以確認網站由世界各地連上線的情況。

    推薦 1. WatchMouse 
    可不用註冊,直接使用
    image

    推薦 2. host-tracker.com
    可不用註冊,直接使用image

  • 自動化 網站監視 (Website monitor)
    每次看到 自動化 這個字眼,就讓我這種懶人覺得興奮。可以自動化的事就交給程式或是系統去處理就行了。

    推薦. pingdom
    pingdom 提供一個免費的 website ,但是必須要用 E-Mail 註冊。如果設定的網站發生問題 (down),就會發 mail 通知。

    Pingdom Home

 

  • 我的其他建議:
    • 增加一頁 "測試專用頁"
      網頁可以很單純,檔名可以取名為 sa.aspx 或是 ping.aspx。這個網頁可以是一個 HTML 網頁或是放些小程式再加上資料庫的簡單連線,在測試網頁同時也順便測了資料庫連線。

Status: Case closed.