:::

關閉NetBeans的滑鼠中鍵字體縮放功能 / Disable NetBeans Zoom Text In / Out Keymap

關閉NetBeans的滑鼠中鍵字體縮放功能 / Disable NetBeans Zoom Text In / Out Keymap

image

NetBeans上用滑鼠中鍵滾動捲軸時,往往會不小心因為按著中鍵滾動而導致觸發了文字縮放功能。本文章參考stackoverflow中fivedigit的解答,以圖文說明如何關閉這個功能。

To prevent from triggering off zooming text function in NetBean, this article aims to disable this function by modifying keymap configuration.


作法指導 / Guiding

Step 1. 進入Tools > Options

image

Step 2. 進入Keymap分頁進行調整

image

此處動作比較複雜。進入Keymap分頁之後,你會發現有很多快捷鍵的設定。請先在Search輸入「Zoom」,以找到我們要修改的Zoom Text In與Zoom Text Out。然後按下右邊的「…」按鈕,選擇「Clear」。兩個功能都要做「Clear」喔。

Step 3. 按下OK

image

這樣就完成囉。

請使用NetBeans的人先把這個功能關掉吧,不然每次滾動捲軸時真的是常常誤觸呢!

(more...)

慶祝「布丁布丁吃什麼?」8週年生日快樂 / Pulipuli.blogspot.tw 8th Birthday

布丁布丁吃布丁

0 Comments

慶祝「布丁布丁吃什麼?」8週年生日快樂 / Pulipuli.blogspot.tw 8th Birthday

DSC_0439

今天不只是聖誕節行憲紀念日之外,也是「布丁布丁吃什麼?」的8歲生日喔!

Today, Decenmer 25th, is not only Christmas and ROC Constitution Day, but also “Eatting Pulipulli” (http://pulipuli.blogspot.tw) 8th birthday!


「布丁布丁吃什麼?」的生日 /  Birthday of “Eatting Pulipuli”

image

是的,雖然因為沒有過節日習慣的我每年總是會自然地忘記「布丁布丁吃什麼?」的生日,但是這個Blog確確實實是從寫下第一篇時,就決定他生日的日期是2005年12月25日。而且這第一篇依然是這個Blog持續使用的「訪客留言版」呢!歡迎大家多多留言!

以下我就稍微回顧一下2013年的文章,作為送給「布丁布丁吃什麼?」的小禮物吧。

2013年的熱門文章 / Most Popular Articles of 2013

2013年從1月3日撰寫的「Android的Evernote變更預設筆記本的方法──用Evenote Web來設定」開始,到前天隨性而筆的「第一次參加國家考試心得隨筆」,2013年我總共撰寫了66篇文章,讓「布丁布丁吃什麼?」累積發佈文章數量達到了919篇。

以下就來看看本年度的一些熱門文章跟我自己覺得最重要的文章吧!

瀏覽最多的文章 / Most Visited Article

bluestacks_logo

今年的66篇文章中,點閱數量最多的是「改變BlueStacks預設解析度」的19,395次與「BlueStacks利用Astrid開啟Google Play,也能購買付費App」的13,533次,前者還是目前為止發表的所有文章瀏覽次數排行第7的熱門文章,可見Android連帶影響的BlueStacks有多受人重視。

不過BlueStacks因為介面使用老舊的Android 2.2,許多新的APP都無法安裝。而2013後半年也跑出後起之秀Genymotion,系統直接是Android 4版,而且介面比起BlueStacks還要美觀。因此我想BlueStacks這幾篇文章應該會越來越沒落吧。

Google+最多的文章 / Most Google+ Article

image

另一方面,若以Google+1的次數來看,2013年被+1最多次的是「Google閱讀器的關閉與資訊傳播的退化」,不僅Google+1數量為18次,Facebook上也有33人分享。平常大多是寫技術介紹的我,難得會對在這篇文章發表了自己的看法。Google Reader要關閉的期間,網路上大家各持己見。因此我也希望藉機會來跟大家強調一下RSS的重要性

個人認為最重要的文章 / My Favorite Articles

image_thumb[1]

就我個人來說,2013年最重要的文章是Git與GitHub版本控制的導入。這一系列的文章有三篇,各別是:

  1. Part.1 版本控制介紹:點閱次數 1607 次。
  2. Part.2 工具安裝與環境配置:點閱次數 1520 次。
  3. Part.3 GIT版本控制實作教學:點閱次數 2374 次,Google+1。

雖然文章撰寫時我是用TortoiseGIT來連接GitHub,但後來我發現用NetBeans的Git連線更為方便,而且IDE整合也很完善,之後有時間再跟大家做這方面的介紹。

現在我在GitHub上面已經開設了許多程式碼保存庫,除了「布丁布丁吃什麼?」的檔案已經放到GitHub托管之外,有些專案做得不錯,像是全文RSS擷取工具Full-Text-RSS線上PDF轉HTML的轉檔系統PHP File Converter,以及我論文核心的知識標註學習系統KALS,歡迎大家多多使用……雖然很想這麼說,可是其實這些伺服器的程式碼也不是這麼容易就架設得起來,比起公開取用,我還是把它當作自己私人使用的作業工具為主,還請大家多多包涵。

英文暫定為「Eatting Pulipuli」 / English Name of My Blog

原本這個Blog的名字是「布丁布丁吃?」,後來在溫先生某次研討會的建議之下改成了「布丁布丁吃什麼?」。上個學期在修英文課程時,我開始決定把「布丁布丁吃什麼?」做部分的英文化。用英文要提到「布丁布丁吃什麼?」的時候,我總是用 http://pulipuli.blogspot.tw 這樣的網址來描述。可是寫著寫著總是感覺很奇怪,所以決定暫時給他一個明確的英文名字:Eatting Pulipuli

Eatting Pulipuli 是直接翻譯自「布丁布丁吃什麼?」的意思,希望讓讀者能在吃(閱讀)布丁(的文章)時,能獲得一些幫助。不過對於這個名字不知道妥不妥當,大家有什麼好建議嗎?


結語:助人為樂 / Conclusion: Pleasure From Helping Others

「布丁布丁吃什麼?」是希望分享對大家有所幫助的有用文章為主,今年的熱門文章也大多都是實用型的文章內容,讓我感到欣慰。

相較於電腦技術的文章,我在學期末分享的課堂報告內容雖然點閱量比較沒那麼多,但Google+的次數卻比較多,表示讀者的認同度也很高。其實比起網路上大家都在分享的相同內容,我覺得分享一些比較冷門、但是對需要的人會特別重要的資料,這樣更有意義。

希望「布丁布丁吃什麼?」未來也能夠繼續分享對大家有用的文章,也請大家多多給我鼓勵喔!

image

(more...)

第一次參加國家考試心得隨筆

布丁布丁吃布丁

第一次參加國家考試心得隨筆

image

最近這幾天我到國家考場參加公務人員考試資格考試了。以下來簡單分享一下第一次參加國家考試的心得。


為什麼要考試呢?

很多朋友都很驚訝地跟我說:「我從來就沒想過布丁會想要考試!」也許是因為我總是做著自己的事情、讀跟同學不太一樣的程式書、寫著只有自己才懂得程式碼,而且老是窩在實驗室,不跟同學一樣去圖書館工讀體驗圖書館的工作,所以才會對我有這樣的看法也說不定。

雖然會驅使我報名的原因有很多,不過其中一個起因,可能是來自於我博士班同學的資格考失利事件。我有位博士班同學是個博學多聞的知名人士,而且老早就具備公務人員資格。但是儘管強者如他,在變化多端的博士生資格考題前依然鎩(ㄕㄚ)羽而歸。我在一邊鼓勵未來國家檔案局局長不可在此受挫,仍須再接再厲的時候,一邊也開始思考起要考上資格考究竟該如何準備。

圖書資訊學師資稀少,因此老師們也常常被邀請擔任國家考試的出題者,已經不是什麼新聞。那麼剛好借此機會,我也來一探同學們拼了命擠在考場中等待鯉躍龍門的機會來臨,那究竟會是怎樣的一個情景。


考場經歷

三天的考試在寒流與東北季風的大雨下度過。每天早上六點半起床時,比起內心的掙扎,我更擔心身體因為風寒而無力應考。中午考場提供的排骨與雞腿便當雖然不怎麼好吃,但是60元能求得一頓飽餐,不必冒雨到外面餐廳人擠人,想來也是一種優點。不過,根據我同學的說法,這次的便當算是挺好吃的了,還真是不錯啊。

平日應付課業就忙不完了,這三天的考試我當然是沒多少準備,以臨時抱佛腳的決心上陣。每每翻開考卷一見考題,想到的事情不是「哇,這問題沒有標準答案吧,叫我怎麼猜到出題老師內心的最佳解答?」就是「完了,這詞彙好像看過,可是我現在完全沒有印象」。但是寫著寫著,以前上課的授課內容,與週遭友人之間的討論話題,不知不覺就慢慢地湧上心頭。每次都是一開始抱著「反正不會寫,那會寫的題目就寫詳細一點吧」的心態,但是到最後卻連最不會寫的題目也有寫不完的論述而匆促下筆。雖然不見得會是出題老師想要的答案,但是親身體驗到多次考場經驗的同學所說的「兩小時寫都寫不完啊」、寫到手痠的真實體驗,我只能對師長、同學與朋友們獻上最大的謝意。

由於平時敲鍵盤時是靠手指頭在思考,這次來到了考場執起筆來總覺得很不適應。加上寫字姿勢錯誤,很快地手就痠到難以書寫。後來在考試過程中研究如何用手握手帕來調整握筆姿勢,後半幾節寫起來就不至於寫到手要斷掉的感覺。不過我覺得這也可能純粹是自我感覺良好,比起感覺寫到手要斷掉的人在答案卷上滿滿的文字,我大多連三分之二都不到。

考試反思

在思考每堂考科的題目時,也連帶地讓我思考起,究竟圖書資訊學的專業到底是什麼。經過這些題目篩選而成為人人稱羨的正式館員,這就是圖書資訊學應有的專業嗎?很剛好地今年也考到了專業認證的問題,十分切合我的疑惑。

大部分的問題沒有標準答案,而且有許多都是讓人自由發揮的應用問題。那麼對於這個議題究竟該如何在短短的25分鐘內做出精確的回答,我覺得這就跟吟詩作對的樂趣不謀而合。在我念書的時候,鮮少有機會可以跟同學們好好聊聊圖書館的各種議題。可是在國家考場中,每位考生卻是努力地擠出對於各種議題的看法。因此跟人討論如何答題會比較通順、架構上比較完整、細節層面上更為具體等等,我似乎可以看到有別於研討會對研究主題的偏門論點之外,國家考場也有著衷心關注圖書館議題的另一種隱形的論壇存在。


臨出師表,還好沒到不知所云

最後要說的是一個題外話,但是卻是讓我印象最深刻的一件事情。國家考場的男生廁所掛著孔明撰寫的前出師表後出師表,每次上廁所時,我就一邊看著孔明規勸君王、感謝先帝之恩、表明北伐決心等文字。孔明為蜀國鞠躬盡瘁的用心,讓我感動到差點也跟他一樣「臨表涕泣」。還好,考試時還沒到「不知所云」的程度就是了。

根據同學的說法,我第一次考試就在國家考場,算是十分幸運。我也覺得能夠靠著有絨毛的牆壁來寫作這點挺不錯的,真是難得的經驗啊。因為覺得非常新鮮,所以在最後一堂考科時還去蓋了到場證明章做紀念,一整個就像是觀光客來玩的感覺。

DSC_0446

最後我要感謝這幾天共同奮戰的好兄弟們:兩隻雙主修立可帶、2B鉛筆以及原子筆們!特別是從當兵時寫信就一直陪我奮鬥到今天的雙主修立可帶,感謝你們!

(more...)

國立臺中圖書館獎助博碩士班學生研撰圖書資訊學位論文申請書 / Apply for National Taichung Library in 2009

國立臺中圖書館獎助博碩士班學生研撰圖書資訊學位論文申請書 / Apply for National Taichung Library in 2009

200904 國中圖書香遠傳 獎助博碩士論文報導 -1 20090610-pudding2-0038

國立臺中圖書館,現已改稱為國立公共資訊圖書館(以下簡稱國資圖)的獎助博碩士論文學生研撰圖書資訊學位論文,是提供各位圖資界學弟妹在完成計劃書口試之後可以嘗試挑戰的獎助學金。我當時在2008年計劃書口試完成之後也有前去申請,有幸在2009年順利被接受。後來幾位學弟妹也想要嘗試申請看看,而過來索取申請時的表格。為了鼓勵學弟妹多多挑戰,在此我簡單地分享一下當時的申請文件。

The application forms for applying the National Taichung Libraty Thesis Grants as well as my experience as a previous winner are provided in the article.


申請書下載 / Documents Download

個人資訊都已經隱蔽,文件裡面只有申請表格跟論文內文喔。

從論文計劃書縮減內文 / From Thesis Proposal to Application

國資圖的獎助申請條件中限制計劃書本身為15頁,不含前面的申請表格與後面的參考文獻。

我原本的計劃書(原本檔案連結損壞,我重新上傳了,連結放在留言中)不含封面、目錄與參考文獻共32頁。縮減成國資圖的申請書之後,內容只剩下14頁。

基本上論文的架構都不變,但是現在看來,我覺得可以再減少一些文獻探討的部份。大部分學生計劃書中都會蒐羅大量的文獻探討,在取捨這些文獻時往往會相當苦惱。我建議是如果你的論文沒用到前人研究的方法,那可以索性不提。重點在於研究方法、研究流程以及預期成果,用盡腦汁來找出你研究的價值吧。我想評審老師想要看的應該是有發展價值的題目,而不是讀了一堆文獻的心得彙整吧。

裝訂 / Binding

2009-02-05-480

製作這份申請書的時候,除了基本的推薦函、必要身分證件、電子檔光碟等資料之外,還需要把它印出之後裝訂成冊,一式六份。裝訂時我採用與計劃書相同的綠底膠裝。大概就跟上圖的計劃書類似的樣子,只有文字不同。因為頁數很薄,印象中是不需要書背的。

如果想要摸一下實體的話,我有一份申請書放在所上的圖書室書架喔。

詳細的規定請務必詳讀國立公共圖書館獎助博碩士班學生研撰圖書資訊學位作業要點喔。


結語 / Conclusion

我印象中當時計劃書口試結束之後,大概用了一個禮拜左右改去申請國中圖(當時還是叫做國中圖)的獎學金。雖然是抱著一種「反正論文計劃書都寫了,那就順便申請看看吧」的心態,沒想到還真的上了。而且當時政大圖檔所還同時通過三位,可謂風光至極。

很多學弟妹會擔心自己文筆不好、文獻探討不足,而不敢去申請。可是如果你看我的計劃書,也會發現我寫得其實也很不成熟。不成熟又如何呢?畢竟我們都還是學生啊,學生就是擁有不成熟的權力。

即使是不成熟的文筆,評審老師依然可以找出你的論文價值。但是如果不去申請的話,那就連這個機會都沒有囉。總之加油吧,祝各位學弟妹都能順利上榜。

(more...)

把電子報轉成RSS訂閱 / Forward E-mail Newsletter to RSS feed

布丁布丁吃布丁

把電子報轉成RSS訂閱 / Forward E-mail Newsletter to RSS feed

image

E-mail信箱是處理工作要務,而電子報(e-mail newsletter)等促銷訊息應該是閒餘時候來看。我利用Gmail把電子報轉到Blogger上,再用RSS訂閱該Bloggger,就可以做到電子報轉成RSS訂閱的功能了。

I usually use e-mail, like Gmail, to handle my jobs. But I feel annoyed when advertisement newsletter occupy my inbox. I try to convert newsletter e-mails to RSS feeds. So that I can read newsletters at rest.


在不同的工具上,做不同的事情 / Do the right thing by right tool

image

我平時主要工作的集中處是Gmail。平時我的收件匣只存放「尚未處理的工作」,而其他封存的郵件也大多都是「做完的工作」或「重要的通知」。此外,我就不想在Gmail中保存與工作無關的訊息,像是電子報。儘管現在Gmail提供了收件夾自動分類的功能,但對這堆電子報依然會留在Gmail當中,造成往後要搜尋相關工作信件時,反而淹沒在與工作無關的電子報裡,添增資料整理的困擾。

16 - 1

當然,電子報是增加新知的重要資訊來源。我會整理資訊新聞、圖書館新聞、最新文獻等RSS資訊來源,然後在Feedly上訂閱(以前是Google Reader,可惜關了)。平常我坐在電腦前的時間就是工作(開 啟Gmail),但是在外面移動、等車的時間,我就是開啟Android手機上的gReader來閱讀這些RSS。這也是偶爾我會在Plurk上轉貼一些新聞的情形。

跟用E-mail訂閱電子報相比,RSS訂閱電子報有幾個好處:

  • 可以將捲軸瀏覽過的文章自動標示為已讀,不必一一開啟或是手動標示已讀。
  • 依照電子報來源分類管理,或是將RSS分群管理,未來回頭搜尋相關文章時非常方便。
  • 讓Gmail只剩下工作信件,不再被那些無關的電子報干擾。
  • 我可以在自己閒暇之餘再來開啟「政大每日郵件」之類的電子報,不必用寶貴的工作時間忙著幫傳播學院填寫20分鐘的問卷。

最近實在是覺得Gmail被這些排山倒海而來的電子報入侵感到十分困擾,所以興起了我想把這些電子報轉換成RSS訂閱的念頭。

如何從E-mail轉換成RSS訂閱? / How to subscribe RSS feed from E-mail Newsletter

儘管資訊相關的網站大部分都會提供RSS服務,不過小型的機構網站電子報可都還是採用傳統的人工製作電子報來寄送,沒有採用電子報工具來統一管理,自然沒有RSS訂閱(feed)的服務。

目前網路上大部分的服務都是把RSS轉成E-mail,但是相反地,將E-mail電子報轉換成RSS的服務非常少。所以這個轉換工具可能靠不了別人,我想應該還是得自己來想想辦法才行。

摸索了一下,我目前想到的作法很簡單:將信件轉寄到Blogger來典藏,這樣就可以做到將E-mail電子報轉換成RSS訂閱了。

情境說明與事前準備 / Preparing

我現在想要將Gmail中部分郵件自動轉寄到以Blogger建立的電子報Blog,利用Blogger的「使用電子郵件張貼」(Mail2Blogger)功能來張貼電子郵件。最後就用Feedly訂閱電子報Blog,完成訂閱的動作。

因此在以下教學中,我會用到幾個工具:

  • Google Account:使用Gmail、Blogger跟Feedly都會用到的帳戶。如果還沒有Google帳戶,去免費註冊一個吧
  • Gmail:接收電子報的電子郵件地址,並且進行自動轉寄的功能。你也可以用你自己偏好的電子郵件系統,大部分也都有提供轉寄的功能。
  • Blogger:保存電子報,並提供RSS訂閱的免費服務。
  • Feedly:訂閱RSS的閱讀器。我會搭配gReader來讀取在Feedly訂閱的RSS,不過gReader在本教學中不是重點。

準備好的話,請按照以下步驟,一步一步把電子報轉換成RSS訂閱吧。

Step.1 建立電子報Blog / Create Newsletter Blog

image

進入Blogger的首頁,點入左上角的「新增網誌」按鈕。

image

輸入標題與網址就可以建立了。在此我輸入的是「布丁測試電子報」(以下簡稱電子報Blog)與「pulipuli-test-newsletter.blogspot.com」。

image

進入新建立電子報Blog的「設定」功能,進行一下的其他設定。

Step 1-1. 關閉隱私權 / Setup Private

image

在「設定」的「基本」中,將隱私權關閉,因為這只是我私人使用的電子報訂閱位置。如果你不介意公開訂閱的電子報,那也可以把它打開。

Step 1-2. 關閉留言 / Disable Comment

image

在「設定」的「文章和留言」中,把留言功能限定於「僅限此網誌的成員」,再按右上角的「儲存設定」。因為這只是我私人使用的電子報,不希望讓別人留言討論。

Step 1-3. 設定使用電子郵件張貼功能 / Enable Mail2Blogger

image

這一步重要!進入「行動裝置及電子郵件」中,設定「使用電子郵件張貼」的功能。文字框裡面你可以輸入指定的密語(secret words),組成一個只有你知道的電子郵件位置,再按下右上角的「儲存設定」。

舉例來說,我設定的是「test-newsletter」,於是未來任何人寄信到到「pulipuli.chen.test-newsletter@blogger.com」時,他都會直接發佈在Blog當中。當然,這個位置我只是測試用的而已,寫完這篇文章之後我就會刪除了,請不要真的去寄信。

Step 1-4. 關閉「關於我自己」的訊息 / Hide Author Information

image

Blogger預設會在Blog擺放自己的資訊。因為這只是電子報保存,不代表我個人的文章,所以建議把它移除掉。

image

你可以從「版面配置」中找到「關於我自己」,按下「編輯」後再選擇「移除」按鈕,就可以關閉這個訊息。

Step 2. Gmail新增轉寄位置 / Setup Forward in Gmail

image

為了把Gmail轉寄到電子報Blog,必須先在Gmail的設定中新增「轉寄地址」。在Gmaill「設定」的「轉寄和POP/IMAP」中進入「新增轉寄地址」。

image

在此輸入剛剛在電子報Blog新增的電子郵件張貼位置「pulipuli.chen.test-newsletter@blogger.com」,按下一步。

image

確認郵件轉寄,按下「繼續」。

image

回到電子報Blog的首頁上,你會發現有一篇文章被新增了,而且還是Gmail的轉寄確認信。點下信中提供的連接已確認郵件吧。

image

確認成功。

image

接著再回到電子報Blog的管理介面中,刪除剛剛那篇「Gmail轉寄確認」的文章吧。

Step 3. Gmail建立電子報篩選器,自動轉寄到Blog / Use Gmail Filter to Forward Newsletter to Blog

image

在Gmail中,利用篩選器來選擇電子報的寄信來源。

image

以「圖書館」的電子報為例,我可以用寄件者為「fish14@nccu.edu.tw」這位館員的電子信箱作為篩選條件,按「根據這個搜尋條件建立篩選器」來建立篩選器。

image

接著我再篩選器中設定「轉寄給:pulipuli.chen.test-newsletter@blogger.com」跟「刪除它」,以及勾選「略過收件匣(將其封存)」、「永不將其標示為重要」跟「分類為:最新快訊」。以此設定按下「建立篩選器」。

好,到目前為止,我們總算可以把Gmail的電子報轉移到電子報Blog中了。

Step 4. 用Feedly訂閱電子報Blog的RSS / Subscribe RSS feed in Feedly

image

電子報Blog的RSS訂閱位置,預設是在網頁下方的「訂閱: 文章 (Atom)」中。以電子報Blog為例,它的網址是「http://pulipuli-test-newsletter.blogspot.tw/」,那RSS訂閱位置就是「http://pulipuli-test-newsletter.blogspot.com/feeds/posts/default」。記住這個訂閱位置,Feedly就是靠這個位置來訂閱RSS的。

image

接著我們來到Feedly頁面,從「+Add Content」功能中,在搜尋框輸入剛剛的RSS訂閱位置。等一段時間後,Feedly會找到該RSS訂閱的來源(Discover feeds),再按下「+」新增。

這樣子就完成在Feedly中訂閱RSS的動作了。至於要怎麼在Feedly整理RSS訂閱或其他的功能,就請參考電腦玩物寫的「Feedly 完全上手教學,延續 Google Reader 閱讀器體驗」吧。


結語:電子報轉成RSS訂閱之後 / Beyond E-mail to RSS feed

image

儘管經過以上的步驟之後,我把跟工作無關的電子報都改放到Feedly中訂閱,而只在行動裝置上欲閱讀這些電子報。不過遇到重要的文章時,我還是會把它轉存到Evernote供未來參考利用Android的EverClip也可以擷取網頁原始格式),或是放到Pocket中閱讀全文(不過我後來發現幾乎不會回頭去看就是了)。

把電子報放在Blogger之後,我發現我還可以為某些每次都是由不同人寄信、沒有統一系統管理的電子報建置一個數位典藏的集中地。如果小型機構沒有電子報相關的系統,我建議你們也可以採用我上面的教學,以Blogger建立一個專用的電子報訂閱中心。

image

Blogger可以用「小工具」新增以Email訂閱的功能,所以一樣可以提供讀者Email訂閱與RSS訂閱這兩種方案。

image

此外,Blogger也內建了「統計資料」的功能,可以讓你知道電子報的訂閱資訊。如果不關閉隱私權的話,也能夠讓人用搜尋引擎找到電子報的內容,增加傳播影響力。

不過上述的步驟依然有點太過複雜,如果只是要簡單的Email to RSS,似乎可以用更簡單的方式搭配運作。舉例來說,如果可以再寄信時自動依照來源安排不同的標籤(label),那就可以用同一個電子報Blog容納來自多種不同來源的電子報,並且可以依照來源不同個別訂閱所需要的RSS。技術上不難,難的只是做成公開服務提供穩定運作而已。希望未來有心人士可以試著提供這樣的服務,也算是為幾近沒落的RSS作點貢獻吧

(more...)

Zotero中英兼具APA開發記事 / Zotero Chinese-English APA style development note

布丁布丁吃布丁

Zotero中英兼具APA開發記事 / Zotero Chinese-English APA style development note

image

我很久以前寫過一篇「用Zotero輸出中文、英文不同的APA參考文獻」,在「布丁布丁吃什麼?」部落格當中意外地還算是頗受歡迎。

最近在寫計劃書的時候,需要整理大量的引用文獻,於是又開啟了我想要繼續發展中英兼具APA格式的念頭。前天我用很破爛的英文去Zotero論壇詢問CSL語法,才發現原來<layout>標籤可以設定locale屬性,它會參考zotero item的language欄位來設定對應的layout。光是這個功能的發現,又讓我可以往下繼續開發。

文件與功能探索

這段期間最主要的突破是CSL-m Specification Supplement這份文件。它描述了許多CSL原本沒有提供,但是卻十分好用的功能,比起Zotero網站提供的舊版CSL教學來說,這份2013年11月最近才公布的文件有用很多。

為了搭配新的CSL,我也把Zotero升級成4.0.17,不過升級之後並沒有感到什麼差異。最主要還是要靠修改CSL吧。

在撰寫途中我還是遇到很多問題,主要是:

terms的設定:後來發現<locale xml-lang=”zh-tw”>跟<layout locale=”zh-tw”>中的zh-tw必須完全相同才有效。

判斷作者數量的方式:雖然有suppress-minsuppress-max可以用,但是卻不能達到我想要的指定顯示最後一個作者人數,或是在作者人數超越指定數量時顯示我指定的訊息。

機構全名要變成縮寫:CSL-m有新增institution。我才知道原本作者欄的雙欄跟單欄功能中,單欄就是instituion的功能。

image

在中文APA當中會要求第二次引用機構名稱時顯示縮寫。我本來期待會有另外一個欄位可以記錄機構的縮寫名稱,不過似乎是沒有的樣子。算了,就偷懶都用全名吧。

if條件判斷:還是一樣,條件判斷少得可憐。連最基本的從item的varible中比對字串的功能都沒有。

此外還有一些其他的進展,詳述如下:

Zotero Standalone 切換語系的方法

有一點必須要說明,我現在主要使用的Zotero Standalone修改語系的方式跟Firefox的add-on版本有所不同。

image

Zotero Standalone修改語系也是要到about:config功能中修改。不過Zotero Standalone預設鎖定作業系統使用的語系,必須要先將intl.locale.matchOS修改成false,才能在extensions.zotero.export.bibliographyLocale中修改語系。

我建議把extensions.zotero.export.bibliographyLocale修改成en-us,變成英文版本的Zotero。因為英文會考慮複數問題比較多,例如p. 跟pp. ,所以我認為先用英文預設值再來添增中文設定檔,會比較省功。

CSL編輯器

之前在開發CSL時,都是在Word中不斷重新整理引文資料,還要搭配Zotero的開啟與關閉,頗浪費時間。後來發現有CSL編輯器這個強大的工具,可以省下上述的複雜作業,專心在開發上。

image

CSL編輯器在Zotero偏好設定Preference中的Advaced > General 下面的Open CSL Editor。中文介面的使用者可以參考上圖的位置來開啟。

image

剛開啟CSL編輯器時,不會有任何資訊。首先請你在Zotero主視窗中選取任何一筆書目,然後在右上角選單中選擇我們要開發的CSL檔案,如下圖:

image

接著CSL編輯器就會根據你現在指定的書目與格式來顯示預覽結果,如下圖:

image

修改上面的CSL原始碼,下面就會馬上輸出預覽結果。不過他的原始碼只能用純文字進行編輯,比較不方便,所以我通常是在Sublime Text 2中編輯後再複製貼上到CSL編輯器。Sublime Text 2指定XML顯示格式之後的畫面如下:

image

如果要換一筆書目來顯示,或是修改書目資料的話,記得要按左上角的「Refresh」來重新讀取。

image

還有指定範圍(頁數、章節)、省略作者(Suppress author)、引用位置(首次 First或接續 Subsequent)等功能可以使用。甚至一口氣指定多筆書目資料(在Zotero主視窗中按著Shift就可以多選),都會在CSL編輯器中顯示,省下搭配Word運作的困擾,方便很多呢!

中文APA的參考

因為開發中文APA需要有個參考對象,於是我從「圖書館學與資訊科學」借來了APA格式的參考範例當做目標進行開發。

image

並且根據常用的引用情況,建置了對應的模擬書目資料。這樣我就可以標明目標的書目輸出結果,比較跟目前CSL輸出結果的差異。

目前比較了報告(report)、報紙(newspaper)、期刊論文(article-journal)、會議或研討會論文(paper-conference)、圖書(book)跟學位論文(thesis)這幾種。

不過現在想想,還是應該去拿張保隆老師跟謝寶煖老師撰寫的「學術論文寫作:APA規範」來做為參考目標。不過這本書是2006年出版,跟「圖書館學與資訊科學」撰寫的2011年公佈相比,會有時間差異的問題。

在仔細評估之前,中文APA還不算完成吧。

目前的中英APA CSL檔案下載

雖然還不算是完成,不過還是可以提供給大家下載試試看:

轉譯器(translator)更新

因為對應語系要從zh_TW修改成zh-tw的關係,我自己開發的轉譯器也有所更新。下載位置如下:

轉譯器的安裝說明請參考「Zotero安裝自製的轉譯器」。

使用注意事項

由於目前還不算完成,所以使用時必須手動調整幾種狀況:

  • 當一次引用多篇文獻時,開頭的「(」或「(」會重複,要記得手動移除。
  • 八人作者理想上應該是要如下顯示,可是實際上需要手動調整

作者 A、作者 B、作者 C、作者 D、作者 E、作者 F、…作者H等人(1991)。[圖書 04-2. 作者超過 8 人時]。出版地:出版者。

其他問題可以用留言回覆給我點建議,感謝。

(more...)

Pound反向代理伺服器延長等待時間的設定

布丁布丁吃布丁

Pound反向代理伺服器延長等待時間的設定

20091027_itmedia_ie

(圖片來源:ITmediaサイトが見れない・・・「The service is not available. Please try again later.」)

安裝Pound作為反向代理伺服器(reverse proxy)之後,服務就常常遇到以下錯誤訊息:

The service is not available. Please try again later.

這是因為網站運作時間超過了Pound預設的等待時間,所以Pound顯示了錯誤的訊息。以下教大家如何設定Pound的等待時間以避免這個問題。

After using Pound as reverse proxy, it’s very easy encounter this error:“The service is not available. Please try again later.” Following I will show you how to configure Pound’s TimeOut setting to prevent this problem.


Pound設定檔位置 / The path of Pound’s configuration file

要調整等待時間,必須調整Pound的設定檔。

一般Pound設定檔的位置是在 /etc/pound/pound.cfg,但是IPFire中Pound設定檔的位置是 /etc/pound.cfg

若要以vim開啟Pound設定檔的指令如下:

   1: # vim /etc/pound/pound.cfg

原本的pound.cfg的設定大概是:

   1: ## Minimal sample pound.cfg
   2: ##
   3: ## see pound(8) for details
   4:  
   5:  
   6: ######################################################################
   7: ## global options:
   8:  
   9: User            "www-data"
  10: Group           "www-data"
  11: #RootJail       "/chroot/pound"
  12:  
  13: ## Logging: (goes to syslog by default)
  14: ##      0       no logging
  15: ##      1       normal
  16: ##      2       extended
  17: ##      3       Apache-style (common log format)
  18: LogLevel        1
  19:  
  20: ## check backend every X secs:
  21: Alive           300
  22:  
  23: ## use hardware-accelleration card supported by openssl(1):
  24: #SSLEngine      "<hw>"
  25:  
  26: # poundctl control socket
  27: Control "/var/run/pound/poundctl.socket"
  28:  
  29: ## (... Others)

加入TimeOut的設定 / TimeOut configuration

Pound預設的等待時間只有15秒,我建議把它改成300秒,也就是超過5分鐘才顯示錯誤訊息。

那就要在設定檔中加入TimeOut設定:(注意O是大寫)

   1: ## Wait for server respond in X secs:
   2: TimeOut         300

於是設定檔開頭就會是:(注意紅字的部份

   1: ## Minimal sample pound.cfg
   2: ##
   3: ## see pound(8) for details
   4:  
   5:  
   6: ######################################################################
   7: ## global options:
   8:  
   9: User            "www-data"
  10: Group           "www-data"
  11: #RootJail       "/chroot/pound"
  12:  
  13: ## Logging: (goes to syslog by default)
  14: ##      0       no logging
  15: ##      1       normal
  16: ##      2       extended
  17: ##      3       Apache-style (common log format)
  18: LogLevel        1
  19:  
  20: ## check backend every X secs:
  21: Alive           300
  22:  
  23: ## Wait for server respond in X secs:
  24: TimeOut 300
  25:  
  26: ## use hardware-accelleration card supported by openssl(1):
  27: #SSLEngine      "<hw>"
  28:  
  29: # poundctl control socket
  30: Control "/var/run/pound/poundctl.socket"
  31:  
  32: ## (... Others)

重新啟動 Pound / Restart Pound Service

重新啟動的指令為:

   1: # /etc/init.d/pound restart

這樣的話,只要伺服器運作不要超過五分鐘,那就不會出現錯誤訊息了。


結論:利用Pound優雅地處理錯誤訊息 / Conclusion: Handle HTTP error with Pound

許多人用Pound都會覺得預設的錯誤訊息:「The service is not available. Please try again later.」很醜,也很讓使用者難以確定接下來到底該怎麼做好。

其實Pound可以設定在發生錯誤時顯示其他網頁,設定可以參考Pound secure reverse proxy "how to"這篇文章中的The pound config file(這個範例也有設定TimeOut),重點摘錄如下:

   1: Err414 "/var/www/htdocs/error/generic_error_page"
   2: Err500 "/var/www/htdocs/error/generic_error_page"
   3: Err501 "/var/www/htdocs/error/generic_error_page"
   4: Err503 "/var/www/htdocs/error/generic_error_page"

因此當發生414(網址過長)500(內部伺服器錯誤)501(不支援的HTML方法)503(伺服器停止服務)錯誤時,就會顯示「/var/www/htdocs/error/generic_error_page」這個網頁。

image

為此我做了一個實驗室雲端平台的錯誤網頁,下載網址是: http://dl.dropboxusercontent.com/u/717137/20130914-error_page/error_example.html

Pound的功能十分強大,下次我再介紹如何利用Pound製作緊急啟動方案(Emergency)。

(more...)