[Fx]

Sounds like a good deal, right? All you have to do is get Firefox 3 during Download Day to help set the record for most software downloads in 24 hours - it's that easy. We're not asking you to swallow a sword or to balance 30 spoons on your face, although that would be kind of awesome.

這是Firefox所舉辦最新的一個活動DOWNLOAD DAY 2008,主是要為了Promote即將發行的Firefox 3.0。有興趣的可以連結到活動的首頁去看看。

其實活動也沒有很特別,就是想要讓大家在同一天一起下載Firefox 3.0,讓單一軟體的下載次數/天能夠創下世界紀錄。然後這個網站提供了一個小小的地區統計機制,讓你可以"承諾"要參加這樣的活動並且會在發表FF3.0的當天來下載。他根據不同地區的使用者自己選擇自己所在的國家,然後網站會幫你做統計並且用動態地圖的方式來呈現。算是爭一口氣吧,大家可以幫忙衝一下台灣的人氣:P

[Java] How to sort Object in Java

shen129 | 2 January, 2007 7:15

以下是實踐Java排序的一些心得。

可排序的物件(例如Bean)需實作java.lang.Comparable interface,這個interface僅包含了單一方法 - compareTo,compareTo定義了該物件與其他同類型物件該如何排序的規則

compareTo的規則是:透過回傳值int來表示排序的大小,回傳值為負數表示本身物件要排序的屬性,比被比較的物件的該屬性,在邏輯上的地位較小,若為正則相反。回傳值若為0則表示兩物件相等


某些物件本身已經實作了compareTo這個method,像是String、File、Date和Time等物件


若 要排序多個屬性,可建立一個物件實作java.util.Comparator介面,Comparator僅包含compare一個方法,參數型態是 Object。方法內定義了兩個相同物件該如何排序的規則。實作時要經過轉型(有可能造成ClassCastException)。回傳值型態一樣為 int,若回傳值為正數,則obj1的排序在obj2之後,若回傳值為負數,則obj1的排序在obj2之前,若回傳值為0,則兩者相等。規則同 compareTo


同類型物件才能被排序(也才有意義)


實際執行排序的方法包括Arrays.sort和Collnections.sort,兩者都是static method,將該物件陣列及實作Comparator介面的物件傳入後,即可排序(不用回傳值)

==
方法
1

public class FileObject implements java.lang.Comparable {

private String filename;

private Long filesize;

public FileObject() { }

public String getFilename() {

return this.filename;

}

public Long getFilesize() {

return this.filesize;

}

public void setFilename(String name) {

this.filename = name;

}

public void setFilesize(Long size) {

this.filesize = size;

}

public int compareTo(Object obj) throws ClassCastException {

if (!(obj instanceof Example1))

throws new ClassCastException("Error msg here.");

// 先做轉型

FileObject fileobj = (FileObject) obj;

// 使用String內建的規則

return this.filename.compareTo(fileobj.getFilename());

}

}

用法

FileObject[] fileObj = new FileObject[10];

Arrays.sort(fileObj);

方法2 – 實作java.util.Comparator的方式

public class FilesizeComparator implements Comparator {

public int compare(Object obj1, Object obj2) {

File file1 = (File) obj1;

File file2 = (File) obj2;

// 這裡放置要比較的邏輯,不過回傳值要是int,要注意int溢位的問題

if (file1.getFilesize() > file2.getFilesize())

return 1;

if (file1.getFilesize() <>

return -1;

if (file1.getFilesize() = file2.getFilesize())

return 0;

}

}

用法

FileObjectp[] fileObj = new FileObject[10];

Arrays.sort(fileObj, new FilesizeComparator());

[計概] 進制轉換

十六進位
  • 十六進位的位置結構只能使用0~9的數字,11~15則不能使用(因為他們是兩位數的數字),所以必須要用A~F來表示11~15。
  • hex(hexadecimal)是十六進位的縮寫。

  • 假設有一個16進位的數字是0x6A(0x只是習慣放在前面,代表這是16進位的數字,本身沒有特別的意義),6=0110、A=1010,所以整個位元組就是01101010。

[Blogger] 在內文中輸入HTML

如果要在文章中輸入HTML語法,記得<用 &lt; 取代;>用 &gt;取代,不然會被編輯器誤認為HTML標籤。

[Ajax] 初步練習

CSS觀念
  • 外部連接套用

    在這種方式下,所有的 CSS 樣式宣告都是存在另外一個檔案中。該檔案通常名稱為 .css。在 HTML 文件的

    ..
    之中,我們將用以下的程式碼將這個 .css 檔案連接進入

  • <link rel=stylesheet type="text/css" href="external-stylesheet.css">

  • 以上這一行會將 external-stylesheet.css 這個檔案內所宣告的樣式加入 HTML 文件。

重點整理

  • 非同步應用是使用JavaScript物件作出請求,而不是提交表單。
  • 請求和回應是由網頁瀏覽器處理,而不是直接由JavaScript程式所處理。
  • 一旦網頁瀏覽器得到非同步請求的回應,他會以伺服器的回應回頭呼叫JavaScript程式。
  • 執行Ajax程式一定要執行JavaScript程式。所以如果將瀏覽器的JS功能關閉,也就不能使用Ajax的程式了。
  • 所有的JS程式碼都必須放在<script>和</script>之間。

[認證] CCNA - 第一章(網路互連)

* 1-1 網路互連原理
  • 造成LAN上交通壅塞的可能原因有:
    • 有太多的主機在廣播網域中
    • 廣播風暴
    • 多點傳播(Multicast)
    • 低頻寬
    • 連結集線器到網路上
    • 大量的ARP或IPX交通(IPX-Novell的繞送協定,類似IP)
  • 路由器的作用是將網路連結在一起,並將資料封包從一個網路繞送到另一個網路。
  • 只有路由器切割廣播網域
  • 廣播網域(Broadcast Domain)指的是位於相同網段上,能夠聽到該網段上傳送之所有廣播的所有裝置。
  • 使用路由器的優點:
    • By default, 他們不會轉送廣播
    • 可以根據第三層(網路層)的資訊(IP資訊)來過濾網路
  • 路由器的四個功能:
    • 封包交換
    • 封包過濾
    • 互連網路的通訊
    • 路徑選擇
  • 交換器的功能不是用來建立互連網路,而是用來增加互連LAN的功能。
  • By default, 交換器會分割碰撞網域(Collision Domain)。
  • 交換器會建立獨立的碰撞網域,但仍然屬於單一的廣播網域。路由器的每個介面則屬於個別的廣播網域。

  • OSI模型是網路的基本架構,描述資料及網路資訊如何從一台電腦穿越網路媒介,傳達至另一台電腦。

  • Application Layer(應用層):使用者真正和電腦溝通的地點。 Application Layer focuses more on network services, APIs, utilities, and operating system environments.
  • Presentation Layer(表現層):將資料呈現給應用層,並且負責資料的轉換與編碼格式。藉由資料的轉換,可以確保由某系統應用層所傳輸的資料,可以由另一系統的應用層所讀取。An example of a presentation service would be the conversion of an EBCDIC-coded text file to an ASCII-coded file.
  • Session Layer(會議層):這個層級負責建立網路連線,等到資料傳輸結束時,再將連線中斷,運作過程有點像召集多人開會(建立連線),然後彼此之間意見交換(資料傳輸),完成後,宣佈散會(中斷連線)。決定資料傳輸的模式,如單工、半雙工或全雙工等。(可參考這裡)
  • Transport Layer(傳輸層):傳輸層會將資料切割和重組到資料串流中。這層的服務會將上層應用的資料做切割和重組,並且統整到同一資料串流中。提供端點對端點的資料傳輸服務,並且能夠在互聯網路的傳送主機與目的主機間建立邏輯連線。TCP與UDP就是在此層服務。
  • Network Layer(網路層):負責管理裝置的定址,追蹤網路裝置的位置,以及決定如何移動資料的最佳方式。路由器就是規範在Network Layer的裝置。運作方式如下:當路由器從介面收到封包時,會檢查該封包的Destination IP Addr,如果該封包的目的地不是當台路由器,就會在路徑表中尋找目的地的網路位置。一旦路由器選定好離開的介面後,就會將該封包送過去;如果在路徑表中找不到相關的路徑,就會丟棄該封包。
  • Data Link Layer(資料鏈結層):此層提供資料的實體傳輸。並且處理錯誤通知、網路拓樸與流量控制。意味著此層會使用硬體位置,遞送訊息給LAN上的適當裝置,並且將網路層的訊息轉換為位元,供實體層傳輸。
    橋接器(Bridge)和交換器(Switch)就是在這一層的裝置。第二層和第三層裝置關注的都是位置,單是第二層必須要找出特定的裝置,而第三層則是要找出特定的網路。路由器擁有對應互連網路的路徑表;而交換器和橋接器則具有對應特別裝置的過濾表。
    當交換器建立好過濾表之後,只會將收到的Frame傳送到對應的目的硬體位置所在的網段。當找不到時,就是送至所有相連接的網段。
  • Physical Layer(實體層):實體層負責送出位元和接收位元。位元的值只有0和1。集線器就是屬於這一層的裝置。

[認證] CCNA - 前言

* 前言
  • 題目數量:50~60題
  • 時間限制:90分鐘
  • 通過標準:約85%
  • 測驗格式:單選、複選、拖曳、填充、路由器模擬
  • 注意事項:考試期間不能在試題之間切換,答題確定之後就不能夠再更改

[OS] Thread Creation and Termination

The pthread_create() function is used to create a new thread, with attributes specified by attr, within a process. If attr is NULL, the default attributes are used.
  • function定義如下:
#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void*), void *arg);
If successful, the pthread_create() function returns zero. Otherwise, an error number is returned to indicate the error.

pthread_create(thread, attr, start_routine, arg) 四個參數的定義如下:
  • thread: An opaque, unique identifier for the new thread returned by the subroutine.
  • attr: An opaque attribute object that may be used to set thread attributes. You can specify a thread attributes object, or NULL for the default values.
  • start_routine: the C routine that the thread will execute once it is created.
  • arg: A single argument that may be passed to start_routine. It must be passed by reference as a pointer cast of type void. NULL may be used if no argument is to be passed.

[名詞] LAMP

LAMP是一個縮寫,它指一組通常一起使用來運行動態網站或者伺服器的自由軟體:

* Linux, 作業系統;
* Apache, 網頁伺服器;
* MySQL, 資料庫管理系統 (或者資料庫伺服器);
* PHP 和有時 Perl 或 Python, 腳本語言。

[Google] Google Reader Offline Reading

不知道是不是我Lag了,剛剛突然發現Google Reader也有Offline閱讀的功能。這是繼Google Docs之後另一個Offline Functionality的應用嗎?

有圖有真相:



在一般的模式下,右上角的控制列會有一個綠色的向下箭頭,代表現在是Online的模式。

按一下綠色箭頭後,就會開始下載RSS到你的電腦中。

等到出現一個藍色向上的箭頭後,代表你的Google Reader已經處於Offline瀏覽的模式囉!

當然離線瀏覽會比線上瀏覽來的快啦!只是不能更新RSS Feed就是了 :P