第一次聽英文演講(有點晚)
不意外的…完全聽不懂。
主講者:
Ajith Abraham 教授
在挪威教書、議題是-智能計算的最佳化
主要在討論有關模糊理論、類神經網絡、演化計算等人工智慧方面的
著有400篇論文、參與多個期刊及國際會議
感覺是一位在這方面非常權威的人士。
非常值得效仿的人。
網站:
http://www.softcomputing.net/
2008年5月18日 星期日
2008年5月11日 星期日
pietty 亞洲語系修正
2008年5月8日 星期四
[轉載]安裝nvidia官方版驅動
用這個方式裝每次都順利成功:所以不記下來不行
下載適合的nvidia顯示卡驅動程式
離開x
使用rcconf把gdm關掉再重新開機
安裝需要的套件
# aptitude install make gcc
查一下自己應該裝的linux-headers版本
# uname -r
2.6.18-4-686
# aptitude install linux-headers-2.6.18-4
還有其他編譯時必要的套件
# aptitude install pkg-config xserver-xorg-dev
注意事項:
假使您安裝過nvidia-glx請下
# aptitude --purge remove nvidia-glx
並確認移除
/etc/init.d/nvidia-glx
/etc/init.d/nvidia-kernel
到下載的目錄下執行
# sh NVIDIA-Linux-x86-1.0-9639-pkg1.run
重新進入x
$startx
有看到nvidia logo就代表成功
下載適合的nvidia顯示卡驅動程式
離開x
使用rcconf把gdm關掉再重新開機
安裝需要的套件
# aptitude install make gcc
查一下自己應該裝的linux-headers版本
# uname -r
2.6.18-4-686
# aptitude install linux-headers-2.6.18-4
還有其他編譯時必要的套件
# aptitude install pkg-config xserver-xorg-dev
注意事項:
假使您安裝過nvidia-glx請下
# aptitude --purge remove nvidia-glx
並確認移除
/etc/init.d/nvidia-glx
/etc/init.d/nvidia-kernel
到下載的目錄下執行
# sh NVIDIA-Linux-x86-1.0-9639-pkg1.run
重新進入x
$startx
有看到nvidia logo就代表成功
MPlayer字幕設定
1打開Preferences設定頁
2Font Tab下的Font要選擇truetype的字型:如/usr/share/fonts/truetype/arphic/bsmi00lp.ttf
3Font Tab下的Encoding要選擇UTF8,這是指上面的字型檔的編碼,linux下的當然是utf8
4同時,Font Tab下的Text scale是用來調整字幕的大小
5Subtitles & OSD Tab下的encoding要選Big5這是指字幕檔的編碼,從windows的硬碟過來的字幕檔一般都用Big5編碼
2Font Tab下的Font要選擇truetype的字型:如/usr/share/fonts/truetype/arphic/bsmi00lp.ttf
3Font Tab下的Encoding要選擇UTF8,這是指上面的字型檔的編碼,linux下的當然是utf8
4同時,Font Tab下的Text scale是用來調整字幕的大小
5Subtitles & OSD Tab下的encoding要選Big5這是指字幕檔的編碼,從windows的硬碟過來的字幕檔一般都用Big5編碼
2008年5月6日 星期二
JSP 不要快取設定
在JSP產生XML並使用XSL把XML轉換成HTML的情境下,
會造成快取暫留的問題,例如:
A登入 -> A的使用畫面 -> A登出 -> B登入 -> A的使用畫面
這問題的原因不太清楚,但治標的方法是,在JSP加上:
resp.setHeader("Pragma", "no-cache"); // HTTP 1.0
resp.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
來要求browser不要進行快取即可
會造成快取暫留的問題,例如:
A登入 -> A的使用畫面 -> A登出 -> B登入 -> A的使用畫面
這問題的原因不太清楚,但治標的方法是,在JSP加上:
resp.setHeader("Pragma", "no-cache"); // HTTP 1.0
resp.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
來要求browser不要進行快取即可
2008年5月4日 星期日
群組group
Linux下的群組管理非常重要,有些裝置的使用必須要使用者屬於特定的群組。
例如:
cdrom和cdrw需要使用者有cdrom的群組權限,否則無法進行燒錄
音效卡需要使用者有audio的群組權限,否則電腦不會有聲音,就算driver有裝好也一樣
使用usermod指令可以為user設定其所屬的群組
#usermod -G Group[,Group,..] user
但這樣做的話,假如也要把user當前所屬群組重新key一次
不然沒有在-G列表上的群組會把user踢掉
如 user 的當前群組為 G1、G2
#usermod -G G1,G3 user
則user的當前群組變為G1、G3並被從G2踢出
可以改用
#usermod -G G1,G3 -a user
則user不會被G2踢出,但會加入G3
也就是user的當前群組變為G1、G2、G3
例如:
cdrom和cdrw需要使用者有cdrom的群組權限,否則無法進行燒錄
音效卡需要使用者有audio的群組權限,否則電腦不會有聲音,就算driver有裝好也一樣
使用usermod指令可以為user設定其所屬的群組
#usermod -G Group[,Group,..] user
但這樣做的話,假如也要把user當前所屬群組重新key一次
不然沒有在-G列表上的群組會把user踢掉
如 user 的當前群組為 G1、G2
#usermod -G G1,G3 user
則user的當前群組變為G1、G3並被從G2踢出
可以改用
#usermod -G G1,G3 -a user
則user不會被G2踢出,但會加入G3
也就是user的當前群組變為G1、G2、G3
2008年4月20日 星期日
ie4linux 新版安裝修正
轉載自:http://twntwn.info/blog/ajer001/archives/1390
現在我們已經進入 IEs4Linux 安裝檔的目錄了,我安裝的版本是 2.99.0,這個版本有一些問題,我們得修改兩個檔案才能繼續安裝。首先我們要修改的是 /lib/messages.txt 檔,我們用文字編輯器開啟它
接著修改 /lib/functions.sh 檔,一樣的我們用文字編輯器開啟它
修改完畢,我們可以繼續安裝了。只要下這道指令就行囉~
現在我們已經進入 IEs4Linux 安裝檔的目錄了,我安裝的版本是 2.99.0,這個版本有一些問題,我們得修改兩個檔案才能繼續安裝。首先我們要修改的是 /lib/messages.txt 檔,我們用文字編輯器開啟它
gedit ./lib/messages.txt然後將第 19 行從
tw . zhTW TW改成
zh tw zhTW TW並存檔。
接著修改 /lib/functions.sh 檔,一樣的我們用文字編輯器開啟它
gedit ./lib/functions.sh然後將第 98 行從
pid=$(wget -q -b -t 1 -T 5 -U "$useragent" -o /dev/null $URL $WGETFLAGS -O "$file" | sed -e 's/[^0-9]//g')改成
pid=$(LANG=C wget -q -b -t 1 -T 5 -U "$useragent" -o /dev/null $URL $WGETFLAGS -O "$file" | sed -e 's/[^0-9]//g')並存檔。
修改完畢,我們可以繼續安裝了。只要下這道指令就行囉~
./ies4linux祝各位順利!
2008年4月16日 星期三
Hibernate 物件周期
轉載自:http://caterpillar.onlyfun.net/Gossip/HibernateGossip/EntityObjectLifeCycle.html
Hibernate中的實體物件可以分為四種狀態:Transient、 Persistent、Detached、Removed。
簡單的說,Transient與Detached狀態的物件未受Hibernate持久層管理員管理,對這兩個狀態的物件作任何屬性變動,不會對資料庫中 的資料有任何的影響,而Persistent狀態的物件受Hibernate持久層管理,對物件的屬性變動,在Session實例關閉(close)或 Transaction實例執行commit()之後,資料庫中對應的資料也會跟著更新。
Transient與Detached狀態的物件是非管 理狀態,而Persistent狀態的物件是管 理狀態, 又稱為Persistent Object,其與一個Persistence Context 關聯。
在物件為Persistent時,如果物件的屬性發生變化,並且尚未提交之前,物件所攜帶的資料稱之為Dirty Data,Hibernate會在Persistence Context維護物件的最近讀取版本,並在資料提交時檢查兩個版本的屬性是否有變化,如果有的話,則將資料庫中的資料進行更 新。
Hibernate中的實體物件可以分為四種狀態:Transient、 Persistent、Detached、Removed。
- Transient
當您直接使用new創建出物件,例如在之前的例子中, User類別所衍生出之物件,在還沒有使用save()之前都是Transient物件,這些物件還沒有與資料庫發生任何的關係,不對應於資料庫中的任一筆資料。
- Persistent
當物件與資料庫中的資料有對應關係,並且與Session 實例有關聯而Session 實例尚未關閉(close),則它是在Persistent狀態,具體而言,如果您將Transient狀態的物件使用Session的save()方法 加以儲存,或是使用Hibernate從資料庫載入資料並封裝為物件(例如使用get()、load()等查詢物件的相關方法),則該物件為Persistent狀態。
Persistent狀態的物件對應於資料庫中的一筆資料,物件的id值與資料的主鍵值相同,並且Session實例尚未失效,在這期間您對物件的任何狀 態變動,在Session實例關閉(close)或Transaction實例執行commit()之後,資料庫中對應的資料也會跟著更新。
如果您將Session實例關閉(close),則Persistent狀態的物件會成為Detached狀態。
如果您使用Session的實例delete()方法刪除資料,Persistent狀態的物件由於失去了對應的資料,則它會成為Transient狀 態。
Persistent狀態的物件對應於資料庫中的一筆資料,物件的id值與資料的主鍵值相同,並且Session實例尚未失效,在這期間您對物件的任何狀 態變動,在Session實例關閉(close)或Transaction實例執行commit()之後,資料庫中對應的資料也會跟著更新。
如果您將Session實例關閉(close),則Persistent狀態的物件會成為Detached狀態。
如果您使用Session的實例delete()方法刪除資料,Persistent狀態的物件由於失去了對應的資料,則它會成為Transient狀 態。
- Detached
Detached狀態的物件,其id與資料庫的主鍵值對 應,但脫離Session實例 的管理,例如在使用load()方法查詢到資料並封裝為物件之後,將Session實例關閉,則物件由Persistent狀態變為Detached狀 態,Detached狀態的物件之任何屬性變動,不會對資料庫中的資料造成任何的影響。
Detached狀態的物件可以使用update()方法使之與資料庫中的對應資料再度發生關聯,此時Detached狀態的物件會變為 Persistent狀態。
Detached物件,若不再被任何名稱參考,則在適當的時候將被垃圾收集所回收。
Detached狀態的物件可以使用update()方法使之與資料庫中的對應資料再度發生關聯,此時Detached狀態的物件會變為 Persistent狀態。
Detached物件,若不再被任何名稱參考,則在適當的時候將被垃圾收集所回收。
- Removed
如果您使用Session的實例delete()或remove()方法刪除資料,Persistent狀態的物件由於失去了對應的資料,則它會成為Removed狀 態,一個成為Removed狀態的物件不應該被繼續重用,您應該釋放任何參考至它的名稱,讓該物件在適當的時候被垃圾回收。
Transient與Detached狀態的物件是非管 理狀態,而Persistent狀態的物件是管 理狀態, 又稱為Persistent Object,其與一個Persistence Context 關聯。
在物件為Persistent時,如果物件的屬性發生變化,並且尚未提交之前,物件所攜帶的資料稱之為Dirty Data,Hibernate會在Persistence Context維護物件的最近讀取版本,並在資料提交時檢查兩個版本的屬性是否有變化,如果有的話,則將資料庫中的資料進行更 新。
flag 設計
使用 flag 來進行判斷程式的狀態時
flag 應該是 1、2、4、…、2^n
且不可以使用 0
因為:
1.當x要加入flag時,用的運算是x or 該flag,而 0 or 任何數 都不會有作用。
2.當x要移除flag時,用的運算是x and 該flag的補數,0的補數是1111…111,進行and也不會有作用
3.當x要判斷flag是否存在時,用的運算是x and該flag是否會等於該flag,而0 and任何數均為 0也無法判斷。
flag 應該是 1、2、4、…、2^n
且不可以使用 0
因為:
1.當x要加入flag時,用的運算是x or 該flag,而 0 or 任何數 都不會有作用。
2.當x要移除flag時,用的運算是x and 該flag的補數,0的補數是1111…111,進行and也不會有作用
3.當x要判斷flag是否存在時,用的運算是x and該flag是否會等於該flag,而0 and任何數均為 0也無法判斷。
2008年4月11日 星期五
debian 網路修復
debian linux 下常用的網路修復指令
重啟網路卡:
#ifconfig eth0 down && ifconfig eth0 up
重啟網路服務
#/etc/init.d/networking restart
重新由dhcp取得ip
#dhclient
重新ADSL連線
#pppoeconf
重啟網路卡:
#ifconfig eth0 down && ifconfig eth0 up
重啟網路服務
#/etc/init.d/networking restart
重新由dhcp取得ip
#dhclient
重新ADSL連線
#pppoeconf
2008年4月10日 星期四
subversion
安裝與設定:
在debian上使用svn只要安裝subversion套件
並建立svn group
把所有想要使用svn的帳號(user)均加入到svn group下
使用svnadmin create 指令在想要的路徑下建立svn的repository檔案庫
並以chgrp把檔案庫的擁有者群組設為svn
之後即可在遠端使用svn+ssh://user@host/path_to_repository來使用檔案庫
備份的方法:
另外加裝subversion-tools套件
並使用svn-hot-backup some_repos/ backup_path/
即可備份檔案庫
在debian上使用svn只要安裝subversion套件
並建立svn group
把所有想要使用svn的帳號(user)均加入到svn group下
使用svnadmin create 指令在想要的路徑下建立svn的repository檔案庫
並以chgrp把檔案庫的擁有者群組設為svn
之後即可在遠端使用svn+ssh://user@host/path_to_repository來使用檔案庫
備份的方法:
另外加裝subversion-tools套件
並使用svn-hot-backup some_repos/ backup_path/
即可備份檔案庫
2008年4月3日 星期四
jetty WebAppDeployer
jetty 的WebAppDeployer可以指定一個特定的目錄,
做為佈署webapp的位置,
webapp 可以是一整個含有jsp、servlet、web.xml的資料夾,
也可以是一個.war的包裝檔,
jetty啟動時會去指定的 scan 一但,找到war file或webapp,
就會將他註冊到server的ContextHandlerCollection下,
jetty.xml的設定如下
<Configure class="org.mortbay.jetty.Server" id="server">
<!-- Deployer 設定 -->
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="contexts"/></Set>
<Set name="webAppDir">./deployer</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
</New>
</Arg>
</Call>
</Configure>
其中的./deployer是Deployer在啟動時會去scan的佈署目錄
而contexts則是server.setHandlers(new Handler[]{contexts , new DefaultHandler()})中的
ContextHandlerCollection物件。HandlerList也是ContextHandlerCollection其中一個子類別
做為佈署webapp的位置,
webapp 可以是一整個含有jsp、servlet、web.xml的資料夾,
也可以是一個.war的包裝檔,
jetty啟動時會去指定的 scan 一但,找到war file或webapp,
就會將他註冊到server的ContextHandlerCollection下,
jetty.xml的設定如下
<Configure class="org.mortbay.jetty.Server" id="server">
<!-- Deployer 設定 -->
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="contexts"/></Set>
<Set name="webAppDir">./deployer</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
</New>
</Arg>
</Call>
</Configure>
其中的./deployer是Deployer在啟動時會去scan的佈署目錄
而contexts則是server.setHandlers(new Handler[]{contexts , new DefaultHandler()})中的
ContextHandlerCollection物件。HandlerList也是ContextHandlerCollection其中一個子類別
2008年4月2日 星期三
linux上的防火牆 iptables
iptables 的簡圖 (from 鳥哥)iptables防火牆的概念是:
當封包送來時,iptables會根據事先定義好的table,
一條一條規則逐一比對,如果符合其中一條,
就允許進入主機,否則就進行下一條規則的比對,
一但所有規則都不符合,則會進行預設動作,
預設動作也稱為Policy,一般有下列幾種:
接受 (ACCEPT) 、
丟棄 (DROP) 、
轉送 (FORWARD)
iptables 的簡圖 (from 鳥哥),iptables的規則都記錄在tables裡,
常用的有兩個表格,filter及nat。
filter主要是設定有關進出本機的封包:
由 filter.INPUT 規則鍊限制進入本機的封包;
由 filter.OUTPUT 規則鍊限制送出本機的封包。
nat主要是設定要進出本機後端的主機的封包
當本機要做為防火牆主機時才有用到
nat.PREROUTING 規則鍊處理 路由前的封包
nat.POSTROUTING 規則鍊處理路由後的封包
iptables 指令用法:
iptables -L -n 顯示filter規則鍊下的所有規則
iptables -L -n -t nat 顯示nat規則鍊下的所有規則
iptables -P INPUT DROP 設定fliter.INPUT 規則鍊的預設動作為 DROP (丟棄)
iptables -t nat -P INPUT ACCEPT 設定nat.INPUT 規則鍊的預設動作為 ACCEPT (接受)
iptables -A INPUT -i lo -j ACCEPT filter.INPUT加入規則,所有來自lo的封包均接受
iptables -A INPUT -i eth0 -s 192.168.0.9 -j DROP eth0收到的所有來自192.168.0.9的封包均丟棄
iptables -I OUTPUT -d 140.126.21.0/24 -j DROP本機所有要送往140.126.21.*網域的封包均丟棄
2008年3月30日 星期日
javac 參數
javac -d somedir/ some.java是指定class的輸出目錄
javac -cp .:dir:anotherdir some.java 指定classpath
javac *.java 一次編譯所有java檔
javac -cp .:dir:anotherdir some.java 指定classpath
javac *.java 一次編譯所有java檔
2008年3月27日 星期四
java 的 DateFormat
//解析輸入日期 (轉換 MM/dd/yyyy 成 yyyy-MM-dd)
DateFormat formatIn = new SimpleDateFormat("MM/dd/yyyy");
DateFormat formatOut = new SimpleDateFormat("yyyy-MM-dd");
Date datefrom = formatIn.parse(from);
Date dateend = formatIn.parse(end);
formatedfrom = formatOut.format(datefrom);
formatedend = formatOut.format(dateend);
DateFormat formatIn = new SimpleDateFormat("MM/dd/yyyy");
DateFormat formatOut = new SimpleDateFormat("yyyy-MM-dd");
Date datefrom = formatIn.parse(from);
Date dateend = formatIn.parse(end);
formatedfrom = formatOut.format(datefrom);
formatedend = formatOut.format(dateend);
2008年3月24日 星期一
html input 空字串問題
html中的from使用的input元素
<input name="in" type="text">
如果沒有輸入任何值的話,submit後
由jsp的out.getParameter("in")取到的值,
將會是"" <-空字串,而不是null。
寫jsp時,需特別注意。
<input name="in" type="text">
如果沒有輸入任何值的話,submit後
由jsp的out.getParameter("in")取到的值,
將會是"" <-空字串,而不是null。
寫jsp時,需特別注意。
2008年3月17日 星期一
使tomcat完全支援中文
只要在/var/lib/tomcat5.5/conf/server.xml
下的Connector tag加上一個屬性,URIEncoding="UTF8"
即可,
例如:
<Connector port="8180" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
JSPWiki經由這個設定,即可使用中文做為文件名稱而不會顯示成亂碼。
下的Connector tag加上一個屬性,URIEncoding="UTF8"
即可,
例如:
<Connector port="8180" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
JSPWiki經由這個設定,即可使用中文做為文件名稱而不會顯示成亂碼。
2008年3月14日 星期五
jsp輸出xml
假如想要以jsp輸出xml到browser,如:
1 <%
2 out.println("<?xml version=\"1.0\"?>");
3 out.println("<test>");
4 out.println("abcd");
5 out.println("</test>");
6 %>
這樣還不夠,只會顯示abcd
還必須加上
7 <%@page contentType="application/xml" %>
讓browser知道這是一個xml而不是jsp
1 <%
2 out.println("<?xml version=\"1.0\"?>");
3 out.println("<test>");
4 out.println("abcd");
5 out.println("</test>");
6 %>
這樣還不夠,只會顯示abcd
還必須加上
7 <%@page contentType="application/xml" %>
讓browser知道這是一個xml而不是jsp
JspWiki設定
jspwiki的安裝在tomcat下的webapp完成後
就需要進行一些設定
主要的是WEB-INF/jspwiki.properties用來設定資料存放位置
及WEB-INF/jspwiki.policy用來設定用戶權限
就需要進行一些設定
主要的是WEB-INF/jspwiki.properties用來設定資料存放位置
及WEB-INF/jspwiki.policy用來設定用戶權限
2008年3月13日 星期四
log4j
在java程式裡如果log4j的設定檔log4j.properties
沒有放在程式的ClassPath下
則log4j會產生Warring
要指定log4j的設定檔位置 (假設放在java執行目錄下的conf/log4j.properties)
只要在程式開始處加入
PropertyConfigurator.configure("conf/log4j.properties");
即可。
沒有放在程式的ClassPath下
則log4j會產生Warring
要指定log4j的設定檔位置 (假設放在java執行目錄下的conf/log4j.properties)
只要在程式開始處加入
PropertyConfigurator.configure("conf/log4j.properties");
即可。
訂閱:
文章 (Atom)
