2008年9月1日 星期一

多目標沒進度系統

九月一日。

我在研究xoops討論區系統的模組newbb架構。這之前在幹嘛?

##CONTINUE##
我在弄Protege系統、借了幾本RDF的書擺著沒看,我在Follow GWT的功能、原本要思考的10%網站功能沒弄。為甚麼到現在都停住?然後又好像沒做成什麼事?有人說:「跟什麼老闆影響很大!』我想:「我們都需要自我調適,當你遇到Shit~」

一個無遠慮的人領著你,可別再像著傻子一樣只被動得被牽著鼻子走!特別是今年你有個10%呢!自己的藍表可是要自己填呀!

Keep Alert!

2008年7月25日 星期五

GWT Compile的相關參數

以下的參數都是加在Elipse要Run你GWT程式的時候的設定(Run Configuration..)


##CONTINUE##
-noserver
用來停用預設會啟動的Tomcat server,通常若你的server是J2EE的話這會滿好用的,但若非J2EE平台這邊我們在Hosted Mode測試的時候就會把這個參數加上去。所以不加的話,Tomcat server是會啟動的喔!

-whitelist "list"
在測試階段(也就是Hosted Mode),虛擬的這個Web server是不給任何程式連上外部URL的,若要使用這個外連的功能,就必須在這邊加上所謂的「白名單」,而且是用regular expression的方式來寫喔!如果要讓你的程式能連上www.google.com.tw寫法如下:

-whitelist " ^http[:][/][/]www[.]google[.]com[.]tw"
這樣當你的程式要連上www.google.com.tw,程式就不會出現警告視窗了!

-blacklist "list"

同樣的當然我們也可以設定「黑名單」!寫法也大同小異:

-blacklist " ^http[:][/][/]www[.]google[.]com[.]tw"
寫好之後執行程式如果你的程式要外連到這個網站,便會出現下面這個警告!


-logLevel ERROR
WARN
INFO
TRACE
DEBUG
SPAM
ALL

這是一個階層式的設定,下面的參數就包含上面的參數,所以設為DEBUG的話,就會包含上面從ERROR到TRACE的所有參數輸出結果!
-gen "location"
當你的GWT產生任何專案結果,都必須指定一個資料夾來存放
-out "location"
這也是指定資料夾存放compile結果,特別的是這是指定在Hosted Mode下使用的。
-style OBFUSCATED
PRETTY
DETAILED
這是指定compiler如何產出js code的!(也就是js的可讀性!)常常我們都會不自覺或是沒有安全感的想要知道,是否真的GWT Compiler產出的js會長什麼樣子,卻老是看到一些怪怪的程式碼,這邊設定一下就可以讓Compiler乖乖做出幾種設定囉!

OBFUSCATED:最小化js檔/幾乎不可讀
DETAILED:產生最多資訊的js檔
PRETTY:介於兩者之間

2008年7月23日 星期三

GWT三步驟

以下說明GWt在Eclipse下建立專案的三個大步驟
##CONTINUE##
  1. 建立Eclipse Project(輸出eclipse專案而且還幫你丟到指定"資料夾"裡)

  2. ProjectCreator [-ant projectName] [-eclipse projectName] [-out dir] [-overwrite]
    [-ignore] [-addToClassPath classPathEntry]

    projectCreator.cmd -eclipse TicTacToe -out TicTacToe


  3. 建立Application及相關.xml檔案等


  4. ApplicationCreator [-eclipse projectName] [-out dir] [-overwrite] [-ignore] [-addToClassPath classPathEntry] [-addModule module] className

    applicationCreator.cmd -eclipse TicTacToe -out TicTacToe com.robert.client.TicTacToe


  5. 設定JUnit Test

JUnitCreator -junit pathToJUnitJar -module moduleName [-eclipse projectName] [-out dir] [-overwrite] [-ignore] [-addToClassPath classPathEntry] className

junitCreator.cmd -junit d:\gwt\eclipse\plugins\org.junit_3.8.2.v20080602-1318\junit.jar -eclipse TicTacToe -module com.robert.client.TicTacToe -out TicTacToe com.robert.client.test.TicTacToeTest

完成這項指令之後,原本TicTacToe裡面的test資料夾下就會出現相對應的Test class,像下圖↓
##CONTINUE##

2008年7月18日 星期五

如何完整複製的GWT Project?

##CONTINUE##
(以下內容完全是在Eclipse環境下操作)

當然複製貼上是一定要會的~

  1. 複製Project
  2. 在Project Manager下對你要的Project複製、貼上,順便命名你想要的名稱。
  3. 更動Reference
  4. 將整個Project目錄下最後的那個檔案xxx.launch更換成跟Project名稱一樣。接著打開這個.launch檔案之後將原本複製Project的名稱都尋找/替代成新Project的名稱(應該會有三四處更改到~)。
  5. 改變Package名稱
  6. 打開/src/資料夾,將com.xxx.oldproject更名成com.xxx.newproject。(他會問你是否要一道更新所有的Reference及相關subpackages,OK按下去就對了~)
  7. 更新Package名稱的Reference
  8. 最後有三個檔案你要手動更改一下,其他的Eclipse都已經自動幫你弄好了~
    • index.htm裡的script tag
    • Module.gwt.xml裡的entry point tag
    • .launch裡倒數第三行


OK!完成!

GWT的安全性考量有哪些

##CONTINUE##
一般我們使用GWT考量的當然是它對各種瀏覽器的支援性,及減少開發者對不同規格js或DOM的相容性。但是說真的要應用還是不能不考量js對於各種HTML內部元素的操控本質,因此GWT團隊特別寫了一篇分析js一般攻擊的方式及GWT相對應的想法及作法。包括XSS(Cross Site Scripting)和XSRF(Cross Site Resourcr Forging)

因為我還未完全摸透GWT的所有功能,也就是說我跟js沒那熟,但是這篇文章還是得留著。我想之後接觸再接著看會比較能體會它真正的意義!

Security for GWT Applications

2008年7月14日 星期一

給程式開發者的一句很棒的話

##CONTINUE##
節錄自評述GWT的一篇文章

受訪者從事GWT開發一年餘,目前回過頭來看GWT他給了一些對GWT應該有的健康認知,姑且不論內容如何,他說到了一句讓我心有慼慼焉、不吐不快的話:

We really like GWT, but as a developer you can't just use a technology because you like it.

的確作為開發者,我們面對的是使用者,不能因為你喜歡哪種技術就偏頗它。但問題是,我們非外面業界的軟體產品廠商,我們在工研院裡開發軟體,我們所謂的使用者是誰?想像中的使用者是否存在呢?

雖然說我自己都不免會用自己比較熟悉的技術作為第一優先(常用熟悉的技術去理解沒學過的技術是否類似?),但也許專案不允許下,我們在合作中自然得選擇符合使用者利益的技術了!

2008年7月9日 星期三

最近搞了好久的protege api

##CONTINUE##
沒想到一個ontology還沒設計出來,就已經要被工具給搞到半死不活了…

protege是個很棒很強大的工具,提供許多原本我們都覺得不太可能存在的東西,也正因為如此到現在還沒真正把一個中文內容的owl檔,正確完整的放到db去過…

昨天在w3china 找到了一線曙光,原來使用它內建的匯入工具還可以設定一下編碼,高興了一會因為終於可以在db裡看到中文字了,傷心的是回到protege介面裡它轉存的pprj檔竟然變成亂碼了…這世界果然是公平的…沒有三兩三…多看些文件吧!但是我程式都寫兩三隻出來測試了…難道要我轉去用jena嗎?


想搞protege嗎?先看這些工具跟文件吧!

Protege OWL API的簡介

##CONTINUE##

1 Protégé-OWL API的簡單介紹

Protégé-OWL API是專門針對OWL和RDF(S)本體語言的開源Java類庫,Protégé-OWL API程序員指南[http://protege.stanford.edu/plugins/owl/api/guide.html]提供了主要類和方 法的使用,介紹如何使用Protégé-OWL API加載和保存OWL文件、查詢和操作OWL數據模型,以及執行基於描述邏輯的推理。當然,它也可以處理RDF(S )本體,與此對應的類主要有RDFSNamedClass、RDFProperty 和RDFIndividual等。

2 如何使用Protégé-OWL API

Protégé-OWL API是Protégé-OWL被綁定在Protégé的完整安裝(在安裝Protégé時選擇「Everything」)中。獲得Protégé- OWL API的Java文檔、源代碼和一些例子對學習Protégé-OWL API很有幫助。Protégé-OWL API的jar文檔被放置於Protégé安裝目錄下的edu.stanford.smi.protegex.owl包中。

下面以Eclipse為例,介紹使用Protégé-OWL API的使用。經過以上操作後,在Eclipse項目的Java構建路徑(Java Build Path)中將所有Jar文件添加為外部Jar文件(程序員指南中的話是「add all the JAR files from the installation to your project classpath」)。這裡選擇添加\\Protege_3.2_beta\plugins \edu.stanford.smi.protegex.owl目錄下面的所有Jar文件和\\Protege_3.2_beta\目錄下的所有Jar文 件。於是,就可以成功運行下面的例子了。

// OWLAPIDemoApplication.java源代碼

import edu.stanford.smi.protegex.owl.model.OWLModel;

import edu.stanford.smi.protegex.owl.model.OWLNamedClass;

import edu.stanford.smi.protegex.owl.ProtegeOWL;

public class OWLAPIDemoApplication {

public static void main(String[] args) {

OWLModel owlModel = ProtegeOWL.createJenaOWLModel();

owlModel.getNamespaceManager().setDefaultNamespace("http://hello.com#");

OWLNamedClass worldClass = owlModel.createOWLNamedClass("World");

System.out.println("Class URI: " + worldClass.getURI());

}

}

寫信給馬總統

##CONTINUE##
看到m01的路不平這文章之後,情不自禁跑去給馬總統留個言了~

台灣百姓最常使用的交通工具就是機車!大家也知道機車是必要之惡,就算他污染再大、交通問題再多,小老百姓沒有便利的大眾交通工具之前是沒有其他選擇的!各縣市政府將許多的預算花在道路的鋪設上,但究竟有多少是真正需要的呢?許多鋪了又挖、挖了又鋪的情形不斷發生,說是圖利廠商呢,又沒人能說個清楚…我們騎車的人不斷得面對坑坑洞洞的路面,得左閃右躲,說難聽點是騎車不規矩,但能平平靜靜騎車誰又不想呢?馬總統,我覺得整頓交通不一定要從開罰、減少交通事故開始,從最根本的把路面鋪平、把駕照考試確實做好(把用路人的觀念教對!)馬上就能減少很多不必要的事故發生了!要先治本阿!在此附上一個網站連結,內容是大致討論路面要如何鋪平的問題,也有許多新竹飆車族的抱怨,請您在公文之餘是否幫助我們老百姓們解決這些問題?謝謝!
http://www.mobile01.com/topicdetail.php?f=294&t=685806&p=1&cache=0


回應如下






2008年7月8日 星期二

[網路]iPod的輝煌歷史,再來一遍吧! @ 宅,與不宅之間--黃文彥 ::PIXNET

[網路]iPod的輝煌歷史,再來一遍吧! @ 宅,與不宅之間--黃文彥 ::PIXNET

funP 快看- [隨手]同學,你還玩4P嗎?

##CONTINUE##
funP 快看- [隨手]同學,你還玩4P嗎?

首先在黑板上寫下4個P,然後說:「來吧!談談我們要賣什麼?」經過一番論戰掙扎,也許決定好要賣「精品服飾」,理由也許是某人喜歡穿貴的衣服。

「OK,那接下來決定賣多少錢吧!」於是想說精品大概要賣個3000以上才行,就定個3500吧。

「接 著是地點。」「精品當然要在百貨公司阿」「百貨公司租金太貴,賣3500會虧!」「那提高售價,不然改在五分埔,比較便宜。」「在五分埔不可能賣3500 的啦!不然在百貨公司賣,價格調成4000。」「阿剛剛不是才說價格是3500!」「可是我們的東西真的能夠賣4000塊嗎(心虛)」「還是不要賣衣服好 了,改賣家電,這樣就能賣4000了」「我不喜歡賣家電。」

經 過一陣憤怒的對話,最後決定在百貨公司賣電子辭典,售價2800(?)。 「那來想怎麼促銷吧...(快沒力了)」「百貨公司一定要週年慶才好賣,打個8折吧!」「靠邀阿,才賺5%,打8折就虧本啦!」「那價格再調高一 點...」「不行阿,隔壁賣比我們便宜」、「那不然改在光華商場賣好了...」

於是就這樣子沒完沒了...。

2008年7月3日 星期四

光是想是找不到目標的,要拚命去飆車才會找到…



我們這些讀太多書的人就是這樣,想太多而沒去做,這怎麼可能會遇到問題,沒有遇到問題又怎麼會擁有解決問題的勇氣跟精神狀態呢?

藤原拓海:「光是想是找不到目標的,要拚命去飆車才會找到…」

我們一起努力吧!拓海!

2008年6月10日 星期二

好多首歌要練

##CONTINUE##
雖然我選了小情歌,但七月四號那天要表演一首簡單的歌…說真的要表演才覺得怎麼練都不覺得ok!要順要有感情就要先背起來,現在離完全背起來還很遠呀…看來簡單,from good to best還很遙遠…

寫一首簡單的歌 讓你的心情快樂 這一首簡單的歌 並沒有什麼獨特 好像我 那麼的平凡卻又深刻



另一首小情歌也是偏輕鬆、愉悅的個人情感表達,蘇打綠現在那麼紅應該就不需要什麼介紹了,雖然我也不熟,但他們的聲音跟較不商業化的路線,的確把音樂唱進了許多年輕人的心中!由此可見許多大牌歌手的經紀公司炒作不一定能成功,慢火細燉卻有實力的終究會得到回報!


這是一首簡單的小情歌 唱著人們心腸的曲折 我想我很快樂 當有你的溫熱 腳邊的空氣轉了







怎麼開頭都用「這是一手簡單的…」恩…在這紛亂的世界的確是需要這樣唱明白!

2008年6月8日 星期日

回家真有被救贖的感覺

##CONTINUE##
自從車禍手腳受傷之後,我想到家鄉推拿的那間認識的小診所,為了聯誼能夠走動,連續三個禮拜我都回嘉義治療,真的一次一次有差,就像那位幫我推拿的伯伯說的一樣,不知道這樣的後援部隊我們這些出外人要怎麼找到呢?

新竹,從來就是個工作優先的城市。可以不要命,不要生活,一心一意就為了那一大筆退休金,拿來?完成自己的夢想?那何不一開始就朝著夢想打拚?為了安全感?婚姻?是阿是阿!我們的取捨總是伴隨著許多壓力跟誘惑,也因此我們噤聲,在風聲呼呼的新竹每日工作生活中…

工作之後我們總是被打散成個體戶,找不到工作之外的援助,以前在家鄉常去找的同好、常去看病的醫院、常去玩的地方…都消失在故鄉的記憶中,工作的佔據更讓它們模糊、讓我們無力在工作地找到能複製的對象…

就我去治療的新竹中醫診所來說,為了健保?為了更多的客源,他們不在乎病患是否更快好、不在乎醫療品質,但說來能怪他們嗎?人來人往,來新竹讀書工作的人又會待多久?大家都是過客,大家都不會為這個風城付出什麼吧!這就是移民城市的宿命吧!

也許當地人覺得外來人搶了他們工作,享用消費他們的勞力、公共設施等,所以小吃食物不好吃?服務不好?是這樣嗎?商業社會之後,我們何曾把注意力從八卦爆點的身上轉移到自己的生活上嗎?

就像今天去腳底按摩的師父說的,各大速食裡用到的雞用生長激素四個禮拜內養大賣掉送到你嘴裡,他們在乎的降低成本,不是你吃得是否健康;飲料店在乎的獲利,就像食神電影裡說的:吸管要多細就多細(還是粗?)、冰塊能多大塊就多大塊!你覺得他們會在意你喝下去的那些冰冰涼涼東西對身體是不是負荷呢?這樣想來,那些開飲料店覺得很好賺的人…也或許他們不覺得自己小孩喝下那些東西有何不可吧…因為我們早已不會在意那些了…我們要的只是「獲利」!

最後還是得回應一下標題來個救贖…不然愧為男人…ㄆ…

大家都愛的女神志玲姊姊

2008年6月1日 星期日

聊電視才能溝通?

##CONTINUE##
電視節目永遠不怕沒人看,因為無聊人好多好多,想放空的人好多好多。

在有電視之前的人們,當他們對生活倦怠或是工作疲累想放空的時候,是怎麼處理這個慾望呢?

就像在手機出現之前,人們約定時間地點就是不見不散,現在隨時可以聯絡隨時可以更改,我們是否卻浪費了更多時間在改變上呢?手機真的縮短了我們溝通的距離嗎?

我們習慣了電視節目的偶像創造,我們是不是也失去了什麼?

2008年5月30日 星期五

抓圖的習慣

##CONTINUE##
身為一位宅男,會抓正妹圖是很正常的動作!這也是所以我學會用flashget等一拖拉庫奇怪批次下載網頁圖片的工具,難怪人家說有需求有動機才會進步!

從ie的時代得自己裝外掛來裝,現在的Fx提供許多神奇的工具,有些是大陸魔人寫的,有些是外國電腦怪咖寫的,從網頁一次撈出圖片連結,到讓你自己猜所有圖片連結的批次功能,都讓我覺得「就感心」耶!今天,我又不自覺手賤開了ahotgirl 想來看看美女,恩?奇怪!我從大學到現在看到正妹都會想要抓下來,為甚麼今天沒勁了?ㄟ?我冷感了嗎?

仔 細想來,原因有一,我以前抓的那些圖後來都到哪去了?收藏?算了吧!人家收藏是會拿出來品味、回憶過去,我以前抓的圖呢?都不知道流落到哪台電腦、哪顆硬 碟還是哪張光碟去了…那我現在還下載這些圖幹嘛?留下來佔空間喔?硬碟都不夠用了,抓那些圖下來還要花時間整理(其實也不是整理,只是全部丟到一個可能叫 做搖桿驅動程式的資料夾),幾年後下來看:「靠!我到底在幹嘛!浪費那麼多時間在這邊!」人家說:「硬碟的容量,決定宅的力量!」依此看來我根本就失去 「卯起來宅」的基本條件了耶…

不知道為甚麼,現在不再有追求容量的無止盡念頭,不是因為現在買硬碟要花自己錢的關係,而是…記得當時年紀 還小,大二40G硬碟3,300元…大四80G…到現在320G3,000元,科技進步不斷爆增的容量塞滿的,依然只是滿滿的慾望(就直接說是A片嘛! XD~)卻很少有留下過什麼像是說很棒的文章、很精簡的程式碼、還是舊情人的記憶之類的東西,不!也許應該說就算有留下些什麼,卻也很少內化成自己的什麼 東西,像是改變了自己想法、念頭或是習慣的正面力量!

我曾經想過,假設一篇doc文章1MB好了,現在120G的硬碟能裝多少?扣除作業 系統跟平常用的軟體大概也還剩下…100G吧!而真正有意義,有紀錄到自己生活的文章會有多少篇?日記好了,一個月會有幾篇?20篇就算多了吧!一年也才 20*12*1MB=240MB…那究竟我們需要多大的硬碟呢?

文字美麗的地方就在於你要說它只有文字說明,只能靠想像力,呵!想像力才 是讓文字美麗的地方,如果都是圖片、都是影像…就像宅之名言:「沒圖沒真相!」當然我本身也是求真求實的人,特別是美女…但文字的力量,卻擁有穿越時空的 威力,不管是周杰倫在愛在西元前的巴比倫文字,還是李白水裡撈月對應成三人的意境,實在都讓我震撼不已,想像是怎樣的感受才能讓一個人把文字精練到可以穿 透時空?到底是多麼深刻、多麼難受才能刻在心中呢?(照理說都是悲傷難過失意才會留下紀錄)

現今的時空我們生活充斥著聲光刺激,重重外在刺激中要能找到內心充足的環境,著實得好好尋找!

喔!對了!今天文章的結論是,X的!我再也不要再抓圖了!除非跟我的生活經驗有關我才要留下來!不管怎樣還是先來貼張圖吧!


2008年5月27日 星期二

Ubuntu的一些微調

清除硬碟暫存資料

一般人使用Ubuntu應該都是切割硬碟,兩種os共生,因此也容易造成硬碟空間不足!(在你用Ubuntu很爽之後...)所以要怎麼清除硬碟裡的暫存資料呢?就像在windows下面那樣。

sudo apt- get clean

2008年5月26日 星期一

你小黑的滾輪中鍵不理你嗎?

##CONTINUE##
請你跟我這樣作

到你/etc/X11 下面的 xorg.conf,ok!到終端機去輸入:
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf-backup
sudo gedit /etc/X11/xorg.conf

(先做個備份,再開啟它!)

gedit中,找到InputDevice部分中Configured Mouse,在EndScetion前增加:

Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"

果想使用水平scroll增加:

Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
要在firefox裡也有這樣的動作還要打開about:config

mousewheel.horizscroll.withcontrolkey.action = 3;
mousewheel.horizscroll.withcontrolkey.numlines = 1;
mousewheel.horizscroll.withcontrolkey.sysnumlines = true;

mousewheel.horizscroll.withnokey.action = 0;
mousewheel.horizscroll.withnokey.numlines = 1;
mousewheel.horizscroll.withnokey.sysnumlines = true;

mousewheel.horizscroll.withshiftkey.action = 1;
mousewheel.horizscroll.withshiftkey.numlines = 1;
mousewheel.horizscroll.withshiftkey.sysnumlines = true;


完成!有人說馬上就可以用!但我覺得X-Window重開會比較好!