6 months ago

話說自從有了 Google Flights 這個大家大家一致推崇的查詢機票工具後,我就常常在上面流連,幻想著下次回台灣的路上可以順路去哪裡。其實台北跟舊金山之間隔著的,除了一片太平洋之外什麼也沒有,少數可以「路過」的地方,大概就只有東京了。
以前對東京的印象一直停留在出差搭達美航空,一定要到 NRT 轉機一下;直到 2013 稍有積蓄,才買了香草航空的機票到東京自助旅行一番。上次的亮點大概就是三鷹博物館還有 HERO 的片頭的那個公園,而最大的遺憾大概就是去的那幾天築地市場都公休,沒有機會進去參觀。後來一直有築地市場要搬遷的傳聞,甚至一度確定要在 2016 年的年底搬走,讓我這個從小就喜歡看將太的壽司的朝聖者,說什麼也一定要在搬走之前親眼看一次築地市場。於是就趁著暑假累積了不少研究進度之後,向老闆請假兩週,並且規劃在回程的路上中停東京大約48小時包含兩個半天以及中間的一個整天。

Day 1

在台北停留的日子,大部分都在下雨;想不到到了東京,還是在下雨。不過至少東京涼爽多了。

這次來東京,仗著自己以前有來過,所以完全沒做任何準備。嗯,真的沒有,連任何 Google 都沒做,更更沒有看林氏璧。下了飛機後,就隨便買了上網用的 SIM 卡,然後憑印象找到了京成電鐵買了 48 小時票跟進出城的 Sky Liner 車票。

選擇搭京成電鐵的原因很簡單,因為我這次就住在上野車站的門口,而 Sky Liner 的出發與終點站就是上野。

果然下了火車,往不忍池出口走,出口走,過馬路就到飯店了,從出閘門開始算,可能只花了兩分鐘吧。雨傘才剛打開就又收起來了。
雖然從台北飛東京的行程不長,但是畢竟一早就起床,實在有點累,所以在旅館裡面耍廢了一陣子,等到快天黑了,才趕快下了決定:到旅館旁邊的不忍池晃晃順便抓鯉魚王。

上圖中右邊數起第六棟高樓,黑色的建築就是我住的 APA Hotel,真的就在不忍池旁邊。但是我居然沒有住到面湖,還住到建築的四面中唯一面對隔壁建築的那一面,不知道該說是人品不好,還是是住單人間沒人權@@同樣都是住單人間,上次去京都的時候救住到可以看到京都車站跟新幹線軌道的房間啊@@

拿出珍藏已久的幸運蛋,開始漫長的鯉魚王捕捉之旅。我不得不說,在那個時候,玩 Pokemon Go真的是全民運動——在日本也是如此。不時就會看到拿著雷達的人往某個地方衝刺,接著你就會看到後面有一團人也跟著衝。上次看到這個場景其實不就是幾天前,在新竹的南寮漁港。

好不容易把不忍池走完一圈,是該去吃飯了。但是在吃飯之前,好像得先做點什麼觀光客該做的事吧。不如去看看晚上的天空樹吧!

我想大家都會同意,在吾妻橋頭看著三多利的「啤酒泡」跟天空樹雖然老梗,但是還是挺經典的。上次來的時候我用走的從淺草寺走到天空樹,還在路上吃了松屋;這次想要節省時間,就搭了地鐵直接搭到天空樹下。想起以前林氏璧說他並不推薦上天空樹,但是作為一個打算總有一天完成我的「廢物旅遊指南」的廢物部落客,還是得親自去搞清楚是怎麼一回事。於是我就加入了排隊的隊伍準備要上去啦!

看到橘色的「巨人隊」一時有點沒有意會過來,還想說怎麼舊金山的巨人隊紅到東京來了XD

因為這次的行程只是路過,所以就沒帶相機了,拿手機隨手拍一下意思意思。

然後有人會問要不要再另外買票「更上一層」,我會說當然不要。

搭地鐵回淺草,第一件事情就是去吃拉麵啦!這時候已經不早了,我想應該也不用排隊了;但是可能也是因為不用排隊,所以找了好久才找到這家隱藏在地底下的一蘭。一進去之後馬上就被帶到令人非常自在的個人用餐區,替玉、啤酒全部點,都點!

點替玉是一定要的。

把湯喝完也是一定要的。

Day 2

選擇住上野當然不是為了要玩 Pokemon Go——我當初訂房的時候這東西可還沒有問世。其實一方面是搭 Sky Liner 方面,一方面也是鎖定了可以不用換車直達築地市場這點。於是,吃早餐啦!

吃完「早餐」,再逛一下場外市場,就到了十點市場開放公共參觀的時間啦!總算,我即將踏入這個我從小就在小小的漫畫書裡面認識的世界,亞洲甚至是世界上最大的魚貨批發市場——築地市場。

不知道為什麼我對築地市場的想像,一直停留在 Clean Bandit 的 Rather Be MV中的畫面,也好像是因為如此,也忍不住拍了很多自己以為看起來很像 Rather Be 的畫面。其實並沒有。

此行除了朝聖築地市場之外,還有一個重要的目的:買菜刀!有次包丁在京都、東京各有一家店,雖然關於兩家的關係,網路上有很多不同的說法,不過就我來看,築地的這家有次,顯然是跟京都錦市場裡面的有次有著非常不一樣的氣質。

不要問我為什麼,總之我買了菜刀。但是匆忙間,居然忘了請店家幫我刻名字了。算了,低調一點好了。

看完市場,買了菜刀,又該找吃的了。其實在這之前我還去逛了 LOFT,採購一大堆文具,不過總之中午就是要吃午餐,於是便隨手 Google ,找了非常受歡迎的銀座名店,發現不用排隊立刻就衝去吃了。是的,你沒看錯,這不但是白湯,而且上面的肉不是叉燒,而是雞肉。我愛死了。榮登我的最愛第一名,沒有之一。

吃飽了之後,繼續旅行。接著是我一直很想搭的單軌電車百合海鷗,而目的地,當然就是台場啦!

來到台場,行程自然就是很老梗地拜訪鋼彈跟自由女神。話說這個自由女神其實大有來頭,不過我已經寫在每日一冷了,大家自己去看吧XD

又捕捉了不少鯉魚王後,接著要前往完全在東京的另一頭的池袋,跟以前來欣的同學A子吃飯。因為早到了,所以就跑去逛了位在池袋太陽城的神奇寶貝中心。雖然叫做神奇寶貝中心,但是其實我覺得,根本就是,嗯,皮卡丘中心。

吃完飯後又去逛了池袋的 Loft,畢竟來日本就是要買文具啊!最後買了A子推薦的蛋塔,結束肥胖的一天。

Day 3

肥胖的一天的隔天要做什麼?當然是再度跑去築地吃早餐啊!

吃完早餐後老實說不知道要去哪,於是就假裝自己在玩大富翁,擲骰子!最後決定去表參道。參觀了一直很想去朝聖的安藤忠雄表參道 Hills,接著又在雨中走一小段路,去森大樓拍了蜘蛛後就閃人了。

森大樓。

回到上野,吃完午餐就得趕火車回 NRT 了。當時的我不知道我一直很想吃的炸牛排其實就在上野,所以就找了一家看起來很厲害的黑色拉麵,快速解決一餐。

拍下了經典的阿美橫町,便跳上 Sky Liner,結束了短暫的東京路過之旅。

旅行日期: 2016/9/11-13
以上遊記關於景點之評論純屬個人意見,且無法保證任何旅遊資訊之時效或正確性。

 
12 months ago

考完了筆試,當場就可以拿到一個 permit,上面會有一個字母+數字的編號,這個編號很重要,不但預約路考會用到它,以後拿到駕照之後,駕照編號也是一樣的號碼。
還沒考筆試的同學,請閱讀拙作美國加州考照指南:筆試篇

事前準備

個人認為就算你在台灣或者在美國開車經驗再多,也不可忽略熟悉考場這一層。理想的練習方式是找一位已經有駕照的朋友(最好是車主)陪你一起練,由他看著地圖給你指示,你負責開車並照做。下面提供幾個我比較熟悉的考場的模擬路線圖,都是網路上的網友提供的,可以用 Google Maps app 開啟這些連結,即時把路線疊在地圖上。

Los Gatos

距離 Stanford 約半小時車程,是個悠閒的小城市,市中心非常迷你,附近有非常漂亮的湖泊遊憩區。就我個人來說,這是我練到最熟的考場,畢竟我本來打算在這邊考,所以各種模擬路線都練得很熟。我的個人意見是這裡的確是個理想的考場,不但路上行人少、車流少,DMV 內的人也不多,無論是等待報到或報到後的等候時間都比較短。真的要說有缺點的話,就是因為太郊區了,所以比較會出現穿越馬路(jaywalk)的行人,要多加留意。此外 DMV 本身的停車場出乎意料地小,常常會有找不到車位的窘境,務必提早抵達,以防突發狀況。

  • 路線1:有點短,但是該考的檢定項目應該都有考到,地圖上有標記左轉或右轉,所以可以看得出行進方向
  • 路線2:中規中矩的路線,走完大概20分鐘,而且地圖上有非常詳細的註解

Santa Clara

Santa Clara 是 Los Gatos 之外我也很熟悉的考場。不光是因為這裡是我最後考過的地方,也是因為我帶學弟來這邊練過非常多次,對周遭我已經熟到不用看地圖就可以直接出各種考題給他了。話雖然如此,我仍然認為 Santa Clara 是非常高難度的考場。這週遭涵蓋了商業區、住宅區;有超大型馬路如 El Camino Real,也有會有鴨子過馬路的悠閒住宅區道路;此外還有非常複雜的單向道路以及腳踏車專用道,幾乎所有我能想到的難題,這邊都出現了。
此外 Santa Clara 要排隊考路考的人非常多,報到之後幾乎一整天就耗在這了。

Santa Clara 的考區綜合了大馬路、商業區與住宅區,非常高難度

  • 路線1、2、3:三條都非常真實,難度都差不多。不過路線並未標明方向,看的時候要注意,都是以順時針為原則(右轉為主),尤其紅色那條路線,如果方向開反是不通的。

Red Wood City

商業區型考場,目前情報不足。唯一的印象是 DMV 內的洽公民眾非常多,辦事效率很慢(好像也不用很意外)。

Fremont

帶朋友來考過一次,完全不知道怎麼形容這個考區。路很大、車很少。只能說東灣的風景真的跟矽谷很不一樣。

參考影片

如果考路考前只能看一個影片,我會強烈建議看這個。不同於其他人考過的影片是類似行車記錄器(dash cam)的視角,這個影片裝置攝影機的地方是可以拍到駕駛座的角度,因次你可以完整看到考生跟考官的互動。我覺得跟實際的情景差不多,非常執得參考。此外看完這個影片你就可以明白為什麼他可以考過(而你不行?XD),因為他真的每個動作都做得很到位,該看的都有看。

https://www.youtube.com/watch?v=pec-vRDZi8A

如果還有時間,請把下面這個非常老舊的加州 DMV 官方影片看完。我覺得看這個影片(或者熟讀筆試教材)很重要,因為很多人考了很多次,卻從來不明白自己為何會失敗,或者在路考時遇到了簡單的狀況,卻不曉得最佳的處置方式是什麼——其實這些在官方教材裡面往往都有很明確的指示告訴你該怎麼做。

https://www.youtube.com/watch?v=J687gFsqWx8

考試前文件準備

考試前一週請務必開始檢查應考所需要的文件。除了應考者本身要準備先前筆試通過後拿到的 permit 之外,依照車子來源的不同,尚需準備以下文件:

自己的車或朋友的車

如果是使用自己或朋友的車,或認識的人的車,要準備車子的註冊證明跟保險卡。此外陪同你一起應考的加州駕照持有者,要把駕照帶著以備查驗。

Zipcar

Zipcar 的政策明確說明,他們非常歡迎 Zipcar 會員使用他們的車子去應考路考。請在應試至少兩週前先預約好路考當天要用的車子,然後預約後就趕快打電話給客服,跟他說明你要使用哪一台車子去考試,他們會寄一封信還有車子的保險文件給你。如果不幸當次沒過,之後再重考可以重複使用這些文件,不需要重新報備。

其他租車公司

如果是跟其他租車公司租車,請先確認該公司是否同意你開他們的車去考試。如果同意的話,同樣要請他們開立一封信函,表明他們同意你開他們的車去考試,也同樣要請他們準備保險文件給你。

DMV 提供的報到文件檢查表

考試當天

建議考試當天的規劃如下:盡量預約早上,因為最下午越有可能會等越久。比預計的報到時間早 15~20 分鐘到 DMV 後,約報到時間前 5 分鐘可以準備去報到櫃檯排隊。報到時陪同你到 DMV 的人一定要在場,他必須要一直陪同你直到交接給考官為止。報到櫃檯會檢驗所有必須要攜帶的文件,之後就會告知你可以去準備區準備了。

報到後就可以回到車上發到車子,把車子開到排隊區。此時考生是可以坐在駕駛座上的,陪同你考試的人只要坐在副駕駛座陪你排隊就好。一直到排到出發區之後,考官接手之後陪同考試的人就可以去找地方發呆或喝咖啡了。

一般 DMV 都會有兩個車道,不要排錯了

一開始考官不會馬上進到車內,會在車外要求你做一些基本的車輛操作,例如燈號、車燈控制、喇叭、手勢等等。準備就緒後他就會坐進車內要求你開車出發。

一開始考官會在車外發號司令

上路後的檢定項目包含變換車道(數次)、號誌(protected)與無號誌(unprotected)右轉、左轉、路邊停車等等,全程都需要注意路況動向,並不是永遠保持在最高速就是對的;但是如果路況順暢,請盡量開在速限上(也就是時速指針接近速限或者剛好在速限上)。

路邊停車這個項目,我覺得一定要多多加練習,尤其最好找知道這個項目怎麼考的人陪你一起練習,幫你看你的動作順不順暢,間距對不對。

如果一切順利,考官會引導你開回 DMV,並要求你停在路考結束專用的停車格內。熄火拉煞車之後,考官會開始計算分數,並且鄭重地宣布考試結果。如果不幸沒有考過,可以虛心問考官如何改進。如果幸運通過,考官就會把考試成績單給你,告訴你可以去哪個櫃檯回報成績(沒考過就不用回去了);這時候可以暫時把車子繼續停在路考結束停車格,辦完手續再開走即可。

路考結束專用車位

希望這些資訊對大家有幫助,祝大家路考順利!

最後分享我認為路考一次成功的秘訣:

  • 不要只是會開車,要熟悉加州式的開車。無論你之前會不會開車,你很有可能會把一些不良或者不合加州文化的開車習慣帶過來,請務必找知道正確開法的人陪你一起練習,並且糾正錯誤的開車習慣

  • 一定要到考場實際練習過,熟悉周邊的環境,最好實際演練模擬考試路線

  • 這是我認為最最重要的:不要只是練習開車,也要重新熟讀書面教材,還有觀看加州 DMV 的教學錄影帶。很多人考了很多次一直沒過,卻始終不知道自己沒有過的原因。或者平常開車時(或考試時)遇到很簡單的狀況,卻不知道怎麼做才是正確的。這些教材都會教你。

 
12 months ago

以下分享的是我去年夏天剛到灣區時,去 San Jose 的 Driver License Processing Center 考筆試的經過。請注意,週六只有少數的 DLPC (專門只辦駕照的DMV辦公室)有開,而且也比較有機會預約到較近的日期;如果是附近的 DMV 可能即使是平常日也要等一陣子才有預約的空檔。因此我個人蠻推薦矽谷區的朋友去 San Jose 的 DLPC考照的,不但週六有開,也比較容易約到。

已經通過筆試的朋友,可參考拙作路考篇

DLPC 週末也有開,辦事效率也比較高

筆試準備

個人建議,考古題跟教材各看過兩次,就可以去考了。考古題跟教材都是中文的,考試也可以拿繁體中文的考卷。除非你真的很想挑戰自我,否則建議不用庸人自擾,就大方地拿中文考卷吧,節省時間,省下來的時間可以做更多有意義的事情。

考古題

首先請先把這裡的考古題全部看完一次。看完之後你應該會有兩種疑問:

  • 為什麼是這樣??

  • 答案錯了吧??

因此看完之後,請先不要死背答案,請看教材。

教材

這份教材不但是中文的,而且是加州DMV官方發行的,寫的也不錯,無論如何也請至少全部掃瞄過一遍,不要完全都不看。看完考古題後看教材特別有用,因為可以回答心底很多疑惑。同時教材中講的很多事情,也是實際上路考時會遇到的狀況,上面都會跟你講標準的處理作為。如果你不照著做,輕則被扣分,重則當場被要求開回DMV,直接結束考試。

再說一次,請一定要看教材。不要不看,到時候考完路考,又哭著說不懂為何自己沒考過。

文件準備

即使是去 DLPC,也建議要預約。沒有預約的下場,就是排隊排到崩潰。只要有姓名跟電話就可以預約,不需要有地址跟SSN等。
預約的網址在這邊: https://www.dmv.ca.gov/wasapp/foa/clear.do?goTo=officeVisit
如果只有要考照,記得選 1 item 即可。如果跟朋友一起去,也可以選 2 items然後一起報到,不過我還是建議各自預約會比較好。

那麼當天需要準備什麼呢?

  1. 台灣護照
  2. 眼鏡或者隱形眼鏡
  3. 化妝或者先整理好服裝儀容(筆試當天就會先拍照,這張駕照會跟著你很長一段時間的)
  4. I-20 (若非學生則準備與你入境身份相關的文件)
  5. I-94紀錄
  6. I-94紀錄
  7. I-94紀錄 第四點很重要所以打三次。現在搭飛機入境已經不會有紙本 I-94小卡了,所以請務必上網把你的 I-94 記錄列印下來。 I-94可以在這裡列印,請準備護照編號、生日、英文姓名等資訊。

關於 SSN,網路上很多人說法不一,但是我的實際經驗是現在的申請表單上已經可以明白申報我沒有SSN,承辦人員不會刁難。我們學校的國際學生中心建議,如果預期自己很快就會拿到 SSN ,就等拿到 SSN 再去考筆試。不過後來的經驗證實,沒有SSN也可以考筆試,而如果事後拿到 SSN 了,可以在考路考當天報到時,跟櫃檯提出更新資訊的要求。

筆試當天

OK,所以以我當天去的 San Jose DLPC 來說,實際流程如下:

  • 一進大門就分流,告訴接待人員你是有 appointment 的,他會給你一張申請表,要你去旁邊填寫。

  • 填寫過程中你可能會需要計算機,算一下你的身高體重怎麼用英制表示。表單上會問你你的眼睛顏色,沒意外的話我們應該都是 BROWN

  • 填好之後就到旁邊的櫃檯做第一關的審查。(有點像AIT的文件檢查點)他會看你有沒有護照+預約單+I20+I94,如果有缺的話就會在這一關被打槍,GG。

  • 如果前面關卡過關,就會給你一張號碼牌,要你去中央的座位等待叫號。

  • 叫到號碼之後,就到指定的櫃檯,把全部的資料呈遞給承辦人,接下來就是大概罰站10分鐘看承辦人的各種承辦就好。等到弄到差不多之後,會叫你看他身後的視力測試表,叫你把第某行的英文字母念出來。念對之後會叫你自己用手分別遮左眼和右眼,測試單眼視力。基本上這個測試非常簡單,四眼田雞如我就算站在三倍距離都看得到。

  • 最後承辦人員會要你付款33美元規費,可用「非晶片」信用卡、debit卡或現金。

  • 繳完錢後,接著就直接去照相站照相,照完之後就可以領題目考卷了。在這個時間點記得跟櫃檯人員說你要中文題目。

  • 領到題目之後,就到一個座位區自己作答。

  • 做好之後,就自己走到 correction 櫃檯,請他們批改考卷。錯六題以內,他就會當場核發 permit 給你,並且跟你強調必須要有 California lincensed driver 在車上你才可以開車。

完成筆試後,就可以開始準備路考了。

 
over 1 year ago

相信大家或多或少都聽過別人在討論哩程積點,或者最最起碼,聽過別人在說要辦哪一張信用卡比較好。
其實點數旅行最重要的精神就在於,並不是要靠多搭飛機來累積哩程,而是要選一張正確的信用卡,然後在平常生活中賺進點數或哩程,再來享受旅行。
當然,我也不是本來就知道這些,也是靠大量、持續的閱讀(幾乎每天都有新的情報和最新的分享可以看),才逐漸了解一點點,然後再加上自己實際上的操作或者實驗,才又感覺好像離這個殿堂更近一些。

以下是一有更新我一定會閱讀的部落格,當然,也幾乎就是全部的繁體中文資源了。有趣的是,雖然這些部落格的格主雖然都是台灣人,但是他們好像幾乎都住在北加州XD

研究生的點數旅行筆記

老牌的哩程點數旅行部落格,作者「研究生」曾經在日本工作,後來到北加州讀書,最近拿到博士學位之後繼續留在灣區工作。這是我最早開始看的點數旅行部落格,也是我的哩程觀念的啟蒙老師。雖然只有研究生一個人獨挑大樑,但是卻是難得信用卡、哩程、飯店等等,面面俱到的全方位寫手。當然也許因為只有一個人寫的關係,心得文更新比較不像下面的 Trip+ 那麼頻繁,但是文章依然是非常的生火,意圖使人想旅行。
也許因為是經營較早,文章較多,精華文章自然比較不容易突出,也比較難了解格主分類的邏輯。我個人會推薦在美國的留學生從這篇2015 美國信用卡選擇指南及其系列文章開始讀起;住在台灣的朋友也不用難過,研究生雖然長期住在美國,但是台灣的讀者也有注意到,所以也有整理2015 台灣航空公司聯名信用卡選擇指南,兩篇的分析都非常犀利,值得一讀再讀。
或許因為作者是研究生的關係(其實現在已經畢業了),所以文章比較有學術味道,有時候連我也看不太懂XD,不過當進入這個世界比較久以後,再回去重讀,才會發現自己其實什麼都不懂,人家才是真正的高手XD。

Trip+

由「萊恩」跟「不來弟」兩人共同主持的 Trip+ 雖然是四個繁體中文部落格中最年輕的,但是卻也是四者之中「目前」最活躍的,不但幾乎每天都有更新,新手教學也正在熱騰騰地連載當中,而且他們所主持的Facebook社團北美華人哩程交流討論更是熱絡,也是幾乎每天都有熱騰騰的網友分享,每每讓人看了之後不是毒發身亡,就是小朋友出走。
個人覺得他們寫的哩程世界終極新手懶人包比我的啟蒙老師「研究生」還要清楚許多,易讀性更高,非常推薦大家閱讀。如果只能推薦一篇文章看的話,我會推薦這篇[信用卡新手文] 美國信用卡簡易入門 – 我該選擇哪張卡來累積哩程給人在美國且有心想要靠信用卡累積哩程的朋友。

Miles Worker

由「紐約長工」和「旅遊駭客」兩人共同主持的部落格。其美國銀行分析與開戶指南新移民/留學生 首年信用分數提升指引是剛到美國的留學生必讀的好文,尤其後者,非常精彩,詳細告訴你從拿到SSN那一刻開始,未來一年該如何做申請信用卡的規劃。不過比起上面兩個部落格,比較缺乏格主實際搭乘頭等艙或商務艙的心得文,比較著重情報面和技術面,尤其是在美國購物的折扣情報,所以喜歡精打細算的人千萬不要錯過。

Mile.點.旅行

低調的點數旅行玩家,但是其實粉絲頁更新非常頻繁;部落格上的文章,每篇都是超多照片的分享文。其實這個部落格開張一陣子了,文章數量也不少,但是可能因為真的很低調,要不是研究生的介紹,我也不會知道有這個站。有趣的是,我第一次讀到這個站的文章,其實跟飛機無關,而是一篇搭乘美鐵的心得Amtrak California Zephyr 點數臥鋪旅行。跟其他站一樣,這邊我也是以欣賞心得文為主,讀技術分析為輔。推薦的文章是這篇里程票新手Q&A,非常白話但又切中要害。

The Point Guy

TPG,美國點數玩家的聖經,也是精神食糧;我相信這也是上述所有部落格格主每天都會造訪的地方。旅遊情報、購物折扣、飛行心得、信用卡選擇,無所不包。唯一缺點就是,是英文的XD,而且主要以美國為中心。

 
about 2 years ago

繼上一篇印出 facebook 活動賓客名單,同場加映一下,這次我們把 EDGE 由活動換成社團,印出全部社團成員,並且隨機排列,給他們一個亂數編號。

原先我的想法是按照賓客的長度創照一個連續自然數陣列,再利用 ruby 內建的 shuffle 洗牌,但是這樣名單印出來就是亂的。例如:

nums = 1..16
nums = nums.to_a.shuffle

後來想到一個更簡單的做法,就是直接把成員名單的順序打亂就好。實作如下:

list_members.rb
# encoding=utf-8 

require 'open-uri'
require 'json'

group_id = '67226335296474'
token = STDIN.read

url = 'https://graph.facebook.com/v2.3/' \
+ group_id + '/members/?fields=name&limit=250'
url = url + '&access_token=' + token

json = open(url)

data_hash = JSON.parse(json.read)

nums = 1..data_hash["data"].size

data = data_hash["data"].shuffle

for t in nums
    datum = data[t-1]
    puts t.to_s + "\t" + datum["name"]
end

執行

ruby get_members.rb < token

其中 token 放有你的 access token。

如此就會印出洗牌過的成員名單,並加上一個照順序印出的編號了。

 
about 2 years ago

上禮拜辦了一個活動,完全用 facebook 的活動 (event)功能邀請賓客;活動前一天我想要印出賓客清單,才發現 facebook 居然沒有把賓客名單匯出成 .csv 的功能..... 我記得以前有啊?

這種時候就只好動用 facebook 強大的 opengraph API了。opengraph 的 EDGE 除了可以是一個人,一個fan page之外,也可以是一個活動。

取得 event 相關資訊前,要在申請 access token 前額外要求要 event 的權限:

話不多說,來看 code:

list_attendees.rb
# encoding=utf-8 

require 'open-uri'
require 'json'

event_id = '1609895432567499'
token = STDIN.read

url = 'https://graph.facebook.com/v2.3/' \
+ event_id + '/attending/?limit=250'
url = url + '&access_token=' + token

json = open(url)
data_hash = JSON.parse(json.read)

data_hash["data"].each do |datum|
    puts datum["name"]
end

執行

ruby list_attendees.rb < token > guests.csv

即可

其中 < token 是利用 standard input 將我放在另一個檔案的 token 吃進來; > guests.csv 就是把列印出來的內容存到csv檔裡面。

同場加映

 
about 2 years ago

事前準備

從決定接下學校的 offer 那一刻起,請為下列事項做準備;除了拍照之外,其他的基本上得照順序來。

提出 I-20 請求

請儘早決定自己要申請 F1 (學生簽證)還是 J1 (交換學者)簽證。如果你已經得到尖端科技人才獎學金或者其他政府的公費,請向學校提出 DS-2019請求,而非 F1;如果你還不知道獎學金有沒有申請到,但是確定該獎學金有要求你要申請 J1 簽證的話,請耐心等結果公佈再向學校申請 I-20 或 DS-2019。

I-20收到之後,除了檢查你的姓名、生日等資料之外,記得確定科系是否正確?國籍和出生地是不是都寫 TAIWAN?接著檢查是不是共有三頁(兩張紙,共三面)。此外可以看一下 I-20 上寫的「報到日期」,有的學校開的報到日期就是開學日,但也有的學校報到日期是所謂的新生訓練日期。這個日期有三重意義:

  • 這一天往前推算 120 天是你最早可以跟 AIT 面試取得 F1 的日期
  • 這一天往前推算 30 天是你最早可以入境美國的日期
  • 你最晚這一天一定要跟學校的國際中心報到,表示你確實有到學校了

請善用這個工具計算日期,不要只是粗算「一個月」「三個月」,以免出錯!

除此之外, I-20 上最最重要的資訊就是第一頁右側條碼上方的 SEVIS 編號,有了這個 N 開頭的號碼,才能進行接下來的步驟。

拍照 (隨時可以做)

前往現在已經非常稀有的照相館,指明要拍美簽的大頭照。美簽大頭照的特徵就是照片是方的,此外不能微笑,這點攝影師應該會提醒你。拍完之後除了紙本照片之外,務必也要取得電子檔,因為下一步申請 DS-160 要上傳;只是實務上來說 AIT 允許你面試那天換新的照片,所以可以在填寫 DS-160 的時候先上傳一張舊的照片也沒關係,用它提供的線上工具裁成方形即可。

總之這一步建議在填寫 DS-160 前做,但是最遲要在前往 AIT 前拿到洗好的照片。

換護照

下面步驟除了填寫 DS-160 之外其他都沒有綁定護照號碼,但是還是建議在填寫 DS-160 前把護照辦/換妥。退伍/免役的男生重辦之後可以得到10年的有效期限;如果你的護照有效期限不是十年,表示你還沒有換過,請務必去換,以免就算短時間內沒有過期,將來在美國期間也會遇到過期,徒增麻煩。

填寫 DS-160 線上表單

相信我,這一步會花你非常久。請把你家人每個人的護照都拿到手,然後把你自己歷年的護照也都找齊,準備好三個小時的空檔慢慢填寫。

網址: https://ceac.state.gov/genniv/

預約面試

填寫完 DS-160 後會拿到一個確認編號,請記好這個編號,因為要有這個編號才能開始 AIT 面試的預約。

網址: http://www.ustraveldocs.com/tw_zh/index.html

第一次使用,需要填寫一些個人資料,始能做預約;之後可以憑同樣的信箱與密碼登入並管理你的預約。開始預約前,請準備好你的 I20,並確定你已經先完成 DS-160 填寫。預約流程進行到一半,會產生一張郵局劃撥單,此時需要把這張印出來並且到郵局臨櫃繳費,才能完成預約。在本文撰寫的此時,這筆費用是 $160,並依照 AIT 公佈的匯率( USD/TWD = 32 )換算為台幣 5120 元。

劃撥完後,在 隔天的下午一點後 AIT 的系統才會刷新,此時可以登錄你的繳費單編號,並完成預約手續。請一定要把預約單印出來,否則到時候你會連 AIT 大門都進不去。選擇面試日期時請一定要記得,必須要晚於 I-20 上揭載日期的120天前。如果你預約的早,系統預設只會出現 7:45 這個選項,待 7:45 額滿,才會再繼續開放 8:00 等選項;所以雖然晚預約可以選到比較不那麼早的時段,但是你同時也會冒整天都被預約完的風險。

繳納 I-901 SEVIS 費用 (拿到 I-20 就可以做)

請注意,這一步只要拿到 I-20 ,知道上面寫的 SEVIS 號碼就可以做了,但是最慢一定要在前往 AIT 面試前 刷卡付費 並且印出收據。

網址: https://www.fmjfee.com/i901fee/desktop/index.jsp?view=desktop

前往面試前

請務必再三確認下列物品是否備齊,確認再確認

一定要帶的

這些東西沒有帶的話,根本無法進AIT,或者會被第一關文件檢查打槍

  • AIT 預約確認單
  • 最新護照
  • 所有有美簽的舊護照
  • 符合美簽規定的方形大頭照一張
  • I-20
  • 郵局繳費收據
  • DS-160 Confirmation
  • SEVIS I-901 Payment Confirmation

上述文件,缺一不可,尤其AIT預約確認單沒帶到,警衛是不會讓你進去的,務必注意!
值得注意的是,現在已經沒有 源訊資料處理費 了,請不用擔心。
實際上有些東西有轉圜餘地,例如如果照片被判不合格,可以當場出 AIT 在附近重拍;如果 I-901 忘記繳,工作人員會叫你出去找網咖或者用手機上網繳掉,他們可以幫你印收據

建議攜帶

下列物品非程序上一定要帶,但是都是有可能會被領事官要求出示的,我依照重要性排列:

  • 健保卡(進入 AIT 保管手機需要押健保卡)
  • CV (寫明你的學歷以及工作經歷,還有研究關鍵字——這很重要,可以少去很多溝通時間)
  • 財力證明 (如果是沒有領 assistantship 或者單純去讀語言學校的情況下,幾乎一定會被問有準備多少錢,這時候財力證明對於能否說服領事官就非常重要了
  • 英文成績單(如果領事官質疑你的英文能力,出示 TOEFL 成績單可能會有幫助)
  • 錄取證明(基本上相對 I-20 來說是多此一舉,但是還是可以帶著)
  • 歷年成績單
  • 大學及研究所文憑

上面烈的建議清單是我彙整我自己學校建議帶的文件跟 AIT 建議的「有利文件」去蕪存菁後的建議事項;其餘如果是你自己認為對你的情況有幫助的,當然都可以帶著,但是至於 paper 應該就不用了,頂多在 CV 上附個著作列表即可。

面試當日

AIT 就在附中正對面,如果是搭捷運的話,最慢要在預約的五分鐘前到達大安站,走3號出口出站,但如果是搭文湖線的話,也可
以走4號出口出站後往左手邊走過馬路,沿著信義路往東邊走。

從大安站往 AIT 的路上有全家和丹提咖啡,太早到的話可以先去坐順便吃早餐,但是路上沒有 7-11,所以如果是當天才要從 iBon 印文件的話記得要更早到,出大安站後往北邊走在大安高工對面很快就有一家。

抵達現場

自從 ESTA 實施之後,現在 AIT 前面大排長龍的景象應該已經不常見了,不過因為進到 AIT 門內要寄物跟掃描行李,所以門外還是會稍微排隊一下。在排隊的過程中警衛會請大家配合三件事情:

  • 出示預約單
  • 手機拿出來關機
  • 準備好健保卡

有趣的是,網路上很少資訊會提醒你要帶健保卡,沒有帶健保卡用其他證件應該也是可以的,總之要押一張證件才能寄手機跟電腦。除了電子類產品之外,其他行李在通過 X 光掃描後是可以帶進去的,所以不用真的以為去 AIT 一定要兩手空空只拿面試文件。

進入 AIT

如同上面所說,進到 AIT 之後第一關是排隊寄手機。因為櫃檯只有一個人,同時還要服務離開要領回的人,所以效率有點不佳。接著通過 X 光掃描,人通過金屬探測門之後就可以進到 AIT 的內部大廳。

文件檢查

進去大廳後就直直走到底,會先到文件檢查的關卡,在這一關工作人員會檢查你是否有下列文件:

  • 郵局劃撥收據
  • 美簽規格照片一張
  • DS-160 確認單
  • I-901 繳費單收據
  • I-20
  • 所有曾經有過美簽的舊護照,以及目前的有效護照

並幫你排列整齊,並把照片貼到 DS-160 確認單上,再用護照夾著。在這關之後,沒有被夾起來的舊護照就可以先收起來了,然後上述之外的面試輔助文件可以另外拿著,才不會混在一起。

資料輸入

完成上一關之後,就會進到「坐著」的排隊區,工作人員會以一排(五個)為單位叫起來去排隊,其他還沒叫到就坐在有編號的椅子上。起身之後就會進到另一個房間,在這邊要陸續經過三個窗口。

第一個出口是資料輸入,在這邊要把剛才文件檢查關卡排列好的文件,依照現場工作人員教的方法遞進去窗口,這一關工作人員不會跟你對話,所以你只要講「你好」跟「謝謝」就好。資料關卡完成後,你的 DS-160 確認單就會被收走 (沒記錯的話是在這關收的)。

採集指紋

離開資料輸入窗口之後馬上就可以排到採集指紋窗口,這一關的承辦人員就會變成美國人了,見到他的第一件事情是把你最新的護照背面貼在窗戶上,讓他掃描。是的,經過文件檢查關卡之後你的護照已經默默地被貼了一張條碼了。接著請依照工作人員的指示陸續

  • 掃描左手四指
  • 掃描右手四指
  • 掃描左右手大拇指

完成後又會進到一個「坐著」的排隊區,等待 被美國人電爆 面談。

面談

等面談的時候最大的 樂趣 大概就是觀察別人跟領事官的對話。眾所皆知這一關是可以講中文的,但是如果你不是要去旅遊、探親、念語言學校的話,就儘量用英文對談吧。我去的那天開了三個窗口,由左至右分別是一個光頭的白人男性,一個(可能是)非裔的女性,還有一個瘦高的白人男性。最後我排到的是最右邊的窗口。一開始是簡單的寒暄。

我: "How are you today?"
官: 'Good. How are you?'
我: "Good!"

以下我還是打中文好了,請吃翻譯蒟蒻!

官:所以你要去XXXXXXXX 念博士?
我:是的
官:你有碩士學位嗎?
我:有的,在台灣念的。
官:你要去念什麼?
我:Electrical Engineering
官:精確來說,念什麼主題呢?
我:Optics and imaging
官:啊,你有帶履歷。可以給我看看你的履歷嗎?
我:沒問題 (把履歷貼在玻璃上)
官:可以遞進來給我沒關係
我:嗯,好 (遞)

官:(手指指著我研究的關鍵字,對著電腦打字)

官:Okay. You are all set! The process should be done in three days.
我:Cool. Thank you! Have a nice day!

去了幾次美國之後,我真心覺得每次聽到 "You are all set" 真的是非常令人感到安心。總之,因為我準備了一份詳細但是「安全」的履歷,所以就這樣過關了。沒有問研究,沒有問 funding。

補充一下,除了一份兩頁的履歷之外,這一天我實際上有多帶但是沒有派上用場的文件有:

  • 正式且含 funding 資訊的錄取 offer
  • 銀行存款證明正本

就這樣。沒了。

最後我講一個我認為面談階段最重要的要點,我想這一點跟在入境美國的時候面對移民官的時候是一樣的: 簡答就好 ,對方問你什麼就回答什麼,不用多講。對方如果覺得你回答得不充分,自然會再繼續問你,否則你自己多講只是讓對方忍不住想問你更多問題而已。

結束

因為之前有來面試過 B1/B2 的經驗,當時的程序是如果成功,護照會被收走,然後要去填快遞單。但是現在已經沒有這個步驟了,面談完後按照動線就是 AIT 的出口了;我為了保險特地還繞回大廳去找快遞窗口,問他要不要填單子?他們說可以走了。於是我就領了手機離開 AIT 。

常見問題

AIT網站上說要帶所有的舊護照去,可是我舊護照很多本,或者有遺失了,怎麼辦?

實務上來說,文件檢查這一關他要求你的會是:請拿出所有曾經有美簽的護照;但是更近一步來說,他們實際上唯一有興趣的是目前還有效用的美簽護照。總之,有貼過美簽的護照都要帶著,但是沒有美簽的就不用帶了。

有人說最好什麼都不要帶,也不要帶手機也不要帶包包,只要帶文件就好?

這麼說實在是太誇張了,甚至有點矯枉過正。我當時看到這樣的說法,還以為唯一能帶的東西就是手上拿著的透明資料夾跟可以塞在口袋裡的錢包跟鑰匙。如果真的那麼麻煩的話那遠地來的申請者怎麼辦?早上上班前順路先來的上班族怎麼辦?

實際上來說,我覺得唯一真的建議不要帶的就是大型的行李箱(警衛可能根本不會讓你帶進門),還有筆記型電腦能不要帶就不要帶。筆電雖然可以比照手機一樣押證件放在置物區,但是會是整台電腦拿出來脫光光放在櫃子上這樣———我想大部份的人都不會想要讓自己的電腦這樣放在置物櫃檯吧——所以除非萬不得已,建議去AIT的時候身上不要帶電腦。

AIT說面試學生簽證要帶成績單跟學位證書正本,真的要帶嗎?

我覺得如果你自己覺得你有可能被AIT的領事官質疑「為什麼要去出國唸書」或者「真的有去美國念的必要嗎」這類的問題的話,證明你有良好的學習能力或者有好的成績是很重要的。除此之外如果是正要去美國念碩班或者博班,我想準備好一張清楚可讀的 CV 才是最重要的。

全程大概要花多久?

我九點準時報到並進去,出來之後打開手機看時間恰好九點半。

I-20 會被收走嗎?

以前好像會收,但是可以確定的是現在不會收了,所以離開 AIT 後請趕快檢查 I-20有沒有在身上,因為這是今天你完成手續後唯一一份仍然非常重要的文件;其他的再印就有了。記得出發當天要帶 I-20,感謝您的閱讀,祝您一切順利!

 
over 2 years ago

最近因為自己經營的粉絲團要辦個抽獎活動,於是就面臨怎麼有效率地把符合資格者的名單列出來的問題。在我的例子裡,符合資格的條件是在有效的時間內,對某篇文章留言。
我想很多商家面對這種事情,一定是花錢請個工讀生或者所謂的「小編」自己把所有的名字複製貼上下來。這樣做不是不好,但是缺點有三

  • 曠日費時,留言者動輒上百人
  • 容易有人工上遺漏
  • 你不確定 facebook 是否有把所有的留言都列出來

而我們身為碼農,怎麼可以讓自己做這種 dirty 的事情呢?用程式來解是一定要的。我第一個想到的方法是抓原始碼,看有沒有結構化的規律,用 regex 來抓就好,因為 Rubular 可以在網頁上解決,就不用 動刀動槍 的了。

但是當你把那一頁存下來之後,你會發現, WTF 根本沒有幾個字是明碼啊。

所以,我放棄了。接著我試著 Google 關鍵字,發現很多人教大家用 FGL 來抓資料。因為我知道 open graph 可以做到我想要做的事情,但是懶得學;但是我會 SQL ,所以看到可以用看起來跟 SQL 長得根本一樣的 FQL 來做,當然是高興的不得了。

但是,人生最厲害的就是這個 but ! FQL 已經停用了。 GG。只好學用 open graph 啦。

使用 open-graph 取得名單

要取得某個粉絲頁(page)特定文章(post)的按讚或者留言者名單,首先你得先知道兩個資訊:

  • 該 page 的 Facebook Page ID
  • 該 post 的 Post ID

首先粉絲頁的 ID 可以在「關於」頁面的最下面找到。

接著 post id 可以用許多方法找到。

這時候我們就用打開 Facebook 的 API explorer 啦!第一次使用必須要先按一下 Get Access Token,隨意勾選一些項目後,就可以授權讀取資料。

接著我們先試著將剛才得到的 Page ID 代入 open graph 的路徑之下:

此時回傳資料會列出這個粉絲頁的一些諸元。接著我們就要試著探索這個粉絲頁下面的貼文。首先可以試試看

1494556507449732/posts

那麼就會列出前幾篇貼文,還有詳細的推文資料等等。其中我們感興趣的是post id,可以在這裡找到:

另外一個可以找到 post id 的地方當然就是貼文的網址啦!

如果是從網址抓來的話,那你要餵給 open graph 的形式就會變成是

1494556507449732_1541869892718393

總之就是用一個底線隔開啦!

接著事情就簡單了,如果你要查的是該貼文按讚的名單,就是

1494556507449732_1541869892718393/likes

如果要查留言的名單,就是

1494556507449732_1541869892718393/comments

最後,如果回傳資料不是全部的話,可以加上 ?limit=100 這樣就可以指定回傳的數量了。

總之就是如果要抓回該篇貼文的按讚名單,我們就是去詢問這個 open graph

http://graph.facbook.com/1494556507449732_1541869892718393/likes

取出留言者

有了這個 json 檔案之後,最理想的方法當然就是直接用支援 json 的語言去開它。但是如果剛好手邊沒有任何程式語言的平台可以用的時候(例如一台野生的 Windows 電腦...),用網頁工具也是一個好主意。我自己第一個想到的是我很常拿來練習 regex 的網頁工具: Rubular

方法一: 用 regex

首先把 json 裡面的資料全部貼到網頁上,接著我第一個想到的策略是寫一個「中文或者英文」的條件去抓「名字」,後來又補上了.-也可以。

/"name": "([\s\u4e00-\u9fa5]+|[\w\s\-\.]+)"/

看起來成效不錯,但是居然有漏網之魚!原來有的按讚者是用日文、阿拉伯文...當名字。沒辦法,只好用更骯髒的方式了:

/{\s+"id": "\d+",\s+"name": "([\w\W]{2,30})"\s+}/

嗯,這是連初學者都寫得出來的格式,就只是限制字數而已,但是最重要的是它可行!

方法二: 用 Ruby 讀 json

當然如果手上有 Ruby 或者 Python 當然還是直接對付 json 最快啦。

不囉唆,我的解法如下

get_likers.rb
# encoding=utf-8 

require 'open-uri'
require 'json'

url = 'http://graph.facebook.com/pageid_postid/likes?limit=200'

json = open(url) # download the json file

data_hash = JSON.parse(json.read) # parse the json into hash


data_hash["data"].each do |datum| 
    puts datum["name"]
end

因為按讚者是包在 data 之中的巢狀結構,所以我寫了一個 each do 去把它們逐一印出來。

如果要印的是「留言者」名單,除了 url 要把 likes 改成 comments 之外,程式的部分請把迴圈部分改為

get_commenters.rb (snippet)
data_hash["data"].each do |datum|
    puts datum["from"]["name"]
end

References

 
over 2 years ago

因為想要邀請我大學同學開設程式交易的讀書會,所以我這陣子自己也在做功課,其中一項作業就是研究網友開發的股價擷取API。 Python 對我來說並不陌生,我工作上還滿常讀 Python 的 code 的,之前也有「玩」過 CodeAcademy 的 Python 課程;但是要我在自己電腦上開發 Python ,坦白說,我還真的沒有嘗試過。

今天的第一天日記,記錄兩個我部署上述的 grs 遇到的問題,第一是怎麼安裝「常用」的 module,第二是怎麼安裝網友寫好的 module。以下環境部分都是針對 mac ,非 mac 的朋友抱歉了。

安裝「常用」的 module

easy_install 是 Python 的套件管理系統,而 mac 不但有內建 pythoneasy_install也內建了。如果擔心要使用的套件要求的 Python 版本超過系統內建的版本,可以打

python --version

先確定一下。

現在把焦點轉回到 grs 上面。依照它的 README 要求,使用者要有下面三個套件

  • python-dateutil==1.5
  • ujson
  • urllib3

所以我們馬上就會遇到一個問題,就是下載好了之後怎麼安裝,或者有沒有給懶人用的快速安裝方式呢?

有的。就是用 easy_install。所以要做的事情很簡單,就是依序執行

sudo easy_install ujson
sudo easy_install urllib3
sudo easy_install python-dateutil

別忘了我們要做的事情是「安裝」,所以要記得加上 sudo;執行後系統會要求你輸入密碼,如果短時間內一直 sudo,則不用一直輸入。

安裝外部的模組 (設定模組路徑)

熟悉 Python 的朋友應該都知道 Python 程式的開頭跟 C++ 很像,起手式就是要 import 一些要用的套件。萬一要用的模組是強者你同學寫的,或者從 GitHub 上下載下來的,那要怎麼把這個模組的路徑加到 Python 的搜尋路徑裡面呢?如果只是暫時性的使用,可以透過 sys.path指令來「暫時」加進去路徑裡面。如果你是用 python 的互動模式來寫程式,那就只在這次的 session 內有效喲。

一次性設定法

import sys # 引用 sys 模組

sys.path.append('/path/to/the/module/')

這樣就可以了。在互動模式下,你也可以印出目前的路徑清單,檢查一下有路徑有沒有設定成功。

print sys.path

永久安裝

當然一次性安裝不是長久之計,也如同我上面所講的,比較適合在互動模式下使用。那麼怎麼做永久的「安裝」呢?這時候就要看網友寫的模組裡面有沒有 setup.py了。以這次的 grs 為例,從下載到安裝的完整步驟是:

git clone git@github.com:toomore/grs.git

先用 ssh 或者 https clone下來。

cd grs
python setup.py

這樣就完成啦!簡單吧!

 
over 2 years ago

剛才學弟問我,他不小心砍了機器上面的.ssh資料夾,怎麼辦?
這是新手滿常犯的錯誤,也就是第一次用(S)FTP連上機器太興奮,就把隱藏資料夾也一起都砍了。大部分的東西其實砍了也無所謂,機器會再自動長出來;但也有的東西,例如 .bashrc,砍了也是很麻煩的。 .ssh 我覺得應該也是會自己長回來,不過它的性質跟其他的內建資料夾有點不一樣:它不能動用 root 複製其他使用者的資料夾備份過來就好,因為 .ssh 下面的東西是獨一而二的。說了這麼多,其實重建 .ssh只要三個步驟。

mkdir ~/.ssh

首先當然就是建立資料夾囉

chmod 700 ~/.ssh

給 owner全部的權力,包含執行!

ssh-keygen

接著就是重新產生 key pair。系統會問你一些問題,都按 enter 略過即可。

以上,這樣就完成了。