2013年12月27日 星期五

[regular expression]RegExr: Free Online RegEx Testing Tool 線上正規表示式測試工具

所有程式語言幾乎都有提供正規表示式這個強大的字串比對語法,各程式語言之間的表示法也幾乎都一樣,但是大多數的工程師還是用的零零落落(包括我),直接寫進程式裡面測試又很麻煩,有的情況一跑就是要很長時間才確定對不對,就找到了一個線上即時測試的工具:

http://gskinner.com/RegExr/

原文介紹頁:
http://gskinner.com/blog/archives/2008/03/regexr_free_onl.html

使用上很簡單,直接把寫好的正規表示式貼在





2013年10月30日 星期三

[php]符合 RFC 規範的 Email 驗證程式

要驗證 Email 是否符合規格, 大部分是使用下面的簡單 Regular expression 來作驗證 (下面兩者 regex 是一樣的, 只是 php / rails 版的寫法而已)
  • preg_match('/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/', $email) // 正確: true, 錯誤: false
  • validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message => '格式錯誤'
使用上述的檢查後, 再加上 PHP 驗證 Email -檢查 DNS 的 MX 是否有通, 再來就該直接寄信去驗證了.

2013年10月22日 星期二

[php]命名空間(namespace)

為什麼我們需要命名空間?隨著你的PHP代碼庫的增長,對之前定義的函數和類名進行修改時風險也更高了,當你試圖增加第三方組件或插件時問題更嚴重,如果存在兩個或兩個以上的代碼集實現了一個“Database”和“User”類會怎麼樣?直到目前,唯一的解決辦法是使用長的類/函數名,例如Wordpress在每個類和函數名前都使用了前綴“WP_”, Zend Framework使用了極具描述性的命名約定,導致類名非常冗長,如:Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive命名衝突問題可以使用命名空間來解決,PHP常量、類和函數可以被組合到命名空間庫中。如何定義命名空間?

2013年10月18日 星期五

[mysql]SQL_CALC_FOUND_ROWS 使用

我們一般用COUNT() 或者mysql_num_rows() 來獲取查詢的行數;在MySQL4,5裡面,有SQL_CALC_FOUND_ROWS 可以在查詢的同時,計算行數:$query = "SELECT SQL_CALC_FOUND_ROWS * FROM title WHERE ID >1000 LIMIT 10;";$result = $db->query($query);$line = $db->fetch_row($db->query("SELECT FOUND_ROWS();"));print_r($line);此時,不用額外的查詢,即可得到SELECT count(id) FROM tabled WHERE id>1000;這樣子的結果了。不過,http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#limit-optimization 說:只要MySQL已經發送了需要的行數到客戶,它將放棄查詢,除非你正使用

2013年10月7日 星期一

[php]mysqli函式簡介

 mysqli 分為以下三個類別
   mysqli:負責控制與mysql的連線,執行SQL查詢,執行select後會得到查詢結果
          之mysql_result物件
   mysqli_result:內含select的查詢結果
   mysqli_stmt:用來定義執行參數化的SQL指令,需透過$mysqli->perpare建立mysql_stmt

2013年10月1日 星期二

[MySQL] VIEW簡介

MySQL資料庫的VIEW是可重組映射的表格,
好處:
  1. 資料雙向自動映射, 不管在原始表格或VIEW中有資料改變, 兩邊同步異動.
  2. 可以從多個表格關聯選取產生一個VIEW.
  3. VIEW與表格一樣都會保持存在狀態, 除非被  DROP 掉.
  4. VIEW可以如同表格一樣INSERT, UPDATE, DELETE
  5. VIEW佔用硬碟空間比表格小.

2013年9月25日 星期三

[linux] sort,uniq,comm cat 排序相關命令



sort  命令解釋:
功能說明:將文字檔案內容加以排序。
sort -u [file]  =  sort [file] | uniq (去重)
參數說明
-b 忽略每行前面開始出的空格字元
-c 檢查檔是否已經按照順序排序
-d 排序時,處理英文字母、數位及空格字元外,忽略其他的字元
-f  排序時,將小寫字母視為大寫字母
-l  排序時,除了040176之間的ASCII字元外,忽略其他的字元

[PHP] VC9/VC6 TS/NTS差異



PHPVC9 x86 Non Thread SafeVC9 x86 Thread SafeVC6 x86 Non Thread SafeVC6 x86 Thread Safe等等。

  VC9是用legacy VS 2008編譯的,VC6是用legacy VS6編譯的。

  如果你是在windows下使用IIS+PHP的話,你需要下載VC9的版本。
 
如果你是在windows下使用Apache+PHP的話,你需要下載VC6的版本。

  Non Thread Safe是指非線程安全,Thread Safe則是指線程安全。

2013年9月10日 星期二

[PHP]儲存html原始碼進Mysql

在需要將html原始碼存進資料庫時,會因為許多的標籤或是其他符號而發生錯誤
這時需要用到mysql_real_escape_string($string)這個函數,
http://tw2.php.net/manual/en/function.mysql-real-escape-string.php
即可以順利存入。

但是這個函數最常被使用的情況是防止網站被SQL injection,基於會幫你檢查分號之類的功用可以做很好的防範。
 

[轉載]九個電子商務公司必須監測的數據

電子商務要成功,數據化行銷跟轉換公式的了解是必要的,但是有哪些數據是必須要知道,而且要納入監測以便達成電子商務的成功呢?Mashable採訪了多位成功的電子商務專家,他們分別提出了幾個觀點,供所有電子商務的經營者參考:

1. 用戶獲取成本(User Acquisition Costs)

如果你身處在電子商務的世界,但你對有多少訪客造訪你的到達頁、其上訪客轉化為實際消費的消費者的成本及毛利率*,你可能在這個行業待不久。SEO 或許是獲取你客戶的手法之一,但是有時候你必須花上一些錢去達到這個目標,所以了解其中的轉化率絕對是必要的。
如果你已經經營一段時間,開始有了一些回訪 客的時候,回訪率的監測也是必要的事情。在電子商務領域有句名言:"If you can’t measure it, you can’t control it."
Joseph RicardTunebash Inc
(*編按:「毛利率」原文為the profit you make in sales,但根據經驗及原文原意,這邊的利潤就可以等於毛利率)

2013年8月29日 星期四

[PHP]讀取資料夾檔案內容glob,scandir,readdir


PHP讀取資料夾相關的函數有三個glob,scandir,readdir,方便性的排序個人認為是glob > scandir > readdir,以下為介紹:

glob() 函數返回匹配指定模式的檔案名或目錄。


2013年8月28日 星期三

[PHP]判斷檔案或路徑是否存在 file_exists()

有時寫好的程式會因為使用者輸入錯誤的檔案或路徑而無法順利執行,這時就會需要先進行檢查,file_exists()可以檢查目錄或檔案是否存在,並回傳ture or false


2013年8月27日 星期二

[PHP] CLI的使用

php可以達到在UNIX系統中那樣使用命令行來達成script的功能嗎?
答案是可以的!

這是官網的詳細說明 http://www.php.net/manual/en/features.commandline.php

簡單來說,需要用到這三個指令
STDIN(標準輸入)、STDOUT(標準輸出)及STDERR(標準錯誤輸出)

2013年8月22日 星期四

[c/c++] strcat,strcmp,strcpy

strcat
char * strcat ( char * destination, const char * source );

輸入兩個字串,將第二個字串連接在第一個字串之後,輸出第一個字串。

[c/c++]argc與argv函數

現在工作要把mmseg轉換成php格式,所以去看了mmseg的原始碼,mmseg是使用C語言撰寫,裡面有用到了argc參數,就順便紀錄一下這兩個參數意義,

argc:命令行輸入參數的個數(傳回數字)
argv[ ]:代表所有命令行參數

例如: MMSEG.EXE ./test/test.TXT ./DEMO.TXT ./lexicon/ complex quiet

這個指令的argc就是 6,
argv[0]是MMSEG.EXE
argv[1]是./test/test.TXT
argv[2]是./DEMO.TXT
argv[3]是./lexicon/
argv[4]是complex
argv[5]是quiet

以上。

2013年8月20日 星期二

MMSEG中文分詞程式

MMSEG是一種基於最大匹配演算法的程式,詳細的資料MMSEG官網已經有詳細資料與範例,這邊不再贅述,只是把一些重點跟摘要列出供快速了解與複習使用:

這個程式包含了以下三個部分:
1. 一個詞庫
2. 兩種匹配演算法
3. 四種歧意消解規則
以及以chunk為中心思想的做法

其中,兩種演算法分別是:

Google Analytics初學者入門簡介