福岡一週年

下個月剛好一週年,幫自己紀錄一下一些當初找工作跟剛來日本時的過程,如果能對一些人有幫助就更好了。

其實在找好工作後花了不少時間跟公司一來一往申請簽證,主要是因為我是帶著家庭到日本,所以除了自己以外也得幫家人申請。要注意的事情只有除了台灣的戶口名簿外,記得一開始就附上公所的結婚證明和醫院的小孩出生證明,我當初繳完後申請到一半就被要求補件,大概多花了幾天跑醫院跟區公所跟寄出證明。之後拿到在留資格認定證明後跑一趟交流協會查證,應該就可以出發去日本了(印象是這樣,記得看清楚)。

到了日本先住在日租套房,馬上要做的事情就是辦手機,開戶頭跟找房子。剛好日本公司有合作的房仲業者,所以我自己是先直接找好租房在辦手機跟開戶頭,因為後兩者需要用到地址跟在留卡。當然也可以先使用日租的地址先申請在留卡,之後找好房子再去換地址,但我懶得同一件事情跑兩遍,所以就打算一到日本就找好租房。而戶頭沒記錯的話需要手機號碼,所以我是接著辦手機,最後才搞定戶頭。

找房子要注意的就是不要太隨便挑,租房子除了第一個月租金外,有禮金跟押金,而禮金會被收走。所以找好房子通常你第一個月得付上房租三到四倍的金額,也就是說如果不滿意想再換地方,下一個房子你又得第一個月付上那麼多錢。房仲帶我看的房子都沒有附上家具,有冷氣的話也只有客廳一台,所以一開始也得花錢去買床,餐桌椅還有生活家電。個人蠻推薦宜得利的,便宜加上運費也不貴。家電則是到大電器行一次買齊冰箱,洗衣機,電視,電燈...等等,因為一次買很多所以請對方再調整一下價格。當然為了更省錢可以上網買,樂天或是 Amazon 可以查到頗便宜的價格,但我實在懶得一直上網找最便宜的,所以就乾脆到電器行一次買齊。

辦手機除非對御三家(audocomoSoftbank)非常有愛,不然建議可以找 MVNO 這類業者,每個月可以省下不少錢,據說約一萬多跟四五千日幣的差。像我自己是選擇了 iijmio,因為他可以 10 GB 雙門號共享,剛好我跟太太各一個號碼。只是要注意的事情是 MVNO 通常都要信用卡扣款,但有些業者好像不收外國信用卡,我自己辦時 BIC SIM 店員沒問什麼,卡也刷過了。

開銀行戶頭的話記得選在地提款機多的銀行,我因為個人因素辦了 mizuho,但是我工作地點在福岡,能免手續費的本行 ATM 實在少得可憐。說到手續費,日本下班時間跟週六日的提款手續費竟然還會比較高。但我不太想申請太多戶頭,所以 mizuho 就繼續用下去了....。如果是來福岡,福岡銀行或是西日本銀行會是比較好的選擇吧。

有小孩得上幼稚園的話記得注意一下簡章跟報名時間,我當初是十月中到日本,聽聞日本同事說差不多要找幼稚園,才發現許多熱門的幼稚園都已經發完簡章跟說明會。所以如果剛好十月到日本,小孩又得隔年四月上幼稚園的話,要記得出發前就先查好要去哪幾家拿簡章。自己是運氣蠻不錯的,剛好在年初候補上附近幼稚園。

最後會開車的話可以先辦一下國際駕照跟駕照日文譯本,入境一年內可以使用,一年之後就得換成日本駕照。

以上大概就是來日時,想到幾個比較重要的事情:)

參加 ISUCON6 預選淘汰

之前在公司內就聽到同事在找人參加 ISUCON 6,因為懶得好好準備跟擔心拖累參加過的人,這次就跟公司內的都是第一次的台灣同事(W 和 H)一起報名參加。雖然說沒什麼在準備,還是有看一下去年考古題。基本上就是主辦方提供複數語言實作好的 web app,然後在比賽時間 8 小時內調好效能,主辦方會透過 benchmark 工具測量時間跟正確性,資料正確且延遲越少分數就會愈高的競賽。例如去年的考古題就是類似部落格系統,程式中可能有 bug,n+1 查詢,少了 index ...等等。據說還有強者自己用 c++ 之類官方未提供的語言重新實作完 web app(今年也有這種團隊且晉級了...)。

今年題目是一個類似 wiki 的系統,因為沒有 Java 的實作,所以我們挑了 JavaScript 來挑戰(同事 H 是 js 為主的工程師)。沒想到一開始程式本身就有超時問題,我們直到中午過後才開始得到分數,流程上大概如下:

  1. 先處理 table 少了 index 或是資料庫查詢結果含有不必要欄位的問題。
  2. 文章內如果有其他文章的標題,必須轉換成連結的部分,這部分我們就用 redis 快取所有系統內的標題,避免資料庫的存取,並且只要有新增或刪除文章就更新快取。
  3. 另一位同事則幫忙設定 nginx 來處理靜態檔案。
  4. 最後發現處理最慢的部分是 js 的 replace,用來將文內其他文章標題取代成連結。
result.replace(new RegExp(escapeRegExp('title1|title2|title3...'), 'g'), link);

原本想開始改善這部分,但後來時間不足所以成績只在九千多分就結束了本次的比賽(沒記錯的話第一天第一名應該是20多萬分)。

反省點
  • 後來發現別人提到可以實作 trie 來取代慢慢的 replace(賽後簡單實作一下就從 1s 降到 500ms左右),想想平時偶爾也會玩一下 topcoder 或是 AtCoder,竟然沒來的及想到。
  • 記得要認真 profiling,字串取代慢的問題太晚發現。
  • 同事 W 想到可以快取 / (根目錄也就是第一頁)的資料,但是我想太多以為官方測試會故意新增刪除再進入首頁,認為沒什麼用而沒去實作。最後回去看 log 發現評分程式看起來會故意重複進入首頁,下次要記得看看 access log。
  • 本地開發環境建置的練習和假設不太足夠,花了同事大概兩三小時在建置但我們也沒用到。
  • 因為自己太過心急,常常會想撈過界去幫忙,造成兩三人同時解一個問題,以後分工後應該謹守自己本份...0rz。

希望明年還有機會參加呀!