2007/03/31

用 Java 寫 C 語言的 system pause

C 語言中 stdlib.h 函式庫中有提供一個 system() 函式讓使用者可以直接對作業系統下指令,但是 Java 裡面似乎沒有這類的函式,所以執行文字介面的 Java 程式並沒辦法使用 system("pause") 讓程式暫停。

C 語言中除了用上面的方式暫停,也可以使用 getc() 來等待輸入,所以 Java 可以利用這點來達到暫停的效果。

下面這段程式是以 System.in.read() 函式來等待輸入。

public class wait{

public static void main(String[] args){
System.out.print("Press enter to exit....");
try{
System.in.read();
}catch(Exception e){};
}
}


你也可以使用 Scanner 來接收輸入。

import java.util.Scanner;

public class wait{
public static void main(String[] args){
int a,b;
Scanner input = new Scanner(System.in);
System.out.print("Press enter to exit....");
input.hasNextLine();
}
}


這樣程式要按下 Enter 鍵才會結束關閉。但是這個寫法有個缺點,就是如果按其他的按鍵沒有作用,也就是只能按 Enter 鍵才會結束,其他的則會顯示在螢幕上面直到 Enter 鍵被按下。


2007/03/30

攝影 - 籃球賽

資訊系班際籃球賽活動剪影,有幾張自己還蠻滿意的。








我對不起我的肝

地獄週、爆肝週!

昨天整晚沒有睡,就是為了一個 RFID 的 application 實作,教授規定使用 VB 或是 Java。對於一個二種程式語言都不會的人來說會選擇哪一種呢?當然是選擇開發速度最快的 VB 啦!

問題來的,教學用的程式範例是用 VB 6 寫出來的,而我手邊只有 Visual Studio 2005。VB 6 的函式庫和 VN.NET 的函式庫完全不一樣,好死不死我又沒有 VB 6 的 MSDN,只能那邊猜範例程式到底再做什麼,但是 VB.NET 又找不到對應的函式取代範例程式中使用的函式。就這樣死撐了六個小時,直到早上五點多已經沒有體力直好放棄。



桌上放的紙就是程式碼,右邊的是教學用的 RFID 讀取器。

2007/03/26

桌布串連

網路上發起的桌布大串連!一起參加吧!

小弟沒什麼在玩遊戲,用電腦只是上網找資料、寫程式,所以系統講求速度和效率。桌面上的「卡蹦」是最近心情不好拿來發洩用的,有看到修改器吧? XD

點圖放大!
請回答以下幾個問題:

(a) OS為?
  Windows XP Pro

(b) 這台是你的個人電腦?還是公司或家人共用的電腦?
  自己在宿舍的電腦

(c) 這張桌布是什麼?從哪裡取得的?
  打死不用桌布,因為會拖慢電腦速度

(d) 更換桌布的頻率高嗎?
  連顏色都不會換 XD

(e) 桌面上有幾個ICON?
  慢慢算吼,事情多的話就比較亂

(f) 一堆檔案和捷徑放得亂七八糟的桌面,你看得下去嗎?
  不喜歡亂七八糟的桌面,通常頂多三列

(g) 有沒有什麼堅持點?
  • 速度快
  • 效率高
  • 不用花時間找東西

(h) 有為了填這份接力,還特地整理一下嗎?
  沒有啊

(i) 最後請再傳給5個「我想看看他的桌面」的人。
  看到的人自己分享吧~

有放上來記得回覆唷!

大家的桌布:
Chitsaou Yorkxin

2007/03/24

Virus Total

沒有任何一個防毒軟體能夠 100% 準確的找出病毒。Virus Total 能幫你把有問題的檔案分別傳給不同的防毒公司掃瞄,並且把掃瞄結果列出來。



十多家防毒引擎分析的結果,有沒有毒一看就很清楚了吧?

Virus Total : http://www.virustotal.com/

2007/03/22

Crash Your Browser

不管你是用 Internet Explorer 或是 FireFox,以下的幾個網頁都能讓你的瀏覽器掛彩。

注意!在點選以下連結時,請先將未完成的工作存檔,否則後果請自行負責。

Imagecrash
這個是利用 IE (圖片緩衝區溢位?)的漏洞,造成作業系統出現藍色畫面。
漏洞資訊:Bug 289864

Crash FireFox #1
Crash FireFox #2
這是用 CSS 讓 FireFox 當機的網頁。
漏洞資訊:Bug 368175

Ruth's Chris Steak House 茹絲葵

如果你想試試一間高品質、氣氛佳的牛排餐館,那茹絲葵絕對是你應該去的地方!



茹絲葵可以說是一間五星級的牛排餐館,從裝潢、燈光、擺飾都是精心設計,連服務生都是西裝禮服。

茹絲葵是屬於西式排餐,套餐包含:沙拉、麵包、主餐、附餐、甜點、飲料,一客大約從一千五百元起跳,但是因為份量是比照美國,所以自己吃一客套餐幾乎是吃到十一分飽。

茹絲葵的服務很好,服務生一桌一定有固定的一人。這裡的服務生可不是只會點菜,去年遇到的服務生從餐點內容、作法到點餐完畢都沒有紙筆記錄,厲害的還是送餐點時還依照輩份上桌完全沒有送錯!

今年坐的位置靠窗,可以從 23 樓遠眺高雄市。




餐前開胃的法國麵包,抹上最香最濃奶油,讓你食慾大開。




茹絲葵的排餐罪不一樣的是他的作法,牛排是上等部位的整塊肉下去料理,不是普通的一片。這些都是從美國空運來台的新鮮牛肉,即使不佳任何調味料也能讓你食指大動。茹絲葵牛排的作法是比較特別,牛排釋放在熱盤上上桌,所以如果你習慣吃七分熟的牛排,在這邊請記得改成五分熟。

這是小弟點的 8 盎司三分熟牛排,肉質細緻不油膩、入口又很有嚼勁,吃了保證不後悔。







如果不能吃牛肉,這裡也有其他排餐。以下是鮭魚排餐。





餐後甜點也是外面看不到的。這是店內推薦的蘋果派,自製的鬆軟餅皮裡面放上實在的蘋果和特製醬料,上面再加上一球冰淇淋,想吃了嗎?





茹絲葵的焦糖布丁也是非常不一樣的,布丁不是一般果凍的樣子,而是濃、有奶味的布丁 (類似法式布丁?),和上層脆皮形成對比,很特別。





接下來就是就是我最喜歡的巧克力蛋糕,這巧克力蛋糕是我每次造訪都一定會吃的甜點。巧克力蛋糕是自製的巧克力醬加上 espresso 做成,不含任何澱粉!味道甜而不膩、入口即化,是外面絕對沒有的最高享受。




2007/03/18

Workrave 讓你用電腦用的健康

坐在點腦前面太久,會讓身體僵硬、肌肉關節也會得病,不如過一段時間起來活動活動,順便讓腦袋放空,畢竟「休息是為了走更長遠的路」。

但是專心工作時怎麼會突然意識到要休息?所以我們需要 Workrave 來提醒你。



Workrave 就是設計來給那些整天坐在電腦前面的木頭人,每隔一段時間就會跳出一個視窗提醒你該休息了,如果很久都沒休息,他還會幫你把鍵盤滑鼠鎖起來,帶你做伸展運動。



你還可以自己設定時間限制,當 Workrave 發現你超過使用時間限制時,會自動幫你把電腦全部鎖起來,逼你離開位子 (不管你是不是去拿鐵鎚.....)。

對於一個電腦高度使用者而言,這個軟體真的是非常「健康」,除了讓你不會忘記起來走動,還幫你統計你的電腦使用量。看到自己的使用量以後,差點嚇出心臟病來。



心得:不斷跳出的視窗,讓我想把他解安裝了.... = ="


Note:Internet Explorer 不支援此網站的語法,請使用其他瀏覽器參訪

2007/03/17

吃薯條吃到會怕了

今天晚上和一個許久沒見面的高中同學去麥當勞解饞,剛好有剩下的優惠卷就拿二張出來用。

想說二個人都愛吃薯條就拿了一張優惠卷換二包大薯,結果薯條送來當場傻眼。全部倒出來堆的像山一樣,看到就已經飽了一半。最後吃到差點吐出來………。



這幾週大概不會在踏進麥當勞一步了。

2007/03/15

線上繪圖程式

話說現在大家流行用 Ajax 做網頁,什麼東西都可以在線上直接進行編輯,不用儲存到硬碟上。如:WordExcel 就可以使用 Google Docs 進行編輯。

Fauxto 就是一個能讓你在線上作畫的網站。



首頁並不怎麼起眼,第一次使用要先註冊,這樣你就可以直接把你的作品存在網路上不必下載回來。點選「Sign Up」註冊,輸入電子郵件並確認密碼即可。



註冊成功之後,點選「Launch Fauxto」便可以開始享受在線上作畫的樂趣了。


Flash Webcam 動態捕捉視訊

這是從 Aleiku 的部落格上面看到的,主要是讓 Flash 去捕捉你 Webcam 所收到的視訊,並且產生不同的反應。



不錯吧?如果你的電腦已經有安裝 Webcam 了,趕快去原作的網站上面玩玩看吧!
http://www.wretch.cc/blog/aleiku&article_id=9841475

2007/03/13

PC3000 修復壞軌.....真的有用嗎?

沒錯,真的有用!但是這並不是一個很好解決之道。

PC3000 俄羅斯硬碟修復術」是透過修改硬碟內的韌體,使的硬碟磁頭不會在經過或是讀寫已經有壞軌的區域。這樣跳過壞軌的區域,固然可以讓硬碟繼續使用。

我們先把問題拉回原點。硬碟是由磁盤和磁頭組成,在一個無塵的的環境中組合並封裝在一個密閉的容器中。硬碟的磁頭原本是貼在磁盤面上,運轉時因為轉速達到每分鐘 7200 轉,使的磁盤周圍的空氣一起流動,而讓磁頭能夠懸浮在氣流上,不與磁盤接觸。

當有壞軌表示硬碟運轉中不小心遭到碰撞,讓磁盤面上的磁感應物刮傷。前面說過硬碟內是一個密閉的空間,所以這些被刮下來的磁感應物當然不會憑空消失,會變成灰塵一樣。

想想看當灰塵在每分鐘 7200 轉的速度下碰到原本完好無缺的磁盤會發生什麼事?就像一隻麻雀不小心撞進空中的飛機引擎一樣。這些灰塵會造成磁盤上其他的磁感應物脫落,讓硬碟內部有更多灰塵;更多的灰塵代表會有更多的磁感應物會被刮下來。這樣的結果只會讓硬碟損壞更嚴重而已。

這裡不是在批評 PC3000 不好,而是想說 PC3000 可以拿來應急,但是你若想保住你硬碟中的資料不會流失,還是盡快去買一個新的硬碟吧!


2007/03/09

擷取 rmvb 的音樂

目前看到比較簡單的方法是用 KMPlayer 擷取功能擷取背景音樂,另外聽說 GoldWave 也可以開啟 rmvb 檔的音軌部分。

先安裝 KMPlayer 吧。

安裝好以後用 KMPlayer 開啟你要擷取音樂的影片,先移動到要開始擷取的時間點按暫停,在畫面任一處點選滑鼠右鍵 -> 擷取 -> 擷取音訊。

跳出子視窗以後,建議把子視窗拉到與 KMPlayer 主視窗不重疊的地方,不然到時候不要怪我操作很麻煩。

從子視窗設定輸出位置和檔案類型後,再把「播放時自動擷取」選項打勾,最後按下「開始」就會開始擷取音樂了。結束直接點選「停止」就可以了。

2007/03/08

在 Java 中讓不同的按鍵有不同的動作

通常一個視窗中會有多個不同的按鈕,點下按鈕後,按鈕會分別有不同的動作。

假設我們寫了一個 JTextArea 讓使用者輸入資料,當按下「Add Line」按鈕時會自動換行,按下「Exit」按鈕時會結束程式。




程式碼:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(this);
b2.addActionListener(this);

text.setText("Test string....\n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new line\n");
}

}


因為 JButton 所呼叫的 ActionListener 都會呼叫 actionPerfomed(),所以只好在此函式內判斷到底是哪個按鈕呼叫的,在依照不同的來源執行不同的動作。

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new line\n");
}


但是這樣寫一點會使的整個程式架構混亂,尤其是按鈕需要值型的動作很複雜時,以後要維護程式碼會變的很麻煩,因此要換一個方式來做。

Java 中有個東西叫做 inner class,也就是 class 中的 class。 Inner class 可以存取 outer class 中的變數和函式,但是要注意的是 inner class 是當 outer class 被建立時才會跟著一起被建立,不會單獨存在。

這時要為每個 JButton 建議一個 inner class:

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new line\n");
}
}


建立好 inner class 之後,要讓 JButton 的 ActionListener 會去呼叫寫好的函式:

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());


改好之後,整個程式會變成這樣:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());

text.setText("Test string....\n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new line\n");
}
}
}

2007/03/07

Grow RPG 破關!



終於………終於被我找到順序啦!
  1. 伐木小屋
  2. 樹木
  3. 城堡
  4. 鐵塔
  5. 石頭
  6. 百寶箱
  7. 階梯

以這樣的順序,可以讓每個物件都升到最高等級,你就可以打敗會後的大魔王了!好好享受一下破關畫面吧!

2007/03/06

Find domain name for IP address

台大計算機中心提供一個能由 IP 搜尋出網域名稱的服務。
http://checkdns.cc.ntu.edu.tw/index.php

例如輸入:140.134.27.100
就會找到:bbs.iecs.fcu.edu.tw

笑評當今世界四大防毒軟體

轉貼 from 我的 mail

卡巴就好像西毒,兇猛強悍,神功蓋世,對敵決不留情,出手狠辣,招招奪命,絕少失手,不愧為一代梟雄,但畢竟練的不是純正內功,容易走火入魔,導致系統出問題。


麥咖啡就像東邪,玉樹臨風,俊朗瀟灑,對敵招式繁多,機關重重,殺伐決斷從不遲疑,為江湖第一機智聰明之人,但因其心機太深,令人難以掌握。


諾頓就像南帝,雍容華貴,穩沉厚重,胸懷博大,練的是純正內功,靠的是教化感人,對敵有慈悲心腸,一般採取隔離教化,使其不在作惡,很少殺人,稱的上是一代宗師,但因其過於敦厚,不僅自己活的累,別人也為他感到累。


Nod32就想北丐,來無影去無蹤,瀟瀟灑灑,笑傲江湖,對敵用的是逍遙游和打狗棍法,江湖上少有對手,但因其過於輕浮,難免誤事。



推:卡巴兇猛強悍,但畢竟練的不是純正內功,容易走火入魔,導致系統出問題。

Kaspersky 雖然掃毒能力強,但是掃毒率高代表誤判機率也很高,把很多「可能」有問題的檔案都當作病毒刪除了。

不管是什麼防毒軟體,都不可能有百分之百能抓到病毒的,所以不要亂抓東西、不要亂逛奇怪的網站,才是真正防止中毒的根本之道!

2007/03/03

防毒軟體評比

以下找到五個網站,以不同的觀點來對各家的防毒軟體做比較。


www.virus.gr (2006年8月)
http://www.virus.gr/english/fullxml/default.asp?id=82&mnu=82


Virus Bulletin (需註冊)
http://www.virusbtn.com/vb100/archives/products.xml?table


av-comparatives.org 網站防毒軟體評比
( Comparetives → Online Results )
http://www.av-comparatives.org/


病毒碼更新速度比較
http://itmanagement.earthweb.com/columns/executive_tech/article.php/3316511


toptenreviews網路購物網站 (把產品價格列入比較)
http://anti-virus-software-review.toptenreviews.com/


轉錄 from 資安論壇

2007/03/02

無窮迴圈之神

自從我開始研究程式設計以後,就一直會有出乎意料的無窮迴圈。昨天寫 Java 又意外的爆炸了。

程式寫好了先 compile 成 class 檔,最後在封裝成 JAR 檔。於是基於懶人的理由,自己寫了一個批次檔,這樣就不用每次修改都要慢慢打指令了。

jar cfm out.jar manifest.mf *.class *.png


用記事本打完存成 jar.bat。結果執行時居然噴了!



弄了半天,原來是因為我批次檔中的 jar 並沒有呼叫到 Java 封裝用的 jar,而是呼叫我自己寫的 jar.bat,結果就變成了無窮迴圈。

結論:我對不起我的電腦........

2007/03/01

Windows Vista installation

趁著今天教授沒有上課,晚上一邊看 Java Swing 一邊安裝 Windows Vista,目前剛剛出現桌面就先暫停等到明天繼續再安裝。


到這個時候,Vista 已經吃掉我將近 500M 的記憶體了




打圖看下面狀態列寫什麼 = =" (無言)
點圖放大



桌面的確改了很多,需要花上依段時間適應
點圖放大


2007/03/04 補充:
  我這次被 Vista 整的很慘,雖然說已經另外修改 VMware 記憶體的設定值讓他多 100M 下去執行,但是滑鼠一樣 lag 很嚴重。單單看到這個情形就讓我不想繼續測試下去了,或許哪天學校機器噴了,我會拿來測試一下。