總覺得該寫些什麼

好久沒發文了,距離上次發文已經一年了,總覺得該為這一年記錄下些什麼。

專題

11月中專題終於告一段落,最後的結果雖然不盡理想,但自己卻頗有收穫,不管對於Android App開發或者專案開發或者團隊合作及分工上面,我們也將開發出來的App上架在Google Play。

在整個專題的過程,從一開始的熟悉Java語法到Android SDK,我們都靠著自己自學、上網找資料到最後的幾個月才進行開發,開發過程中跌跌撞撞,現在想起來並沒有很周全的計畫及思考,最先完成的是課表功能,利用到學校e校園服務網解析HTML tag來擷取到課表,儲存到SQLite中,讓使用者能夠在手機上查看課表,也能使手機在上課中自動開啟靜音,這是一開始最初的想法,其中遇到幾個難題是登入e校園服務網的部分,這部分利用到HTTP方式將值帶入form中利用HTTP POST method達成,並且儲存了cookie到課表頁面,靜音的部分差點做到一半想放棄了,因為對Android中的AlaramManger及PendingIntent不是很熟,所以一直卡住,尤其是在PendingIntent的getBoroadcast() method,當初看書及網路上的資料都把requestCode設為1或0,但是這卻造成靜音的部分只能夠成功一次,可是利用LogCat查看程式都有設定每個上課及下課時間,最後才試出來requestCode在每個設定要唯一。

另外一個功能是WiFi登入,原本的構思是要當使用者在學校開啟WiFi將可以自動在背景登入WiFi連上網,最初想說一樣利用HTTP POST認證網頁達成,沒想到認證網頁的submit是利用JavaScript觸發事件,所以利用HttpPost類別無法成功,查了StackOverflow有人利用HtmlUnit完成,可是在中間遇到一些Class連結不到的問題也試著很多方式解決都無法成功,所以放棄了HtmlUnit,在這之前組長一直說利用WebView去完成,但是因為WebView要跑UI出來才能,這是最後一個方法,沒想到還是利用WebView去完成,WebView能執行JavaScript,我們不呈現出認證網頁,而是顯示認證訊息,結果雖然與預期的不同,需要開啟App後才能進行認證,不是與原本的想法利用Service在背景認證。

專題中,與組員們有時候會鬧的不愉快,但是最後都能大家講開,自己也體會到一點,有些事情是不能強求,也不是會照自己所想的去進行,或許有時候能退一步去想,依照每個人興趣、擅長的部份去分配,像開發出了App,除了需要用到技術面的程式之外,也需要進行行銷等。我們也有對程式碼利用SVN 來進行版本控制,最近也利用Trac來進行issue track與Wiki文件編寫等。

繼續閱讀 “總覺得該寫些什麼"

FreeBSD擷取封包

好久沒發文了,最近好多問題,院上的DNS Server查詢有問題,檢查過設定,看過log也沒發現到什麼問題。

最後,因為又發生了一些事情,好像是網路方面的問題,就試著檢查封包看看。

在FreeBSD檢查流經網卡封包的工具為TCPDump,可以擷取封包,看是要在FreeBSD上看或者是要將擷取到的資訊儲存成檔案,再利用WireShark來解析也可以。

擷取通過bce0網卡的所有封包:

% tcpdump -i bce0 -s 0 -w 20111016.cap

擷取通過的HTTP封包

% tcpdump -i bce0 -s 0 -w 20111016_http.cap port http

除了FTP、HTTP、SMTP、SSH以外的封包全部擷取

% tcpdump -i bce0 -s 0 -w 20111016_ex.cap not port ftp not port http not port smtp not port ssh

參數說明:
 -i:指令的網卡代號
 -s:抓取的封包長度最大值,值為0代表沒限制
 -w:輸出的檔案名稱

FreeBSD抓不到ServeRaid M1015

最近在安裝新機器,一開始安裝的時候,先建立Raid1的Volume,建立好後,把FreeBSD Release 8.1 amd64的disc放進去進行安裝,但是,在Configure裡面去切Slice後,發現沒抓到硬碟,接著檢查Raid1是否有建立好,也換了光碟片,還是沒用,另在FreeBSD Hardware Notes中沒有這張卡的型號。

最後,跑去Google在FreeBSD Forum發現了也有人同樣的問題,Raid卡也是同一張,這張卡的Controller是LSI的,還好LSI有release出Driver。

一、安裝FreeBSD

先將FreeBSD安裝至隨身碟(大於8G)中

 

二、編譯核心

因為在FreeBSD預設的核心模組中有包含LSI的驅動,但是此驅動不支援ServeRaid M1015,所以,先將FreeBSD內建的驅動不編到核心中

編輯核心設定檔

 

% vi /usr/src/sys/{amd64,i386}/conf/GENERIC

 

註解以下核心內建的驅動

device mfi
device mpt
device cbb

編譯及安裝核心

% cd /usr/src
% make buildkernel KERNCONF=GENERIC
% make installkernel KERNCONF=GENERIC

 

重新開機

載入新的核心模組

% sync;reboot

繼續閱讀 “FreeBSD抓不到ServeRaid M1015″

利用CSS或JQuery製作邊框圓角

最近,在改網站的版面,想要製作圓角,有找到兩種方法可以達成目的。
第一種是利用CSS3的element來達成,可是,目前,IE8(含)之前的瀏覽器,不支援CSS3。所以,就算加上了CSS上去,使用IE8之前瀏覽器的使用者,還是看不到。另一個方法就是使用JQuery,但是前提是使用者沒有把瀏覽器關閉Javascript。

使用CSS

CSS3語法

  • 設定四個角:border-radius
  • 設定左上角:border-top-left-radius
  • 設定右上角:border-top-right-radius
  • 設定左下角:border-bottom-left-radius
  • 設定右下角:border-bottom-right-radius
#contain_out {
      border-radius:10px; /*設定四個角*/
} 
#contain_out {
      border-top-left-radius:10px; /*top-left為左上角*/
      border-top-right-radius:10px; /*top-right為右上角*/
      border-bottom-left-radius:10px; /*bottom-left為左下角*/
      border-bottom-right-radius:10px; /*bottom-right為右下角*/
}

繼續閱讀 “利用CSS或JQuery製作邊框圓角"

SNMP: Turning on AgentX master support.

昨天學校的第二電力中心停電,因為UPS只能撐個兩小時左右,只好把機器給關掉,到了下午五點半左右,學校恢復供電,把實驗打開,發現Cacti無法抓到我實驗機的監控數據。 發現實驗機上的snmpd 沒有在執行,下指令啟動snmpd

% /usr/local/etc/rc.d/snmpd start Starting snmpd. 
Turning on AgentX master support.

就是「Turning on AgentX master support.」這個message,是說要開啟AgentX master
繼續閱讀 “SNMP: Turning on AgentX master support."

FTP的運作方式

何謂FTP?
FTP(File Transfer Protocol),是「檔案傳輸協定」,透過TCP[註1]封包協定連線方式,可以將檔案在FTP Server 及 Client中進行傳輸,只要Client擁有適當地權限就可以上傳或下載資料到FTP Server上。
運作方式 FTP不同於其他協定(如:HTTP、Telnet、SSH等),FTP有兩個連線。
一個是「命令傳輸連線」,命令連線是負責把Client要求傳送給FTP Server,要先建立命令傳輸連線後,才能讓FTP Server能執行Client的動作。 另一個則是「資料傳輸連線」,當Client建立命令連線後,利用命令連線告訴FTP Server所要得服務時,例如:Client要下載的資料,FTP Server就會將資料傳送到Client,當傳送完畢後,資料傳輸連線就中斷,但命令傳輸連線還是保持著。
繼續閱讀 “FTP的運作方式"

[FreeBSD]新增硬碟

1.清除硬碟的內容設定

dd if=/dev/zero of=/dev/da1 bs=1k coun=1

備註:/dev/zero是一個特殊檔案,將da1的分割資料破壞掉,且da1的block size為1k

2.設定Slice及Partition

  • 把da1建立成一個slice
 fdisk -BI da1
  • 建立一個FreeBSD Label
 bsdlabel -Brw da1s1 auto
  • 編輯ad1s1的代號
 bsdlabel -e da1s1

會進入以下編輯畫面,如果此分割區並沒要割成根目錄(/)的話,可以使用d分割區代號。

# da1s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 6281352 0 unused 0 0 # “raw" part, don’t edit
d: 6281336 16 unused 0 0

3.格式化硬碟

 newfs /dev/da1s1d

繼續閱讀 “[FreeBSD]新增硬碟"

何謂MBR

一開始聽到MBR這個詞的時候,真的非常困惑,而且也搞不懂這是在做什麼用的。
直到最近,要開始教別人的時候,才逐漸了解到MBR的用處。在此也分享我對MBR的認識。

硬碟
圖片取自維基百科

先簡單介紹電腦的開機流程:
按下電源 → 讀取BIOS (檢測硬體) → 讀取硬碟的MBR → 載入開機磁區(含開機管理程式) → 執行作業系統

在開啟電腦時,電腦會先載入BIOS,在透過BIOS去載入儲存在CMOS的資料,在CMOS中通常會儲存CPU與週邊硬體溝通的時脈、硬碟的大小、系統時間、開機順序等,BIOS藉由儲存在CMOS的資料可以偵測週邊的硬體,再由所設定的開機裝置順序來讀取資料,假如是設定由硬碟先開機,接著讀取硬碟最先讀取到的就是MBR(Master Boot Record),因為MBR儲存在硬碟的第0面、第0軌、第1磁區,在硬碟中佔了512 bytes來儲存資訊。
繼續閱讀 “何謂MBR"