Joe Horn 的啟示錄
Joe Horn's Blog
  • LinkedIn
  • Facebook
  • Instagram
  • GitHub
  • Docker Hub
RSS
  • VPS Referrals
  • My Plurk
  • My Plurk Bot

3 月 2 2012

MySQL 的 max key length

我曾試著在 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 看來:

  • MySQL 5.0.95 的 MAX_KEY_LENGTH 依然是 1000 bytes。
  • MySQL 5.1.61 的 MAX_KEY_LENGTH 是 3072 bytes。
  • MySQL 5.5.20 的 MAX_KEY_LENGTH 是 3072 bytes。

By Joe Horn • Database 0 • Tags: MySQL

2 月 7 2012

Eclipse with JDK (Java Developement Kit) 7

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

原以為是 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
...略...

By Joe Horn • Computer Software 0 • Tags: Eclipse, JAVA, JDK

12 月 29 2011

在 Windows 7 連結 Apache HTTPD 的 WebDAV 軟體 – Cyberduck

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

我可以很容易地在 Windows XP 的網路芳鄰新增 Apache HTTPD 的 WebDAV 存取點,但在 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 上傳照片到我自己的網路相簿。
有需要的人可以試試。

By Joe Horn • Computer Software, Windows 1 • Tags: Apache, Cyberduck, WebDAV, Windows 7

10 月 28 2011

Subversion 1.7

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

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

首先,最大的差異是 metadata 的目錄與檔案結構變更(就是 .svn 目錄裡面的東西)。
下面這張圖是 Subversion 1.6.x 的 metadata 結構:
Subversion 1.6 metadata structure
下面這張則是 1.7 的:

而這兩個版本的 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 notes。 8-)

By Joe Horn • Programing 1 • Tags: Subversion, SVN, TortoiseSVN, upgrade

4 月 11 2011

有感

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

先說一下事情:

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

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

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

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

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

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

By Joe Horn • Life, Thoughts 0

12 月 18 2010

是可忍,孰不可忍?

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

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

附註:

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

By Joe Horn • Life 3 • Tags: itmaster, jackcal

11 月 19 2010

[PHP] BC Math 的妙用

最近用 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。

By Joe Horn • PHP 0 • Tags: JSON, MC Math, PHP

11 月 7 2010

當搭載 GPS 的相機遇上 Google Picasa

前一陣子入手了 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

By Joe Horn • Life 5 • Tags: Google Maps, Google Picasa, GPS, Panasonic, ZS7

10 月 29 2010

灰色顏料

從大學時期開始,因為外宿的關係,
我開始全權經手自己的生活起居。

由於每個月都是父母供應固定的生活費,
我脫離了以往「吃飯不知米價」的生活。

我不是生在富貴人家,所以我開始壓抑自己的慾望。

我發現…
我會習慣地… 壓抑自己的慾望與衝動。
我會理性地… 思考自己的需要與風險。
漸漸地,身為人類應有的感性,在我體內的含量愈來愈少…

於是,就如同事說的..
我的是非黑白太過分明。

我不知道… 這樣是好,還是壞?
我只知道… 過與不及,都不是好事。

誰能給我一些灰色顏料呢?
我覺得我很需要它。

By Joe Horn • Life, Thoughts 4 • Tags: Feeling

10 月 26 2010

時常轉寄信件,散播資訊的人請注意

這兩個月收到了兩封人家轉發(轉寄)訊息的信件,都是讓我不愉快的。 (怒)
既然不愉快,我也不覺得我應該客氣,直接來看看這兩封信吧(點圖放大)。

第一封:
FwdMail-Jovian

第二封:
FwdMail-Sophia

轉寄信件,協助傳遞訊息固然是好意。
但是… 直接把親朋好友的 E-mail 位址放在收件人,卻是(讓我認為)非常愚蠢的作法。

麻煩那些時常轉寄信件,散播資訊的人注意一下。
轉寄這類的信件,請把親朋好友的 E-mail 位址放在密件副本(Bcc)裡面吧。

PS. 如果我要把 E-mail 位址賣給廣告信件發送者,一個 E-mail 位址算兩塊錢的話,這兩封信件可以讓我的口袋增加個五百塊左右吧?! 8-)

By Joe Horn • Life, Mail 1 • Tags: Bcc, E-mail, Forward, Mail

«‹ 5 6 7 8›»

Site Info

All content on this Blog is licensed under CC BY-NC-SA 4.0

About Me

profile for Joe Horn at Stack Overflow, Q&A for professional and enthusiast programmers


My mail!

獅子座

Coffee Powered!

F1 fans

motoGP fans

Linkin Park

I am a Taiwanese!

Recent Comments

  • Avatar of johnpupu johnpupu: PHP 還有這個 phpsavant.c……
  • Avatar of Jerry Jerry: 这个不是foreach的问题。 0 ==……
  • Avatar of Joe Horn Joe Horn: 看來問題在 if ... else ..……
  • Avatar of jnlin jnlin: 因為 'b' 被轉型成 0 了…
  • Avatar of 路人 路人: 跟 foreach 沒有關係 ?…
  • Avatar of bill bill: 註冊表那裡要設定 BasicAuthLe……
  • Avatar of 虫 虫: .svn 的檔案減少可以增加在 wind……
  • Avatar of mars mars: 如果說寫程式是理性極致的話,那寫小說就是……
  • Avatar of Joe Horn Joe Horn: 已更新文章。…
  • Avatar of jackcal jackcal: joehorn.idv.tw關於轉貼 h……

Post Categories

  • About My Sites (16)
  • Computer Hardware (29)
  • Computer Software (45)
  • Database (23)
  • FreeBSD (21)
  • Funny (14)
  • Life (23)
  • Linux (5)
  • Mail (19)
  • Network (12)
  • Programing (40)
    • .NET (5)
    • JAVA (2)
    • Javascript (6)
    • PHP (29)
  • Thoughts (34)
  • Windows (13)
  • WWW (79)
    • phpBB (7)
    • WordPress (18)

Blogroll

  • 這裡沒有美食

Tags Cloud

AMD Apache benchmarking Bloglines Coppermine DNSBL eAccelerator fio Firefox free FreeBSD Gmail Google HDD Hsin-chu HTTPS IE Intel Javascript Lenovo Longhorn Microsoft MySQL Office Percona XtraBackup performance PHP phpBB pirate Postfix restaurant RSS security sendmail software SpamAssassin SSL Subversion Taiwan theme translation VPS Windows WordPress Yahoo

Ads

↑

© Joe Horn 的啟示錄 2025
Powered by WordPress • Themify WordPress Themes