2012年3月20日 星期二

Linux 基本使用說明


一、Linux 操作環境簡介:
多人環境:Unix 最好的就是可以提供多人共用,而 Linux 自然也可以支援多工環境了!!
在 Linux 上面允許不同的人使用,而且每個人都有其特殊的權限,只有一個人具有至高無上的權力,那就是 root  (系統管理員)。
多工行為:Linux 可以同時由不同的人使用『同一個檔案』,只要有權限不論是開啟或者是修改。
多個管理視窗:在 Linux 當中,預設提供了六個文字界面登入視窗,以及一個圖形界面,你可以使用 [Alt]+[F1].....[F7]來切換不同的終端機界面。
指令查詢:在 Linux 當中,不了解指令參數如何使用,可以在指令後加上 -h 來查詢,如果希望進一步了解,可以用 man command (要查詢的指令)。

二、基本指令:
瀏覽目錄
ls
-all:全部列出,並分行呈現
-l:全部列出

查詢目錄路徑
pwd

變更使用者
chown
-R:全部目錄及檔案都轉換
chown -R user.group abc/:將 abc 這個目錄全部都轉換給 user 這個使用者和 group 這個群組

變更權限
chmod
-rwxrwxrwx :檔案屬性三個一組由 2 進位組成,r=4、w=2、x=1
如果是 5 就是表示 r-x、6 就是表示 rw-,以此類推
前三個藍色字代表檔案或目錄使用者的權限;
中間三個綠色字代表檔案或目錄群組的權限;
後面三個紅色字代表檔案或目錄任何人的權限;
-R:全部目錄及檔案都轉換
chmod -R 744 abc/:全部列出將 abc 這個目錄及檔案,全部都換成轉換給 user 這個使用者和 group 這個群組

查看目前登入者的帳號
whoami

查看目前所有系統登入者的帳號
who

查看之前所有系統登入者的資料
last
ip

系統重新開機
reboot
shutdown
-r:重新開機與reboot意思相同
-h:重新開機並關閉電源
-h +5:五分鐘後,重新開機並關閉電源
ip
login 登入系統
logout 登出系統

文字編輯軟體
vi
開始編輯檔案,請必須先按「a」或是「i」來進行編輯
如果視窗左下解出「-insert」或是「-插入」就可以開始編輯檔案
按「Esc」可以作上層編輯或是下層指令之轉換
:w寫入檔案
:q離開檔案
:q!強制離開檔案

nano (RH9 以前為 pico)
指令操作下層有說明

觀看系統正在執行的行程
ps
ps -aux|more:常用方式
參數說明:
a :選擇所有的程序列出
u :所有使用者的程序均列出
x :所有 tty 的程序列出
ps
USER:說明該程序是屬於哪一個人的;
PID:該程序的代號;
%CPU:代表該程序使用了多少 CPU 資源;
%MEM:代表該程序使用了多少的 RAM ;
VSZ, RSS:佔去的 ram 的大小 ( bytes);
TTY:是否為登入者執行的程序?若為 tty1-tty6 則為本機登入者,
若為 pts/?? 則為遠端登入者執行的程序;
STAT:該程序的狀態,( R )為可執行的,( S )
為該程序正在睡眠中,就是沒有執行了,( T ) 正在偵測或者是停止了,
( Z ) 僵屍程式,就是 zombie 死掉的程式啦!需要以 kill 除去囉;
START:該程序開始的日期;
TIME:該程序跑了多久的時間;
COMMAND:該程序的內容;

觀看前幾名系統正在執行的行程
top
觀看系統記憶體使用量
free

刪除系統正在執行的行程
kill
kill 1999:刪除某個程序,利用 ps 來查詢 PID 值
參數說明:
-1:刪除某個程序 (類似 reload)
-2:使用者中斷該工作,類似 [Ctrl]+c 來中斷一個工作
-9:強制殺掉一個工作,並立刻執行
-15:停止一個工作 (這是預設值)

可觀看系統資訊,包括你的核心版本、主機名稱、CPU 資訊
uname
uname -a:查詢所有系統資訊

查看系統磁碟容量資訊
df
df -h:查詢所有磁碟容量,並以 mb 為單位呈現

查看系統分割區容量資訊
du
du -s -h:查詢某個分割區容量,並以 mb 為單位呈現

掛載相關設備的方式
mount
mount -t auto /(掛載設備名稱,在 /dev/ 下面) /(預計要在本機對應的目錄名稱,目錄必須先建立)
如果不清楚要 mount device 的名稱,可以先用 ls -l /dev/* (usb 隨身碟通常是 sd 開頭的,硬碟是 hd,光碟是 cdrom)
mount -t auto /dev/sdb1 /mnt/usb

查看系統開機資訊
dmesg
dmesg | more :查詢開機資訊

什麼是 yum     yum 的全名是: Yellow dog Updater, Modified yum
是一個自動更新/移除 rpm 套件的程式。
由於 CentOS 也是源自 redhat 系統,所以他目前也是以 yum 作套件控管。
它會自動計算相依性,判斷哪些應該安裝,哪些則不必。
和 yum 相同性質的還有 apt,不過 yum 比 apt 還要優秀好用。
Client 端 yum 設定
先透過 rpm 查詢是否安裝了 yum
yum
如果沒有,請線上下載 rpm 來安裝暨大 ftp 下載
預設 gpgcheck=1 所以必須將 GPG KEY 安裝完成,http://mirror.centos.org/centos/ 下載所需要的 key 檔
或是在本站下載 RPM-GPG-KEY-centos4
或是在暨大 ftp 站下載 RPM-GPG-KEY-centos4
下載完後安裝請用 "rpm --import <KEY_FILE_NAME>" 指令來匯入     之後便可以直接作更新
如果覺得麻煩的話,其實在下面的設定檔,可以直接加上 gpg 的下載網址即可!!
在 CentOS4.3 預設已經直接加上: gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

在 CentOS 中修改 yum 的 url 和 FC4 類似,需要在 repos 的目錄下修改。
cd /etc/yum.repos.d/
修改 nano CentOS-Base.repo 分別將 [base]、[update] 的 baseurl 改到國內
baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/updates/$basearch/
另外 [addons] 中的網址表示 CentOS 還在測試中的 rpm 尚未正式 released
[extras] 中的網址表示 CentOS 額外可能可以用的 rpm
[centosplus] 中的網址表示 CentOS 額外的 rpm 具有特別的功能
[contrib] 中的網址表示 CentOS 一些使用者提供的 rpm

義守大學的 mirror 站亦可作 yum
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/updates/$basearch/

靜宜大學的 mirror 站亦可作 yum
baseurl=http://ftp.cs.pu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.cs.pu.edu.tw/Linux/CentOS/$releasever/updates/$basearch/

台南縣網的 mirror 站亦可作 yum
baseurl=http://ftp2.tnc.edu.tw/pub1/centos/$releasever/os/$basearch/
baseurl=http://ftp2.tnc.edu.tw/pub1/centos/$releasever/updates/$basearch/

手動執行
yum install * (安裝某個套件)
yum update * (更新某個套件)
yum update;yum clean package (更新所有套件,並於安裝後刪除套件)

yum中沒有的套件如何尋找
http://rpmfind.net/linux/RPM/
但是此處 rpm 沒有針對 CentOS 來收集其 rpm,如果需要的話可以用 el4 的版本來試試,
因但是建議還是以 CentOS community 提供較妥當,為選用 CentOS 最主要的訴求就是穩定!!
另一個好用搜尋引擎 http://www.google.com.tw

三、修改系統環境:
修改語系設定檔 /etc/sysconfig/i18n
原本為:
LANG="zh_TW.UTF-8"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="zh_TW.UTF-8:zh_TW:zh"

修改為:
LANG="zh_TW.Big5"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="zh_TW.Big5:zh_TW:zh"
修改完後必須重新開機,設定才能生效!!

系統服務開機設定位置 /etc/rc.d/init.d 之中
針對某項服務,如果啟動或關閉 (例如 httpd)
service httpd start|stop|restart
/etc/rc.d/init.d httpd start|stop|restart
這樣就可以在執行時,處理各項系統的服務的狀態!!

如果希望一開機就啟動或關閉 (例如 httpd)
首先就必須了解開機時有不同指令層級,如 level 1|2|3|4|5
利用 chkconfig --list httpd (查看 httpd 各層級開機啟動狀態)
chkconfig
利用 chkconfig --level 3 httpd on (設定 httpd 在 level 3 中開機要啟動)
這樣就可以在執行時,處理各項系統的服務的狀態!!

另一個更容易的方式,透過 webmin 設定
WEBMIN

四、視窗化操作介面X Windows
執行層級 (Run level) 為 5 者直接為視窗介面
設定開機時系統執行的設定,CentOS 4.3 預設為 5,一登入就執行 X Windows
修改系統開機層級設定檔 /etc/inittab 修改完後存檔,重開機後就會新的設定層級開機
比較簡單的方式,用指令修改 /sbin/init 1|2|3|4|5
ip
如果是文字模式時者,可以用 startx 來執行 X Windows
ip
登入後的畫面
ip

五、忘記 root 密碼、系統開機有問題,無法登入時
如同 RH 系統,通常將 LILO 改為用 Grub 做為開機管理程式,
要進入單人維護模式就比較麻煩一些。在開機的過程當中,會有讀秒的時刻,
此時請按下任意按鍵,就會進入選單畫面。
boot
這個時候只要選擇相對的核心檔案,並且按下「e」,就可以進入編輯畫面了。
boot
此時,你看到的畫面有點像:
root (hd0,0)
kernel /vmlinuz-2.6.9.34 EL root=/ 此時,請將游標移動到 kernel 那一行,再按一次「e」進入 kernel 該行的編輯畫面中,
然後在出現的畫面當中,最後方輸入 single :
boot
root (hd0,0)
kernel /vmlinuz-2.6.9.34 EL root=/ single
再按下「Enter」確定之後,按下 b 就可以 boot 看看啦。
boot
在使用者使用 GRUB 開機進入單一使用者模式後,並取得 # 提示符號,
boot
使用者需要輸入 passwd root,然後使用者便可以輸入新的 root 密碼。

如果是系統發生有問題時,可以作磁碟檢查
fsck -y
完成後後,重開機 shutdown -r now,重新啟動。

六、安裝完成無法提供遠端網路連線
請先確認 SELINUX 是否關閉
設定檔路徑 /etc/selinux/config 中 SELINUX=enabled(enforced) 改為 disabled
修改完後需要重新開機!!

如果仍然不行,請確認 iptables 的防火牆是否設定了部分規則
設定檔路徑 /etc/sysconfig/iptables
查詢 iptables 的規則的指命 iptables -L
暫時先停用 iptables 的規則的指命 iptables -F

七、應用程式安裝及管理
rpm管理系統程式套件
rpm (Redhat Package Manager)
rpm -e *.rpm:移除某個套件
rpm -q *.rpm:查詢某個套件
rpm -qi *.rpm:查詢某個套件完整安裝資訊
rpm -ivh *.rpm:安裝新的套件
rpm -ivh --replacepkgs *.rpm:安裝已經裝的套件
rpm -Uvh *.rpm:昇級新版本的套件
rpm -Fvh *.rpm:更新已經安裝過的套件,只有裝過的才會更新

x window 下 rpm 操作
直接將要安裝套件用滑鼠左鍵按兩下,會出現執行訊息
rpm
告知此套件相關資訊
rpm
確定後就直接安裝,安裝完成後就直接關閉視窗
rpm

2012年3月8日 星期四

新iPad問世 16日開賣


蘋果公司 (Apple) 今天推出舉世矚目的最新一代 iPad 平板電腦,配備更高解析度顯示器以及速度更快的處理器,將自 3 月 16 日開始銷售,價格和原來一樣。

新一代 iPad 的價格由 499 美元起跳,能連上行動電話網路的機型價格介於 629 至 829 美元。而且iPad將首度能夠透過更快速的 4G 行動電話網路系統上網。

蘋果公司表示,新款 iPad 的顯示器畫質將更勝客廳裡的高畫質電視,與以往機型相比,色彩飽和度更高。此外,速度將快 4 倍。

主持發表會的蘋果公司執行長庫克 (Tim Cook) 說:「我們將把它提升到全新水準,並重新界定蘋果以原版 iPad 開創的類別。」

蘋果公司在舊金山舉行產品發品會,對倫敦的記者現場直播,公司高層主管表示,新款 iPad 的螢幕每吋有 264 個畫素,提供行動裝置歷來最佳顯示效果

蘋果公司自 2010 年 4 月推出 iPad 觸控平板電腦以來,這款最新產品是第 3 代,它的特色還包括有 500 萬畫素的相機,以及高解析度的錄影功能。

蘋果也推出升級版本的蘋果電視 (Apple TV) 機上盒,可以用來將電影、電視節目和其他內容由網路串流到電視機。售價仍將維持在 99 美元。

蘋果推出新iPad與電視機上盒


蘋果公司 (Apple) 今天推出配備更高解析度顯示器的最新款 iPad 平板電腦,以及升級版本的蘋果電視 (Apple TV) 機上盒,可以用來將電影、電視節目和其他容容由網路串流到電視機。

蘋果公司在舊金山舉行產品發品會,對倫敦的記者現場直播,公司高層主管表示,新款 iPad 的螢幕每吋有 264 個畫素,提供行動裝置歷來最佳顯示效果。

蘋果公司自 2010 年 4 月推出 iPad 觸控平板電腦以來,這款最新產品是第 3 代,它的特色還包括有 500 萬畫素的攝影機,以及高解析度的錄影功能。

至於新款蘋果電視機上盒售價仍將維持在 99 美元。

蘋果新品 通路估5月抵台


蘋果將舉行新產品記者會,iPad 3 呼之欲出。通路商表示,iPad 3 在美國推出後,預估 2 個月後就可以到台灣銷售,不過,按照往例,不能促銷或廣告,民眾只能到現場排隊買。

「有樣東西,你們非看不可」是蘋果發出媒體邀請函的主題,蘋果今天舉辦新品發表會,預料推出新一代 iPad 3 平板電腦,最大特色可能是更高的螢幕解析度和畫質。

iPad 3 來勢洶洶,科技部落格 All Things Digital 近日調查指出,有 7 成消費者有意購買即將亮相的蘋果最新平板電腦 iPad 3。

通路商表示,以上次 iPad 2 發表的情況來說,如果蘋果在 3 月 7 日公布新機後,台灣應該排在第 3 波銷售名單中,預估最快 2 個月後就會在台灣開賣。

通路商說,蘋果對產品管制相當嚴格,時間到後通知廠商進貨,不准廣告或促銷,民眾要最快擁有 iPad 3,可能還是要排隊購買。

Google改店名搶市


Google 線上商店今天全新開幕,裡面有數位音樂、電影、書籍和 Android 行動裝置的迷你程式 APP,進一步向蘋果 (Apple) 和亞馬遜 (Amazon.com) 等勁敵下戰帖。

位在加州的網路巨擘 Google 把 Android 市場、Google 音樂和 Google 電子書店通通結合成 1 個「數位娛樂站」- Google Play,使用者可到上面取得資料並免費儲存在網路「雲端」。

Googl e數位內容負責人羅森柏格 (JamieRosenberg) 在部落格發文:「你可在網頁和 Android 手機或平板電腦找到、享受和分享最愛的音樂、電影、書籍和APP。」

「Google Play 完全以雲端操作,所以所有音樂、電影、書籍和 APP 都可儲存在線上,隨時可得且再也不用煩惱弄丟或搬移這些資料。」

根據羅森柏格,Google Play 用戶可免費儲存多達 2 萬首歌,上面更有數百萬首歌曲供用戶選購。

同時 Google Play 上有超過 45 萬個 APP 供 Android手 機和平板用戶下載,另外也提供電影租借服務,其電子書藏量更是世界最大。

電信業廣告不實最高罰鍰 中華電信光世代挨罰500萬


中華電信由於在網站刊載 HiNet 光世代 50M 方案廣告,宣稱「下載 DVD 僅 12 分鐘」等語,但實際使用速率並非如此,今 (7) 日遭公平交易委員會委員會議通過,認為廣告不實,除要求立即停止違法行為,並處新臺幣 500 萬元罰鍰,這也是電信業者廣告不實案件中罰鍰金額最高的。

公平會表示,中華電信在 HiNet 光世代 50M 方案廣告中,將「50M/5M」、「50M」等頻寬用語以 DVD 下載速度來表示,包括「下載 DVD 僅 12 分鐘」、「HiNet 光世代 50M,下載 DVD 只要 12 分鐘!速度超快~」、「HiNet 光世代 50M 有多快?下載 1 部 DVD (4.7G) 10M 要花 1 個小時,50M 只要 12 分鐘……」等語。

公平會指出,從廣告中來看,給人的印象應該是,申辦中華電信光世代 50M 方案,即可達到下載 DVD 資料檔案僅需 12 分鐘的速度。不過,根據公平會的主動調查發現,中華電信公司所提供的光世代網路服務,所稱的「50M」、「50M/5M」,只是指最高可提供的線路速率 (Line Rate),並不代表用戶實際使用速率,且所提供申辦用戶實測下載資料速率僅部分可以達到「34.9~50M」、「26.59~50M」,通常是沒有辦法達到的。

公平會強調,上網速度是影響消費者交易決定的重要因素,但中華電信卻在廣告中以幾近於最高線路速率的數值來假設資料傳輸速率,並因此計算出下載 DVD 檔案只要 12 分鐘的結論,這項網路廣告容易使消費者產生誤解,已違反公平交易法第 21 條第 3 項準用同條第1項規定,除要求中華電信立即停止違法行為,並處新臺幣 500 萬元罰鍰。

中華電信50M涉廣告不實 重罰500萬


中華電信在網站刊載 HiNet 光世代 50M 方案廣告,宣稱「下載 DVD 只要 12 分鐘」等語,但公平會調查,中華電信所稱「50M」是指最高可提供的線路速率,不代表用戶實際使用速率。公平會昨認定涉廣告不實,對中華電信開罰五百萬元。

中華電信挨罰五百萬元,罰鍰金額也創下公平會歷來處罰電信類案件的最高罰鍰;累計中華電信迄今已有五次違反公平法遭罰紀錄。中華電信行銷處長吳明融表示,去年十月公平會對這個廣告有意見之後,相關廣告文案都已經撤掉。

公平會認為,上網速度是影響消費者交易決定的重要因素,但中華電信卻在廣告中以幾近於最高線路速率的數值,來假設資料傳輸速度,並因此算出下載 DVD 檔案只要十二分鐘的結論,容易造成消費者產生誤解,涉及廣告不實,已違反公平法規定,昨宣布對中華電信開鍘五百萬元,並要求其立即停止違法行為。

公平會官員說,一張容量 4.7G 的 DVD,如果用 50M 速率下載,在頻寬不變的情況下,確實只要十至十二分鐘,如果用 10M 速率下載則要花一小時;但實測結果,HiNet 光世代 50M 下載速率只達 26.59~50M 之間,下載一張 DVD 的時間,大多超過二十分鐘,和中華電信的廣告內容有差距。

誇大50M 中華電信罰五百萬


公平會今天表示,中華電信在網站上刊載 HiNet 光世代 50M 方案廣告,宣稱下載 DVD 速度快等,就服務的品質內容有引人錯誤的表示,處新台幣 500 萬元罰鍰。

公平交易委員會表示,中華電信股份有限公司在網站刊載 HiNet 光世代 50M 方案廣告,宣稱下載 DVD (約 4.7G) 只要花 12 分鐘,10M 要花 1 個小時。

但是根據公平會調查,中華電信所提供光世代網路服務,所稱 50M 僅指涉最高可提供的線路速率 (Line Rate),不代表用戶實際使用速率,且所提供申辦用戶實測下載資料速率僅部分達到 34.9 到 50M 或 26.59 到 50M。

公平會表示,上網速度是影響消費者交易決定的重要因素,中華電信卻在廣告中以幾近於最高線路速率的數值作為資料傳輸速率假設,計算出下載 DVD 檔案僅 12 分鐘的結論。

公平會認為,中華電信的網路廣告就 DVD 下載速度所為宣稱,將引致消費者就其服務品質產生誤認,所以處 500 萬元罰鍰、並且自處分書送達的次日起,立即停止違法行為。

廣告不實 中華電:已撤


行政院公平交易委員會今天表示,中華電信網站刊載 50M 方案廣告違反公平交易法,處新台幣 500 萬元罰鍰。中華電信說,廣告已在去年撤下,未來會加強服務用戶。

公平會說,中華電信在網站刊載 HiNet 光世代 50M 方案廣告,宣稱「下載 DVD 僅 12 分鐘」、「HiNet 光世代 50M,下載 DVD 只要 12 分鐘!速度超快」等說法,就服務品質為引人錯誤的表示,違反公平交易法規定,要求中華電信停止違法行為,並處 500 萬元罰鍰。

中華電信說,當初推行 50M,有民眾詢問到底有多快,因而在網站上登廣告向民眾說明。不過,公平會認為有誤導民眾的嫌疑,中華電信已經在去年就將廣告撤下。

中華電信表示,提供  50M 光世代寬頻服務,會因牽涉網際網路、網路互連與客戶端軟硬體設備環境等因素影響傳輸速率。由於 50M 屬於高速寬頻,更需要客戶端硬體與軟體設定同步更新與調整,才能達到最佳上網速率。

中華電信說,相關說法在 HiNet 首頁、光世代官網、HiNet 連線速度測試網頁與合約文件,都有刊載。

中華電信說,裝設 50M 的施工過程中若測試無法達到預定速率,會請客戶改申請較低速率方案,或是客戶使用中有任何問題,中華電信會協助客戶解決問題。

中華電信表示,已經推出「寬頻上網 7 日內不滿意可退租或降回原速」,新裝機與升速客戶 7 日內不滿意可免費退租,或降回原速的措施,全力服務客戶。

4G「新iPad」問世!解析度升級 搭4核晶片 但變厚變重


蘋果 (Apple) 周三 (7 日) 如期發表眾所矚目的新一代平板電腦產品,並未開創新名稱,僅稱為「新 iPad」(new iPad)。最大賣點是支援 4G LTE 通訊,處理器升級至 4 核心,且螢幕解析度提高。下周五 (16 日) 開賣。

根據蘋果官方網站資料,新 iPad 長寬、外觀與前代 iPad 2 相同,不過厚度由 8.8 公厘增至 9.4 公厘,重量也由 601 克增至 652 克。

新 iPad採用的「視網膜 (Retina)」 顯示螢幕,畫素是 iPad 2 的 4 倍達 310 萬,解析度由 1024x768 增至 2048x1536,像素密度由 132 ppi 增至 264 ppi。

此外,新 iPad 處理及上網速度皆顯著提升。支援的第 4 代 (4G) LTE 通訊技術,傳輸速度比現有 3G 快 10 倍。中央處理器亦由 iPad 2 的雙核心蘋果 A5 晶片,升級至 4 核心 A5X 晶片。

蘋果強調,這些升級並不影響新 iPad 電池續航力,仍維持 iPad 2 的 10 小時。

這些新優勢以外,新 iPad 搭載 500 萬畫素 iSight 攝影機,並支援 1080p 的高畫質 (HD) 錄影技術;同時加入部分聲控功能 (蘋果未使用 Siri 一詞)。這些升級都與去年秋天推出的 iPhone 4S 相似。

新 iPad 容量 16 GB 僅支援 Wi-Fi 版,啟售價每台 499 美元,與原有 iPad 2 相同。加上 4G 通訊功能的 16 GB 版,啟售價則為 629 美元。蘋果同時將 16 GB 版 iPad 2 售價砍至 399 美元。

新 iPad 下周五將率先在美國、加拿大、英國、澳洲、法國、德國、瑞士、日本、香港、新加波等 10 國開賣;本月 23 日再在全球其他 26 個國家啟售,台灣及中國不包含在內。

蘋果執行長庫克 (Tim Cook) 在今日記者會上,還發表新的 Apple TV 電視盒,每台售價 99 美元,並支援 1080p HD 顯示技術。

中華電信廣告不實 遭罰500萬元


公平交易委員會今 (7) 日指出,針對中華電信於網站上刊登的「HiNet 光世代 50M,下載 DVD 只要 12 分鐘!速度超快~」等語句,判定為廣告不實,重罰中華電信 500 萬元的罰鍰。

公平會認為,2011 年 5 月至 11 月初,中華電信於 HiNet 光世代 50M 方案廣告網頁上,提出「HiNet 光世代 50 M有多快?下載 1 部DVD (4.7G) 10M 要花 1 個小時,50M 只要 12 分鐘……」等文字,但根據中華電信用戶實測結果,部份用戶僅達到「34.9~50M」、「26.59~50M」的速度,甚至有一至二成的用戶低於此速度。

公平會委員孫立群指出,中華電信廣告不實,誤導消費者其服務品質,已違反公平交易法第 21 條第 3 項準用同條第 1 項規定。根據其市佔率及營業額,且廣告期間 HiNet 的新訂戶約有 230 萬戶,因此通過開罰 500 萬元。同時他指出,這次是自民國 91 年開始,中華電信第五次被開罰。

面對公平會的開罰,中華電信行銷處處長吳明融表示,網頁上的語言只是要讓用戶了解 50M 的速度和 10M 差多少,也經過公司的實測。他強調,網速會根據人數及環境不同而變化,無法保證一定是多少,而網頁廣告也早已下架。他還說,新訂戶欲安裝 HiNet 時,公司都會實際測試給客戶看,並提供 7 天鑑賞期,如果客戶不滿意可以更改。

公平會強調,如果中華電信不滿判決,可至行政院訴願會或高等法院提出訴求。不過,吳明融表示目前還不確定中華電信接下來會採取何種行動。

好失望!新iPad沒給我們的:外觀大改、更輕薄、A6晶片


塵埃落定,所有謠言回歸現實。蘋果 (Apple) 周三 (7 日) 發表眾所矚目的新一代平板電腦「新 iPad」,讓之前各種關於「iPad 3」的傳聞就此停止。

但從今日終於曝光的新 iPad 規格,對照先前各種吸引人的傳言,確實有不少令人失望之處。美國科技網站《CNET》便列舉出幾項原本期待能升級的部分。

1、新設計
新 iPad 外觀與 iPad 2 大致相同,主要升級在內部功能。正如外界原本期待蘋果去年會推出全新設計的智慧手機 iPhone 5,結果只得到 iPhone 4S。

2、更輕薄
iPad 原本就有的問題是有點重。但新 iPad 不但沒比 iPad 2 輕,反而更重 51 公克。問題出在蘋果並未減輕電池重量,但在新 iPad 支援的顯示、處理及通訊技術功能大增之下,這點不容易達成。

3、A6 晶片
之前關於蘋果 A6 晶片將問世的傳言甚囂塵上,但最後新 iPad 只有升級至 A5X 處理器,儘管具 4 核心不令人失望。蘋果雖稱,A5X 晶片提供表現力是 Nvidia Tegra 3 晶片的 4 倍,但依舊不是 A6。

4、7 吋「迷你 iPad」
蘋果今日只發表一個尺寸的新 iPad,並未揭露外界謠傳將推出的小尺寸平板。眼見亞馬遜 (Amazon) 7 吋平板 Kindle Fire 在低價市場積極搶市,蘋果何時入侵新戰場,看來還有得等。

網速將實測 NCC促業者誠實


寬頻上網速度引發爭議,國家通訊傳播委員會 (NCC) 今天表示,將實測網路速率,若測出數據遠低於業者所宣稱,業者應降價或加速建設。

行政院公平交易委員會今天指出,中華電信在網站刊載 HiNet 光世代 50M 方案廣告,宣稱下載 DVD 只要花 12 分鐘,但據公平會調查,50M 僅指最高可提供的線路速率,不代表用戶實際使用速率,導致消費者產生誤認,因而處新台幣 500 萬元罰鍰。

台灣網路屢挨批速度慢、收費貴,NCC 發言人陳正倉下午受訪表示,為避免廣告不實的疑慮,NCC 除加強督促電信業者確實告知速率,也將委託公正第三機構實際測試上網速率,若結果遠低於業者所提數據,業者應降價,或加速建設以提升網路速度。

陳正倉說,今年將依序針對行動上網、固網進行測速,建立客觀數據,每一年或兩年在網路上公布結果,避免消費者、業者各說各話,或認為廣告「騙很大」。

2012年3月6日 星期二

Web-Harvest 挖掘需要的數據


首先,在官方網站下載web-harvest,目前最新版本是1.0,下載頁面分三個下載包,分別是webharvest1-ex​​e.zip,webharvest1-bin.zip,webharvest1-project.zip,他們沒實質區別,第一個是包含了全部第三方包(一起打入了同一個jar文件直接可運行),第二個做為一個中間件出現,附帶了所有獨立的第三方jar包,第三個則是源碼,當然要最大的靈活性自然選擇下載源碼了:》

下載下來後再eclipse建立一個空項目,把所有解壓出來的文件夾仍進去,然後把src和config設為source folder (源碼目錄) 然後看到default包下面有個Test.java的文件,下面我們來看看這個文件:

        ScraperConfiguration config = new ScraperConfiguration("c:/temp/scrapertest/dddd.xml");
        Scraper scraper = new Scraper(config, "c:/temp/scrapertest/");
        scraper.setDebug(true);
        long startTime = System.currentTimeMillis();
        scraper.execute();
        System.out.println("time elapsed: " + (System.currentTimeMillis() - startTime));

除去log4j的註解外,剩下的就是這幾行代碼啦,我們看到運行挖掘任務只需要3行代碼,創建config,用config和挖取到數據存儲目錄做參數創建Scraper,然後執行就OK。

好了,先試試,它能不能工作,在剛才解壓出來的文件中,有一個examples文件夾下面有很多,配置文件可以先試試手,首先,看看圖片挖取的例子google_images.xml ,更改上面的兩行代碼

        ScraperConfiguration config = new ScraperConfiguration("E:/workspace/webharvest/examples/google_images.xml");

        Scraper scraper = new Scraper(config, " E:/workspace/webharvest/examples/");

然後運行這個Test在console窗口會看到抓取過程,完成後再E:\workspace\webharvest\examples\google_images目錄下就能看到剛才抓取到的所有圖片了,抓取非常簡單,到此為止,我們看看他的配置文件,google_images.xml到底有什麼魔法。

在google_images.xml中,這個配置文件中首先引用了一個functions.xml,在google_images.xml同級目錄下,我們先看看這個文件。這個文件中定義了一個function(函數)名字是download-multipage-list雖然不符合java函數定義規則,但是這裡只是一個函數名,函數return了一個循環出來的結果集,empty標記表示其中的執行結果不包含在返回結果集內,那麼主要返回的就是:
                <xpath expression="${itemXPath}">
                    <var name="content"/>
                </xpath>
這段了,這段代碼表示,用xpath方式(解析規則是expression表達式決定的)解析引用的content內容,做為一個行記錄(這個行記錄會被默認封裝成一個List(不是普通的list而是:org.webharvest.runtime.variables.ListVariable);

循環的主體主要實現讀取數頁(多少頁由$maxloops變量決定)的數據.


現在看看empty內部的功能:

首先
<var-def name="content">
    <html-to-xml>
        <http url="${pageUrl}"/>
    </html-to-xml>
</var-def>
是定義一個content變量,內容是訪問${pageUrl}頁面內容。

接著:
<var-def name="nextLinkUrl">
    <xpath expression="${nextXPath}">
        <var name="content"/>
    </xpath>
</var-def>

是用xpath表達式(${nextXPath})取content變量內部的值(也就是剛才${pageUrl}頁面解析)得到下一頁的URL地址。

<var-def name="pageUrl">
      <template>${sys.fullUrl(pageUrl.toString(), nextLinkUrl.toString())}</template>
</var-def>

對pageUrl重新賦值,將下一頁賦值給pageUrl下次循環讀下一頁數據解析。

好了這個函數簡單的說就是用來分頁取數據的。

回到google-images.xml文件我們繼續看:

      <!-​​- defines search keyword and start URL -->
      <var-def name="search" overwrite="false">platon</var-def>
      <var-def name="url">
            <xpath expression="//noscript//a/@href[1]">
                  <html-to-xml>
                   <http url="http://images.google.com/images?q=${search}&amp;hl=en&amp;btnG=Search+Images"/>
                  </html-to-xml>
            </xpath>
    </var-def>

很簡單,定義一個變量做搜索條件給url中,然後用html-to-xml標記把http標記訪問url的頁面html內容轉換為xml,最後用xpath一個表達式得到頁面真實的url(看來google確實比較麻煩,其他網站可以直接得到url的)。

      <!-​​- collects all image URLs -->
      <var-def name="imgLinks">
        <call name="d​​ownload-multipage-list">
            <call-param name="pageUrl"><var name="url"/></call-param>
            <call-param name="nextXPath">//td[.='Next']/a/@href</call-param>
            <call-param name="itemXPath">//img[contains(@src, 'images?q=tbn')]/@src</call-param>
            <call-param name="maxloops">5</call-param>
        </call>
      </var-def>
    這段的功能就是調用分頁函數,把itemXPath參數中的xpath表達式內容,限定解析的頁面內容封裝成一個list啦

首先定義了4個參數,然後調用functions定義的download-multipage-list函數,最後將返回值賦給imgLinks(這就完成了圖片url的抓取工作了)。

    <!-​​- download images and saves them to the files -->
    <loop item="link" index="i" filter="unique">
        <list>
            <var name="imgLinks"/>
        </list>
        <body>
            <file action="write" type="binary" path="google_images/${search}_${i}.gif">
                <http url="${sys.fullUrl(url, link)}"/>
            </file>
        </body>
    </loop>

雖然已經完成了抓取過程,但是圖片還沒有保存在本地呢,這裡我們就要循環調用file標籤,來把url中的圖片逐一保存在本地啦。
這裡很簡單,需要注意的就是loop循環,比較不同的是loop必須包含一個list和body,會把list逐一迭代出來,body代碼中有句sys.fullUrl函數,是用來處理抓到的相對地址修正為完整的http開頭的絕對地址,參數url是前面我們定義的,link是loop循環體變量在循環裡面定義的。

看完了這個我們做個我們看到只要用xpath表達式,對任何頁面的相對位置抓取都不是問題了。

Web-harvest已經解決了大部分問題,我們要做的就是寫配置文件了。

Web-Harvest爬取yahoo!answers數據


本文主要以web-harvest爬取yahoo! answers的數據為例,說明在使用過程中需要注意的問題。當然,最好的使用文檔就是官方網站的user manual。

web-harvest有三個版本,這裡用的是源碼包。要完成數據的爬取,最重要的是配置config文件。源碼包中有個Java類,Test.java,源代碼如下:

public class Test {

    public static void main(String[] args) throws IOException {

        ScraperConfiguration config = new ScraperConfiguration("e:/temp/yahooanswer/auto racing.xml"); //line a
        Scraper scraper = new Scraper(config, "e:/temp/wikianswer"); //line b

        scraper.setDebug(true);

        long startTime = System.currentTimeMillis();
        scraper.execute();
        System.out.println("time elapsed: " + (System.currentTimeMillis() - startTime));
    }

}

 line a中的.xml文件即抓取配置數據,line b 為抓取後數據的存放路徑。其功能是完成yahoo! answers分類中sports/auto racing的resolved問題中的前5頁內容,每頁20條,以如下格式寫入文件中:

下面主要來分析一下auto racing.xml,xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<config charset="utf-8">
    <include path="functions.xml"/>
    <var-def name="home">http://answers.yahoo.com</var-def>
    <var-def name="QALinks"> //定義變量QALinks,其值為函數download-multipage-list的返回值。
        <call name="d​​ownload-multipage-list">
            <call-param name="pageUrl">http://answers.yahoo.com/dir/index;_ylt=AnRU11UwwAiICNV69Xv._0HzDH1G;_ylv=3?sid=396545601&amp;link=resolved#yan-questions</call- param>
            <call-param name="nextXPath">//li[@rel="next"]/@href</call-param>
            <call-param name="itemXPath">//ul[@class="questions"]//h3//a/@href</call-param>
            <call-param name="maxloops">5</call-param>
        </call>
    </var-def>

    <!-​​- According the link, get all questions -->
    <var-def name="questions">
        <loop item="item" index="i">
            <list><var name="QALinks"/></list>
            <body>
                <html-to-xml>
                    <http url="${sys.fullUrl(home, item)}"/>
                </html-to-xml><script><![CDATA[print("item"+i+":"+item);]]></script>
            </body>
        </loop>
    </var-def>

    <!-​​- iterates over all collected products and extract desired data -->
    <file action="write" path="sports/auto racing.xml" charset="utf-8">
        <![CDATA[ <questionanswers> ]]>
        <loop item="item" index="i">
            <list><var name="questions"/></list>
            <body>
                <template>
                     <![CDATA[<number>]]><var name="i"/><![CDATA[</number>]]>
                </template>
                <xquery>
                    <xq-param name="item" type="node()"><var name="item"/></xq-param>
                    <xq-expression><![CDATA[declare variable $item as node() external;
                        let $subject := data($item//h1[@class='subject'])
                            return
                                 <questionanswer>
                                    <subject>{normalize-space($subject)}</subject>
                                   { for $x at $count in data($item//div[@class="content"])
                            return if($count eq 1)
                        then <questioncontent>{$x}</questioncontent>
                        else <answer>{$x}</answer>
            }
                                </questionanswer>
                ]]></xq-expression>
                </xquery>
            </body>
        </loop>
        <![CDATA[ </questionanswers> ]]>
    </file>
</config>

functions.xml源代碼:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <!-​​-
        Download multi-page list of items.
      
        @param pageUrl - URL of starting page
        @param itemXPath - XPath expression to obtain single item in the list
        @param nextXPath - XPath expression to URL for the next page
        @param maxloops - maximum number of pages downloaded
      
        @return list of all downloaded items
     -->
    <function name="d​​ownload-multipage-list">
        <return>
            <while condition="${pageUrl.toString().length() != 0}" maxloops="${maxloops}" index="i">
                <empty> //函數中<empty></empty>中的內容表示不用返回。
                    <var-def name="content"> //定義了變量content,其內容是pageUrl返回的網頁內容
                        <html-to-xml>
                            <http url="${pageUrl}"/>
                        </html-to-xml>
                    </var-def>
                    <script><![CDATA[ // <script>中是調試用的print,將輸入內容顯示在Java的控制台。
                        print("pageUrl:"+pageUrl);
                    ]]></script>

                    <var-def name="nextLinkUrl"> //定義了變量nextLinkUrl,其值是根據nextXPath從content中獲取的數據
                        <xpath expression="${nextXPath}">
                            <var name="content"/>
                        </xpath>
                    </var-def>

                    <var-def name="pageUrl"> //重新定義pageUrl,其值為原來的pageUrl和nextLinkUrl的連接。
                        <template>${sys.fullUrl(pageUrl.toString(), nextLinkUrl.toString())}</template>
                    </var-def>

                </empty>
  
                <xpath expression="${itemXPath}"> //要返回的值,根據itemXPath從content中獲取的數據

                    <var name="content"/>
                </xpath>
            </while>
        </return>
    </function>
</config>

 functions.xml定義了一個函數,4個輸入參數,1個輸出。 pageUrl表示起始的抓取url;nextXPath是從本頁抓取的內容中獲取下一頁url的xpath表達式,也就是如何在本頁中獲取next所對應的href;function包含一個while循環,maxloops是在其他條件滿足是最多循環次數;itemXPath是每次循環時從抓取的內容中獲取返回的列表的xpath表達式,本例中是從每頁獲得answer對應的href。最後返回的是根據itemXPath獲取的所有內容的列表。

2012年3月4日 星期日

iPad 3還沒出 逾44%美民眾將購買


蘋果將在 3 月 7 日正式公布一項重大消息,外界紛紛臆測與 iPad 3 的推出有關。國外行動廣告網站 InMobi 調查發現,有超過 44% 的行動網路用戶都表示將會購買 iPad 3,顯示消費者對蘋果產品的支持度仍居高不下。

有超過 44% 的受訪者皆表示,如果有購買平板的意願,將會優先選擇 iPad 3,而 InMobi 的北美副總裁 Anne Frisbie 指出,透過調查報告,發現有 65% 希望購買 iPad 3 的消費者,也願意用更便宜的價格購買 iPad 或 iPad 2,她認為 iPad 3 的推出,可能不只會帶動 iPad 系列產品的買氣,更能擴大蘋果平板電腦的市佔率。

雖然蘋果產品的買氣高,但美國堪蕯斯大學的傳播系教師 Doug Ward 卻在日前發表的文章中提到,學生很興奮能在課堂中獲得 iPad 來協助教學,但卻不願意在公眾場合中使用,因為認為 iPad 代表勢利、世俗的工具,而學生自認為是精英份子,不願意被貶低及被他人認為是揮霍無度的。

ZDNet 科技網站的專欄作家 Charlie Osborne 表示,透過他在倫敦地鐵及巴士使用 iPad 的經驗,比起他牌平板電腦,確實獲得他人較多關注。無論是輕蔑或充滿興趣的眼光,都讓他不得不收起 iPad,以避免民眾的注目。他認為,隨著平板電腦市場的崛起,只要這些設備持續進攻各個家庭、學校及工作場合後,相信消費者就會以更平常的心態來看待 iPad。

Password1 最新懶人電腦密碼


根據網路安全公司公布的最新調查結果指出,企業界最常用的電腦密碼第一名為「Password1」,主要原因為符合要有數字、9 位數與大寫的基本密碼條件需求,另外,報告也指出,電腦駭客目前已鎖定「連鎖企業」為主要攻擊對象。

網路安全公司 Trustwave 公布《全球電腦安全報告》指出,在分析 2 千多件從企業收集到的資料以及調查近期 300 起發生電腦安全疑慮後發現,駭客攻擊企業電腦最常從突破密碼防線開始,報告也指出,最受企業喜愛使用的密碼為 Password1,而與「Password」單字相關的密碼共佔了 5%,其次為「welcome」,佔了 1%。

研究也指出,目前駭客選擇攻擊的對象已經鎖定連鎖企業,其中以食物及飲料業是最易受攻擊的目標,Trustwave 指出,該領域企業去年發生電腦安全事件,接受調查的件數較 2010 年增加了 42%。

根據 CNN 報導,一份《2012 Data Breach Investigations Report》也指出,駭客最常用簡單以及容易猜測的密碼方式企圖突破企業電腦防線,其比例共佔 29%,而且駭客在企業內部網路潛伏蓄勢待發癱瘓電腦,時間可長達幾年之久。

另外,企業網路遭駭後通常是由第三者告知,僅 16% 是內部自行發現。

電腦安全專家卡明斯基則表示,「為了打擊駭客,我們必須搬出比人腦容量更大的工具,然而不管是增加生物特徵辨識,或是智慧卡與密碼製造機來增加安全性,其實同時也增加了許多複雜度。」

蘋果三星互告侵犯專利 德國法院皆駁回


蘋果和深圳唯冠間的 iPad 商標戰尚未結束,與三星之間的專利戰結果部份出爐。路透社報導,德國法院今 (3) 日駁回了兩件蘋果告三星,及三星投訴蘋果的案子,目前戰績各為一勝一敗。

德國曼海姆地方法院今天正式宣判,包含蘋果聲稱三星侵犯其滑動上鎖技術,及三星投訴蘋果侵犯 3G UMTS 的專利技術兩案皆無效。針對此判決,三星認為法院判決證明了三星的 Galaxy 系列手機、平板電腦等產品並無抄襲蘋果的技術,同時三星也將對控訴蘋果一案持續進行上訴。

蘋果從 2011 年 4 月開始,指控三星的 Galaxy 系列產品「盲目的」複製蘋果的 iPhone 及 iPad 產品。此次訟訴遭德國法院駁回,蘋果目前並沒有發表評論。

除了已宣判的案件外,德國法院有 4 件蘋果與三星間的專利案件仍待解決。預計 3 月 16 日將針對蘋果指控三星抄襲其滑動解鎖的專利進行審判。

蘋果日前也在德國擊敗摩托羅拉行動公司,順利駁回摩托羅拉要求禁售蘋果產品的要求。同時蘋果也與其他各家 Android 手機廠牌進行專利攻防戰。外界認為,這些專利戰將決定誰能奪下智慧型手機及平板電腦價值數十億美元的市場。

WebHarvest採集網路數據


一、背景

在當前信息空前爆炸的時代,人們不再擔心信息的匱乏,而是為篩選有用的信息付出大量的代價。那麼如何採集有用的信息呢? 


現在有 RSS、博客等服務,但是並不能完全滿足我們的需求,因為很多信息並不是以格式化的數據形式提供出來,於是聰明的工程師想出了精確搜索的方法,從而出現大量的垂直搜索網站 (比如酷訊),確實火了一把。當然我們無法得知他們是怎麼實現的,但是我們也可以實現這種精確採集,開源的 Web-Harvest 就是類似的技術,之前曾經接觸過,故寫出來分享給大家。

二、WebHarvest 簡介


Web-Harvest 是一個用 J​​ava 寫的開源的 Web 數據提取工具。它提供了一種從所需的頁面上提取有用數據的方法。為了達到這個目的,你可能需要用到如 XSLT, XQuery, 和正則表達式等操作 text/xml 的相關技術。 Web-Harvest 主要著眼於目前仍佔大多數的基於 HMLT/XML 的頁面內容。另一方面,它也能通過寫自己的 Java 方法來輕易擴展其提取能力。


Web-Harvest 的主要目的是加強現有數據提取技術的應用。它的目標不是創造一種新方法,而是提供一種更好地使用和組合現有方法的方式。它提供了一個處理器集用於處理數據和控制流程,每一個處理器被看作是一個函數,它擁有參數和執行後同樣有結果返回。而且處理是被組合成一個管道的形式,這樣使得它們可以以鍊式的形式來執行,此外為了更易於數據操作和重用,Web-Harvest 還提供了變量上下方用於存儲已經聲明的變量。


上述流程的執行結果可以存儲在執行中創建的文件中或者是編程時的上下文環境中使用。


一、配置語言


每個提取過程都被定義在了一個或多個基於 XML 的配置文件中,而且被描述為特定的或是結構化的 XML 元素中。為了更好地說明,下面列舉了一個配置文件來進行說明:


<config charset="gbk">
         
<!– 頁面爬取開始,按照關鍵詞:"玩具"來搜索–>
         
<var-def name="start" >
                  
<html-to-xml>
                            
<http url="http://www.baidu.com/s?wd=玩具"/>
                  
</html-to-xml>
         
</var-def>
         
<!– 獲取競價排名的企業網站列表–>
         
<var-def name="urlList" >
                  
<xpath expression="//div[@class='r']">
                            
<var name="start"/>
                  
</xpath>
         
</var-def>
         
<!– 循環urlList ,並把結果寫入到XML文件中–>
    
<file action="write" path="baidu/catalog.xml" charset="utf-8″>
        
<![CDATA[ <catalog> ]]>
        
<loop item="item" index="i">
            
<list><var name="urlList"/></list>
            
<body>
                
<xquery>
                    
<xq-param name="item" type="node()"><var name="item"/></xq-param>
                    
<xq-expression><![CDATA[
                            
declare variable $item as node() external;
                            
let $name := data($item//span/font[1]/text()[1])
                            
let $url := data($item//span/font[2]/text())
                                
return
                                    
<website>
                                        
<name>{normalize-space($name)}</name>
                                        
<url>{normalize-space($url)}</url>
                                    
</website>
                    
]]></xq-expression>
                
</xquery>
            
</body>
        
</loop>
        
<![CDATA[ </catalog> ]]>
    
</file></config>


上述的配置文件包含了三段。


第一段的執行步驟:1. 下載 http://www.baidu.com/s?wd=玩具 裡面的內容;2. 清除下載內容裡面的 HTML 以產生 XHTML;


第二段的執行步驟:1. 用 XPath 表達式從所給的 URL 裡面提取搜索結果;2. 用一個新的變量 "urlList" 來保存上面的搜索結果;


第三段是利用上一段的搜索結果來提取相應的信息:1. 循環裡面迭代每一個 item;2. 獲取每個 item 的 name 和 url;3. 將其保存在文件系統裡;


有了配置文件 (把該配置文件保存為
baidu.xml),我們再往前一步,寫幾行代碼:import java.io.IOException;import org.webharvest.definition.ScraperConfiguration;import org.webharvest.runtime.Scraper;public class Test {

    
public static void main(String[] args) throws IOException {

        
ScraperConfiguration config = new ScraperConfiguration("c:/baidu.xml");
        
Scraper scraper = new Scraper(config, "c:/tmp/");
        
scraper.setDebug(true);
    
        
long startTime = System.currentTimeMillis();
        
scraper.execute();
        
System.out.println("time elapsed: " + (System.currentTimeMillis() - startTime));
    
}}


讓我們執行一下,看看結果:<catalog>
         
<website>
                   
<name>上海麗強 專業大型</name>
                   
<url>www.liqiang-toy.com</url>
         
</website>
         
<website>
                   
<name>多樣型大型</name>
                   
<url>www.yonglangplay.com</url>
         
</website>
         
<website>
                   
<name>童博士卡通</name>
                   
<url>www.tbs88.com</url>
         
</website>
         
<website>
                   
<name>芝麻街</name>
                   
<url>c49.txooo.js.cn</url>
         
</website>
         
<website>
                   
<name>童博士, 中國平價學生用品..</name>
                   
<url>www.cfsj8.cn</url>
         
</website>
         
<website>
                   
<name>充氣</name>
                   
<url>www.xmcaili.com</url>
         
</website>
         
<website>
                   
<name>找木製</name>
                   
<url>www.tengyuetoys.com</url>
         
</website>
         
<website>
                   
<name>米多迪</name>
                   
<url>b146.txooo.com</url>
         
</website></catalog> 

是不是很酷。爬蟲就這麼簡單。

二、深入考慮


不知道大家看到上面的配置、代碼和結果是否感覺很熟悉。是否和 Java 通過 Ibatis 讀取數據庫數據的方式類似。


那我們是否可以實現這樣的機制呢,把整個互聯網作為我們的龐大的數據庫,我們隨意的讀取。


Web-Harvest 提供了一個 ScraperContext
可以在該上下文中設置 Java 對象,可以通過 Java 對象收集相應的結果數據,(比如:設置 Map,可以通過 Map 收集數據)Scraper 提供了這樣的方法:
    
scraper.getContext().put("resDataSet", new ResultDataSet());ResultDataSet 是收集數據的  Java 對象。


那麼我們就可以這麼做: 


1. 首先設置要訪問的網頁的路徑scraper.getContext().put("startPageHref", "http://www.baidu.com/s?cl=3&wd=兒童玩具");

2. 第二步,設置要收集返回數據的容器scraper.getContext().put("resDataSet", new ResultDataSet());


3. 在配置文件中就可以這樣設置數據${resDataSet.addRecord("searchResult","totalSearchResult",totalSearchResult)};d) 爬取操作執行完畢後,即可返回數據:ResultDataSet resultDataSet = (ResultDataSet)scraper.getContext().get("resDataSet");Ok,我們就可以隨心所欲的使用這些數據,詳細請看附件。


三、分頁機制處理


1. 來由介紹現在的信息量很大,在展示的時候都是通過分頁處理的。


2. 實現機制那我們怎麼處理呢?分頁提取數據我們得明確幾件事情a. 分頁器的處理,比如:頁碼、頁大小、記錄數或頁數。b. "下一頁"的地址的構造c. 每頁數據的爬取不同的網站的分頁機制都不一樣,我們如何處理呢?當然我們不能通過硬編碼的方式來處理,我們就通過 Web-Harvest 的配置文件來實現。
Web-Harvest 本身的配置文件結構為:<config charset="gbk">
    
配置信息
 
</config>對這個結構進行擴展:<web-harvest-config>
  
<!– 生成分頁器配置 –>
  
<config charset="gbk" id="pagination">
          
配置信息
  
</config>
  
<!– 組裝下一頁地址 –>
  
<config charset="gbk" id="urlnav">
          
配置信息
  
</config>
  
<!– 抓取列表數據 –>
  
<config charset="gbk" id="listData">
          
配置信息
  
</config></web-harvest-config>


我們就可以通過三個config項來處理


第一步,通過 id="pagination" 的配置生成分頁器


第二步,通過已經生成的分頁器加上 id="urlnav" 的配置構造下一頁的 URL


第三步,通過 id="listData" 的配置提取需要的數據


一、Web-Harvest的優缺點


優點:1. Web-Harvest 是一個使用比較方便的抓取信息的 API 庫,目前是 1.0 版本2. 擴展性好,只要修改配置文件即可3. 上手較快,使用方便。


缺點:1. 處理過程比較多,對應的速度較慢


二、其他使用過或者正在嘗試的精確抓取數據的方式


1. 使用 HTMLParserHTMLParser 可以分析 HTML 源碼中的 TAG (比如 Table,DIV 等),還可以自己定義 TAG (比如:ENET),通過查找特定的 Tag,提取相應的數據。由於沒有很多的中間處理過程,速度較快,缺點是有很多的硬編碼,難以擴展。或許能找出一個特定的表達式可以快速的提取數據。


2. 使用 HTMLClean該方式還是走 HTML->XML 的路線,首先通過 HtmlClean 把抓取的網頁內容轉化為 XML 格式數據,然後通過 XPATH、XSL 等方式對 XML 數據進行轉化,達到收集數據的目的。 Web-Harvest 是類似的方式,但是我們可以精簡化,提高抓取的效率。


三、使用爬蟲碰到的問題


1. 網站對頻繁抓取數據的爬蟲進行IP限制問題考慮使用 IP 代理,但是速度難以忍受,故現在在考慮分佈式的抓取數據的方式。

2012年3月3日 星期六

巴西iPad出租暴紅 一年成長80倍


小投資賺大錢!兩名巴西年輕人以七千美元創業,短短一年內創下即使在網路時代都令人難以置信的八○○○%的成長紀錄。

現年均為廿四歲的布雷爾 (Rony Breuel) 和拉莫斯 (Guto Ramos) ,去年五月集資約七千美元成立了專門讓好奇的年輕人「嚐鮮」的蘋果iPad租賃公司。這家以兩人姓氏第一個字母為名的「BR Mobile」公司 (http://brmobile.com.br) ,就以六台 iPad 和辦公桌椅,開始了僅供短期租賃的生意。

由於打著每天租金僅約十一美元 (三百廿元新台幣) 和迅速、簡單為號召,使走在時代尖端卻買不起的客戶趨之若鶩上網排隊預訂。兩人又及時擴大租賃外的資訊類業務,短短十個月後的今天已經擁有二百五十台最新的 iPad 2,還有一組機動的技術顧問。

讓人瞠目結舌的是該公司預計在五月營業屆滿一周年時,總營業額將達五十八萬四千美元 (一千七百一十八萬新台幣) ,為創業資金的八十三倍。

據兩位新貴表示,租賃和電腦技術支援服務贏得了雀巢食品 Nestle 輝瑞製藥 Pfizer 等卅家知名廠商的青睞。這些大公司不必投入龐大資金為出差和參加會議的員工購買 iPad,更省下長期雇用電腦技術人員的費用,創造雙贏局面。

臉書IPO承銷商 新增3家


彭博訪問的知情人士透露,臉書聘用德意志銀行、瑞士信貸集團和花旗集團擔任規模達 5 0億美元的首次公開募股 (IPO) 承銷商,讓目前承銷商總數達 9 家。

由於此決策未對外公開,要求匿名的知情人士表示,新聘和現有的承銷商將另外給予臉書 (FacebookInc.) 逾 25 億美元信用額度。知情人士表示,幾週後此舉措將會在新監管文件中披露。

德意志銀行 (Deutsche Bank AG) 、瑞士信貸集團 (Credit Suisse Group AG) 和花旗集團 (CitigroupInc.) 將加入摩根士丹利 (Morgan Stanley) 、摩根大通集團 (JPMorgan Chase & Co.) 、高盛集團 (Goldman Sachs Group Inc.) 、美國銀行 (Bank ofAmerica Corp.) 、巴克萊集團 (Barclays Plc) 和 Allen & Co. 的行列,承銷料是網路公司史上最大規模的 IPO。

除了 Allen外,這些承銷商早就提供臉書 25 億美元信用額度。總部位在加州孟羅公園 (Menlo Park) 的臉書為全球最大社群網站。

花旗和瑞信集團發言人拒絕置評,臉書發言人也不願評論。記者未能立即與德意志銀行發言人取得聯繫。負責統籌臉書 IPO 的摩根士丹利發言人也拒絕置評。

中華電降費率 迎戰台灣大


中華電信昨 (2) 日宣布,語音資費從 183 型到 983 型月租費,享有 1.8~7 折不等月租折扣優惠,其中,183 型月租下殺至 1.8 折,mPro450 型行動上網下殺 6.4 折、月繳 321 元再送 WiFi 免費上網,搶攻學生族群及銀髮族客戶,也被視為電信龍頭啟動今年度首波行動資費價格戰的代表作。

市場人士分析,中華電信啟動這波月租費價格戰,對象鎖定台灣大的名牌包專案及學生贈專案而來。

兩家電信公司最近除了財測宣布後,上演電信獲利王角力賽之外,台灣大股價也在近日直逼中華電,以昨日收盤價來看,中華電收在 92.2 元,台灣大 91.1 元,雙方差距只有 1.1 元。

面對台灣大積極挑戰電信獲利王,加上日前大打名牌包及學生贈兩大費率促銷方案,中華電啟動此波費率促銷戰,頗有迎戰台灣大的味道。

中華電信目前擁有超過 1,000 萬行動電話用戶,中華電信副總經理陳長榮表示,這是繼去年年底的千萬用戶促銷專案之後,新一波的促銷活動,目前同業間競爭激烈,中華電也必須要有所行動。

台灣大對此強調,該公司日前推出月租 99 名牌包專案及學生贈專案、提供30個月優惠期,無限上網吃到飽費率下調至 489 元,相較同業推出的吃到飽費率方案優惠。

Eclipse中導入Heritrix報錯 找不到 sun.net.www.protocol.file.FileURLConnection


在 Heritrix1.14.4 配置運行時,出現 Error:找不到sun.net.www.protocol.file.FileURLConnection,網上找了一下原因是 sun 包是受保護的包,默認只有 sun 公司的軟件才能使用,Eclipse 使用則會報錯,只需把對保護使用 waring 就可以了

具體的做法是:

Windows -> Preferences -> Java -> Compiler -> Errors/Warnings-> Deprecated and trstricted API -> Forbidden reference (access rules): -> change to warning

2012年3月2日 星期五

Mac預設的JAVA_HOME


JAVA_HOME 環境變量Java 的開發重要,MAC也不例外
 
MAC 自帶的 JDK蘋果維護的 JDK,默認的 JDK 路徑也就是的 JAVA_HOME 路徑是
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)