July 21, 2015

冷面天使

No comments:
已完結 / 共 15 冊 / 喜歡程度:★★★★☆

(其實評分也沒啥意義,因為爛漫畫我應該完全看不下去)

趁著一個週末把冷面天使給看過一遍,從 wiki 上面的資料來看,1992 年開始連載到 2000 年。我大約是在 1996 到 1998 年間唸國中,記憶中我是國小五六年級看過這部漫畫,由此推算應該沒記錯。

那個年代漫畫出租店比現在興盛許多,這部漫畫便是隨手翻閱時,覺得有意思便租來看的,後來上高中後在學校住宿,漫畫出租店逐漸減少,也沒有繼續追完這部。

恰好看到「八木教廣」這個熟悉的名字,查閱一下才回憶起這部沒追完的漫畫,當然就要順手補完。

這部算是校園喜劇漫畫,一個長相有如惡魔的年輕人,有著近乎最純潔的心靈,就是那種明天要轉學了,今天為了要給學校留下美好的回憶,所以會主動跑去操場除草的那種內外衝突設定。搞笑的基本要素就是衝突,所以在外表跟心靈的衝突下,創造了這部漫畫的主軸。

主角北野誠一郎,是個超級好人

許多人說畫風很醜,其實看過忍空之後就不會覺得怎樣。雖然分鏡也很普通,至少多數武戲的肢體動作還算正常,不像忍空那樣根本就扭曲了。而且畫風很有特色,個人是覺得漫畫家找出個人風格可能更重要於畫出標準的美。

普通卻穩定的劇情

講到校園喜劇漫畫,第一個想到是同時期也在連載的掰掰演劇社。同樣都是單元式的劇情,掰掰演劇社的主線很不明顯,彷彿可以無限制地念高中。

冷面天使透過不明顯的主線,以及些許的番外篇,把主角、配角們的故事交待過後,等到大家都理解原來北野誠一郎只是個單純的普通人(唔,算吧),透過以往的互動確認了彼此的友情,才將故事畫下句點。從這個角度來看,這部漫畫就是一個大家敞開心胸,認識彼此的友情漫畫。雖不像富堅那樣有峰迴路轉的劇情,要在長達數年的連載中,把故事從一開始的誇張對立慢慢走向樸實而後收尾,其實也不簡單啦。

配角才是主角

一部漫畫要成為經典有很多要素:環環緊扣的劇情、受人讚許的畫風、讓人深思的價值觀,還有就是帶著靈魂的配角。雖然冷面天使稱不上一部經典,但是他對配角的描寫相當認真,甚至感覺配角才是主角。

先說主角北野好了,恐怖的長相溫柔的心靈,頂多就再計入算是優秀的身體素材,如此而已。這個角色從一開始就很完整,沒有什麼成長的空間,所以變得很平板。富堅對主角的刻劃其實也很隨便,我挺喜歡幽助但是很討厭小傑。他們兩個都很像,要不是因為掛著主角的招牌被設定成「真是捉摸不定的人啊」,實則標準到極點。

角色的成長是很重要的,成長前就要先遇到問題,發生問題之前要先讓讀者能夠代入角色,才會感覺到一同面臨問題。但是小傑的心靈完整度太高,在凱特的事件之前幾乎可說只有外在技巧的技術問題,看起來就像是一隻別人在練的 RPG 角色,所以小傑在爆氣或是掙扎該怎麼辦的時候我都滿無感的。

北野也有一樣的問題,心靈 EQ 從一開始就被點到滿,對多數人的誤會都是習以為常地:「哎呀,這都是沒辦法的啊」,於是就變成一個無聊的角色。

就像獵人裡面的梧桐管家都比小傑有趣一百倍,冷面天使裡面的配角才像主角。

女主角小磯良子從一開始的格鬥少女,帶入愈來愈多的少女情懷,以及父女之間的總總誤會。不知道是否因為女主角的命運,大概在中期就成長結束,值得回味的空間也不大。

跟班竹久優二天生茶色的頭髮,跟老師嗆話之後故意染成金色的頭髮。老師前後兩次相同的問句「頭髮顏色怎麼回事」,第一次回答「天生的」(心中想著幹嘛不相信我),第二次回答「染的」(反正怎樣你都不信),短短一篇就把角色的性格勾勒出來。

白滝幾奶可說是變化最大的人。一開始用忠實執行指令的冷酷格鬥少女形象登場,成為固定班底之後十分不社會化行為舉止有點像是活潑的凌波零。後來彷彿說相聲的天份被激發一般,經常擔任逗哏的角色,以尖銳直接的評語用力吐嘈每一個人。故事尾聲的時候,甚至為她準備了一整個章節,以她獨特的方式演繹出了掙扎與愚笨,間接帶出了她的可愛之處,在這一階段的聲勢根本就超越了第一女主角。(對我這種凌波零派來說,根本是精神上大勝了惣流明日香啊啊啊)


第二女主角也喜歡男主角與女主角,對於三角習題的解法,超級不正常的價值觀

偷聽誠一郎說完對大家的感覺之後,優二跟幾奶感動得亂七八糟

就第二女主角的身份來說,這一幕已經功德圓滿了

佐伯祐美,算不上是配角,根本就是記不起名字的同學乙。在這個以外貌決定生存價值的世界裡,相當善良地獨立思考「會不會北野誠一郎其實是個面惡心善的好人」。可惜,這是一部搞笑漫畫,所以她心中的善良幼苗註定要被總總的意外摧毀。描寫佐伯祐美的番外篇的劇情巧妙地接上主篇,除了增添趣味之外,還讓人忍不住想:「除了勇者之外的 NPC 也是有自己的生活與煩惱的啊啊啊」(對不起我是 NPC?)

這是快樂的小品

當然校園喜劇本來就不會像是史詩,這部的劇情也沒有過份的起伏,雖然主角的設定看起來好像很誇張,搞笑的情節卻相當節制(唔,應該算吧)。總體來說是部四平八穩的漫畫,發生在一個悠閒小鎮的年輕人的故事,除了跑龍套的人之外,沒有實質意義的壞人(學生會長無足輕重XD)。

雖然總是會有些青春期特有的不盡人意,不過那些都是小事。以輕鬆無負擔的心情看完這部漫畫,重新感受一下交新朋友的樂趣。

March 3, 2015

支付寶即時到帳串接小記

No comments:
先說個結論:要用公司的帳號透過工人智慧申請的方式去開通「即時到帳」,取得 PID 之後才能開發。開發階段沒有 sandbox 可用,要用真正的個人帳號以每次 0.01 元的消費方式來測試。當然財力雄厚的人,想要用 100 元也可以啦。

前些日子接到需求要接上支付寶的金流。在此之前我只有很爽地直接用 tka 接好的 paypal,測試的時候用一組測試卡號「盡量刷」,享受那種刷卡不用付錢的精神富裕。

這是頭一次接金流,還要用中國的支付寶。

我對支付寶的認識就是:「嗯,很大間的公司」,還要搜尋一下才能確認是馬雲的東西,我對馬雲最大的認識就是經常在 Facebook 看見他的照片及勉勵小語,好比「他媽的這根本不是我說的話」。

 接完了回頭看其實也沒啥,反正阿宅就是看完文件把路打通,每個人都會。只是一些準備工作比較讓人摸不著頭緒,這邊稍微紀錄一下,給需要的人一點幫助。

我接的金流是「即時到帳」(Direct Pay),在自家的網站上以 sign 過的資料產生一個 link,user 點下 link 之後就會被導到 alipay 的網站,在 alipay 登入 user 自己的帳戶之後就會看到對應的訂單,選擇付款之後,錢就會直接從 user 的帳戶轉到自己網站的帳戶。

假設你是一位要開發這個功能的技術宅,那麼你需要準備這些東西,有這些就能安心開發了
  • 一個可以付款的一般帳號
  • 一個可以收款,且申請了即時到帳功能的公司帳號,需要的帳戶資訊包括
    • seller email:就是這個公司帳號的 email
    • PID
    • Key
 request 都是送到 https://mapi.alipay.com/gateway.do,內容填什麼看文件就好了。



一開始連需要什麼功能都不知道,摸索了一下確定自己需要的是即時到帳。以為在這個飛機滿天飛,一堆人早上在台北吃早餐,中午在日本吃拉麵的年代,搜尋 "alipay api" 找到的支付寶開放平台以為就能開工,其實根本用不到。

因為 paypal 刷得很開心,以為 Sandbox 可以有相同體驗,後來才知道根本不行。

支付寶上頭找不到客服的 email,也許是國情不同,他們流行用線上客服。在上班時間排隊了一個小時之後終於轉到技術客服,還要用 cconv 轉成簡體發問

「我要開發即時到帳,一定要簽約完後才能開始開發嗎」『對』
「Sandbox 能用嗎?」『那個沒用,要用帳號每次消費 0.01 測試吧』

回頭想想不管是 Sandbox 或是 API website,都寫著「支付寶開放平台」,跟我要做的東西一點關係都沒有,是我自己充滿了過份美好的想像。

如果你是用 nodejs 開發的人,收 notification 的時候可能會遇到 req 沒有 body 的情況,請參考這篇 nodejs 集成支付宝能收到 notify 请求但收不到 notify 数据,也許是平常有牽老奶奶過馬路,這篇發問與解答正好出現在我撞牆的前一天,省去了很多冤枉時間。(具體錯在哪一行 code 我現在懶得找,歡迎大德補完)(如果是日本的金流我應該就會很認真找了 >/////<)

其實也就是那一篇讓我覺得:「啊,好險他們有寫,真感謝他們 <(_ _)>」。剛剛洗澡的時候也覺得自己也要來稍微整理一下,搞不好可以幫到哪位跟我一樣沒有頭緒的人:如果你的需求跟我一樣,那你只要/必須要準備好上面的東西,才能/就能放心開工了。

後來,Ly 說是 Paypal 比較先進,不是支付寶太落後,大部分的金流都跟支付寶一樣。

唉...

October 14, 2014

2014 東京自由行 Day 3

No comments:
第三天的行程重點是三鷹之森吉卜力美術館,因此今天大多在東京市區內走動,一早搭 JR 到吉祥寺站再走到吉卜力美術館,下午逛了吉祥寺的商店街,晚上還到台場晃了一下。

到國外旅遊的奇妙之處,一些在電視上與生活領域毫無相關的東西,突然都變得有意義起來。在 JR 上看到熟悉的站名,心中就會開始挖掘相關的體驗。經過新宿就會想到電影新宿事件,看到池袋就會想到池袋西口公園,電車在秋葉原靠站時,看見站外年輕人的服飾就會不自覺說出:「啊!果然是秋葉原」。第一次看到「目黑」這個地名,後來在 HERO 2 的日劇,主角到目黑區偵查時,心裡也會想:「喔喔喔!就是那個目黑耶!」

上一次的體驗是從 Budapest 回來之後,在 Mission Impossible 4 的片頭看見場景是 Budapest,當下就急著搜尋螢幕上那條街道我是不是有走過?

就像小王子與他的玫瑰花,當你與它接觸過一次,這個陌生的名字就此對你有了意義。


さとう松阪牛





第一站就是到吉祥寺裡的商店街SATOU 的炸牛肉丸,還沒開賣就已經出現排隊人潮,那天還是星期五的上班日呢!簡單買了一份 400 Yen 的炸牛肉丸到旁邊找地方坐下來吃。我個人覺得「油炸」是很神奇的料理方式,它會讓不好的食材變得還不錯,同樣也會讓好的食材失去優勢,換言之就是把好跟壞的分數往中間靠攏。雖然說吃的是「松阪牛」,實際上我還是不知道松阪牛有多厲害,不過牛肉丸依然很好吃是真的!

井之頭恩賜公園


若從吉祥寺站徒步到吉卜力美術館,路上會經過井之頭自然文化園與井之頭恩賜公園,這個地方真是相當漂亮。









在這個上班時間,出沒的幾乎(應該)是家庭主婦帶著小孩來散步,穿插一些身著套裝襯衫應該是翹班出來的上班族。公園內有湖、有寺廟,林木高聳卻不覆蔽陽光,因為公園的腹地廣闊,絲毫不覺自己身處東京市區,靜謐悠閒得讓我們差點沒趕上美術館的入場時間。







公園內有個小店,賣的是冷飲冰品,我們從美術館出來之後便在此吃了碗宇治金時消暑,充分享受了公園內的慵懶氣氛。

吉卜力美術館


美術館內是不得拍照的,館內多是宮崎駿的創作環境,著名動畫的手稿草圖,一樓有許多利用視覺暫留原理,設計出來的巧妙裝置,頂樓還有個遊戲室,放了大型的龍貓公車玩偶與一堆黑炭球,同時段有一群參訪的(國小?)小朋友在裡面玩瘋了,感覺真爽啊! (中年大叔可沒辦法進去呢)

宮崎駿的作品裡面我最喜歡的就是天空之城,原本期待在美術館裡看到天空之城,或是其他知名動畫的背後設定,滿足自己那延續已完結的冒險的小小希望,可惜希望落空,也許是我沒注意到,也許是這東西根本不存在。說來也是,這裡的定位是美術館呀!

逛館的時候看見有人穿著深色長裙頭上打著紅色大蝴蝶結,應該是模仿魔女宅急便的穿著,稍微打扮一下來逛美術館是個很不錯的玩法呢!






逛完美術館別忘了到頂樓跟機器人合照一下,旁邊還有天空之城的控制台唷!XD


其他

出了美術館走回吉祥寺車站前,下午的行程就是在吉祥寺的商店街逛逛買買。


當然吃了朝思暮想的一蘭拉麵,把湯都喝光光表示最高敬意。在商店街內像鬼打牆一樣繞了無數次,終於把老婆跟小孩的浴衣買齊,雖然我想要再買一件卻沒看到幾件男生的,真可惜我是很喜歡穿浴衣的人,不知又要何時才能等到夏天去日本的行程了。

晚上沒安排行程,於是到台場看看夜景。日劇裡似乎不少台場的鏡頭,真正到了那邊又覺得還好,除了有些比較吵的外國人也沒看見什麼特別的。我跟太座大人的結論是,可能我們本來就沒有很喜歡都市吧,也許以後旅遊日本都不會安排東京了。

回品川駅時,我們從五反田駅就提前下車,沿著 317 號 道路走回去,原本以為很近,以為是兩個捷運站之間那種概念。實際上卻走半小時,而且覺得頗遠,可能是因為走了一天有點疲累。

這段路只能說人煙稀少,感覺很像深夜的內湖科學園區,只剩下三三兩兩加班的工程師那種景象,我們實在很懷疑自己正走在東京都內,時不時打開地圖確認自己沒有走到荒郊野外,直到最後過了一個轉彎看見品川駅,才確信自己真正在「鬧區」裡面。同一時間,台北市隨便挑個地方人都比較多。




October 12, 2014

2014 東京自由行 Day 2

No comments:
第二天的行程是小說或日劇裡面上司要跟屬下偷情都要去的箱根。Day 2 的照片在此


這份木質拼圖,是買來要送給外甥女的禮物。今日的行程就是從新宿搭上浪漫特快號到箱根車站,然後沿著拼圖上面的行程逆時鐘玩一圈。不過上面許多景點無法在一日內全數遊覽,所以我們也跳過不少景點,也許以後還有機會再玩一遍。

:在新宿車站拿票的時候,也拿了一本箱根的乘車時刻表,從纜車、海盜船到巴士都有,相當詳盡也寫得很好,對於規劃時間非常有用。

出發前







從品川車站先坐到新宿站解決早餐。久聞日本通勤電車的可怕,但是早上八點半的品川車站,以及九點的新宿車站,人潮都比我想像中還要少。總覺得台北捷運站裡面還要擁擠許多,不知道是時間不對,還是地點不對。

 小田急浪漫特快


從新宿搭乘小田急浪漫特快前往偷情聖地箱根。老婆很厲害地搶到了第二排的座位,第一排被帶著小孩出來玩的爸爸搶光了,親子的力量真是不容小覷啊
對於小孩來說,坐在第一排實在爽翻了,一直會有自己在駕駛的錯覺,兩旁的風景也相當美麗。每次經過平交道都會聽見鳴笛聲,小孩會用很可愛的聲音問他爸爸:「どうしで Bu」(為什麼會叭?),老爸就會很認真地詳細回答他 XD

究竟,駕駛座在哪裡呢?我們直到回程才知道



就在我們頭上,而且車長還要很辛苦地拉下梯子鑽進去 XD
回程給我們坐到了第一排,看到的景色就是這樣!

箱根

登山車

纜車

海盜船

其實就是一直更換交通工具。這一段的旅程相當漂亮,而我覺得這種美還是要自己走一遍才能真正體會,可惜我不是什麼厲害的寫手,也懶得仔細描寫風景,就讓我含混跳過吧。

真要說什麼,可以深刻感覺到日本人在規劃給觀光客的旅遊行程非常用心仔細,比起來台灣的經營方式實際上只是提供拍照跟買小吃的地點而已。

另外就是,海賊船的最後航班時間要注意。回到強羅的巴士路線也很漂亮,不敢時間的話可以挑個繞路比較多的路線 XD

箱根溫泉

回到箱根站之後,距離回程還有兩三個小時,我們有相當充裕的時間找晚餐吃。於是就開始在溫泉區散步




這裡的貓比京都少, 遠遠看到和服妹當然要拍一下,這樣才有來泡溫泉的感覺嘛!恰好這段時間是東京的花火節,我們回到市區後也看到不少穿和服的女孩 :D



在溫泉旅館區之中尋幽探訪,找尋我們想要吃的蕎麥麵店,找到店門口沒想到寫著「本日公休」。好險那間是分店,在溫泉區的入口找到はつ花本店



生蛋配上湯麵,對我來說是個全新的體驗,攪散蛋黃以後,湯汁的口感變得比較滑膩,每口都帶著蛋香,只是我沒那麼愛吃蛋,雖然覺得好吃卻提不起熱情。

沒想到另一份蕎麥麵可以這麼好吃。整捆的麵看起來已經打結,實際卻十分容易夾起,麵條細而微帶嚼勁,沾醬清爽自然不必說。最讓我驚訝的是海苔,往往佐佩麵食的海苔都淡得好似跑龍套,但是配進蕎麥麵裡過了一次沾醬,整個香味散發在嘴裡,讓沾醬更顯甘甜。跟麵條截然不同的口感讓人必須正視它的存在,我都想要頒個最佳配角的獎給它了!


啊,半夜寫這個真是折磨自己

October 8, 2014

2014 東京自由行 Day 1

No comments:
好久沒有寫部落格,終於要來寫日本遊記。希望在第三次去日本之前,先補繳一部分。

連結:Day 1 的部份照片

蜜月去了一次關西,自此喜歡去日本旅遊,在這次公司的員工旅遊便選擇了東京自由行,雖說想到這個世界知名的都市看一看,但我跟老婆都不喜歡人多的地方,行程多數安排在市區之外。

這次住的飯店是離品川車站相當近的王子大飯店, 居住的品質普通,空氣不甚流通,房間保有日本一貫的乾淨。值得一提的是,某日晚上看見華航的交通車,載了一整車的華航空姊過來,希望下次還有機會看見 XD

因為我對泡麵與拉麵充滿了愛,老婆安排的行程第一站就是橫濱的日清杯麵博物館,從品川車站搭 JR 到橫濱之後,時間有點晚了,擔心趕不上博物館的閉門時間,隨手招了計程車,意外解除了第一次在日本搭計程車的成就


計程車的門不但可以自動打開,還可以自動關上,比起 Uber 的司機開關門,這種方式讓我比較自在。前後座之間多了一塊透明的壓克力板,不知道是不是防止醉漢乘客的攻擊?(笑)。車費 730 yen,尚可接受。





熱愛泡麵的我,看到滿牆的展示品時,心中充滿了感動!有些泡麵我認得,更多我從來不知道,真希望每種口味都來嚐一次。



這是館內一個不被注意到的展示品,在泡麵狂的眼裡,這個翻起的弧度完美演示了杯蓋的意象,彷彿可以感受到熱騰騰的蒸氣掀蓋而起。


既然是杯麵博物館,理所當然會介紹一些麵體製程,以及杯麵與生活的結合。


此博物館的重頭戲之一,就是製作自己的杯麵!雖說是自製,其實也很簡單,投下 300Yen 買個空碗,開始彩繪杯碗的外觀 (所以最好事先想想能畫什麼唷!),透過機器把麵體壓進碗中,選擇自己喜歡的配料就大功告成了。


看起來很好吃吧,實際上也很好吃呢!填料的小姐非常盡責,雖然她應該看過無數碗相同的泡麵,還是跟我們說了一聲「かわいね〜」,我覺得我的泡麵真是注入了滿滿的愛啊!


從博物館往外看的景色,日本到處都是美景。

隨後還逛了一下紅磚倉庫。雖說橫濱靠海,卻沒有台灣海邊慣有的潮濕海風,更沒有腥味,走在岸邊的步道上相當愜意。


用過晚餐的迴轉壽司之後,伴著夜景散步來為第一天做結尾。

其實心裡一直納悶怎麼行人很少,感覺就連我家這鄉下地方的人還比較多,後來幾天的經驗也是如此。也許住慣了台灣,可能只剩下中國都市或是香港可以讓我覺得擁擠

August 5, 2014

Javascript 處理 Timezone

No comments:
前陣子處理了一些 timezone 的問題,現在順手紀錄下來,不然我這顆容量只有幾十 mb 的大腦很快就會忘光了。疏誤之處還請鄉親不吝指導

結論

簡單來說,除非是夠新的瀏覽器,否則 無法 純粹用計算 timezone offset 的方式,在 javascript 裡面正確處理時區的問題,除非你透過 moment-timezone.js 這些已經正確處理完 timezone 的 3rd party library。原因在於 timezone offset 會隨著日光節約時間變換

名詞解釋

雖然大家可能都知道了,還是寫一點名詞解釋,看起來似乎比較認真

UTC

世界協調時間/世界標準時間,英文「Coordinated Universal Time」/法文「Temps Universel Cordonné」,也許跟民族自尊這種無法退讓的問題有關,因此折衷簡寫為 UTC。

這是透過原子鐘計算出來的時間,全世界看到的都應該一樣。再藉由 Z (Zulu) 來做調整,好比

Local time

如果 UTC 的時間是 02:03,對於設定 UTC+8 的人來說, local time 是 10:03;對於設定 UTC+9 的人來說, local time 是 11:03

Local offset

各地區透過 Zulu 來得到這個 offset,目的是希望該區的正午十二點恰好是日當正午。

(其實我個人還滿討厭這件事情,既然「12:00 等於中午」是人工教育出來的,幹嘛還把全世界的時間搞得那麼複雜。反正我們能不能星際旅行還不知道,在不考慮相對論的前提下,全球用同一個時間有多好)(阿宅的抱怨)

Daylight Saving Time

問題的元兇,日光節約時間,又稱夏時制。尤其在高緯度地區,夏天的日出時間跟冬天有不少落差,為了鼓勵大家多當晨型人吸收多點紫外線,用非常人工的方式強制在某幾個月內撥快時鐘。

(其實我很想要收集七顆龍珠,向神龍許願回到過去把提出這個概念的人毒打一頓)
(直接許願日光節約時間消失不是更好?)
(好像乾脆許願 IE 全部消失最好)

問題

其實問題可以用很簡單的例子來演示,因為我是臺灣人,假設我人在台北,打開瀏覽器裡面的時區就是 Asia/Taipei +08:00
  • 請問你看文章的當下,日本時間是什麼?
  • 請問你看文章的當下,紐約時間是什麼?
  • 請問你的時間是 2014/04/01 13:00:00,當時日本的時間是什麼?
  • 請問你的時間是 2014/12/01 13:00:00,當時日本的時間是什麼?
  • 請問你的時間是 2014/04/01 13:00:00,當時紐約的時間是什麼?
  • 請問你的時間是 2014/12/01 13:00:00,當時紐約的時間是什麼?
因為 browse 裡面的 Date 物件處理的都是 local time,所以你產生 Date 物件再吐出 String 的時候都會看見 +08:00。而且這些問題都沒有辦法透過簡單的查表計算,好比說「喔!日本是 UTC+9,所以我把電腦裡面的時間再加 3600 秒就可以了嘛」

因為那張表是浮動而非固定的。原因就是討厭的日光節約時間

對臺灣人來說日光節約時間可能很陌生而得到,「這種鬼東西可以不用鳥它啦」的結論,我一開始也是這麼想。可是一查才知道,美國紐約在 2014/03/09 就有實施日光節約時間,持續到 2014/11/2。

2014 年耶!紐約耶!

如果是火奴魯魯或是南極洲這種你可能一輩子都遇不上來自那裡的客戶地方就算了,如果連紐約最近的時間都無法正確處理可說不過去。

理解日光節約時間的行為,可以看這個 Time changes for USA

在實施日光節約時間以前,現在時間是紐約的凌晨 01:59:58
五秒過後,現在時間變成了 03:00:03,中間有一個小時不見了!

用 Linux 的宅友,可以用指令 tzselect 找出某地區的 timezone 字串,然後塞入變數 TZ 來執行 chrome
$ TZ='America/New_York' chrome

這樣就能偽裝成你去美國紐約玩,沒錢出國的時候不失為一個望梅止渴的旅行法。此時從 console 測試可以看見這些結果

new Date(Date.UTC(2014, 2, 9, 06, 01, 0, 0)).toString()
"Sun Mar 09 2014 01:01:00 GMT-0500 (EST)"

new Date(Date.UTC(2014, 2, 9, 06, 59, 0, 0)).toString()
"Sun Mar 09 2014 01:59:00 GMT-0500 (EST)"

new Date(Date.UTC(2014, 2, 9, 07, 00, 0, 0)).toString()
"Sun Mar 09 2014 03:00:00 GMT-0400 (EDT)"
直接跳到三點了!,無法顯示 02:00:00 ~02:59:59

同一年在 11/02 的時候紐約結束實施日光節約時間,因此那一天會有同一時間出現兩次的奇景

new Date(Date.UTC(2014, 10, 2, 04, 1, 0, 0)).toString()
"Sun Nov 02 2014 00:01:00 GMT-0400 (EDT)"

new Date(Date.UTC(2014, 10, 2, 05, 1, 0, 0)).toString()
"Sun Nov 02 2014 01:01:00 GMT-0400 (EDT)"

new Date(Date.UTC(2014, 10, 2, 06, 1, 0, 0)).toString()
"Sun Nov 02 2014 01:01:00 GMT-0500 (EST)"

雖說 01:01 會出現兩次,細看便知一個在 EDT(Estern Daylight Time) 一個在 EST (Estern Standard Time)。一個在 -0400 一個在 -0500

這就是問題所在。要把某一筆時間顯示為某區的 local time 時,你如果不知道該地區當時是否有實施日光節約時間,所以你不會知道 offset 該是多少,也因此無法計算。

而日光節約時間,比我一開始想像還要常見得多,因此無法假裝不存在而不處理。台灣也有實施過日光節約時間,鴨七有相當詳細的台灣日光節約時間之考據

解法

後來 Date object 有一個 method Date.toLocaleString,可以指定 timezone。不過捲到相容性那邊,看見要 IE11 才開始支援,希望我兒子開始學寫程式的時候已經可以放心使用這個 method

最簡單的就是拿 moment.js 來用,加上 moment-timezone.js 之後就擁有處理時區的能力。即便如此,還是要下載一大包的 data,內含各地區的日光節約時間資料,這三者加在一起才能正常運作。當然也不用每個地區都抓,你的產品有支援的地區包進去就好了。即便如此我還是隨隨便便就超過 100K 了 (淚)

August 4, 2014

犯傻找不到 てまりのおうち手鞠之家 - 東京自由行

No comments:
寫這篇其實只是小小的提醒,希望想去貓咪咖啡(Cat Cafe) てまりのおうち(手鞠之家) 的朋友不會跟我一樣犯傻

這次旅遊(2014/07/23)去東京以前,朋友丟了這篇 【日本東京】貓奴必看!森林般的吉祥寺貓咪咖啡-てまりのおうち(手鞠之家) 的連結過來,雖然我不是貓奴,因為家裡有隻很像狗的變態 虎斑貓,恰好我也要去吉祥寺那邊,就順道把這間店排進行程。

按照 Google Map 的指示走到那邊,看見咖啡店無限期休息的告示,心中吶喊一聲「這種店怎麼可能會收!」只好摸摸鼻子離開,直到前天我才發現我走錯地方。

首先,看看 Cat Cafe 的官方網站,寫明地址是 東京都武藏野市吉祥寺本町 2-13-14 3F


從 Google Map 來看相當近,事實上也真的很近,過兩個街口就到了。憑著人體導航的經驗,抓準方向直衝過去看見了門口貼上這張


雖然我只會日文五十音,但是看漢字也猜得出來
  • 這是咖啡店的公告
  • 這間咖啡店休業中,還不知道什麼時候會再開
但我直到前兩天才發現「唔....名字好像不太對」(出發前沒時間規劃行程,全部丟給老婆弄,所以我都沒認真看店名 XD)

原來.........


我走到了紅色箭頭的地方(以為那邊是路口),歇業那間叫做エコー咖啡店,但是貓咪咖啡店的入口在綠色箭頭進去三樓,就在旁邊而已....

就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已就在旁邊而已

好吧,反正就是我犯傻了,希望其他朋友不會跟我一樣笨 XD

April 12, 2014

g0v 是塊大草坪

No comments:
2019 Update: 隔了好多年,g0v 的組成與社群結構不斷地在變化,所以這篇文章講的東西跟現在很不一樣了。參考 PM5 說的:「這幾次參加 #g0v 黑客松,又開始覺得有些深層的社群結構跟一兩年前不太一樣了。這 6 年多來大概每 1~2 年就會覺得社群有些重大的深層運作機制變化


「沒有人可以代表 g0v」「g0v 是一個社群」,初次接觸 g0v 的人經常聽見這兩句話,也經常摸不著頭緒。

就我一位偶爾送點 patch,參加黑客松吃東西的阿宅工程師,也來說說我的想像,看看能否用譬喻的方式,提供一個理解的路徑。

modified by walkingice from https://www.flickr.com/photos/grahamking/3751576906. License: CC By-Nc-Sa
g0v 就像一塊大草坪,聚集著好幾群的人


在我的想像裡,g0v 是一塊大草坪,是一塊沒有圍牆的大草坪。草坪上插著一塊告示牌寫著 g0v 的宣言。因為草坪沒有圍牆,任何一位認同理念的人都可以隨時走進來,也可以隨時走出去。

虛擬世界的草坪是無限寬廣,任何人也可以另外找一塊草坪,寫上自己認同的宣言,邀請朋友進去同樂。

這塊草坪上的人是怎麼活動的呢?他們就像日本人賞櫻那樣,拉開席墊大家就各自坐下開始聊天,各自有其小群體。群體之間可能相互有交集,也可能沒有。對應到現實情況,就是不同的專案會吸引到不同的參與者。

有些人會抱怨:「怎麼沒有人理我」。試想,當你走進這塊大草地,大家在原本的席墊上聊得很開心,有多少人會注意到你呢?

當然,你如果帥到掉渣、美得冒泡,現實生活就是個響叮噹的人物,走進草地大家一定會圍著你多聊兩句。

在 g0v 你可以隨時開一個專案,拉開一個席墊。至於會不會有人進來坐,其實是要靠你自己爭取。不少人喜歡獨自坐著,準備自己的佳餚,默默地一句話都沒說,只是把蓋子掀開,香味就吸引了大批鄉民。

在這塊草地上,沒有人可以號令任何人,無趣的事情就算拿著大聲公拼命重複喊也無濟於事。

這是一塊大草坪,人們來來去去,你可以找到一些待得久的熟面孔,聽他們講述歷史,但是你找不到草坪上所有人的代表 (光是「草坪上的人數」都難以定義,人群是流動的)。

當你對著草坪上的人大喊:「負責人是誰?我有話想說」你只會發現大家疑惑的看著你,臉上寫著「你在說啥啊?」

這塊草坪上的人,樂於動手解決問題,支持言論自由,相信公開透明的力量。不只是寫程式,其他的藝術、文學、音樂、電影.....只要願意用開源的模式鼓勵大家參與,都可以進到草坪上一起同樂。

這是我對 g0v 的想像,一塊歡樂的大草坪。



延伸閱讀:開幹開團到開源:前往 g0v 的奇幻旅程