如何在 Pidgin 改變聊天暱稱?

要改變 SKype、MSN、Yahoo! Messenger 等 IM 軟體的暱稱,實在非常容易,但是在 Pidgin 中,剛開始使用的人會找不到如何設定。其實在 Pidgin 改匿稱非常簡單唷!

改匿稱的方法很簡單,只要打開Pidgin,並選擇【帳號】→【要改變匿稱的帳號】→【設定匿稱】,再設定匿稱就可以啦!

而以上這一點小技巧,希望有幫助到您

[java] 如何增加無限大的陣列並且排序,以 ArrayList 為例!

若您要在 C 語言中提供無限大的陣列,那麼您可能要用Linked List,並用指標指啊指的,才有辦法完成,這對 Java 這種不提供指標的語言來說,看來是不可能提供無限大的陣列了。

 

但是,Java 的好處就是它提供了許多寫好的 API 可供使用,於是在包山包海 API 中,終於讓我找到一個叫做「ArrayList」的物件,這個物件類似 C++ 的 Vector,可以提供無限大的陣列供程式設計師使用。就讓我透過以下的例子,來簡單說一下這個物件的用法。

 

首先,在使用任何物件之前,都要先看一下他的宣告,而我們可以從Java API身上,得到他的宣告如下:

ArrayList list = new ArrayList();

 

接下來,大概就可以得知如何新增增加物件了!舉例來說,若我們要增加40、20、30這三個數,則是可以用以下方式:

list.add(40);
list.add(20);
list.add(30);

 

基本上,你可以把 list 看成一個陣列,而他的索引值是從 0 開始,故若要取出第二個數為例,因第二個數的索引值為1,則只要用以下程式碼即可:

list.get(1);

 

至於排序嘛,則要使用 Collections 這個類別,程式碼如下:

Collections.sort(list);

 

是不是很方便呢?

PlainOldFavorites ~ Firefox 也能直接存取 IE 「我的最愛」 (Firefox 套件)

PlainOldFavorites 是一套讓您直接存取 Internet Explorer (IE) 之我的最愛的套件,可不必將「我的最愛」匯入「Firefox書籤」,另外也可以加入和組織「我的最愛」,可以說是非常方便。

 

 

◎◎ 套件 小檔案◎◎
套件名稱:PlainOldFavorites
套件介面:英文
套件版本:1.2
套件性質:Freeware
支援瀏覽器:Firefox
套件下載:http://forum.jeasy.info/viewtopic.php?f=69&t=1812

安裝完套件後,直接點功能表上的〔我的最愛〕即可存取 IE 的書籤囉,相當簡單而且易於使用的套件。

 

Windows 的關機指令詳解,如何用關機指令關機、重開機、休眠等

我想有用過Windows的人,應該都知道 Windows內建了一個很好的關機介面,但是這並不稀奇,海芋接下來,要教大家的是如何在指定的秒數後關機。

首先,我們必須要先認識一下,Windows的關機指令
shutdown [-i | -l | -s | -r | -a] [-f] [-m \computername] [-t xx] [-c "comment"] [-d up:xx:yy]

 

這個指令,所代表的意義為下:
沒有引數 顯示這個訊息 (和 -? 相同)
-i 顯示 GUI 介面,必須是第一個選項
-l 登出 (不能和 -m 選項一起使用)
-s 電腦關機
-r 關機並重新啟動電腦
-a 中止系統關機
-m \\computername 從遠端進行關機/重新啟動/中止
-t xx 將關機等候時間設定成 xx 秒
-c "comment" 關機註解 (最多 127 個字元)
-f 強制關閉執行中的應用程式,不顯示警告
-d [u][p]:xx:yy 關機原因代碼
u 是使用者代碼
p 是預先計劃的關機代碼
xx 是主要原因代碼 (小於 256 的正整數)
yy 是次要原因代碼 (小於 65536 的正整數)

Read More

如何合併中華電信帳單,為地球盡份心力?

若您家中有一個以上的中華電信用戶,您或許會覺得帳單一張一張來,非常地浪費紙,根據統計,帳單每年用紙秏100萬顆樹,如果一張帳單中,就有許多的門號,那是不是很節省紙呢?中華電信目前有提供多張帳單合併的服務,即日起只要上中華電信的網站,申請帳單合併,就可以為地球盡一份心力喔!

網址如下:
http://billservice.hinet.net/account/a2/account/index6.htm

另外,亦可以申請電子帳單喔!電子帳單網址如下:
http://www.cht.com.tw/ou_web/chtn/ebill/index.htm

而如果忘了繳費,也可以從中華電信網站查詢,再透過銀行存摺或信用卡的方式,線上沖銷喔!
https://info.hinet.net/account/tele_fee.asp

介紹了這麼多,無非就是希望,大家能多多利用網路方便的特性,少製造一些廢紙的浪費,為地球暖化多盡一分心力。

[Java] 介面及抽象類別的差異

介面是和抽象類別很像的東西,就把想到的打在下面,以免忘記。

(1)本身具有資料成員及抽象函式,必須以interface來宣告。

interface 介面名稱
{
  資料成員;
  抽象方法;
}

(2)資料成員必須初使化,本身為public static final 型態,亦可省略不宣告,由系統自動幫忙宣告。

(3)介面中若有多個函式,則必須同時宣告為abstract型態,且修飾子只能宣告為public或不宣告。

class 類別名稱 implements 介面1(,介面2,.....)
{
}

(4)介面不可使用new 運算子產生物件,而利用介面A打造新的類別B的過程,稱之為B實作介面A。

(5)可使用類別B實作多兩個以上的介面,但不可使用類別B繼承兩個以上的抽象類別。

>class 類別名稱 implements 介面1(,介面2,.....)
{
}

(6)介面和類別一樣,都具有繼承的功能,但一個子介面可繼承多個父介面,但一個子類別不可繼承多個父類別。

interface 介面名稱 extends 介面1(,介面2,.....)
{
}

(7)介面通常用來描述外部的能力,如機車的輪胎型狀等。

(8)需要使用迂迴的方式去找出實體類別間的對應關係,所以與抽象類別的速度相比之下,較為緩慢。

[Java] 什麼是抽象類別 (abstract class)呢?

Java 中有所謂的抽象類別,在他的API中,亦大量使用抽象類別,而抽象類別是什麼呢?海芋就將他整理如下:

(1) 目的:讓程式設計師能依據此類別,來修改或建立新的類別。

(2) 格式:

abstract class 類別名稱
{
資料成員;
抽象方法;
實體方法;
}

其中,抽象方法不能定義處理方法,且其修飾子亦不能為private,否則子類別無法繼承,進而無法改寫;而資料成員亦可不必初始化,可以由子類別實做並初使化。

(3) 子類別可繼承自抽象類別,並改寫抽象類別中,未定義的處理方式的抽象方法,或是已定義處理方式的方法或變數,但仍然要遵守單一繼承的規定。而抽象類別亦可以存取被子類別物件中,被子類別改寫的成員。

(4) 抽象類別不能用來直接建立物件,因為其定義未有明確的定義。

(5) 若子類別未能改寫父抽象類別中所定義的抽象方法,則此子類別亦需宣告為抽象類別。

(6) 抽象類別比較常用在產品的內部,如USB的接頭是固定的,但是傳輸速度可能會所差異,傳輸速度便可宣告為抽象類別,再由子類別去實做。

(7) 不需要使用迂迴的方式去找出實體類別間的對應關係,所以與介面的速度相比之下,較為快速。

剩下的有想到再補吧!有錯也歡迎指正唷!

[Java] 將字元、字串轉成大寫或小寫

我們可以透過Java中的 Character 這個 Class 底下的method,將字元轉成大寫或小寫,當然前提是要判斷他是不是英文字母。首先,我們先判斷他是不是英文字母的函式為:

public static boolean isLetter(char ch)

 

接下來,是要轉成大小寫的函式為

public static char toUpperCase(char ch)
public static char toLowerCase(char ch)

 

所以,如果要將一個字元 id 轉成小寫的字母,可以用以下的程式碼:

if(Character.isLetter(id)){
   id=Character.toLowerCase(id);
}

 

反之,如果要將一個字元 id 轉成大寫的字母,可以用以下的程式碼:

if(Character.isLetter(id)){
   id=Character.toUpperCase(id);
}

 

如果要將字串全部轉成大寫,也是一樣用「toUpperCase」,用法如下。

String str="Welcome";
str = str.toUpperCase();

結果就是:

WELCOME

 

如果要將字串全部轉成小寫,也是一樣用「toLowerCase」,用法如下。

String str="Welcome";
str = str.toLowerCase();

結果就是:

welcome

[Java] 產生亂數整數的方法

在 Java 中產生亂數有幾種方法,一般人最常用的就是 Math.random() 這個method,這個函式就是回傳一個正的double數值,他是介於 0.0~1.0 之間,但不包含 1.0的值。聰明的你一定想得到,如果我們要產生一個 1~42 的亂數,該怎樣做呢?答案其實很簡單,因為 Math.random()是回傳0.0~1.0之間的值,所以我們可以把 Math.random() 乘以42後,即會變成 0.0~42.0 的值,但不包含 42,再強制轉換成 int 型態後,再加上 1 即可。

用程式碼來說明,即是下列程式碼:

(int)(Math.random()*42+1)

 

第二種方法是使用 Random 這個 Class,以亂數產生整數而言,裡面有兩個函式,分別如下:

public int nextInt(int n)
public int nextInt()

 

就 nextInt(int n) 的原始碼如下:

public int nextInt(int n) {
   if (n <= 0)
     throw new IllegalArgumentException("n must be positive");

   if ((n & -n) == n)  // i.e., n is a power of 2
     return (int)((n * (long)next(31)) >> 31);

   int bits, val;
   do {
       bits = next(31);
       val = bits % n;
   } while (bits - val + (n-1) < 0);
   return val;
 }

 

nextInt() 的原始碼如下:

public int nextInt()
{
    return next(32);
}

 

舉例來說,如果要產生 1~100 的值,我們則可以使用 nextInt(int n) 這個函式,寫法如下:

Random r=new Random();
System.out.println(r.nextInt(100));

 

但如果要產生 0~232 的亂數,則必須要使用 nextInt() 了。

[Java] Polymorphism 多型定義

Polymorphism 又稱為多型,他的討論要在類別間有繼承關係才有意義,而他的定義很少發現有人能一次說得很清楚,所以海芋就以幾句話來帶過他。簡單來說,多型是指子類別繼承父類別時,同時改寫父類別的函式或變數,而我們可以宣告一個屬於父類別的變數,去存取子類別中改寫自父類別的函式或變數,這我們稱之為多型 Polymorphism 。

舉個生活一點的例子,若有一個父類別是動物,那麼有一個子類別鳥繼承自動物這個類別,當我們看到鳥的時侯,可以說牠是一隻鳥,也可以說牠是一隻動物。同樣的東西,卻有不同的表示型態。

舉個程式碼而言:

class Animal { 
 public int getLegs(){
 return legs;
 }
}
class Bird extends Animal{
public int getLegs() {
return legs*2;
}

public String getBirdCall() {
return birdCall;
}

public class MainProgram{
public static void main(String args[]){
Animal animal = new Bird();
animal.getLegs();
//animal.getBirdCall(); it's not ok
}
}

而在此例子中,animal是宣告給父類別,所以他只能認識父類別擁有的函式或變數,所以他能存取「getLegs()」這個函式。

而另一個要記的重點是,父類別若轉成子類別需要靠強迫轉型,子類別轉成父類別則是屬於自動轉型,而兄弟類別之類亦可以使用強迫的方式來轉型喔!