L1ビザ取得までの流れ

ビザ取得までの経過を時系列でメモしておく。

4/21 必要な情報の案内が届く

アメリカ支部の総務担当者から、ビザの申請に必要な情報の一覧が届いた。 一覧には弁護士事務所の名前が入っていたので、どうやら弁護士にまかせてビザを取得することになるらしいという事がわかる。 大学の卒業証明が必要ということで、卒業大学から送ってもらえるように手配などした。

5/2 書類をまとめて返送した

GW前に出しておけば日本が休みの間に処理が進むのではないかという淡い期待に基づいて送付。 主な内容は下記。

  • 申請に必要な情報一覧への回答
  • 名刺
  • パスポート
  • 履歴書
  • 大学の卒業証明

履歴書は言い方は悪いが結構盛って書いた方が良いようだ。

5/20 追加質問が届く&すぐ返信

弁護士から、業務経歴及びアメリカでの仕事内容に関して、詳細を確認するメールが届いた。 粛々と返信する。 予想以上に業務内容に突っ込んだ質問が来て驚く。

5/25 ビザ申請書(DS160)の確認依頼が届く

アメリカ移民局のWebシステムでビザ申請書を入力したので、内容を確認するように言われる。 この時点で、取得するビザがINTRACOMPANY TRANSFEREE (L1)ビザであることが判明した。 内容は弁護士が全て入力してくれているので、自分では読むだけ。 最後にDS160をSubmitして、送信確認ページを印刷して終了。

5/26 ビザ面接日の調整依頼が届く

直近だと6/6の午前が空いているそうなので、そこで予約を依頼した。

5/31 ビザ面接日確定

希望通りの6/6にビザ面接が確定。

6/5 申請用の書類を受領

アメリカからボスのサインが入ったビザ申請書類がFedexで届いた。 サポートレターには英語で事細かく業務経歴や今後の業務内容、なぜこの人材がアメリカに赴任する必要があるのか?などが事細かく書かれている。 これをしっかり読み込んで、面接に備える。 会社からの帰り道に、ビザ用の写真を写真屋で撮影する。

6/6 大使館面接

大使館入館まで

予約した時間の15分前に大使館前に到着。テロの警戒のためか、警察官が大使館前の歩道の両端を塞いでおり、なんとも物々しい雰囲気。 空港とよく似ているが、やたらと手際の悪いセキュリティーを通って、待合室の入り口へ。 ここで携帯電話も預けるものだと思っていたが、普通に持ち込めた。

入館から面接まで

持ってきた書類はすぐに全て1番の窓口に提出した。 ここで自分の番号が発番されるので、その番号が呼ばれるのを待つ。 意外だったのが待合室で携帯電話が利用可能だったこと。なんの問題もなくスマホが使えた。ただし写真撮影はNG。 待ち時間の時間つぶしように本を持っていったが、いつ番号が呼ばれるのかが気になってしまい、読書に集中できなかった。

1時間ほどで番号が呼ばれ、2番の窓口へ。L1ブランケットビザなので、この場で$500を支払う必要があるとのこと。各種クレジットカードが使えるようになっており、私はVISAで支払った。やらなかったが、日本円で支払うことも出来たらしい。

支払後また2番の窓口に戻ると、ちょうどタイミングが良かったようで、指の指紋取りをすぐ隣の窓口で実施。アメリカ入国時にやるやつと全く同一だった。

指紋を取っている最中に番号が呼ばれ、すぐに面接となった。

面接

面接官は金髪のアメリカ人女性。結構若い感じ。 質問は、「何の仕事をしているのか?」という1問のみ。 英語でたらたらと説明していくが、面接官は全然こちらの事を気にかけない様子で、書類にバンバン書き込みや押印をしていく。 書類仕事が終わるとすぐに、「ビザ承認したよ。パスポートは後で家に送ります。」と言われる。 その後は特に案内もなく外に出されて終了。 あっけないというかなんというか。形式的な面接だった。

6/10 ビザ受領

予想以上に早くパスポートが返ってきた。 ビザがバッチリ貼り付けられており、いよいよアメリカに行くのだという実感が湧いてきた。 サポートレター類も同じく返送されてきており、入国時にはこの書類も持っていく必要があるようだ。

総評

  • 初めの時点で1~2ヶ月ぐらいかかるという話があったので、想定の範囲内でビザ取得出来た感じ。
  • 弁護士に依頼しないで進めることはほぼ不可能だろうと思った。特にサポートレターの作成とか。

SurfacePro(Gen5)の日米売価比較

第5世代SurfaceProの評判が良いので購入を検討している。 日本とアメリカのどちらで買うほうがお得かを調べてみた。

結論から言うと、今の為替であればアメリカの方が総じて安い。

CPU メモリ SSD 日本定価(税込) 米国定価 ドル円換算(税込) 差額
Core m3 4GB 128GB ¥114,264 $799.00 ¥94,207 ¥20,057.41
Core i5 4GB 128GB ¥136,944 $999.00 ¥117,788 ¥19,156.28
Core i5 8GB 256GB ¥158,544 $1,299.00 ¥153,159 ¥5,384.59
Core i7 8GB 256GB ¥206,064 $1,599.00 ¥188,531 ¥17,532.91
Core i7 16GB 512GB ¥280,584 $2,199.00 ¥259,274 ¥21,309.53
Core i7 16GB 1TB ¥341,064 $2,699.00 ¥318,227 ¥22,836.72

計算条件は、

  • 為替: 110.97円/ドル
  • 米国消費税: 6.5% (TX州)

とした。 テキサス州の税額なのは、私が今度行くのがテキサスだから。

グラフにすると下記の通り。

f:id:tomo-ono:20170530125635p:plain

i5 8GBメモリ- 256GB のモデルが、何故か日米差額が極端に小さいので、 日本で買うならこのモデルがいいかもしれない。

私はi7 8GBメモリー 256GBをアメリカにてポチろうかと思っている。

poorな環境でのスクレイピングのやり方(あるいはshell script mechanize)

wgetぐらいしか無いようなpoorな場所で、WebページスクレイピングをShell Scriptで書いてみる。

キモはwgetのオプション。 重要なのは下記の3つを付与すること。

  • --save-cookies=<Cookieファイル名> <cookieファイル名>にCookieを保存してくれる。
  • --load-cookies=<Cookieファイル名> <cookieファイル名>があればCookieを読んで、リクエスト時に送信してくれる。
  • --keep-session-cookies TTLがSessionのCookieも保存してくれる。

shで書くときには下記のようにaliasを切って使う事が多い。

alias mywget="wget -q -O - --save-cookies=${cookie_file} --load-cookies=${cookie_file} --keep-session-cookies"

あとは

# login 時のPOST
mywget --post-data "user_id=${user_id}&password=${password}" http://www.example.com/login > /dev/null

# データのGET
mywget http://www.example.com/some/list.csv > my_list.csv

のようにリクエストを五月雨で打っていけば、大抵のWebサイトなら読み書き出来る。

JSONで返ってくるような場合はjqを、XMLで返ってくるような場合はxmllintでゴニョゴニョやるのが良さそう。 特にjqはバイナリ一本で動くのでポータブルでよろしい。

アメリカ赴任になった

6月ぐらいからアメリカに赴任することになった。 今まで旅行や研修でアメリカ含む海外に行ったことはあるものの、そこに住むという経験は初めて。 色々学びや気付きがありそうなので、適宜このブログに書いていこうと思う。

Ruby mechanizeのtextareaの扱いでハマった

textareaを含む編集フォームで、何もいじっていないのに勝手に行頭に改行が追加されていく現象が発生したので調べてみた。

原因としては、

<textarea>
hoge
</textarea>

みたいなHTMLが帰ってきた場合に、Mechanize::Form::Textarea#value が返す値として期待していたのは、"hoge"なんだけど、実際には"\r\nhoge\r\n"が返ってきたよという話。タチが悪いことにこのままPOSTしたりすると、先頭に改行の入るデータがPOSTされてしまうという。。。

今回は対象HTMLが皆上記のようなtextareaの書き方だったので、下記の様なモンキーパッチあてて対応した。 混在している場合はどうするのが正解なのかわからない。。。Webブラウザの挙動を見る限り、"タグ直後の改行は無視する"のが鉄板のようなので、下記のコードでいいっぽいけど。

class Mechanize::Form::Textarea < Mechanize::Form::Field
  def initialize node, value = node['value']
    super
    @value.gsub!(/\r\n/, "\n")
    if @value[0] && @value[0] == "\n"
      @value.slice!(0, 1)
    end
  end
end

APIが無いWebアプリをゴニョゴニョするのは辛いねぇ。。。

AWS Lambdaで任意のURLからファイルダウンロードしてS3に格納する

PythonAWSの勉強がてら、タイトル通りのスクリプトを書いてみた。

IAMの画面から AmazonS3FullAccess のポリシーをアタッチしたロールを作ってやって、Lamdaファンクションに指定してやれば動く。

使い方

下記3つを実行時のPayloadにJSONで指定して実行する。

  • bucket_name 格納先バケット名。存在しないバケットが指定された場合は、バケットをap-northeast-1に作成する。
  • url ダウンロード対象のURL
  • file_name 格納ファイル名

コード

import pycurl
import urllib
import boto3
from io import BytesIO

def lambda_handler(event, context):
    location = 'ap-northeast-1'
    s3client = boto3.client('s3')
    buckets = s3client.list_buckets()
    bucket_name = event["bucket_name"]
    if bucket_name not in buckets:
        bucket = s3client.create_bucket(Bucket=bucket_name,  CreateBucketConfiguration={
    'LocationConstraint': location})
    buffer = BytesIO()
    c = pycurl.Curl()
    c.setopt(pycurl.URL, str(event["url"]))
    c.setopt(pycurl.WRITEFUNCTION, buffer.write)
    c.perform()
    c.close()
    s3client.upload_fileobj(BytesIO(buffer.getvalue()), bucket_name, event["file_name"])

実行時のPayload例

{
  "url":"http://www.google.com/",
  "bucket_name":"mytestbucket",
  "file_name":"google.html"
}

留意点

  • ダウンロードしたデータをメモリに展開するので、大きなファイルのDLは出来ない。
  • もっとおしゃれな書き方は無いものか。

GeekBuyingで買ったGPD Winのライセンス認証が何とかなった

 話題になってるところでは話題のGPD Winですが、この度GeekBuyingにて注文していた機体がようやく到着しました。

 

初めは外観上の問題もなかったので安心してましたがそこは中華クオリティーということで、お約束の不具合がありました。

f:id:tomo-ono:20161208010728p:image

はい、Windowsのアクティベートが出来ません。噂には聞いていたので「当たったかー」ぐらいの感じ。

 

 ともかくGeekBuyingのアフターセールサポート窓口(support_aftersale@geekbuying.com)に、上記のSSを添えて下記のようなメールをしました。

Dear customer service representative,

I've bought GPD Win from GeekBuying.
The order number is #xxxxxxx.

I'm having problem regarding to activation of Windows 10.

I've inputted the Win 10 key which is printed on the silver sticker on the keyboard.
However, Windows couldn't activate with this key.

The error message I got is on the attached screen shot.

Could you send me another key that can activate my Windows?

中学生レベルの英語だ.... 

ともあれ上記で通じたようで、1日ぐらいで新しいシリアルをメールしてくれました。向こうでも認識済みの問題なのでしょうね。

新しいシリアルでは認証もすんなりと通りました。

 

初期不良も落ち着いたところで、ガンガン使い込んでいこうと思います。

f:id:tomo-ono:20161208010544j:image