2009年9月25日金曜日
スティーブ・ジョブズが目の前なう
2009/09/25: 帰宅したらきちんとした写真アップします。
2009/09/28: 写真アップしました。
■これまでのあらすじ
アメリカ旅行1日目
アメリカ旅行2日目〜3日目
■まずはGoogleへ
今日はCaltrainに乗ってシリコンバレーへ向かいます。お目当てはGoogleとAppleの本社!
↓
Caltrainのサンフランシスコ駅へ到着。日本の駅と作りが全然違ったり、標準軌道(広軌?)だったり、全2階建ての客車をディーゼルの機関車が引っ張る構成だったり、そんな機関車がずらりと横一列に並んでいる姿が拝めたりと、鉄道マニアにはたまりませんよ。あ、私は鉄道マニアなんかじゃないんだからねっ?><
↓
一路San Antonio駅へ。ここからVTAのバス40番に乗り換えて一路Googleへ移動。
駅で降りてまず感じたのが、空が広い!明るい!緑が鮮やかで綺麗!暖かい!家並みが美しい!まるで絵に描いた楽園のような風景です。なるほど、これはすごい。みんなシリコンバレーで起業したがるわけです。
↓
Google到着。めっちゃめっちゃ広い!!><
雰囲気としては途中Palo Alto駅すぐそばにあるスタンフォード大学のキャンパスとそっくりで、全然「会社」って感じがしません。緑がたくさんあって、へんちくりんな形の建物がどーんと。大学のキャンパスかカフェか何かみたいです。
↓
さんざん周りをうろついて写真を撮りまくったあげく、何かの間違いで中に入れてもらえないかとVisitor用のロビーに向かったら、受付のおねーさんに「ここはClosed Campusです、知り合いが面会者がいない奴は立ち入り禁止です。でてけ」とやんわり怒られ、外に出たらセキュリティのお兄さんにまたやんわり怒られ、あえなく撤退。入れないのはわかっていたもののやはりショック。
↓
"There are no public visitor center or a shop"だそうです。嘘つき!俺は知ってるよ!某氏がGoogle社内見学したとき、お土産にバッグ買って帰ってきたのを!
↓
あ、そうか、だから"public"って断りを入れたのね。というわけで、技術にはオープンですが、本社警備には大変クローズドなGoogleでした><
■続いてAppleへ
ふたたびCaltrainに乗って、こんどはSunnyvale駅へ。
↓
駅からVTAバス55番で南下するとAppleの本社に到着。外見はGoogleと違ってテクノロジー企業らしい企業ビルって感じです。あたりの交差点にたくさんリンゴマークの住所書きがあります。
↓
先ほどのGoogleでの失態を教訓に、まずはすぐに施設に近づかずInfinity Loopの公道からゆっくり観察することに。あ、6 Infinity Loopに山積みのMac Proがある。一つお土産に欲しい。
↓
Infinity Loopを左回りに進むと、6, 5, 4, 3, ....という風に施設が並んでいます。一番最後が1 Infinity Loop, 本社ビルです。
↓
本社ビル前に到着。お土産屋さん発見。観光バスと観光客らしき人も発見。どうやら思ったより観光客に対してオープンになっているみたいです。
↓
しかし当たり前ながら本社ビルの中には入れないようで、入り口の前で立ち往生。
■あんびりーばぶる!
で、中にも入れないし写真も撮ったしそろそろ帰るかと思っていたら。
http://twitter.com/akisutesama/status/4354424273
http://twitter.com/akisutesama/status/4354453168
http://twitter.com/akisutesama/status/4354498099
まさかのジョブズ降臨!!
目の前3メートルの位置にジョブズが!声をかけたけど無視されてすたすた行ってしまわれた。
↓
いや待て、本物がこんなド真ん前を堂々と歩くわけがない、偽物か影武者だと思って売店のおねーさんに聞いてみたら、"then it might have been"(ならたぶん本物だったのよ)とのお返事が。あと"He usually doesn't answer because he's so busy"らしいので、どうやら本物っぽいです。ああ、来て良かった!
↓
最後に記念撮影してたら建物の中が写るからそこで撮るなとセキュリティのイケメン兄ちゃんにやんわり怒られました。またか!><
■じゃあ帰りましょ
Sunnyvaleの駅前で食ったsushiはなかなかおいしかった。カリフォルニアロール、言うほど不味くないですよ。私の舌がゲテモノ食いなのかもしれませんけど。ただし握りはいまいち、しゃりがなんだか変。食えないことはないけど、近所のスーパーのパック寿司のほうがおいしいと思う。これで4ドルは日本だとぼったくり。
↓
帰りのPalo Alto駅で乗ってきたスタンフォードの学生が目の前でMacBook広げてプログラミングを始めたので興味本位でのぞいてみた。ソースはよく見られなかったけど、たぶんAdobe AirかFlash。集中力が凄くって、乗ってからサンフランシスコの駅についてドアが開いてもまだMacとにらめっこしていた。きっと朝から夜遅く(19時)まで授業があっただろうにと思うと、さすがスタンフォードの学生だと感心するとともに、自分も負けていられないと思うのでした。
2009年9月24日木曜日
アルカトラズなう
1日目に引き続き、2〜3日目。
■2日目
朝起きてまずは近所の散策。Whole Food MarketとWalgreensを発見。
↓
ジャパンタウンへ行ってみるがあまりにも閑散としていておもしろくないので即撤退。伊藤園の充実野菜が売ってあった。
↓
おもむろに目の前を走っていたMUNIバスに興味本位で乗ってみたら降り方がわからず大変苦労した。運ちゃんに降り方を聞いてようやく降りたらなぜかシビックセンターについた。
↓
シビックセンター見学
↓
ダウンタウンへ移動
↓
ダウンタウン見学、Apple StoreでWifi電波を借りたりFallout 3の実物大Power Suitにつられて地元のゲーム店によってみたり。DSとWiiのソフトが日本と全然違う。ほかはにたりよったり
↓
あ、Walgreensにおーいお茶(濃い味)売ってる、$1.69
↓
ケーブルカーでフィッシャーマンズワーフへ
↓
Pier39で飯、ようやくこっちのレストランの作法とか文化的背景がわかった
↓
Pier33で明日のアルカトラズ行きのチケットを入手
↓
適当にバスに乗ったらゴールデンゲートブリッジについた
↓
ゴールデンゲートブリッジを見学。風が糞強い!めちゃ揺れる!落ちる!!ロードバイクにひき殺される!!死ぬ!!><
↓
ゴールデンゲートウェイ公園に移動。広すぎる上に車道があって公園というイメージがしない。地元の田舎道みたいな雰囲気。
↓
なぜかツタンカーメン展をやっていたので入ってみた
↓
やばい、ツタンカーメン展ヤバい、超おもしろい!
日本で一般的に開催されている展覧会と違って見せ方が上手い!展示に移る前に、決められた人数ずつ展示室前の墳墓を模した暗室に誘導され、そこでディスカバリーチャンネルみたいなかっこいいムービーを見る。凄い盛り上がる!ムービーが終わったらいよいよ中へ、入ると同時にツタンカーメンの像がお出迎え!とこんな具合にストーリー性があっておもしろい。美術品を順番に置いて説明テキストおいて終わりじゃなくて、映像とか部屋の構造まで使ってストーリー性を持たせているのが、まるでディズニーのアトラクションみたいだと思った。
↓
2時間もたってしまって19時になったのだが、外がまだ明るい。よく考えたらサマータイムのおかげでまだ日本時間では18時相当なのだった。サマータイムに生まれて初めて感謝した。
↓
近所のWhole Food Marketで晩ご飯を買って食う。普通に食える。おいしい。誰だアメリカの飯が不味いとか言ったやつは。自分にはこれでちょうどいいぐらいだ。
■3日目
朝9時半からアルカトラズへ移動
↓
昼14時半までアルカトラズ観光。とにかくすばらしいの一言につきる。島から見えるサンフランシスコの町並みも、刑務所跡も、とても綺麗で歴史が感じられる。ここの歴史なんてたかだか100年とちょっとしかないはずなのだが、数百年歴史があるはずの地元山口・錦帯橋よりも歴史が感じられるのは、やはり見せ方が上手いのと、音声ツアーガイドがあまりにも秀逸であるおかげだろうなぁと思った。アルカトラズ刑務所の音声ツアーガイドは本当にすばらしい!ディスカバリーチャンネルの世界を自分の足で歩いているような雰囲気がたまらない!
※帰ったら写真と動画うpします。
↓
フィッシャーマンズワーフで遅い昼飯。ただのハンバーガー(10ドル)、これが凄くおいしい。ポテトもマックやバーキンの安物とは全然違って、30分たってもおいしい!このぐらいなら、なるほど料理と読んで差し支えないなぁ。
↓
近所のWhole Food Marketで晩ご飯と朝ご飯を買いだめ
↓
終了
作法や町歩きの仕方が身についてきて、英語も耳に慣れ聞き取れるようになり、おもしろくなってきました。明日はいよいよGoogleとAppleの見学に行ってきます。余裕があればStanfordも!
■2日目
朝起きてまずは近所の散策。Whole Food MarketとWalgreensを発見。
↓
ジャパンタウンへ行ってみるがあまりにも閑散としていておもしろくないので即撤退。伊藤園の充実野菜が売ってあった。
↓
おもむろに目の前を走っていたMUNIバスに興味本位で乗ってみたら降り方がわからず大変苦労した。運ちゃんに降り方を聞いてようやく降りたらなぜかシビックセンターについた。
↓
シビックセンター見学
↓
ダウンタウンへ移動
↓
ダウンタウン見学、Apple StoreでWifi電波を借りたりFallout 3の実物大Power Suitにつられて地元のゲーム店によってみたり。DSとWiiのソフトが日本と全然違う。ほかはにたりよったり
↓
あ、Walgreensにおーいお茶(濃い味)売ってる、$1.69
↓
ケーブルカーでフィッシャーマンズワーフへ
↓
Pier39で飯、ようやくこっちのレストランの作法とか文化的背景がわかった
↓
Pier33で明日のアルカトラズ行きのチケットを入手
↓
適当にバスに乗ったらゴールデンゲートブリッジについた
↓
ゴールデンゲートブリッジを見学。風が糞強い!めちゃ揺れる!落ちる!!ロードバイクにひき殺される!!死ぬ!!><
↓
ゴールデンゲートウェイ公園に移動。広すぎる上に車道があって公園というイメージがしない。地元の田舎道みたいな雰囲気。
↓
なぜかツタンカーメン展をやっていたので入ってみた
↓
やばい、ツタンカーメン展ヤバい、超おもしろい!
日本で一般的に開催されている展覧会と違って見せ方が上手い!展示に移る前に、決められた人数ずつ展示室前の墳墓を模した暗室に誘導され、そこでディスカバリーチャンネルみたいなかっこいいムービーを見る。凄い盛り上がる!ムービーが終わったらいよいよ中へ、入ると同時にツタンカーメンの像がお出迎え!とこんな具合にストーリー性があっておもしろい。美術品を順番に置いて説明テキストおいて終わりじゃなくて、映像とか部屋の構造まで使ってストーリー性を持たせているのが、まるでディズニーのアトラクションみたいだと思った。
↓
2時間もたってしまって19時になったのだが、外がまだ明るい。よく考えたらサマータイムのおかげでまだ日本時間では18時相当なのだった。サマータイムに生まれて初めて感謝した。
↓
近所のWhole Food Marketで晩ご飯を買って食う。普通に食える。おいしい。誰だアメリカの飯が不味いとか言ったやつは。自分にはこれでちょうどいいぐらいだ。
■3日目
朝9時半からアルカトラズへ移動
↓
昼14時半までアルカトラズ観光。とにかくすばらしいの一言につきる。島から見えるサンフランシスコの町並みも、刑務所跡も、とても綺麗で歴史が感じられる。ここの歴史なんてたかだか100年とちょっとしかないはずなのだが、数百年歴史があるはずの地元山口・錦帯橋よりも歴史が感じられるのは、やはり見せ方が上手いのと、音声ツアーガイドがあまりにも秀逸であるおかげだろうなぁと思った。アルカトラズ刑務所の音声ツアーガイドは本当にすばらしい!ディスカバリーチャンネルの世界を自分の足で歩いているような雰囲気がたまらない!
※帰ったら写真と動画うpします。
↓
フィッシャーマンズワーフで遅い昼飯。ただのハンバーガー(10ドル)、これが凄くおいしい。ポテトもマックやバーキンの安物とは全然違って、30分たってもおいしい!このぐらいなら、なるほど料理と読んで差し支えないなぁ。
↓
近所のWhole Food Marketで晩ご飯と朝ご飯を買いだめ
↓
終了
作法や町歩きの仕方が身についてきて、英語も耳に慣れ聞き取れるようになり、おもしろくなってきました。明日はいよいよGoogleとAppleの見学に行ってきます。余裕があればStanfordも!
2009年9月22日火曜日
サンフランシスコなう
思い立ったが吉日ということで今サンフランシスコに来ております。初海外です。
- 飛行機で9時間10時間は思ったより全然楽。ただし酔い止めと耳栓とマスクとエア枕は絶対必須。どれか一つでも欠かすと結構きつい。
- 飛行機機内寒すぎ
- サンフランシスコも寒すぎ(体感で東京の10月下旬以降)、長袖が必須
- こっちの人は皆さんとっても親切、アメリカ人は意外とフレンドリーだった
- でも何言ってるかわからん←一番困る、TOEICの点数とリスニング力は全く比例しません
- SUBWAYの味は東京と代わらなかった(量が多いしピクルスが酸っぱくて不味いが基本同じ)
2009年4月17日金曜日
第1回java-ja温泉に行ってきます
http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E5%8D%81%E4%B8%89%E5%9B%9E
以下、やろうと思っていることリスト
以下、やろうと思っていることリスト
- 昔作ったGAEアプリを作り直し、Werkzeugなんか使ってみたい
- iPhoneアプリを作成する、こないだ書いたPythonのツールを移植するだけ
- Javaはインストールすらしていません
2008年10月27日月曜日
[pyspa]Python温泉おつかれさまでした
普段Blogを愛読しているこの人に会えたのでちょっと嬉しい
アクセンスの中の人からPythonぬいぐるみをいただきました
本物のHackerとはどういう人種か、大変勉強になりました
っていうかアクセンスすごいよアクセンス ← 今の今までどういう会社か知らなかった
Python温泉、2泊3日お疲れ様でした。無線LAN完備の温泉完備の布団完備(?)の食料完備で大変有意義な時間を過ごすことが出来ました。本物のHacker集団はバイタリティがすごい。ニコ動の(正確にはニコニコ大百科の)中の人とお話しできたり、実は毎日自分がクレクレ厨をしていた相手が取締役と社長さんだったりとあとから思い返せばなかなか冷や汗ものでしたが、まぁ旅の恥はかきすてっていいますから・・・駄目?
一番勉強になったのは「徹底的な探求心」、感じ取れたのは「集中力」、自分に必要なのは「現在の環境に対するチャレンジ」。たとえばEclipseをやめてVimとEmacsでPythonを書いてみたりとか。
アクセンスの中の人からPythonぬいぐるみをいただきました
本物のHackerとはどういう人種か、大変勉強になりました
っていうかアクセンスすごいよアクセンス ← 今の今までどういう会社か知らなかった
Python温泉、2泊3日お疲れ様でした。無線LAN完備の温泉完備の布団完備(?)の食料完備で大変有意義な時間を過ごすことが出来ました。本物のHacker集団はバイタリティがすごい。ニコ動の(正確にはニコニコ大百科の)中の人とお話しできたり、実は毎日自分がクレクレ厨をしていた相手が取締役と社長さんだったりとあとから思い返せばなかなか冷や汗ものでしたが、まぁ旅の恥はかきすてっていいますから・・・駄目?
一番勉強になったのは「徹底的な探求心」、感じ取れたのは「集中力」、自分に必要なのは「現在の環境に対するチャレンジ」。たとえばEclipseをやめてVimとEmacsでPythonを書いてみたりとか。
2008年10月26日日曜日
第4回Python温泉 参加中 3日目
- 9:00
おはようございます・・・
テキストエディタをmiからSmultronに入れ替えてみました
制御文字を表示したときの半角スペース表示があまりにも汚いところ以外は最高です。
でもemacsとかviも使えないと困ると思いました
- 9:47
朝早いです・・・
とりあえず家に帰ってからやるべきTodoリストを作成しておきます。
MacPortをインストール、GUIもあると便利なのでインストール
http://komposition.jp/2007/09/porticus/
MacPortからnmapをインストールする
JSONをevalして意地でも画面に出す
おはようございます・・・
テキストエディタをmiからSmultronに入れ替えてみました
制御文字を表示したときの半角スペース表示があまりにも汚いところ以外は最高です。
でもemacsとかviも使えないと困ると思いました
- 9:47
朝早いです・・・
とりあえず家に帰ってからやるべきTodoリストを作成しておきます。
MacPortをインストール、GUIもあると便利なのでインストール
http://komposition.jp/2007/09/porticus/
MacPortからnmapをインストールする
JSONをevalして意地でも画面に出す
2008年10月25日土曜日
第4回Python温泉 参加中 2日目
- 8:00
起床。眠い!
- 9:00〜11:00
持ち込んだカルドセプトDSが大活躍してくれました。
- 11:20
温泉でさっぱりしたところで仕事開始。
まずは昨日のまとめを行う。増田さんと俺の違いは何?何を改良すればあのように優れたハッカーになれるか?
- 12:00
お昼ご飯を食べながら会社の仕事をやったりメールチェックしたりRSSをチェックしたり
- 13:00
来宮神社まで遊びにいく、神社まで遊びに行くというと、某吸血幼女が頭に浮かんだりするがいっさい関係ないと思います
- 14:23
神社に行く予定がなぜか途中の有名人の別荘に足を取られて1時間以上ガイドの人のお話を聞くことに・・・
遅れている仕事を取り戻す
- 16:05
strutsに例えるならば、request.setAttritebute()を勝手に裏でやってくれるところ
ここで、
- 20:03
4時間ぐらいずっとdjango.views.static.serve()について悩みっぱなし。
設定は絶対に間違っていないはずなのに、staticファイルが何度やっても読み込めない・・・なぜ?
こんなエラーが出る:
- 20:10
増田さんありがとう(またかよ)!
つまりはこういうことでした。settings.pyの以下の行が原因。
- 23:19
無事にJavaScriptとCSSを参照することに成功するものの、こんどはUnicodeとJSONではまってしまう・・・
1:'\u71c3\u3048\u308b\u30b4\u30df\u3092\u51fa\u3059\u7528\u610f\u3092\u3059\u308b'こんな感じの文字列で画面に送られてきてしまう。日本語として出したいのだが・・・
2:そもそもJSONがeval()できない!
1時間近く格闘して解決。まず1については、これは評価されていない素のユニコード文字列だから。これをそのままtext/plainとして画面に出しているから記号のまま画面に出てしまうようだ。Python側でこれをどうこうすることはできない(Unicodeとして正しいから。出力時に勝手にきちんとした日本語にされる訳で、データとしてはユニコードとして正しい。u'\u71c3'とu'燃'は全く同じ。)解決するためには、いったんこの文字列をJavaScriptでevalして評価してもらう必要がある。
2については、そもそもJSONとして形式が間違っている。
プロパティ名と値はクオテーションする必要がある。
http://d.hatena.ne.jp/language_and_engineering/20081022/1224597688
このページをみて解決。まさに書いてある通り。
全体を括弧で囲まないと、"a"がジャンプ用ラベルとして扱われてしまう。括弧で囲めば{}以下がオブジェクトとして扱われる。
ということで、正解はこう
それにしても、たかがJSONと思って驕り高ぶっていたらひどい目にあった・・・己の無知を痛感。
起床。眠い!
- 9:00〜11:00
持ち込んだカルドセプトDSが大活躍してくれました。
- 11:20
温泉でさっぱりしたところで仕事開始。
まずは昨日のまとめを行う。増田さんと俺の違いは何?何を改良すればあのように優れたハッカーになれるか?
- 12:00
お昼ご飯を食べながら会社の仕事をやったりメールチェックしたりRSSをチェックしたり
- 13:00
来宮神社まで遊びにいく、神社まで遊びに行くというと、某吸血幼女が頭に浮かんだりするがいっさい関係ないと思います
- 14:23
神社に行く予定がなぜか途中の有名人の別荘に足を取られて1時間以上ガイドの人のお話を聞くことに・・・
遅れている仕事を取り戻す
- 16:05
django.conf.globalsettings.pydjango.core.context_processors.mediaがメディアファイルのURLをテンプレートに渡されるコンテキストに勝手に渡してくれる
# List of processors used by RequestContext to populate the context.
# Each one should be a callable that takes the request object as its
# only parameter and returns a dictionary to add to the context.
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
# 'django.core.context_processors.request',
)
strutsに例えるならば、request.setAttritebute()を勝手に裏でやってくれるところ
ここで、
return {'MEDIA_URL': settings.MEDIA_URL}としているので、テンプレートの中でMEDIA_URLが使えるはず。使ってみよう
- 20:03
4時間ぐらいずっとdjango.views.static.serve()について悩みっぱなし。
設定は絶対に間違っていないはずなのに、staticファイルが何度やっても読み込めない・・・なぜ?
こんなエラーが出る:
Page not found: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/contrib/admin/media/css/django_todo.css一体全体どうしてdjango/contrib/adminなんて所を見ているのかどうかわからない・・・
- 20:10
増田さんありがとう(またかよ)!
つまりはこういうことでした。settings.pyの以下の行が原因。
これでなんとか先に進めそうだ!ラストスパート!!
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
# MEDIA_URLやdjango.views.static.serveのdocument_rootと同じ値を設定すると、
# django.adminの要求するパスとかぶってしまうためうまく動かない!
ADMIN_MEDIA_PREFIX = '/media/'
#ADMIN_MEDIA_PREFIX = '/admin_media/' のように書き換えればうまくいくことがわかりました
- 23:19
無事にJavaScriptとCSSを参照することに成功するものの、こんどはUnicodeとJSONではまってしまう・・・
1:'\u71c3\u3048\u308b\u30b4\u30df\u3092\u51fa\u3059\u7528\u610f\u3092\u3059\u308b'こんな感じの文字列で画面に送られてきてしまう。日本語として出したいのだが・・・
2:そもそもJSONがeval()できない!
eval('{a:b}');これを実行するとエラー・・・
1時間近く格闘して解決。まず1については、これは評価されていない素のユニコード文字列だから。これをそのままtext/plainとして画面に出しているから記号のまま画面に出てしまうようだ。Python側でこれをどうこうすることはできない(Unicodeとして正しいから。出力時に勝手にきちんとした日本語にされる訳で、データとしてはユニコードとして正しい。u'\u71c3'とu'燃'は全く同じ。)解決するためには、いったんこの文字列をJavaScriptでevalして評価してもらう必要がある。
2については、そもそもJSONとして形式が間違っている。
プロパティ名と値はクオテーションする必要がある。
eval('{"a":"b"}');これが正しい。しかしこれでもエラーになる。なぜか?
http://d.hatena.ne.jp/language_and_engineering/20081022/1224597688
このページをみて解決。まさに書いてある通り。
全体を括弧で囲まないと、"a"がジャンプ用ラベルとして扱われてしまう。括弧で囲めば{}以下がオブジェクトとして扱われる。
ということで、正解はこう
eval('({"a":"b"})');JSONでやたら括弧が多い理由がやっとわかった!!
それにしても、たかがJSONと思って驕り高ぶっていたらひどい目にあった・・・己の無知を痛感。
2008年10月24日金曜日
第4回Python温泉 参加中 1日目
- 11:40
宿に到着、こんなに坂の上とは思わなかった
- 12:30
近くの来宮神社でうどん、なかなか美味しい
雨が降っていなければまたきて写真撮ろう
- 13:00
RTMにアクセスするだけの簡単なDjangoアプリを作ってみることにする
http://www.rememberthemilk.com/services/api/
http://repo.or.cz/w/pyrtm.git
こいつのソースを解析してRTMへのアクセス方法を調べる予定、まずは後回しにしてdjango側からつくってゆく
- 14:00
全員黙々とプログラミング作業中、なんだか会社にいるときよりまじめに仕事している俺がいる
さすがにこの空気で遊ぶ訳には・・・
- 15:42
なんとかURLとviewの設計まで完了、まだHelloWorldレベル
Modelは全然使ってないです^^
誰でも知っているどうでもいいTips:
Mac OS Xのpythonのインストール先はなんだか特殊なのでwhichして調べよう
2行目をコピーして、/bin/pythonを/libに書き換えるといい感じ。/lib/python2.5/site-packages以下がみんな大好きサイトパッケージです
後々の実験のために、ここのsite-packagesにrtm.pyをおいておく
- 16:03
そろそろRTMへのアクセスが必要なので、rtm.pyの解析を行うことにした
パブリックメンバーとして用意されているメンバーは4行目に定義されている
あとtest()も自由に使えるようだ。
どうやらcreateRTM()すれば基本万事解決みたいですね。
ここでapiKey, secret, token, frob, signといったよくわからない単語が多数登場。RTMのAPIリファレンスをみて勉強し直すことにする
- 16:50
WireSharkなるソフトウェアが話題になる。
(パケット監視ソフトウェアらしい)
Mac OS XではCocoa動作ではなくてX11(多分GTK)で動作するとのこと
・・・こんなのを使うのかよ
- 17:22
RTM APIシステムについて調査完了。別記事にして詳しく書きます。腹減った・・・
- 18:12
温泉に入ってきました。さすが源泉掛け流しだぜ・・・いい湯でした
- 18:42
rtm.pyの使用により、RTMからタスク一覧を取得することに成功!
しかしrtm.pyが例外を吐いて止まってしまいました。
rspTasks.tasks.list.taskseriesにはアクセスできない・・・
返ってきたJSONをよく見てみる
rspTasks.tasks.list[0].taskseriesというふうにしなくちゃならないんだな。
- 21:26
ご飯も食べ終わってそれでもひたすらソースを書き続ける・・・
引き続きDjangoのview作成を進めるが、rtm.pyの結果をJSON形式にできないことが判明(DottedDictという特殊な型)
自分でJSON変換を書くしかないのかな?オブジェクトをJSONに変換するライブラリなんていくつもありそうだけど
それからもう一つ問題が、
Djangoのデバッグ時のエラー画面(エラーの詳細情報を表示してくれる)がうまく表示されない。
TemplateSyntaxError: Caught an exception while rendering: unknown encoding: X-MAC-JAPANESE
- 22:34
増田さんがあっというまに問題を解決してしまいましたとさ・・・
かろうじて何をやっているのか見えた箇所をメモ
1:python.org公式の2.6にアップグレードする。問題が修正されている。
2:/System/Library以下のPython2.5.1を利用する、Macシステム標準のPythonはMacPortsから大量のパッチがあたっているらしい。
公式の2.5.2はそれらのMac用のパッチがあたっていないためそのような問題が起きる・・・?
(Cocoaを利用してロケールを読み込んでいるから?envを無視している?)
3:どちらもいやなら、sitecustomize.pyを作って修正を書き込む
よくわからないがとにかくpythonを2.6にアップグレードするのが最善なようだ。
- 0:46
python2.6へのアップグレードは問題解決にならなかった。
確かにパッチはあたっていたが、locale.getdefaultlocale()の値を書き換えるようなパッチではなく、
getdefaultlocale()の値がX-MAC-JAPANESEの場合はsjisに振り返るようにしているだけで、
直接locale.getdefaultlocale()の値を利用しているdjangoの場合には使えないようだ。
locale.getdefaultlocale()が正しい値を返すようにするにはAppleがビルドしたpython(パッチ適用済み、要するに2.5.1)を使うしかない。
そこで回避策を考えつかれた:
エラーで落ちる原因はX-MAC-JAPANESEを処理するためのcodecが登録されていないから見つからないでLookupErrorになっている
X-MAC-JAPANESEの正体は単なるshift-jisなので、shift-jisのコーデックを利用して新たにX-MAC-JAPANESEのコーデックを登録すればいいということらしい。
あっというまにパッチが完成、試してみると・・・見事に通った!これがハッカーの仕事か・・・
あとFinderで隠しファイルを表示したり/usr/binを表示する方法が地味にわかった
http://goonsh.ddo.jp/fg/2005/01/18/on-finder
http://netafull.net/macosx/014755.html
Spotlightの有用性もわかった
明日はQuickSilverを入れてみることにする
今日はもう寝る!!
宿に到着、こんなに坂の上とは思わなかった
- 12:30
近くの来宮神社でうどん、なかなか美味しい
雨が降っていなければまたきて写真撮ろう
- 13:00
RTMにアクセスするだけの簡単なDjangoアプリを作ってみることにする
http://www.rememberthemilk.com/services/api/
http://repo.or.cz/w/pyrtm.git
こいつのソースを解析してRTMへのアクセス方法を調べる予定、まずは後回しにしてdjango側からつくってゆく
- 14:00
全員黙々とプログラミング作業中、なんだか会社にいるときよりまじめに仕事している俺がいる
さすがにこの空気で遊ぶ訳には・・・
- 15:42
なんとかURLとviewの設計まで完了、まだHelloWorldレベル
Modelは全然使ってないです^^
誰でも知っているどうでもいいTips:
Mac OS Xのpythonのインストール先はなんだか特殊なのでwhichして調べよう
akisute bin$ which python
/Library/Frameworks/Python.framework/Versions/Current/bin/python
akisute bin$ cd /Library/Frameworks/Python.framework/Versions/Current/bin/python
2行目をコピーして、/bin/pythonを/libに書き換えるといい感じ。/lib/python2.5/site-packages以下がみんな大好きサイトパッケージです
後々の実験のために、ここのsite-packagesにrtm.pyをおいておく
- 16:03
そろそろRTMへのアクセスが必要なので、rtm.pyの解析を行うことにした
パブリックメンバーとして用意されているメンバーは4行目に定義されている
__all__ = (
'API',
'createRTM',
'set_log_level',
)
あとtest()も自由に使えるようだ。
どうやらcreateRTM()すれば基本万事解決みたいですね。
ここでapiKey, secret, token, frob, signといったよくわからない単語が多数登場。RTMのAPIリファレンスをみて勉強し直すことにする
- 16:50
WireSharkなるソフトウェアが話題になる。
(パケット監視ソフトウェアらしい)
Mac OS XではCocoa動作ではなくてX11(多分GTK)で動作するとのこと
・・・こんなのを使うのかよ
- 17:22
RTM APIシステムについて調査完了。別記事にして詳しく書きます。腹減った・・・
- 18:12
温泉に入ってきました。さすが源泉掛け流しだぜ・・・いい湯でした
- 18:42
rtm.pyの使用により、RTMからタスク一覧を取得することに成功!
しかしrtm.pyが例外を吐いて止まってしまいました。
Traceback (most recent call last):ソースを追ってみると・・・384行目
File "", line 1, in
File "rtm.py", line 381, in test
print [t.name for t in rspTasks.tasks.list.taskseries]
AttributeError: 'list' object has no attribute 'taskseries'
rtm = createRTM(apiKey, secret, token)さらに追いかける・・・85行目から
rspTasks = rtm.tasks.getList(filter='dueWithin:"1 week of today"')
print [t.name for t in rspTasks.tasks.list.taskseries]
def get(self, **params):rsp.statにはアクセスできるが、
"Get the XML response for the passed `params`."
params['api_key'] = self.apiKey
params['format'] = 'json'
params['api_sig'] = self._sign(params)
json = openURL(SERVICE_URL, params).read()
LOG.debug("JSON response: \n%s" % json)
if _use_simplejson:
data = dottedDict('ROOT', simplejson.loads(json))
else:
data = dottedJSON(json)
rsp = data.rsp
if rsp.stat == 'fail':
raise RTMAPIError, 'API call failed - %s (%s)' % (rsp.err.msg, rsp.err.code)
else:
return rsp
rspTasks.tasks.list.taskseriesにはアクセスできない・・・
返ってきたJSONをよく見てみる
{"rsp":{"stat":"ok","tasks":{"list":[{"id":"3161896","taskseries":{"id":"......なるほど、listがリストになっている。
rspTasks.tasks.list[0].taskseriesというふうにしなくちゃならないんだな。
- 21:26
ご飯も食べ終わってそれでもひたすらソースを書き続ける・・・
引き続きDjangoのview作成を進めるが、rtm.pyの結果をJSON形式にできないことが判明(DottedDictという特殊な型)
自分でJSON変換を書くしかないのかな?オブジェクトをJSONに変換するライブラリなんていくつもありそうだけど
それからもう一つ問題が、
Djangoのデバッグ時のエラー画面(エラーの詳細情報を表示してくれる)がうまく表示されない。
TemplateSyntaxError: Caught an exception while rendering: unknown encoding: X-MAC-JAPANESE
- 22:34
増田さんがあっというまに問題を解決してしまいましたとさ・・・
かろうじて何をやっているのか見えた箇所をメモ
find -r? ./ -name 'sitecu*.py'結論から:
C Pythonを使ってC言語のstdlibのlocaleモジュールにアクセス?
QuickSilverを利用?
export LANG=ja_JP; python
>>> import sys
>>> dir(sys)
>>> sys.getdefaultencoding()
>>> import locale
>>> print locale.getdefaultlocale()
>>> assert False, locale.getdefaultlocale()
>>> print '\n'.join(sys.path)
python -vで読み込まれたパッケージがすべて表示される
/usr/local/bin以下のシンボリックリンクをdmgパッケージからインストールしたPython.org公式のPythonが上書き(というか優先的に読み込み)している
1:python.org公式の2.6にアップグレードする。問題が修正されている。
2:/System/Library以下のPython2.5.1を利用する、Macシステム標準のPythonはMacPortsから大量のパッチがあたっているらしい。
公式の2.5.2はそれらのMac用のパッチがあたっていないためそのような問題が起きる・・・?
(Cocoaを利用してロケールを読み込んでいるから?envを無視している?)
3:どちらもいやなら、sitecustomize.pyを作って修正を書き込む
よくわからないがとにかくpythonを2.6にアップグレードするのが最善なようだ。
- 0:46
python2.6へのアップグレードは問題解決にならなかった。
確かにパッチはあたっていたが、locale.getdefaultlocale()の値を書き換えるようなパッチではなく、
getdefaultlocale()の値がX-MAC-JAPANESEの場合はsjisに振り返るようにしているだけで、
直接locale.getdefaultlocale()の値を利用しているdjangoの場合には使えないようだ。
locale.getdefaultlocale()が正しい値を返すようにするにはAppleがビルドしたpython(パッチ適用済み、要するに2.5.1)を使うしかない。
そこで回避策を考えつかれた:
エラーで落ちる原因はX-MAC-JAPANESEを処理するためのcodecが登録されていないから見つからないでLookupErrorになっている
X-MAC-JAPANESEの正体は単なるshift-jisなので、shift-jisのコーデックを利用して新たにX-MAC-JAPANESEのコーデックを登録すればいいということらしい。
あっというまにパッチが完成、試してみると・・・見事に通った!これがハッカーの仕事か・・・
あとFinderで隠しファイルを表示したり/usr/binを表示する方法が地味にわかった
http://goonsh.ddo.jp/fg/2005/01/18/on-finder
http://netafull.net/macosx/014755.html
Spotlightの有用性もわかった
明日はQuickSilverを入れてみることにする
今日はもう寝る!!
登録:
投稿 (Atom)