Excel 外掛: SEO Tools

Posted by Eric... On 2013年11月14日 星期四 0 意見

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

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

image

官方網站: SeoTools for Excel

READ MORE

PHP + MS SQL 安裝問題

Posted by Eric... On 2013年5月22日 星期三 0 意見

作戰計劃: 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

READ MORE

從 MS-SQL 到 MySQL – 第一天

Posted by Eric... On 2012年2月22日 星期三 0 意見

誰需要參考此篇 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。

READ MORE

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

Posted by Eric... On 2011年10月10日 星期一 0 意見

上星期有使用者回報網站無法執行,簡單作三分鐘自行檢查 (開瀏覽器,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.

READ MORE

MS-SQL 的算術小數點

Posted by Eric... On 2011年7月22日 星期五 0 意見

今天早上下一個 SQL 的簡單計算式,要算 “1/24” 這個簡單的算式,可是在 MS-SQL 中答案就只有出現 0。自動幫我四捨五入了,真是多事。可是我要的答案是有小數值。上網找了一下解法,真沒想到寫 SQL 寫了十來年了,現在才需要查這個小問題,我用 Oracle DB SQL 的算術計算可是保留原汁原味,不會幫你自動處理這個算術結果。嗯…我比較喜歡 Oracle。

你說解法有嗎? 有,請參照下方的 SQL 語法。

-- 各式不同的算式處理
SELECT 1/24                -- 0 <-- 這就是我第一次下的語法 
SELECT 1.00/24             -- 0.41666 <- 這個看來最迅速, 用來寫 SQL 測試
SELECT 1.0000/24.0000      -- 0.04166666666                       
SELECT CAST(1/24 AS NUMERIC(18,4))        -- 0
SELECT CAST(1/24.0000 AS NUMERIC(18,4))   -- 0.0417
SELECT CONVERT(NUMERIC(18,4),1.0/24)      -- 0.0417 <- 這個看來最標準
SELECT CONVERT(NUMERIC(18,4),1.000/24)    -- 0.0417 
SELECT 1.0000/24.0000      -- 0.04166666666

Status: Case closed.


READ MORE

[英翻] 真酷, 你會寫程式

Posted by Eric... On 2011年6月30日 星期四 0 意見

昨天試著翻譯這篇小 blog 短文,這篇文章對我來說並沒有什麼特別的地方,就是長度比較短可以讓我練習一下。翻譯的過程也不是非常困難,但要作到那些翻譯大師所說的“信、雅、達”,那就不是個簡單的事了。

幾年前很多電腦的中文翻譯本,看來就是英文硬翻直接翻,或是非電腦領域的翻譯人員加工的。在買書的時候如果不注意,買到地雷的機率很大。因為年紀尚輕,所以也不知道是原文作者寫的不好,還是翻的不好,都是認為自已的程度差看不懂,所以就會特別找台灣人寫的電腦參考書,不過台灣人自已寫的大都是入門書較多。要找到好的進階電腦書,那可是逛遍整個天龍書局也沒有幾本的時代。

"YOU CAN CODE. THAT IS PRETTY DAMN COOL."    (原文連結)
真酷, 你會寫程式

I've been off-line a lot lately, doing physical therapy for my knee and traveling a bit. That means I have a lot of fun reading to catch up on! One page that made the rounds recently is Advice From An Old Programmer, from Zed Shaw's intro book, Learn Python The Hard Way. Shaw has always been a thoughtful developer and an entertaining writer with a unique take on programming. Now he has put his money where his mouth is with a book that aims to teach programming in a style he thinks most effective for learners.

I look forward to digging into the book soon, but for now his advice page has piqued a lot of interest. For example:

Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession.

As a matter of personal opinion, I disagree with the first sentence, and could never make the switch discussed in the second. But I do think that the idea of programming as a secret weapon in other professions has a lot to offer people who would never want to be computer scientists or full-time software developers. It's a powerful tool that frees you from wishing you have a programmer around. It changes how you can think about problems in your discipline and lets you ask new questions.

Finally, Shaw tells his readers not too worry when non-programmers treat them badly because they are now nerds who can program. He gives good reasons why you shouldn't care about such taunts, and then sums it up in a Zed Shaw-like killer closing line:

You can code. They cannot. That is pretty damn cool.

Amen.

我最近大多時間不在線上,因為去作了膝蓋物理治療還小小的出外旅行了一下,這也代表有不少有趣的待讀資料要趕進度。 其中的一項是 Zed Shaw 寫的入門書 Learn Python the hard way. 當中的一篇 "Advice From An Old Programmer" (老程式設計師的忠告) Shaw 不僅是一位有思想的開發人員,他也是個在程式語言方面有獨特見解的有趣作家。現在他展現了實際行動在這本書裡,書裡提供一種他覺得最有效的學習方式給學習程式語言的人。

我迫不及待的想更深入此書了,但他的提示頁卻激起了我更多的興趣。就好像:

寫程式這職業就像是一般的工作,雖然這是個不錯的工作, 但開個速食連鎖店你也可以獲得相同收入而你也更加愉快,所以這時候你最好不要把會寫程式這件事當作自已的秘密武器了。

依我個人之見,上面這段話真的無法令人同意,所以我也不再接著討論下去這篇文章的內容。如果一個人從沒想過要成為電腦專家或是全職的軟體開發人員,我認為可以把會寫程式這個專長視為一項祕密武器。而這個強而有力的祕密武器可以把你從 "希望身邊有個程式設計師"  的困境當中解脫出來,也改變你在熟悉的領域去思考問題的方式,並讓你舉出些不同面向的新問題。

最後,Shaw 告訴他的讀者們別担心那些  "非程式設計師" 們的惡劣態度,因為他們正面對的可是會寫程式的人。在這篇文章中 Shaw 提供一些好理由讓程式設計師不去理會他人的嘲弄,最後他總結了一句 Zed Shaw 風格的殺手結論:

你會寫程式,而他們不會。最酷的就是這個了。

阿門

READ MORE

HP LaserJet 1010 無法列印 – Windows 7

Posted by Eric... On 2011年6月20日 星期一 0 意見

起因:
話說 HP 的雷射印表機的此領域一直有耐操又好用的口
碑,家裡這台 HP LaserJet 1010 是當初寫論文時為了印大量的 paper 時買進的,年份已經超過 5 年了,不過外表現在看來還是很新,而且去年10月才去買個新的碳粉匣。其實我早就知道這台和 Windows7 的驅動程式不相容,前一陣子也在網路上試著找看有無解法,但是殘念,都沒有找到正確的解決方式。直到昨天又打算印一份資料,又印不出來時在網路上再找一下解法,如果再找不到就頭痛了。

你說解法有嗎? 有,就是不要安裝笨 Windows7 告訴你的 HP LaserJet 1010,改用 1050。步驟請見下圖說明。

Status: Case closed.

步驟一、新增印表機

步驟二、選擇連接埠: DOT4_001,就是 USB 啦

步驟三、左邊的製造商選 HP,右邊的印表機型號選擇:HP LaserJet 1050HB

image

image

READ MORE