花見したよ
2週間前にな!
(2週間前の)金曜は芝公園で会社関係の花見でした。
芝公園の花見は気合入りすぎててすごいですね。上の写真は近くで一番気合入ってたブースです。プロジェクターとか用意してて、もうまったく花見てない。 我々のブースも大砲みたいなヒーターが2機あったりして充実してた。 お疲れさまでした > 主催の方々
土曜は有栖川公園で同期と花見。同期の桜
野外で酒を飲むのはいいもんですね。
written by shn, on Apr 19, 2009 1:33:00 AM.
2週間前にな!
(2週間前の)金曜は芝公園で会社関係の花見でした。
芝公園の花見は気合入りすぎててすごいですね。上の写真は近くで一番気合入ってたブースです。プロジェクターとか用意してて、もうまったく花見てない。 我々のブースも大砲みたいなヒーターが2機あったりして充実してた。 お疲れさまでした > 主催の方々
土曜は有栖川公園で同期と花見。同期の桜
野外で酒を飲むのはいいもんですね。
written by shn, on Apr 13, 2009 12:31:00 PM.
自己参照型のrelationを作ろうとしていて、子供を追加しても「循環参照だ!」って怒られてプチ困った。 マニュアル読んだら答かいてあったよメモ
以下、Adjacency List Relationships - Mapper Configuration からコピペ
親 > 子は普通で良い
mapper(Node, nodes, properties={
'children': relation(Node)
})
子 > 親はremote_sideという引数にカラムを指定する
mapper(Node, nodes, properties={
'children': relation(Node, backref=backref('parent', remote_side=[nodes.c.id]))
})
remote_sideは
used for self-referential relationships, indicates the column or list of columns that form the "remote side" of the relationship.
とのこと。これ以上はコードを追ってないので、なんでこうしないと普通の1:Nとして関係が作れないかはわからず…
Categories: メモ | Tagged as: Python | 2 comments
written by shn, on Apr 6, 2009 11:19:00 PM.
海外だと、Anonymous Subscriber ID (ASID)って言うのかね?
iPhone SDK: Retrieving MSISDN or SIM ID for Authentication (iPhone forum at JavaRanch)
NSString *uniqueID = [[UIDevice currentDevice] uniqueIdentifier]
あとで読む
ASID Mobile WebSite Developers Cookbook
日本のは
Categories: メモ | Tagged as: iPhone | 0 comments
written by shn, on Apr 2, 2009 1:25:00 AM.
2chサバゲに行ってきた。フィールドは千葉のBB-Jungle。高速道路割引初日だったので京葉道路は車が詰っていたが、それ以外は比較的すいすい。
これは、清原さんにお借りした、PAW店長のカスタムKAC PDF。凄すぎて、いままでで一番キル取れた。ちょっと次はVFC買います。
サバゲはこんなゲームです。BB弾を打ちあい、打たれたら「ヒット!」と宣言して退場します。だいたい相手陣地のフラグを取ったら勝ち。他に、変な設定のゲームをやったりとかも。 BB弾は法規制により威力が0.98Jに制限されているので、「あいたたっ」ぐらいの感じです。
やってみるとわかるのですが、迷彩服を着て伏せるなり匍匐するなりすると、まったく見えません。 30mより遠いと動かない敵を見つけるのはとても難しいです。 よくベトナム戦争とかやるよなー と思いますね。あれは当ったら死ぬし。 シャーリーン
tamron 10-24を借りてるので撮った。広角は難しいですね。Zine用Flickrプラグインが欲しい。
帰りにCostco寄ったのだが、半年以上来てないので会員権が失効しております4200円払えということで帰宅。もう行くことはなさげ。
written by shn, on Mar 29, 2009 7:58:00 PM.
WINVER的な奴が欲しい。とりあえず、これで良さげ。
#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_2_2
Categories: メモ | Tagged as: iPhone | 0 comments
written by shn, on Mar 23, 2009 12:20:56 AM.
土曜にチーズフォンデュ(溶かしたチーズにパンとか野菜とかを絡める食べ物)、日曜にシュラスコ(giveupするまで、ブラジル人が肉を運んでくる食べ物)と、二日続けてガタイが良いあたりの外国人の食物を食べると、胃が悲鳴を上げたり、万座温泉のような放屁をしたりと大変です。
シュラスコは表参道のバルバッコアグリルで食べました。お客さんの半分ぐらいが外国人だった。しばらく肉はいらんて感じ。
written by shn, on Mar 15, 2009 2:54:00 AM.
iPhoneの素晴しいところの一つは、Crash Logが本体に保存される事なんですが、
Thread 0 Crashed:
0 libobjc.A.dylib 0x300c8c18 objc_msgSend + 20
1 Fastweet2k 0x00016240 0x1000 + 86592
2 UIKit 0x30b2b414 -[UITextView keyboardInputChanged:] + 80
3 UIKit 0x30bcaf1c -[UIWebDocumentView keyboardInputChanged:] + 40
このように、デバッグバイナリでもシンボルが出ないときがあります。 symolicatecrashを使ってもだめでがっかり。
でも、dSYMがあるから頑張ればなんとかなるんじゃね?とやってみたらなんとかなった。 普段VisualStudioの微温湯に浸かっている僕には大変でした。
% gdb --quiet Fastweet2k.app.dSYM/Contents/Resources/DWARF/Fastweet2k
(gdb) info line *0x16240
Line 179 of "/Users/shn/Documents/projects/git/fastweet/Classes/TweetViewController.m" starts at address 0x16212 <-[TweetViewController sendPressed:]+118> and ends at 0x162e4 <-[TweetViewController sendPressed:]+328>.
てな感じ。
上記のCrash Logはdebug版バイナリのものだったので、_./build/Debug-iphoneos/_にあるdSYMをgdbで開き、info lineコマンドで、対応するソースコードの位置が出てきます。
しかし、出てきたのは良いが何故ここでハングアップするのか、というか何故あの操作でこの関数が呼ばれるのか不明で泣きそう。
ついでに、symbolicatecrashの解説はここが詳しいです。
Categories: メモ | Tagged as: iPhone | 0 comments
written by shn, on Mar 7, 2009 2:34:00 AM.
リクエストから、各URLへと対応するハンドラを導くのに、Werkzeugではwerkzeug.routingを使う。
wz_routing.py
#! -*- coding:utf-8 -*-
from werkzeug import run_simple
from werkzeug.routing import Map, Rule, Submount, Subdomain
class WSGIApplication(object):
def __init__(self):
self.url_map = Map([
Rule('/hello', endpoint='hello'),
Rule('/hello/<string:lang>', endpoint='hello'),
])
self.url_adapter = self.url_map.bind('localhost')
def __call__(self, environ, start_response):
endpoint, arguments = self.url_adapter.match(environ['PATH_INFO'])
handler = getattr(self, 'handle_%s' % endpoint)
return handler(environ, start_response, **arguments)
def handle_hello(self, environ, start_response, lang='en'):
writer = start_response('200 OK', [('Content-Type', 'text/plain; charset=utf-8')])
if lang == 'en':
return ['Hello']
elif lang == 'ja':
return ['こんにちわ']
elif lang == 'he':
return ['הלו']
return ['no hello yet']
if __name__ == '__main__':
run_simple('localhost', 4000, WSGIApplication())
$ python wz_routing.pyして、$ curl http://localhost:4000/hello とか、 $ curl http://localhost:4000/hello/ja とかしてみるといろいろなhelloが楽しめると思う。
Ruleには、<int>やら、<float>やらも使えるので、/blog/archive/2009/03/とか、twitter.com/shn/repliseみたいなナウいURLが設計しやすくて良いですね~
__call__の中身は、以下のようにも書き換えられる。
return self.url_adapter.dispatch(
lambda e, a: getattr(self, 'handle_%s' % e)(environ, start_response, **a),
path_info=environ['PATH_INFO']
)
goodbyeも楽しみたいなーと思って、/goodbyeにアクセスするとNotFound例外が飛ぶ。こいつもwsgi的な奴なので、ちょちょっとするとエラーを表示してくれる。
from werkzeug.exceptions import HTTPException
try:
endpoint, arguments = self.url_adapter.match(environ['PATH_INFO'])
except HTTPException, e:
return e(environ, start_response)
else:
...
Submountを使うと、Ruleの塊を指定したディレクトリ以下にマッチしてくれるようにしてくれる。似たようなのにSubdomainてのもあるけど、まだ使ったこと無い。subdomain毎にbind()しないといけないのかな?
Tagged as: Python, Werkzeug | 0 comments
Proudly powered by Zine.