2009年1月29日

解決JSF的outputLink中文網址編碼問題

h:outputLink是JSF(JavaServer Faces)的HTML Tags,作用如同HTML的<a href="..."></a>標籤,它的作用是搭配JSP的EL(Expression Language),可以讓JSP在產生連結的部份,不用摻雜Java字串相加及URL編碼的處理,使得JSP的代碼採用一致、比較容易維護(?)的XML。

關於JSF的h:outputLink使用方法教學,首推良葛格的筆記「JSF Gossip: 輸出類標籤」這篇。

這篇文章要談論的問題,是網址中必須包含「中文」時的處理。

h:outputLink的value屬性值,就是超連結的位址,如果使用英數字不會有問題。

<h:outputLink value="english.jsp" />

但是若有包含中文(或其他Unicode、非英數字及符號的字元),就會造成編碼錯誤。

<h:outputLink value="中文檔名.doc" />

最好的情況,當然是避免直接用中文檔名,因為位址中的中文,對於瀏覽器及伺服器會如何作處理,開發者比較難掌握。

程式檔案(例如.jsp)的命名,當然容易避開中文。但是很常見的一種情況是,必須提供中文命名的檔案給使用者下載,可以用以下的方法解決。

設計一個redirect程式,例如redirect.jsp,接收一個名稱為url的參數,並藉由sendRedirect(或http header的Location:)重新導向這個指定的url參數值;或是在程式中把檔案的二進位內容讀出來,搭配適當的http header傳回給瀏覽器。只要有這個redirect.jsp可以正確處理參數指定的檔案,h:outputLink就可以改寫如下。

<h:outputLink value="redirect.jsp">
<f:param name="url" value="中文檔名.doc" />
</h:outputLink>


產生的<a>標籤,href屬性的連結就是「redirect.jsp?url=中文檔名.doc」這種形式,其中url算是GET參數,所以會被編碼,但redirect.jsp接收到(getParameter)的參數值,將會是正確的中文檔名。

另一種是比較投機取巧的方法,不必再多寫一支程式處理,而是直接避開h:outputLink中value會被編碼的問題,但如果瀏覽器或伺服器,沒辦法處理中文檔名,那仍會有連結不到的問題。

<h:outputLink value="#" onclick="this.href='中文檔名.doc';" />

這個方法藉由onclick事件,在連結被點下的時候,即時將href設定的位址修改。

強迫使用者必須要開啟JavaScript才能點擊連結,實在不是一個好的設計,但這個方法用在暫時patch現有的系統,相當快速好用。例如Sakai的許多Tools的程式碼,搭配JSF就使用h:outputLink,造成對Resources中有中文檔名的連結無法存取,就是個適用這種快速解法的案例。

PushBa!「我的推薦」訂閱服務,讓你的推薦在網誌聯播

什麼是PushBa!?請參考這篇《PushBa! 推薦網址就賺錢》。

假設您已經申請了PushBa!帳號,也已經推薦許多網址,那麼要怎麼讓網誌「自動顯示新推薦的網址」呢?

PushBa!目前還沒有提供RSS訂閱服務,但是已經有「我的推薦」功能,可以列出已推薦的新連結。

所以,我們已經幫你完成「訂閱服務」,訂閱位址的格式如下(目前僅提供RSS2.0):
http://pushba.howbon.info/feed/lyhcode

粗體字的部份,請替換成「你的PushBa!帳號」。

接下來,這個訂閱位址,就可以讓您自由發揮應用,你可以將連結放在網站,讓別人輕鬆訂閱你推薦的連結,也可以利用部落格提供的聯播服務,自動將最新的推薦連結顯示出來。

舉例來說,Blogger的使用者,可以在「版面配置、網頁元素」的地方,使用「新增小工具」,其中「資訊提供」這個小工具,就可以貼上剛才的訂閱位址,如此一來,部落格的讀者就會看到你最新的推薦連結。


在我的網誌右方,有個「PushBa!推薦」的連結區塊,就是用這種方式產生的。

安裝「PushBa!推薦小貼紙」,讓讀者輕鬆推文賺台幣(Blogger篇)

「PushBa!推薦小貼紙」,就是自動幫每一篇網誌文章,產生一個「PushBa!快速推薦」的按鈕,讓讀者點了之後,不必再填寫任何資料,就可以加進PushBa!的個人推薦區。讀者可以藉由推薦文章賺台幣,可以得到更實質的好處,而不必只是「友情幫推」。

這篇教學是針對Google的Blogger服務說明,需要修改HTML,如果有任何問題也歡迎在回應文章中提出來討論。

一、登入Blogger後台

二、打開「版面配置」、「修改HTML」

三、使用「下載完整範本」,先將目前的範本檔備份,方便在日後直接還原到修改前的樣子

四、在「展開小裝置範本」前方的核取方快打句

五、找到</head>標籤,在這個標籤之前加入一段HTML代碼:
<script src='http://pushba.howbon.info/PushBaTool.js' type='text/javascript'/>

六、找到以下的文章區塊語法,建議用post-body entry-content當作關鍵字尋找
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/>
    </div>

七、在找到的這個區塊,</div>的前方加上以下語法
<script type='text/javascript'>
pushba_post_link('<data:post.url/>', '<data:post.title/>');
</script>


八、「儲存範本」或預覽,看一下文章下方式否出現「PUSHBA!推薦小貼紙」,預設的圖示如下:


九、如果不喜歡這個圖示,也可以把它換成其他圖片的網址,修改的方法如下(加入PUSHBA_POST_ICON那一行):
<script type='text/javascript'>
PUSHBA_POST_ICON = "在這裡填入包含http://的圖片網址";
pushba_post_link('<data:post.url/>', '<data:post.title/>');
</script>


十、自己點擊「PushBa!推薦小貼紙」,看看網址和標題是否已經自動被輸入。

PushBa! 推薦網址就賺錢

如果你不想自己寫網誌、架網站,但是也想要利用網路廣告賺錢,那有什麼好方法可以輕鬆賺更多呢?

PushBa!就是一個賺錢的機會,只要把你每天看到的有趣文章、相簿,輸入到PushBa!的網址推薦,只要複製網址、填寫標題,就可以產生一組加值網址。

PushBa!的短網址,形式如下:
http://www.pushba.com/View.aspx?gid=ece702d0

它可以被貼在任何地方,舉凡個人網站、部落格、相簿、E-Mail簽名檔、討論區、BBS、…等,只要這個網址曝光、被點閱,就有機會獲得PushBa!給你的「收入」,登入後在「我的推薦」區就可以看到每個網址產生的收入,以及計算出累計收入。

由於它是國人提供的服務,領取款項相對比較方便,可以自取或透過匯款方式,當累積到達1000元時,就可以在每月的開放時間提出申請。

對於部落客而言,這個服務有什麼好處呢?答案很明顯,就是讓「幫你推文」的網友,也有機會藉由你的文章賺錢,當你的一篇文章網址被產生加值網址時,每次被點閱就能讓推文的網友賺錢,而你自己也增加人氣。網友透過PushBa!賺錢,而你也透過AdSense之類的網路廣告服務賺錢,在這樣一魚兩吃、相得益彰的情況下,大家都能獲得好處。

接下來,我們將準備告訴您,如何在部落格上增加「PushBa!小貼紙」,讓推薦網址的朋友,不需要經過複製貼上、打字的動作,就可以快速將文章網址推薦到PushBa!。



PUSHBA!服務就是:轉寄+轉貼=賺錢 (轉錄自:什麼是Pushba!)
  1. 當您完成註冊成為PushBa!會員後,即可擁有自己專屬的個人帳戶。( 我想立即加入PushBa! )
  2. 會員可以使用PushBa將想推薦給他人的網址產生成為可替自己累積廣告收益的加值網址。( 我想知道如何產生加值網址? )
  3. 會員可藉由Email轉寄或張貼PushBa所產生的加值網址,當他人點擊您所轉寄、轉貼的網址,您即可獲得廣告收益。( 我想知道所有推薦網址的方法? )
  4. 您的廣告收益將每日自動計入會員專屬個人帳戶中,當廣告收益累計金額到達 NT$1,000元以上 您即可兌現。( 我想知道如何領錢? )

2009年1月28日

{週末景點}台中縣,酒桶山,月光森林

週末好去處《月光森林》的介紹

距離台中市不遠的休憩地,很適合週休二日前往看夕陽、夜景,從建築、擺設就看得出不凡之處,賞景的同時還能夠點用美味的餐飲,非常適合帶美眉朋友上山共度悠閒時光。

網站:月光森林部落格 (很可愛的網頁,是用WordPress架的站)
類型:庭園景觀咖啡
位於:台中縣.太平.酒桶山

行程規劃:半日遊、一日遊(搭配鄰近景點)
交通指引:單車(挑戰級路線,新手勿試)、機車(可別騎小綿羊還雙載)、汽車,由於山道彎路、岔路多,第一次前往者,路線請參考交通資訊

小建議:多注意月光森林的部落格,經常有優惠活動,例如學生、生日…等。

相關網誌
這不是故事書,而是月光森林的菜單。


餐點的名稱都取得很可愛,要拿筆在上面劃線讓人遲疑了一下。


在這種氣氛的渲染下,連個平凡的水杯都感覺高貴起來。


可以看到另一家店。


遠處的涼亭。


月光森林的停車場,需要步行大概一分鐘,若人車較少的時候,可以考慮停近一點。


到處都有栽種的樹。


往洗手間的指示牌,木製彩繪,已經融入環境中,要仔細找。


放心,在這裡,一定看得到月亮。


點個月光森林慕斯,月亮又出現了,這道甜食真夠甜,連月亮都很甜,我愛。


清香的花茶。


蛋糕與花茶,下午茶的絕配。


肚子餓可以點火鍋,滿滿一鍋都是好料,不會讓人覺得這邊只是在賣景觀。


也有簡餐可以點。


用餐後到處走走,可以欣賞一下很不錯的佈置。












開車或騎車都能感受到山路有多麼陡,遇到騎單車上來的勇士,特別是不牽車、不落地的神腳,給他們一點鼓勵吧!


庭院種滿花草。








趕快跟另一半手牽手,一起走過這段感情路吧!


往~月光森林。


附近也有不少特別的建築。



從不同的角度,仔細觀察月光森林的建築,如果哪天中樂透,我也想要蓋一棟。






地址:台中縣太平市東汴里山田路長青巷26號

2009年1月27日

Ubuntu下的Stellarium安裝與中文顯示問題快速修正

關於Stellarium天文軟體的介紹,請參考敝站這篇「把電腦變成天文台,觀星軟體Stellarium介紹」。

測試環境:Ubuntu 8.10 (intrepid) x86_64,locale: zh_TW.UTF-8
以下粗體字部份代表執行的指令,下方的小字為輸出結果。

先檢查環境是否為中文(UTF-8),如果不是,需要重新登入選擇中文,或者在管理選單中使用語言支援的設定,將環境設定為中文(台灣)。

locale
LANG=zh_TW.UTF-8
LC_CTYPE="zh_TW.UTF-8"
LC_NUMERIC="zh_TW.UTF-8"
LC_TIME="zh_TW.UTF-8"
LC_COLLATE="zh_TW.UTF-8"
LC_MONETARY="zh_TW.UTF-8"
LC_MESSAGES="zh_TW.UTF-8"
LC_PAPER="zh_TW.UTF-8"
LC_NAME="zh_TW.UTF-8"
LC_ADDRESS="zh_TW.UTF-8"
LC_TELEPHONE="zh_TW.UTF-8"
LC_MEASUREMENT="zh_TW.UTF-8"
LC_IDENTIFICATION="zh_TW.UTF-8"
LC_ALL=


檢查是否有stellarium的套件。

apt-cache search stellarium
stellarium - real-time photo-realistic sky generator
stellarium-data - datafiles for Stellarium, a real-time photo-realistic sky generator

安裝前先檢查更新。

sudo apt-get update


接著進行安裝。

sudo apt-get install stellarium stellarium-data

再來則是修正中文的顯示問題,切換至data資料夾下。

cd /usr/share/stellarium/data

先將預設字型檔DejaVuSans.ttf換個名字。

mv DejaVuSans.ttf DejaVuSans.tt_

再連結系統的正體中文字型檔uming.ttc(細明體)。

sudo ln -sf /usr/share/fonts/truetype/arphic/uming.ttc DejaVuSans.ttf

這算是一個投機取巧的作法,在Stellarium未能直接正常顯示中文之前,把預設的英文字型檔替換成中文字型檔,就可以正常顯示中文字(否則會變成方塊)。有試過更改設定的方式,但仍未見效,目前就這方法既快又有效囉。

* 如果沒有uming.ttc這個檔案,則先使用「sudo apt-get install ttf-arphic-uming」將字型檔補裝,若系統其他位置有合適的中文字型檔,也可以另外指定,或是自行下載一個中文字型,放到/usr/share/stellarium/data資料夾下亦可。

在Ubuntu 8.10中文環境下執行Stellarium的畫面。

把電腦變成天文台,觀星軟體Stellarium介紹

關於Stellarium
Stellarium是一套開放原始碼的免費星圖軟體,讓你可以在自家電腦螢幕上享受一個完全屬於自己的超逼真立體星空,就和你在夜闌人靜時仰頭望向天際所能夠看到的東西一模一樣;本軟體亦可應用於天象儀上。
還記得小時候,自然課買的星象盤嗎?科技進步讓浩瀚的星空也能搬進小螢幕,虛擬的數位星象盤甚至可以當它是天文館,讓我們更輕鬆地認識天文。

2009年是特別的一年,為慶祝伽利略將望遠鏡指向天空400年整,聯合國訂定2009年為「國際天文年」(timedream)。這一整年將陸續舉辦各種相關活動,不趁這個機會好好認識一下天文,更待何時呢?


影片來源:「2009全球天文年」宣傳短片-台灣繁體中文版,相關網站:2009全球天文年2009全球天文年活動網站

台灣有很多適合觀星的地方,只要遠離光害的海邊、山區,挑個天氣晴朗、少雲的日子,待到晚上七、八點以後,就可以看到滿天的星空,是週末讓眼睛及身心放鬆的好方法。如果只是抬頭仰望星空,看久了或許會感到無趣;但如果趁著這種悠閒地時候,來一趟天文知識的知性旅遊,就會有很不一樣的體驗。

但是,已經從國小畢業很久的我們,該如何重新認識星星呢?

使用免費的Open Source軟體 - Stellarium,可以讓這一切變得很簡單。

Stellarium目前已經有Linux/Windows/Mac OS X三種平台的版本,支援多國語言,如果使用Ubuntu,只要「apt-get install stellarium」指令即可自動完成安裝。

目前的最新版本是:0.10.0 beta (Windows安裝檔名 stellarium-0.10.0beta.exe)

※ 如果發現中文顯示有問題,不用緊張,國內已經有業餘的愛好者著手製作修正檔,請參考「Stellarium 正體中文增強包」網站。若您剛好是對Open Source推廣、除錯有興趣的開發者,或是願意幫忙推廣的高中、國中小教師、社團負責人,也可以幫忙建立中文使用者的社群。

在Stellarium的官方網站,有列出一些它的功能:

夜空

  • 超過120000個來自Hipparcos星表的天體
  • 在不同文化的星座、星名,以及星座繪之間切換
  • 真實星雲影像
  • 真實的銀河效果
  • 非常真實的大氣和光線效果
  • 九大行星與其衛星

介面

  • 強大的縮放功能
  • 自由控制時間流動
  • 支援多種顯示語言
  • 利用自定劇本檔演出獨特天體秀
  • 魚眼投影模式
  • 個人天頂劇場專用球面鏡像投影模式
  • 人性化的圖形介面以及便利的鍵盤操作
  • 望遠鏡控制功能

特效

  • 赤道/地平座標網格
  • 星光閃爍效果
  • 流星
  • 日/月食模擬
  • 地面風景更換

自訂

  • 天體、背景、星座繪、劇本......
可別小看這個軟體,雖然它不花你一毛錢,但功能可是相當專業。把它安裝在小筆電,就能擁有行動天文館,在享受觀星的樂趣之餘,隨實用它查詢對照,瞭解更多天文知識。不管作為給小朋友認識星星的教育用途,或是當作業餘觀星的工具,都是相當合適的一套軟體。

第一次啟動Stellarium的畫面。


按「F2」開啟設定畫面,可以將語言切換為「中文…(Taiwan)」(不過目前的版本,似乎沒效果> <|||,請先安裝Stellarium 正體中文增強包)。


按「F6」開啟地區(Location)選擇畫面,選擇所在地區的名稱(例如Taipei, Taiwan)或輸入經緯度位置,畫面就會自動切換到所在地,依照目前的時間顯示白天或夜晚的天空,超酷。


按「F4」在切換到Landscape的場景選擇畫面,可以依照個人喜好選擇不同的觀星場景,例如平原、森林、海洋、火星、月球…。如果夠瘋狂,還可以拿起數位相機,到住家附近取景,自己客製Stellarium的場景,很棒的是已經有台灣人這麼做,還寫了一篇教學分享


分別按下「C」、「V」兩個按鍵,可以顯示星座(constellation)的連線及標示。


如果這樣還不能夠跟星座聯想起來,沒關係,使用「R」按鍵,星座就直接用圖像顯示出來。


還能怎麼玩?
  • 買個8至10倍、口徑夠大、集光力足夠的雙筒望遠鏡,開車或騎單車到郊外看星星,順便帶著裝有Stellarium的小筆電,以及相機(最好再搭配快門線及大容量電池),享受邊看、邊學、邊拍的樂趣。但天文攝影是個深不見底錢坑,要小心控制預算和慾望才行。
  • 如果真的不想出門,那就弄台投影機,把Stellarium畫面直接投影到天花板?!這個想法似乎也有網友在嘗試,找個時間來試試。
  • 預算無上限的PRO級玩家,還可以藉由Stellarium控制望遠鏡,請參考Telescope Control
推薦連結
天文相關軟體或服務
lyhcode by lyhcode
歡迎轉載,請務必註明出處!