:::

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...)

批次開啟網頁 / Batch of Webpages Opener

批次開啟網頁 / Batch of Webpages Opener


網頁顯示 / Webpage preview

練習寫Angular.JS

(more...)

修復Linux開機啟動程序initrd錯誤的問題 / Fixing a Broken initrd in Linux

布丁布丁吃布丁

修復Linux開機啟動程序initrd錯誤的問題 / Fixing a Broken initrd in Linux

2013-08-20_22-26-51

這篇是解決Linux開機時遇到啟動中找不到開機啟動程序,而出現「mount: could not find filesystem ‘/dev/root’」的解決方法。具體方式都是參考troy’s unix space的「Fixing a Broken initrd in Linux」。以下是記錄我自己的解決方式。

This is the solution when you encounter Linux boot failed with "mount: could not find filesystem ‘/dev/root’". The details are reference "Fixing a Broken initrd in Linux" in troy’s unix space. Following is my problem solved steps.


問題敘述 / Problem

  • 作業系統:CentOS 5 (不確定是5.幾版),編號是CentOS (2.6.18-164.15.1.e15)←注意這個編號,這在開機畫面中會看到,之後我們會用到這個編號喔。
  • 硬碟:使用PATA的IDE硬碟掛載,編號為hda
  • 操作環境:這是我在做P2V當中遇到的問題,修復過程都是在VirtualBox 4.2.6中完成。

我印象中之前是使用Clonezilla把實體機器上的CentOS複製到VirtualBox的VDI,以完成P2V (Physical-toVirtual)的作業。不過不知道是不是Clonezilla複製的過程有些問題,複製到VDI,確認硬碟位置與實體機器相同之後,我把它啟動時遇到了以下的錯誤訊息:

2013-08-20_22-26-51

(上面為止的都是正常啟動訊息)

Unable to access resume device (LABEL=SWAP-hda2)

mount: could not find filesystem ‘/dev/root’

setuproot: moving /dev failed: No such file or directory

setuproot: error mounting /proc: No such file or directory

setuproot: error mounting /sys: No such file or directory

switchroot: mount failed: No such file or directory

Kernel panic – not syncing: Attempted to kill init!

到此為止,系統就不能運作了。

我把錯誤訊息上網Google了一下,馬上就找到「Fixing a Broken initrd in Linux」這篇的解法。以下就是操作的過程。

Step.1 用CentOS光碟進入Linux救援模式 / Ener Linux Rescue Mode By CentOS Installation CD

我之前也有用救援模式(rescue mode)來修復無法啟動的CentOS,不過那時候是用fsck修復檔案系統(filesystem),這次是要修復開機啟動程序(initrd)。

2013-08-20_22-45-39

我這次一樣使用CentOS 5.2安裝光碟,從光碟開機之後看到以上畫面,接著輸入以下指令:

linux rescue

接著設定語系、鍵盤與網路。本次修復不需要用到網路,所以網路我就不開啟了。

2012-04-23_235030 continue

最重要的是選擇如何掛載原本的系統,畫面如上圖(我借用以前我自己修復過程的圖片)。請選擇「Continue」,救援模式會把原本的系統掛載到「/mnt/sysimage/」中。

2013-08-20_22-46-50

接著會進入指令列,輸入以下指令

sh-3.2# chroot /mnt/sysimage/

這樣就進入原本的系統中了。接下來我們要開始修復囉。

Step.2 備份開機映像檔 / Backup Boot Image File

會發生這個問題,是因為CentOS的開機映像檔毀損了。所以這篇文章的目的在於修復CentOS的開機映像檔。

開機映像檔的位置在 /boot 中。依照Linux版本不同,裡面會有不同編號的檔案。我上面有提到要特別注意CentOS的編號「2.6.18-164.15.1.e15」,以這個例子來說,我的檔案就會是「/boot/initrd-2.6.18-164.15.1.e15.img」。

我們在此先備份這個壞掉的開機映像檔,以免待會修壞了無法還原吧。

mv /boot/initrd-2.6.18-164.15.1.e15.img /boot/broken-initrd-2.6.18-164.15.1.e15.img

 

Step.3 建立開機映像檔 / Using “mkinitrd” Create Boot Image File

接著我們要用mkinitrd指令來建立新的映像檔。指令需要輸入兩個參數,一個是建立開機映像檔的位置,另一個是版本的編號。以我需要的編號「2.6.18-164.15.1.e15」來說,指令如下:

sh-3.2# /sbin/mkinitrd /boot/initrd-2.6.18-164.15.1.e15.img 2.6.18-164.15.1.e15

完成建立之後,你可以用指令「ls /boot/initrd*」來確認開機映像檔是否有正確建立。

沒有問題的話,輸入指令「exit」兩次來重新啟動系統。

重新啟動的時候記得要把CentOS光碟拿起來喔。

通過開機程序 / Pass Statup Process

2013-08-20_22-53-48

之後系統就能夠順利開機了。不過來到系統裡面,我發現原本可以運作的Tomcat出了點問題。後來我重新建立一個Apache Tomcat就恢復正常,也設定了自動啟動Tomcat跟PostgreSQL。跟這篇主題不太相關,所以細節我就不多提了。

以上就是整個修復的過程。

(more...)

「布丁布丁吃什麼?」也有Android APP囉! / The Android APP Version of “Pulipuli Blog”

「布丁布丁吃什麼?」也有Android APP囉! / The Android APP Version of “Pulipuli Blog”

image

布丁的blog「布丁布丁吃什麼?」已經登上了Google Play,在此我也聊一下最近自己對於這個blog的一些感想。

The Android APP of my blog "Pulipuli Blog" had been upload to Google Play. Following is my thoughts about this APP and my blog.


Google Play下載「布丁布丁吃什麼?」 / Download APP From Google Play

31 - 2

這個APP就是前幾天我用AppsGeyser製作的結果。製作這個APP其實也沒花很多功夫,也就是把Blogger的行動版網址輸入到AppsGeyser,就能夠下載一個這樣的APP。不過比起用AppsGeyser製作APP這種懶人的作法,設計圖示反而更令我困擾啊。之後也得花點時間來研究如何設計好的圖示囉

總而言之,現在你用Android手機也能夠閱讀「布丁布丁吃什麼?」囉。這還真是自我行銷的一種手段啊。

不過比起推廣「布丁布丁吃什麼?」這件事情,我更把它當作是一個玩具在看待。也許改天有時間了,我也許會拿起PhoneGap與jQueryMobile自己手工製作一個APP,把「布丁布丁吃什麼?」APP加上自己喜歡的功能喔。到時候我也會寫blog跟大家分享這段經驗吧。

對於APP的反思 / My Thoughts of APP

當兵的時候,有一位學長在跟我講他堅持買iPhone的理由:

因為iPhone上有個時尚網站的APP,那是我時常關注的網站,所以我想買iPhone。

我對此感到困惑已久,如果只是想要獲取某個網站的資訊,你為什麼不要用RSS呢?先不論很多人並不知道RSS這個工具的這點,許多資訊提供者(包括圖書館與建置數位典藏的那些人)都抱著「你要資料,請來我這裡」的高傲想法,逼迫使用者必須要用他們設計的介面、用他們建立的瀏覽方式,讀者才能獲得他們的資料。

這種APP也是如此。以「布丁布丁吃什麼?」來說,這個APP也沒有提供什麼功能,只是從最新文章開始往下閱讀、瀏覽而已,連搜尋功能都沒有提供。但如果是某些情況下,大家要取得「布丁布丁吃什麼?」的資料,那就得遵循這個APP的遊戲規則才行。

老實說,我不是很欣賞這種作法。更明白地說,我其實不建議大家去下載目前的「布丁布丁吃什麼?」APP。你可以直接從網頁瀏覽器來開啟「http://pulipuli.blogspot.tw」,也可以用RSS來追蹤「布丁布丁吃什麼?」的最新動態。不過我更推薦的是,用Google搜尋吧。

用RSS來把握「布丁布丁吃什麼?」的最新動態 / Using RSS To Follow Pulipuli Blog

要追蹤「布丁布丁吃什麼?」的最新資訊,我建議用你可以用RSS:

要訂閱這個RSS,你需要選擇一個RSS的工具。在Google閱讀器關閉的現在,你也有其他方案可以選擇:

要在Android上閱讀RSS,除了用Feedly的Android版本之外,我也很推薦好用的gReader:

用社群網站來追蹤「布丁布丁吃什麼?」的最新動態 / Follow “Pulipuli Blog” In Social Website

雖然我很喜歡RSS,不過這年頭似乎趨勢是封殺公開的RSS標準,轉向封閉型的社交網站。為了迎合這股風潮,「布丁布丁吃什麼?」在兩大社交網站上也有自己的粉絲團:

image

赫然發現我忘記用IFTTT把Blogger的訊息轉到Facebook粉絲團中,所以粉絲團資料是空的orz

image

我記得我好像設定了HootSuite,所以Google+專頁上充滿了我的Blog文章以及Plurk發言

用Google搜尋來找「布丁布丁吃什麼?」的文章吧 / Don’t Browse, Search It!

image

嗯,常常看我文章的讀者應該知道,比起追蹤「布丁布丁吃什麼?」的最新動態,我還比較推薦讀者直接用Google等搜尋引擎搜尋你要的資料就好。而且請不要用Blogger提供的搜尋功能,那功能找的資料比Google搜尋還要差得許多。

我寫blog的方式並不是有堅持特定主題,或是以某種組織架構連貫而成。除了少數幾篇我會把文章拆成幾個部分來撰寫之外,大多數文章我都是希望能夠獨立呈現。這篇文章自己就應該是一個完整的論述,而其他相關資訊則以超連結呈現。

關心作者的近況 / Follow Pudding’s Status

如果想要了解國內圖書資訊學的近況,那時常關心中華民國圖書館學會的電子報,那我覺得很合理。不過因為「布丁布丁吃什麼?」是一個個人興趣而撰寫的網誌,除了我自己之外,我想不到有什麼理由需要會讓人需要追蹤最新動態就是。

如果要關心我個人的話,那我會比較建議你看我的Plurk比較直接喔。

image


結語:「能寫blog真是太好了呢」 / Conclusion: “It’s really great that you write blog.”

這顆布丁是在無聊的世界中找尋樂趣的一種不能吃的食物。喜歡動漫畫、喜歡遊戲、喜歡程式、喜歡跟世間脫節的生活步調中,撰寫blog──布丁布丁吃什麼? http://pulipuli.blogspot.tw/

最近幾天,我把這學期應該要分享的資料拿出來分享。這些文章大多都已經是過去的事件,但是他們有分享的價值,所以我會希望能夠在「布丁布丁吃什麼?」這個blog中,分享這些微小、不成熟,但是可能會在哪裡對某些人有所幫助的知識。

因為撰寫「布丁布丁吃什麼?」的緣故,最近也是遇到許多預期之外的好事。更讓我深信,在這不起眼的blog中分享我的所學所得,這是有所價值的行為。

「布丁布丁吃什麼?」從2005年12月25日(居然是聖誕節)

也許哪一天我會無法繼續撰寫文章,也許哪一天我也會離開這個世界。不過至少,我在這個blog中留下了活著的痕跡。「布丁布丁吃什麼?」就是我想要改善這個世界的,小小貢獻。

(more...)

有意義的學習:概念圖介紹 / Meaning Learning: Introduce Concep Map

布丁布丁吃布丁

有意義的學習:概念圖介紹 / Meaning Learning: Introduce Concep Map

image

這是我在個別研究中的報告。為了從建構取向評估閱讀學習的成效,我打算使用概念圖作為評估的工具。這份投影片介紹概念圖的教學與評量的方法,並提出概念圖的延伸應用。

This is my report in "Individual Study". To evaluate the effect of reading from constructivist approach, I intend to use concept map as an evaluation tool. In this slide, I introduced how to use concept map to teach and evaluate, and I propose other application of concept map.


參考書目 / Bibliography

余民寧(1997)。有意義的學習 : 概念構圖之研究。臺北市:商鼎文化。

概念圖介紹 / Introduce Concept Map

        摘要 / Abstract

        影響學習的一個最重要因素即是學習者已經知道的事(what the learner already knows),只要確信「」是什麼,並且以此作為教學的依據即可。

        心理學家Asubel (1968)

        在概念圖的觀點裡面,學習的目的並不是讓學習者達成一個指定的目標,而是讓他們在自身已經有的知識架構上,添增更多學習的成果,讓自己的知識架構更趨完善。余老師將概念圖(即是書中所指的概念圖,或說是心智圖)稱之為有意義的學習。

        這份投影片介紹何謂概念圖,要如何進行教學,以及最後利用概念圖作為評量的方式。其中我覺得評量是最有趣的地方,很多人會利用概念圖來進行教學,但是也很多人都不知道概念圖也可以作為評量的工具。概念圖能夠將非結構化的學習成果以結構化的方式具體呈現,並基於教育理論基礎而規劃出一套計分原則,就能夠將學習成果以量化的方式進行統計。

        最後我基於在概念圖中學到的東西提出幾個發想,也許未來有朝一日可以繼續深入研究。

        心智圖的繪製教學 / Teaching Concept Map

        後來我在進行實驗室製作了一張概念圖的教學投影片。在此我把概念圖稱作現在比較流行的名詞「心智圖」。這份心智圖是以水的三態變化作為主題,不過這樣的教學我自己覺得仍有所不足就是了。


        結論:難以駕馭的概念圖 / Conclusion: Restive Concept Map

        在我看到實驗室的學妹把概念圖作為研究的評估工具時,我就對概念圖充滿興趣。我自己使用XMind畫心智圖來規劃很多事情,包括我的研究論文。因此我知道概念圖的確是強而有力的工具。它簡單上手,又能夠把思緒結構化地呈現,以檢視我們自己的思考是否完整。在教學研究上,概念圖又可以作為評量工具,讓我們用不同的角度來檢驗學習成效。因此,我對於概念圖抱持著相當的期待。

        image

        不過實際開始應用的時候,我發現這是一個難以駕馭的工具。首先,要畫出一張概念圖就不是一個簡單的事情。有結構的學習大家都會,照著1 2 3一步一步地做就好。但是要從無結構的資料中整理出有結構的概念圖,卻不是用一句兩句「畫個節點、連條線」就能夠達到的程度。

        在把概念圖作為評量工具之前,光是教導學生如何使用概念圖,就是一個需要去思考的議題了。簡單來說,概念圖的教學沒有書中寫得那麼簡單啦,你自己畫畫看就知道了。

        儘管如此,我仍認為這是一個值得期待的工具。因為,平常就用概念圖來規劃事物的我自己,就是一個證明概念圖成效的例子了。

        (more...)

        設計研究法介紹 / Introduce Design-based Research

        設計研究法介紹 / Introduce Design-based Research

        image

        這是我在個別研究中的課堂報告。繼上次我提出了建構取向的閱讀教學鷹架之後,這次想要試著以設計研究法(design-based research)的方式來規劃實驗,並且提出這次實驗在我整體研究中的定位。

        This is my report in "Individual Study". Continued the reading scaffolding of constructive teaching, I tried to use design-based research approach to plan a experiment, and presented the progress of my overall research.


        參考文獻 / Bibliography

        翁穎哲、譚克平(2008)。設計研究法簡介及其在教育研究的應用範例。科學教育,(307),15–30。

        設計研究法與研究規劃 / Design-based Research And My Research Planning

        這份投影片先介紹設計研究法跟我們實驗室常見的準實驗研究法的不同。我覺得設計研究法是站在比較大的角度來看待研究的整體歷程,而準實驗研究法則是小部分、但是較為確實的研究方法,兩者的關係是上下位的互補,而非衝突。

        image

        投影片後半部則是介紹我想要如何規畫這份研究,以及後面仍需要進行的工作。


        結論:被誇大的設計研究法 / Conclusion: Exaggerated Design-based Research

        自從CSCL & CSPL 2013聽完翁老師報告設計研究法之後,我的指導老師就開始熱衷於探究設計研究法。基於這股風潮,我也來看一下何謂設計研究法。看了幾篇以設計研究法之名進行的研究,總覺得設計研究法有點被誇大其詞。有些時候只是設計不良、要觀察什麼都不知道的單組實驗研究法,也被說是一種設計研究法。我自己是覺得有點微妙,可能是我對於設計研究法的認識仍不夠透徹。

        設計研究法基於理論建立產品,進行實驗蒐集資料以改善產品的這種研究週期,這是適用於長期、大型、多人的研究方式。也許對希望能夠在兩年之內就能畢業的研究生來說,沒有必要把自己的論文擴大到短時間難以掌控的份量。不過對我來說,用宏觀的角度來看待每一次的研究,的確是有其必要性的。

        (more...)

        閱讀最佳化路徑知識萃取:使用螞蟻演算法 / Extracting the Best Path Of Reading: Using Ant Algorithm

        布丁布丁吃布丁

        閱讀最佳化路徑知識萃取:使用螞蟻演算法 / Extracting the Best Path Of Reading: Using Ant Algorithm

        image

        這是個別研究課堂中的一份報告。我想要用螞蟻演算法來提出推薦閱讀順序的機制,所以我先介紹螞蟻演算法的作法,然後提出應用到閱讀標註學習上的作法。

        This is my report in "Individual Study". I want to develop a method based on ant algorithm to extract the recommend path of reading. In this report, I introduced ant algorithm and design a application of reading.


        參考書目 / Bibliography

        林振展(2008)。應用自然界螞蟻的經驗分享機制萃取個人化推薦知識之研究(未出版之碩士論文)。銘傳大學:銘傳大學資訊工程學系碩士班。

        投影片:閱讀最佳化路徑知識萃取 / Slide: Extracting the Best Path Of Reading

        摘要 / Abstract

        image

        這份投影片先介紹最經典的最佳化路徑問題:旅行銷售員問題(Traveling Salesperson Problem)。再將問題轉換為數位學習教材選擇的路徑,並介紹林振展同學是如何應用螞蟻演算法來求出推薦給學生的最佳教材閱讀順序。然後我再把問題對應到閱讀標註的學習情境中,試著提出以螞蟻演算法推薦文章閱讀順序的作法。這個作法在能夠分析大量閱讀資料的時候會變得相當有價值。

        image

        不過接著我也對此提出了反思:「找出最好的閱讀順序,是教師的責任嗎?」我認為如何安排閱讀文本的責任,應該是落在作者身上。而我們教學者提出閱讀順序的用意,其實是在刺激學習者,讓他們自行能夠找尋屬於自己的閱讀方式。

        簡單來說,我覺得閱讀沒有最佳的固定順序,但是卻有如何促使讀者自行找出最佳順序的方法。這就是從「唯一最佳解」的行為主義演化到「讀者自己的最佳解」的認知主義,也是我接下來要研讀的方向了。


        結論:學無止盡的理論 / Conclusion: Countless Theories

        做研究的時候,我們不只是觀察表面的行為,更重要的是要能夠看到人們背後的認知。要認識這些抽象的認知概念,那就必須要有理論為基礎。心理學用了許多方式解釋人類的認知,而教育理論則是進一步把人類的認知聚焦於學習的意圖。我試著想幫圖書館的館藏資源找到人們使用它的價值,那就是學習。

        然而一旦埋頭下去,就會覺得這是深不可測的領域。認知相關理論已經發展許多年,實證的實驗也從許多方向不斷地深入探討。比起「我這個題目是否已經被做過了」的擔心,我更不願意沒能夠把握認知理論的全貌就貿然進行研究的匆促態度。

        不過後來發生一些事情,讓我對這個想法有所改觀。那就等下次有機會再聊吧。

        (more...)