2008年12月18日 星期四

[Skill][轉]IMAP與POP之特性與優缺


IMAP與POP比較

IMAP(Internet Message Access Protocol)定義:
IMAP為一收取電子郵件的標準協定,屬於客戶-伺服(Client-Server)之協定;伺服器依此協定,替客戶端使用者收取並儲存郵件。使用者可以僅檢視郵件之發送者及標題,並決定是否下載該郵件。使用者亦可在伺服器上建立並操作檔案夾(folder)或信箱、刪除郵件等。

POP(Post Office Protocol)定義:
POP為另一較不複雜的接收電子郵件之標準協定,亦屬一客戶-伺服協定,伺服器依此協定替客戶端的使用者收取並暫存郵件,當使用者檢查在伺服器上的郵件信箱時,即下載郵件。

IMAP優勢:
1.開啟信箱時,只是下載信頭(message headers)部分而已,故不會佔用PC端的硬碟空間。
2.可以從數個不同的地點連線,所讀取的信件仍為同一份置於伺服器上的信箱。
3.不必一直收信,信箱會自動更新。當網路速度受限時,performance 會較POP server好,因為只
 是下載信頭部分而已。
4.以檔案夾(folder)的方式管理信件較方便。

POP弱勢:
1.通常開啟信箱之後,信件即全部被下載儲存於PC上,佔用PC上的硬碟空空間;而伺服器上並不
 保留信件備份,以免信件一直累積,造成伺服器上的信箱爆滿。因此需自行指定是否需要儲存信
 件於伺服器上。
2.從不同的地點連線時,無法使各地點所擁有的信箱均一致同步,出現在(A)PC上的信件,便不再
 出現於(B)PC上;因此當連線時,為了要達到同步化,便會一再下載信件,導致信件重複出現。
3.必須手動收信,信箱不會自動更新。當網路速度受限時,performance 則會較差。
4.從不同的地點連線時,無法讀取到所有的檔案夾,管理上較差。


結論:
在使用者郵件之管理上,IMAP顯然較具有方便性。像現在gmail開放IMAPi功能了,讓使用者可以真正的在自己電腦上「收發Gmail」─只要你的郵件軟體支援,在這個模式下,使用者可以直接在線上讀信、回信、留草稿、砍信,而不需要把整個信箱搬回家。在你工作的同時,Gmail也會記錄你的所有動作,當你回到網頁時,信箱的狀態就跟在你的電腦上一樣的熟悉親切。甚至Gmail特有的標籤功能,也會被模擬成IMAP中的「資料夾」,並擁有同樣的運用彈性。

[REF]http://blog.sina.com.tw/ghost/article.php?pbgid=17542&entryid=578545

[Song]James Blunt

James Blunt - Give Me Some Love



James Blunt - Tears And Rain

2008年12月5日 星期五

[Java IDE]當 netbean 遇到 Java Heap Space

當 netbean 遇到 Java Heap Space

解決方法:
http://docs.google.com/fileview?id=F.c9a97ec6-c3ad-4a59-b890-0df5019fd611&hl=en

2008年11月22日 星期六

[Mood]面試終於結束了

面試終於結束了,
接下來就準備考試吧~

2008年11月16日 星期日

[Note]top-down與bottom-up

top-down與bottom-up兩個詞,想必許多人不是太了解其意思,特此說明一下。

顧名思義,top-down是由上至下,而bottom-up由下至上的意思。其實,就我對本行業的理解,top = 目的(objective),bottom = 方法細節(action)。
 
因此,top-down是由目的開始,推到達到目的的方法與其細節。而bottom-up則是由要採取、或是能採取的行動開始思考,最後看這些行動是否能達到目的。
  
  Top-down思考的人會先花很多時間在搞清楚目的與框架上,bottom-up的人則是通常先把要做的事情一個個列出來後,才思考這和原本的目的有什麼關係。
  
  舉例來說,如果要改善一家公司的獲利的話:
  
  1. Top-down思考:從要達到的目的開始思考。先看是否能夠在相同成本下,增加營業額 (grow the top line),或是能在不影響營業額的情況下,降低成本支出。增加營業額,有可能是增加客戶的數量,或是讓每個客戶花更多的錢。降低成本,有可能是利用採購的集中,外包給更低成本的公司生產,或尋找低成本的人力資源等。
  
  2. Bottom-up思考:看手頭上有幾張牌,來看是否能達成目的。譬如最近剛好和一家公司在談策略聯盟,我們可以利用另一家公司的channel與客戶關係,來開拓另一個市場,進而增加營業額。或是,最近大陸中關村剛好給個offer,如果在那裡開軟體公司能給予稅負優惠,進而降低成本。
  
  上述只是一個例子,這兩個思考方式其實沒什麼好不好的問題。Top-down雖然以目標為導向,但是時常落於不切實際,bottom-up比較實在,但是可能有迷失方向的可能。
  
  我本來以為,通常經營者比較需要的是top-down思考的能力,而中間管理層則需要bottom-up思考的能力。然而,後來和一些經營者接觸後,發現也不一定如此。很多優秀的經營者"幹實事",都先從做得到的開始做,再看這些做的事情如何和最終方向聯繫在一起。
  
  之前曾經提到過,麥肯錫(McKinsey)與波士頓(BCG)兩家公司的做事方式不太相同。麥肯錫是完全的top-down思考的公司,BCG比較top-down與bottom-up並重。
  
  同樣要解決市場份額下降的問題,兩家公司的做法可能會如下:
  
  1. 麥肯錫:先花一些時間把議題樹(Issue tree)劃出來
  
  市場份額是否有提升的空間?
  -- 以地域來分,市場份額是否在大城市有提升的空間?中小城市呢?
  -- 以產品檔次來分,低檔次的產品市場份額是否有提升空間?中高檔次呢?
  -- 以渠道來分,百貨店的市場份額是否有提升空間?小型零售店呢?還是有其他新的渠道可開發?
  ...等等
  
  2. BCG:先決定要做哪些市場調研,如面對面訪談、電話訪談、店舖查詢、焦點座談等。收集資料後,在看各個市場劃分的表現。
  
  所以,這兩家公司的顧問,所受到的訓練也不太一樣。麥肯錫顧問思考框架的能力特別優秀,而BCG的顧問很能夠從一大堆數據之中,挖掘出insight出來。

来源及版权所属:http://tw.myblog.yahoo.com/no-nationality/article?mid=6&prev=7&next=5

2008年11月10日 星期一

[Java]如何讓JTextArea內容總顯示最後一筆[已解決]


public void myChange(String change) {
String tmp = jTextArea1.getText();
tmp = tmp.concat(change + "\n\r");
jTextArea1.setText(tmp);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum());
}
});
}

2008年11月9日 星期日

[Java]An Efficient Stream Copier


public class StreamCopier {

public static void main(String[] args) {
try {
copy(System.in, System.out);
} catch (IOException e) {
System.out.println(e);
}

}

public static void copy(InputStream in, OutputStream out) throws IOException {

/*複製過程中,不允許其他執行緒讀取輸入串流或寫入輸出串流*/
synchronized (in) {
synchronized (out) {
byte[] buffer = new byte[256];
while (true) {
int bytesRead = in.read(buffer);
if (bytesRead == -1) {
break;
}
out.write(buffer, 0, bytesRead);
}
}
}
}
}

2008年11月8日 星期六

[Mood]今天在圖書館看了一本書

今天在圖書館看了一本書,是"Java語言入門的學習繪本"(作者:ANK/柯志杰)
裡頭有蠻基礎的Java相關圖解,包括一些"保留字"的運用等
內容篇幅不多,但是解釋得很清楚,
對初學者來說真的是一本好書,看完之後讓我對之前一些模糊沒搞懂的部分都有了一些了解和概念,如果你是Java的初學者,我覺得這本書還真的不錯,推薦喔~

2008年11月7日 星期五

[Plugin] Firefox Plugin

前幾天想到說想自己寫一個內嵌於網頁的plugin,
希望可以和自己的專題結合...
今天在javaworld.tw看到一些相關的問題,
版主們提到可以對firefox的plugin下手。
於是,我就用Google輸入firefox plugin 寫
就找到一堆,

撰寫 firefox plugin 最簡單方法:
http://mqjing.blogspot.com/2008/09/plugin-firefox-plugin.html

Firefox Plugin 統整part1:
http://hung.pixnet.net/blog/post/14807619

[Fun]又發現好玩的東西






好好玩喔~
http://www.wordle.net/

[Mood]我愛總圖

最近從圖書館借了一堆書,雖然明知道應該不會看完,
但是就是這樣就借了回來><
是自己的求知慾越來越大了嗎?
還是這是一種病態,管它的...就這樣吧

2008年11月5日 星期三

[Skill] 一些麻煩的官方解釋


演算法
algorithm:
是指完成一個任務所需要的具體步驟和方法的描述。
不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。如果一個演算法有缺陷,或不適合於這個問題,執行這個演算法將不會解決問題。 一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。時間複雜度是指完成該演算法所需要的時間,空間複雜度是指完成該演算法所需要占用的空間(記憶體大小)。

資料結構 data Structure:
是計算機中存儲、組織數據的方式。

计算机组织 Computer Organization:
計算機運算器、存儲器、控制器、輸入設備和輸出設備等主要功能部件的相互連接和相互作用,借以實現機器指令級的各種功能和特性。

基於內容的圖像檢索Content-based image retrieval:
基於內容的圖像檢索,屬於圖像分析的一個研究領域。它的英文術語叫做CBIR,Content-based image retrieval,或叫content-based visual information retrieval。基於內容的圖像檢索目的是在給定查詢圖像的前提下,依據內容信息或指定查詢標準,在圖像數據庫中搜索並查找出符合查詢條件的相應圖片。

2008年11月2日 星期日

2008年11月1日 星期六

[Fun] Just Fun (Photo)





by http://www.photofunia.com/

2008年10月31日 星期五

[Java][O'REILLY] Java I/O技術(note) - part1

Java的大部分I/O形式分兩種:

1.byte & number,由輸入輸出的stream處理。
2.character 與 text,由readerwriter 處理。
stream:
是一連串又順序,但長度尚未判斷出來的位元組。

input stream:

把位元組從某個一般性的外界來源搬進Java程式。

output stream:

把位元組從Java程式內部搬到某一般性的外部目標,在某些情況下,串流能把位元組從Java程式的某部分搬到另一部分。

flush():

一般來說,緩衝區未滿之前,資料是不會被送出去,但如果你希望對方能儘快收到資料(或其他原因),可以呼叫flush()強制出清緩衝區,不管緩衝區是否滿了。
請注意,flush()並不會出清作業系統或硬體的緩衝區。輸出串流的緩衝區,與硬體或OS的緩衝區是兩回事。若要出清這類緩衝區,可以考慮使用FileDescriptor類別的sync()。

除非有特殊用意,否則我們不會刻意出清緩衝區。因為當串流關閉時,緩衝區內的的資料會被自動寫到目的地,串流會在程式結束時,或你使用close()方法時被關閉。


什麼時候會用到flush():

1.若你的程式大打算透過網路傳送一堆資料,你應該週期性的出清緩衝區,確定資料已經送出。
2.在出錯一個會當掉的程式時。照理說,所有輸出串流在緩衝區被填滿時會自動出清,這是在程式能正常結束的前提下,這沒有問題。但如果程式不正常結束,則緩衝區就會殘留資料。此時除非每次寫入資料後去可以呼叫flush(),否則就無法依據輸出的資料來判斷程式當掉的地方,因為程式可能出錯之後繼續執行一段時間。
3.System.out、System.err和某些列印串流(print stream),在每次呼叫println()之後,以及每次寫入的字串遇到'\n'換行字元之後,緩衝區會被自動出清。你可以在PrintStream建構式中,設定是否啟動自動出清。

system.out:

system.out是printStream的實體,若你在關閉system.out之後試圖寫入它,他並不會對出IOException,只不過要寫的東西不會出現吧了。這是因為system.out的使用率太頻繁,因此Sun決定讓它吃掉所有IOException,免得每次都要用try/catch包著它。因此在所有串流中System.out算是一種特例。

[Java]關於FilenameFilter的使用



import java.io.FilenameFilter;
import java.io.File;

class HTMLFilter implements FilenameFilter {

public boolean accept(File dir, String name) {
return (name.endsWith(".html"));
}
}

class Main {

public static void main(String[] args) {
String dir = ".";
if (args.length == 1) {
dir = args[0];
}

File f1 = new File(dir);
int i;
String[] ls;
FilenameFilter filter = new HTMLFilter();
System.out.println("HTML Files: ");
for (ls = f1.list(filter), i = 0;
ls != null && i < ls.length;
System.out.println("\t" + ls[i++])) {
;
}
}
}


[REF]http://home.tiscali.nl/~bmc88/java/sbook/0128.html

2008年10月30日 星期四

[Mood]地震

早晨6:30am
幹~被地震震醒的感覺真不好= =

[Java]動態生成JButton 問題究竟出在哪裡?(已解決)

問題究竟出在哪裡?

import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {

JFrame myFrame;
JPanel myPanel;
JButton btn[];
Toolkit toolkit = Toolkit.getDefaultToolkit();

Main() {
myPanel = new JPanel();


for (int i = 0; i < 5; i++) {
btn[i] = new JButton();
myPanel.add(btn[i]);
}
add(myPanel);
}

public static void main(String argv[]) {
Main app = new Main();
app.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {
System.out.println("Frame closing...");
System.exit(0);
}
});
app.setVisible(true);
app.repaint();
}
}


原來是這裡忘了初始= =

JButton btn[];

改成

JButton btn[] = new JButton[5];

[Java]有關Acegi

感覺很像是好東西,先收起來再說^^
點我下載

[REF]http://www.javaworld.com.tw/jute/post/view?bid=43&id=243119&tpg=1&ppg=1&sty=1&age=0#243119

2008年10月29日 星期三

[Skill]Symantec的防火牆擋印表機連線

Symantec的防火牆也太強了啦~
連local端的印表機都擋。

今天打工的時候幫別人弄電腦,
說不能列印,
結果搞了半天,才發現原來是Symantec防火牆高的鬼~
關掉就沒事了

2008年10月26日 星期日

[Java]有關Float的宣告

有關Float的宣告,是要這樣寫喔


float a1[] = {0.2f, 0.4f, 0.6f, 0.8f, 1.0f};


緊記緊記~

2008年10月25日 星期六

[Skill][neatbean]有關Netbean顯示的錯誤



之前Project出現這個警示符號,
查了一查,原來在專案上按右鍵,選「Resolve.....」,看看遇到的是甚麼問題。
就可以解決了,
其實如果有這種問題,每打開project的時候,應該都會跳出一個對話視窗引導user去
right click那個project後選resolve...
只是我一直不在乎這個對話視窗,
所以擺了烏龍= =

2008年10月24日 星期五

[Java] [Fw]如何讓netbean的Project File匯入jar檔(以iText產生Pdf為例)

以下詳細的介紹用Netbean實作的整個過程
(以下教導如何讓netbean的Project File匯入jar檔):
Step1:


Step2:


Step3:



Step4:





Step5:



經過上述的步驟,就已經成功將Jar檔加入這個Project了。

接下來開一個Class檔,
將以下程式call進去,再Compile + Run...

/**
* HelloWorld.java
*/
import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello World");

// 創建一個Document對象
Document document = new Document();

try {

// 生成名為 HelloWorld.pdf 的文檔
PdfWriter.getInstance(document, new FileOutputStream("HelloWorld.pdf"));

// 添加PDF文檔的一些信息
document.addTitle("Hello World example");
document.addAuthor("Bruno Lowagie");
document.addSubject("This example explains how to add metadata.");
document.addKeywords("iText, Hello World, step 3, metadata");
document.addCreator("My program using iText");

// 打開文檔,將要寫入內容
document.open();

// 插入一個段落
document.add(new Paragraph("Hello World!"));

} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}

// 關閉打開的文檔
document.close();
}
}

完成第一個pdf的產生。

[Java][Fw] Java iText 動態 生成 PDF 文檔表格中文問題

無法查看此摘要。請 按這裡查看文章。

2008年10月23日 星期四

[Mood]終於將推甄資料處理完了

終於將推甄資料處理完了,
接下來就要看面試了,
好好加油吧~

另外,今天上了普通心理學,
老師提到了一本蠻特別的書,叫做"海蒂的性學報告",
剛剛去找了找它的資料,
感覺上是一本很特別的書,有空再慢慢看吧

2008年10月21日 星期二

[Skill] 讀書秘訣

別以為簡單幾句,但確實行之有效,請各位耐心試試.

讀完書或背完書後, 再用10幾分鐘 快速重讀.
24小時後再用少少時間速讀,
1星期後再用少少時間速讀,
2星期後再用少少時間速讀,
1個月後再用少少時間速讀,
半年後再用少少時間速讀,
1年後再用少少時間速讀。
這樣便可以使記憶在你腦內深深記住了.

每隔一段時間,只需用少少時間再速讀,這樣便可令我們學到的智識唔會忘記.
希望各都俾多呢一點點時間,讓自己強起來

2008年10月20日 星期一

[Java][Fw]Java讀寫cookie

Java讀寫cookie

/*
* 寫cookie
*/
Cookie namecookie = new Cookie("name",name);
Cookie passwordcookie = new Cookie("password",password);
Cookie optioncookie = new Cookie("option","1");

//生命週期
namecookie.setMaxAge(60*60*24*365);
passwordcookie.setMaxAge(60*60*24*365);
optioncookie.setMaxAge(60*60*24*365);

response.addCookie(namecookie);
response.addCookie(passwordcookie);
response.addCookie(optioncookie);

/*
* 讀cookie
*/
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{
String name = "";
String password = "";
String option = "";
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase("name"))
{
name = c.getValue();
}
else if(c.getName().equalsIgnoreCase("password"))
{
password = c.getValue();
}
else if(c.getName().equalsIgnoreCase("option"))
{
option = c.getValue();
}
}
}

[REF]http://www.blogjava.net/action/archive/2007/04/10/109574.html

2008年10月19日 星期日

[Software][FW]SourceFormatX的破解

SourceFormatX 讓您敢於面對混亂的代碼!

SourceFormatX 是一個強大的源代碼自動格式化, 縮進, 排版, 美化工具。它可以格式化 C, C++、Java、C#、Object Pascal、PHP、ASP、JSP、VB、VB.NET、VBScript、JavaScript和HTML Components源代碼。它還可以將源代碼輸出為語法高亮顯示的 HTML 或 RTF 文件。

嚴謹良好的代碼風格是軟件穩定可靠的必要保障,可是通常您從前任同行手中繼承、或從網上下載數量龐大的代碼之代碼風格大多和您的風格迥異甚至堪稱混亂:縮進空格的個數不同,指針符號的位置不同,關鍵字隨意大小寫…… 這給閱讀和修改源代碼造成不少困難,手工整理的工作量幾乎不可想像……

SourceFormatX 將您從這些既枯燥無聊,又大量重複的機械勞動中解放出來了。它可以快速大批量地格式化和美化多種源代碼,這將會大大加快閣下的項目進度,提高團隊協同工作效率,節約大量的時間,並統一了該項目所有代碼的風格.

----------------破解資料---------------------

由 海風月影 破解的 源代碼美化工具SourceformatX破解版,
一個傳說中不可能被破解的東東.

海風月影的Blog : http://depteicn.spaces.live.com/
或 http://hi.baidu.com/DePteIcn/

下载SourceFormatX 2.56 的破解版: 点击这里下载,如不能下载请留言,本人将发email给你

安装方法:解压后用sourceformatx256cn.exe安装,安装完后,把其余的档案放到安装目录C:\Program Files\SourceFormatX,然后用SourceFormatX256.exeSourceFormatX256SP3.exe运行即可.

[REF]http://hi.baidu.com/hysia/blog/item/1acb83cced27131300e9287c.html#send

[Java] 串流圖片下載範例

串流圖片下載範例:

Solution1:

URL url = new URL("http://xxx/xxx/image.jpg");
FileOutputStream fos = new FileOutputStream("image.jpg", false);
InputStream is = url.openStream();
int r = 0;
while((r = is.read()) != -1)
fos.write(r);
fos .close();


Solution2:

private static void flash(InputStream in, OutputStream out, int chunkSize){
try {

byte[] b = new byte[chunkSize];
int readLen;

while ((readLen = in.read(b, 0, b.length)) != -1) {
out.write(b, 0, readLen);
}

out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}


Solution3:


import java.io.FileOutputStream;
import java.awt.Image;
import java.awt.image.BufferedImage;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;


public class JpgTest {

public JpgTest() {

try {
JpgTset();
} catch (Exception ex) {

}
}

public void JpgTset()
throws Exception {
URL url = null;
url = new URL("http://www.jsinfo.net/advimage/3721/765_70_cartoon1.jpg");
//File _file = new File("/Order005-0001.jpg"); //讀入文件
//Image src = Toolkit.getDefaultToolkit().getImage("http://www.google.com/images/logo_sm.gif");
// Image src = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage("http://www.google.com/images/logo_sm.gif");
Image src = javax.imageio.ImageIO.read(url); //構造Image對象
int wideth = src.getWidth(null); //得到源圖寬
int height = src.getHeight(null); //得到源圖長
BufferedImage tag = new BufferedImage(wideth / 2, height / 2,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, wideth / 2, height / 2, null); //繪製縮小後的圖
FileOutputStream out = new FileOutputStream("c:/765_70_cartoon.jpg"); //輸出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag); //近JPEG編碼
//System.out.print(width+"*"+height);
out.close();
}

public static void main(String[] args) {
JpgTest untitled11 = new JpgTest();
}
}


[REF]http://www.javaworld.com.tw/jute/post/view?bid=5&id=237541&tpg=1&ppg=1&sty=0&age=0#237541
[REF]http://topic.csdn.net/t/20060310/01/4604719.html

[Skill]PDFMaker Got some problem!!

轉PDF時候跳出這個提示,怎麼辦呢?







Solution Here

[Fun][FW]大陸各種翻譯名稱大集合

大陸各種翻譯名稱大集合:

《海賊王》 →《倭寇歷險記》←... = =b
《飛天小女警》 →《通天女公安》 ←這超好笑的
《哆啦A夢》 →《萬能機器貓》 O_o
《炸彈超人》 →《地雷小英雄》 這不用解釋吧...
《暗黑破壞神2》→《地獄探險隊第二代》阿是怎樣...= =
《世紀帝國》 →《文明進化傳》 算你狠
《大富翁6》 →《暴發戶第六代》 噗..暴個頭
《天堂》 →《線條時代》 lineage.無言 line age分開翻喔
《神之領域》 →《上主的地盤》 隨便他了
《金庸群俠傳》 →《金庸角色大亂鬥》 蠢
《金庸群俠傳online》→《金庸角色大亂鬥-線上決戰》
《仙境傳說》 →《斷線傳說》 r.o
《棋靈王》 →《棋仙》這...不需要翻譯兩個名字吧
《棋魂》 →《一棋定江山》這..俗擱有力啊!!
《浪客劍心》 →《刀疤小子》大陸人很喜歡叫[小子]不過這名字實在給它很詭異
《DA!DA!DA!》→《大!大!大!》如果是我,看到這個翻譯我就不想看了
《遊戲王》 →《魔卡少年遊戲》 ..
《CHOBITS》 →《聰明的小雞》女主角老是"雞雞雞"地叫,故取名"小雞"
《獵人》 →《爸爸,你在哪裡?》要不要乾脆叫”萬里尋父”好了
《網球王子》 →《網球的貴族》哇~~!!好高尚喔~!!貴族耶!! 王子以外還有國王和皇后耶!! 搞不好還來個公主喔!!
《蠟筆小新》 →《一個低能兒的故事》真夠毒的啊..天呀!= =
《犬夜叉》 →《那狗 那井 那女人》好爛的翻譯
《魔戒1》 →《指環王1士農工商友誼之戒 》戒指就戒指~取那麼長要人命喔
《魔戒2雙塔奇謀》→《指環王2無產階級半獸人之雙塔革命》點點點
《明天過後》 →《後天》嗯...的確是後
《螞蟻雄兵》 →《地上有好多螞蟻》好直接
《異形》 →《珍奇異獸》 何必咬文嚼字
《異形續集》 →《珍奇異獸之風華再現》續集就續集.風華ㄍ屁
《蜘蛛人》 →《生化昆蟲超人》蜘蛛人只是穿蜘蛛裝而已~又不是生化昆蟲.
《駭客任務》 →《入侵故事》無言..
《向左走向右走》→《不知往哪裡走》 嗯..真的不知往哪走
《海底總動員》 →《海底都是魚》 沒錯,都是魚
《戰慄時空》 →《半條命》無言
《第六感追緝令》→《本能》的確拉..
《不可能的任務》→《碟中碟》不知道該怎麼說..
《瞞天過海》→《十二羅漢》好有少林寺的感覺
《神隱少女》→《千與千尋》主角名字..
《龍貓》→《多多洛》dodolo...
《心之谷》→《夢幻街少女》= =
《萬艦齊發》→《四海一家》蠢斃了
《我不笨所以我有話要說》→《解決文化問題的快樂小寶貝》...
《蟲蟲危機》→《無產階級貧下中農螞蟻革命史》我一看到就狂笑..
《神鬼交鋒》→《來抓我啊,如果你可以》一整個給它無言
《大隻佬》→《大塊頭有智慧》...
《古墓奇兵》→《俏妞大進擊》冏
《捍衛戰士》→《好大的一把槍》top gun..真的是字面翻
《洛克人》→《石頭人》想知道為什麼嗎..因為rockman=英文


還有樂團喔:

【beatls】
台灣:《披頭四》-還不賴
中國大陸:《甲殼蟲樂團》--什麼東西呀

【take that】
台灣:《接招合唱團》--o.s翻的好
中國大陸:《拿那個合唱團》冏到爆..光聽名字就不想理

【Spice Girls】
台灣:《辣妹合唱團》..對台灣來說很平常的名字
中國大陸:《香料姑娘》spice並不完全是香料吧!姑娘也很武功的feel

2008年10月18日 星期六

[Fun][FW] 英國英文 vs 大馬英文

誰說我們英文不好...
看下面 - 我們是 簡單、簡短、簡要、重點式、有效率...

----------------------------------------------------------------
WHEN GIVING A CUSTOMER BAD NEWS
Britons: I'm sorry, Sir, but we don't seem to have the sweater you want in your size, but if you give me a moment, I can call the other outlets for you.
Malaysians: No Stock.

RETURNING A CALL
Britons: Hello, this is John Smith. Did anyone page for me a few moments ago?
Malaysians: Hello, who page?

ASKING SOMEONE TO MAKE WAY .
Britons: Excuse me, I'd like to get by. Would you please make way?
Malaysians: S-kew me

WHEN SOMEONE OFFERS TO PAY
Britons: Hey, put your wallet away, this drink is on me.
Malaysians: No- need, lah.

WHEN ASKING FOR PERMISSION
Britons: Excuse me, but do you think it would be possible for me to enter through this door?
Malaysians: (pointing the door) can ar?

WHEN ENTERTAINING
Britons: Please make yourself right at home.
Malaysians: Don't be shy, lah!

WHEN DOUBTING SOMEONE
Britons: I don't recall you giving me the money.
Malaysians: Where got?

WHEN DECLINING AN OFFER
Britons: I'd prefer not to do that, if you don't mind.
Malaysians: Don't want la...

IN DISAGREEING ON A TOPIC OF DISCUSSION
Britons: Err. Tom, I have to stop you there. I understand where you're coming from, but I really have to disagree with what you said about the issue.
Malaysians: You mad/crazy, ah?

WHEN ASKING SOMEONE TO LOWER THEIR VOICE.
Britons: Excuse me, but could you please ! lower your voice, I'm trying to concentrate over here.
Malaysians: Shut up lah!

WHEN ASKING SOMEONE IF HE/SHE KNOWS YOU.
Britons: Excuse me, but I noticed you staring at me for some time.. Do I know you?
Malaysians: See what, see what?

WHEN ASSESSING A TIGHT SITUATION.
Britons: We seem to be in a bit of a predicament
at the moment.
Malaysians: Die-lah!!

WHEN TRYING TO FIND OUT WHAT HAD HAPPENED
Britons: Will someone tell me what has just happened?
Malaysians: Wat happen Why like that....

WHEN SOME ONE DID SOMETHING WRONG
Britons: This isn't the way to do it here let me show you,
Malaysians: like that also don't know how to do!!!!

WHEN ONE IS ANGRY
Britons: Would you mind not disturbing me
Malaysians: Celaka u !!!

[Java] Quadratic Equation Solver


/*
* ==========================================================================
* This Java Program prompts a user for coefficients in a quadratic equation,
* and computes and prints the roots of the equation.
*
* Written By : Nathan Blattau and Mark Austin July, 1997
* ==========================================================================
*/

import java.lang.Math;
import java.util.*;
import java.io.*;

class Quadratic {

public static void main( String args[] ) {

float fA,fB,fC;
float fRoot1, fRoot2;
float fDiscriminant;
String sLine;

// Print welcome message.

System.out.println("Welcome to The Quadratic Equation Solver");
System.out.println("----------------------------------------");

// Prompt user for coefficients in quadratic equation.

System.out.println("Please Enter coefficients for equation");
System.out.println("a.x^2 + b.x + c");

System.out.println("Coefficent a : ");
sLine = keyboardInput();
fA = Float.valueOf(sLine).floatValue();

System.out.println("Coefficent b : ");
sLine = keyboardInput();
fB = Float.valueOf(sLine).floatValue();

System.out.println("Coefficent c : ");
sLine = keyboardInput();
fC = Float.valueOf(sLine).floatValue();

// Print details of quadratic equation to screen.

System.out.println("The equation you have entered is : ");
System.out.println(+fA+".x^2 + "+fB+".x + "+fC);

// Check for degenerate roots (i.e., fA = fB = zero).

if ( fA==0 && fB==0 ) {
System.out.println("Cannot solve " + fC +" = 0.0");
return;
}

if ( fA==0 && fB !=0 ) {
fRoot1 = -fC/fB;
System.out.println("Degenerate root : Root = "+ fRoot1);
return;
}

// Compute discriminant of quadratic equation.

fDiscriminant = fdiscriminant(fA,fB,fC);

// Case for two real roots.

if ( fDiscriminant >= 0.0 ) {

fRoot1 = (float)(-fB/2.0/fA-(float)Math.sqrt(fDiscriminant) /
2.0 / fA );
fRoot2 = (float)(-fB/2.0/fA+(float)Math.sqrt(fDiscriminant) /
2.0 / fA);

System.out.println("Two real roots : Root1 : " + fRoot1);
System.out.println(" Root2 : " + fRoot2);
return;
}

// Two complex roots

fRoot1 = (float) (-fB/2.0/fA);
fRoot2 = (float) (Math.sqrt(-fDiscriminant)/2.0/fA);

System.out.println("Two complex roots");
System.out.println("Root1 : " + fRoot1 + "+" + fRoot2 + "i");
System.out.println("Root2 : " + fRoot1 + "-" + fRoot2 + "i");
}

/*
* =============================================================
* Method fdiscriminant() : compute discriminant of quadratic
*
* Input : fA, fB, and fC -- coefficients in quadratic equation
* Output : float fReturn -- discriminant of quadratic equation
* =============================================================
*/

static float fdiscriminant(float fA, float fB, float fC) {
float fReturn;

fReturn= (float)(fB*fB-4.0*fA*fC);
return fReturn;
}

/*
* ===========================================================
* Method keyboardInput() : Get line of input from keyboard
*
* Input : None.
* Output : String sLine -- character string of keyboard input
* ===========================================================
*/

static String keyboardInput() {
String sLine;

DataInputStream in = new DataInputStream(System.in);
try{
sLine = in.readLine();
return sLine;
}
catch (Exception e){
return "error";
}
}
}


[REF]http://www.isr.umd.edu/~austin/
[REF]http://www.isr.umd.edu/~austin/book.d/code.d/java.d/Quadratic.java

[Java]使用Jxl api處理Excel檔


import java.io.FileOutputStream;
import java.io.OutputStream;
import jxl.*;
import jxl.write.*;


public class Main {

public static void main(String[] args) {

try {
OutputStream os = new FileOutputStream("Test.xls");
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);

WritableSheet sheet = wwb.createSheet("First Sheet", 0);
Label label = new Label(0, 0, "This is a label");
sheet.addCell(label);
wwb.write();
wwb.close();

} catch (Exception e) {
System.out.println(e);
}

}
}

[REF]http://www.ibm.com/developerworks/cn/java/l-javaExcel/
[REF]http://poplaryy.javaeye.com/blog/187482

[Java] Readers Vs Writers

常見的Java串流使用範例:

緊記:有開檔,必要有關檔

讀檔 :

import java.io.*;

public class Read{

public static void main(String args[]){

String temp;

try{
FileReader myReader = new FileReader("input.txt");
BufferedReader br = new BufferedReader(myReader);
while((temp = br.readLine()) != null){
System.out.println(temp);
}
}catch(Exception e){}
}
}


建檔->寫檔:

import java.io.*;

public class WriteFile{
public static void main(String[] args) throws Exception{
int a;
try{
File MyFile = new File("MyText.txt");
FileWriter MyFileWriter = new FileWriter(MyFile);
BufferedWriter MyFileBuffer = new BufferedWriter(MyFileWriter);
MyFileBuffer.write("Hello World 1\r\n");
MyFileBuffer.write("Hello World 2");
MyFileBuffer.close();
}catch(Exception e){}
}
}



只要將 FileWriter MyFileWriter = new FileWriter(MyFile);
改成 FileWriter MyFileWriter = new FileWriter(MyFile,true);
代表在檔案的尾部寫入!!

開檔->寫檔(接著原檔尾部寫入):

import java.io.*;

public class WriteFile{
public static void main(String[] args) throws Exception{
int a;
try{
File MyFile = new File("MyText.txt");
FileWriter MyFileWriter = new FileWriter(MyFile,true);
BufferedWriter MyFileBuffer = new BufferedWriter(MyFileWriter);
MyFileBuffer.write("Hello World 1\r\n");
MyFileBuffer.write("Hello World 2\r\n");
MyFileBuffer.close();
}catch(Exception e){}
}
}
[REF]http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.lang.String,%20boolean)
[REF]http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html#FileWriter(java.lang.String,%20boolean)

2008年10月17日 星期五

[Java][FW]Slider Demo

說明:
預先讀取圖檔,有進度表顯示目前已讀取的進度,讀取完畢後依照順序顯示圖片,每秒切換一張圖片,循環顯示這些圖片。


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

public class Slider extends JPanel
 implements Runnable, ActionListener
{
 // 這裡是要修改的檔案張數
 final int readed_img = 30;

 private Image[] image = new Image[readed_img];
 private int nowindx;
 private Image nowimg;
 private int State;

 private javax.swing.Timer gtimer = new javax.swing.Timer(1000 ,this);
 private MediaTracker tracker = new MediaTracker(this);
 private Font FS = new Font("標準楷",Font.BOLD,35);

 Slider () {
  setLayout(null);
  setPreferredSize(new Dimension(800,600));
  setDoubleBuffered(true);

  for (int i=0 ; i < readed_img ; i++) {
   // 這裡是要修改的圖檔檔名
   image[i] = Tool.getImage("img/gurumins ("+i+").jpg");
   tracker.addImage(image[i], i%5);
  }

  State = LODING_STATE;
  new Thread(this).start();
 }

 public void run() {
  System.out.println("Loading image....");
  try {
   for (int i=0 ; i < readed_img ; i++) {
    tracker.waitForID(i%5);
    now_percent ++;
    repaint();
    // 這裡是delay的時間
    Thread.sleep(100);
   }
   System.out.println("Loading finish....");
   State = SLIDING_STATE;
   nowimg = image[0];
   gtimer.start();
   repaint();
  } catch (InterruptedException e) {
   System.err.println("Loading Image Error Occur");
  }
 }

 public void actionPerformed(ActionEvent e) {
  nowindx = (nowindx+1) % readed_img;
  nowimg = image[nowindx];
  repaint();
 }

 public void update (Graphics g) {
  paint(g);
}

 private int now_percent = 0;

 final int LODING_STATE = 1;
 final int SLIDING_STATE = 2;
 public void paintComponent(Graphics g) {
  g.clearRect(0,0,800,600);
  switch (State) {
   case LODING_STATE:
    g.setFont(FS);
    g.setColor(Color.black);
    g.drawString("Lodaing .....", 110, 300);
    for (int i=0 ; i < now_percent ; i++) {
     g.setColor(Color.yellow);
     // 這裡是可能要修改的進度列拓展寬度
     g.fillRoundRect(100+i*20, 400, 20, 50, 4, 4);
    }
   break;
  
   case SLIDING_STATE:
    g.drawImage(nowimg, 0, 0, this);
    g.setFont(FS);
    g.setColor(Color.blue);
    g.drawString("Now Slider = "+nowindx, 30, 300);
   break;
  }
 }

 public static void main(String[] args) {
  JFrame f = new JFrame("Slider Demo");
  Slider pn = new Slider();
  f.setContentPane(pn);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setResizable(false);
  f.pack();
  f.setVisible(true);
 }
}

class Tool {
 static public Image getImage(String name) {
  java.awt.Image img;
  java.net.URL url;
  try {
   url = Tool.class.getResource(name);
   img = Toolkit.getDefaultToolkit().getImage(url);
   return img;
  } catch (Exception e) {
   System.err.println("Cannot find Image file:"+name);
   return null;
  }
 }
}


[REF]http://codingnote.blogspot.com/2007/07/javaslider-demo.html

[Skill]當真的要用 "<"、">"、"&"的時候...

如果真的要用 "<",">","&" 那還是會有一點點的小麻煩。
在貼HTML code時要注意一下,括號會被browser當作tag讀掉,
所以如果要貼括號的話,要用下列的字元更換!

[Skill]MSword2003出現關閉麥克風提示!!

在使用MSWORD2003時經常出現提示:

文檔被保存,但是語音識別的數據丟失,因為沒有足夠的空間存儲這些數據。
確保沒有錄音時關閉麥克風,並檢查磁盤上的存儲空間。

Problem:word在沒有錄音時怎樣關閉麥克風?

Solution:
打開Word文檔,在菜單欄選【工具】=>【選項】,選項卡里點【保存】
把該選項下的【嵌入語言數據】前邊的複選框的對號去掉,然後點【確定】按鈕,就ok了。

[Skill]螢幕倒置了!!

那天在學校工讀,一起工讀的學妹竟然把螢幕倒置了,
大家看了一整個傻眼= =
結果查了一查"奇摩知識家"
終於解決了...

方法:

CTRL+ALT+方向鍵(方向鍵箭頭朝哪邊,螢幕顯示就朝哪邊)

[Skill] [FW]Internet Explorer 無法開啟網際網路網站!!

Problem:
IE瀏覽器在一開網頁時,常常跳出

「Internet Explorer無法開啟網際網路網站http://tw.yahoo.com,操作已終止。」

而當發生這樣的情形時,只要多按幾次「重新整理」,它又可以正常的開出網頁。

Solution:
移除Skype的Plug-In for IE,再重新開啟了IE,結果問題就消失了。


轉自:
http://changyang319.pixnet.net/blog/post/4474632

[PS] [FW] Photoshop「路徑」「貝茲曲線」超詳細教學

首先來簡要介紹一下鋼筆工具和路徑的概念



$ U% v! j- q& _" Q: g+ X* l1 鋼筆工具屬於向量繪圖工具,其優點是可以勾畫平滑的曲線(在縮放或者變形之後仍能保持平滑效果)r6 `2 p& F9 o! N4 m

2 鋼筆工具畫出來的向量圖形稱為路徑,路徑是向量的

[0 x( N X% l6 i9 \7 D. c! u) g# \7 G0 `3 路徑允許是不封閉的開放狀,如果把起點與終點重合繪製就可以得到封閉的路徑

S0 l& C$ k0 s. ]4 M7 z

i; K! Z( ~& a0 Z. U* _! L- S────────────────────

現在我們來繪製一個簡單的路徑

8 [/ x7 i! i1 U2 P5 d7 E/ S6 `如下圖在工具欄選擇鋼筆工具(快捷鍵P)





! ^% g( y/ g, H& a! n/ w並保持鋼筆工具的選項如圖所示(在工具欄上方)

選擇第二種繪圖方式(單純路徑),並取消橡皮帶功能



$ E$ C1 [ V" ]' A

: u/ c1 G b' ?0 a! r7 i1 i然後用鋼筆在畫面中單擊,會看到在擊打的點之間有線段相連

保持按住Shift鍵可以讓所繪製的點與上一個點保持45度整數倍夾角(比如零度、90度)

) X3 i$ J' U& T" X+ h這樣可以繪製水平或者是垂直的線段(圖中從第5個點開始按下了Shift鍵) h7 M/ R- M' D1 s



2 u: Y0 b) f1 M9 N5 J



0 p `2 n9 U. s1 p! w! ]: y }% M" N$ u0 V, n" h( l& G5 a4 _8 E────────────────────

L5 ]- p8 }- H. ^$ u: q' l5 j/ [0 Z" w% A1 `從上面的簡單練習中我們得出兩個規律:

6 |- h% ]* Y6 N/ X, Z$ W7 ]1 我們並沒有直接繪製線段,而是定義了各個點的位置,軟體則在點間連線成型

2 控制線段形態(方向、距離)的,並不是線段本身,而是線段中的各個點的位置

記住兩個術語:那些點稱為“錨點”(anchor);錨點間的線段稱為“片斷”(segment)。

剛才我們繪製的那些錨點,由於它們之間的線段都是直線,所以又稱為直線型錨點。

a7 I# K. k: Z# x |% v' h4 w V/ [+ v* u8 J% Z4 r0 l& t1 k ]. n0 i8 e& R────────────────────

, z& c( \) a: j# K+ c z$ q- l現在我們來繪製曲線形錨點

如下圖所示般,在起點按下滑鼠之後不要鬆手,向上拖動出一條方向線後放手

' |2 B* P, b& u: _/ X+ a7 S" T7 `! q, a7 D5 ]9 _& U然後在第二個錨點拖動出一條向下的方向線,以此類推,畫出類似圖示的路徑



7 ]; O0 T2 t; _' ?) `



我們看到在繪製出第二個及之後的錨點並拖動方向線時,曲線的形態也隨之改變

究竟曲線是怎樣生成的,我們又該如何來控制曲線的形態呢?% k7 @, s' s5 I2 n" z: U# I* h

除了具有直線的方向和距離外,曲線多了一個彎曲度的形態

( I$ q& v, p, S" {0 k方向和距離只要改變錨點位置就可以做到,但是彎曲度該如何控制?

- Z2 y3 V5 h* h$ S4 ]3 A────────────────────

0 f% _+ g* C! R如圖在工具欄選擇“直接選擇工具”,注意是下方那個空心的箭頭



+ h! v# [0 e* O" g; C5 P0 ^

假設我們剛才繪製的4個錨點分別是ABCDX- l& a6 t. V o) I$ G

; m% P3 p' F1 ?/ y* l用“直接選擇工具”去點取位於AB之間的片斷

會看到剛才我們繪製AB錨點時候定義的方向線





仔細看一下這兩個方向線 o6 O' e* I3 {* X& G1 m

; ]8 d9 ~+ ^ R再這樣想像:

g% N# c4 g5 T) b: o; e6 f: D* D& a0 H% [' V, A5 g. K一個人要從A點到B點,在A點出發的時候,位於A點的其他人看到他是朝著上偏右的方向走的 5 H3

) E% h9 a# ?0 j1 s3 @3 M3 q而位於B點的人,看到他是朝著下偏右的方向來的

那麼綜合兩地的觀測結果。就可以得出這個人行走的路線:必定是一個類似鍋蓋的上弧形

n4 d: A# [$ b/ Q& U( o: t────────────────────



然後如下圖所示般改變AB錨點上的方向線,將會看到曲線彎曲度的改變

注意方向線末端有一個小圓點,這個圓點稱為“手柄”,要點擊手柄位置才可以改變方向線



; l6 [, M+ ^5 f5 t; c

結合剛才所作的比喻,就不難理解了:

1 修改B錨點方向線為下,相當於指定那個人從A點上方出發後,從B點下方進入,那麼所走的路程就是一個S形

4 I* i3 y' K. [ q* C9 t& c; e* Z* ]2 再修改A錨點方向線為下,相當於從A點下方出發,再從B點下方進入,所走的就是一個下弧形的路程

7 M" Z% | L% p修改後的方向線如下圖:

^ o1 \: O6 `. ^- y1 F! z



2 u% S6 L) p) k────────────────────

明白了方向線的方向對曲線形態的影響後,我們來看一下方向線長短造成的影響

如下圖般,在同一方向上拖拉方向線:(可使用“直接選擇工具”)



2 U5 Z6 v* p9 H( o4 S& \2 E

對於一個錨點而言,如果方向線越長,那麼曲線在這個方向上走的路程就越長,反之就越短

l1 S2 k4 H; [9 f) r. D- ?可以這樣設想,曲線是一個橡皮筋,在頭尾兩端有兩個力在各自的方向上拉

哪個方向上力氣大,則橡皮筋就朝向這個方向多靠攏一些。反而反之

────────────────────

k6 T) [1 d5 a0 f* L+ V" E/ `2 ~- t除了修改錨點之外,也可以利用“直接選擇工具”,在片斷上修改曲線的形態



+ J4 \1 M* z8 `& \' f如下圖:



. Y0 u! T V* [8 U7 `



: E3 K8 p' M! E) Q1 b# D* i1 ^* L) L$ C, I& k+ f( [( i注意:這並不能說是“修改了片斷”,而應該說是“同時修改了兩個錨點”

" D8 K: g I4 E3 A$ ]7 y1 `/ I) h7 O0 q牢記原則:片斷是由錨點組成的,只有修改錨點才能改變片斷形態,這是不可逆的因果關係

8 Z. t" z2 N [1 K5 @: D' u, P5 D────────────────────

做一下小結:

G0 ^. d, N, [" b6 Ee1 t1 n, j2 Z2 S% m對於這條曲線上的除了起點和終點的BC兩個錨點而言,都存在兩條方向線:

0 f: v. t; x1 n$ C! c0 p$ p一條是從上一個錨點“來向”的方向線;另一條是通往下一個錨點的“去向”的方向線9 c9 U4 C7 N5 |1 ]

1 L# B( ^ E: x4 v" q6 T對於起點,只存在“去向”的方向線;對於終點,只存在“來向”的方向線

────────────────────

下面讓我們做個小練習,如圖:



& ]# S; v# d3 d% X0 V現在要求在兩個紅點之間繪製一條緊貼滑鼠外廓的曲線

D& S8 ?" R3 L7 k/ n* O- ^0 y ?% J3 _1 @. Z# t5 |( r: t! W5 p& U很可能你們繪製出來的是如下圖這個樣子的

2 y% G* J! T: F6 n

# y1 d0 i& W: ?- x0 Z7 @0 C雖然要求是達到了,但是這樣的路徑上使用了4個錨點 0

再看下圖:

Y5 A9 j2 l4 P. J( p7 ]% d

同樣的曲線效果,這裏只用了兩個錨點來繪製

. A2 ?) z$ d' f3 ~& C I5 a5 G' ?1 ~1 O/ I( a移動兩個紅點的位置再行繪製,很可能你們繪製的效果是這樣 - i7 B* X4 Z* x: Q1 z" a8 p3 E, w





3 L: q! n* A( g7 V: C" A0 k$ ^% P而實際上呢,也只需要用兩個錨點就可以繪製這條曲線了,如下圖

|( j. `4 [+ A9 Z f

: Z! n8 y* h0 A0 {: b

f. E) O: w; Q8 p) i9 |7 y) K! l0 F再換個位置繪製一條,也只需要兩個錨點,如下圖:

' d4 q# ~# ]6 E, w( p, ?( K

記住一個原則:繪製曲線的錨點數量越少越好

因為如果錨點數量增加,不僅會增加繪製的步驟,同時也不利於後期的修改

-----------------------------------------------------------------------------



作者 趙鵬 zhaopeng.net,所在論壇 blueidea.com

此文章允許任意轉載,允許用於商業印刷, 不需經過作者同意,不需支付任何費用。但必須保證文章的完整性和原始性,同時注明本版權聲明全部內容。

[Java]ArrayList.toArray的用法


import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class Test {
public static void main(String[] args) {
List list = new ArrayList();
for(int i =0 ;i < 100; i ++){
list.add(i);
}
Integer[] intArray = (Integer[]) list.toArray(new Integer[0]);
for(int i = 0 ; i < intArray.length; i++){
System.out.println("intArray[" + i + "] ==> "+ intArray[i]);
}
}
}

[Java]用Arraylist來排序和過濾陣列(Collections)





import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.HashSet;

import java.util.List;



public class SortListDemo {



public static class StringComparator> implements Comparator {



public int compare(T o1, T o2) {

if (o1 == null && o2 == null) {

return 0;

} else if (o1 == null) {

return -1;

} else if (o2 == null) {

return 1;

} else {

return o1.compareTo(o2);

}

}

}



public static void main(String[] args) {

List list = new ArrayList();

list.add("111-1111");

list.add("131-1111");

list.add("111-1111");

list.add("131-1111");

list.add("121-1221");

list.add("111-1111");

list.add("111-1111");



SortListDemo sortList = new SortListDemo();



Object[] result = sortList.SortStringList(sortList.removeIterance(list)).toArray();



for (int i = 0; i < result.length; i++) {

System.out.println(result[i]);

}

}



private List removeIterance(List list) {

ArrayList result = new ArrayList();

if (list != null && list.size() > 0) {

HashSet set = new HashSet();

set.addAll(list);

result.addAll(set);

}

return result;

}



private List SortStringList(List list) {

Comparator comp = new StringComparator();

Collections.sort(list, comp);

return list;

}

}



2008年10月16日 星期四

[Java]String與基本資料型態之間的轉換

1. 由基本資料型態轉換成 String
String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法
也就是 String.valueOf() 這個參數多載的方法

有下列幾種

String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串
String.valueOf(char c) : 將 char 變數 c 轉換成字串
String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串
String.valueOf(char[] data, int offset, int count) :

將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串

String.valueOf(double d) : 將 double 變數 d 轉換成字串
String.valueOf(float f) : 將 float 變數 f 轉換成字串
String.valueOf(int i) : 將 int 變數 i 轉換成字串
String.valueOf(long l) : 將 long 變數 l 轉換成字串
String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString()

用法如:

int i = 10;
String str = String.valueOf(i);
這時候 str 就會是 "10"

2. 由 String 轉換成 數字的基本資料型態
要將 String 轉換成基本資料型態轉,大多需要使用基本資料型態的包裝類別
比如說 String 轉換成 byte 可以使用 Byte.parseByte(String s)
這一類的方法如果無法將 s 分析 則會丟出 NumberFormatException


byte :
Byte.parseByte(String s) : 將 s 轉換成 byte
Byte.parseByte(String s, int radix) : 以 radix 為基底 將 s 轉換為 byte
比如說 Byte.parseByte("11", 16) 會得到 17

double :
Double.parseDouble(String s) : 將 s 轉換成 double

float :
Double.parseFloat(String s) : 將 s 轉換成 float

int :
Integer.parseInt(String s) : 將 s 轉換成 int

long :
Long.parseLong(String s) : 將 s 轉換成 long


用法如:

try
{
String str = "1234";
int a = Integer.parseInt(str);
}
catch (NumberFormatException e)
{
System.out.println(" parse int error!! " + e);
}


-------------------------------------------------------------

轉錄自java連線版
發信人: TAHO, 看板: java 精華區
標 題: String與基本資料型態(int byte...等)之間的轉換
發信站: 140.126.22.6 竹師風之坊
Origin: Local

[Java]Use HttpClient Login Websites

要讓以下程式run起來,必須先要...
Step1.取得其相關使用到的API --- 點我下載
Step2.下載回來後,要懂得 Set ClassPath
Step3.另外可以參考這三篇,裡頭的內容都寫的超詳細的。
- Link1
- Link2
Step4.如果不幸的,Step3的連結網頁失效了。可以參考我備份的版本。
- My backup Link1
- My backup Link2
- My backup Link3

//Remember Set The Class Path


import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.cookie.*;
import org.apache.commons.httpclient.methods.*;

public class JClientLoginTest {
public static void main(String[] args) throws HttpException, IOException {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost( "bbs.cpcw.com" , 80, "http" );

PostMethod post = new PostMethod( "/logging.php?action=login" );
NameValuePair name = new NameValuePair( "username" , "dongle2001" );
NameValuePair pass = new NameValuePair( "password" , "1a9i8h1a" );
NameValuePair quest = new NameValuePair( "questionid" , "0" );
NameValuePair answer = new NameValuePair( "answer" , "" );
NameValuePair cookietime = new NameValuePair( "cookietime" , "315360000" );
NameValuePair submit = new NameValuePair( "loginsubmit" , "提   交" );
post.setRequestBody( new NameValuePair[]{name,pass,quest,answer,cookietime,submit});
int status = client.executeMethod(post);
post.releaseConnection();

CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
Cookie[] cookies = cookiespec.match("bbs.cpcw.com", 80, "/" , false , client.getState().getCookies());
if (cookies.length == 0) {
System.out.println( "None" );
} else {
for ( int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].toString());
}
}

GetMethod get=new GetMethod("/viewthread.php?tid=883329");
client.executeMethod(get);
String response = new String(get.getResponseBodyAsString().getBytes("8859-1"));
System.out.println(response);
get.releaseConnection();

}
}


不錯的範例網站:
http://www.java2s.com/Code/Java/Apache-Common/GetCookievalueandsetcookievalue.htm

[Java]Get The Google's Searching Page


import java.net.*;
import java.io.*;
public class qwer {

/** Creates a new instance of Main */
public qwer() {}
public static void main(String[] args){
try{
Socket s = new Socket("images.google.com.tw", 80);
String head = "GET /images?gbv=2&um=1&complete=1&hl=zh-TW&lr=lang_zh-CN%7Clang_zh-TW&q=flower&aq=f HTTP/1.0\n" +
"Host: images.google.com.tw\n"+
"From: 2.1.1.1 HTTP/1.0\n"+
"Connection:close\n\n";
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream());
PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("Test.txt")));


out.print(head);
out.flush();
String line="";
while ((line = in.readLine()) != null){
System.out.println(line);
output.println(line);
}
out.close();
output.close();
in.close();
}catch(Exception e){}
}}

[Java]控制JTextField的輸入為數字


import javax.swing.text.*;
import java.awt.*;
/**
* 描述:使用格式JTextField.setDocument(new NumberDocument())即可
**/
public class NumberDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0;
for (int i = 0; i < result.length; i++){
if( Character.isDigit(source[i]) ) //是數字
result[j++] = source[i];
else{ //不是數字
Toolkit.getDefaultToolkit().beep();
System.out.println("你輸入了非數字字符!!")
}
}
super.insertString(offs,new String(result,0,j),a);
}
}

[Java] Use "Http Medhod" Get The Html Page

Method 1:


import java.net.*;
import java.io.*;

public class Google {

public Boolean dlgooglepage(String Keyworld, int pagenum) {
try {
String a1 = "/tw/auction/d33856968";
String a2 = "tw.f4.page.bid.yahoo.com";
Socket s = new Socket(a2, 80);
String head = "Request " + a1 + " HTTP/1.1\n" +
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*" +
"Accept-Language: zh-tw" +
"UA-CPU: x86" +
"Accept-Encoding: gzip, deflate" +
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)" +
"Host: " + a2 + "\n" +
"Connection: Keep-Alive\n\n";
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream());
out.print(head);
out.flush();
FileWriter output = new FileWriter("Http.html");
String line = "";
while ((line = in.readLine()) != null) {
output.write(line + "\n\r");
}
output.close();
out.close();
} catch (Exception e) {
System.out.println("Wrong");
return false;
}
return true;
}
}


Method 2:

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.*;
import java.io.*;
public class Google {
public Boolean dlgooglepage(String Keyworld, int pagenum) {
HttpURLConnection httpConn = null;
try {
URL url = new URL("http://tw.bid.yahoo.com/tw");
httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
//httpConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible//; MSIE 7.0//; Windows NT 6.0//; SLCC1//; .NET CLR 2.0.50727//; .NET CLR 3.0.04506//; InfoPath.2)");
InputStream in = httpConn.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
String result = null;
FileWriter output = new FileWriter("Http111.html");
while ((result = bf.readLine()) != null) {
output.write(result + "\n\r");
}
output.close();
} catch (Exception e) {
System.out.println("Wrong");
return false;
}
return true;
}
}

[Java][轉]正則表達式中問號等特殊字符的轉義

正則表達式中問號等特殊字符的轉義,除 .$ ^ { [ ( | ) * + ? \ 外,其他字符與自身匹配。
但是其中並未註明這些字符應該匹配為什麼字符。為了方便自己以後查閱,也為了方便網友搜索,
我在網上查了很多資料就把所知的都寫在這裡了。


點的轉義 :. ==> \\u002E
美元符號的轉義:$ ==> \\u0024
乘方符號的轉義:^ ==> \\u005E
左大括號的轉義:{ ==> \\u007B
左方括號的轉義:[ ==> \\u005B
左圓括號的轉義:( ==> \\u0028
豎線的轉義 :| ==> \\u007C
右圓括號的轉義:) ==> \\u0029
星號的轉義 :* ==> \\u002A
加號的轉義 :+ ==> \\u002B
問號的轉義 :? ==> \\u003F
反斜槓的轉義 :\ ==> \\u005C


Example:

String tmpp ="<";
String tmp = tmpp +"a class="clink" href="http://www.blogger.com/%5C%22+servercdn+%5C%22/comic/123/33861/?s=9" target="_blank">";
Pattern p = Pattern.compile(".*/comic/(.*)\\u003Fs=.*");
Matcher m = p.matcher(tmp);

if(m.matches()){
System.out.println(m.group(1));
}
else
System.out.println("no match");


[Java]Path & ClassPath

設定 path 是告訴系統, 執行檔程式位於什麼地方
主要是在執行 javac 跟 java 這兩個程式時使用的
也就是當你在命令列打入 javac xxx.java 和 java xxx 時
系統要去那裡找 javac 和 java 這兩個執行檔

設定 classpath 是告訴 Java
要使用或執行的 class 檔所在的路徑
比如說: 我們輸入 "java A" 命令 要求 Java 執行 A.class 這個類別檔時
Java 會由 classpath 所設定的路徑位置開始尋找 A.class
所以如果你沒有設定, 那 Java 就會跟你說他找不到
就算你是在 A.class 所在的路徑執行這個命令
也要在 classpath 裡面跟 Java 說 要到目前所在的路徑尋找 A.class
否則 Java 還是找不到的
另外 如果 A.class 裡面用到 B.class 時
在 classpath 設定中也要包含 B.class 所在的路徑

在較新版本的 SDK 中,並不需要在 classpath 裡面設定 SDK 原有的 class 檔或 jar 檔路徑
程式已經將路徑預設好了,你只需要設定額外的類別檔路徑就可以了

設定如下:
在 Windows 95/98 平台中
設定的方法為 用文字編輯器 (如小作家, notepad 等等)
編輯
c:\autoexec.bat

在裡面加入

SET PATH=C:\jdk\bin\
SET CLASSPATH=.;C:\java\class\;C:\java\jar\b.jar

如果這個檔案裡面原來就有 SET PATH 或 SET CLASSPATH
那就將路徑加在原來那行後面 並用 ; 隔開
( 在 J2SDK1.3 版之後的 Windows 版本
如果 CLASSPATH 沒有設定的話
Java 會預設為 CLASSPATH=.;
如果你有設定 則以設定的為主)

如果不設定,則可以用

c:\> c:\jdk\bin\java -cp c:\java\class\;c:\java\jar\b.class;c:\java\test\ xxx

來執行。
設定好之後就可以簡化成

c:\> java xxx

在 Linux 底下,若路徑為

/usr/local/java/bin/java
/usr/local/java/bin/javac
/usr/local/class/a.class
/usr/local/jar/b.jar
/home/test/java/xxx.java
/home/test/java/xxx.class


則需在 /etc/profile (所有帳號共用) 加入

PATH=/usr/local/bin/:$PATH
CLASSPATH=./:/usr/local/class/:/usr/local/jar/b.jar
export PATH CLASSPATH

PS:
1. 以上設定好之後, 最好重新開機, 或重新登入,
反正就是要系統重新執行這個檔案
2. = 號兩側不可以有空白
3. Java 是會區分大小寫的, 不要把類別檔的大小寫 寫錯了
4. 設定中的 . 是代表使用者目前所在目錄

安裝其他套件之 ClassPath 設定
一般來說 當下載新的套件時,需要將新套件的路徑設定到 CLASSPATH 中
比如說,下載 JavaMail 裡面有 mail.jar 放在

c:\javamail\mail.jar 或是 /usr/local/javamail/mail.jar

那原來的 CLASSPATH 後面就要加上

;c:\javamail\mail.jar 或是 :/usr/local/javamail/mail.jar


還有要注意的是,如果安裝的是 server,如 JServ 或 Tomcat 這一類的程式
那也要把原來 classpath 設定的路徑,寫入到 Jserv 或 Tomcat 這些程式的設定檔中
這樣這些 server 才知道要去哪裡找 class。
------------------------------------------------

整理自竹師風之坊java精華區(bbs://140.126.22.6)

[Java]Get Week of the Month


import java.util.Calendar;

class Main {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//Java 中月 1 - 12 月,分別對應是 0 - 11
//設定目前日期為 2000/02/01(29天)
//cal.set(2000, 1, 1);
System.out.println("現在的時間: " + cal.getTime());
System.out.println("本月共有 : " + cal.getActualMaximum(Calendar.WEEK_OF_MONTH) + " 週");
int date_Count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//Java 中星期 日、一、二、三、四、五、六,分別對應是 1 - 7
if ((cal.get(Calendar.DAY_OF_WEEK)) == 1) {
System.out.println("今天星期天");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 2) {
System.out.println("今天星期一");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 3) {
System.out.println("今天星期二");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 4) {
System.out.println("今天星期三");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 5) {
System.out.println("今天星期四");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 6) {
System.out.println("今天星期五");
} else if ((cal.get(Calendar.DAY_OF_WEEK)) == 7) {
System.out.println("今天星期六");
}
}
}

2008年10月14日 星期二

[Skill]How to Paste Code On The Blog?

How to Paste Code On The Blog?

Effect1:

CMD,.cmd {
display: block;
/* fixes a strange ie margin bug */
font-family: Courier New;font-size: 8pt;
overflow:auto;
color: #ccc;background: #000 url(http://polin2005.googlepages.com/BG_CMD.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;line-height: 1.2em;
}



Effect2:

CODE, .code {
display: block;
/* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
overflow:auto;
background: #f0f0f0 url(http://polin2005.googlepages.com/BG_CODE.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
line-height: 1.2em;
}


Effect3:




public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
-----------------------------------------------------
根據你使用的語言根據下面的表代換"language"這個字眼。























[REF] http://synnwang.blogspot.com
[REF] http://grandsights.twbbs.org
[REF] http://sharedderrick.blogspot.com

[Mood]Starting...

之前一直想找個網誌來寫學習筆記,
物色很多blog site,
但是都沒有一個順眼的,
今天才發現原來google本身就有personal blog,
害我還繞了一大個彎,
anyway,希望日後能好好的經營這個學習筆記的倉庫...
加油