Mar 13

我在 FreeBSD 用 ports 安裝 databases/mysql41-serverdatabases/mysql50-server 時,會放這些 configuration parameters:

  • WITH_CHARSET=big5
  • WITH_XCHARSET=all
  • BUILD_OPTIMIZED

databases/mysql51-server 會多放個 WITH_FAST_MUTEXES

之前要安裝 databases/mysql55-server 時發現...
databases/mysql55-server 只剩下 WITHOUT_OPENSSLWITH_FASTMTX 這兩個 configuration parameters 可以用,而預設的 WITH_EXTRA_CHARSETS(文章前頭提到的 WITH_XCHARSET)就是 all;以往使用的 WITH_CHARSET=big5 必須從 my.cnf 作設定(這也的確是比較好的作法);BUILD_OPTIMIZED 則是不需要了(也不支援?)。

另外,databases/mysql55-server 預設只有這些 storage engines

mysql> SHOW ENGINES;
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM             | DEFAULT | MyISAM storage engine                                      | NO           | NO   | NO         |
| InnoDB             | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
6 rows in set (0.00 sec)

ARCHIVEBLACKHOLEEXAMPLEFEDERATED 這四個 storage engines 可以透過 INSTALL PLUGIN 的方式進行安裝,例:

mysql> INSTALL PLUGIN archive SONAME 'ha_archive.so';
mysql> INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
mysql> INSTALL PLUGIN example SONAME 'ha_example.so';
mysql> INSTALL PLUGIN federated SONAME 'ha_federated.so';

Technorati Tags: , ,

(Visited 326 times)
Mar 07

roga 在幾天前說 topDN.net 提供免費/付費的 domain name hosting 服務

實際上,在台灣的 domain name registrar 幾乎都提供類似的服務,但公開讓大家使用的 slave name server 服務倒是還沒在台灣出現(印象中是這樣,至少我還沒看過)。

絕大多數的 internet services 都應該佈署 secondary/slave server,像 DNS、E-Mail、WWW。
而且,secondary/slave server 應與 primary/master server 使用不同的網路(ISP),把機器放在不同的地點。

Anyway,有需要 slave name server 服務的人,可以參考這些網站(依照 domain 排序,無優劣之分):

Technorati Tags: , ,

(Visited 1198 times)
Mar 02

我曾試著在 MYISAM 格式的 table 裡,把兩個 VARCHAR(255),UTF8 編碼的欄位設定成一組 UNIQUE KEY。
當時遇到這個 Error:

#1071 - Specified key was too long; max key length is 1000 bytes

VARCHAR(255) 代表該欄位可以紀錄 255 個字元,每個字元以 UTF8 encoded 儲存,一個欄位可以佔用 765 bytes,所以兩個欄位總和超過 1000 bytes,無法設為一組 UNIQUE KEY。

前陣子,我把 MySQL 從 5.1 系列升版到 5.5 系列。
在 5.1(含)之前,MySQL 使用 3 個 bytes 紀錄 UTF8 encoded data。
開發團隊在 MySQL 5.5.3 加入了 utf8mb4 編碼,用 4 個 bytes 紀錄 UTF8 encoded data,支援更多的文字。

utf8mb4 讓我聯想到 max key length 的問題,所以進行了一些小測試,並追了一下 source code。
從目前的最新版本的 source code 看來:

Technorati Tags:

(Visited 1137 times)
Feb 07

這幾天在整理工作用的 laptop 與自己家用的 laptop,順手更新了 Eclipse
這兩台電腦我都裝了 JRE (Java Runtime Environment) 7 與 JDK (Java Developement Kit) 7,在家裡的網路環境,Eclipse 安裝/更新 plugins 都沒有問題;但在公司的網路環境,卻出現了如下的畫面:
Eclipse problem with JDK7

原以為是 Proxy 設定有問題,跳到另外一條線路做直接連線存取,狀況依舊。
檢查了 Windows 7 的網路防火牆相關設定,也看不出個所以然。
最後,我在 Google 找了好一陣子,找到解法:

  1. 用文字編輯器打開 Eclipse 資料夾裡面的 eclipse.ini 。
  2. -vmargs 下面加入 -Djava.net.preferIPv4Stack=true

改過之後的 eclipse.ini 會像這樣:

...略...
openFile
-vmargs
-Djava.net.preferIPv4Stack=true
-Dosgi.requiredJavaVersion=1.5
...略...

Technorati Tags: , ,

(Visited 1456 times)
Dec 29

自從使用 Gallery 架設自己的網路相簿後,我很喜歡透過 WebDAV 上傳圖片檔案。

我可以很容易地在 Windows XP 的網路芳鄰新增 Apache HTTPDWebDAV 存取點,但在 Windows 7 下,我卻一直找不到解法。

我試過這篇網路文章的解決方案:

開啟 regedit,在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 機碼下把 BasicAuthLevel 改為 2,並重新開機。

也安裝了 Microsoft 提供的 Software Update for Web Folders (Web 資料夾的軟體更新;KB907306)
但問題依然沒有解決。

目前... 我暫時放棄找尋 Windows 7 native WebDAV client 的 solution,改用 Cyberduck 上傳照片到我自己的網路相簿。
有需要的人可以試試。

Technorati Tags: , , ,

(Visited 1459 times)
Oct 28

好一陣子沒寫 Blog 文章了... :oops:
剛好最近在 Subversion 遇到了些問題,就拿這話題來寫一下。
不可否認,GitMercurial 這類 DVCS 很棒,但我工作的環境一直用的是 Subversion,所以,我還是丟不下它。 :-P

從 server 端看,Subversion 1.6 -> 1.7 可以說是無痛移轉;但從 client 端看,影響不可謂不大。

首先,最大的差異是 metadata 的目錄與檔案結構變更(就是 .svn 目錄裡面的東西)。
下面這張圖是 Subversion 1.6.x 的 metadata 結構:
Subversion 1.6 metadata structure
下面這張則是 1.7 的:
Subversion 1.6 metadata structure
而這兩個版本的 working copy 無法相容。
舉例來說,當 TortoiseSVN 1.7.x 遇到原本使用 TortoiseSVN 1.6.x 維護的 working copy,軟體會要求 user 做轉換/升級;而 TortoiseSVN 1.6.x 無法解析轉換/升級後的 working copy。
(在 *NIX 系統裡,轉換/升級的指令是 svn upgrade )
另外,在 1.7 以前的結構,若是 working copy 存在著子目錄,每個子目錄下都會被放置 metadata(都會有 .svn 目錄);轉換/升級(至 1.7 )之後,metadata 只會被存放在 working copy 的根目錄下。
根據 release notes 的說法,這種儲存方式佔用的磁碟空間會比較小。但就我看來,只有在 working copy 的容量大到一定程度時,這種儲存方式才會佔用比較小的儲存容量,反之則否。另一方面,我沒有進行測試,但我相信對 client 而言(尤其是 Windows-based client),這種儲存方式會提昇 working copy 的存取速度。

其次,client 端多了個 svnrdump 可以用。
以往我們只能在 server 端作的 svnadmin dump 與 svnadmin load,如今在 working copy 也可以做 svnrdump dump 與 svnrdump load 。

除了這兩個(我覺得)比較大的變動,其他如 svn patch、svn relocate 等等的指令,也被引入了。
有興趣的可以看看 release notes8-)

Technorati Tags: , , ,

(Visited 3185 times)
Apr 11

這幾年,經歷、耳聞了一些事,觀察周遭的人,感觸良多。

先說一下事情:

  1. 我弟弟攻讀碩士,即將畢業時,跟我說他們班上一個女性同學,在即將口試前,得到台北的一份工作 offer,也答應畢業後就要任職。那份工作的 title 是行政助理,月薪 29k。
  2. 我的一個研究所同學,原本在資訊業。不到一年前,跳到旅館業,擔任 door keeper。看似工作很開心,但卻對薪資不滿意。
  3. 另一個研究所同學,在聚餐時說他不喜歡寫程式。但是他又期望能在他們部門,早日取得主管的頭銜。
  4. 女性友人與我談論她的感情,問些看法、想法,甚至是對身邊的男生頗有微詞。

針對 1 ,當時,我與我弟討論到的是...
那間公司、甚至那個產業,會不會認定某某學校的碩士,薪資水準就只是落在那個範圍?
雖然是「職業不分貴賤」、「行行出狀元」,但擔任行政助理這回事,讓我覺得攻讀碩士的成本(學費、時間)是白花了。
早點投入職場,獲得的成就會更多。

再加上第 2 件事來看...
我相信有許多人在選擇大學科系,決定是否要攻讀碩、博士之前,根本沒先想清楚自己想要從事什麼行業,真正有興趣的是什麼。
我認為... 這種懵懂無知是很嚴重的錯誤。
我相信... 若對自己從事的工作內容感興趣,那份源於自身的熱情會昇華成熱忱,帶出責任感,並提昇自己的抗壓性;久而久之,在職場上獲得的成就也應該會比較高。
相反地,若因為覺得工作內容乏味,一味的抱怨,覺得容易疲累,甚至是推諉、逃避,只會降低主管、同事對自己的信賴程度。
這兩種情況,像是滾雪球,也像是社會經濟的 M 型化一樣:富者恆富,窮者恆窮。

第 3 點跟 1、2 很類似,也是沒想清楚自己要的是什麼。
但第 3 點所提到那位同學忽略了一些事。
資訊的世界,不是 TRUE ,就是 FALSE,只有 0 與 1;擔任主管,就要處理人的問題,人的世界存在許多灰色地帶,沒有絕對的是非黑白。
擔任基層員工,你只需要對主管負責,你的競爭者只是同部門的同事;擔任企業經營者,你要對員工、股東負責,競爭者有一大票,還包含現有的與未來的新進。

綜觀以上 3 點,加上第 4 點,就是這篇文章的總結:

  • 人貴知足,知足才能常樂、惜福。
  • 作決定前,多作觀察,多作思考,並不是所有的路都可以讓人走錯再回頭;即使能回頭,也是浪費了自己的時間,自己的本錢。
  • 抱怨無法解決問題,解鈴還須繫鈴人。
  • 身邊的人、未來的路,都是自己選的,人要勇於承擔責任、承受現在與未來的狀況;各人造業各人擔。
  • 人在作,天在看,別人也在看。

(Visited 5102 times)
Dec 18

幾天前,有個熱心的網友寄信通知我,說我在 2005 年貼的 解決檔案無法刪除的軟體 - Unlocker ,圖片跟部份文章內容被盜用。
該頁面看,還真不知道該怎麼說...

我寄信通知對方,請對方處理...
對方有回信,不過我對他目前提出來的作法不甚滿意...

附註:

  1. 有人有興趣的話,可以拿去比照 盜圖者,剛剛賠了我十一萬 的方式處理,獲益歸他。 XD
  2. 話說,我還發現了這串有趣的資訊。盜圖、文者似乎是新竹某公司的人?
    Domain Name: itmaster.tw
    
       Contact:
          jackcal
          jackcal@e-tobe.com
    
       Record expires on 2011-07-18 (YYYY-MM-DD)
       Record created on 2008-07-18 (YYYY-MM-DD)
    
    Registration Service Provider: TISNET

Technorati Tags: ,

(Visited 7454 times)
Nov 19

最近用 PHP 開發某個 service 介面,來貼個心得。

這個 service 介面允許呼叫者使用 HTTP POST 欄位與 JSON 兩種方式傳進變數,處理儲存在 MySQL 資料庫裡面的資料,並以 JSON 作為輸出資料的格式。

為了避免被鑽漏洞,以及排除錯誤的資料,這個系統必須檢查每一個傳進來的參數是否正確。
但某些資料表的 ROW_ID 是 unsigned BIGINT,我必須另外考慮 32-bit 與 64-bit 平台的差異。

因為 PHP 的 intval 有這段說明:

The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.

所以,PHP 的 intval 是不能用的。

於是,我就動起了 BC Math 的歪腦筋。
由於 SQL statement 是字串,我不需要顧慮變數型態,可以直接把原本檢查 ROW_ID 的這段 code:

$Id = intval( $Input['id'] );
if ( empty($Id) ) {
	// Output error message
	exit();
}

改成這樣:

$Id = bcadd( "{$Input['id']}", "0" );
if ( empty($Id) ) {
	// Output error message
	exit();
}

PS 1. 傳入負值不用管,因為 ROW_ID 已經 unsigned 了,不會有影響。
PS 2. ROW_ID 的輸出也可以不用管,因為 query 出來的資料型態都是 string。

Technorati Tags: , ,

(Visited 9472 times)
Nov 07

前一陣子入手了 Panasonic ZS7,一直到昨天出遊,拍了不少照片,才真正體驗搭載 GPS 的旅遊相機的好處。

如下面這些螢幕擷圖,Google Picasa 完美地整合了 Google Maps,在右邊的區塊中標示出拍照的地點。

若是選擇了相片的資料夾,則會把所有的地圖標記都顯示出來:
Picasa + Panasonic ZS7 GPS-1

新社蓮園:
Picasa + Panasonic ZS7 GPS-2

新社花海:
Picasa + Panasonic ZS7 GPS-3

惠來谷關溫泉會館:
Picasa + Panasonic ZS7 GPS-4

台中茹絲葵:
Picasa + Panasonic ZS7 GPS-5

Technorati Tags: , , , ,

(Visited 7615 times)