2017-03-08

アメリカのクレジットカード 2017年3月版

これは、2017年3月のアメリカではいったいどのクレジットカードを作ればいいのか、という趣旨で書かれた主観的な記事。

昔の記事と比べて推移を楽しむのもまた一興。


Chase Sapphire Reserve


現時点での「旅行系最強カード」との評判(reddit調べ)。レストランと旅行がキャッシュバック3% (旅行に使えば4.5%。これによりCiti Costcoは降格し完全に出番なし)。年会費は$450と高額なものの、うち$300が旅行で使えるクレジットとなるので、実質年会費は$150。ラウンジ使えたり、いろいろ。

ちなみに、2017年3月11日までにChase店舗で作ればボーナス10万ポイント(当然条件あり。オンライン申請は、すでにボーナス5万ポイントまで減額済み)。フライトチケットに使えば$1,500相当。

なお、Chaseはクレジットカード申請時の審査として、クレジットヒストリ以外に「5/24ルール」「3/1ルール」と呼ばれてるルールがある。っぽい。「24ヶ月以内に5枚クレジットカードを作ってるとリジェクトされる」「30日以内に3枚Chaseのクレジットカードを申請するとリジェクトされる」てな感じ。でもChase店舗では、この制限も緩和される場合があるとかないとか。

Chase Freedom

前述のChase Sapphire Reserveを補完するクレジットカード。3ヶ月ごとにローテーションされるカテゴリで、キャッシュバック 5%を稼ぎ、Chase Sapphire Reserveにトランスファーし、旅行で使えばキャッシュバック7.5%相当、ってこと。

BankAmericard Better Balance Rewards Credit Card

毎月1セント以上使って、ステートメントもらったあと遅延なく毎月きちんと支払えば、クォーター毎にお金がもらえる、不思議なクレジットカード。Bank of Americaの口座があれば、年間$120もらえる。毎月必ず支払いがあるものをコレで払うだけでOK。つまりNetflixをこのカードで払えば実質タダ。

Amazon Store Card

Amazon Prime払い続けてる人はコレ。ステートメントクレジットバック 5%。
自動で入れられてしまうCard Securityは即キャンセルしとくこと。サポートチャットでキャンセルできる。これがあるので、ChaseのAmazonを作る理由はとりあえず思いつかない。

BankAmericard Cash Rewards

Bank of Americaの口座(Merrill Edge含む)に$100k入れておけば、Costcoとグローサリーが、キャッシュバック 3.5%。ガソリンはなんと5.25%。しかも、その状態ならMerrill Edgeの手数料が無料(ランクに応じた回数制限あり)。

Citi Double Cash Card

上記以外全部これ。キャッシュバック 2%。同じくキャッシュバック 2%のFidelity Visaでもいいと思う。




2016-12-30

アメリカの就労ビザ

ソフトウェアエンジニアのみなさん、すでに気軽にアメリカ移住を考え始めたと思うんですが、ここでアメリカの就労ビザについてもうちょっとつっこんで書いときましょう。

この記事は「ソフトウェアエンジニアに特化した、アメリカ就労ビザのガイド」です。細心の注意を払ったつもりで書いてますが、所詮はチラシの裏なので、実際は「リクルータを通して」「会社が雇っている」「海千山千な移民弁護士に」「相談」してください。個人個人、学歴/経歴/ポジションが異なるんですから、当然ビザ申請におけるストラテジーも異なってきます。(追記: ちなみにこの記事は、ぬか喜びを防止するため、若干nagativeな感じにふってあります。まずは面接受けてオファーもらうところから始めたらいいかと思います!)


まずは「H-1Bビザの抽選」について。

USCIS(U.S. Citizenship and Immigration Services、米国移民局)自ら "lottery" 言うてます。

https://www.uscis.gov/news/alerts/uscis-completes-h-1b-cap-random-selection-process-fy-2017

a computer-generated random selection process, or lottery, to select

どーいうことかというと、毎年H-1Bビザは、新規に 65,000 しか発行しません。今年は、そこに 236,000 人申請したわけです。つまり、236,000人中65,000人しか、H-1Bビザはもらえません。だから、30%の当選確率ということになります。

実際は、例外があるんですね。特定地域は別枠になってたり。われわれに少しでも関係あるものは「the advanced degree exemption」です。

アメリカの大学院を卒業(advanced degree)していれば、上記65,000以外に「the master's cap」といわれる別枠に入れるんです。


算数をしてみます。

FY 2017(2016年4月申請)は、申請数 236,000。

うちadvanced degree申請数をNとします。USCISは公表してないので。

master's capが20,000。

つまり当選確率は 20,000 ÷ N。

仮に N=40,000 とすると 20000/40000 = 50%

50%なら、なかなか良さそうです。で、終わらないのがthe advanced degree exemption。


このmaster's capに対する1回目の抽選で外れても、そのあと通常枠で再抽選されるんです!

計算式はこうなるはずです。

(20,000 ÷ N) + (1 - 20,000 ÷ N) × (65,000 ÷ (236,000 - 20,000))

仮に N=40,000 とすると

(20000 / 40000) + (1 - 20000 / 40000) * (65000 / (236000 - 20000)) = 65%!

これは当たりそうです。


でも、世の中そんな甘くない。

http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/Academic-Level/2014-16 によれば、学校卒業後の就労申請による2016年のOPTは 147,498人 だそーです。

このOPT全員がH-1Bビザを申請するとすると、N=147,498なので

(20000 / 147498) + (1 - 20000 / 147498) * (65000 / (236000 - 20000)) = 39.5%

うーんツラい。OPT STEM Extensionで3年間就労可能、というのが重要な話だとわかっていただけたのではないでしょうか。


まぁ、アメリカの大学院卒業してない人の確率は

65,000 ÷ (236,000 - 20,000) = 30%

なので、だいぶマシではありますが。


確率がわかったところで、H-1Bビザの「Requirements」です。H-1Bビザを申請するにあたっての必要条件ですね。資格。

H-1Bビザって、誰でももらえるものじゃなかったんです。

https://www.uscis.gov/eir/visa-guide/h-1b-specialty-occupation/understanding-h-1b-requirements


条件1: a valid employer-employee relationship

会社の入社面接に受かって、会社からもらったオファーにサインする、とかですよね。


条件2: A bachelor’s degree or higher degree or its equivalent

アメリカの4年制大学かそれ以上を卒業してないとだめ、なんです。
(実際もっといろいろありますけど)

あ、まだがっかりしないでください。"or its equivalent" がポイントなんです。いまのところ、日本の4年制大学も同等とみなされてます。どこの大学でもいいはずです。


条件3: Your job must be in a specialty occupation related to your field of study

えーと、残念なんですが、日本人のソフトウェアエンジニアは、ここでがっかりする方が多いんじゃないかと。

職業と学業が一致してないとだめ、なんです。

ソフトウェアエンジニアでH-1Bビザを申請するってことは、アメリカの4年制大学のComputer Science学科を卒業してる、ってことなんです。


  • 日本の4年制大学 情報学科卒業 → やったね! クリア!
  • 日本の4年制大学 基礎工学科卒業 → たぶんクリア! 学部英語名に"Engineering"って入ってればいける可能性高いよ!
  • 日本の4年制大学 経済学科卒業 → 申し上げにくいんですが...


みんなが聞いたことない大学でも、情報工学科を卒業してれば条件クリアなんですね。

逆に、みんなが聞いたことある有名大学でも、情報工学科またはそれに匹敵した学科を卒業してなければ、条件クリアできないんです。


しかし、がっかりするのはまだ早い。裏ワザがあるんです。

みなさんのソフトウェアエンジニアとしての職歴、学歴に換算できてしまうんです。

For H-1B purposes, three years of work experience in the field will be considered the equivalent of one year of U.S. university study 

職歴3年 → 学歴1年、ですよ。桃栗三年柿八年ソフトウェアエンジニア十二年。つまり、情報工学科を卒業してなくても、ソフトウェアエンジニアとして12年間働いてれば、アメリカの大学のComputer Science bachelor's degreeを持ってるのと同等になります。うん、長いですね。H-1Bビザって、大変なんですよ。


じゃ、文系学科卒業して、Computer ScienceなUniversity Extensionに行ったらどうなるの?

文系学科卒業して、Computer ScienceなMaster's programに行ったらどうなるの?

あ、オレ文系だけど、情報の単位取ってた! これってトリビア学歴になりませんかね?

弁護士に相談だ。

そもそもMaster's program側にも入学要件があるのでそれにも依存しますしね。


あと、この学歴話、グリーンカード申請時のカテゴリ、EB-2、EB-3にも関わってくるんですけど、いま現在日本人の待ち時間的には、EB-2もEB-3も同じなので、まぁ、あんま関係ないです。


なんか、H-1Bビザ、抽選確率と条件から無理ゲーな話に聞こえてきたんで、次いきましょう次。


(もうひとつ裏ワザがあったりします https://www.uscis.gov/news/h-1b-cap-exemptions-based-relation-or-affiliation 大学やNon profit団体はH-1B Cap Exemptions対象なので、いつでも行けちゃう。それがあなたの望んだ道ならば、ですけど)


L-1Bビザ

赴任で使うやつですけど、あいまいだった審査をきちんとしようということで、最近こんなふうになってます。

https://www.uscis.gov/working-united-states/temporary-workers/l-1b-intracompany-transferee-specialized-knowledge

Specialized knowledge means either special knowledge possessed by an individual of the petitioning organization's product, service, research, equipment, techniques, management, or other interests and its application in international markets, or an advanced level of knowledge or expertise in the organization's processes and procedures

その会社のプロダクトに特化した技術を持ってると審査に通りやすいわけですね。なんかあります?

外資系に入社。そして1年後、マネージャから「ちょっと話あるんだけどさ」なんて言われて、レイオフ!? なんて心配しながら聞いてみると「本社にXXっていうポジションが空いたんだけどさ、OOさん本社行ってみたいって言ってたよね。行ってみる?」なんて言われるわけですよ。月9ドラマですね。アピールアピール。

実際は、複数のエリートたちがごくわずかに限られたポジションを虎視眈々と狙う、血で血を洗う争いが起きてるかもしれないので、調査した上で入社する方がいいかもしれない。

ちなみにL-1Aビザっていう、経営者、管理職用のもあるらしいですけど、ソフトウェアエンジニアって感じじゃないじゃないですか。知らないですけど。ぶっちゃけ、マネージャとかやりたくないじゃないですか。ねぇ。

E-2ビザ

https://travel.state.gov/content/visas/en/employment/treaty.html

If you are not the principal investor, you must be considered an essential employee, employed in a supervisory, executive, or highly specialized skill capacity. Ordinary skilled and unskilled workers do not qualify.

Ordinary skilled and unskilled workers do not qualify」ですからね。実際どのくらいの技術力、ポジションで審査通るのか、それは申請してみてからのお・た・の・し・み!

ソフトウェアエンジニア一般として、じゃなくて「その会社にとって」がポイント。かといって、全員が全員E-2ビザで渡米しました、なんて会社があったとしたらUSCISはどー思いますかね。アメリカに職を作るのと引き換えにE-2ビザが認められてるようなもんなので、日本から連れてきた人じゃなくて、その仕事ってアメリカ人雇えばいんじゃないの? と突っ込まれるわけです。弁護士の腕の見せどころ、かもしれない。


O-1Aビザ

https://www.uscis.gov/working-united-states/temporary-workers/o-1-visa-individuals-extraordinary-ability-or-achievement

Extraordinary ability or achivement ですよ。え、この賞でもいけちゃうの? みたいな話は聞きますが、去年の日本人ビザ発行総数75,700に対して、Oビザ681人だけしか発行されてないですからね。まぁExtraordinaryですよね。

神明さんのブログが詳しいです https://www.jinmei.org/blog/2008/10/19/474


Diversity Visa Lottery

https://www.dvlottery.state.gov/

年末グリーンカードジャンボ宝くじ。毎年10月に書類申請。当たったらグリーンカード申請に進めます。いやー、こんなの当たんないと思うんですけど、実際当たってる人いますね(生存者バイアス)。ただ条件があって、高卒以上、資産がある程度以上、とかです。移民法改正により、まるっとなくなる可能性もあります。

ただ、注意してほしいことがあります。他のビザは、それなりの審査を通り抜けて、学校で学習したか、職を手に入れてから就労ビザを手に入れているわけですが、DV Lotteryは単にくじに当たっただけです。そのあと、会社で入社面接をすり抜けて仕事を手に入れないといけないわけです。どうしましょう。起業してもいいですけど。

アメリカ人との結婚も、ここに分類されるかな。


B-1ビザ/J-1ビザ

「うちに入社すればサンフランシスコオフィスで働けるよ! 入りなよ! え、ビザ? えっとね、わたしはよく知らないんだけど、入社までには聞いときますね。え? いや、大丈夫だって、平気平気。みんなもそうだよ」

なんて会話があったら、要警戒。凄腕弁護士が超奥義でUSCISをねじ伏せるかもしれないし、J-1ビザからH-1Bビザなども不可能ではありませんが、まぁ、そうある話ではないんで、疑ってかかっていいかと思います。下手うつと、アメリカから国外追放される可能性もなくはないです。


ESTA

「サンフランシスコオフィスの話ですけど」
「あ、あれね。ESTAだったかな」
「えっ」
「えっ」


以上。


いやー、こんな難関通り抜けたなんてオレすごい、というより、むしろ、平和な日本に生まれたのに戦地に向かった奇行種、と言われるほうが感覚が近い。

そんじゃーね。

2016-12-29

渡米について

最初に、筆者のスタンスを書いておくと

  • アメリカに来るも来ないもあなた次第
  • 来たい人がいたら応援したい
  • 日本人が増えたら、風が吹けば桶屋が儲かるレベルで得する
    • (日本人向けのお店やサービスが増えるかもしれないから)

て感じ。この記事を書いた理由も「年末で暇だったから」。


ソフトウェアエンジニアならもっと気軽にアメリカ移住を考えたほうがいいよ

やっぱりアメリカの方が待遇がずっとよくて、物価差を考慮に入れてもやっぱり全然違うと思う。やや大げさかもしれないけど、日本のプロ野球と大リーグみたいな違いがあるように思うんだけど。

外資系企業の東京勤務 → シリコンバレー勤務、なら、ボーナスやRSU込みで、日本でもらってた全額の1.5倍もらえると思っていいと思う。2倍いくかも。もちろん円→ドル為替状況やポジションによりますが。東京の日本企業で高めにもらってるソフトウェアエンジニアなら、シリコンバレーで働けば3倍以上いけるかもしれない。赤い彗星。高い人はより高く。あ、もちろん人によりますよ。

ということで、いくらシリコンバレーの物価が高かろうが、金銭的に問題ないことがわかったところで、そこには、ビザの壁が立ちはだかる。


(医療費とか子どもの学費とか、金銭的なアメリカの悪いところならいくらでも考えることができると思うんですけど、不安なら行かなければいいんです。まぁ、良い会社入ればなんも問題ないですけどね)


アメリカで働くには、なんと就労ビザってのが必要なんです。大雑把に言うとこんな感じ。OビザやL-1Aビザなどもありますが、それがもらえる人はこんなの読む必要ない。

  • L-1Bビザ
    • 赴任で使われるのが一般的
    • もらえるまで1年間その会社のアメリカ国外オフィスで働く必要あり
    • 転職できない
  • E-2ビザ
    • 起業時に使う
    • か、日系企業の重要人物としてもらう(つまり手練れしか使えないと思っていい)
    • いつでももらえる。転職直後でも平気。
    • 転職できなくもない
  • H-1Bビザ
    • 毎年4月から申請開始、10月から働ける
    • いまのところ抽選になってて、当選確率30%程度
    • 転職できる



で、その就労ビザ、ここ10年の日本人向け発行数推移ですが(https://travel.state.gov/content/visas/en/law-and-policy/statistics.htmlより)





ひと目でわかるように、H-1Bビザ発行数が減ってます(H Classなので、H-2やH-4、更新や再取得も入ってると思いますが、まぁ、この減りっぷりなら新規H-1Bも同じように減ってるでしょう)。日本の労働人口が減っているから、とか、インドの会社が超大量に申請しているので日本人の当選率が減ってるから、など仮説を立てることができますが、それはそれとして。この推移から推定できることは、6、7年でH-1Bビザに当選する人はいなくなるってことです!

こんな厳しい状況でH-1Bビザを手に入れるには、どうすればいいかって?

ホントどうすればいいんですかね...


博打好きならH-1Bビザでいいんですが、そうでないならばH-1Bビザはなかったことにしたほうがいいかもしれません。となると次のような手段が考えられるかと。

  • E-2ビザで起業する! → こんなの読んでる場合じゃないよ!
  • 日系企業でE-2ビザを狙う → あなた手練れ?
  • 日系企業でL-1Bビザ使って赴任する → まず間違いなくアメリカで転職できないけど、いい?
  • 外資系企業でL-1Bビザ使って転籍する → おそらくいちばん無難。日本Googleとか。

(追記: 「転職できる」ってのは重要なポイントで。レイオフされるんです。あ、オレは凄いソフトウェアエンジニアだからレイオフされないぜ、とか思ってますか。個人の能力は一切関係ないです。チームごと、部門ごと、オフィスごと切られるから。実際わたしもレイオフされました :) え、じゃあ外資系もあぶないんじゃない? てなりますけど、外資系はアメリカに転籍後、グリーンカードやH-1Bビザ申請をいきなりサポートしてくれる確率が高いんで、日系に比べれば全然安全なわけです。で、H-1Bビザの場合、レイオフ後転職できればビザの転送が可能。E-2ビザも会社の条件が会えば転送可能。L-1Bビザの場合、... えーと、どうしましょうね)


面接に受かる自信がない... なんて方は、学生にもどるって方法があります。技術を学習して実力アップできるし、英語も学べるし、修了後OPTという就労許可がもらえるので、なんとH-1Bビザなどなくても働ける! ソフトウェアエンジニアリングなら、その期間も3年間!

バラ色の未来ですね


そこで、このグラフ



http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/By-Academic-Level-and-Place-of-Origin からプロットした、アメリカの大学に留学してる日本人学生数推移です。

大学院への留学(Grad)、減少が止まらないです。この傾き、H-1Bビザ同様、あと何年で大学院留学生いなくなるんですかね...

でも、Gradに引きずられてOPTも同様に減少すると思いきや、ある程度がんばってます。グラフで上昇中のNon-degreeが、Gradの減少分を引き止めてるんでしょうか。たぶんUniversity Extensionじゃないかと思いますが、バークレー大学Extensionとかの、社会人など対象の大学での授業ですね。

てことで、University Extensionに入ってOPTを狙うのが無難ということになります。

が、University ExtensionだとOPT STEM Extension(3年間)がもらえないのではないかという情報も。つまり、1年間のOPTでシリコンバレー企業に入社して、そのあとH-1Bビザを申請、30%の確率で当選すれば、そのままシリコンバレーに滞在できる、そうでなければ...

そこをセキュアにするには、大学院。OPT STEM Extensionに加えて、当然オファーの金額も上がります。


問題は、学費。


Master of Science in Computer Science: 1年間コースで600万円


とかみたいですね。うーん。シリコンバレーで働いてたら、投資と思えばなんてことはない金額(たぶん)ですが、悩んでる間に、さらに値段上がりますよ。日本とアメリカでインフレ率が違うので。たとえば最低賃金の推移。

  • 東京 2014年 869円 → 2016年 932円  7.3%上昇
  • サンフランシスコ 2014年 $10.74 → 2016年 $13.00  21%上昇!

http://youkoseki.tumblr.com/post/115454585310/
日本では年収1000万円がいつまでも一つのハードルのように語られるが、1994年の年収1000万円と同じ価値は、2014年の日本では1015万円とほぼ変わらないのに対し、2014年の米国では1600万円が必要になる。
これで円安が進行したりすると...


奨学金狙うしかないですね (あとコースによっては、インターンで月給70万円いけるなんて話も)


というわけで、気軽にアメリカ移住を考えたらいいと思います!

2016-02-01

アメリカのクレジットカード


どのクレジットカードが良いのか、ここに記す。

ANA Card USAで修行を開始して、1年の無料期間のあと、1年会費払って、その後解約。現在クレジットカードだけで9アカウント(close済みANA入れて10)。
  • マイラーでも陸マイラーでもないので、キャッシュバック重視。
  • クレジットスコアは良いほう。
  • リボ払いとかありえない。
  • 支払い遅延とかありえない。
  • 入国から2年9ヶ月。
  • グローサリーはCostcoにほぼ完全依存。


Citi Costco Anywhere Visa Card
Costco入場用カード。でもCostcoの支払いには使用しない。レストランとトラベル用(キャッシュバック3%)。

BankAmericard Cash Rewards Card
Bank of Americaの口座(Merrill Edge含む)に$100k入れておけば、Costcoとグローサリーは、キャッシュバック 3.5%。ガソリンはなんと5.25%。

Amazon.com Store Card
Amazon Primeに年間$99払い続けてる人用。ステートメントクレジットバック 5%。Card Securityは即キャンセルしとくこと。サポートチャットでキャンセルできる。

BankAmericard Better Balance Rewards Credit Card
毎月1セント以上使って、ステートメントもらったあと遅延なく毎月きちんと支払えば、クォーター毎にお金がもらえる、不思議なクレジットカード。Bank of Americaの口座があれば、年間$120もらえる。Netflixとか、毎月必ず支払いがあるものをコレで払うだけでOK。

Discover it Card
BoA Cash RewardsとAmazon Store Cardにより出番が減った、キャッシュバック5%カテゴリローテーション系クレジットカード。1年に3ヶ月だけレストランで使う、とかいうレベル。あとは、Six Flagsでの支払いが全部キャッシュバック 5%な上、優先入場できるので、近くにSix Flagsあって、お子さんいる場合はお得。しかしSix FlagsよりGreat Americaの方がイイですよ。

Citi Double Cash Card
どこでも使えて、キャッシュバック 2%。Costco/グローサリー/レストラン/トラベル/Amazon/Six Flags以外の支払いは、全部コレ。

あと、Chase Freedom card作ってもいいかもな、というところ。

2015-10-22

シリコンバレーの採用面接対策

日本人ソフトウェアエンジニアである筆者が、シリコンバレー企業の採用面接をいくつか突破するにあたり、役に立ったなぁ、と思ったものを書き連ねてみました。ソフトウェアエンジニアポジションの採用面接における、一般的な対策として。渡米してシリコンバレーで働きたい! なんて方の参考になれば幸いです。アフィねらいですよね、と聞かれたら、そうではないですと言えない感じではありますけど、まぁそんな感じです。

シリコンバレーで働きたい、といえば、良い本が出ました。「エンジニアとして世界の最前線で働く選択肢 ~渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド」。ていうか、まだ第七章「解雇に備える」しか読んでないんですが :) 



そうそう、解雇といえば、Getting Ahead in the U.S. (ESL)もしょっぱなの第一章から解雇の話です。ESLの教材で、COBRAの説明を聞くとは思いませんでした。



あと「SOFT SKILLS」て本が、すごくいいらしいですよ(丸投げ)。入社時の給与交渉なんて、行き当たりばったりもいいとこだったんで、事前に知っときたかった感じです。とか言いながら実はまだ読んでないんですが、シリコンバレーに来ると、この本タダで読めちゃいます。サンフランシスコ図書館とかサンマテオカウンティ図書館などで図書館カードを作ると、Safari Books Onlineのサブセットに無料でアクセスできるようになりますが、この本そこに入ってるんで、いつでも無料で読めます。



あとオンラインでebookやaudio bookを借りれたり、美術館博物館とかの割引が効いたり、いろいろ特典あるんで、採用面接通ってサンフランシスコベイエリアに住むことになったら、図書館のカード作っときましょう。居住地の図書館だけじゃなく、サンフランシスコ図書館とか、サンマテオカウンティ図書館は(そしてたぶん他の図書館も)、カリフォルニア州に住んでさえいれば図書館カード作れます。



筆者は現地法人に現地採用されてたとはいえ、こっちでの採用面接は初めてだったので、Quoraとかで紹介されてた面接対策本を片っ端から買ってみました。
一番役に立ったのは、結局のところ、ド定番の「Cracking the Coding Interview」でした。A Problem-Solving Flowchartとか重要(チャート図自体はサイトからダウンロードできますけど、詳細説明は本にしか載ってません)。ただ黙って問題解けばいいわけじゃないのです。Googleとか有名ドコロは、どういう面接がどうやって行われるか、どのように評価されるか、とかも書かれてます。




あ、日本語版持ってます? 私も持ってるんですけど、オリジナルの英語版は6th Editionになってますし、これからシリコンバレー企業受けるわけですよね。当然ながら面接は全部英語ですんで、英語版読んだほうがいいと思うんです。ええ。シリコンバレーでは英語ができなくても問題にならない、なんていう記事もありますけど、あれって、「ネイティブと同等な」英語ができなくても問題にならない、だと思うんですよね。たぶん最低でもTOEIC 800点とかないとツライんじゃないかなと(TOEICの点数云々に関してはリンク先をどぞ)。そういえば、英語学習についての記事も書いたことがあるんで、読んでみてくださいませ。まぁ「英語△/コーディング◎」は通る可能性ありますが、「英語◎/コーディング△」は通らないんじゃないかなぁと思ったりもします。コーディングできる方は、とりあえず入社してから、一緒に英語で苦労しましょう。

で、コーディング面接で出されるようなアルゴリズムとデータ構造って、普段の仕事であんまり直接使わないかな、なんて思うわけなので、しっかり復習しといた方がいいわけです。その復習にピッタリだったのが、「Data Structures and Algorithms Made Easy」。



たとえば、リンクリストからのノード削除とか、事細かに図解入りで説明されてます。そんな簡単なの復習しなくてもいいんじゃない? という方もいると思うんですが、この本、コーディング面接で出るような問題もたくさん載ってまして。しかも、コーディング面接の回答に必須である、実行時計算量(Time Complexity)、メモリ使用量(Space Complexity)もちゃんと解説されてます。

あと、面接に到達するためには、ちゃんとしたレジュメを書いて書類選考を突破しないといけないわけですが、それは「Programming Interviews Exposed」にレジュメ具体例付きで説明されてたりします。



ホワイトボード

コーディング面接でPC使うケースもなくはないんですが、基本的にはホワイトボード使いますんで、買っちゃいましょう。練習なしでいきなりホワイトボードにソースコード書け、とか言われても難しいものです。練習あるのみ。ただ書くだけじゃなくて、Think Out Loudですよ。ホワイトボードで問題解ければ、PCで解くのは造作も無いでしょう(電話面接は、PC使ってコーディングするケースが多い)。

イケアの子ども用ホワイトボード、$14.99。なかなか良いです。でも、これだけだと書ける面積がちょっと狭い。

私は、このイケアのに加えて、50cmx70cmくらいのホワイトボードを壁に立てかけて練習しました(Expo Dry Erase Markerを5本使いきった)。

ウェブサイト

本に載ってる問題をホワイトボードで練習するわけですが、以下のサイトで、お目当ての会社の問題を探して練習するのもいいです。まぁ、本に載ってる問題同様、出るも八卦でないも八卦ですけど。面接体験談なんかも読めます。

2015-08-21

アメリカのグリーンカード

先人たちのブログ記事に助けられたので、私もここにグリーンカード取得までの道のりを記録しときます。もっとストーリー仕立てにして、mediumに書かないといけない気がしますけど。シリコンバレーですからね。


フローチャート

http://immigrationroad.com/green-card/immigration-flowchart-roadmap-to-green-card.php


タイムライン

2014年2月 準備開始
2014年4月 H-1B申請(プレミアムプロセッシング、Non Advanced Degree枠)
2014年4月 H-1B当選!
2014年5月 H-1B承認!
2014年6月 PERM用Ad開始
2014年8月 PERM用Ad quiet period終了
2014年8月 PERM申請
2014年10月 自動的にH-1Bにステータスチェンジ
2015年1月 PERM承認
2015年2月 Medical Exam
2015年2月 I-140/I-485 concurrent+AP+EAD申請
2015年3月 Biometrics schedule notice(配送途中で破損! 弁護士にもコピーが届いてたので無事)
2015年4月 Biometrics
2015年4月 EAD/APカード到着!
2015年7月 I-140承認! 
2015年7月 I-485承認!
2015年8月 グリーンカード到着!
2015年9月 レイオフ!
2015年10月 就職!!!

全行程1年半。入国から2年4ヶ月。


Medical Exam

USCISのリストから選ぶ。2015年2月だと近所では1人$260が相場でした。ツベルクリン反応注射代込み。保険は効きません。Medical FSAが使えるかどうか不明。母子手帳がない場合の血液検査は、Quest Diagnosticsで$53.14。項目は以下のとおり。
  • HEPATITIS B
  • VARICELLA
  • MMR
  • SYPHILIS
  • HIV
私の場合、母子手帳はなかったものの、ほとんど予防接種してたので問題なし/抗体ありという結果。足らない分のTdapだけ打ちました。予防接種は、メディカルチェックした病院じゃなくて、別の病院に行けば、Preventive care扱いになるので、医者に会う分の料金($20。去年は$10だった...)だけで済みます。保険によるでしょうけど。

でもツベルクリン反応陽性出てしまったので、胸部レントゲン必須。夕方あいてたという理由だけで大きめの病院行ってしまって $197.25。これはもっと安いところがたくさんあるはず...


Biometrics

サンフランシスコのUSCIS Application Support Centerに朝8時の指定。朝8時オープンて書いてあるのに、7時40分に到着した時にはとっくに開いてて、すでに受付番号30番越え。No cellphone、No food、No drinkと張り紙してあるけど、なんと荷物検査なし! (抜き打ちとかあるかもしれないから、持ってこないに越したことなし)。受付の人みんなやさしい。全部で30分くらいで終了。


my USCIS


通知機能が素晴らしい。


trackitt


ここですべてわかります。


英語

アフィねらい記事はこちら http://blogger.splhack.org/2014/09/blog-post.html

2014-10-03

カーネル、私の読み方

アスキーのハイエンド書籍編集部解散らしいんで、BSDマガジンの記事貼っときますね。

カーネル、私の読み方
坂本一樹 sakamoto@netbsd.org
始まりは「仕事」、でも...
なぜカーネルのソースコードを読んだり書いたりすることになったのかと
問われれば、それは「仕事」だったから、と言える。そもC言語による
プログラミングをはじめたのも、FreeBSDやNetBSDを使いはじめたのも、
「仕事」で使うからという理由である。しかしMIPS R3000を使った
UNIXマシンのOS保守やデバイスドライバの作成などの業務に携わっているうちに
(というよりもUNIXマニアのK上司にあてられて、という表現の方が正しい:-)
かもしれないが)、すっかりUNIX好きになり、しまいには
マイナーなマシンにNetBSDを移植してしまった。これは完全に趣味である。
UNIXとC言語
前述のような業務をこなすためには、C言語の技術は必須であったわけで、
仕事道具としてC言語を身に付けるべく次の書籍で勉強することになった。
・プログラミング言語C 共立出版 ISBN4-320-02692-6
・UNIXプログラミング環境 アスキー ISBN4-87148-351-7
・Cパズルブック カットシステム ISBN4-87783-029-4
カバーの取れたぼろぼろのK&R本(プログラミング言語Cのこと)を
「一日でできるよね :-)」と手渡されたおかげで、
今の自分があると言っても過言ではない。それはともかく、
C言語の知識不足がカーネルを読む際の障壁になることもある。
是非C言語を道具として使えるようになって欲しい。
当時は出版されていなかったが次の書籍は大変オススメである。
・プログラミングの力を生み出す本 オーム社 ISBN4-274-13207-2
・エキスパートCプログラミング アスキー ISBN4-7561-1639-6
まずはデバイスドライバ
C言語の勉強といっても本だけ読んでいるのは大変つまらない。
実践あるのみ、とISAバス接続の簡単なI/Oボードを制御するプログラムを
作成する機会が与えられた。DOS環境でなんとか作成することができたものの
FreeBSD(当時は2.0.5 RELEASE)用も作成することになったとたん困った。
さわりはじめたばかりではあるが通常さわるFreeBSD環境
つまりユーザーランドでは、ISAバスの先を叩くことができない
(本当はできる。当時はユーザーランドから
I/Oアクセスのための特権を得る方法に気付かなかった)、と。
だが、これによりカーネル内部と外部の違いを勉強する機会と
デバイスドライバを作成する機会を得られたわけであるから幸運である。
ここでは次の書籍とFreeBSDのドキュメントを使って勉強した。
・UNIX 4.3BSDの設計と実装 丸善 絶版
・UNIXカーネルの設計 共立出版 ISBN-4-320-02551-2
カーネルとデバイスドライバとユーザーランドの仕組み、
通常ファイルとデバイスファイルの違い、デバイスファイルの作成方法、
カーネルソースコードの入手方法、デバイスドライバの場所、
デバイスドライバの追加方法、カーネルのコンパイルの仕方、
カーネルの入れ替え方、デバッグ用の文字列出力、デバッグ出力先、
などの壁を乗り越え、
/usr/src/sys/i386/isa 以下を眺めながら見よう見まねで
list1のようなスケルトンソースコードを作り、
DOS環境のプログラムから切り張りしていった。
----list1-----------------------------------------------------
struct hogesoftc {
struct device sc_dev;
...
};
struct cfdriver hogecd = {
NULL, "hoge", hogeprobe, hogeattach, DV_TTY, sizeof(struct hogesoftc)
};
int
hogeprobe(parent, self, aux)
struct device *parent, *self;
void *aux;
{
...
}
void hogeattach(parent, self, aux)
struct device *parent, *self;
void *aux;
{
...
}
int
hogeopen(dev, flag)
dev_t dev;
int flag;
{
...
}
int
hogeclose(dev, flag)
dev_t dev;
int flag;
{
...
}
int
hogeread(dev, uid)
dev_t dev;
struct uio *uio;
{
...
}
int
hogewrite(dev, uio)
dev_t dev;
struct uio *uio;
{
...
}
int
hogeioctl(dev, cmd, addr)
dev_t dev;
int cmd;
char *addr;
{
...
}
--------------------------------------------------------------
ユーザーランドからこのデバイスドライバ用の/dev/hoge0に
アクセスできたときは、それはもう感動した。本に書いてあるように
カーネルが動いたのが実感できたわけであるから。
このように、C言語を道具として使えるほど身に付いていない状態でも
カーネルをいじることができる。勉強の題材としても使えるわけだ。
No.16で前川氏も書かれているが、
C言語で「printfで画面に文字が表示できる」プログラムを
コンパイルして実行できる人であれば、カーネル内部に自分のプログラムを
埋め込んでコンパイルし、そのカーネルで起動することも簡単だ。
カーネルをハックしたいがどこをハックしたら良いか思い付かない、
という人はカーネル起動メッセージを書き換えて「マイBSD」を作ってみよう。
デバイスドライバやシステムコールのような所をハックするなら、
ユーザーランドからも遊べて一石二鳥だ。
コンパイルできなかったり、起動できなくても心配ない。
カーネルのどこをどういじろうが他人に迷惑をかけることはない
(注: 万が一のためネットワークからは切り離しておこう。)。
こころゆくまでカーネルをハックして欲しい。
カーネルハックには、BSD magazineバックナンバー(No.4の特集1がオススメだ)や、
FreeBSD、NetBSD、OpenBSDなどのサイトが参考になると思う。
また次の書籍も勉強になる。
・386BSD カーネルソースコードの秘密 アスキー ISBN4-7561-2042-3
英語に抵抗なければ次の書籍も入手したい。
・The Design and Implementation of the 4.4BSD Operating System
Addison Wesley Professional ISBN0-201-54979-4
デバイスドライバの次は
と、まぁここまで来てしまうと自分の持っているマシンで
BSDを動かしてみたくなるもので、というか、
わざわざBSDが動いていないマシンを買ってみた。
Be,Inc.のBeBoxである。BeOSという新しいOSや、
PowerPCが2個載っているマルチプロセッサマシンというのも購入動機であったし、
沖氏(注: まさか同じ特集記事を書く日が来るとは。)が
NetBSDを移植されそうでいて移植されていない、という点も購入の決め手となった。
CPU以外はIBM PC/AT互換機と言えるし、NetBSDがPowerPCに対応している、
自分でも動かすことができるのではないか、と。
(注: BeBox以外はことごとく失敗または途中で飽きてしまっているが、
BeBox以降「NetBSDが動きそうだけどまだ動いてない」というモノを
買ってしまう癖がついてしまった。
Geofox、PRESARIO213、PocketPostPet、Dreamcast、...)
カーネルの移植にあたり最も重要なことは、
ターゲットマシンのCPUをすべてのっとることができるかどうか、である。
BeBoxではすでにLinuxPPCが動作していたので、その点は心配なかった。
のっとるためのプログラムはbinutils、gccでクロスコンパイルできる
と思って間違いないだろうが、ここができないとなると
コンパイラを探す、移植するところからはじめなければならない。
ターゲットプログラムをコンパイルできたならば、
それを起動させる方法を見つける必要がある。BeBoxでは
binutils、gcc、LinuxPPCのブートプログラムを利用させてもらった
(カーネルが起動するようになってから、
Be,Inc.がBeBoxでOSを起動させるためのドキュメントを公開していたことに
気付いたと言う後日談がある。情報収集は怠らない方が良いだろう)。
物理的にアクセスできるモノであれば、
思いきって改造してしまったり、実行ファイルを特定のファイルパスに
おくだけで良かったり、OSやアプリケーションの「穴」を利用したりといった、
何かしらの方法でCPUをのっとれるのではないだろうか。
CPUをのっとる、つまり自分の作ったブートプログラムを特権レベルで
動作させることができれば、次はカーネルに制御をうつす方法を考える。
PCのBIOSに相当する機能が提供されていれば、カーネルをメモリ上に置くことは
造作もないだろうし、CPUから先のデバイスアクセス方法がわかれば、
カーネルをメモリに読み込むブートプログラムを作ることが可能だろう。
BeBoxではBIOSに相当するものが入っていたが、
内容が公開されていなかったため、フロッピーディスクドライブの
デバイスドライバを作成し、フロッピーディスクからカーネルを起動させた。
移植作業途中でブートプログラム自身にカーネルをくっつけるという
アイディアを見つけてからは、もっぱらその方法でカーネルを起動させている。
以上のようにCPUをのっとる方法やブートプログラムの作り方は
ターゲットに依存するため、ターゲット毎に試行錯誤することになると思うが、
ブートプログラム自体(CPUやデバイスを初期化してC言語のプログラムに
制御をうつす処理など)に必要なアセンブラや、
ブートプログラムのファイル形式やメモリ上の配置などの
基礎知識としてはターゲットCPU、チップセットのマニュアルや
次の書籍を読むと良いだろう。
・コンピュータの構成と設計(上) 日経BP ISBN4-8222-8056-X
(下) ISBN4-8222-8057-8
・Linkers & Loaders オーム社 ISBN4-274-06437-9
カーネル移植
カーネルが起動してしまえばこっちのもの。あとは動くように
カーネルを変更していくだけだ。第一目標はprintf出力を自分の目で拝むこと。
RS232などのシリアルや、イーサネットなどのネットワークデバイス、
ビデオコンソールデバイスなどのデバイスドライバを作成することに
なるだろう(そこまでいかずgetc、putcなどでいい場合もある)。
BeBoxではPowerPCの先にIBM PC/AT互換機がぶらさがっているという
アーキテクチャ構造そのままに、NetBSD/powerpc(現在はofppc)にNetBSD/i386
を繋げていくという手法を取った。printfはあっという間に出力された。
NetBSDのソースさまさまである。
次の目標はシングルユーザーモードで起動することだろうか。
筆者はここで多くの時間を費やした。NetBSDはマシン非依存(MI)部、
マシン依存(MD)部に大きく分けることができるが、カーネル移植中に
マシン非依存部で困ったことが起きた場合は、間違いなくマシン依存部の、
しかも自分が書き換えた場所が原因である、と言うのは言い過ぎだろうか。
一番はまったところは、仮想メモリシステムの一部であるpmapの
マシン依存部である。ここがしっかりしていないと、カーネルが
あらゆるところで予想もしない落ち方をする。今では
BSD magazineのバックナンバーで仮想メモリシステムに関する記事を
読めるわけであるから、是非ともカーネルソースコードを読む際に利用して欲しい。
次に困ったことと言えば、
デバイスドライバやファイルシステムなど多くの場面で
表面化することとして、エンディアン(バイトオーダー)[図]に関する問題がある。
----図---------------------------------------------
0x12345678 というワードデータを
アドレス 0 1 2 3
+--+--+--+--+
|12|34|56|78|
+--+--+--+--+ と格納するのがビッグエンディアン
| | | |
| | | |
--+++-- エンディアンが異なる場合は
| | | | オーダーを変換する必要がある
v v v v
アドレス 0 1 2 3
+--+--+--+--+
|78|56|34|12|
+--+--+--+--+ と格納するのがリトルエンディアン
---------------------------------------------------
BeBoxのCPUはビッグエンディアンで固定されており(PowerPC自体は
バイトオーダーを変更できる)、CPU、チップセットから先は
PCIバス、ISAバスといったリトルエンディアンの世界が広がっている。
デバイスをコントロールする際はたとえばlist2のように
バイトオーダーを変換する必要があるが、
デバイスに読み書きするデータは変換しないなど、
かなり混乱させてもらった。
なお現在のNetBSD/powerpcのbus_space系関数はもっと洗練化されている。
----list2-----------------------------------------------------
/*
* bus space read function
*/
#define SWAP_16(p) ((u_int16_t)((p[1]<<8)|(p[0]<<0)))
#define SWAP_32(p) ((u_int32_t)((p[3]<<24)|(p[2]<<16)|(p[1]<<8)|(p[0]<<0)))
u_int16_t bus_space_read_2(tag, bsh, offset)
bus_space_tag_t tag;
bus_space_handle_t bsh;
bus_size_t offset;
{
u_int16_t val = *(u_int16_t *)(tag + bsh + offset);
u_int8_t *p = (u_int8_t *)&val;
return (SWAP_16(p));
}
u_int32_t bus_space_read_4(tag, bsh, offset)
bus_space_tag_t tag;
bus_space_handle_t bsh;
bus_size_t offset;
{
u_int32_t val = *(u_int32_t *)(tag + bsh + offset);
u_int8_t *p = (u_int8_t *)&val;
return (SWAP_32(p));
}
--------------------------------------------------------------
また、シングルユーザーモードで起動するということは、
カーネルからユーザーランドコードを実行するということである。
そこで最初に実行することになる /bin/sh を用意する方法も
考えなければならない。同一CPUアーキテクチャのユーザーランドバイナリが
ダウンロードできる状態であればそれを利用しよう。もしできなければ
カーネル用に使用しているクロスコンパイラで、ユーザーランドバイナリを
生成できるようにヘッダーやライブラリをそろえる必要があるだろう。
/bin/sh をどこに置いてカーネルに見せるか、という点も考える必要がある。
BeBoxでは、ファイルシステムでエンディアンに関する問題がでないように、
ISO9660ファイルシステムを使用してフロッピーディスク上に置いた。
ネットワークデバイスを使用してNFSファイルシステムを利用するのも良いだろう。
シングルユーザーモードで起動できるようになれば、
マルチユーザーモードで起動できるようにユーザーランド環境を
整えるべくプログラムをクロスコンパイルしていく作業をしたり、
より多くのデバイスドライバをそろえていく作業をすることになるだろう。
こうなると移植作業もほぼ終わり、
他のport同様メインテナンス作業にうつることになる。
と、こんな感じに
「NetBSDが動きそうだけどまだ動いてない」というモノを見つけた場合は、
BSD magazineバックナンバー片手に是非ともカーネル移植に挑戦してみて欲しい。
「FreeBSDが動きそうだけどまだ動いてない」だったり
「OpenBSDが動きそうだけどまだ動いてない」というモノも当然アリだ。
なお、カーネル移植に関するWebページは
Porting BSD UNIX to a New Platform
http://www.teamten.com/lawrence/291.paper/291.paper.html
などをはじめ結構(?)ある。探してみよう。
ソースコード管理
最後にカーネルソースコードをいじるのが大変楽になるものを紹介しておこう。
CVSだ。筆者はNetBSD/beboxをNetBSDのCVSリポジトリーに突っ込むことになるまで
使ったことがなかった。大変だった。新しいソースコードをダウンロードしては
展開し、そこに今までの変更分を上書き展開したり、
diffをつくってpatchをあてたり。自分の変更分と重なっていることに
気付かずに不可解なバグに悩んだこともあった。CVSに限らず、
ソースコードのバージョン管理とローカルでの変更を管理できるツールが
あれば、最新版カーネルをおいかけつつ移植作業を行うという芸当もできる。
是非とも利用して欲しい。
CVSを使ってカーネルソースコードをいじる場合は、
CVS infoの「サードパーティのソースの追っかけ」が参考になる。
http://www.sodan.org/~penny/vc/cvs-ja_13.html#SEC104
----図---------------------------------------------
NetBSD移植作業CVS枝例
main trunc NETBSD
| vendor branch
|
+-------------------------------------+
| |
移植作業 |
| |
| <--------マージ------------ DATE-2003-08-01-00-00
マージ作業 |
| |
移植作業 |
| |
| <--------マージ------------ DATE-2003-08-02-00-00
マージ作業 |
| |
移植作業 |
| |
. .
. .
. .
--------------------------------------------------------------
view raw gistfile1.txt hosted with ❤ by GitHub

買える本はアフィ貼っときますね。しかし、うーん。こんなに絶版になってていいんだろうか。

2014-09-27

英語

金曜日なので、アフィねらいブログを書いてみます。

英語について。

常に100%ネイティブの言うことがわかるわけでも、常に100%言いたいことを英語で言えるわけでもないですけど、まがりなりにも現地法人に現地採用されて、仕事では英語だけ、な状況ですんで、ちょっとくらい英語について書いてもいいかなと思ったわけです。というのは裏の理由で、表の理由はアフィねらいですが。

筆者の英語レベルは、2007年時点のTOEICで675点です。7年前のTOEICの点数かかれても今のレベルを判断しかねますか。判断しかねますね。最近Stack OverflowでReputation 10,000超えたんですが、Stack Overflowに書かれるような質問と、書くべき答えくらいなら、読み書き不自由ありません。でも、良い感じの(だと勝手に思い込んでいる)言い回しがしたいんで、書きたいフレーズを思い浮かべて、そのフレーズを検索して適切に使われているかどうか確認したりしてます。あとPacktPubの英語で書かれた技術書のテクニカルレビューをやりました。

読み書きは問題なくても、しゃべるのは、もっとがんばりましょうレベルです。それでも仕事上でのコミュニケーションは、台本ある舞台みたいなもんで、コンテキストも、想定されるセリフも決まってるようなもんなので、なんとかなってしまいます。レストランでの注文とか。

しかし、それではあらゆる状況には対応できないので、もっと聞き取れて、もっとしゃべれるようになりたいです。Big Bang Theoryを完全に理解するとか。スタートレックなどの知識も必要になりますが。てことで学習するわけですが、ここまでの学習を振り返ると、もっと効率的にできたよなぁ、と思うわけです。

そこでアフィです。これを使って学習すれば効率的にできたなぁ、と思われるアイテムにアフィリエイトリンクを仕込んで紹介することによって、いくばくかのAmazonポイントが得られるのではないかという淡い期待を抱けるのです。


まずは英文法。

プログラミング言語でも、ひとつひとつの細かいAPIを覚えるより、まず、そのプログラミング言語のSyntaxに注目するかと思います。アルファベットが使われているとか、カッコが多いとか、カッコが多いとか、カッコが多いとかですね。カッコが多いって書きたかっただけです。



3ヶ月トピック英会話 ハートで感じる英文法」NHK教育でやってた番組です。出演者のいとうあいこさんは、アバレンジャーの黄色で、鴻上尚史さんは、最近iOSでも出たドラクエ3の歌を歌っていることで有名ですが、この番組では、いわゆる受験英語で勉強した英文法そのものにも、実はニュアンスが含まれている場合があることに気づけます。過去形にすると丁寧さが出る("Can you" vs "Could you")、とか。聞いたことなければ、このDVD必須です。

大西泰斗先生の本/DVDなら、どれでもオススメです。どれでもオススメですが、やはりDVDの方がオススメです。アフィポイントが高いのもポイントですが、含まれているニュアンス自体を感じるには文章より映像+音声の方がいいですから。「ハートで感じる英文法」「ハートで感じる英文法 会話編」両方買っちゃいましょう。100歩ゆずっても、「ハートで感じる英文法」はゆずれません。


次はシャドーイング。「左を制する者は世界を制す」です。特に脈絡はありませんが。まぁそんな感じです。ネイティブがしゃべるのにかぶせて、そのままの音をだす。それだけです。素材は、アフィにならなくて大変残念ですが、"ESL Podcast"がいいです。しゃべってる内容がわからなくても、綴りがわからなくても、まったくかまわず、そっくりそのままの音を出す。自分の声が邪魔にならないようにヘッドホン使っときましょう。ここでノイズキャンセリングヘッドホンでもアフィ紹介すれば、さらにいいはずなのはわかってるのですけど、まぁiPhone付属のイヤホンでいいんじゃないでしょうか。

どうやって出せばいいかわからない音は、考えて試して、考えて試して、ですね。まぁ答えは「日本人のための英語発音完全教本」に載ってますけど。




そしてSkype英会話。シャドーイングで得られた音が通じるかどうか試します。DMM英会話が今年一杯半額なのでいいかもしれません。わたしはラングリッチをずーっと使ってます。

Skype英会話の重要な点は、いかに先生を楽しませるか笑わせるか、ではないでしょうか。笑われる、じゃなくて、笑わせる。

あ、Skype英会話には、アフィはる余地がない!


アメリカ的なこと。



English the American Way: A Fun ESL Guide to Language and Culture in the U.S.」を読むと、どうしてDMV(日本でいうところの陸運局+免許センター)が皆に"好かれて"いるのか、交通違反で捕まった時の具体例、緊急電話のかけかた、などなどがわかります。CDもついているので、シャドーイング素材としても使えます。



Fluent English」でも、どうやって交通違反して、どのように捕まるのか、捕まったらどうなるか、わかります。人は如何に自動応答電話でキレるのか、とか。

このへんは、普通に英語学習しててもわからないところ。


英単語。

ターゲット3000とか見ながら英単語カード作って、地道に覚えました。いや。すみません嘘をつきました。無理。覚えられませんて。単語帳買ったり、英単語記憶アプリ買ったり、語源から覚えてみたり、いろんなのをなんども試しましたが、英単語なんて覚えられません。無理。諦めよう。

多読がいいと思うんですよね。



多読の方が、単語覚えるより面白くて修行感が少ない。耐えられる。「多聴多読マガジン」に、いろいろ載ってます。


てな感じにアフィってみました。

2014-08-24

dispatch_group_enterとdispatch_group_leaveの呼び出し回数が揃ってないとクラッシュ?

dispatch_group_enterとdispatch_group_leaveの呼び出し回数が揃ってないとクラッシュするという、えー、それホント?的な質問がstack overflowに上がってました。

Why is it necessary to call dispatch_group_leave the same number of times as dispatch_group_enter?

こんなコードを試してみると、実際クラッシュ (要ARC)。

/* test.m */
#include <dispatch/dispatch.h>

int main()
{
    {
        dispatch_group_t group = dispatch_group_create();
        dispatch_group_enter(group);
        //dispatch_group_leave(group);
    }
    return 0;
}

dispatch_groupはdispatch_semaphore使ってて、dispatch_semaphoreはsignalとwaitの呼び出し回数が揃ってない状態でdispatch_releaseするのは禁止(実装上そーなってて強制クラッシュされる)。てな感じでした。