2009-03-01

[Note] Weekly Summary 2009/03/01

好久沒寫,快變成yearly summary了XD

Raphaël
目前看到最重意的javascript繪圖library,大小只有36kb,支援Firefox,Safari,Opera,IE,網站上沒提到但是chrome我測試過也可。

Cross-Browser Inline-Block
http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/
需要動態排列float的div時常遇到的問題,這篇文章提供使用CSS的解法。


Add N Edit Cookies
https://addons.mozilla.org/firefox/addon/573
Firefox修改Cookie內容的外掛


TopStyle Lite
http://www.newsgator.com/individuals/topstyle
http://www.newsgator.com/download/products/ts3lite.exe
免費版的TopStyle,編輯CSS檔十分好用


Firefox的外掛 Tiny Menu
自從使用chrome後,總覺得firefox的瀏覽畫面很小,這個外掛可以把firefox的選單放在一個鍵裡面,然後你可以自己再用自訂工具列的功能把其他按鈕和搜尋列都放到上面,這樣就可以增大一點瀏覽面積。

網路電台架設初學心得 (二)

上一篇是 網路電台架設初學心得 兩年多前寫的,待續到現在都還沒補完= =

現在剛好又有在玩電台就把他補上


附註一下,oddcast這個名稱被別的公司註冊走了,所以現在更名為Edcast,但是因為是最近改的,網路上很多資料還是用Oddcast這個名稱.

電台架構
DJ端
撥放器(foobar2000,winamp..)
擷取音訊&編碼&傳送到伺服器(oddcast/edcast)
伺服器端(shoutcast、icecast..)
需實體IP.

其中播放器跟Edcast(oddcast)必須要在同一台電腦(DJ的電腦)上,而伺服器在哪裡都可以,也可以跟DJ端在同一台,只是要在網路上放送的話,伺服器一定要有個實體IP。

現在開始介紹實際架設的步驟,以下以Foobbar2000+Edcast(Oddcast)+Soutcast為例

Step 1. DJ端的軟體安裝

Foobar2000的安裝就不介紹了,主要說明Edcast(Oddcast),可以從這裡取得http://www.oddsock.org/tools/edcast/
他有三腫版本可以分類成:

  • 播放軟體外掛版
    • Foobar2000 Version
    • Winamp Version
  • 獨立版本
    • Standalone Version

他們的差異在之前的文章就已經說明過了,在使用上兩種版本的選擇:

  • DJ要透過麥克風講話 → 獨立版本
  • 使用Foobar2000 、Winamp以外的軟體播放音樂→ 獨立版本
  • DJ不說話 + 不希望電腦的聲音(例如你正在瀏覽的網頁播放的音樂) 傳到廣播→ 播放軟體外掛版

選擇你需要的版下載後,就直接執行安裝檔,兩種版本的安裝步驟很類似

  1. 選擇要安裝的東西 - Edcast本身以及音訊編碼(select compoments to install)
    跳過第一個同意授權的畫面之後,就會到要你勾選一些編碼的視窗(裡面有),Edcast(Oddcast)負責擷取聲音然後轉成mp3、ogg之類的格式在傳道伺服器,而轉換mp3、ogg等格式的工作Edcast(Oddcast)是依賴別人寫好的一些程式,這裡勾選的東西除了Edcast本身的程式之外就是這些用來轉檔的程式(XXX.dll),其中專MP3編碼這個最常用的程式檔,因為授權的關係沒辦法附在Eddcast裡面,所以預設沒勾選,就算你勾選了,它等一下也只會跳出可以下載的網頁,所以這裡也不用急著勾選MP3。
    不知道上面在說什麼也沒關係,這一頁完全不用動它,按Next就好了
  2. 要裝在哪?
    獨立版的話,就選個你想裝的地方安裝就好了
    Foobar2000外掛版就要選擇你當初裝foobar2000的地方(winamp同理),特別注意的是,如果你的foobar2000正開著,安裝完之後要重開Edcast才會出現。
  3. 安裝MP3編碼
    為了讓你電台能被大部分的人收聽,我想每個DJ都會需要這個步驟,因為一般使用windows的聽眾,如果沒有特別安裝什麼播放軟體或編碼,大概也只能聽mp3格式的廣播。不過edcast裡面沒有附(可能是因為授權的問題),所以我們要自己去下載。我們需要的檔案名稱叫做"lame_enc.dll",你可以直接Google "lame_enc.dll" 找載點,或是到RareWares網站Lame mp3下載頁 選個比較新的下在就可以了,壓縮檔裡面會有個lame_enc.dll,依照你使用的edcast版本放到適當地地方。
    - 如果是使用獨立(standalone)版本,就把他放到安裝edcast的資料夾下面。
    - 播放軟體外掛的版本就放到播放軟體的資料夾下面,例如foobar2000就放到跟foobar2000.exe同個資料夾
這樣就完成DJ端軟體的安裝
Step 2. Server端的軟體安裝與設定

如果是連接別人的伺服器或打算使用免費伺服器(LiveDoor)的可以跳過這步驟。
這裡介紹的廣播伺服器軟體是ShoutCast,(除此之外還有開放原始碼的ICEcast這裡就不多作說明)。
ShoutCast不一定要安裝再跟DJ貒同一台電腦,這裡有個之前提過的重要觀念,就是關於音樂資料的流向。
DJ端跟Server端在不同電腦

DJ端
Server端 聽眾端
edcast將聲音轉成MP3 ShoutCast接收到MP3資料,發送給聽眾


...
聽眾1
聽眾2
聽眾3
...
聽眾N
從這裡可以觀察到,當DJ以16kb/s的頻寬上傳音樂到Server端,而同時有5個聽眾的話,Server端將負擔16x5=80kb/s的上傳流量,但是不管變成多少聽眾DJ端的電腦都只要上傳16kb/s的流量。
DJ端跟Server端在同一台電腦
DJ端 聽眾端
edcast將聲音轉成MP3
ShoutCast接收到MP3資料
發送給聽眾



...
聽眾1
聽眾2
聽眾3
...
聽眾N
所以不管怎樣Server端盡量放在頻寬比較大的電腦,這樣才能增加可收聽的的聽眾,例如DJ的網路只有2M/512,但是他有個朋友A用的是學網,那就可以請他朋友安裝shoutcast,DJ只用edcast連線到A的電腦,聽眾再連到A的電腦收聽,這樣就能容納叫多的聽眾。
另外,Server端"必須"要有實體IP可以連接,虛擬IP的話需要從防火牆設定,不過些再講下去就離題了,看不懂的可以google一下"虛擬IP"。

  1. 下載並安裝軟體
    到ShoutCast網站的server下載頁 依照伺服器的作業系統版本下載並安裝。(windows以外的版本直接解壓縮就可以用了)
  2. 設定ShoutCast (修改sc_serv.ini)
    這裡先只提幾個最重要的設定來修改,將sc_serv.ini打開後,找到以下項目修改
    - MaxUser: 最大聽眾數,預設是32人,這部份請依照自己頻寬調整,如果頻寬負荷不了,聽眾聽起來會很lag。
    - Password: DJ端連接到shoutcast的密碼。
    - PortBase: shoutcast所使用的port,預設是8000,假如你的伺服器IP是123.21.21.21,那聽眾就可以從http://123.21.21.21:8000收聽
設定完成後直接執行就可以了

接下來就是DJ端(edcast)連線到伺服器的設定...待待待續...
(三個"待"表示下篇不知道什麼時候才會寫..


2009-02-25

Google App Engine準備開始提供收費服務

在Google App Engine 的Blog 發表了"New! Grow your app beyond the free quotas! ", 預計在90天之內開放超出Quota資源的付費資源。

超出Quota的收費是採用多少資源收多少費用的方式,你可以依照預算設定一個支付額度的上限,主要可設定項目只有Outgoing Bandwidth, Incoming Bandwidth, CPU Time, Stored Data, Recipients Emailed這五項。 不過當你啟用付費功能的時候,其他的Quota都會提高許多,詳細的內容可以看更新過後的Quota說明。但是像單檔10MB、資料庫每筆1MB的限制還是不會變。

在宣佈收費方式的同時 Google也決定對免費的Quota做了一些改變

  • CPU Time從46.30 hours/day減少到6.5hours/day
  • 頻寬從 10GB減少到1GB
  • 為了補償,從現在起 儲存容量從500MB增加到1GB


說實在的改很大,改不用錢。這個動作還是為了區隔出付費的使用者,不過我想對大部分的普通使用者影響應該不大,為了維持GAE的營運我認為是可以接受的 。

調低免費Quota也表示從GAE開放到現在,GAE的使用情形沒有google預期的熱絡。大部分的人都是用來建一些中小型網站。

不過之前並沒有付費的機制,只有固定Quota,我想也不會有商業使用者貿然將大型的project建構在GAE上。我認為GAE宣佈開放付費可以看作Google在對商業使用者招手說:「 GAE已經是一個成熟可以賣的產品了,請安心的購買吧!」 (尤其最近Google決定關掉一些服務,總是讓人會有種不信任感,會不會哪天建在GAE上的網站,突然被宣佈要關閉,而且最可怕的是,用它api寫出來的程式幾乎沒辦法直接轉移到其他地方..)

除此之外,GAE目只能使用python作為撰寫的語言(雖然有發表將支援其他語言的計劃,不過目前還是沒看到新的動靜) 也是沒那麼多人用的原因。儘管python的後勢看漲,看看TIOBE的排名 或是用Google Trend比較搜尋的結果,目前的python佔有率仍然比PHP少上許多,況且PHP幾乎都是用在Web上,而Python用在web上還算少數。GEA若推出PHP作為runtime language,想必可以立即吸引許多現有的的技術人力使用GAE。另外最被看好會支援的java來說,個人認為它雖然具有淺力,但是經濟效益還是沒有PHP來的高。主要還是因為使用java的人雖然很多,但是用在server side的比率還是比較少,而這個結構短期內不太可能會有變動。

GAE現在除了限制之外,還有一些沒支援但是對一些網站非常重要的功能,例如在背景執行、訂時執行的程式,不過在最近GAE在blog正式宣佈將會支援這些功能(A roadmap update!)

目前把GAE拿來作非玩票性質使用的網站還不多,不過隨著付費服務的開始,相信在今年GAE將會做出許多改變。

2009-02-20

[筆記] Accelerated Concomitant Boost Radiotherapy

在網路上找Accelerated Concomitant Boost Radiotherapy 的定義,結果好像太冷門都沒中文的資料,英文也沒看到明確說明,其實內容不困難只是不好找。故筆記於此,希望可以幫到也在搜尋這個詞的人。以下是個人的理解

Accelerated Concomitant Boost Radiotherapy是一種fractionation(照射的schedule),他跟 Accelerated Radiotherapy(把整個照射療程的時間濃縮)與Hyperfractionated Radiotherapy (將每天的劑量提高,然後分成早上跟下午兩次照射,提高整個療程的劑量)都有些類似的地方。Accelerated Concomitant Boost Radiotherapy的概念很簡單,為了讓腫瘤可以比旁邊正常組織照射到更高的劑量,就在原本的治療範圍內,畫一個較小更接近腫瘤的區域(boost field),然後在該區域多照射一次。

看一下實際上照射的schedule就很容易理解,每篇paper都不太一樣,舉 "Wolden SL, Zelefsky MJ, Kraus DH; et al. Accelerated concomitant boost radiotherapy and chemotherapy for advanced nasopharyngeal carcinoma. J Clin Oncol. 2001"這篇使用的方法:

整個療程一共6周
照射的範圍分成兩種:

Large field: 包涵primary tumor, skull base, and bilateral neck
Boost field: 包涵primary tumor以及其侵犯的範圍
(Boost field包涵在Large field:之內)

從1到6周每天都將1.8 Gy的劑量照射到Large field
但是第5、6周每天除了Large field照射的1.8Gy外,會在那次照射6小時後,追加1.6Gy的劑量到Boost field

有點模擬IMRT的味道 ,不過實際效果還是不一樣就是了。

2009-01-25

新年COSPLAY - 貓耳×兔耳


雖然剛穿上去的時候不太爽



後來比較習慣就可以穿著睡覺了


明明就很溫暖 表面上生氣 其實喜歡的很XD

貓耳×兔耳×傲嬌.... 太萌啦!!

2009-01-02

Yahoo Media Player與網路電台 (shoutcast , icecast)

Yahoo Media Player (http://mediaplayer.yahoo.com/)是一個讓你在網頁上放置一個MP3播放器的一個javascript,只要很簡單的步驟就可以讓你blog或網站上的音樂檔連結一點就直接在網頁上播放(方法請看他網站 很簡單)。 這種東西並當然不是第一次出現,但是YMP的特色在於易用性、支援串流還有跨平台。

事實上 他是透過javascript控制一個flash來播放,所以mp3播放的部份可以跨平台。

另外在某些情況下它不只支援mp3,例如在windows上只要你windows media player可以播放的它都能放,例如你有裝ogg plugin 就可以用他撥ogg,不過這種還要收聽者電腦安裝其他東西的功能就顯得比較沒用一點。

我對這東西有興趣的地方在於支援串流以及跨平台的部份,這表示他可以當作一個不錯的網路電台撥放器。

Yahoo Media Player 載入完畢後會自動抓取網頁中所有連結網址(href)中有.mp3的部份,然後將他改成點擊就播放的連結。可是電台的收聽網址通常都不是mp3結尾。我們可以在連結的class加入htrack作為標示,YMP會抓取class有htrack的連結作為播放連結。如下:

<a class="htrack" href=http://xxxx.fff.xxxx:8000/fff>點此收聽</a>

目前大家最常用的shoutcast , icecast這兩個電台server,要使用YMP來收聽電台的話,電台音源必須要是mp3,除非聽眾的電腦有裝ogg plugin(要他電腦的windows media player可以播放ogg才算,其他foobar200, winamp等是內建ogg支援的 )。不過就我的測試,只有icecast的可以向上面的那個方式使用。如果電台是shoutcast的話,直接放"http://xxxx.fff.xxxx:8000","http://xxxx.fff.xxxx:8000/listen.pls"都沒辦法收聽。 在網路上找到的解法就是用http://xxxx.fff.xxxx:8000/;aaa.mp3 (那個aaa是可以隨便替換的),這個方法就是在shoutcast server網址的後面加上 ;(隨便打什麼字).mp3 。


<a class="htrack" href=http://xxxx.fff.xxxx:8000/;listen.mp3>點此收聽</a>
(這裡正常情況下 class="htrack"可以不用加 因為副檔名是mp3)

下面這個是我修改shoutcast server (windows版), 在介面中加入yahoo media player

修改的地方有 (有興趣的也可以用 hex editors自己改)
1. 在header加入:<script type="text/javascript" src="http://mediaplayer.yahoo.com/latest"></script>
2. Listen的連結改成<a class="tn1 htrack" href="./;listen.mp3">Listen</a>
3. header中的charset改成big5
注意:
如果是在開電台的電腦上看(網址是localhost)的話,可能會因為瀏覽器安全性設定的關係造成運作不正常(因為瀏覽器預設通常不能在localhost載入flash)。
下載 Shoutcast Server1.9.8 + Yahoo Media Player + Big5

補充一下一些資源:

Wiki http://yahoomediaplayer.wikia.com/wiki

API Document http://mediaplayer.yahoo.com/api/

2008-08-31

Google App Engine 與 Python 初玩雜唸 (二) ~ 破

開始上工前~

第一件做的是就是下載Google App Engine SDK (當然需要先裝python 2.5 )
就可以在我們的電腦上模擬Google App Engine的服務

安裝和使用方法可以看官網或是網路上都有很多這方面的文章,我就不贅述了

免費的開發工具有許多選擇,例如:

當然還有許多非專門寫python的一些軟體,例如notepad++等。

不過像notepad++我自己用起來是會有些空白對齊的問題,在notepad裡面看起來是對齊好的,不過python執行的時候會判定為沒有對齊的語法錯誤,只要用IDEL打開就會看到是不對齊的(可能是對tab跟space混搭判斷的差異)。

Komodo Edit是Komodo IDE公司出的的免費版本,也是不錯的選擇,不過功能比較少。

我自己是選擇使用Eclipse + PyDev,沒用過Eclipse 的人,可能在安裝上會覺得比較麻煩點。

Eclipse的安裝設定可以參考這篇文章用 Eclipse + PyDev 開發 Google App Engine 的程式或Google提供的說明(英文)Configuring Eclipse on Windows to Use With Google App Engine

開始寫程式前~
(這標題跟上一個有什麼不一樣= =)

之前Google有在台北舉辦一個程式開發日的活動,裡面有兩個關於Google App Engine的演講,演講內容都有配字幕傳到youtube上。

Google 2008 台北程式開發日@ Youtube

如果你還沒寫過GAE的程式,可以先看一下入門的那個演講,進階最好是有寫一點過再看會比較進入狀況。這兩個演講都不錯,有時間的話建議看一下。

英文聽力不錯的話,可以去Google I/O的網站,Google I/O是 google在舊金山辦的一個演講+聚會,就像「2008台北程式開發日」那樣 ,不過規模整個大很多,那時的演講錄影和投影片都有放到網站上,其中也有一些是關於Google App Engine的。

Google在介紹GAE這個服務的時候,一直強調節約使用資源,這是現在蠻多網佔程式設計師比較少考慮的,現在一般的趨勢都是在比誰可以用最短的時間最少的程式碼開發網站。雖然我也是一個懶惰型的程式設計師,但是因為從小就在一些系統資源貧乏的環境下寫程式,所以在偷懶之餘會有多少顧一下效率的習慣。

GAE中有效利用資源的一些概念,之後有機會的話詳細介紹

  • 減少寫入Datastore的次數
  • 從Datastore讀取資料時,只取出要用的部份
  • 只在需要的時候才載入那部份的程式
    例如一個module只有在一個function才用到的時候,就在那個function裡面才import
  • 能用Memcache (GAE提供將資料存於記憶體的API)存的資料就用Memcache 存
  • 將不常變動的輸出資料(例如html、xml、json)存在memcache
  • 對於時常從Datastore取出的資料存於memcache
  • 減少對伺服器request的次數,例如將許多的javascript檔合併
  • 有效控制瀏覽器的cache (透過header)
  • ......

看到這裡,我想已經有些人注意到了...這篇文章的標題「」..

跟裡面講的根本就沒關係嘛!!!!(翻桌)

實在是太生氣了!! 不寫了啦

(可以不要在演了嗎......)

2008-08-21

Google App Engine 與 Python 初玩雜唸 (一) ~ 序 ( + PHP免費伺服器 000webhost介紹)

為甚麼會去接觸Google App Engine ?

最近在玩一個小Project ,功能是讓別人可以在網頁上點歌,然後我電腦的Foobar2000就會自動去撥。配上網路電台的話,就是一個懶人開電台的方法。原本網頁程式是用PHP寫的,放在學校或朋友的機器上,結果機器掛掉,只好找別的地方放。我一度找到了一個非常棒的PHP免費伺服器「http://www.000webhost.com」。

先離題一下,說到 000webhost 也有一些可以講的XD

000webhost提供免費的PHP以及MySQL伺服器,php也沒什麼限制(例如可以讀寫檔案之類的),最棒的是..它不會在你的網站上面加廣告!

不過我使用上遇到的第一個問題就是「它會自動加統計流量的程式在你網頁後面(危機1),雖然是看不到的一般使用上沒什麼問題,但我的網站用了大量的Ajax,傳回去的資料(json)後面被加上這段的話,javascript就沒辦法辨識了(雖然可以用javascript把它截掉,可是這樣真的很鳥),後來在網路上找了一下才找到關閉的方法,從官方的介面好像找不到這個網頁的連結......(密技)

關閉000webhost流量統計程式碼的方法
http://members.000webhost.com/analytics.php <-到這個網站
再輸入帳號密碼選disable code送出就好了

這樣似乎是解決了,網站也用了幾次,可是這中間偶爾會有使用者說有問題,終於有一次讓我自己遇到AJAX傳輸的時候出問題,結果趕快用firebug打開一看....

ㄍ..咳.咳..........,資料後面被加了一行字....powered by 000webhost 之類的  (危機2)..(靠..難怪那段時間點播都比較少..),不過這個出現的機率不高,個人感應起來大概100次的request會一個有加吧。

就在這個時候!!! 突然想到之前Google App Engine剛出來封測的時候,我好像有登記如果有名額就通知的功能,可是翻遍mail都找不到,想去再登記一次的時候...

Google App Engine (GAE)完全開放自由註冊了!!!!

寫到這裡突然發現..........

驚!!!!!!  ( 不是 4:44:44 )

是我整個離題了..........
趕快再標題後面加( + PHP免費伺服器 000webhost 介紹) 好了.........

一進去GAE之後一個帳號可以新增三個Project ,不過我後來用一用,突然變成可以10個,後來去翻說明也說是一個帳號10個,可能是為了防有人灌帳號佔project的名稱,要真的有用才會出現到10個 (還是說剛好我在用的期間改成10個?)

要使用之前最重要的就是知道它使用限制,寫在這裡 http://code.google.com/appengine/articles/quotas.html

事實上我對一個網站CPU會跑幾個Cycles沒什麼概念,這些限制裡面我比較在意的像是 「Size per File : 1MB」等容量、流量問題,這樣很明顯的有許多應用可能都沒辦法做,例如想在上面做影音之類的就不太可能。

除此之外在程式上也有許多限制,例如

  • 目前只支援Python
  • 沒有讀寫檔案功能
  • 所有的資料都要存在Datastore(一個跟一般不太一樣的資料庫) 跟memcache(記憶體暫存,可以跨不同的request,可以當作php的session想像...雖然不一樣 )
  • 每次從Datastore取資料最多1000筆
  • 每次連線都有幾秒的時間限制,無法持續連線
  • 對外接收的連線只限通過port 80
  • 要主動對外連線只能使用它提供的URL Fetch API

老實說...如果對網頁程式開發不熟悉的人,要入手Google App Engine真的不太容易。

如果熟 Python的話還可以一試,對沒有網頁程式開發經驗的人建議先從其他種程式入手。

有經驗的人都會覺得綁手綁腳了,雖然說如果習慣Google App Engine的開發方式,做起網站來也是蠻快的。

不過問題就在於目前關於GAE開發的資訊太少,我自己本身在寫的時候也十分依賴寫PHP時的經驗。

另外就是Python這個語言也是門檻,我自己也是個python的新手,但是這麼多種程式語言之前其實都有些重疊,個人在寫python的時候就有看到javascript形影的感覺,翻一翻說明文件還是OK的。

不過我覺得python的官方文件不太好,我是拿PHP來跟它比較啦,相較起來PHP的document做的真的不錯,例如每個內建或extension的function跟class說明都很精美詳細,一個function或是一個物件的method就給它一頁介紹和範例。

還有一個特色就是,PHP說明文件裡每個主題下面都可以讓使用者留言,許多function有用的應用和範例都是在下面留言找到的,相較之下python的說明就很少,例如某物件的某method說明可能會短到只有一行這樣....,不過這當然跟它背後支持的使用者社群大小有關。

今天先講(離題)到這裡

待續.....

(揪~竟 還會有下一篇嗎?? 部落格的上一篇文章是三個月前發的耶XD )

2008-05-17

Weekly Summary 2008/5/17

FreeDB 搜尋
http://freedbtest.dyndns.org/~cddb/estseek.cgi

Xmcd2cue
http://xmcd2cue.sourceforge.net

delicious-firefox-extension 2.0.42 for firefox 3
http://tech.groups.yahoo.com/group/delicious-firefox-extension/message/2329
發佈在yahoo的group,需要加入這個group才能下載

phpQuery
http://meta20.net/phpQuery

Flu Vaccine Worst in 10 Years
http://www.webmd.com/cold-and-flu/news/20080417/flu-vaccine-worst-in-10-years
今年的疫苗果然沒什麼用,去年就蠻有效的...