adversity
逆境、窘境
A good friend will not desert one in time of adversity.
2008年3月30日 星期日
2008年3月29日 星期六
取得Java版本
由於每個使用者所使用的Java版本可能都不一致,因此在程式裡也可以加入判斷使用者所使用的版本有不同的實作方法。String version = System.getProperty("jave.version");
System.out.println(version);
2008年3月25日 星期二
螢幕自動升級
今天到實驗室,發現有人送我個大禮物,自動把我的十九吋螢幕升級成了二十二吋。呵,真是賺到了。
之前好不容易才記下十九吋螢幕1440x900,而二十二吋的螢幕用的解析度是1680x1050,真的陌生的數字。為了搭配新螢幕,所以也順手把我的電腦也重灌了,這樣才有煥然一新的感覺。
不過我手邊這台電腦平常好像都沒有在做事情,擺著真的有點浪費,所以,決定以後程式都用這台寫好了。沒想到,今天晚上又找到一個新用途,那就是變成電視機了。今晚在東京巨蛋有紅襪對運動家,於是順手插了同學買的數位電視棒。恩,真是不錯~~~
2008年3月24日 星期一
Way Back Into Love
今天看了K歌情人這一部電影,用音樂來串起整個劇情,尤其是這首歌~~~
Way Back Into Love
Hugh Grant & Drew Barrymore
I've been living with a shadow overhead
I've been sleeping with a cloud above my bed
I've been lonely for so long
Trapped in the past, I just can't seem to move on
I've been hiding all my hopes and dreams away
Just in case I ever need em again someday
I've been setting aside time
To clear a little space in the corners of my mind
All I want to do is find a way back into love
I can't make it through without a way back into love
Oh oh oh
I've been watching but the stars refuse to shine
I've been searching but I just don't see the signs
I know that it's out there
There's got to be something for my soul somewhere
I've been looking for someone to shed some light
Not just somebody just to get me throught the night
I could use some direction
And I'm open to your suggestions
All I want to do is find a way back into love
I can't make it through without a way back into love
And if I open my heart again
I guess I'm hoping you'll be there for me in the end
There are moments when I don't know if it's real
Or if anybody feels the way I feel
I need inspiration
Not just another negotiation
All I want to do is find a way back into love
I can't make it through without a way back into love
And if I open my heart to you
I'm hoping you'll show me what to do
And if you help me to start again
You know that I'll be there for you in the end
2008年3月23日 星期日
Volatile關鍵字
Java Memory Model (JMM)讓每一個Thread都可以擁有local memory,將變數複製到register,讓這些變數可以更快速的被處理。然而在multi-thread的環境下,則可能會造成不同步的問題。
因此,thread共用的成員變數會加上volatile關鍵字,目的是要避免將這個變數複製到local memory,而是讓這些變數留在main memory上。
2008年3月22日 星期六
休息兩天
今天是投票日,實驗室的每一個人都回家投票了,於是我也決定來放個假,今明兩天都不去實驗室了,待在家裡閒晃好了~~~
為了應付這漫長的兩天,所以也準備了兩部電影來欣賞:地球浩劫、K歌情人。
今天看完了地球浩劫後,倒是沒有想像中的好看,不過有個心得就是宇宙是如此的浩瀚無窮,相對而言我們人類卻是如此渺小~~~
看完後,就跑去打掃一下我住的宿舍。呵,環境還真是髒亂,費了好大的勁,終於看起來像是人住的地方了。
雖說整天就待在宿舍,但我還是知道今天是個重大的日子,新任的總統即將產生,我們國家未來何去何從就在今夜。這次的開票速度非常的快。先不論誰輸誰贏,這都是台灣人自己用自己的選票選出的。
贏的不用太高興,輸的也不要太難過,政黨輪替本來就是民主的常態,做不好,就換人做。說不一定四年後又再度變天。所以選舉只是一時,希望大家能早日恢復正常平靜的生活~~~
明天要做什麼呢~~~~
2008年3月20日 星期四
Double Buffering
在寫動畫的程式時,最常發生的問題就是畫面會閃爍了。會發生這個問題的主要原因是每一個裝置都有它的更新頻率。每隔一段時間就會重新顯示畫面,如果在這一定的時間內來不及將整個圖畫上去,就會造成只畫了部份,因此就產生了閃爍。所以,若要保證每次都在這時間內畫好整張圖,就必須將繪圖的動作與更新頻率同步。然而在短時間內能畫出的圖有限,所以通常會將圖先畫在記憶體裡,然後再一次畫在螢幕上。如此便可有效抑制閃爍。
首先,宣告一個Image來當作緩衝區。用createImage的函式來取得緩衝區的物件。呼叫getGraphics可以取得緩衝區的Graphics 物件。接著便和一般用法一樣,用drawImage將圖畫上去。例:private Image bufferImage = null;
private Graphics bufferGraphics;
public void imageRender() {
if(bufferImage == null) {
bufferImage = createImage(WIDTH, HEIGHT);
bufferGraphics = bufferImage.getGraphics();
bufferGraphics.setColor.white);
bufferGraphics.fillRect(0, 0, WIDTH, HEIGHT);
....
}
再覆載paintComponentpublic void paintComponent(Graphics g) {
super.paingComponent(g);
if(bufferImage != null)
g.drawImage(bufferImage, 0, 0, null);
}
如此便可有效抑制閃爍。此外要注意的一點就是儘量保持paintComponent()簡單。因為他可能會JVM呼叫,例如當視窗被別的遮住後又移開。
2008年3月18日 星期二
該趕工了
昨天早上網管的Meeting,老師對我說的第一句話是:「論文什麼時候要給我看?上次叫你改的地方改好了沒?」啊~~~,真是天外飛來一筆,完全無法招架。只好回答我最強的武器,「我不知道耶....」。
最近,有點沉迷於寫程式,除了之前為了Meeting準備了一下論文進度,多畫了幾張圖,其餘文字化的部份都還沒開始動筆。
所以現在要開始趕工了,白天時間就來寫論文,晚上再來寫程式。
加油!
2008年3月16日 星期日
小丸子之暗棋連線 (Java版)
花了將近兩個星期終於完成了。由於對網路程式的部份比較不熟悉,一度覺得應該寫不出來了,好在,終於完成了,雖然還有很多地方不是寫的很完美。
程式下載區
為了讓遊戲畫面生動一點,所以就把我最喜歡的小丸子給加了進來。遊戲一進入時,就可以為自己選一個角色。最後那一張帥哥當然不是我,是我可愛的學弟,測試員獨享的權利。選完角色後,可以從遊戲選單選擇要當Server還是Client。
當兩方都連線時,即可看見對方所選的角色,如下圖。按兩下可以翻開棋子,移動或吃棋子只要先點一下自己再點目的地即可。最下面會顯示所吃掉對方的棋子。
每次寫程式都有個大毛病,就是邊寫邊想邊改。明明知道這是很沒效率的,應該要一開始先拿紙筆好好規畫後,再動筆。所以,每次看到自己寫的程式碼,真的是難看死了。
上次的踩地雷和這次的暗棋都是自己胡亂寫的,接下來就要開始好好研讀之前買的兩本遊戲設計的書,看可不可以寫出漂亮的程式囉~~~
2008年3月12日 星期三
完封澳洲
棒球魅力無法擋,一群人圍在幾台電腦前面看著棒球比賽,不時鬼吼鬼叫的。沒錯,中華隊贏了,北京,我們來了~~~
上一場輸了加拿大,使得今天這一場對澳洲的比賽格外重要,輸了,可能就要跟北京奧運說再見了。
今天中華隊打的漂亮,尤是是陽建福完投且完封,率領中華隊以五比零的比數打敗澳洲。
現在已經不悶了,接下來的比賽也要加油,GoGoGo!
2008年3月11日 星期二
連線服務
觀察目前系統所以啟的連線服務可以用netstat或是nmap軟體來達成。
列出正在Listen的服務
# netstat -utnl
以連線的狀態
# netstat -utn
nmap使用方法
只列出所開啟的TCP port
# nmap localhost
列出TCP/UDP的port
# nmap -sTU localhost
像系統內mysql的服務是開啟的,若要只限於本機可連,可以設於防火牆內
# iptables -A INPUT -i eth0 -p tcp --dport 3306 -j DROP
2008年3月10日 星期一
真悶~輸了
九局上兩人出局,五比四,只差一個出局數就贏了。好巧不巧,二壘手的一個隱形失誤再加上捕手的捕逸,就這樣被追平了。十局上,再被得一分,中華隊就這樣輸了~~~
真是戲劇性的發展阿,能說什麼呢?棒球比賽就是如此,「球是圓的!」
真悶阿~~~
2008年3月9日 星期日
架設Postfix
# cd /usr/local/src
下載postfix-2.3.3.tar.gz
# tar zxvf postfix-2.3.3.tar.gz
# cd postfix-2.3.3# make
編譯完成之後,先新增postfix所需使用的帳號及群組
# useradd -M -s /sbin/nologin postfix# groupadd postdrop
安裝postfix
# make install
若無意外的話,接下來一直按enter就可以順利安裝完成
啟動Postfix
# postfix start
##ReadMore##
測試是否成功啟動
# telnet localhost 25
Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.220 mail.maruko.cs.nchu.edu.tw ESMTP Postfix
看到以上畫面表示成功啟動
設定postfix
主要設定檔在/etc/postfix/main.cf
若要改成接受所有連線
inet_interfaces = all
設定主機名稱
myhostname = mail.maruko.cs.nchu.edu.tw
而mydomain為依myhosname設定自動設為maruko.cs.nchu.edu.tw
postfix預設只會接收與本機的主機名稱相同的郵件,但因為主機名稱只能設一個,所以可以如下設定
mydestination = $myhostname, localhost.$mydomain, localhost, 其它要收信的郵件位址
設定可轉遞的郵件位址預設只允許本機與同一subnet的IP寄送信件,設定方法如下:設定可轉遞的網段 - mynetworks_style,此參數只能使用三個設定值
subnet:允許同一子網段
class:允許屬於同一個class
host:只允許本機
另一種方法是指定可以用來指定某一小段IP的轉遞郵件 - mynetworks,而mynetworks的優先權大於mynetworks_style
更改重送佇列郵件的間隔時間與佇列郵件的保留時間
queue_run_delay
maximal_queue_lifetime
檢視還未寄出的郵件
# postqueue -p
若要備份postfix,則需備份以下目錄
/etc/postfix
/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow
/var/spool/mail
2008年3月8日 星期六
2008年3月7日 星期五
FreeBSD與Solaris更改網路設定
FreeBSD方式:
直接修改/etc/rc.conf,打開即可看見相對應的設定。
Solaris方式:
兩個重要檔案:/etc/defaultrouter、/etc/netmasks、/etc/hosts
/etc/defaultroute用來設定gateway,設定如下:
140.120.15.254
/etc/netmasks則是用來設定網路位址(網段的第一個位址)與網路遮罩,設定如下:
140.120.15.0 255.255.255.0
/etc/hosts則是用來設定主機IP,假設主機名稱是dream,IP為140.120.15.172,設定如下:
140.120.15.172 dream
2008年3月4日 星期二
象棋繪圖
寫完踩地雷後,接著決定來寫一下連線版的暗棋,順便練習一下網路程式。而連線版的另一個原因就要AI太難了,若要做單機版,勢必要和電腦下棋,感覺就是會很複雜。所以凡事還是從簡單的地方著手。
2008年3月3日 星期一
賣掉記憶體
2008年3月2日 星期日
筆電換記憶體
在陪文帥買KVM的同時,一時衝動,買了一條創見JetRam DDR2 667 2G的記憶體。其實也不太清楚JetRam和創見的關係,於是查了一下,JetRam記憶體模組採用創見嚴選的記憶體顆粒,而看到很多玩家不是很推薦,但已經買下去了,好在我本來就不是玩家級的,沒差!
買完回到實驗室後,發現一件很糗的事,實驗室有這麼多縲絲起子,竟然沒有一根可以轉動我的筆電螺絲,真是傻眼。好在我宿舍也有好多螺絲起子,於是就帶回家裝。
上面這一隻就是唯一能轉開我筆電的螺絲起子。我原本筆電有兩條DDR2 533 512M的記憶體,打開後,就先將這兩條拔出。雖然沒裝過,但看了一下內部,大概就知道怎麼拔插了。先把兩邊的卡榫扳開,記憶體就會彈起來,然後就可以拔出來了。所以插進就是反向而已,先將憶體插進插槽,然後,往下壓,卡榫自然就會把記憶體夾住了。
跑CPU-Z的結果:
2008年3月1日 星期六
踩地雷(Java版)
花了幾天的時間,終於把踩地雷寫好了。
一直覺得我的程式能力很弱,所以說想找些題目來寫寫。踩地雷感覺高中生就寫的出來的東西,我當然也要來寫一下,所以決定了這個題目。
整個程式是用Java寫的,主要是因為我比較會的視窗程式也只有Java而已。
程式下載區
我的寫法是先寫好地圖產生器,接著設定GUI,最後再來做事件處理。其實GUI應該要最後才寫的,但我比較喜歡先看到樣子。
整個程式寫完,花我最長時間的地方也是GUI的部分,LayoutManager好難用, 好在有發現用null可以自己設定絕對位置,才讓我能順利的排版每個物件。其次就是左鍵加右鍵的功能,凹下去的功能我是沒做啦,但是有做到能翻開周圍不是地雷的地方。
程式執行的畫面如下:
比較有問題的是左鍵加右鍵一起按時,沒辦法像windows判斷那麼快,要先按左鍵(右鍵)再點右鍵(左鍵),然後一起放。按太快有時會偵測不到。還有重新開始的時候,畫面重設部份會有展開的感覺,無法瞬間換圖,但我同學都說這是特效,也不錯。
最後,感謝大鳥測試員~~~