たごもりすメモ

コードとかその他の話とか。

fluent-plugin-secure-forwardの脆弱性とアップデートのお知らせ

(追記 5/29 13:15)
この更新の際、設定ファイルの shared_key についても変更されることをお勧めします。また変更をいくつか追加した v0.3.2 をリリースしましたので、このバージョンをお使いください。

これは v0.2.x を使用していたときに shared_key_digest を(あるいはshared_keyそのものを)攻撃者に入手されていた場合、認証情報をリプレイ送信されることで攻撃者が input plugin に接続できてしまう可能性があるためです。
深刻度は高くありませんが、念のため shared_key の変更をお勧めします。
また v0.3.2 は認証プロトコルに input plugin から送信するナンスをひとつ増やし、この種の攻撃可能性を排除するための変更を含んでいます。
(追記ここまで)

fluent-plugin-secure-forward v0.3.0 をリリースしました。これは v0.2.x およびそれ以前の全てのバージョンに存在する脆弱性に対処するためのものです。
古いバージョンはSSLの扱いに問題があり、中間者攻撃が可能な脆弱性がありました。これを利用すると output plugin から送信されるデータの取得および改竄が可能となります。安全な通信を目的とする場合は必ず fluent-plugin-secure-forward を v0.3.0 にアップデートし、サーバ証明書、もしくはプライベートCAを用いるいずれかの方法に設定を変更してください。

なお、いずれの方法でも新しく追加された secure オプションの設定を記述する必要があります。これを含めて設定パラメータに一部互換性がなくなっているため、アップデート時には設定ファイルを更新しなければ Fluentd が起動に失敗することに注意してください。

脆弱性に関して報告をいただいたことがこの修正に直接のきっかけになりました。ありがとうございました。

パブリックCAから発行されたサーバ証明書を用いる

適当なドメインおよびそのドメインFQDNを用いたサーバ証明書を用意できる場合は、それを input plugin で設定して用いることができます。*1
ただしパブリックCAから発行された証明書を用いる場合、output plugin側でFQDNの検証が必要です。これを enable_strict_verification パラメータで有効にしてください。無効では起動できません。

https://github.com/tagomoris/fluent-plugin-secure-forward#using-ssl-certificates-issued-from-trusted-ca

プライベートCA証明書を作成して用いる

サーバ証明書や適当なドメイン名などを設定して用いるのが難しい場合には fluent-plugin-secure-forward 専用のプライベートCA証明書と秘密鍵を作成して用いることができます。v0.3.0 はそのためのユーティリティ secure-forward-ca-generate を同梱しています。
この方法による場合、プライベートCAの証明書および秘密鍵ファイルを input plugin を起動するFluentdのホストに安全な方法でコピーし、またプライベートCAの証明書ファイルを output plugin を起動するFluentdのホストにもコピーする必要があります。

この場合 in_secure_forward v0.3.0 はサーバ証明書を自動生成し、このプライベートCAの証明書および秘密鍵(とそのパスフレーズ)を用いてサーバ証明書に署名します。
また out_secure_forward v0.3.0 はこのプライベートCAによる署名が行われていることをもって証明書検証を行い、SSL通信を有効なものだと判断します。このためプライベートCAの秘密鍵およびパスフレーズが外部に漏れた場合は即座に使用中の証明書と秘密鍵を破棄し、新しいものを生成して入れ替えてください。

https://github.com/tagomoris/fluent-plugin-secure-forward#using-private-ca-file-and-key

セキュアでない方法で通信する

証明書などの設定をいっさい追加しない場合、安全なSSL通信路を確立できません。この場合第三者によりデータの読み取りや改竄が行われる可能性があります。
v0.3.0 およびそれ以降のバージョンでも v0.2.x およびそれ以前と同じ方法で通信を行う方法は存在していますが、使うべきではありません。この方法を有効にする場合は secure false という指定を設定に追加する必要があります。

https://github.com/tagomoris/fluent-plugin-secure-forward#using-insecure-self-signed-certificates

まとめ

fluent-plugin-secure-forward を使っている人は可能な限り迅速に v0.3 にアップデートしてください。設定の変更等が必要です。バグなどについては tagomoris までご連絡ください。よろしくお願いします。

*1:が、この場合に output plugin 側で適切なルート証明書のセットを指定する方法を作り忘れていたことに気付きました。あとで再度アップデートします。

小中規模のIT系企業における技術的選択と雇用戦略に関する雑感

でっかい主語で入ったが、要するに2月にあちこち会社巡りをしたときに感じたことについてつらつら書こう、というのが目的。

特定の会社について書いてもしょうがないので、あれこれ*1回ったうちから少なくとも2〜3ケースで該当するなあ、と思ったことについて書く。特定の1社のみに該当する事項はこのエントリにはひとつも出てきません。
またエントリの主旨からして超上から目線になりますが、どうかご容赦ください。

これから成長が本格化するのでインフラを支えられる人材がほしい

正直に言ってこれが一番多かったパターン。スタートアップ的にサービスを作ってきたがその一方でデプロイや監視などの運用まわりが後手後手になっており、そのあたりを支えられる人物がほしい。

話としてはわかるのだが、気になったのは、これを聞くとき、詳しい内容を突っ込んでみると、どうも実際にはそう困ってはいない、というケースがほとんどだったように思えたことだ。単に人数が足りないとか優先順位が低いとかで後回しになっており、しかもそれがその時点では特段大きな問題になっていない。そのあたりについて質問してみても技術的なポイントが出てくるわけではない。

だったら問題になるまで放置しておけば? というのはまあ乱暴なんだけど、そうおかしくもない話だと思う。運用を先回りしてやれるのは、サービスが安定して相応の会社規模があるところだけに許される特権だと思っている。
会社/サービスが成長曲線の途中にあるなら、技術的問題が明確に指摘できないようなことにこだわるべきではない。サービスのことだけ考えよう。

これから成長が本格化するのでデータ分析基盤を作れる人材がほしい

これも多かった。これはもうこちらに書く機会があったので書いてしまったが、自分で作ってはいけない。使いましょう。

データ分析基盤を作ることそのものがサービスの根幹である場合を除いて*2、データ分析基盤がサービスにかかわってくるとき、焦点となるのはデータそのものか、ロジカルな分析手法にあるのであって、基盤そのものが競争力の源泉となるケースはほとんど存在しないはず。そして「これから成長が本格化する」という段階であれば、競争力の中核でないようなことに無駄な力を割くべきではない。

もうちょっと言うと、Hadoopやら何やらの環境は、作れば作れる。そこまではそう難しくない。しかし運用するのは非常に面倒で、基盤を作ってから2年も経つとあれこれ綻びが出始める。
新しい機能が欲しくてアップデートしたくなるが、分散処理ソフトウェア基盤のアップグレードというのは非常に面倒な仕事だ*3。特に業務がデータ分析に多大に依存しており、処理を止められないケースで困難が増大する。

反面、ざっと業界を見渡して、データの分散処理基盤をトータルに設計・構築・運用できる人の数はきわめて少ない。安定的に採用するのは不可能と言ってもよいくらいに少ない。
外部サービスの採用がコスト的に見合わないようなごく一部の大企業などでない限り、まずサービスの利用を最優先に考えるべきだ。作ってはいけない。

100%自己資本で経営しておりVCにわずらわされず仕事できる

経営の人がこれを言うとき、すごく得意そうに言われるのだが、自分には正直どうでもよい。誰の言うことが元になっていようが、経営方針は経営方針である。特に変わりはない。

というより、拡大志向は無いのかな、ということが気になる。がつんとサービスを大きくする、と言う一方で自己資本にこだわる旨のお話をされると、どっち、という感じ。あまりベンチャー的ノリを感じなくなるのは確かだと思う。新卒を雇って20年働いてもらうためにはいいのかもしれない。

高度な技術で日本の広告事業を支配する

それができたらGunosyやSmartNewsが既に日本を支配しているのでは。というかGoogleか。
いやもちろん個々の主張があるのだろうけど、技術的なアプローチに特殊な点が見えない状況でそのように主張するより、何がどうなっているから確実に勝てる、という差別化を先に済ませたほうがよいように見える。

あれとこれとそれをやりたいが、できる人がいない

御社に必要なのは共同経営者CTOか、あるいは何人もの技術顧問ではありませんか?

この点については、もっと技術顧問みたいな働きかたをする人が増えればいいのかなと思うことは多かった。フルタイムで関わるまでは必要なさそうに見えるが、もっと多くの働きかたや技術的視点を(おそらくはパートタイムで)必要としているように見える、という会社はたぶん思っていたより多い。

まとめ

最後だいぶ雑になったが、だいたいこんな感じ。こういった状況を俯瞰している人ってどこかにいるのかなあ。いるんだろうな。

(追記) 技術の話をしよう

大事なことを書くのを忘れていた。

中途で技術者を採用しようというとき、たぶん一番良いのは、技術の話をすることだと思う。何が技術的な差別化ポイントであり、本質的な技術的困難は何であり、今もっとも深刻な技術的課題は何か。
自分は技術的なチャレンジのあるところで働きたいし、おそらくカンファレンスなどの空気を見ていても、技術的なチャレンジのあるところに人の興味は引きつけられる。

だから、技術的困難な点として何があるか、という話をしよう。自分もそのような話がしたい。

*1:だいたい40社前後

*2:なおそのようなケースは話した中にはTreasure Dataしかありませんでした

*3:最近はCloudera ManagerやApache Ambariのおかげで多少は楽になっているかもしれないが。

Norikra v1.3.0: 大幅なアップデート

継続的にあれこれアップデートを続けてきているOSSプロダクト Norikra ですが、このたびあれこれ機能を追加したバージョン v1.3.0 をリリースしました。

tagomoris in English — Norikra v1.3.0, more flexible stream processing

v1.0.0を出してからあまり個別のアップデートについてエントリを書いていませんでしたが、1.3.0での変更も含めてあれこれ機能および使い勝手が向上していると思います。

  • Listener pluginの追加*1
  • クエリのサスペンドとレジューム
  • NULLABLE(field) 指定の追加、フィールドが存在しない場合も強制的にNULLとして扱えるように
  • HUPシグナルによる新規にインストールされたプラグインのリロード*2
  • Esper 5.2.0 のバンドル

そのほかpull requestをいただいた多数の使い勝手向上のための改善をマージしています。またmsgpackの依存バージョンを変えたりなどしており性能面での特性の変化している可能性があります。

全ての変更についてはChangesをご確認ください。

norikra/Changes.md at master · norikra/norikra · GitHub

既に使用中のユーザにとっては少しチャレンジングなバージョンアップになるかもしれませんが、良い機能・改善も多数入っていると思います。ぜひお試しください。

そろそろNorikra meetup 2やりたいなー。やろうかな。

*1:クエリの出力イベントを直接処理できる任意のコードを書ける

*2:再起動が不要に

マウンテンビューの片隅で意識低く短期間滞在を生き抜くためのノウハウ

自分もシリコンバレーはマウンテンビューに本社があるベンチャーに就職して仕事でカリフォルニアの青空すばらしい! とか言っているからにはこの地域でいかに生き抜くべきかみたいな意識の高いことを書こうかと思ったが、青空を見ながらも既にビールが入っていて到底無理そうだった*1

なので、シリコンバレーとかベイエリアなんて風呂敷を広げず、マウンテンビュー、しかもダウンタウン近くではなくSan Antonioという微妙に離れた田舎でクルマ無しにショートステイを無事生きるにはどうすればよいかについて書き残そうと思う。

そんなニッチな文書書いてどうするんだという話はありそうだが、少なくともこれから東京で入社してくる同僚のためには役に立つ……はずだ。

前提

San Antonio Mountain Viewというところにオフィスがあって、そこに徒歩で通えるあたりのホテルもしくはAirbnbに宿泊すると思いねえ。期間は2〜3週間くらい、何も準備なしに乗り切るにはちょっと長過ぎるが、気張って生活の基盤を整えるような長さでもない。
宿泊先は会社が手配してくれるので、あとは生活の心配だけをしよう。まあ、あんまりケチケチすると色々つらくなるので、あまりそのへんは考えないことにする。

仕事のしかたについては、このエントリは意識が低いので書かれていない。各自がんばれ。ひとつだけアドバイスをすると、同僚はみんな親切なので英語をがんばってしゃべろうとすれば待って聞いてくれるし、聞きかえしてもちゃんとゆっくりめに繰り返してくれるぞ。*2

交通

まず最初に空港からどうやって現地に行くかだが、まあ、タクシーを使いましょう。SJC*3からならタクシー以外に選択肢がないはず。(追記) シェアリムジンみたいなので $20 くらいとか、Santa Claraまでの無料送迎バスで移動してそこからタクシーで $2 くらいとか、あるようです。(追記おわり)

SFO*4からならBARTでMillbraeまで出てからCaltrainという方法もあるけど、券売機はUX最悪だし乗り継ぎもたぶん悪いしそもそもCaltrainは昼間だと1時間に1本しかなかったりするし、駅からまた歩くのもダルいし。SFOからでもタクシーでいいと思う。ちょっとお金かかるけど会社が出してくれるでしょ。

タクシーは個人的な経験によると訛りがきつい人が多く、ちょっと何言ってるかわかんない感じになることも多い。あらかじめスマホで行き先の住所を(英語表記で!)出しておいて、ここに行ってよ、と見せればいいと思う。

料金はSFOからMountain Viewまで来るとけっこうかかる。メーターで $75 くらいかな。で、料金精算のときに距離によってメーターの数字を一定の倍率で掛ける、ということになっているらしい。何で決まっているのか知らんがたぶん税金とかなんとかそういう感じ。 $75 くらいだと1.5倍されて $100 を超える。決してボッタクリにあっているわけではないので、なんか聞きとれない英語で説明されながら数字を上乗せされても動揺してはいけない。最終的にはそれに更にチップを10%だか15%だか20%だか上乗せして払うことになる。支払いのときにチップの料率の選択肢ボタンを見せられるので、それを適当に選んで押せばいい。

無事着いたあと現地でどうするかだが、15分歩けばオフィスに着くなら、毎日歩いてもいいかなと思う。健康によいし気分転換にもよい。毎日アホみたいに晴れているので不都合はない。自転車があるといろいろ動き回るのに便利だなーとは思うんだけど……。
タクシーは流しのをつかまえるのは多分不可能っぽいので、UberかLiftのアプリを入れてユーザ登録しとくといいと思う。とはいえ自分はまだ一度も使ってない。帰る日にSFOに行くのに使うかなあ。

通信

通信経路が遮断されると死ぬ。そもそも宿泊先に到着するにも困難を極める。空港で入国審査を通過した瞬間から通信可能なくらいに準備を整えておくとよい。

渡航先で使えるWiFiルータ貸し出しサービスがあって羽田や成田で搭乗前に受け取れるので、そういうのを使うとよい。搭乗前にWiFi接続設定をスマホに入れておけば、着陸直後からIP reachableになる。べんり。
それはそれとしてルータの電源や電波状態を気にしながらスマホ使うのが自分は嫌だったのでAT&TのSIMを買っておいて、USに着いてからアクティベート&チャージして使っている。iPhoneのバッテリと電波状態だけ気にすればいいのは生活がラク。30日4.5GBのプランで契約しちゃったけど1週間で225MBしか使ってないからoverkillすぎた。あと間違えて30日分余計にチャージしちゃったので6月頭まで使えるんだけど、誰かこれいりませんか。

会社にネット環境あるのは当然として、自分はAirbnbな宿泊先でWiFiを提供してもらえてるので、だいたいそれを使っている。HTTPSを使うよう気をつけましょうね、という感じだし速度もたまに詰まるけど、基本的には問題ない。べんり。

宿泊先

ホテルだったら、まあ普通のホテルだろうから問題ないでしょう。

しかしこの界隈のホテルは高いとか埋まってるとかであまり取れないらしく、Airbnbが便利とのこと。自分もそれで泊まっている。ルームシェアしているうちの1室をAirbnbで出しているとかで、部屋のもう1室は別の人が普通に住んでいる。インド人らしい。頻繁によくわからない言語で電話しているのが聞こえる。
2〜3日ならともかく2週間ともなると、隣にどんな人がいるかわからない、というのはかなりストレスになると思う。とにかく早めに挨拶というか、一度話しておくとよいと思う。自分は初日の夜に話せたけど、それまではかなり、うわ、うわ、という感じだった。向こうもそうだったんじゃないかな。

この界隈だとどうせ相手もTechな人だろうし、生粋のカリフォルニア人ということも少なかろうから、話せばちゃんと会話できると思う。自己紹介してちょっと世間話でもすればその後の生活が極めて穏当になるから、ぜひとも真っ先にやっておくべき。

ついでに台所とか洗濯とかの事情について聞いておくとよい。冷蔵庫や電子レンジ・皿・コップなんかを使っていいよね、どこにあってどう使うの、みたいなのの確認が後々の生死を分けるので、できるだけ細かく確認しておくとよい。自分は電子レンジの細かい使い方を聞きそびれてたら後でたいへん困った。右下のボタンでドアが開く。

衣類、洗濯

ホテル宿泊だとホテルの洗濯サービスを頼むことになるのかな?

Airbnbだと宿泊先にコインランドリーがあり、そこで洗濯する。(追記) 事情は場所によって異なると思うが、自分が泊まっているところはカギがあって居住者しかコインランドリーに入れないようになってた。だから洗濯・乾燥中は放置してても大丈夫。洗濯・乾燥にはそれぞれコイン、クォーターという25セント硬貨が、なんと合計6枚(4枚、2枚)も必要。これは集めておく必要がある。今回の場合は偶然あった。(追記ここまで)

こっちに来てから6着詰め合わせみたいなのを下着の上下と靴下で買ってしまったので、ほとんど洗濯の必要はなかった。Walmart行くと日本でもおなじみHanesブランドのが売ってあるので、そいつを買ってしのぐのもよい。洗濯とかできるだけしたくないし。めんどいし。

今回自分は2日分しか着替えを持ってこず、基本的にはこちらで買ってやりすごそうと思った。下着類についてはそれで済んだんだけど、上着用のシャツなどについてはだいぶ困った。スーパーの衣料品売り場に行っても置いてないんだもん。いやブツが無いというわけではないが、サイズがない。絶望的に無い。
自分は身長170cmちょい、体重63kgくらいの割と標準的な日本人男性体型だと思うが、こちらに来るとジャストフィットはだいたい S だ。Mだとちょっと大きいかな、くらい。しかし衣料品売り場にこのあたりのサイズがまったく置いてない。妥協して L でもいいかなと思っても、それもない。とりあえずXLから。なんなんだお前らは。XLからXXL, XXXL ばっかりなんてどうにかしてんじゃないのか。
最終的にはM, Lの在庫をなんとか見付けて適当に数着買った。いやはや。

あと、室内用にだが、スリッパかなんかがあったほうがいい。ずっと靴でいいのかなと思ったけどそれも意外に窮屈だった。こっちで室内履きのスリッパ買えるかなとも思ったけど探してみたところぜんぜんそういうの置いてないので、日本から適当なのを持っていくといいと思う。

衣類でもないが、コンタクトレンズの洗浄液はいつも使ってるのは無いかなと思って余計に持ってきたら、いつも使ってる Renu マルチプラスというやつが普通にスーパーで売られてて、なんだ、という感じだった。これに限らず意外にあるものも多い。

買い物

こっちに住んでいる人はあの店が良いとかあそこに行ってみるべきとか気軽に言うが、彼らの頭の中は既にクルマ社会に毒されており、徒歩でえんえん移動しないといけない人のことを全く考えていない。徒歩でいったら何分かかると思ってんだ。NIJIYA遠過ぎだろ。同僚にクルマで買い物に連れて行ってもらってもよいが、さすがに何かあるたびにというのもちょっとな。

また彼らは既に幾度もの学習の果てに「食べられるものは自分で作るしかない」という悟りを開いているため様々に食材の情報をくれるが、こちらは短期滞在だ、そうそう料理とかしてられるか。ということであちこちで情報の需要と供給が食い違うことになる。ヤバイ。

ということで、自分で多少は買い物に行く必要がある。いくつか適当なルールとノウハウがあると思ったので書いておく。

まずこちらの店は基本的に袋をくれない。くれる店もあるけど例外と思ったほうがいい。なのでどこかで買い物バッグを手に入れる必要がある。有料。あるいは日本から大きめのコンビニ袋を何枚も持ってくるとよかったかもしれない。買い物によし、ゴミ袋によし、あって損は無い。

Walmartで買い物をすると、レジのところに青い布(?)袋がある。有料*5だが言えば付けてくれるので、それをひとつ手に入れておけばその後の買い物に役立つ。自分はWalmartでもっと大きいメッシュの袋をひとつ買った。$4くらいだったかな。大きいので最初にまとめ買いするのには良い。オフィス帰りに買い物しようと思うとこのあたりの袋が必要になるので、常にカバンに入れておいた方がよい。7-11でも袋は持っていく必要がある。

その7-11だが、行ってみるとけっこういろいろある。何よりもお一人様向けの食べもの・飲みものがあるのがすばらしい。今日まで気付いていなかったが、なんと宿泊先から1ブロック歩いたところに7-11があったので、これまでの苦労がだいぶ軽減される気がしている。てか栓抜きとかも置いてあったぞ。こっちの宿泊先が決まったらぜひ7-11の場所は調べておこう。到着したら真っ先に行って何が置いてあるか確認しておくとよい。
またこっちの7-11にはある程度の薬も置いてあるらしく、睡眠導入剤っぽいものもあった。もうjet lag*6はだいたい治まったので自分には不要なんだけど、来たばかりの頃に買っておけばよかったと思っている。

San Antonioの某社オフィスから道路をひとつ渡ったあたりに San Antonio Shopping Centerという巨大スーパーがいくつも集まっている場所がある。歩いて行ける上にいろいろ集まっているので、基本的にはここであれこれ調達するとよい。しかし駐車場が広過ぎるので日が落ちると迷子になる可能性がある。注意しよう。どうせ夕方になると同僚はさっさと帰るので、自分もさっさと切り上げて明るいうちにいくつかの店を回るとよい。

そして第一に、休日にWalmartに行くのは避けよう。やばいくらい混んでる。ただでさえ広いのにあらゆる通路でカートがすれ違っていて移動速度がきわめて遅くなる。MV到着直後の日曜にWalmartに突撃したらあらゆる意味で疲弊した。人や人のカートと衝突しそうになってソーリーソーリー言うこと無数。家電とかおもちゃとか売ってるし家族連れが多過ぎてヤバい。ジャングル。Walmartに行くなら絶対に平日夕方にするべき。天国。1/4の時間で見て回れる。
Walmartはさすがに品揃えはすごい。かなりいろいろある。混み具合の問題がなければとりあえずWalmartに行ってもいいかもしれない。下着や買い物バッグ、とりあえずの水やジュースのペットボトル(数本セットの重いやつ……)、あと後日にカミソリなんかもWalmartで買った。

正確にはShopping Centerの隣ということになるけど Target という大きいスーパーがあって、ここも服や日用品なんかがあれこれある。食料品はあまりなかった。菓子類みたいなのばっかりだったかな。Walmartに品揃えという点では遅れをとるが、なにしろWalmartは混むので、到着直後が日曜なら買い物はこちらを試してみてもいいかも。こっちも混んでいるかもしれないが、試してないのでわからない。Target Pharmacyというのも検索結果に出てくるから、薬なんかもあるのかな。(気付いてなかった)

他に衣料品だとKOHL'Sという店がある。ちょっと高いのと、その割にそこまで品揃えがいいという感じでもなかったので、まあWalmartとTargetで無いものがあれば試しに行ってみる、くらいがいいかもしれない。他には寝具とか家具とかなので短期滞在者にはあまり用は無い。
どうでもいいけど外観が殺風景すぎて何の店なのか外から全くわからない。KOHL'Sに限らずこっちの店ってそういうのが多いんだけど、なんなのこれ死ぬの。

食料品はTrader Joe's通称トレジョー。野菜とか肉とかあるけど短期滞在者はそういうのは無視して冷凍食品を狙う。で、ピザがあるが、あれはいかん。当たりがあるのかもしれないけど自分が試したやつは死ぬほどマズかった。米のもの、エスニックやチャーハンがよいと思う。ふつうにおいしい。
あとは果物系、バナナとか。ポテチやトルティーヤチップスが大量に置いてあってディップソースといっしょに買って帰るというのが定番ぽく陳列されているが、あれは独り身でやると確実に栄養バランスがおかしいし、飽きると思う。
あとワインなんかもいっぱい置いてある。ビールはいまいち。

(追記) Shopping Centerから El Camino Real をはさんで南側にある Whole Foods Market というスーパーはちょっと遠いがじつにいい感じだった。野菜や肉など普通に料理する人向けだけじゃなくて、冷凍食品なんかもけっこうある。薬なども置いてあるし、なんと下着とかまであった*7。ビール・ワインもある、というか日本酒まであった。すげえ。その他デリのコーナーであれこれ買えるので、近いなら毎晩ここで買って帰っても問題ねーなー、という……てかこの容器、隣の部屋の人がよく食べてるやつだ。なるほど。ということですごい便利。交通の便が許せば通ってもよい。ちょっと高いという評判だったが滅茶苦茶高いということでもないし、短期滞在者には大した違いではない。(追記ここまで)

Shopping Center内にあるSafewayは安くてあれこれある系かな。まだ行ったことない。

酒については、Shopping Center内にBevMo!という大きい店があり、ビールやワインなら品揃えは豊富。じつによい。日本酒や焼酎についてはここに無いので、涙を飲んで諦めるかWhole Foods Marketに行こう。

なお酒類を買うときにはID(パスポート)の提示を求められるので、英語で何か言われて聞きとれなくてえ? え? みたいなことになる前に自分から出して顔写真のページを見せてあげるとよい。というか、何かしらIDを要求されることもあるので、パスポートは肌身離さず持ち歩こう。

また買い物にあたっては支払いを行わなければならないが、だいたいめんどくさいのでカードで払ってしまうとよい。レジのスキャナに通して、金額が大きければ端末上でサインする。どうせ物凄く書きにくいので適当にやっつける。

そのほか、店内に入ったとき、店内を歩いているときなど、わりと店員さんに話しかけられることがあるので過剰反応しないようにしよう。How are you? とか言われたら適当に good! と毎回言っておけばよい。あれはきっと、入ってきた客が本当に客かどうか、ヤクでラリって強盗しようと不振な言動してる人じゃないか、みたいなのを見分けるためにやってるんじゃないかと思っている。
そのほか、なんかこの店に欲しいものねーな、と思って出ようとすると May i help you? とか All you needs are OK? みたいなことを言われることもあるので、適当にオーケーオーケーとかノープロブレムとかThank youとか言っておけばよい。
何言われたか分からなければ What? と何度でも聞きかえそう。このへんの人々は英語が一発で通じないことに慣れてるから言い直してくれるぞ。

食事

とりあえず、同僚にあちこち連れていってもらおう。現地のものがどうとかつまらないプライドは捨てて美味しいもの、つまり中華とかラーメンとかを食べるとよい。こっちに着いて8日目だが、既に晩飯に2度ラーメンを食べた。

自分で調達する場合だが、安心して外食できそうな場所があんまり近辺に見当たらない。SUSHIとか店名に入っている怪しげな店が近辺にいくもあるが到底入る気にならない。宅配系が良いとの話もあるが、英語力に自信が無いので電話は怖い。ひいい。

Walmartマクドナルド、Targetにピザハットがあり、そのへんは全世界共通のあれこれがあるのでたぶん安心して使えると思う。マクドナルドは "meal" と言うとポテトつき、ドリンクは含まれていないので頼むと別料金、"here" だと店内で食べるし "to go" だとお持ち帰りだ。これで完璧!

あと飲食店などはだいたい、Shopping Center南側の El Camino Real Rd という道沿いに多いようだ。これはいわゆる田舎の国道みたいなやつだと思うと間違いがない。とはいえ歩いて行くと結構な距離なので、自転車などが欲しいところ……。

自室で済ませるなら前出の冷凍食品はだいぶ便利。皿とスプーン・フォークを洗う程度で済むし、まあ食べられる。
個人的な教訓として、マトモな食料の調達に失敗したケースのために最初に何かしら買っておいたほうがいい。クラッカーやビスケットについては菓子売り場にいけば日本でもお馴染みのものが置いてある。リッツとオレオにだいぶ助けられた。こちらのポテトチップスは厚めで量も多いので、ひと袋あればそれでも急場は凌げる。あとはコーラかジンジャーエールでもあれば完璧である。

こちら在住の人々はあれこれ言うかもしれないが、我々は2週間凌げればそれでよいのだ。ひと晩くらいビスケットやポテチで生きても問題はあるまい。

そうそう、あと水のペットボトルをまとめ買いしておくと便利。自分は200mlくらいのが12本パックになっているのを最初に買ったら、ちょいちょい水分が欲しいときに重宝している。

まとめ

だいぶ長くなったので、大枠だけもう一度まとめなおしておく。重要度順にトピックを並べると以下の通りである。

  • ルームシェア相手との会話、台所の使用許可と使用方法の確認
  • 7-11の販売内容の確認
  • 最低限の飲料、食べ物の確保
  • 衣類、特に下着類の確保

まあこんだけしておけばなんとかなる。1週間もすればなんか慣れてきて、お、意外に生きていけるじゃん? となること請け合いである。

*1:現在時刻は日曜6時半PDT、今頃はだいたい8時くらいまで明るい

*2:外国から東京のオフィスにきた同僚ががんばって日本語で会話しようとしてくれているところを想像してみよう。

*3:サンノゼ空港

*4:サンフランシスコ国際空港

*5:50セントくらい

*6:時差ボケのことだがjet lagと言うとなんだかこっちの人っぽくて意識が高まる気がする、オススメ

*7:1着ずつだしめっちゃ高いけど

Javadocを生成してからDocsetを生成する

このとき普通にjavadocコマンドを使うと日本語テンプレートが使われてウザいので英語でやる。主にEsperのバージョンを上げたりするときに重宝するやつ。

javadoc生成

ずばり、以下のようなコマンドでやる。

LC_ALL=en_US javadoc -locale en_US -d doc -sourcepath src -subpackages com.espertech.esper -private

src内の com.espertech.esper 以下のパッケージについて再帰的に、doc以下に生成する。このとき -private オプションをつけてprivateなスコープのものについても生成する。
このままやると日本語テンプレートが使われてアレなので -locale en_US を指定すると英語のものが使われてよい。ついでにコマンド実行中の出力も英語にしちゃいたいから LC_ALL=en_US を指定。

docset生成

Dashが非常に便利で、Javadocの閲覧はだいたいこいつを使っている。

Dash - API Docs & Snippets

Dash - API Docs & Snippets

JavadocからDocset形式に変換してやる必要がある。

Kapeli/javadocset · GitHub

これのバイナリをそのまま落としてパスの通ったところに展開して以下のコマンドを叩く。ちょっと待つ。

javadocset Esper-5.2 doc

あとはできたものをDashに放り込めばよい。やれやれ。

Shib v1について

HiveやPrestoにWebブラウザからクエリを簡単に投げられるツールとして、shibというプロダクトを作っています。

tagomoris/shib · GitHub

こちら、特に機能は増えていないのですが、内部的にあれこれ整理をしまして、最近 v1 としてリリース*1しました。

最近ある環境で特にクエリの総実行数が増えてきたりクエリの同時実行数が増えたりしたときに不安定になる問題があったため、そのあたりを直したりしております。
ただしこれに伴い内部用データベース(SQLite)のスキーマを変更しました。よって、旧バージョン v0 系を利用していた方は、v1への移行に伴いマイグレーション作業が必要となります。以下のページあたりに書いてありますので参考にしてください。

https://github.com/tagomoris/shib#migrate-metadata-database-from-v0-to-v1

またデータ量が増えてきたときにパージするメンテナンスツールなども付けました。npm purgeで実行できます。
全体的に負荷が減って安定動作するようになっていると思います。shibをご利用中のかたはぜひアップデートしてみてください :)

*1:といってもタグをつけただけ

Cloning all (private) repository in specified organization from github.com

By using github_api.gem and very simple script like below:


Script to clone all repositories of specified orga ...

  1. create OAUTH token from Setting of github.com
  2. paste it to oauth_token in the script
  3. edit organization name in the script
cd mydir
gem i github_api
ruby /path/to/saved_script/github_org_clone_all.rb
# wait a long time...

Enjoy!