2009年5月22日 星期五

Android & Eclipse 開發環境 - 第一次安裝筆記


Image From : http://www.android.com/media/


2011-05-28 在 Windows 7 x64 安裝教學,有興趣再參考這篇: [Windows] 安裝 64 位元環境的 Eclipse , JDK 和 Android SDK @ Windows 7 64-Bit


最近很火熱的就是 Android 開發平台,去年底找替代役時,面試官閒聊,據說清大某系早已就把它拿來當作嵌入式系統課程的作業對象!想著想著,差不多是個時機該碰碰這些東西了。不然很久沒有碰新東西了。這一兩年的生活幾乎是 C 與 PHP 罷了!


首要參考網站



以上算是目前我所接觸的範圍,套句越前龍馬的話:「まだまだだね!」(發音:Ma Da Ma Da Da Ne)


關於怎麼開始,真的可以完全跟上述那個中文網站介紹!在此只是把過程紀錄下來,說真的我連下載 Java SDK 都忘的差不多了!



  1. 設置環境

    • Windows XP with SP3



  2. 下載相關開發軟體

    • JDK

      • Java 開發環境,前天我下載的版本是 JDK 6 Update 13 (jdk-6u13-windows-i586-p.exe)



    • Android SDK

      • Android 1.5 SDK, Release 1 (android-sdk-windows-1.5_r1.zip)



    • Eclipse

      • 這是寫程式免費 IDE 編輯器,但我完全沒用過 orz

      • 我選擇的是 Eclipse IDE for Java Developers (eclipse-java-ganymede-SR2-win32.zip)





  3. 初步軟體設置

    • 安裝 JDK

      • 點一點就搞定,安裝完後請設定環境變數,以方便 cmd mode 下使用。



    • 安裝 Andorid SDK

      • 解壓縮就行!假設解壓縮在 C:\ ,搭配預設目錄名即為 C:\android-sdk-windows-1.5_r1



    • 安裝 Eclipse

      • 解壓縮就行!假設解壓縮在 C:\ ,搭配預設目錄名即為 C:\eclipse



    • 設定環境變數

      • [我的電腦] 按右鍵切換 -> [內容] -> [進階] -> [環境變數] -> 使用者變數 新增/編輯 PATH 變數 -> C:\bin;C:\Program Files\Java\jre6\bin;C:\android-sdk-windows-1.5_r1\tools;





  4. 使用 Eclipse 與其環境設置

    • 點選 C:\eclipse\eclipse.exe 開啟該軟體

    • 第一個碰到的視窗是詢問 Workspace ,若沒特別想設定的,預設即可。若覺得以後被問很麻煩,可以再勾選下面的選項 Use this as the default and do not ask again

    • 下載 Android Development Tools plugin (ADT)


      • [Help] -> [Software Updates] -> [Available Software] -> [Add Site] -> Location 填寫 http://dl-ssl.google.com/android/eclipse/site.xml

      • 我碰到一個錯誤訊息 No repository found at https://dl-ssl.google.com/android/eclipse/ ,仔細一看有一處是 http://dl-ssl.google.com/android/eclipse/site.xml ,就使用這個吧(暫時忽略這個錯誤XD),勾選此項並 Install !經過一陣子後,Eclipse 會要求重新啟動此軟體。(安裝了 Android DDMS & Android Development Tools )

      • 深入淺出 Android 網站中也有提到,如果上述安裝有問題,例如網路不方便等,可以先去下載好 ADT 囉。



    • 設定 Android SDK 位置,讓 Eclipse 能夠找到它

      • [Window] -> [Preferences] -> 點選左邊 Android 項目 -> 使用 Browse 選擇與設定 SDK Location ,設定完選 Apply 跟 OK 吧






以上就是設置的詳細過程。


緊接著,就是第一個 Project 啦!



  1. 開啟 Eclipse ,準備使用 ADT 內附的範例專案

    • [File] -> [New] -> [Andorid Project] -> [Create project from existing source] -> Location : C:\android-sdk-windows-1.5_r1\platforms\android-1.5\samples\ApiDemos ,之後選完後即可按 Finish 囉,預設的資訊都會帶進來,可免去填寫

    • 如果蹦出"No compatible targets were found. Do you wish to add new Android Virtural Device?" 那就選 Yes 新增一下。看你的應用程式選擇 target,例如 Android 1.5 ,選好後再填寫一下 Name ,之後就能按 Create AVD 來建立了。



  2. 執行 [Run]->[Run] ,選擇 Andorid Application,就會跑出模擬器了,別懷疑,要等一陣子,以 AMD2 4000+ + 3GB DDR2-667 機器,粗估要 3 分鐘以上吧?最後的畫面就是這樣,可以去用滑鼠點看看,我試著瀏覽網頁,比我想像中慢很多。


Android Emulator


好久沒碰 Java 了,不曉得一個月夠不夠讓我試著開發一些小軟體?過去有用過 C# 在 VS2005 上開發手機軟體,也曾用過 J2EE 寫過,但說穿了都是非常簡單的作業罷了,唯一相同的感受:模擬器很慢!有點接近嵌入式軟體開發的感覺。


2009年5月20日 星期三

免費線上廣播播放軟體 - Hinedo

下載網址:http://of.openfoundry.org/projects/814/download
相關介紹:http://azo-freeware.blogspot.com/2007/06/hinedo-hinet-radio-10.html
相關 blog:http://pcman.sayya.org/blog_read.php?id=pcman&article=85


好像是國二開始,有聽廣播的習慣,隨後到了大學也常下載一些免費軟體,但好景不常,這類軟體常常都是透過網路去抓取音樂播放的位置,由於是主動去抓資料,因此當別人的網站格式改變時就會失效。


這款軟體是由 PCMan 的作者所創作的,這幾年恰好學習網路網站方面的技能,前陣子也想寫這廣播軟體,結果一忙又忘了!慶幸的有人還是維持住這類軟體!真是棒啊!希望自己未來也能多多創作免費軟體!


這款軟體有支持 Windows 跟 Linux 版,非常便利。


2009年5月18日 星期一

Slimbox Atom 330 效能測試

微星 Slimbox Atom 330



  • OS

    • FreeBSD 7.1-RELEASE-p3 FreeBSD 7.1-RELEASE-p3



  • MainBoard


  • CPU

    • Intel(R) Atom(TM) CPU  330   @ 1.60GHz (1606.39-MHz 686-class CPU)



  • RAM

    • DDR2-533

    • real memory  = 2138832896 (2039 MB)

    • avail memory = 2083344384 (1986 MB)




測試結果



  1. # cd /usr/ports/benchmarks/ubench ; make ; ./ubench-0.32/ubench

    • Ubench CPU:   147523
      Ubench MEM:    83654
      --------------------
      Ubench AVG:   115588



  2. # cd /usr/ports/benchmarks/ubench ; make ; cd /ubench-0.32/ ; make clean ; cc -O2 -fno-strict-aliasing -pipe -march=nocona -lm -o ubench signals.c cpubench.c membench.c ubench.c ; ./ubench


    • Ubench CPU:   166066
      Ubench MEM:   128344
      --------------------
      Ubench AVG:   147205




其他機器測試



  • Randy's PC: Core2 Duo CPU E8400 @ 3.00GHz , 4096MB DDR2-800

    • Ubench CPU:   775068
      Ubench MEM:   470081
      --------------------
      Ubench AVG:   622574



  • Randy's PC: Intel Celeron 2.4GHz , 512MB RAM DDR 400

    • Ubench CPU:    89634
      Ubench MEM:    90947
      --------------------
      Ubench AVG:    90290



  • Randy's PC: 2.4GHz HT , 1024 MB DDR333

    • Ubench CPU:    89832
      Ubench MEM:    38156
      --------------------
      Ubench AVG:    63994



  • Randy's PC: Intel Xeon 1.86G , 2048 MB DDR2-800

    • Ubench CPU:   379039
      Ubench MEM:   254778
      --------------------
      Ubench AVG:   316908



  • VMware, FreeBSD 7.0 , AMD2 4000+ , 512MB DDR2-800 (尚未安裝 VM tool)


    • Ubench CPU:   459543
      Ubench MEM:    45634
      --------------------
      Ubench AVG:   252588




The Intel Atom is an in-order single-core processor with hyper-threading, for low power mobile PCs and low-price desktop PCs.


因此,理論上會存在不少 stall 拖累效能嗎?但 Slimbox 一台約六千至八千不等,已經很足夠取代四年前便宜的主機了。除了沒有獨立顯示卡跟光碟機外,整體上很適合當工作站。


2009/07/14 ,前陣子學弟弄主機,麻煩他幫忙照一下,順便補上照片,依序是PSU與十元硬幣的對照、主機板和硬碟裝設的位置,其中PSU的部分,我在回應中講 50W 而已,今天把照片看了一下,上頭還有標示最大 120W 囉。


Slimbox Slimbox Slimbox


2009年5月15日 星期五

[Windows] 安裝 Apache with HTTPS (SSL) 、建立憑證 @ Windows XP

過去曾在 FreeBSD 4.10 的環境上安裝過 HTTPS 環境,細數起來已經是四、五年前的事了。最近一兩年,總在 Windows XP 的環境下,安裝 Apache HTTP Server 和 PHP 環境,用來開發簡單的網頁程式,但一直忘了,自己根本連 HTTPS 都還沒安裝過。前幾天,彷彿操起老本業,開始系統整合的工作,才想起該設定 HTTPS 的部分了,想著想著,一直以為用了 AppServ 就免痛,事實證明,我真的把 HTTPS 忘的一乾二淨了,無論是 AppServ 還是 Appache HTTP Server 皆要自行產生憑證,憑證就是用來提供加密連線的重要資訊,詳情可以多參考 RSA 演算法 啦。


最近開發時已經不用 AppServ ,反璞歸真般地,我開始只安裝需要的環境,即只安裝 Apache HTTP Server(including OpenSSL) + PHP 罷了。這次實作的環境是 Apache 2.2.11 + PHP 5.2.9-2 ,皆在 Windows XP with SP3 ,此篇跟 PHP 沒關係。


當晚處理完憑證試裝的結果,碰到第一個問題是 SSLPassPhraseDialog !搞到最後我才又想起 Skype 這賊賊軟體!它總是愛佔 Port ,第一次它就佔了 80 Port ,害我 HTTPD 跑不起來,這次很快地又想到它啦,但實在太久沒設定 HTTPS,所以不敢確定哪邊有錯,最後,由於很晚了,則是選擇隔天再到實驗室的電腦安裝。該台電腦沒有安裝 Skype ,才真正確定沒什麼大問題,但卻碰到第二個問題:sec_error_bad_signature!原先就知道自己產生的憑證沒有公信力,因此好心的瀏覽器都會提醒,詢問後再允許通過,如 Firefox 新增例外網站等,但這個訊息連新增例外都不行!所幸地,沒多久就在網路上找到答案,至少可以將錯誤訊息修成 sec_error_ca_cert_invalid ,這次就能新增成例外網站啦!


實作過程:



  1. 建立憑證

    • openssl genrsa -des3 -out server.key 2048

      openssl req -new -key server.key -out server.csr

      openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

      openssl rsa -in server.key -out server.key

    • 以 Windows XP 為例,預設的 Apache HTTP Server 2.2.11 安裝目錄是 "C:\Program Files\Apache Software Foundation\Apache2.2",以該目錄為基準,簡寫為 "~\Apache2.2"

      • 所謂的 openssl 是在 "~\Apache2.2\bin\openssl.exe"

      • 上述部份指令執行時會說找不到 config 檔案,config 檔是在 "~\Apache2.2\conf\openssl.cnf" ,請多加參數 -config "~\Apache2.2\conf\openssl.cnf"

      • 我習慣切換到 "~\Apache2.2" 去執行上述指令,如 cmd mode 下執行 bin\openssl genrsa -des3 -out server.key 4096 ,碰到要增加 config 則用 -config conf\openssl.cnf 囉



    • 建立 server.key 時記得輸入一下密碼,該密碼後面還會詢問到。

    • 簡單的詢問範例,"()"內不用打,是簡單的敘述註解
      Country Name (2 letter code) [AU]:TW
      State or Province Name (full name) [Some-State]:Taiwan
      Locality Name (eg, city) []:YunLin Country (城市)
      Organization Name (eg, company) [Internet Widgits Pty Ltd]:CYY(組織,例如公司)
      Organizational Unit Name (eg, section) []:CYY (單位,例如公司部門等)
      Common Name (eg, YOUR name) []:localhost (主機的全名)
      Email Address []:cyy@localhost (信箱)

      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A challenge password []:(可按Enter即可)
      An optional company name []:(可按Enter即可)



  2. 設定 Apache httpd.conf

    • 將上述產生的 server.key 跟 server.crt ,就直接擺到 "~\Apache2.2\conf" 即可(預設的憑證用的檔名跟位置)

    • 設定 httpd.conf

      • 打開 LoadModule ssl_module modules/mod_ssl.so 註解

      • 打開 Include conf/extra/httpd-ssl.conf

      • 基本上重新啟動 Apache 即可搞定囉!






最後,有任何問題請多看看 ~\Apache2.2\logs\error.log 或 ~\Apache2.2\logs\access.log ,這幫助很大的!


 


2009年5月12日 星期二

[PHP] memory usage with fread (limit or leak ?)

花了些時間,想寫一隻 PHP 的 tool 來處理資料轉換的問題,沒想到卻碰到超過 PHP.ini 中的記憶體限制,我用的版本是 PHP 5.2.9-2。接著又花了時間找尋,發現大部分討論的是物件方面的記憶體管控,至於 garbage collection 等的,似乎在 5.3.0 以後的版本才有類似的處理機制。


沒有指標的 PHP ,說真的還寫得很不順手,唯一目前知道的是可以用 unset 釋放記憶體空間!但很多情況並不如預期的,舉例來說,對於 fread 的函數,應該不難得知它是會自行維護 buffer 的,但就是因為這一點,導致使用的記憶體空間增倍:


<?php
$size = 52428800;    // 50MB
$fp = fopen( 'test.dat' , 'rb' );
echo "Init State: ".memory_get_usage() . "\n";

$data = fread( $fp , $size ); // $data 跟 fread 內的 buffer 各吃 50MB 的空間
echo "fread: ".memory_get_usage() . "\n";

unset( $data ) ;
echo "unset variable: ".memory_get_usage() . "\n";

fclose( $fp );
echo "fclose: " .memory_get_usage() . "\n";

?>


上述如註解,除非把 fclose( $fp ) ,以上的程式光運行就吃掉 100MB 的空間了!執行結果:


Init State:108400
fread: 104966184
unset variable: 52537368
fclose: 108560


第一次讓我不想用 PHP 來做事啊。但這似乎不是 memory leak 的問題?我多希望 $data 可以是指標啊。