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 可以是指標啊。


2009年5月8日 星期五

以PHP-cURL模擬瀏覽器行為

相關文章



  1. [PHP] 客製化部落格同步發文實作筆記 - 模擬瀏覽器行為

  2. 免搬家,部落格同步發文之設計












這週 meeting 時,我報了這。早在一年前的投影片中,已有提過一兩頁來敘述它。這學期多了幾位新成員,老板也稍微提及關於報告的內容方向,希望能夠以帶給大家新資訊或是相關的學習,所以,早在半個月前就順手弄了這個,並且在昨天報完請示一下,便將投影片擺放在網路上。報個這的理由很簡單,第一點是趣味,第二點則是未來可能有其他人會維護或開發相關的應用服務,而我自己的所學很淺薄,回想起來好像只剩這個東西可以跟大家分享吧!過去幾次的報告,我比較愛報 paper ,為的是訓練自己看 paper ,而我又特愛找有數學式子的,報起來對大家的收穫很少。


回歸主題,上面的投影片講述的是如此用 cURL 來模擬瀏覽器的連線,假設可以模擬瀏覽器的行為,那麼就可以寫一些個人化方便的小程式,以此完成一些正當的例行性行為,如發表文章到多個部落格等應用,因此,未來可能會趨向每個人都有一位專門的機器人秘書,幫你關注事件、服務等等,如此一來,就會有寫這類程式的需求。


上述投影片中,比較重要的例子是對於要向一個網頁作出送出表單動作的例子( FORM & POST ),除此之外,應該就沒特別的部分,整體流程就像監控網路封包流向,連到各個網頁進行 cookie 資料的收集,最後送出表單,再收集完成登入的資訊,接著,就可以進行相關的應用,如取得資料等。


最後,這些應用程式主要用在個人端、正當不違法的便利化為主,並不適合跑在 Server 端(容易被對方Server阻擋)。此外,這 Flash 投影片是使用 iSpring 這個免費軟體製作的,若輸出時出現中文字型亂掉的情況,記得換一下字型就行囉!