2018年7月15日 星期日

[自助日本行 3/5] 20180408 上野 - 小山 - 足利 - 小山 - 秋葉原 - 上野

日期: 20180408 (2/4)
路線: 上野 - 小山 - 足利 - 小山 - 秋葉原 - 上野
本文提到的時間均為日本時間, 價錢為日幣

[小山 駅 (えき, e ki)]

今天的行程是另一位找的, 因為我找的地點「那須鹽原」好像沒有好玩景點, 她就找了「小山」這個地方, 也是這次 5 天行之中, 讓我最喜愛的景點, 真的謝謝她。

小山是栃木縣南部的一市, 搭新幹線就是要去遠一點的地方, 對新幹線已經不那麼陌生了, 今天放輕鬆, 休息夠了再出發, 前 2 天真的把我們累壞了。

採取睡到自然醒再出發 (後來也都是睡到自然醒) 的策略, 這是自助旅行的優點, 可以隨意的調整時間。

早餐自然是昨天在輕井澤買的鮮奶, 再搭配便利商店買的飯糰之後, 就成為一份簡單的早餐輕食, 節省旅費的好方法, 這瓶鮮奶 2 人可以吃 3 天。飯店有提供濾泡式咖啡包, 把鮮奶加上非常的適合。

前 2 天太累了, 今天就晚點出發, 自由行沒有時間壓力, 想什麼時候出門就出門, 先來慢慢品嘗這頓早餐。

用完餐後 10:45 到 jr 上野車站劃位, 11:14 發車, 以旅行出發的時間來說, 還真的有點晚, 離發車還有點時間, 先來去買便當, 在新幹線上享用, 節省時間。繞了幾家店之後, 各自選定要吃的便當, 我選了個唐氏炸雞, 吃起來還不錯, 不過我討厭冷的便當, 日本的便當沒有熱的嗎?

另外一位選了不知道是什麼東西的便當, 真是有品味。大約 40 分鐘之後就會抵達小山, 所以用完餐不久, 很快就到站了。我們一直不知道垃圾要丟在哪裡, 學台灣放在椅子後的袋子, 以為會有人來收, 結果後來才看到車門附近有垃圾桶, 應該要丟在哪裡才對, 真是太不好意思了。

還沒 12:00 點就到小山了, 再來要搭「兩毛線」去「足利花卉公園」- あしかがフラウーパーク (a shi ka ga fu ra u pa ku), 這是一條比較少人搭的鐵路, 所以班次比較不那麼密集, 13:02 才開車。




還有一個小時, 該怎麼消磨時間呢? 這裡叫做「小山」, 看起來是個很不威的名字, 但其實這裡是大站, 可能和台北車站有拼吧! 光是車站內的店家, 就沒有時間全部逛完, 我選定了一間書店晃晃。



哎呀! 終於讓我找到了, 我買了 JR 時刻表, 被一旁的某人取笑, 買電話簿幹嘛!

除了電話簿 ... 阿! 不是 JR 時刻表, 還買了 2 本關於鐵路和新幹線的雜誌, 介紹 JR 的車廂, 我想知道我們搭乘的新幹線是什麼樣的車型, 台鐵就那幾種, 很容易理解, 日本的車型很多很豐富, 鐵道迷一定很喜歡討論這些車型。



本來以為只有我這樣的人才會買時刻表, 後來才知道有許多自助旅行日本的人, 也是推薦買時刻表。

另外還有 JTB時刻表, 我不懂其分別, 先買了 JR 的版本。

ref:
JR時刻表和JTB時刻表?

還在意猶未盡之時, 上車時間快到了, 趕緊去搭「兩毛線」吧!



兩毛線一樣是 JR 系統, 也在廣域周遊券的使用範圍, 亮出廣域周遊券就可以進入月台。兩毛線的火車是非常簡單的車廂, 需要自己按下開門/關門按鈕來進入車廂, 其實還蠻有趣的, 這些都是台灣沒有的體驗, 已經有不少人在車廂裡頭, 但也沒多到佔滿車廂, 我們也還有位子可以坐。

沿途的風景帶來了熟悉的感覺, 類似台灣鄉下的農田, 我看著這些田野飛過, 彷彿來到宜蘭的感覺。偶而遇見幾顆櫻花樹, 看見廣闊的櫻花海, 原來是這樣, 難怪吸引那麼多人來看, 我對櫻花無感, 路邊這種就可以滿足我了。

[足利花卉公園 (あしかがフラウーパーク)]

足利花卉公園可以搭到新的「足利花卉公園站」, 在還沒有「足利花卉公園站」是搭到「富田」站, 這是 201804 才建好了, 我們運氣好, 已經可以搭到這一站, 在這站下車, 可以不用走那麼遠的路。



我其實不太想來這種看花的公園, 對花沒有什麼興趣, 但另外一位興致高昂, 可惜目前不是花卉盛開時期, 所以人潮並不多, 裡頭的花朵就沒那麼豐富了。

足利花卉公園需要購票, 有折價券可以打折, 某人在買完票的當天晚上, 才發現她一直拿著折價券, 原來就在小山車站拿的旅行資訊 DM 上, 真是令人不習慣的發送方式, 大家在車站時, 也可以找找看這些旅行用的 DM, 她為此懊惱許久, 錢是我付的, 我都還沒那麼懊惱。



終於遇到櫻花了, 雖然沒有大片的櫻花樹, 只有區區的 2 棵, 但也足夠讓我們歡天喜地, 原來櫻花看起來就是這樣阿!

我稍微瞥了幾眼, 就到旁邊板凳休息去了, 另外一個人很興奮的在這裡拍了很久的照片, 從很多人拍到剩她一個。

櫻花看似有不同的品種, 牌上日文看不懂, 但至少能分辨出是不同的品種。



除了這 2 顆櫻花樹之外, 還有其他幾棵櫻花樹, 特別再去觀賞幾番, 最後繞完整個公園之後, 趕緊回到「足利花卉公園站」, 接著搭車到「足利站」 , 這裡有著令人驚豔的景點。

[足利學校、鑁阿寺 (ばん な じ, ban na ji)]

一出車站便可以看到「東橫 inn」的旅館。「下次可以來住這裡哦!」我說道。這裡是個寧靜的地方, 沒有過多的遊客, 附近的人們說的都是我聽不懂的日文, 已經不見說中文的人潮。感覺有到日本的感覺。

台灣的景點當中, 有讓你印象中是有很多外國遊客的嗎? 在日本, 一出 JR 上野站, 很容易就可以聽到說中文的, 日本可以這樣的吸引外國遊客, 台灣吸引外國遊客的能力如何呢? 賺錢不一定得靠出口, 能吸引外國人來吃台灣的東西, 這樣這些飲食業, 不用出台灣, 也能賺外匯, 不過我們的觀光吸睛能力可得在努力, 才能吸引更多外國遊客, 總不能只靠中國遊客。



這裡有 2 個主要景點, 足利學校、鑁阿寺 (ばん な じ, ban na ji), 也許你會說學校也能當景點哦! 不只可以, 還得付錢, 才能入門參觀, 我們來到的時候, 已經太晚了, 離關門時間很近, 所以就沒有進入, 只在外圍欣賞這間學校。

栃木縣的「史跡足利學校(以下、足利學校)」作為日本最古老的學校,很多學生在此學習儒家學說。現在被指定為國家歷史遺跡,並對外開放。

而走在足利的街道上, 也是一種享受, 寧靜、古色古香、清新的感覺迎面而來, 是一種很舒服的感覺, 繞過足利學校之後, 來到了「鑁阿寺」, 這也是有來歷的寺廟, 創建於1196年, 至今已有約800多年的歷史。

往「鑁阿寺」路上, 遇到很多 cosplay 打扮的人, 不知道是不是相關活動, 總之遇見了不少動漫打扮的人物。

這裡也有幾顆櫻花樹, 照例又觀賞了一番。走走停停之後, 我們終於來到了「鑁阿寺」。

在「鑁阿寺」附近有一店家, 販售著類似霜淇淋的冰點, 語言不是問題, 購買了 2 球之後在店家旁邊的座椅享用。日本好像什麼東西都好吃, 幾乎不太會買到地雷, 但偶爾還是有些不太適應的食品。

鑁阿寺」被環繞的河流包圍著, 這是護寺河嗎? 日本的寺廟不同台灣, 幾乎都是木頭建築, 我並不特別會以日本寺廟當作景點, 不過這些木頭建築有著和我記憶中寺廟的不同特性, 與其說是「寺」, 到不如說是日本庭園的感覺, 我覺得這些建築真的不像我知道的廟宇之感。

在「鑁阿寺」繞了一大圈之後, 從另外的出口出去, 再沿著外圍的河流回到原點, 附近還有個神社, 我還沒看過神社, 就繞去看看吧!

這個神社是「八雲神社」, 看起來好像荒廢了一般, 我不清楚裡頭奉似的是什麼, 僅僅就建築外觀欣賞, 是個很單純的遊客, 沒進行什麼深度之旅, 我也不想成為什麼神社專家, 就只是單純看看。



時間也差不多了, 該是回兩毛線的足利車站, 還得搭乘新幹線回到上野。不知道是不是剛好遇到下課時間, 兩毛線上好多穿著學生制服的男生, 就像漫畫當中承太郎的高中制服, 原來漫畫的服裝是真的。當然漫畫中女學生穿的水手服也是真的, 我在後續的旅行中就遇見不少。從國小、國中、高中都有水手服。

[秋葉原]

回到小山車站之後, 該來劃位, 中午在小山逛的不過癮, 安排個小時段再去搭車, 我自然又去逛了那家書店, 但沒再繼續購買書籍, 書籍很重很佔空間, 沒確認喜歡, 就不想購買。

回到上野已經 19:10, 今天的行程結束了嗎? 還沒, 打算榨光最後的 jr pass, 來去秋葉原, 搭乘山手線繼續用 jr pass, 今天就是最後一天的期限。這短短的時間到秋葉原剛好, 不過我想逛的娃店原來 20:00 就關門了, 在路上閒逛, 有些店家也陸續關門。

先解決吃飯問題, 選了一間拉麵店, 分別點了看不懂的拉麵和炸雞套餐, 那個炸雞好吃, 但拉麵更好吃, 選拉麵是對的, 不過湯很鹹, 我加了不少開水才中和掉鹹味, 後來得吃這是連鎖店, 我們住宿的上野飯店附近就有了。

吃飽後更晚了, 店家關的更多了, 再街上閒逛之後發現了 bic camera, 原來秋葉原有一間, 我對日本這種賣場並不熟悉, 才日本自助旅行第二次而已, 它的營業時間比較久, 以電器為主, 看到了台灣爭相購買的 panasonic 吹風機, 原來這麼貴哦! 那肯定台灣賣的更貴, 貴到台灣人願意到日本來買, 台灣物價真高呢!

回到飯店已經 21:30, 奇怪, 不是要輕鬆點嗎? 還是搞到這麼晚才回來。明天是購物行程, 這次真的要輕鬆點了。

2018年7月11日 星期三

20180711 瑪莉亞颱風 - 又一個神

20180711 瑪莉亞颱風
20180711 瑪莉亞第八號颱風, 和「功德院長」一樣的標準來看這次各個首長的決策, 不放颱風假如今被當神 柯P:在台灣當神很危險, 又一個神。是的, 當神很危險, 尤其是自己也認為自己是神的時候。

也許有人說可用越來越精準的大數據來評估明天的風速、雨量, 但氣象預報沒有一定準的, 人民安全也不允許建立在「賭博」上, 有時候因為這個不準付出的代價是很昂貴的, 以前的歷史已經有過因為颱風而損失人命的事件, 我實在不知道用一天的放假來換人民的安全, 這麼划算的交易, 為什麼他們就是堅持「只看數據」來評估放假標準, 而沒有加入其他考量。

柯文哲沒有朋友, 應該是最沒有壓力的首長了, 不知道醫生這樣的理工學習背景, 是不是造成他們只看數據, 而忽略了其他部份。如果只看數據, 真的找個 AI 市長來判定是否放假就可以, 不用出動「人」來做這麼困難的判斷。

功德院長前車之鑑不遠矣, 你能有多少次這麼準確的判斷, 只要有一次出人命, 承受的起嗎?

fig 1 紀錄了這次颱風路徑, 往北偏又繞回來, 如果這個颱風路徑是反過來, 那今天的新聞標題大概也就反過來了。

我很在意颱風假這樣的「小事」, 因為如果小事都不體諒人民, 能奢望在大事情上, 他們會站在人民的這邊嗎? 知小可以觀大, 知一可以求五。

fig 1. 颱風路徑

這次竟然連新竹都宣佈放假, 真是讓我意外。

基隆市長 - 林右昌 對這次沒放假的發文



我才不信怕被罵就放假, 之前已經沒放假好幾次了, 官員才不會因為被罵就害怕, 他們害怕的只有選票。今天要是大風雨, 他 (林右昌) 還會這麼說嗎? 馬後炮的發言, 再說一次, 功德院長前車之鑑不遠矣。

氣象預報不準是可以接受的, 但完全相信氣象數據卻不考慮氣象數據不準的的時候該怎麼辦?



這個影片說明日本遇颱風不放假的情形, 雖然日本各方面比台灣先進, 但在颱風假上, 我覺得台灣有這個假是比較好的, 以後的未來說不定日本會參考台灣, 制定颱風假。

20180711 瑪莉亞颱風 - 民眾洽詢天然災害停止上班及上課各地方政府連絡一覽表 資料來源:各縣市政府
縣市名稱是否停止上班上課情形
基隆市今天照常上班、照常上課。
臺北市今天照常上班、照常上課。
新北市今天停止上班、停止上課。
桃園市今天停止上班、停止上課。
新竹市今天停止上班、停止上課。
新竹縣今天停止上班、停止上課。
苗栗縣今天停止上班、停止上課。
臺中市今天照常上班、照常上課。
彰化縣今天照常上班、照常上課。
雲林縣今天照常上班、照常上課。
南投縣今天照常上班、照常上課。
嘉義市今天照常上班、照常上課。
嘉義縣今天照常上班、照常上課。
臺南市今天照常上班、照常上課。
高雄市今天照常上班、照常上課。
屏東縣今天照常上班、照常上課。
宜蘭縣今天停止上班、停止上課。
花蓮縣今天照常上班、照常上課。
臺東縣今天照常上班、照常上課。
澎湖縣今天照常上班、照常上課。
連江縣今天停止上班、停止上課。
金門縣今天照常上班、照常上課。

寧鳴而死, 不默而生

ref:


2018年7月5日 星期四

[自助日本行 2/5] 20180407 上野 - 軽井沢 - 上野

日期: 20180407 (6) (2/5)
地點: 上野 - 軽井沢 - 上野
本篇文章提到的時間均為日本時間, 金額為日圓



新幹線往軽井沢

今天的景點是軽井沢, 要搭乘新幹線從 JR 上野車站出發, 第一次搭乘新幹線, 怕不熟悉整個車站的搭車路線, 08:50 的新幹線, 08:20 我們就抵達 JR 上野車站, 早點查看我們要搭乘的新幹線。

新幹線的月台要經過 2 個閘票口, 第一個是普通火車, 第二個是新幹線, 拿 JR pass 的就要從邊邊的閘票進入, 讓站務人員看你的 JR pass, 有可能會被要求要看護照, 請準備好備查。



はくたか (hakutaka) 555 就是我們要搭乘的班次, 看板會以英文、日文的方式秀出班次, 仔細對照, 應該不會找不到。

TRACK 類似台灣的月台, 19 TRACK 就往 19 的地方走去, 自然就會看到該台新幹線。

一開始不是很理解如何搭乘新幹線, 以為目前停靠的車就是我們要搭乘的班次, 後來才知道這台只是臨時停在這裡, 我們要搭乘的班次, 稍候才開了過來。



上車找到位置之後, 就可以好好坐下來休息, 放下緊張感, 總算順利搭上新幹線。先吃個早餐, 第一次搭乘新幹線, 心情有些興奮, 這就是新幹線阿! 車上有附插座, 就來試試充電吧! 畢竟紀錄軌跡也要耗電, 能插著充電, 不是壞事。

日本的鐵路可以看到一個台灣見不到的情景, 那就是同方向的火車後面的那台超車前面的火車, 在台灣的鐵路中, 只能看到 2 台火車是反方向的面對面接觸, 無法看到同方向的後一台追趕上前一台, 難怪一開始看到的時候, 覺得哪邊怪怪的。

我錯了, 後來我才知道台灣也有類似的火車追火車場景可看。



一個小時之後, 我們抵達 JR 軽井沢車站, 一出站就覺得一股寒意襲來, 四月的軽井沢依舊帶些寒意, 我們有備而來, 穿上事先帶著的外套, 覺得溫暖多了。

高原教会石の教会

北口出來, 往右邊的方向看, 應該可以看到白ネコ (白貓 shiro neko) セイクル (cycle sei kuru), 就是網路上提到的單車出租店 - 白貓。

軽井沢和東京發達的地鐵不同, 這裡只有公車, 對於遊客來說, 非常的不方便, 租單車是遊軽井沢的一個方式, 前提是你得騎得動, 這種幼幼班路線對我來說當然是完全沒問題的, 不過對另外一個人來說, 問題就大了。

白貓單車出租店

遊客們大多租電動單車, 各自騎一台, 只有我們租這個 ...



對, 協力車, 沒有電動的版本, 完全靠腳踩, 而且不能調整座墊高度, 讓我的腳力大概只有發揮 5 成, 若是平地, 這五成腳力其實也很夠用, 不過 ...

好吧! 不管了, 就它了, 有個人很興奮的說就是要租這台, 為了避免相互等待的時間, 協力車就協力車吧!

一般單車租金 500, 電動單車 1000, 協力車租金 1500, 17:00 歸還, 完全不用押證件或是押金, 只要填寫名字、手機號碼這基本資料即可, 還蠻方便的, 包含有一個單車用的鎖, 這個鎖很重要, 停留各個景點時需要鎖上單車, 還有一張地圖。協助租車的員工大部分都是老伯伯, 日本很長看到年者的工作者。

某人已經計畫好要去哪些地方, 我要幹麻, 當然是負責踩這台協力車, 載送她到這些目的地。

先照著帶頭大姐的指示, 往右之後再往左, 切到前往麥當勞的路上, 我們在新幹線上用過早餐了, 省下時間直接去景點。

最先遇到的是在 youtube 影片看到的巧克力夢工廠, 有免費的咖啡、巧克力可以食用, 不過真的抱歉, 沒有買任何東西就離開了, 怪不好意思的。

已經很久沒有騎一整天的腳踏車了, 踩著踏板, 那種騎車的感覺又回來了, 不過這次還帶個拖油瓶, 後面的, 腳要動阿! 騎單車果然是最棒的運動了。軽井沢的街頭風景有著軽井沢風格, 台灣很多建案都會娶一些日本地名, 六本木、新宿、關東, 當然軽井沢也是其中之一, 彷彿只要取一樣的名字, 就有一樣的居住品質, 可以賣個好價錢呢!

事實上怎麼樣呢? 自己來過一次就知道了, 樹上的樹枝、底下的溪流、有型的房屋建築, 件件令人覺得舒服, 在這裡騎單車, 真的是很棒的享受, 不過我還是比較想騎我的玻弟就是了。

fig 1. 巧克力工廠
隨著距離的前進, 我發現我的腳越來越重, 奇怪! 這種路不應該難倒我阿! 難道是後面的傢伙太重了, 應該也不是, 重量還好, 是的, 都不是以上的原因, 而是路面以緩緩的速度在上升, 原來我們要去的路線是山路, 一開始我完全沒考慮到地形問題, 糗大了, 有點撐不住阿! 後面的, 腳該啟動了。騎到某段路之後, 下車休息, 應該是很冷的天氣 (10 度 C), 我卻熱汗直流, 這種程度的路就讓我流汗了, 搞什麼阿!



隨著後面的小幫手協助, 順利的往山路騎去, 第一個目標是 2 座教堂 (教堂到底有什麼好看的), 高原教会、石の教会, 乖乖, 要去這裡可不容易。

首先, 我們騎錯路了, 要先原路折返回一間 7-11, 從旁邊的小路上去。

再來是, 媽呀! 路上有個超級大斜坡, 我看到之後, 沒什麼猶豫, 「後面的, 下車啦!」後方傳來疑惑的語氣。「怎麼了嗎?」「要牽車了。」我回道。

fig 2. 推協力車上陡坡
在我騎單車的日子中, 下來牽車是平常事, 我向來不會勉強自己, 牽車並不是什麼可恥的事情, 留得青山在, 才能繼續牽。所以我對牽車一點都不陌生, 不過我還是頭一次牽協力車, 媽呀! 有夠重, 平常我的愛車是比較輕的 (高檔車嘛!), 這台平凡的協力車既沒有輕量化, 又比一般單車多了一個騎車座位, 想當然是加重不少, 這個長陡坡還真的又長又陡, 牽的我的手腳都抖了。

大約過了十幾分鐘吧, 終於抵達。前方映入眼簾的便是高原教会, 沒問題, 參觀之後趕緊找石の教会, 在那呢? 360 度都環視過好此次了, 還是不知道在那, 好在最後一位小哥帶路, 終於找到石の教会, 在這條陡坡的後方。

fig 3. 高原教会

很不巧, 2 座教堂都有人在舉行婚禮, 我們無法進入參觀, 是有點可惜, 不過本人對教堂也沒什麼遐想, 沒有緣份也沒關係, 趕緊到別的景點晃晃。



大家參考的旅遊資料都一樣, 這 2 座教堂有好多的遊客, 當然也是騎著單車而來, 只是他們騎的是電動的版本, 我的是人力的版本。

星野溫泉、村民食堂

再來便是到星野溫泉, 不用沿原路回頭, 直接穿過高原教会, 有條小山路, 可以通到這裡, google map 很好用, 我的網路又是 4g 無限, 自然得好好的利用, 找到這條路之後, 大約騎 5 分鐘就到了, 因為一路幾乎都是下坡, 後面那位又可以翹腳休息了。



這裡有個「村民食堂」, 可以在此用餐, 不過遊客很多, 我們等了很久, 12:21 才輪到我們用餐。星野溫泉當然也沒有去泡, 要泡湯的朋友最好自己準備毛巾、浴巾之類的泡堂用具, 免得需要多花一筆費用。

點了鮭魚丼飯、蔬菜丼飯, 鮭魚、蔬菜都好吃, 日本米更好吃, 後來我才知道需要日本米、日本水、日本電鍋, 才有辦法煮出這樣好吃的米飯, 所以我就打消買日本米回台灣的念頭了。

吃飽之後已經有點晚了, 單車租借時間只到 17:00, 有著時程壓力, 趕緊驅車往銀座通去。由於不熟悉路況, 最後選擇沿著原路回去, 回去的路上會遇到一間大型超市 - delicia。

delicia 超級市場、果醬、旧軽井沢銀座通り(舊輕井澤銀座通商店街)

有位太太很喜歡逛超市, 早上經過這間超市時, 猶豫著要不要進去, 最後沒有進去, 決定先去景點, 現在回頭又遇到了。



再經過上午的行程之後, 還是決定進來逛逛, 我只能說這是正確的決定, 在軽井沢, 我只有在 delicia, 才沒有聽到說中文遊客, 周遭都是說日文的人, 總覺得這樣才有來日本的感覺。

一進來就是各式各樣的生鮮食材, 對啦! 這就是我們想逛的大型超市, 看著各種琳琅滿目的商品, 覺得十分新鮮, 有的東西台灣也有, 自然覺得親切, 有的東西台灣沒有, 就覺得特別, 看不懂的東西都買來吃就對了。

在這裡購入了軽井沢鮮奶, 可以用來當早餐, 我們定的飯店不含早餐, 這罐鮮奶陪伴我們到最後一天, 省下不少早餐費用。

也買了特濃口味的可爾必思的版本, 這是在台灣沒看過的, 比販賣機便宜不少, 販賣機的價錢在這裡可以買 2 罐, 我再也不想投販賣機的飲料了, 價錢太貴了。

買了鮮奶自然有保存的問題, 我們還要很久才會回飯店, 還好軽井沢溫度不高, 掛在協力車上勉強不會有保存的問題, 一直到了 21:00 才回到飯店, 才將鮮奶保存於飯店冰箱。除了鮮奶還買了 highball, 這是類似啤酒的酒品, 因為在新幹線看到日本人在喝, 也買了 2 瓶試試。

另外還有罐頭、零食以及 2 個布丁, 布丁等到在銀座通吃布丁時在一起做個比較。

時間真的不夠, 在這裡耗掉太多時間了, 要不是得趕往銀座通, 應該還可以繼續逛下去。



接著得往旧軽井沢銀座通り去, 到這邊都是下坡, 所以速度可以很快, 而開始要往銀座通就有點上坡了, 在停紅燈時, 看到了旅遊影片的果醬店, 趕緊下去採購, 由於不確定好不好吃, 保守的買了 2 罐小慣的, 很後悔, 應該買大罐的, 真的好吃。

隨著坡度遇來愈陡, 離旧軽井沢銀座通り也愈來愈近了, 這是一個類似老街的地方, 販售著各式各樣商品, 由於時間關係, 無法整條路都逛完, 走馬看花的逛了幾間店之後, 就該準備離開了, 17:00 的租車時間實在不夠, 下次應該要早點出門。

先來談談布丁, 在 delicia 買了 2 個布丁, 一個是焦糖布丁, 一個是類似統一大布丁, 焦糖那個很好吃, 也比 7-11 賣的便宜, 這樣類比當然不適合, 應該是 7-11 比大潤發才合適。另外類似統一大布丁的那個就不好吃了, 台灣的統一布丁還比這個偽統一布丁好吃, 銀座通這個則是買了抹茶布丁, 也是最貴的, 忘記多少錢, 好像是 470 日圓, 這種價錢好吃也是應該的, 抹茶布丁是季節限定, 剛好來的時候還有提供, 運氣還不錯。


旧軽井沢銀座通り由於沒怎麼逛到, 沒買什麼東西就返回白ネコ (白貓 shiro neko) セイクル (cycle sei kuru) 單車出租店, 已經有不少遊客陸續回來還車, 也沒什麼特別的還車手續, 和工作人員示意一下是回來還車的, 記得地圖也要歸還。

outlet

我們還車之後才 17:00 左右, 來去逛 outlet 好了, outlet 由南口方向出站。回程的座位我們並沒有事先劃好, 想要玩到一個階段再來決定要搭乘哪一班新幹線回上野。再去 outelet 之前先去劃位, 找晚一點的班次回上野, 劃好車票之後 (有事先印出時刻表), 先在站內休息一下, 喘口氣之後才去逛 outlet。



雖然之前就知道這個 outlet 很大, 但是這樣的規模還是大到令我吃驚, 這是台灣見不到的規模, 我看了左邊那邊的店家之後, 決定還是走右邊的就好了, 那是一個看到就不想移動的超長距離, 我的腳今天動夠了, 不想在動了, 而且肚子餓, 想吃飯, 右邊有美食街, 當然往這方向走。

隨意的逛了幾間店之後就去吃飯, 肚子真的太餓, 點了不知名的東西來吃, 洋風イカ燒, 500 日圓, 東西不錯吃, 就是份量少了點。

新幹線回上野

該準備回上野了, 今天的行程真的有趣, 單車族的我能其到單車就好玩了, 還是在日本騎車, 更是特別, 回程也大約是一小時。今天是星期六, 以為會遇到大量遊客, 不過並沒有, 新幹線上劃位區沒有很多人, 車站也沒有很多遊客, 很容易就劃到座位。

回飯店之後, 把今天的戰利品一一放到冰箱, 明天就來嘗試這瓶鮮奶。

2018年6月22日 星期五

c++ member function pointer 的實作 by cfront

Re: [問題] 關於Class指標的觀念

我在這篇回應過一些想法, 不過基本上是錯誤的。

Why am I having trouble taking the address of a C++ function?

Short answer: if you’re trying to store it into (or pass it as) a pointer-to-function, then that’s the problem — this is a corollary to the previous FAQ.
Long answer: In C++, member functions have an implicit parameter which points to the object (the this pointer inside the member function). Normal C functions can be thought of as having a different calling convention from member functions, so the types of their pointers (pointer-to-member-function vs pointer-to-function) are different and incompatible. C++ introduces a new type of pointer, called a pointer-to-member, which can be invoked only by providing an object.
NOTE: do not attempt to “cast” a pointer-to-member-function into a pointer-to-function; the result is undefined and probably disastrous. E.g., a pointer-to-member-function is not required to contain the machine address of the appropriate function. As was said in the last example, if you have a pointer to a regular C function, use either a top-level (non-member) function, or a static (class) member function.
上述藍色文字在說, 將 member function pointer 轉成一般 pointer 是不可行的, 雖然我做了以上的測試, 將 member function pointer 轉成 non-member function pointer 之後, 再去執行, 看起來沒什麼問題, 但直到我使用 cfront 查看 member function pointer 實作之後, 我才真正理解為什麼這樣看起來可以運作的程式碼, 其實是錯誤的, 請不要這麼做

h1.C
 1 #define CFRONT_CPP
 2 
 3 #ifdef CFRONT_CPP
 4 #include <stream.h>
 5 #include <stdint.h>
 6 #else
 7 #include <iostream>
 8 using namespace std;
 9 #endif
10 
11 class A
12 {
13   public:
14     virtual void foo(int a = 0)
15     {
16       printf("A %d\n", a);
17     }
18     virtual void va(int a)
19     {
20       printf("va: A %d\n", a);
21     }
22     void mf1()
23     {
24       printf("mf: mf1\n");
25     }
26 };
27 
28 class B : public A
29 {
30   public:
31     virtual void foo(int a = 1)
32     {
33       printf("B a: %d\n", a);
34     }
35 };
36 
37 int main(int argc, char *argv[])
38 {
39   A a;
40   void (A::*mf)() = &A::mf1;
41 42 uintptr_t addr = *((uintptr_t*)&mf); 43 (*(void(*)(A *))(addr) )(&a); 44 (a.*mf)(); 45 46 #if 0 47 printf("sizeof(mf): %u\n", sizeof(mf)); 48 cout << "(sizeof(mf): " << sizeof(mf) << endl; 49 #endif 50 return 0; 51 }

h1.C L40 被轉成 h1..c L818

40 void (A::*mf)() = &A::mf1;
->
016 typedef int (*__vptp)(void);
017 struct __mptr {short d; short i; __vptp f; };
811 struct __mptr __1mf ;
818 ((__1mf .d=0),((__1mf .i=-1),(__1mf .f=(((int (*)(void ))mf1__1AFv)))));

一個 member function pointer 事實上並不是指表, 而是一個結構, 參考 L017 struct __mptr, 其中有 d, i, f, 3 個欄位, 而 f 才是用來指向 member function。mf1__1AFv 就是

void A::mf1()

當使用一個 member function pointer 變數時, 其實操作的不僅僅是指標, 還有 d, i 這 2 個欄位, 所以用
42   uintptr_t addr = *((uintptr_t*)&mf);
43   (*(void(*)(A *))(addr) )(&a);
將一個 member function pointer 轉成一個指向 non-member function pointer, 其實並不是指標互轉, 而是把一個 struct, 裡頭有 d, i, f, 轉成一個指標, 這樣當然是不可能會正確的。

上述的語法先把 member function pointer 轉成一個整數, 再轉成 non-member function pointer 去執行。
821 __1addr = ((*(((uintptr_t *)(& __1mf )))));
822 ((*(((void (*)(struct A *))__1addr ))))( & __1a ) ;__1mf )))));

這僅僅是 cfront 的實作方式, 不同編譯器可能會有不同的實作方式。

h1..c
001 #line 1 "h1.C"
002 
003 /* <<AT&T C++ Language System <3.0.3> 05/05/94>> */
004 char __cfront_version_303_xxxxxxxx;
005 /* < h1.C > */

016 typedef int (*__vptp)(void);
017 struct __mptr {short d; short i; __vptp f; };

805 #line 37 "h1.C"
806 int main (int __1argc , char **__1argv ){ _main(); 
807 #line 38 "h1.C"
808 { 
809 #line 39 "h1.C"
810 struct A __1a ;
811 struct __mptr __1mf ;
812 
813 #line 42 "h1.C"
814 uintptr_t __1addr ;
815 
816 #line 39 "h1.C"
817 ( ((& __1a )-> __vptr__1A = (struct __mptr *) __ptbl_vec__h1_C_[0]), (& __1a )) ;
818 ( (__1mf .d= 0 ), ( (__1mf .i= -1), (__1mf .f= (((int (*)(void ))mf1__1AFv )))) ) ;
819 
820 #line 42 "h1.C"
821 __1addr = ((*(((uintptr_t *)(& __1mf )))));
822 ((*(((void (*)(struct A *))__1addr ))))( & __1a ) ;
823 (__1mf .i< 0 )?((*(((void (*)(struct A *__0this ))__1mf .f))))( ((struct A *)((((char *)(& __1a )))+ __1mf .d))) :((*(((void (*)(struct A *__0this ))((& __1a )-> __vptr__1A [__1mf .i]).f))))(
824 #line 44 "h1.C"
825 ((struct A *)((((char *)(& __1a )))+ ((& __1a )-> __vptr__1A [__1mf .i]).d))) ;
826 
827 #line 50 "h1.C"
828 return 0 ;
829 }
830 } 
947 #line 51 "h1.C"
948 
949 /* the end */

h1.C L47 印出這個 member function pointer 大小時, 其實是印出 struct __mptr {short d; short i; __vptp f; }; 的大小, 在我的平台上, 是 16 byte。

2018年6月15日 星期五

在 linux 下處理 windows/dos 格式的中文檔案

在 linux 下一般都是 utf8/unix 格式的編碼, 那處理中文 big5/windows/dos 格式時會遇到什麼問題?

會影響中文正確的程式很多, 這邊以我自己遇到的程式來說明:
  1. 終端機
  2. vim
  3. git/hg diff

我用的是 mate-terminal, 支援 utf8/big5 模式, 你一定猜想, 要正確看 windows/big5 檔案, 應該會需要切換到 big5 編碼吧, 答案 "是", 也 "不是", 要看你在終端機用什麼軟體看 windows/big5 檔案。

t1.txt 是一個 windows/big5 檔案, 內容是 "施逼\r\n"

cat
mate-terminal 使用 utf8
descent@debian64:~$ cat /tmp/t1.txt
�I�G

mate-terminal 使用 big5
descent@debian64:~$ cat /tmp/t1.txt
施逼
descent@debian64:~$

less
mate-terminal 使用 big5
less.txt
1
2 <AC>I<B9>G
3 /media/vbox_share/tmp/t1.txt (END)

mate-terminal 使用 utf8
less.txt
1
2 <AC>I<B9>G
3 /media/vbox_share/tmp/t1.txt (END)

mate-terminal 使用 big5
export LESSCHARSET=latin1
施逼
/media/vbox_share/tmp/t1.txt (END)

mate-terminal 使用 utf8
export LESSCHARSET=latin1
�I�G
/media/vbox_share/tmp/t1.txt (END)

git/hg diff 同 less

好了, 重頭戲 vim 來了, 有好幾個組合可以正確顯示 windows/big5 中文, 我要用的組合是:
mate-terminal 使用 utf8
~/.vimrc
set fileencodings=utf-8,big5,gb18030
encoding=utf-8
這樣 vim 就會將 t1.txt 用 big5 的編碼打開, 然後轉成 utf8 編碼, 而 termencoding 我沒有設定, 所以和 encoding 一樣是 utf8, 由於 mate-terminal 使用 utf8, 所以一切配合的很好, windows/big5 中文檔案正確顯示, 沒有亂碼。



使用 vim 寫入中文之後, 也會將這個中文從 utf8 轉成 big5 的中文, 用 windows notepad 開啟完全正常顯示中文。

locale 設定全都是 en_US.UTF-8, 沒有設定為 zh_tw.BIG5。
descent@debian64:tmp$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

vim 相關編碼設定請參考 ref 1。

另外一個問題是 \r \n, cr, lf 換行問題。

為什麼以我一個 linux 使用者會有機會遇到 windows/big5 中文檔案呢? 說來話長, 就不說了。

ref:
  1. VIM 教程/编码/乱码
  2. DOS 和Unix 文件--vim轉化
  3. 远程登录linux,使用vi和less查看文本出现中文乱码,使用cat正常
  4. 【详解】回车 换行 0x0D 0x0A CR LF \r \n的来龙去脉

2018年6月8日 星期五

20180113 星屑寶石街 BJD 市集



20180113 星屑寶石街 BJD 市集, 這個活動和《20171217 台南偶遇 - BJD 二手小市集 2》一樣, 都是在台南文創園區的活動。從台南火車站前站大門出來後, 右轉經過 7-11, 走路大約5分鐘, 台南文化創意產業園區, 你可能會覺得這個文化園區不太熱絡, 正常的, 這邊就是這樣。



這次沒有帶娃過來, 沒有辦法試穿這些販售的東西, 看到喜歡的東西只能靠想像和娃搭配會是什麼樣子。這次的場地也比《20171217 台南偶遇 - BJD 二手小市集 2》, 《20171217 台南偶遇 - BJD 二手小市集 2》是以二手商品為主, 星屑寶石街 BJD 市集就比較類似娃場, 有不少的攤主是從台北來參加, 詢問他們會不會覺得遠, 大部分都說, 順便來台南玩。

最早吸引我目光的是下圖的透明雨傘, 之前在《20171217 台南偶遇 - BJD 二手小市集 2》已經買了一隻半透明雨傘, 才 80 元, 怎麼馬上就看到類似的東西, 這隻雨傘要價 480, 嗚 ... 不算便宜, 但我考慮沒多久就決定要購買了。

傘面是全透明的, 也比之前那隻雨傘大很多, 可以撐起 2 個人, 嗯 ... 2 隻娃。我把玩著雨傘開關, 收折雨傘好幾次, 這真是有趣的裝置。所以我現在有 2 把雨傘, 好像多了點。



再來是一頂皮製鴨舌帽, 我馬上就覺得可以和皮衣套裝搭配, fig 1 就是和其搭配的效果, 還真的蠻適合的。而 100 元的麥克風也是一個有趣的裝置, 除了裝飾的效果外, 它是真的可以當麥克風用的, 有娃友就是放在娃的手中, 透過電腦, 和遠方上線的有人通話, 我是沒有試過, 畢竟現在手機更是方便。

fig 1. 帽子 300 nt fig 2. 麥克風 100 nt

這次敗的比較多, 後來又看到了 fig 3. 的包包, 要價 950 nt, 不便宜, 但作工精細, 和《[娃店] 20170930 白日夢森林》買到的那 2 個背包類似, 屬於作工精緻型的, 就算不當娃娃的配件, 做個純擺飾, 也非常合適。


fig 3. 包包 950 nt 150 nt