<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>taichino.com</title>
	<atom:link href="http://taichino.com/feed" rel="self" type="application/rss+xml" />
	<link>http://taichino.com</link>
	<description>永遠のネバーランド</description>
	<lastBuildDate>Thu, 17 May 2012 20:41:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>[アメリカ日記6] NJ州で運転免許を取った</title>
		<link>http://taichino.com/daily-life/daily-life-in-america/3125</link>
		<comments>http://taichino.com/daily-life/daily-life-in-america/3125#comments</comments>
		<pubDate>Thu, 17 May 2012 20:41:45 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[アメリカ日記]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=3125</guid>
		<description><![CDATA[無事にアメリカの免許をゲットしまして、ようやくパスポートを持ち歩かなくてもIDの確認ができるようになりました。運転もできるようになったので、何か活動する為の障害はかなり減少したような気がします。例によってログを残しておきます。 アメリカは州ごとに交通ルールが違うというカオスな国です。例えばNJ州では赤信号でも停止後に右折(日本の左折)しなければなりませんが、隣のNY州では右折は禁止です。なんでも効率が重視されている雰囲気のアメリカでこの効率の悪さはハンパない気がします。僕はNJ州で免許を取りましたので、そのときの話を書きます。 勉強 NJ州では、外国の運転免許を持っていると実技試験は免除されます。したがって知識テストと視力検査に合格すれば運転免許を取得できます。試験は4択問題が50問で、40問以上に正解すると合格です。筆記ではなくタッチスクリーンのパソコン(Windows)でテストします。なんと日本語でテストを受けれたのですが肝心の訳がめちゃくちゃで、問題の半分は英語の原文を見て回答しました。合否はその場で即座に判定されます。試験範囲は下記のマニュアル全体で、残念ながら230ページ程あります。 New Jersey Driver Manual マニュアルを上から眺めても良いのですが、効率が良くないので問題集を解きながら適宜マニュアルを参照するのが良いかと思います。僕の場合、奥さんが会社の人から貰ってきた問題集を貰えたのですが、オンラインにもたくさん問題があります。個人的にはココがオススメです。あと最後の確認用に、こちらの１問１答もオススメです。 奥さんが一夜漬けで受かったという事もあって、割と入念に準備したので楽勝かと思っていたのですが、当日の問題は難しかったです。あまり運転とは関係のないので、スキップしていたSpecial Learner PermitやGraduated Driver Licenseなどの条件や制限など、NJ州特有の免許のルールが数問出題されていて焦りました。割とまんべんなく出題された印象なので、まじめに勉強した方がいいです。 持っていくもの 6ポイント分のID 僕はパスポート(4pt) + SSNカード(1pt) + 銀行のATMカード(1pt) 住所確認書類 僕は銀行のaccount statement 日本の免許証 L1ビザの人の同行 L2ビザの人はL1ビザの人の同行が必要なので注意してください。 また住所確認書類に苦労しました。公共料金の請求書は奥さんが契約しているので僕の名前が乗っている請求書がありません。アパートのリース契約書の原本はリース会社のポリシーにより貰えません。結局銀行にメールを書いてaccount statementを送ってもらいました。 リース契約書は原本じゃなくてもコピーにはんこを押してもらったり、補助書類をアパートの管理人から貰っておくと大丈夫だとネットに書いている人が複数人見つかったので、最初はそれでトライしてみたのですが玉砕しました。担当者にもよる気がしますが安全ではないです。 当日 試験は近くにあるMVCに行きます。場所にも寄るかと思いますがトータルで3~5時間くらいはかかります。MVCオフィスによってプロセスが多少違う気がしますが、僕の場合は以下のような手順でした。 Application Formを貰って記入 受付でID確認 テスト受験料支払い($10) テスト 免許発行料支払い($19.5) この各手順で30m〜1hほど待ちます。特に最初のApplication Formを貰うまでが長いです。最後の免許発行料の支払いが終わると5分くらいで免許が貰えました。安いし軽い感じでした。 実は1度失敗しています。上記の手順2で、奥さん(L1保持者)の同行が必要と言われて、慌てて奥さんに来てもらったものの、リース契約書のコピーに管理人からの手紙を添えた書類が受け付けてもらえず、3hも並んだ末にテストも受けれず却下されました。 あとApplication Formでドナー登録にチェックすると少しだけ免許発行料が安くなりました。$19.5は安くなった結果です。ドナー登録しないと$21くらいだった気がします。なんでもお金に換算できるという凄くアメリカっぽい話ですね。 まとめ 何はともあれ無事に免許取れたのでよかったです。これで日本食スーパーに手軽に行けるようになるので嬉しいです。言わなくても良いですが言いたいので言いますが、日本人の事をマニュアル人間だと言っているアメリカ人をテレビで見ましたが、アメリカ人も十分にマニュアル人間でした。 次は就労許可証の取得を目指します。]]></description>
			<content:encoded><![CDATA[<p>無事にアメリカの免許をゲットしまして、ようやくパスポートを持ち歩かなくてもIDの確認ができるようになりました。運転もできるようになったので、何か活動する為の障害はかなり減少したような気がします。例によってログを残しておきます。</p>
<p><a href="http://taichino.com/wp-content/uploads/2012/05/driver_license.jpg"><img src="http://taichino.com/wp-content/uploads/2012/05/driver_license.jpg" alt="ニュージャージーの運転免許証" title="driver_license" width="648" height="486" class="alignnone size-full wp-image-3141" /></a></p>
<p><span id="more-3125"></span></p>
<p>アメリカは州ごとに交通ルールが違うというカオスな国です。例えばNJ州では赤信号でも停止後に右折(日本の左折)しなければなりませんが、隣のNY州では右折は禁止です。なんでも効率が重視されている雰囲気のアメリカでこの効率の悪さはハンパない気がします。僕はNJ州で免許を取りましたので、そのときの話を書きます。</p>
<h3>勉強</h3>
<p>NJ州では、外国の運転免許を持っていると実技試験は免除されます。したがって知識テストと視力検査に合格すれば運転免許を取得できます。試験は4択問題が50問で、40問以上に正解すると合格です。筆記ではなくタッチスクリーンのパソコン(Windows)でテストします。なんと日本語でテストを受けれたのですが肝心の訳がめちゃくちゃで、問題の半分は英語の原文を見て回答しました。合否はその場で即座に判定されます。試験範囲は下記のマニュアル全体で、残念ながら230ページ程あります。</p>
<p><strong><a href="http://www.state.nj.us/mvc/pdf/Manuals/drivermanual.pdf" title="Drivers Manual of NJ" target="_blank">New Jersey Driver Manual</a></strong></p>
<p>マニュアルを上から眺めても良いのですが、効率が良くないので問題集を解きながら適宜マニュアルを参照するのが良いかと思います。僕の場合、奥さんが会社の人から貰ってきた問題集を貰えたのですが、オンラインにもたくさん問題があります。個人的には<a href="http://www.edisondriving.com/test/online.shtml " title="NJ州の運転免許のオンラインテスト " target="_blank">ココ</a>がオススメです。あと最後の確認用に、<a href="http://www.skillfuldrivingschool.com/sample_dmv_test.php" title="NJ州の運転免許の一問一答" target="_blank">こちらの１問１答</a>もオススメです。</p>
<p>奥さんが一夜漬けで受かったという事もあって、割と入念に準備したので楽勝かと思っていたのですが、当日の問題は難しかったです。あまり運転とは関係のないので、スキップしていたSpecial Learner PermitやGraduated Driver Licenseなどの条件や制限など、NJ州特有の免許のルールが数問出題されていて焦りました。割とまんべんなく出題された印象なので、まじめに勉強した方がいいです。</p>
<h3>持っていくもの</h3>
<ul>
<li>
<a href="http://www.state.nj.us/mvc/Licenses/6PointID.htm" title="ID of NJ Drivers License" target="_blank">6ポイント分のID</a><br />
僕はパスポート(4pt) + SSNカード(1pt) + 銀行のATMカード(1pt)
</li>
<li>
<a href="http://www.state.nj.us/mvc/Licenses/DocumentSelector/doc_address.htm" title="address proof" target="_blank">住所確認書類</a><br />
僕は銀行のaccount statement
</li>
<li>日本の免許証</li>
<li>L1ビザの人の同行</li>
</ul>
<p>L2ビザの人はL1ビザの人の同行が必要なので注意してください。</p>
<p>また住所確認書類に苦労しました。公共料金の請求書は奥さんが契約しているので僕の名前が乗っている請求書がありません。アパートのリース契約書の原本はリース会社のポリシーにより貰えません。結局銀行にメールを書いてaccount statementを送ってもらいました。</p>
<p>リース契約書は原本じゃなくてもコピーにはんこを押してもらったり、補助書類をアパートの管理人から貰っておくと大丈夫だとネットに書いている人が複数人見つかったので、最初はそれでトライしてみたのですが玉砕しました。担当者にもよる気がしますが安全ではないです。</p>
<h3>当日</h3>
<p>試験は近くにある<a href="http://www.state.nj.us/mvc/index.htm" title="MVC in NJ" target="_blank">MVC</a>に行きます。場所にも寄るかと思いますがトータルで3~5時間くらいはかかります。MVCオフィスによってプロセスが多少違う気がしますが、僕の場合は以下のような手順でした。</p>
<ol>
<li>Application Formを貰って記入</li>
<li>受付でID確認</li>
<li>テスト受験料支払い($10)</li>
<li>テスト</li>
<li>免許発行料支払い($19.5)</li>
</ol>
<p>この各手順で30m〜1hほど待ちます。特に最初のApplication Formを貰うまでが長いです。最後の免許発行料の支払いが終わると5分くらいで免許が貰えました。安いし軽い感じでした。</p>
<p>実は1度失敗しています。上記の手順2で、奥さん(L1保持者)の同行が必要と言われて、慌てて奥さんに来てもらったものの、リース契約書のコピーに管理人からの手紙を添えた書類が受け付けてもらえず、3hも並んだ末にテストも受けれず却下されました。</p>
<p>あとApplication Formでドナー登録にチェックすると少しだけ免許発行料が安くなりました。$19.5は安くなった結果です。ドナー登録しないと$21くらいだった気がします。なんでもお金に換算できるという凄くアメリカっぽい話ですね。</p>
<h3>まとめ</h3>
<p>何はともあれ無事に免許取れたのでよかったです。これで日本食スーパーに手軽に行けるようになるので嬉しいです。言わなくても良いですが言いたいので言いますが、日本人の事をマニュアル人間だと言っているアメリカ人をテレビで見ましたが、アメリカ人も十分にマニュアル人間でした。</p>
<p>次は就労許可証の取得を目指します。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/daily-life/daily-life-in-america/3125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginxのngx_cache_purgeで404が出てハマった話</title>
		<link>http://taichino.com/engineer-life/3112</link>
		<comments>http://taichino.com/engineer-life/3112#comments</comments>
		<pubDate>Thu, 17 May 2012 18:45:56 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技術]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ngx_cache_purge]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=3112</guid>
		<description><![CDATA[先日WordPressをnginxのプロキシキャッシュで高速化してみました。その後、新しい記事の投稿時などにキャッシュを消す為にngx_cache_purgeモジュールをインストールしました。それで万事解決と思っていたのですが、nginxのエラーログを見ていて、purge時に404エラーが返っていて、キャッシュが削除できていない事に気づきました。結果的には設定がミスっていただけなのですが、かなりハマったのでメモしておきます。 結論から言うと、プロキシの設定を以下のように行う必要があります。何にハマっていたかというと、proxy_cache_keyの値とproxy_cache_pargeのkeyの値が合ってなかったという恥ずかしい話でした。proxy_cache_keyのデフォルト値は$scheme$proxy_host$request_uriなのですが、proxy_cache_purgeは$1$is_args$argsなので、何も考えずにその辺から値をコピってくると動かないという。 location / { proxy_cache blog_cache; proxy_cache_key $uri$is_args$args; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:10001; } location ~ /purge(/.*) { allow 127.0.0.1; deny all; proxy_cache_purge blog_cache $1$is_args$args; } ngx_cache_purgeの挙動を何も解っていなかったのも原因なので、もう少しだけ書いておきます。上記設定の場合に、http://taichino.com/feedのキャッシュを作って消すという手順を確認してみます。 http://taichino.com/feedにアクセス /var/cache/nginx/0/4e/da6f7b5015a12fe724dc34140c8664e0というキャッシュが生成される http://taichino.com/purge/feedにアクセス。成功したらSuccessful purgeというページが表示される 2で確認したキャッシュが削除される なおWordPressのNginx Proxy Cache Purgeプラグインは、このルールに従って順次/purge/以下のURLにアクセスして、キャッシュを消しているだけです。落ち着いたら何でも無い事にハマり倒してしまう癖が中々直らず困ったものです。]]></description>
			<content:encoded><![CDATA[<p>先日<a href="http://taichino.com/engineer-life/3025" title="wordpress + nginx">WordPressをnginxのプロキシキャッシュで高速化</a>してみました。その後、新しい記事の投稿時などにキャッシュを消す為に<a href="http://taichino.com/engineer-life/3068" title="ngx_cache_purgeをインストールする">ngx_cache_purgeモジュールをインストール</a>しました。それで万事解決と思っていたのですが、nginxのエラーログを見ていて、purge時に404エラーが返っていて、キャッシュが削除できていない事に気づきました。結果的には設定がミスっていただけなのですが、かなりハマったのでメモしておきます。</p>
<p><span id="more-3112"></span></p>
<p>結論から言うと、プロキシの設定を以下のように行う必要があります。何にハマっていたかというと、<a href="http://wiki.nginx.org/HttpProxyModule#proxy_cache_key" title="proxy_cache_key settings" target="_blank">proxy_cache_key</a>の値と<a href="http://wiki.nginx.org/NginxChsCachePurge" title="proxy_cache_purge settings" target="_blank">proxy_cache_parge</a>のkeyの値が合ってなかったという恥ずかしい話でした。proxy_cache_keyのデフォルト値は$scheme$proxy_host$request_uriなのですが、proxy_cache_purgeは$1$is_args$argsなので、何も考えずにその辺から値をコピってくると動かないという。</p>
<pre class="brush: text; gutter: false; first-line: 1; highlight: []; html-script: false">
location / {
    proxy_cache         blog_cache;
    proxy_cache_key     $uri$is_args$args;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    Host            $host;
    proxy_pass          http://127.0.0.1:10001;
}

location ~ /purge(/.*) {
    allow       127.0.0.1;
    deny        all;
    proxy_cache_purge   blog_cache      $1$is_args$args;
}
</pre>
<p>ngx_cache_purgeの挙動を何も解っていなかったのも原因なので、もう少しだけ書いておきます。上記設定の場合に、http://taichino.com/feedのキャッシュを作って消すという手順を確認してみます。</p>
<ol>
<li>http://taichino.com/feedにアクセス</li>
<li>/var/cache/nginx/0/4e/da6f7b5015a12fe724dc34140c8664e0というキャッシュが生成される</li>
<li>http://taichino.com/purge/feedにアクセス。成功したらSuccessful purgeというページが表示される</li>
<li>2で確認したキャッシュが削除される</li>
</ol>
<p>なおWordPressのNginx Proxy Cache Purgeプラグインは、このルールに従って順次/purge/以下のURLにアクセスして、キャッシュを消しているだけです。落ち着いたら何でも無い事にハマり倒してしまう癖が中々直らず困ったものです。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/engineer-life/3112/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PythonでGoogleカレンダーのAPIを叩く</title>
		<link>http://taichino.com/programming/python-programming/3101</link>
		<comments>http://taichino.com/programming/python-programming/3101#comments</comments>
		<pubDate>Wed, 16 May 2012 02:52:40 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[google calendar]]></category>
		<category><![CDATA[oauth]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=3101</guid>
		<description><![CDATA[ちょっとカレンダーを使った実験をしたくてGoogle CalendarのAPIを叩いてみたのですが、何度かバージョンが変わっている事もあって、少し手こずったのでメモしておきます。 まずAPIを叩く前に、https://code.google.com/apis/console/ にアクセスして使用するサービスを有効にしておきます。 現時点の最新APIバージョンは3なのですが、このバージョンのAPIを叩くにはgoogle-api-python-clientモジュールを使います。gdataという如何にもなモジュールもあるのですが、これは古いバージョンのAPI用なので注意しましょう。 $ pip install google-api-python-client OAuthの認証周りが何となく複雑で面倒な気がしますが、コードを見ると別に特に難しくはないですね。基本的な処理の流れは以下の通りです。OAuthの認証をする際のscopeの値が解らなくて少し苦労しました。 OAuth認証経由でCredentialsを作成 Credentialsからserviceオブジェクトを取得 リファレンスを見ながらAPI叩く #!/usr/bin/env python # -*- coding: utf-8 -*- import time import httplib2 from apiclient.discovery import build from oauth2client.client import OAuth2WebServerFlow from oauth2client.file import Storage from oauth2client.tools import run def main(): # get credentials with oauth storage = Storage(&#039;calendar.dat&#039;) credentials = storage.get() if not [...]]]></description>
			<content:encoded><![CDATA[<p>ちょっとカレンダーを使った実験をしたくてGoogle CalendarのAPIを叩いてみたのですが、何度かバージョンが変わっている事もあって、少し手こずったのでメモしておきます。</p>
<p><span id="more-3101"></span></p>
<p>まずAPIを叩く前に、https://code.google.com/apis/console/ にアクセスして使用するサービスを有効にしておきます。</p>
<p><a href="http://taichino.com/wp-content/uploads/2012/05/google_apis.png"><img src="http://taichino.com/wp-content/uploads/2012/05/google_apis.png" alt="google apis" title="google_apis" width="737" height="180" class="alignnone size-full wp-image-3102" /></a></p>
<p>現時点の最新APIバージョンは3なのですが、このバージョンのAPIを叩くには<a href="http://code.google.com/p/google-api-python-client/" title="google api python client" target="_blank">google-api-python-clientモジュール</a>を使います。gdataという如何にもなモジュールもあるのですが、これは古いバージョンのAPI用なので注意しましょう。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ pip <span style="color: #c20cb9; font-weight: bold;">install</span> google-api-python-client</pre></div></div>

<p>OAuthの認証周りが何となく複雑で面倒な気がしますが、コードを見ると別に特に難しくはないですね。基本的な処理の流れは以下の通りです。OAuthの認証をする際のscopeの値が解らなくて少し苦労しました。</p>
<ol>
<li>OAuth認証経由でCredentialsを作成</li>
<li>Credentialsからserviceオブジェクトを取得</li>
<li><a href="https://developers.google.com/google-apps/calendar/" title="API of google calendar" target="_blank">リファレンス</a>を見ながらAPI叩く</li>
</ol>
<pre class="brush: python; gutter: false; first-line: 1; highlight: []; html-script: false">
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import httplib2
from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.file import Storage
from oauth2client.tools import run

def main():

    # get credentials with oauth
    storage = Storage(&#039;calendar.dat&#039;)
    credentials = storage.get()
    if not credentials or credentials.invalid:
        flow = OAuth2WebServerFlow(
            client_id=&#039;595726754076.apps.googleusercontent.com&#039;,
            client_secret=&#039;_KaonvogNJSIaUBv5PTAa8ue&#039;,
            scope=[&#039;https://www.googleapis.com/auth/calendar&#039;],
            user_agent=&#039;Calendar Sample/1.0&#039;)
        credentials = run(flow, storage)

    http = httplib2.Http()
    credentials.authorize(http)

    service = build(&#039;oauth2&#039;, &#039;v2&#039;, http=http)
    userinfo = service.userinfo().get().execute()

    # カレンダーのイベント列挙
    sample_exists = False
    service = build(&#039;calendar&#039;, &#039;v3&#039;, http=http)
    calendars = service.calendarList().list().execute()
    for calendar in calendars[&#039;items&#039;]:
        events = service.events().list(calendarId=calendar[&#039;id&#039;]).execute()
        for event in events[&#039;items&#039;]:
            print event[&#039;summary&#039;].encode(&#039;utf-8&#039;)
            if event[&#039;summary&#039;] == &#039;event_from_api&#039;:
                sample_exists = True

    # カレンダーにイベントを追加
    if not sample_exists:
        now = time.time()
        print now
        event = {
            &#039;start&#039;: {&#039;date&#039;:&#039;2012-05-15&#039;},
            &#039;end&#039;:   {&#039;date&#039;:&#039;2012-05-16&#039;},
            &#039;summary&#039;: &#039;event_from_api&#039;
            }
        target_calendar_id = calendars[&#039;items&#039;][0][&#039;id&#039;]
        created_event = service.events().insert(calendarId=target_calendar_id, body=event).execute()
        print created_if

if __name__ == &#039;__main__&#039;:
    main()
</pre>
<p>実はGoogleのAPI初めて叩いたんですけど、他のサービスも同じノリで使えるのでgoogle-api-python-client覚えるだけで、色々できるようになるので良いですね。一度  <a href="https://code.google.com/apis/console/" title="google apis" target="_blank">https://code.google.com/apis/console/</a> をみてサービスのリスト眺めておくと後々役に立つ事があるかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/python-programming/3101/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[アメリカ日記5] SSNをゲットした話</title>
		<link>http://taichino.com/daily-life/daily-life-in-america/3086</link>
		<comments>http://taichino.com/daily-life/daily-life-in-america/3086#comments</comments>
		<pubDate>Fri, 11 May 2012 01:24:45 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[アメリカ日記]]></category>
		<category><![CDATA[social security number]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=3086</guid>
		<description><![CDATA[先週の話なんですが、ようやくSSNを取得できました。 アメリカではSSNが国民のIDになっているようで、事あるごとにSSNの提示を求められます。SSNが無いと携帯電話の契約もできないし、就労許可証の申請もできません。運転免許を取得する際も大抵の場合必要です。なので真っ先に取得しようと試みたのですが、思ったよりも手こずったので軽くメモを残しておきます。 時系列でおこった事を書きます。何度か書いていますが僕たちは奥さんがL1ビザ保持者で、僕は家族用のL2ビザを持っています。 2012.3.5 奥さんと一緒にSSN事務局に行ってSSN申請。パスポートと日本語の戸籍謄本のみを提示。L1の奥さんには1週間程度でSSNが発行されるが、僕のは戸籍謄本を翻訳して婚姻関係の確認をしてからなので1ヶ月くらいかかると説明を受ける。翻訳もやってくれるし、思いのほか簡単に申請は完了。 2012.3.9 奥さんのSSNが発行される。L1保持者強い。 2012.3.30 僕のSSN申請がリジェクトされる。理由は奥さんとの婚姻関係が認められないとのこと。偽装結婚を疑われたのかも。事務所に電話してみると、とにかく婚姻証明(Marrige Certificate)が必要だとの一点張り。日本には婚姻証明はなくて戸籍謄本で婚姻関係の証明もするんだと説明しても通じず。調べてみると在米日本領事館で戸籍謄本から、婚姻証明を作ってもらえる事がわかった。 2012.4.17 再渡米後に日本領事館で婚姻証明書を取得。日本語の戸籍謄本が必要で費用は15ドル。僕はSSN事務局の戸籍謄本の翻訳プロセスに何らかの問題があると考えていたので、同時に戸籍謄本の翻訳も用意して領事館で翻訳証明も取得しようとしたが、領事館の人に翻訳証明高いし(54ドル)、それはやり過ぎと諭される。なおL2ビザの人はL1の人の分のパスポートも必要なので注意。 2012.4.17 同日、婚姻証明を持って再度SSN事務局へ。必要な申請書類を書き直して再申請という扱いに。この時は偽装結婚を疑われたという事に腹を立ててて、うっかり入国直後にSSN事務局へ行ってしまった為、入国者情報がSSN事務局にまだ来てなくて、それが来次第の処理になると説明される。最大で4-6週間かかるよとのこと。 2012.5.1 無事に僕の分のSSNが発行される。4-6週間と言われたけど2週間できた。 ちなみにリジェクトされた時に来た通知がこれです。 結局リジェクトの理由はわからずじまいで、ネットを少し検索した感じだと、L2保持者が婚姻証明なくてもSSN取得されているようなので腑には落ちません。まぁ無事にSSN発行されましたし、偽装結婚疑われるっていう話のネタができたので良いんですけどね。僕が言いたいのは、米国大使館がL2ビザ発行してる時点で僕と奥さんの婚姻関係は証明されているので、それを疑うって言うのは、米国大使館の処理にケチつけてる事になるんじゃないのと、そういう事です。 担当者によってルールが微妙に変化するようなので確実な事は言えないのですが、L2ビザでSSNを申請する人は事前に日本領事館で婚姻証明を取得しておくと、スムーズに処理が進む可能性が高くなりそうですね。 次は自動車免許の取得を目指します。]]></description>
			<content:encoded><![CDATA[<p>先週の話なんですが、ようやく<a href="http://ja.wikipedia.org/wiki/%E7%A4%BE%E4%BC%9A%E4%BF%9D%E9%9A%9C%E7%95%AA%E5%8F%B7" title="Social Securty Number in Wikipedia" target="_blank">SSN</a>を取得できました。</p>
<p><a href="http://taichino.com/wp-content/uploads/2012/05/ssn_card.jpg"><img src="http://taichino.com/wp-content/uploads/2012/05/ssn_card.jpg" alt="Social Security Number Card" title="SSN Card" width="640" height="478" class="alignnone size-full wp-image-3089" /></a></p>
<p>アメリカではSSNが国民のIDになっているようで、事あるごとにSSNの提示を求められます。SSNが無いと携帯電話の契約もできないし、就労許可証の申請もできません。運転免許を取得する際も大抵の場合必要です。なので真っ先に取得しようと試みたのですが、思ったよりも手こずったので軽くメモを残しておきます。</p>
<p><span id="more-3086"></span></p>
<p>時系列でおこった事を書きます。何度か書いていますが僕たちは奥さんがL1ビザ保持者で、僕は家族用のL2ビザを持っています。</p>
<ul>
<li><strong>2012.3.5</strong><br />
奥さんと一緒にSSN事務局に行ってSSN申請。パスポートと日本語の戸籍謄本のみを提示。L1の奥さんには1週間程度でSSNが発行されるが、僕のは戸籍謄本を翻訳して婚姻関係の確認をしてからなので1ヶ月くらいかかると説明を受ける。翻訳もやってくれるし、思いのほか簡単に申請は完了。
</li>
<li><strong>2012.3.9</strong><br />
奥さんのSSNが発行される。L1保持者強い。
</li>
<li><strong>2012.3.30</strong><br />
僕のSSN申請がリジェクトされる。理由は奥さんとの婚姻関係が認められないとのこと。偽装結婚を疑われたのかも。事務所に電話してみると、とにかく婚姻証明(Marrige Certificate)が必要だとの一点張り。日本には婚姻証明はなくて戸籍謄本で婚姻関係の証明もするんだと説明しても通じず。調べてみると<a href="http://www.ny.us.emb-japan.go.jp/jp/c/08.html" title="在NY日本領事館の婚姻証明発行の説明" target="_blank">在米日本領事館で戸籍謄本から、婚姻証明を作ってもらえる</a>事がわかった。
</li>
<li><strong>2012.4.17</strong><br />
再渡米後に日本領事館で婚姻証明書を取得。日本語の戸籍謄本が必要で費用は15ドル。僕はSSN事務局の戸籍謄本の翻訳プロセスに何らかの問題があると考えていたので、同時に戸籍謄本の翻訳も用意して領事館で翻訳証明も取得しようとしたが、領事館の人に翻訳証明高いし(54ドル)、それはやり過ぎと諭される。なおL2ビザの人はL1の人の分のパスポートも必要なので注意。
</li>
<li><strong>2012.4.17</strong><br />
同日、婚姻証明を持って再度SSN事務局へ。必要な申請書類を書き直して再申請という扱いに。この時は偽装結婚を疑われたという事に腹を立ててて、うっかり入国直後にSSN事務局へ行ってしまった為、入国者情報がSSN事務局にまだ来てなくて、それが来次第の処理になると説明される。最大で4-6週間かかるよとのこと。
</li>
<li><strong>2012.5.1</strong><br />
無事に僕の分のSSNが発行される。4-6週間と言われたけど2週間できた。
</li>
</ul>
<p>ちなみにリジェクトされた時に来た通知がこれです。</p>
<p><a href="http://taichino.com/wp-content/uploads/2012/05/ssn_reject.jpg"><img src="http://taichino.com/wp-content/uploads/2012/05/ssn_reject.jpg" alt="Social Security Number Rejected" title="ssn_reject" width="478" height="640" class="alignnone size-full wp-image-3090" /></a></p>
<p>結局リジェクトの理由はわからずじまいで、ネットを少し検索した感じだと、L2保持者が婚姻証明なくてもSSN取得されているようなので腑には落ちません。まぁ無事にSSN発行されましたし、偽装結婚疑われるっていう話のネタができたので良いんですけどね。僕が言いたいのは、米国大使館がL2ビザ発行してる時点で僕と奥さんの婚姻関係は証明されているので、それを疑うって言うのは、米国大使館の処理にケチつけてる事になるんじゃないのと、そういう事です。</p>
<p>担当者によってルールが微妙に変化するようなので確実な事は言えないのですが、L2ビザでSSNを申請する人は事前に日本領事館で婚姻証明を取得しておくと、スムーズに処理が進む可能性が高くなりそうですね。</p>
<p>次は自動車免許の取得を目指します。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/daily-life/daily-life-in-america/3086/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PythonからRRDToolを叩く</title>
		<link>http://taichino.com/programming/python-programming/3079</link>
		<comments>http://taichino.com/programming/python-programming/3079#comments</comments>
		<pubDate>Thu, 10 May 2012 01:20:28 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[pyrrd]]></category>
		<category><![CDATA[rrdtool]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=3079</guid>
		<description><![CDATA[おれおれサーバリソース監視ツールを書こうとしていて、Pythonのラッパーモジュール無いの？と思って探してみると、PyPIにはpy-rrdtoolとPyRRDが登録されていました。最初はpy-rrdtoolを試してみたのですが、値を取らないオプション(&#8211;rigid)を渡せない等、若干問題があったので、PyRRDを使ってみる事にしました。 コマンドラインで言うと以下の処理をPyRRDを使って書き換えてみます。ロードアベレージ用のRRDファイルを作成、データの更新、グラフの作成を行っています。 rrdtool create load.rrd \ --start `date +%s --date &#34;2012-05-08&#34;` \ --step 300 \ DS:load:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:750 \ RRA:AVERAGE:0.5:6:750 \ RRA:AVERAGE:0.5:24:750 \ RRA:AVERAGE:0.5:288:750 \ RRA:MAX:0.5:1:750 \ RRA:MAX:0.5:6:750 \ RRA:MAX:0.5:24:750 \ RRA:MAX:0.5:288:750 \ RRA:MIN:0.5:1:750 \ RRA:MIN:0.5:6:750 \ RRA:MIN:0.5:24:750 \ RRA:MIN:0.5:288:750 rrdtool update cpu.rrd --template CPU_USER:CPU_SYSTEM `date +%s`:`snmpget -c public -v2c -Oqv localhost ssCpuRawUser.0`:`snmpget -c public [...]]]></description>
			<content:encoded><![CDATA[<p>おれおれサーバリソース監視ツールを書こうとしていて、Pythonのラッパーモジュール無いの？と思って<a href="http://pypi-ranking.info/search/rrdtool/" title="search result of rrdtool in PyPI Ranking" target="_blank">探してみる</a>と、PyPIにはpy-rrdtoolとPyRRDが登録されていました。最初はpy-rrdtoolを試してみたのですが、値を取らないオプション(&#8211;rigid)を渡せない等、若干問題があったので、PyRRDを使ってみる事にしました。</p>
<p><span id="more-3079"></span></p>
<p>コマンドラインで言うと以下の処理をPyRRDを使って書き換えてみます。ロードアベレージ用のRRDファイルを作成、データの更新、グラフの作成を行っています。</p>
<pre class="brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false">
rrdtool create load.rrd \
               --start `date +%s --date &quot;2012-05-08&quot;` \
               --step 300 \
               DS:load:GAUGE:600:0:U \
               RRA:AVERAGE:0.5:1:750 \
               RRA:AVERAGE:0.5:6:750 \
               RRA:AVERAGE:0.5:24:750 \
               RRA:AVERAGE:0.5:288:750 \
               RRA:MAX:0.5:1:750 \
               RRA:MAX:0.5:6:750 \
               RRA:MAX:0.5:24:750 \
               RRA:MAX:0.5:288:750 \
               RRA:MIN:0.5:1:750 \
               RRA:MIN:0.5:6:750 \
               RRA:MIN:0.5:24:750 \
               RRA:MIN:0.5:288:750

rrdtool update cpu.rrd --template CPU_USER:CPU_SYSTEM `date +%s`:`snmpget -c public -v2c -Oqv localhost ssCpuRawUser.0`:`snmpget -c public -v2c -Oqv localhost ssCpuRawSystem.0`

rrdtool graph load.png \
    --lower-limit 0 \
    --upper-limit 10.0 \
    --rigid \
    --title &quot;Load Average&quot; \
    --vertical-label &quot;Load Average&quot; \
    --width 500 \
    DEF:load=load.rrd:load:AVERAGE \
    LINE1:load#00FF00:&quot;Load Average&quot; \
    GPRINT:load:LAST:&quot;Current\: %2.2lf&quot; \
    GPRINT:load:AVERAGE:&quot;Average\: %2.2lf&quot; \
    GPRINT:load:MAX:&quot;Maximum\: %2.2lf\n&quot;
</pre>
<p>書き換えた結果が以下です。rrdファイルの生成やデータの更新は凄く解りやすくていいです。少し不満なのはグラフの精製処理でLINEやGRPINTと言ったグラフの各コンポーネントを使う際に、DEFオブジェクトが使えず、いちいちVDEFオブジェクトを作っておく必要があるのが面倒です。</p>
<pre class="brush: python; gutter: false; first-line: 1; highlight: []; html-script: false">
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import time
from datetime import datetime, date
from pyrrd.rrd import DataSource, RRA, RRD

# create rrd file
sources = [
    DataSource(dsName=&#039;load&#039;, dsType=&#039;GAUGE&#039;, heartbeat=600)
]
archives = [
    RRA(cf=&#039;AVERAGE&#039;, xff=0.5, steps=1, rows=750),
    RRA(cf=&#039;AVERAGE&#039;, xff=0.5, steps=6, rows=750),
    RRA(cf=&#039;AVERAGE&#039;, xff=0.5, steps=24, rows=750),
    RRA(cf=&#039;AVERAGE&#039;, xff=0.5, steps=288, rows=750),
    RRA(cf=&#039;MAX&#039;, xff=0.5, steps=1, rows=750),
    RRA(cf=&#039;MAX&#039;, xff=0.5, steps=6, rows=750),
    RRA(cf=&#039;MAX&#039;, xff=0.5, steps=24, rows=750),
    RRA(cf=&#039;MAX&#039;, xff=0.5, steps=288, rows=750),
    RRA(cf=&#039;MIN&#039;, xff=0.5, steps=1, rows=750),
    RRA(cf=&#039;MIN&#039;, xff=0.5, steps=6, rows=750),
    RRA(cf=&#039;MIN&#039;, xff=0.5, steps=24, rows=750),
    RRA(cf=&#039;MIN&#039;, xff=0.5, steps=288, rows=750),
]
rrd = RRD(&#039;load.rrd&#039;, ds=sources, rra=archives, start=int(time.mktime(date.today().timetuple())))
if not os.path.exists(&#039;load.rrd&#039;):
    rrd.create()

# update data
from pysnmp.entity.rfc3413.oneliner import cmdgen
host = &#039;127.0.0.1&#039;
comm = &#039;public&#039;
secname = &#039;local&#039;
oid = &#039;.1.3.6.1.4.1.2021.10.1.3.1&#039;
port = 161
cg = cmdgen.CommandGenerator()
comm_data = cmdgen.CommunityData(secname, comm)
transport = cmdgen.UdpTransportTarget((host, port))
(err, errtext, errno, result) = cg.getCmd(comm_data, transport, oid)
if err:
    print err, errtext
    sys.exit(0)
t = time.mktime(datetime.now().timetuple())
print result[0][1], t
rrd.bufferValue(t, result[0][1])
rrd.update(template=&#039;load&#039;, debug=True)

# generate graph
from pyrrd.graph import Graph, DEF, CDEF, VDEF, LINE, AREA, GPRINT
graph = Graph(&#039;load.png&#039;,
              start=int(time.time() - 86400),
              end=int(time.time() - 1),
              width=&#039;500&#039;,
              title=&#039;Load\ Average&#039;,
              vertical_label=&#039;Load\ Average&#039;,
              lower_limit=0,
              upper_limit=10,
              rigid=True
              )
load_def = DEF(rrdfile=rrd.filename, vname=&#039;load&#039;, dsName=&#039;load&#039;)
load_cur_val = VDEF(vname=&#039;load_cur&#039;, rpn=&#039;%s,LAST&#039; % (load_def.vname))
load_max_val = VDEF(vname=&#039;load_max&#039;, rpn=&#039;%s,MAXIMUM&#039; % (load_def.vname))
load_avr_val = VDEF(vname=&#039;load_avr&#039;, rpn=&#039;%s,AVERAGE&#039; % (load_def.vname))
graph.data.extend([
    load_def,
    load_cur_val,
    load_max_val,
    load_avr_val,
    LINE(defObj=load_def, color=&#039;#00ff00&#039;, legend=&#039;Load Average&#039;),
    GPRINT(load_cur_val, &quot;Current\: %2.2lf&quot;),
    GPRINT(load_max_val, &quot;Maximum\: %2.2lf&quot;),
    GPRINT(load_max_val, &quot;Average\: %2.2lf\n&quot;),
])
graph.write()
</pre>
<p>まぁでも機能が落ちたりはなさそうですので、色々触ってみようかなと言うところです。また寄り道してしまっていますが、久々にやる気出てきてるので頑張ってコード書く予定です。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/python-programming/3079/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
