migrate4j

migrate4j 是一套類似rails 的migrate的lib。

不過定義一個 migration 要這樣

package db.migrations;

import static com.eroi.migrate.Define.*;
import static com.eroi.migrate.Define.DataTypes.*;
import static com.eroi.migrate.Execute.*;
import com.eroi.migrate.Migration;

public class Migration_1 implements Migration {

public void up() {
createTable(
table("simple_table",
column("id", INTEGER, primarykey(), notnull()),
column("desc", VARCHAR, length(50), defaultValue("NA"))));
}

public void down() {
dropTable("simple_table");
}
}

然後編譯:
javac -classpath migrate4j.jar db/migrations/Migration_1.java
執行:
java -cp .:mysql.jar:migrate4j.jar:lib/commons-logging.jar com.eroi.migrate.Engine

…..

ext 的授權

最近這件事好像鬧的蠻大的 @@

簡單的說,就是ext原本的授權很奇怪。說是open source 的授權(LGPL),但是卻不允許使用者分枝出去(它是以yui的分枝起家)或是合在其他framework中(授權頁面庫存檔)。

John resig 說得很狠:

ExtJS is a giant licensing fail pile masquerading as an open source project in a thinly-veiled attempt to force more people to buy their corporate licenses. Unless you’re willing to shell out the big money, stay far – far – away.

http://www.juixe.com/techknow/index.php/2008/04/27/how-to-kill-a-community/ 這篇收集了很多相關的文章。

不過事情應該平息下來吧,現在去看授權頁面,已經改成GPL 3.0 了,也拿掉之前的限制了。

dipity 製作timeline 的好工具

dipity 是一個用網頁來製作timeline 的好工具,畫面相當漂亮,提供多種呈現方式。

* 可以import rss (或是其他web 服務 ex:flickr,youtube,)

* 可以多人一同編輯

*也可以embed 到自己的部落格上。

這邊是我把我部落格的feed 輸入到 timeline中的結果。

範例(點入看大圖):

我想這在整理一些研究上會很有幫助。舉例來說 我們可以整理出一個ubi-comq 或是locative media 的timeline,讓訪客可以有條理的研究瞭解某些東西。當然,拿來做某個東西的大事紀 也是相當不錯。

jquery.ui 中sortable list 的定位問題

最近在做的ui遇到了這個問題。ui 大概長這樣:

使用者可以從左邊把element 拖曳到右邊的某個故事盒內。然後故事盒內的物件還可以透過拖曳重定順序。這個東西用了到jqury.ui 的sortable 功能。  故事盒的外層還用了一個div 包起來(overflow=scroll),來達到捲軸的效果。

不過後來發現,右邊的sortable list 在ie中(6,7) 會相對定位!! 也就是說當捲軸往下拉的時候,這些element 就跟著往下移動(畫面上看起來就像是固定在某個位置…) =.=  這怎麼會對呢? 後來trace 程式碼 發現在 ui.sortable.js(rev.5143)  中的第73行左右有一行長這樣:

if(!(/(relative|absolute|fixed)/).test(this.element.css('position'))) this.element.css('position', 'relative')

一般來說預設值是static(參考資料),所以嘛,你可以選擇註解掉,或是加上static 的判斷( 這樣跟註解掉有何不同XD)

這問題大概出在ie 跟 firefox/safari 對於position=relative這東東的解讀不同吧!

wii remote hack

這一陣子 組織裡面希望把原有的大尺寸螢幕(簡報用),改成觸控式螢幕。不過因為不想破壞外觀,所以只好請廠商弄個特製的規格。

不過後來我看到Carnegie Mellon University 的 johnny lee (TED 個人網站)使用 wii remote 來實做類似的功能(還很準)。 酷阿!!

這樣做省下很多錢 😛 而且感覺很高科技呢!!!

羅生門、河童

自從沒有讀書館可以用之後,就好久沒看閒書了阿!! 每次經過樓下某辦公室,總是會看到前輩的桌上放著當今熱賣的小說阿!!! 每次都好想借,可是實在太不熟了…orz

這次跟藉著跟計畫認識的朋友借了這本:羅生門、河童。 我對芥川龍之介的印象其實只有羅生門(電影)而已,不過看了原著才知道原來電影跟原著差異很大(只是借用名字跟一些設定)。這本是一本選集,大多是短篇。

這裡面我最喜歡鼻子跟河童這兩篇。 我覺得鼻子最諷刺的是,理應看破塵世、皮相的和尚,卻還是沒法不注意他人的看法/眼光。甚至困於舊有的自己(習之中人甚矣哉!!!)。 河童就更諷刺了,一個精神病患所描述出來的故事卻是如此的富涵人生哲理,整個故事描述起來也相當合理(河童甚至比人類先進的樣子)。問題就出在他是一般人眼中的精神病患阿!! 那到底何者為真呢?

[drupal] insert view and Viewfield

insert view  和 viewfield 是drupal 中兩個可以把別的view 插入到當前node 的模組。不過insert view 有點問題,他會自己cache 一份 render 後的結果,這會導致當view 裡頭的node 更新後,他會很慢很慢才更新(學弟改了node的資料後,半小時後還沒更新o_O!!!)。

這應該算是地雷 😛  所以有類似需求的話,可以改用 viewfield,他一樣可以提供類似的功能,不過這樣就只能插入一個view了。

關閉 使用網路尋找程式

source : Skip the Annoying “Use the Web service to find the correct program" Dialog 

有時候我們在打開一些尚未建立連結關係的檔案時,xp 會問你是否要從網路上搜尋適合的應用程式(有人有用過這個功能嗎 ? o_O!!!)。 我自己是每次都從清單裡找啦,不過每次這樣跳出來挺擾人的,還要多點兩下才能到自己要的那個地方。 所以這篇文章教我們怎麼把它關掉。

  1. 開始-> 執行->regedit
  2. 到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
  3. 新增一個 DWORD值=>noInternetOpenWith
  4. 更改數值為1
  5. 完成!!

這樣他就不會再煩你了