hatena

<body>
*1269317264*Java-ja温泉2 まとめ
Java-ja温泉2に行ってきました。今回、1:作業が割とはかどって新しいサービスをクローズドベータまで持っていった。 2:ドミニオンを沢山した。 3:自作のゲームの新しい遊び方が発明された。 というわけでかなりの充実っぷり。

Twitを流れ去る前に編纂しておく。

** 1日目合流前
>>
ぐぐる先生にこだまに乗れと言われたのでキョロキョロして駅員に熱海に行きたいと聞いたら十一番線だと言われた。快速アコティーに乗ればいいのか。そういえば誰かそんな感じのことを言っていたな。
<<

>>
@/takano32 が浴室で全裸の溺死体になって発見される予定です。残りの全員にアリバイが!飲酒して温泉に入るのは危険ですね。 RT @/hyoshiok: @/nishio 熱海殺人事件。つかこうへいの名作だな。
<<

快速アコティーでドラッカーを読む。
>>
想像的模倣戦略と柔道戦略の違いがよくわからない。柔道戦略ってのは図体の大きいトップ企業が、足を払われて転ぶみたいなイメージなのかな。
<<

>>
熱海ナウ。足湯がとても混んでいる。 →足湯がぬるくてしょんぼり。前は長時間入ってられないような温度だった気がするけど、冬だから冷めたのかな?
<<

>>
@/hirokinko と合流したナウ。他にタクシーに乗る人がいないかなナウ
<<

ちなみにタクシーは2000円くらいと聞いた気がしたけど、実際には1000円でした。

** 1日目
>>
#JavaJaSpa2の参加者リストを作ればハッシュタグつけなくても見やすい?と思ったけどめんどくさい!リストへの一括登録スクリプトとか誰か作ってないのかな。
<<

開発合宿みたいに宿泊して数日間一緒にいるようなケースだと、その場にいる全員のTwitを一覧したいよね。

>>
足湯で隣にいた学生が「逗留の史実」を「ずりゅうのふみ…なんだろ?」と言っていたのでツッコミを押さえるのが大変だった。ずりゅ ずりゅ ずりゅぅぅ
<<

>>
Jinja2のドキュメントってこれが本家なんだろうか、やたら重たくて見てられないんだけど… http://jinja.pocoo.org/2/documentation/ → Djangoのカスタムフィルタ的なものが作りたくてJinja2のドキュメントを読んで、よくわからないなぁと思っているナウ → あった: http://kay-docs-jp.shehas.net/templates.html#extension-filter → カスタムフィルタで適当にやっているなう
<<

>>
Jinjaでテンプレートの継承をする方法を調べているナウ。でもたぶんDjangoみたいに出来るんだろうな。 → できたできた。次は回答を選んだときに正解かどうかを表示するのをページ遷移でやろう。遷移なしにするのはまあ後ででいいし。
<<

>>
@/takano32 GJ++ RT http://twitter.com/#list/takano32/java-ja-spa
<<

>>
ぎゃっぱぎゃっぱ
<<

>>
たぶん会話によるインタラプトが大量に入る状態でタスクをこなしていくことによってマルチタスク能力が鍛えられるに違いない
<<

>>
Tokyo Disney Disaster RT @/igrep TDD - Tokyo Disney D。。。なんだろう。
<<

>>
とりあえず正解のボタンを押すとちんまりと "Good! :)" って表示されるようになった。ま、デザインは後でやる。
<<

>>
「はじめましてっていいだすとキリがないからさ!」(太一氏)
<<

このスタンスはスバラシイと思う。初対面からみんな友達。

>>
url_forなんてタグは知らないと起こられたのでJinjaのリファレンスを見る → はっ、url_forはJinjaじゃなかったりするんだろうか → kay/authで&lt;a href="{{ url_for('auth/request_reset_password') }}">とかやってるから使えないはずはないな。なんかsettingsに書く必要があるのかな
<<

>>
正解率の表示画面を作っているナウ →  棒グラフを作ろうなどと不必要なところにのめり込んでいる → 1x1のPNGを作る一番手っ取り早い方法はなんだろうなぁ
<<
教えてもらった: <a href='http://d.hatena.ne.jp/nishiohirokazu/20100320/1269074820'>1ピクセルのPNGを作る一番手っ取り早い方法</a>

>>
げ、jinjaのformatってこんな引数の順番なのか http://jinja.pocoo.org/2/documentation/templates#format → jinjaでx|yをformatしたいときにどうするんだろう。format("...")|(x|y)できない → 構文を勘違いしていた。"..."|format(x|y)でいいんだ → いけない、棒グラフを作るのにのめり込んでいた。それは本質ではない。
<<

<img src="http://gyazo.com/ff1e0108f39e3e810a7cc5779875e86f.png" alt="「これは買出したお茶?」「y」「いや、注文したやつでしょ」「そうか strictに区別されるのか。僕が知りたかったのは飲んでいいかどうか…privateなお茶なのかそれともpublicなのか…あ『これ public?』って聞けばよかったのか」「飲んでいい?って聞けばいいんじゃね?」">

>>
うんリクエストが飛ぶのはウザイのでdateスキーマ使うけど、手で正しくPNGを作れる自信がなかったので RT @/inuro ダミー用の1x1透過GIFはbase64でdataとして記述しちゃう方が速いだろうか。 RT @/nishio: 1x1のPNGを作る一番手っ取り早い方法は
<<

これは後でexpiration: 300dする方がいいと気づいた。

>>
各問題用の個別ページができた。とりあえず今のところはトップページからリンクを張っておくか。ユーザの行動を考えると問題を解き終わった画面に「次の問題」ってリンクが欲しいところだけど。あ、そうか、published_onがあるからそれより後のアイテムを1個とればいいのか 
<<

>>
ごはんは1830説と1930説があるがまだ準備の気配がないから1930だなきっと。僕はお風呂に入ろうっと。
<<

** 1日目夕食後
>>
おお、もう公開されてたのか。知らなかった: http://okyuu.com/ja/special/engineer13-nullpobug 
<<

>>
何ブクマあるか聞かれたから調べた: 80ブクマ http://www.nishiohirokazu.org/blog/2006/08/python_12.html
<<

>>
そうそう、AspectJでロギング以外に何が出来るんだって話だけど、WhiteDogっていうネットワーク同期機能を付与するのとかあるよ。これを同期するって書くと同期コードが編み込まれるらしい http://code.google.com/p/whitedog/
<<

>>
@/cactusman と9路盤で勝負する。僕が白でコミは6目半 → 二目半負けた → @/cuctasman との九路盤勝負は2勝1敗でした。とはいえ、僕が勝った2回は僕が先手でサボテンの打ち込みを捕殺しただけなんでお互い後手が苦手ってだけの可能性も。
<<

>>
えーと、クッキーにIDが入ってなければGuest, 問題に回答した時点でもしIDがなければユーザ作成、クッキーにIDが入っているが紐づいているユーザに名前がなければTempUser、名前を登録する際にパスワードも入力させて普通のUserになる、と。あってる、と、思う。 → おー、ちゃんと間違えれば間違えるほど問題の正解率が下がる。めでたし。んー、次は何をするんだっけな。 → 問題ができて、回答ができて、集計も出来ているから、後は問題をもっと増やして問題間のナビゲーションを作ればいいのか。
<<

ユーザごとの成績集計のためにまずユーザを作った。

>>
CSSで変なことをするのってパズル的で面白くてついつい時間をかけてしまう。棒グラフなんか作ってないでさっさとアカウント登録画面を作るべき何だけど。めんどくさ。 → 途中までログインフォームとかパスワードが一致してるかのチェックとかハッシュしたりとか作ってから、authくらいフレームワークが持っているじゃんということに気がついた。ダメだ、疲れてるのかな。
<<

>>
ちゃんとHi, nishioって出た! 結局オレオレで作っていたauthを結局全部捨ててkay.authを使うことにした。ふー。ログイン画面のデザインとか気にしなければとりあえずログイン、ログアウト、オートサインアップ、サインアップができるようになった。あとは問題間のナビゲーションを作って問題を50個くらい入れればOKか。
<<

>>
もう3時か。一段落ついたしお風呂に入る。
<<

もちろん27時の意味である。

>>
コンテンツのページにユーザのログイン情報を入れると無駄に動的になってコンテンツ部分がキャッシュできないのがいやでiframeにしたんだけど、サイズの調節がめんどい。でJSで調節するなら、じゃあそもそもJSでユーザ情報読んでクライアントサイドで書き換えればいいじゃん、という。ま、ナビゲーションを先に作る。
<<

>>
あっ、なんか気分が悪い。空腹?! → 8時に晩御飯を食べてからそろそろ8時間くらい頭を使ってコードを書いていたのか。オヤツを食べないで書いていたから血糖値が下がりすぎたのか?むかむかする。
<<

今回は口内炎と肥満が気になるのでオヤツをあんまり食べなかったんだよ。

>>
悪いモンスターに拉致されてレースオブギャラクシーをプレイすることになった
<<
ちなみに28時である。

レースオブギャラクシーはルールの複雑なサンファン。ドミニオンもする。

** 2日目朝食後
(ふとんのなかにいる)

** 2日目昼食後

>>
結局8時までゲームをして朝ごはんを食べてから寝てた。
<<

>>
ナビゲーションができたはずだけど問題が1つしかないから表示されないww そしてダメだ日本語がおかしい。「できがはずだから問題クイズが」とか書いていた
<<

コードはかけるのに日本語はかけない。日本語脳だけまだ寝ていたようだ。

>>
PyStringのデフォルトエンコーディングと、シェルのエンコーディングの話ナウ sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
<<

詳しくはこちら: <a href='http://d.hatena.ne.jp/nishiohirokazu/20100323/1269324128'>Pythonでprintの結果をリダイレクトする場合に出力のエンコーディングを指定する方法</a>

>>
Skype4pyなんてのがあるの?
<<

夕食まで遊ぶ。なにして遊んだか覚えてない…。

** 2日目夕食後

>>
Twitterの前の発言が5時間前なので5時間ゲームと晩御飯で費やしたということだ!今日中に問題数50くらい入れてSkypeでこっそり公開を目指す!
<<

>>
Pythonで記号だけでプログラミングできるかどうかに関してだけど、~([]!=[])で-1が作れるのでとりあえず記号だけで任意の数値のリストは作ることができる。問題はそれを文字列に変えたりprintしたりする方法が思いつかないこと。
<<
>|python|
~([]!=[])
||<

>>
Javaで代入を消すには長さ1の配列に対して拡張for文を使う(誰得)     
<<
詳しくはこちら: <a href='http://d.hatena.ne.jp/Nagise/20100321/1269182606'>Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ</a>

>>
[10/03/21 23:19:11] 西尾泰和(nishio.hirokazu): http://a.*.com/ 一応うごくかなーと思った。あ、一応まだこのチャット内だけのクローズドベータってことでよろしく。あと問題の難易度はいまいち調節されていないので高すぎるかも。

Analyticsはるの忘れてた、明日やろうっと。

Older Question押すと一番古い問題に飛ぶな(笑) あ、わかった。olderは自分より古いものを取得しているけど、orderつけてないから自分より古いものの最初のをとってるのか。
<<

>>
bulk uploadのバグとナビゲーションのバグを取った
<<

バトルオブスパゲッティモンスターをやる。

>>
バトルオブスパゲッティモンスターは、島があって、農民を配置して、魔術師が順繰りに巡って、その土地の儀式を行うと、島が動いたりする。海流の反転、革命。祝福と呪い。生と死と漂流。島の沈没。祈りといけにえ。ってな感じのゲーム。
<<

28時頃寝る。

** 3日目朝食後
最終日は朝ごはんを食べてから寝る手が使えないので眠い。うとうとしながら味噌汁だけ飲んだ。お風呂に入ったらわりと目が覚めた。

精算してみんなを見送ったあと一人で坂の下の来宮神社でうどんを食べる。

>>
来宮神社で桜エビうどんを食べる 
<<

>>
東京行きの電車が座れそうになかったのでグリーン席を買ったが、次の電車が熱海始発だった罠
<<

眠りながら家に帰る。お疲れ様でした。

*1269324128*Pythonでprintの結果をリダイレクトする場合に出力のエンコーディングを指定する方法
Java-ja温泉でちょうどエンコーディングの話で盛り上がっていたので@whosaysniに聞いてみた。print文でunicodeオブジェクトを出力しようとすると、出力先のシェルのエンコーディングでバイト列に変換してから出力される。
>||
tmp$ cat > tmp.py
print u'\u307b\u3052'
tmp$ python tmp.py 
ほげ
||<

しかし、シェルの側でリダイレクトをしていると、シェルと違ってファイルのエンコーディングは簡単に取得できないので「エンコーディングわかんないから何で出したらいいかわかんないや。中身がasciiだったらそのまま出してもいいか」とasciiに変換しようとして失敗する。

>||
tmp$ python tmp.py > tmp.txt
Traceback (most recent call last):
  File "tmp.py", line 1, in <module>
    print u'\u307b\u3052'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
||<

で、その解決方法だけど、そのスクリプトからリダイレクトして書き出すファイルのエンコーディングがutf-8であると仮定できるなら:

>|python|
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
||<

これでOK。試してみよう。

>||
tmp$ cat > tmp.py
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
print u'\u307b\u3052'
tmp$ python tmp.py > tmp.txt
tmp$ cat tmp.txt 
ほげ
||<

めでたしめでたし。あと@tokibitoに chardet ってライブラリでエンコーディングの判定ができると教えてもらった。今回のケースには使わないけど必要になることもありそうだから覚えておこう。
</body>

はてなダイアリー 2010-03-23