7 月 5 2013
Subversion 1.8
Subversion 1.8 又更改 client 端的 metadata 結構了… orz
差異就是… 原本獨立用純文字檔紀錄的 format 跟 entries 被整併到 wc.db 了。
( 而 wc.db 是 SQLite 的資料庫檔 )
PS. 我在用的 NetBeans 7.3.1 尚未支援新結構,所以出來唉唉叫一下… (死
7 月 5 2013
Subversion 1.8 又更改 client 端的 metadata 結構了… orz
差異就是… 原本獨立用純文字檔紀錄的 format 跟 entries 被整併到 wc.db 了。
( 而 wc.db 是 SQLite 的資料庫檔 )
PS. 我在用的 NetBeans 7.3.1 尚未支援新結構,所以出來唉唉叫一下… (死
1 月 10 2013
今天在公司處理某支程式時,發現使用 PHP 的 foreach() 可能會踩到這個陷阱(或許算是 bug ?! )。
以下這段範例程式,結果是正確的。
<?php $arr = array(); array_push( $arr , 1 ); array_push( $arr , 2 ); array_push( $arr , 3 ); $arr['a'] = 'A'; $arr['b'] = 'B'; $arr['c'] = 'C'; foreach ( $arr as $k => $v ) { echo "$k => $v" . PHP_EOL; } ?>
結果:
0 => 1 1 => 2 2 => 3 a => A b => B c => C
但下面這段範例程式的結果就很妙了…
<?php $arr = array(); array_push( $arr , 1 ); array_push( $arr , 2 ); array_push( $arr , 3 ); $arr['a'] = 'A'; $arr['b'] = 'B'; $arr['c'] = 'C'; foreach ( $arr as $k => $v ) { if ( $k == 'b' ) { echo "$k => $v" . PHP_EOL; } if ( $k === 'b' ) { echo "$k ==> $v" . PHP_EOL; } } ?>
結果:
0 => 1 b => B b ==> B
12 月 25 2012
為了給使用者更多的提示,讓使用者順利完成表單,我們會在 web 表單的 text 欄位使用如下的語法:
<input type="text" value="Search keyword(s)" name="s" id="s" onfocus="if (this.value == 'Search keyword(s)') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search keyword(s)';}" />
在 Ext JS ,則是透過 Ext.form.field.Text 的 emptyText 來實作此一效果:
Ext.create('Ext.form.field.Text', { id: 's' , name: 's' , emptyText: 'Search keyword(s)' });
Ext JS 已經開始使用 HTML5 的語法,所以在部份瀏覽器上, Ext JS 改用 input 的 placeholder 屬性來實作;根據說明,該屬性應有相同效果,與 onfocus、onblur 作連動。
但在 Ext JS 4.1.0,已經設定 emptyText 的 Ext.form.field.Text 元件卻不會在滑鼠點選後清空文字。
目前的解法是讓 Ext JS 捨棄 placeholder 的實作;方法如下:
Ext.onReady( function() { Ext.supports.Placeholder = false; .... });
12 月 14 2012
從官方的 Blog 文章跟影片看來,主要是支援了多媒體的大量/批次上傳。
若從 3.4.2 升級到 3.5 的話,以下這些檔案可以刪除…
More
3 月 13 2012
我在 FreeBSD 用 ports 安裝 databases/mysql41-server 、 databases/mysql50-server 時,會放這些 configuration parameters:
(databases/mysql51-server 會多放個 WITH_FAST_MUTEXES)
之前要安裝 databases/mysql55-server 時發現…
databases/mysql55-server 只剩下 WITHOUT_OPENSSL 與 WITH_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)
ARCHIVE、BLACKHOLE、EXAMPLE 跟 FEDERATED 這四個 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';
3 月 7 2012
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 排序,無優劣之分):
3 月 2 2012
我曾試著在 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 看來:
2 月 7 2012
這幾天在整理工作用的 laptop 與自己家用的 laptop,順手更新了 Eclipse。
這兩台電腦我都裝了 JRE (Java Runtime Environment) 7 與 JDK (Java Developement Kit) 7,在家裡的網路環境,Eclipse 安裝/更新 plugins 都沒有問題;但在公司的網路環境,卻出現了如下的畫面:
原以為是 Proxy 設定有問題,跳到另外一條線路做直接連線存取,狀況依舊。
檢查了 Windows 7 的網路防火牆相關設定,也看不出個所以然。
最後,我在 Google 找了好一陣子,找到解法:
-vmargs
下面加入 -Djava.net.preferIPv4Stack=true
。改過之後的 eclipse.ini 會像這樣:
...略... openFile -vmargs -Djava.net.preferIPv4Stack=true -Dosgi.requiredJavaVersion=1.5 ...略...
12 月 29 2011
自從使用 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 上傳照片到我自己的網路相簿。
有需要的人可以試試。
8 月 5 2013
[Ubuntu] 安裝 & 設定 libapache2-mod-auth-mysql
這兩天試著在 Ubuntu server 玩 Apache HTTP authentication with MySQL backend 。
記一下幾個要注意的地方:
.htaccess 檔內容大概像這樣:
By Joe Horn • Linux 0 • Tags: Apache, htaccess, HTTP_AUTH, MySQL, Ubuntu