:::

輸出陣列元素所有不重複組合 print all unique combination of an array

輸出陣列元素所有不重複組合 print all unique combination of an array

(more...)

DSpace清理已刪除Bitstream的cleanup時出現java.lang.OutOfMemoryError: Java heap space的處理方法

布丁布丁吃布丁

DSpace清理已刪除Bitstream的cleanup時出現java.lang.OutOfMemoryError: Java heap space的處理方法

DSpace中刪除的Bitstream(檔案)只會在資料庫中標示為deleted = 1,並不會從檔案系統中移除。換句話說,檔案還留在伺服器上,佔據硬碟空間。如果要真正地刪除檔案,必須使用[dspace]/bin/cleanup指令,關於Bistream Store(檔案儲存)知識在DSpace的說明書中已經有提及,在此只是稍微回顧一下。

Bistream的清理主要是使用BitstreamStorageManager.cleanup(),他會從資料庫中取出所有被標示為deleted = 1的Bitstream,並一一地從檔案系統中刪除。但是deleted = 1的Bitstream數量太多時,就會出現「java.lang.OutOfMemoryError: Java heap space」錯誤。

簡單來說,這是由於記憶體不足,DSpace無法處理從資料庫取出來的超多資料的錯誤。處理的這個問題的方法有兩種,一種是加大Java可用的記憶體,另一種是變更資料庫查詢的方式。我認為加大Java可用記憶體的方法是治標不治本,因為總是會有挑戰記憶體上限的資料量出現。我建議的是修改查詢資料庫的方法,設定offset跟limit,一次查詢部分資料,然後分多次查詢進行。

因此我修改了BitstreamStorageManager.java,在此也順便提供給有遇到類似問題的人使用:

  1. 下載BitstreamStorageManager.java (注意,這是DSpace 1.5.1的版本,如果你使用不同版本的話,並不建議直接下載覆蓋,而是請參考下面的說明)
  2. 放至[dspace-src]/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageManager.java

這個檔案主要是修改了cleanup方法,方法如上述。詳細的程式碼如下:

    /**
     * Clean up the bitstream storage area. This method deletes any bitstreams
     * which are more than 1 hour old and marked deleted. The deletions cannot
     * be undone.
     * 
     * @param deleteDbRecords if true deletes the database records otherwise it
     *                only deletes the files and directories in the assetstore  
     * @exception IOException
     *                If a problem occurs while cleaning up
     * @exception SQLException
     *                If a problem occurs accessing the RDBMS
     */
    public static void cleanup(boolean deleteDbRecords) throws SQLException, IOException
    {
        Context context = null;
        BitstreamInfoDAO bitstreamInfoDAO = new BitstreamInfoDAO();
        int commit_counter = 0;

        try
        {
            context = new Context();        
            
            int queryBitstreamNumber = 10;
            int queryBitstreamIndex = 0;
            int queryBitstreamInterval = 10;
            
            while (queryBitstreamNumber > 0)
            {
                String myQuery = "select * from Bitstream where deleted = '1' offset " + queryBitstreamIndex + " limit " + queryBitstreamInterval;
                
                List storage = DatabaseManager.queryTable(context, "Bitstream", myQuery)
                        .toList();
                queryBitstreamNumber = storage.size();
                if (queryBitstreamNumber == 0)
                    break;

                for (Iterator iterator = storage.iterator(); iterator.hasNext();)
                {
                    TableRow row = (TableRow) iterator.next();
                    int bid = row.getIntColumn("bitstream_id");
                    
                    System.out.println("Ready to Bitsteam (" + bid + ")...");

                    GeneralFile file = getFile(row);

                    // Make sure entries which do not exist are removed
                    if (file == null || !file.exists())
                    {
                        log.debug("file is null");
                        if (deleteDbRecords)
                        {
                            log.debug("deleting record");
                            bitstreamInfoDAO.deleteBitstreamInfoWithHistory(bid);
                            DatabaseManager.delete(context, "Bitstream", bid);
                        }
                        System.out.println("File not exists, continue.");
                        continue;
                    }

                    // This is a small chance that this is a file which is
                    // being stored -- get it next time.
                    if (isRecent(file))
                    {
                        log.debug("file is recent");
                        System.out.println("File is recent.");
                        continue;
                    }

                    if (deleteDbRecords)
                    {
                        log.debug("deleting db record");
                        bitstreamInfoDAO.deleteBitstreamInfoWithHistory(bid);
                        DatabaseManager.delete(context, "Bitstream", bid);
                        System.out.println("Deleting db record.");
                    }

                    if (isRegisteredBitstream(row.getStringColumn("internal_id"))) {
                        System.out.println("do not delete registered bitstreams");
                        continue;            // do not delete registered bitstreams
                    }

                    boolean success = file.delete();

                    if (log.isDebugEnabled())
                    {
                        log.debug("Deleted bitstream " + bid + " (file "
                                + file.getAbsolutePath() + ") with result "
                                + success);
                        System.out.println("Deleted bitstream " + bid + " (file "
                                + file.getAbsolutePath() + ") with result "
                                + success);
                    }

                    // if the file was deleted then
                    // try deleting the parents
                    // Otherwise the cleanup script is set to 
                    // leave the db records then the file
                    // and directories have already been deleted
                    // if this is turned off then it still looks like the
                    // file exists
                    if( success )
                    {
                        deleteParents(file);
                    }
                    
                    // Make sure to commit our outstanding work every 100
                    // iterations. Otherwise you risk losing the entire transaction
                    // if we hit an exception, which isn't useful at all for large
                    // amounts of bitstreams.
                    commit_counter++;
                    if (commit_counter % 100 == 0)
                    {
                        context.commit();
                        System.out.println("commit");
                    }
                }
                
                queryBitstreamIndex = queryBitstreamIndex + queryBitstreamInterval;
                
                
            }    //while (queryBitstreamNumber > 0)

            context.complete();
        }
        // Aborting will leave the DB objects around, even if the
        // bitstreams are deleted. This is OK; deleting them next
        // time around will be a no-op.
        catch (SQLException sqle)
        {
            context.abort();
            throw sqle;
        }
        catch (IOException ioe)
        {
            context.abort();
            throw ioe;
        }
    }
      (more...)

      「布丁吃布丁?」文章的分類

      布丁布丁吃布丁

      「布丁吃布丁?」文章的分類

      從這一問開始,就來談談「布丁布丁吃?」裡面大概都是什麼樣的文章吧。文章在blog裡稱之為「post」,但內容不一定是供人直接閱讀的文字,有時候也是會有讓人當做應用程式一樣使用的JavaScript程式(像是序列分析工具),但在這裡我就用「文章」作為blog中每一篇內容的統稱吧。


      雜亂無章的初期

      一開始建立blog的時候,我對於要放些什麼在這邊並沒有太多概念。當時社交網站的種類並不多,blog算是少數「供人在網路上發聲」的平台之一。因此我就嘗試地把一些雜七雜八的東西放上來。

      稍微回顧了一下,我發現當時寫的文章可以大概地分成三類:

      1. 日記:記錄心情或是生活點滴的文章,一方面是為了整理、記錄當時的想法,另一方面是供未來的自己觀看。
      2. 創作:課堂的報告備考筆記考古題的答案(雖然大家比較在意的應該是考古題的題目)、面試準備或演講心得等,在各種活動時建立、撰寫的文件資料。主要的用意是供別人參考,但其實並不是這麼好閱讀。
      3. 備忘:轉載自其他網站的資料沒有答案的考古題圖片備份等等。這是為了給自己備忘用。

      這時候並沒有特定的目標讀者,這時期的文章還是相當私人,在公開的地方發佈私人用或是私人做完之後順手放出來的文章的確很奇怪。而且跟著別人有樣學樣的結果就是不少資料都是網路上重複的垃圾文章,甚至還有違反版權的疑慮。

      大學時期的備考筆記與考古題

      值得一提的是,在大學時期最受歡迎的文章是考古題。

      願意公開考古題題目的人不多,而我是很不怕死地在blog公開考古題的人之一。大學系所的考古題有個習慣,都是學長姊一脈相傳下來,我還記得當時學姊拿給我的考古題厚厚一疊,有些還是附有前人解答的影印答案卷。我覺得這樣子的知識傳承蠻不錯的,可是又很懶得印這麼多資料傳給後面的人,就乾脆將之數位化之後放在blog,這樣子只要跟來要考古題的學弟妹說「去看我的blog就好,網址是pulipuli.blogspot.com」就可以輕鬆打發!

      當然,這種舉動也會被人當做眼中釘。有些同學並不喜歡我公開考古題,他們覺得這是用功或是善於班級交際的人才能擁有的資源。搞到後來老師也知道我在網路上公開考古題,只是並沒有明確地阻止我這樣做而已。

      從一開始考古題只有題目的轉載,到接下來我逐漸地將考古題加入答案,或是在blog發表對某些考試的準備資料。然而,我並不是很會讀書的人,這些文章或多或少都有錯誤。有時候我在考前發佈了該考試的準備筆記,而之後繼續讀書時發現我有些認知錯誤,然後在考試時進行更正,似乎有些同學就因為這樣子被我誤導了。

      即使是到現在,似乎也是有些輔大圖資的學弟妹會上來使用當時發表的考古題。雖然這些並不是非常原創的文章,但是能幫上很多人這點,讓我感到非常欣慰。


      現在的分類

      隨著時間推移,原本會在blog的備忘資料卻隨著社交網站服務變多,大家在網路上發佈的訊息也越來越多樣化。加上受到電腦玩物等blog的影響,blog的文章會偏向介紹的方向,開始有了「模擬的讀者群」這樣的概念,而不是盡放一些只是供自己閱讀的文章。

      現在的分類大致上可以作為四種:

      1. 日記:一樣是記錄心情的日記,但是語氣用詞會有意識到「這是給別人看的、而不是給自己看的內容」,所以少了肆無忌憚地心情隨筆,多了更講究架構脈絡的記事風格。不過最近越來越少在blog寫心情日記,而轉移到較為私密的Plurk上來撰寫。比起老是一堆看不懂文章的blog來說,說不定追蹤我的Plurk還比較有趣?
      2. 記事:比起日記的心情記事,我也開始針對特定事情描述來龍去脈,像是詐騙事件論文進度報告。希望比起心情隨筆的日記來說,記事是更容易閱讀、更有參考價值的文章。
      3. 創作:自己做任何活動之後所產生的產物,這時期最多的就是每次meeting報告的投影片。然而這些內容也都是目標要給同學或老師看,所以至少也不會太個人。但是一些自己撰寫給自己用的JavaScript小程式還是沒有很多說明,有時候也多少讓人難以理解。
      4. 介紹:如果說創作的部份是在其他活動中產生的文章,「介紹」就是專以blog這個媒體來介紹的文章。我會預設讀者是對這方面有興趣、並具有一定程度的能力,撰寫的文章基本上都是圖文並茂,而且還幫程式碼加上顏色區別。

      我認為網路上到處轉載的垃圾資料已經夠多了,我希望能夠在這個blog的文章能多一點獨特性、減少無意義的重複。私人的備忘資料也改用其他工具來保存,像是EvernoteSkyDrive,因此逐漸減少在blog上發佈純粹是備忘相關的資料。

      電腦技巧與技術的介紹

      我在大學跟研究所時皆管理大量的電腦跟伺服器,也受到電腦玩物等blog的影響,我也開始寫些自己使用電腦跟管理伺服器的技巧,像是隨身碟防毒軟體的心得SPICEWORKS—IT管理工具簡易操作教學。而實際上「布丁布丁吃?」瀏覽率最高的都是這類型的文章。之前聽老師說有人統計出blog最受歡迎的文章類別是「電腦3C資訊」之類的,雖然從我的blog瀏覽統計裡也得到了映證。

      然而,電腦技巧的資料也是有熱門跟冷門的區別。娛樂性較高的電腦技巧文章很受歡迎,但是因為網路上介紹電腦技巧相關的文章實在是很多,有時候自己花了很多時間寫完了卻發現其實不少人已經寫過之後,就會覺得有點讓人喪氣。

      相較之下,「布丁布丁吃?」有許多很少人在介紹、而自己覺得像是挖到寶物來跟大家炫耀的電腦技術文章,像是DSpace系列。儘管對大部分的人來說看不太懂,但對有需要的人來說是非常地有用,也是讓我覺得這些都是「布丁布丁吃?」的核心價值所在。

      布丁的研究之路(是的,我正在繞遠路)

      不知道有多少人有發現到「布丁布丁吃?」的說明是「布丁的研究之路(是的,我正在繞遠路)」。

      在講講這說明跟內容的關係之前,我先介紹一下這個說明的由來。在我要考研究所時跟大學學長討論未來的方向,學長認為我不考資工資管而堅持要考圖資相關研究所的這種行為就像是在繞遠路一樣,我覺得學長說的很是,所以就把原本的「布丁的研究之路」加上了「是的,我正在繞遠路」的輔助說明。而在念研究所時,不知道是受到了「我正在繞遠路」的影響還是我真的打算繞遠路,我的確在做許多看似跟論文相關又好像不太相關的事情,結果就如學長所說的真的一直在繞遠路。

      一開始我並不知道「研究之路」到底是什麼,也許是念研究所相關的事物吧?於是「布丁布丁吃?」中有著許多我在念大學、研究所時所做過的大小事情記事,而這些就是「布丁的研究之路」上所經歷過的事情。可是唸書唸到現在,我對於「研究」的概念逐漸具體,也知道真正的研究結果通常是發表在學術期刊,而不是像我現在這樣在blog裡發表的一些自己以為覺得不錯的文章。

      儘管如此,我還是覺得在blog裡發表一些別人很少談、但是很重要的資料來說,是很有價值的事情。對我來說,這可能真的就是屬於自己的「布丁的研究之路」了。


      小結

      反思了一下自己往年的文章分類之後,才發現右邊那些「標籤」分類其實有很多不是很正確。不過這篇文章從開始寫到現在也不過三天,而且實際上主要在寫的只有一天不到,如果花更多時間在回顧文章上,也許對內容分類會有更深入的看法。

      另一方面來說,其實我也不是很在意分類究竟如何啦。就如我第一問所說的,「布丁布丁吃?」的用法並不是從分類架構來找到你需要的資料,請使用網路搜尋引擎用你的關鍵字來找資料即可。儘管我自己是圖資領域的,但對於blog這種沒有特定主題的資料集合來說,勉強給予個分類架構倒也是很奇怪。就看要什麼角度來看、進行怎樣的分析就是了吧。不過我這人沒沒無聞又無聊,我想應該也不會有人在意才是。

      下一問:

      「布丁布丁吃?」與讀者的互動:布丁與讀者互動的管道為何?回應讀者留言的過程與感想為何?與讀者在blog之外的互動經驗為何?甚至是實體互動?

      (more...)

      45巷殺人魔王燒臘店

      布丁布丁吃布丁

      45巷殺人魔王燒臘店

      IMAG0114

      • 店名:沒有名字(這家店真的不叫做殺人魔王,只是很多人都這樣叫他,所以以下都用「殺人魔王」來稱呼這家店)
      • 位置:指南路二段45巷內
        image
      • 菜單:燒臘飯、麵
      • 價位:60NTD~80NTD
      • 座位:普通容易坐到座位

      殺人魔王

      IMAG0114

      這家店在政大已經很久了,甚至有新聞報導。這家店被人戲稱為殺人魔王的原因是因為剁燒臘老闆看起來就很像殺人魔王,但我覺得其實還好,一般燒臘店的廚師也都是帶著那樣的氣勢來剁燒臘的啦。

      一開始到這家店的人一定會覺得很奇怪,究竟門在哪裡?事實上殺人魔王不僅沒有招牌,連門把都沒有!而其中一扇就是就是可以從旁推開的門,必須要將沒有門把的門直接推開才能進入。光是從開門的動作就可以判斷是否是殺人魔王的常客了。

      殺人魔王燒臘店的環境就如燒臘店一樣地油膩、黏稠,不管做哪邊都覺得髒髒黏黏的,這只能說是燒臘店處理食物時無法擺脫的困擾,而殺人魔王也不例外。儘管店內位置不少,也有提供電視,但是並不適合久坐。

      IMAG0116

      殺人魔王燒臘店的菜單也是很有燒臘店的風格:以幾種固定的燒臘肉類來排列組合成為餐點。請仔細一看,大致上都是叉燒、烤鴨、油雞、排骨、豬排等組合。再搭配飯、飯、炒飯、燴飯、蓋飯,就成了各式各樣的餐點。但是其實吃起來味道都差不多啦,非常地重鹹。

      殺人魔王不僅價位是學生等級的便宜(附近知名的陽城燒臘都是80元起跳),而份量也是學生等級多。店內提供自取的綠豆湯,可以解解燒臘的油膩。天氣熱時是冰的綠豆湯,天氣冷時則是熱的綠豆湯,綠豆湯還真是萬用。


      芙蓉蛋蓋飯(60NTD)

      IMAG0115

      殺人魔王的特色餐點之一是這道芙蓉蛋蓋飯60元,蓋滿了整盤飯的是蛋、切碎叉燒、豬排等肉類,淋上燒臘醬汁,下面則是超多的白飯。雖然說不上美味,但是光看覺得很華麗,而且飽足感十足。


      結語

      殺人魔王最大的問題是餐點都很鹹、非常重口味。雖然有綠豆湯可以配,但是綠豆容易卡在牙縫裡,喝完也不覺得特別舒爽。因此我也較少光顧殺人魔王就是。比起美味來說,這家店從店名、門口等故事應該是更令人覺得有趣的地方吧。

      (more...)

      政大越南小吃

      布丁布丁吃布丁

      政大越南小吃

      IMAG0094


      越南小吃

      IMAG0094

      越南小吃雖然並不是直接貼著萬壽路,但至少比起在小巷子的店面來說醒目許多。越南小吃的店面非常狹小,座位很少,可是來客卻很多,導致常常一位難求。雖然是這樣說,但因為店內廚房與座位並沒有區隔、而且排煙沒有處理好,油炸餐點時會讓店內四處都是油煙,坐起來並不是很舒服。此外衛生也不太乾淨,也是小巷子的程度。不過店內卻提供了一台超大的電視,讓不論是內用還是外帶的客人都能看看新聞、緩解等待的無聊。

      IMAG0095

      越南小吃的餐點大致上是一般小吃店都會出現的東西,像是排骨飯、榨菜肉絲麵等等,等級也都是小吃店的程度。雖然作為招牌的赤肉羹跟魯肉飯並不難吃,但也沒說到令人驚艷的地步。要說特色的話,反而是偶爾店內自取飲料會提供檸檬汁,酸酸甜甜非常開胃,而且在夏天喝到的時候可說是爽到不行。只是大部分時候都是提供超甜的紅茶,對於不太喜歡過甜飲料的我來說就完全不行了。


      越南春捲米線(70NTD)

      IMAG0096

      越南小吃店中被我當做心中招牌的是這道越南春捲米線,75元。春捲米線是以涼麵的形式做成,有細嫩的米線、大量生菜、酸甜醬汁以及滿滿的越南春捲。

      IMAG0097

      上圖是米線的近照。跟一般用來作為涼麵的油麵不同,米線更Q、更容易咬斷,而且容易吸收他特製的酸甜醬汁,讓米線也很有味道。

      IMAG0099

      越南春捲與我國的春捲有些許不同。他的內餡非常飽滿、薄薄的外皮則是炸得酥脆,有著從外表看不出來的美味。

      越南春捲米線的醬汁也十分開胃,雖然他的份量並不算少,但是吃完整碗麵之後還會覺得想吃點什麼的感覺,而嘴巴內那酸酸甜甜的味道也讓人回味無窮。如果剛好那天的飲料是提供檸檬汁,那糟了,你可能要考慮一下吃完餐之後還要買什麼東西來解饞。


      結語

      雖然很少聽人在說,但我必須要在這邊強調一下,越南小吃的老闆娘真的很漂亮

      當然,審美觀人人不同,但是在這種與廚房、油煙為伍的環境中,大部分的廚師光是跟「熱」對抗就足以讓他蓬頭垢面。但是越南小吃中,總是能看到老闆娘化妝化得漂漂亮亮地做菜,而且老闆娘本人也長得秀麗,讓這擁擠的小店裡多了一個可看的景點(?)。

      (more...)

      政大小巷飽飽食府

      布丁布丁吃布丁

      政大小巷飽飽食府

      IMAG0103

      • 店名:飽飽食府
      • 位置:政大正門小巷子內
        image
      • 菜單:麵類
      • 價位:65NTD~95NTD
      • 座位:就算不是高峰期也不容易找到座位
      • 環保:店家提供筷子跟湯匙


      飽飽食府

      IMAG0104

      飽飽食府是將煮麵廚房設在外面,而客人做在裡面。跟港味食堂一樣,小小的店面中盡量塞可能地塞滿座位,坐起來非常擁擠,說不上舒適。說環境衛生,感覺上比港味食堂乾淨,但其實也就小巷內餐廳的等級吧。

      IMAG0105  IMAG0149

      飽飽食府主要是以麵食為主,各式麵類與水餃類,自行取用的麥茶飲料讓人吃麵之後降溫。跟大多數麵食館一樣都有另外販售小菜,像是皮蛋豆腐、切豆干海帶等等。麵類的份量非常地多,而且還可以免費加大(點餐時記得註明),份量非常適合學生享用。

      飽飽食府的招牌餐點我想應該是「牛肉麵」,稍後我再介紹。特色餐點則是「雞絲涼麵」65元,黃色的麵條、白色的雞絲、金黃的炒蛋、深綠小黃瓜、鮮紅小番茄、還有蘋果等多種菜色,再臨上褐色的芝麻醬,讓雞絲涼麵華麗到令人印象深刻。另外一個特色餐點則是「炒碼麵」65元,這是湯麵且稍辣,因為有海鮮所以我不能吃就是。此外,雖然蛋花麵並不算少見,但是飽飽食府的蛋花卻是異常地多,吃起來有種令人意外的爽快感。

      IMAG0150

      另外值得一題的是水餃的醬料。除了基本的醬油之外,飽飽食府還提供兩種特調醬料。左邊是芝麻為主的醬料,不會很鹹,而芝麻與麻油的味道很香;中間是混了蔥與些許辣椒的重口味醬料,非常地開胃。右邊則是搭配牛肉麵的酸菜,沒什麼特別。如果你到飽飽食府點了水餃類想要搭配醬料來吃的話,請務必嚐嚐看這兩種醬料!


      牛肉麵(95NTD)

      IMAG0106

      作為麵食店的招牌菜,價位最高的牛肉麵95元可說是當之無愧。大塊的牛肉、有嚼勁的麵條以及濃郁的湯頭,再加上清涼的麥茶,餐點本身就具有配得上價位的水準。

      飽飽食府的牛肉麵並不是大部分牛肉麵店的純中藥紅燒風格,而是加入更多胡蘿蔔及其他配料的熬煮,整個湯頭與其說鹹不如說偏甜。對於不喜歡一般牛肉麵店那些超鹹湯頭的我來說,飽飽食府牛肉麵的味道非常合我胃口。

      牛肉乾拌麵(95NTD)

      IMAG0109

      牛肉麵無湯版,湯頭換成醬汁淋上。實際上我並沒有吃過,這是朋友點的,聽說也不錯吃(雖然該朋友非常不挑食就是)。畢竟對我來說,95元已經算是高價位的食物,只有慶祝時才會點來吃,不然一個月吃不到一兩次吧。

      榨菜肉絲湯麵(65NTD)

      IMAG0107

      除了牛肉麵特別貴之外,大部分的餐點都是在65元~75元之間,像是這到65元的榨菜肉絲湯麵就是其中之一。榨菜肉絲麵的味道並沒有特別出眾,但也有水準以上。重點是榨菜肉絲的份量非常多,加麵之後更是過癮。上圖似乎是尚未加麵的份量。

      炸醬麵(65NTD)

      IMAG0148

      另外我喜歡吃的是這到炸醬麵,屬於乾麵類型。香淳濃郁的炸醬與香Q的麵條,再搭配翠綠的小黃瓜,非常容易入口。只是要注意的是,雖然看起來炸醬麵似乎跟涼麵很像,但是炸醬卻意外地燙,吃起來要小心不要燙到了。


      結語

      雖然是在小巷子內,但飽飽食府卻常常塞滿了客人。不論是像我一樣獨自來吃的、還是學生一群人、或是一家大小跑過來吃的客人都有。儘管位於不起眼的小巷子內,但是卻異常地受到歡迎,有次晚上七點之後去吃甚至已經販售完畢而打烊,實在很誇張。

      店內總是放著同一片西洋交響樂CD,跟濃厚東北麵食的風格一點也不搭。算是飽飽食府一個奇怪的地方。

      此外,原本飽飽食府對面左手邊有一家同樣名為「飽飽食府」專賣飯類餐點的店,雖然生意應該不差,但是2010年就收掉不做了。我到現在還是不知道這兩家「飽飽食府」的關係究竟為何,飽飽食府的奶奶究竟是誰呢?

      (more...)

      安九食堂極鮮麵店與Lai Lai果汁店

      布丁布丁吃布丁

      安九食堂極鮮麵店與Lai Lai果汁店

      IMAG0145

      • 店名:極鮮
      • 位置:政大後山自強宿舍樓下安九食堂
        image
      • 菜單:麵類為主,飯類為副,附飲料(烏梅汁、百香果汁)
      • 價位:35NTD~60NTD
      • 座位:非常容易找到座位
      • 環保:店家提供少量筷子跟湯匙
      • 服務:要自行取餐與回收餐具

      安九食堂

      IMAG0241

      政大男生宿舍自強九舍(近年來部分住進女生)底下的安九食堂擁有超多座位、比山下門前餐廳都還要便宜的價位,還有電視可以看等優勢,然而卻一向評價不佳且沒知名度,主要原因歸咎於交通問題上:因為位於山上的九舍實在是太難走了,加上現在國際大樓空中樓梯禁止通行,學生必須繞路從蔣公銅像爬樓梯上山,更是讓人不想來光顧。具體來說,從政大正門用走路的方式移動到九舍,慢慢走也要三十分鐘。建議的移動方式是搭校內1元公車抵達。

      儘管安九食堂在政大學生中知名度不高,但對於住在山上自強宿舍的同學們來說,可是非常重要的食物據點。交通問題對於住宿生來說,剛好反過來成為優點:用餐距離近(相較於走到山下)、而且幾乎不會沒有位置坐。這使得安九食堂的學生大部分都是住宿生,以及近年來在外面施工的工作者。

      極鮮

      IMAG0244

      極鮮麵店位於安九食堂的角落,小小的櫃檯後面就是處理食物的廚房。營業時間通常會從中午到半夜一點,是宵夜的選擇之一。極鮮麵店的掌廚分成白天的大叔與晚上的阿姨,各自領有一位副手(如照片中的小妹)。聽我學弟說大叔與阿姨他們似乎是兄妹。白天大叔做的飯類非常豐富,而晚上阿姨則是可以選擇較多麵類,這是菜單上看不太出來的隱藏規則。

       IMAG0243 

      IMAG0245 

      儘管極鮮麵店的牆壁上貼有少數菜單的看板,但其實他的菜單是一直在微妙地成長中。櫃檯上會貼著幾張菜單,此外還有隨機的幾張護貝菜單,這會隨著極鮮老闆帶著食材的不同,而能提供的菜單種類也有所不同。舉例來說,白天大叔會帶著牛腩、豬肉、雞肉等食材,所以可以提供較多飯類的餐點;晚上阿姨會帶著炸菜肉絲,所以可以點炸菜肉絲麵類。此外,老闆們的創意也讓菜單中的排列組合越來越多,最近食材中加入了泡菜,更是讓菜單多出了許多泡菜系列。

      IMAG0131

      大部分的麵類都是不分早晚都可以點得到,像是上圖的印度泡麵料理系列。特色是不貴、處理快速,而且泡麵好下口、味道還挺不錯的,缺點是容易餓啦。飯類的話則是雞肉飯等少數幾種共通可點,主要還是麵類居多。

      最重要的是,極鮮的菜單都不貴,可以當正餐的餐點大概是35元到60元之間,跟山下相比完全就是住宿生等級的便宜。加上距離近,我還蠻常來光顧極鮮麵店的。


      飯類

      茄汁牛腩飯(60NTD)

      IMAG0130

      白天大叔帶來的食材中,最特別的就是茄汁牛腩系列。除了飯之外還有麵、水餃等搭配。此外,茄汁牛腩在政大附近屬於不太常見的菜單,而在安九食堂中就可以吃到,也算是難得。茄汁牛腩飯的牛肉是一塊一塊的牛腩,茄汁味道尚可。副菜通常由現煮蔬菜、三種配菜、蛋料理所組成,儘管味道都不是很令人印象深刻,但是豐富且多彩的副菜讓整盤飯華麗到一種境界。上圖的茄汁牛腩飯的副菜是甜不辣、炒蛋、花椰菜、空心菜、香腸、豆干。此外,飯的份量其實並不少,因為整體來說味道並不重,所以也不會想吃太多飯。需要的話可以在點餐時請老闆多加點飯。

      羊肉飯(50NTD)

      IMAG0155

      飯類的主餐包括雞、牛、羊、豬四種,特殊的是豬排、茄汁牛腩。除了飯類之外還可以點成「燴飯類」,餐點會少一樣副菜而改淋上醬汁。上圖這一盤是握個人常點的羊肉飯50元。比起雞、牛、豬來說,羊肉的味道比較鹹、容易下飯;當然是比不上茄汁牛腩,但是價格更是便宜,所以成了我最喜歡的餐點之一。附帶一提,羊肉仍有羊腥味,不愛此道的人並不推薦。

      湯麵類

      泡菜牛肉乾拌麵(50NTD)

      IMAG0242 

      極鮮的菜單中,60元的餐點可以用手指數得出來,大部分都是50元的麵類跟飯類。如果點麵類,老闆會問你要搭配什麼麵,選項有白麵、油麵、拉麵、冬粉、泡麵等非常多種,其中印度泡麵則是在麵店中比較少看到的選項。

      IMAG0154

      上圖的泡菜牛肉麵50元是近年加入泡菜食材之後產生的料理,這邊所指的牛肉麵並非一般常見的紅燒牛肉麵,而只是單純的牛肉片、白麵以及其他副菜的搭配。泡菜牛肉乾拌麵是由主菜牛肉片、泡菜、芙蓉蛋、現煮蔬菜與白麵搭配而成。在極鮮各種排列組合的菜單中,這是我覺得非常好吃的組合之一。與其說主角是牛肉,不如說是那個泡菜真的是又香又辣到夠勁。而因為整碗麵都很好下口,三兩下就會一口氣吃完整碗麵,到之後嘴巴裡都還會回味那泡菜的味道。而且老闆給的泡菜量通常不少,喜歡吃辣的朋友們推薦來吃吃看。

      必須要提醒的是,這泡菜乾的絕對比湯的還要好吃得多,記得是點「乾」拌麵而不是「湯」麵,不然整碗泡菜煮成的麵只會讓人吃到想哭。

      2號印度風味乾麵 (40NTD)

      IMAG0132

      極鮮麵類菜單中熱門排行榜,我雖然沒有統計過,但是這個「2號」應該是當之無愧,不論是中午、晚上還是宵夜,點2號來吃的客人還真的是絡繹不絕。2號印度風味乾麵40元,其實就是現煮泡麵(還加上泡麵調味包)、現煮蔬菜、一配菜的搭配,配菜預設是滷蛋,可以換成貢丸、餛飩等等。

      IMAG0133

      泡麵的份量通常是2包,因此吃起來可是非常大碗,再加上印度泡麵調味包味道挺鹹的,就算整碗麵吃完還是會鹹到不行喔。上圖是將2號稍微翻一下、讓位於底下的醬料均勻地散佈整碗麵的結果。吃之前請記得先翻一下,這樣味道會更棒喔。

      貢丸湯(20NTD)

      IMAG0127

      每當半夜從山下爬上來、又冷肚子又餓的時候,我總是喜歡點碗貢丸湯20元來吃。在小碗的湯中,除了兩顆貢丸之外還有許多現煮蔬菜,吃起來非常滿足。而且貢丸的種類是我較為喜歡的那種、吃起來有嚼勁、味道又香。湯的搭配稍微鹹,但還算順口,不像有些麵店的單點湯喝起來真的是食之無味。


      Lai Lai果汁店

      IMAG0152

      吃完正餐覺得很渴嗎?除了安九福利社之外,安九食堂另一個飲料點就是Lai Lai果汁店。說是果汁店,自然是以現搾的水果為主。從普通的西瓜、木瓜、香蕉、芭樂,到較少見的水蜜桃、酪梨等果汁都有,有時候還有神祕的特調飲料。

      IMAG0153

      跟極鮮一樣,牆壁上的看板只是裝飾品,主要是要看店門口的彩色菜單。這個菜單常常在更換,上面標示著現在提供的熱門果汁。特價的西瓜牛奶、香蕉牛奶可以便宜到25元,但也有酪梨綜合、特調果汁等50元的高價品,不過我通常只喝前者就是。

      雖然說是高價,但比起像是五十嵐等連鎖飲料店來說,Lai Lai果汁店已經是相對之下便宜的飲料店了。而且都些都是700cc的價位喔。最後必須要提醒的是,其實大部分水果都已經有甜度,但Lai Lai果汁店都會加糖導致我個人喝不習慣。如有需要的話,請記得跟他們說無糖喔。


      結語

      吃完極鮮50元羊肉飯,加上Lai Lai果汁店25元香蕉牛奶,之後大概就飽到不用作事了。安九食堂在下雨甚至颱風天時特別受到住宿生愛戴,但是外面知名度不高的這點我還只能深表遺憾。

      最後就是極鮮的阿姨非常喜歡跟人打交道,常常去吃的話阿姨都會記住你、跟你聊聊天,也是相當有人情味的小店呢。

      (more...)

      政大小巷內的港味食堂

      布丁布丁吃布丁

      政大小巷內的港味食堂

      IMAG0091 

      • 店名:港味食堂
      • 位置:政大正門前小巷子內
        image
      • 菜單:一主菜三副菜、附養樂多;港式點心
      • 價位:便當60NTD、點心35NTD
      • 座位:大概16個,不多且擁擠
      • 服務:要自行取餐與回收餐具

      港味食堂簡介

      IMAG0089 模糊

      政大正門附近的小巷子內有許多好吃的平價餐廳,在政大念書或工作的人對這邊應該不陌生。

       IMAG0091

      港味食堂位於巷子的中後段,招牌雖然很醒目,但從店面走過去的時候其實並不是很明顯。

      港味食堂在狹小的店面中盡可能地提供了座位,令客人感覺擁擠。而餐具回收區擺在入口,導致進門的客人馬上會聞到一種味道。此外,開業至今似乎衛生環境並沒有花很多心力去打掃,地板、角落等一些部分容易出現髒污。而這彷彿是小巷子餐廳的習慣一樣,差不多都就是這種等級的衛生程度吧。

      IMAG0093

      港味食堂的菜單分成兩類:便當類與點心類。

      便當類一律60元,一主菜三副菜,主菜好吃、副菜更是超越便當店等級的美味。只是副菜有時候放久會冷掉,吃便當並不會讓身體暖和就是。值得一提的是,便當飯量往往多到就算是男生也可能吃不完的等級,不想挑戰極限的話記得跟阿姨說飯少一點喔。

      點心一律35元,任選兩種55元、三種75元。港式點心大多為鹹的點心,像是蘿蔔糕、炒麵、炒河粉、叉燒包等。雖然炒麵跟炒河粉的名字看起來像是正餐等級,但份量卻只有一個蛋糕盤的點心程度,而且很鹹。因為便當類就足夠讓人飽到不想吃其他東西,所以我很少點點心來吃。


      便當(60NTD)

      IMAG0092

      港味食堂的便當類中的主餐許多都是「肉類」+「醬料」的組合,上圖是黑胡椒牛肉飯60元,副菜是炒蛋、杏鮑菇肉丸、高麗菜。黑胡椒偏濃、味道非常下飯,而牛肉片量也非常大,其實飯量在便當店當中已經算是很驚人了,但能蓋住這些飯量的牛肉片更是誇張,完全不輸給吉野家的牛丼飯等級。

      IMAG0125

      咖哩豬排飯60元,副菜是空心菜、牛蒡、油豆腐蘿蔔肉丸。跟黑胡椒醬一樣,咖哩醬也是非常地濃郁,味道偏鹹好下飯。而豬排是不裹粉下去煎,清爽好入口。相對於上面的牛肉飯來說肉量算是較少的,但這種煎豬排在附近店家中較少見,偶爾我還是會點來吃吃。

      IMAG0113

      這是梅子五花肉60元,我個人認為這是港味食堂裡面最好吃的便當類!五花很容易咀嚼入口,搭配梅子酸甜的味道更是容易下飯。肚子超餓的時候我非常喜歡點梅子五花肉來吃,加上不阻止阿姨加飯的結果,就會出現超大飯量與超下飯菜色的便當,然後就可以飽到半夜也不想吃宵夜的程度。附帶一提,這次的副餐是甜不辣、蔥花蛋、碗豆金針菇肉丸。

      超越便當店等級的副菜

      從上面三個便當可以看到,港味食堂的便當中的三樣副菜份量也是不少,重要的是大多都很好吃。港味食堂的廚師老闆常常喜歡把各種小副菜混成一種副菜,有時候會看到副菜看板上列出超長菜名的話,你可以嘗鮮去點點看,會讓你的便當感覺意外地豐富。

      副菜中我最喜歡的是肉丸系列,包括洋芋(馬鈴薯)肉丸、芋頭肉丸、杏鮑菇肉丸以及大雜匯包含肉丸等。這邊的肉丸類似小型獅子頭,都是豬肉的碎肉組成的小丸子。份量大概是兩口一個,並不大。說美味其實也還好,只是剛好我個人很喜歡,所以每次副餐幾乎都會點個肉丸來吃。

      副菜也有不少頗健康的菜色,像是牛蒡、秋葵,而各種鮮綠的蔬菜也是讓客人自由搭配。看是要吃得健康還是吃得下飯,就讓你自行選擇。


      結語:木柵地區無人可敵的便當店

      如果不論店內衛生的話,港味食堂不論是在價格、菜色美味、份量上都是數一數二的高水準美食。然而因為在小巷子內、而且不少人看到店面就不太想進來吃,導致其實不多人知道港味食堂這家店。

      我個人是非常常去港味食堂吃飯,還曾經在寒假時港味食堂停業一週多,讓我一度不知道午晚餐該吃些什麼的恐慌。只是因為港味食堂的份量實在太多,而且還會因為太好吃而吃太多份量,現在晚餐都盡量不去港味食堂吃,以免太飽而無法專心做事。

      港味食堂的老闆跟老闆娘是香港人,非常好客,而老闆娘常常負責櫃檯打飯打菜,我都直接叫她阿姨。常常去港味食堂的話,可以多跟阿姨打聲招呼、聊聊天,會讓人覺得小小的店面裡面有著濃濃的人情味。

      (more...)

      玉口香扁食園政大店

      布丁布丁吃布丁

      玉口香扁食園政大店

      • 店名:玉口香扁食園政大店
      • 位置:政大女生宿舍側門正對面
        image
      • 菜單:扁食、一主菜三副菜的飯類
      • 價位:45~85 NTD
      • 座位:舒適,高峰時期偶爾還等得到座位
      • 環保:提供非免洗的筷子與湯匙

      玉口香扁食園簡介

      IMAG0082

      玉口香扁食園是很常見的連鎖店,相信不少人應該都在各地看過扁食園的招牌。就我所知,在木柵內就有3家扁食園,而現在介紹的則是位於政大側門對面的政大店,以夏都將此店簡稱為扁食園。

      扁食園距離政大側門很近,而且是女生宿舍最近的外面店家之一,所以高峰期還不太容易找到座位。扁食園的店內環境乾淨舒適,座位大、桌椅穩固,坐起來是挺舒服的。店內提供付費購買的飲料,只是種類不多,幾乎都沒有我喜歡喝的飲料,所以就沒有特別去記。雖然我沒比較過價錢,但也不會貴得太誇張的樣子。

      IMAG0083

      菜單大致上可分成兩大類:扁食與其他飯麵類。

      既然叫做扁食園,自然扁食是其重點。扁食就是餛飩,只是扁食園的餛飩非常大顆,份量大到可以當主食吃,接近於水餃的感覺。而且根據我吃過多家扁食餐點的經驗來說,玉口香扁食園政大店的扁食我個人覺得比起其他店來說更為飽滿、美味

      扁食有四種:鮮蝦、鮮肉、蔬菜以及綜合。因為我不喜歡吃海鮮,所以我最常吃的是鮮肉類,扁食內包的是豬肉。而蔬菜扁食類不知道為什麼味道非常地嗆,而麵與湯也不太清淡,結果就是味道很重,個人並不推薦。

      飯類整體來說普通,燒烤雞腿飯還算不錯吃。但除了部分可當正餐吃之外,大部分都是配餐等級的餐點。雖然不差但都只能說是普通。而且因為大部分餐點味道重、吃完都會口渴,也就是暗地裡鼓勵客人購買飲料的意思吧。


      鮮肉扁食湯麵(65NTD)與紅油炒手麵(75NTD)

      IMAG0084

      鮮肉扁食湯麵65元,有八顆扁食、蔬菜與湯。麵是細的黃麵,量不多,可另外付10元加麵。湯的味道算是清淡,但直接喝完還是有點鹹。

      IMAG0085

      鮮肉紅油炒手麵 75元,一樣有八顆扁食(數量有點忘了)、乾麵、紅油海苔與醬料等調味。跟湯麵一樣,麵的份量就像是配餐一樣地不多,主角依然是扁食。紅油炒手可以選擇辣的程度:大辣、中辣、小辣及不辣。我個人不吃辣所以並不確定辣的等級在眾人心中的程度為何,但是紅油醬料搭配非常地提味、好吃!

      IMAG0086

      重點的扁食,不算厚的麵皮、豐滿的內餡,這大概是我要吃三口才吃得完的份量。可惜拍照時焦距怎樣都對不準,大概是手機的極限了吧。


      結語

      剛開始營業時,扁食園還有買十送一的活動,而這活動結束之後我也較少去吃了。畢竟扁食份量較少、味道也重鹹,而我常吃的這兩種餐點也算是中價位,所以都是心血來潮才會去吃。

      (more...)