pycassaと認証

平野神社

pythonとcassandraでねこアプリ?を作っているのだけど、thriftクライアントを直接呼ぶのが面倒だったので、pycassaを使ってます。

ただ、pycassaだと、そのままではthrift認証が使えないので、ちょっとパッチ当ててみた。コード表示するほどのもんではないので、diffをこちらに。ホントは、ぐるなびの開発の人とやってるcassandra勉強会用ネタだったんだけど、先週末から風邪でダウンして出席できず。第3回勉強会は何のネタにするか・・・。

ねこアプリの方は、データストア(cassandra使ってるとこ)部がまだできてないのに、FacebookアプリとiPhoneアプリ(ひな形)はだいぶ出来た。はよ完成させねば。いまのとこcassandraの方は使っていけば行くほど「こうするのか!」的なのが出てくるので、もうちょっと経験がたまるまでデータ構造をさくっと決められないのが悩み。

MacbookProを購入したら

湯布院近くの塚原温泉 火口之湯

先日、とあることから、MacBookProを購入。

いきなり上海から配送されてちょっとびっくり。おかげで手元にくるまで思ったよりもかかりました。で、会社に持って行ったら、「ねもさん、もうすぐ新型が出るみたいですよ」って。ヒドイ。


まずは、キーバインドをいろいろ変更。
Windowsと比べて、ctrlキーの変更が楽なのは嬉しい。ついでに、「Open KeyRmap4MacBook」で、上下左右移動あたりをちょっと変更。set-markがないのは残念。ペーストも「^Y」に変えてみたんだけど、何だかコピーバッファが違うのか、カットしたデータがペーストされないので戻し。必ずバッファに入るわけではないのか、バッファの種類が違うのか分からないのでしばらく放置。あとは、ATOKを入れて、「Ctrl-o」で入力ソース切り替えできるように変更。
こんなところで、だいぶ自分好みになりました。


で、iPhoneアプリの開発でも、と本をまとめてAmazonに発注。情報自体はネットにあるけれど、電車内やベッドで寝ながら読むのはやはり本が楽かな。買った本で手元にあるのは下記。他にはObjective-C関連含め2,3冊。ただ、Amazonだと物理的感覚がないので、一度にたくさん買いすぎてしまう。。

基礎からのiPhone SDK

基礎からのiPhone SDK

iPhoneSDKの教科書CocoaTouchプログラミング、最初の一歩

iPhoneSDKの教科書CocoaTouchプログラミング、最初の一歩

iPhoneプログラミングUIKit詳解リファレンス

iPhoneプログラミングUIKit詳解リファレンス

詳解 Objective-C 2.0

詳解 Objective-C 2.0

ライトウェイト・プログラマのためのiPhoneアプリ開発ガイド

ライトウェイト・プログラマのためのiPhoneアプリ開発ガイド

そんなこんなで、先週後半から、2,3時間前に出社。誰も来ない間がひっそり学習タイム。でも、バイク通勤だから寒いのよね。とくに第三京浜疾走中は失神しそう。

休みと社会復帰

うま


先々週に、夏期休暇をもらって西表島縦走なんかをしてきたんですが、最終日に石垣で飛行機待ちをしているところで、叔母の訃報が届きました。
私はもう10年会っていなかったのですが(うちの親族は、親戚づきあいが非常に少ない)、母方の方では唯一おつきあいのある親族だったのでちょっと感慨深かったです。

で、親族数が少ない(=人手がない)ので、葬祭の告知やら受付やら色々必要なので、そのまま休みをもらって、法事一式をしてきました。ただ、手順が分からなかったり、告知状や花輪の手配やらいろいろあって、ちょっと面倒でした。webサービスでToDoにそっていけば手配が終わるようなサービスを作っちゃおうか、とかちょっと考えちゃいました。

で、PHPカンファレンスを挟んで、やっと社会復帰と思ったら、母親の体調が悪くなり2日ほど休みを取った*1ので、都合2週間半休んでしまいました。さすがにココまで来ると、ちょっと感覚がおかしくなってしまいました。必要以上に早起きだったり、スーツ着ないでよいのを不思議に感じる自分に驚いたり、と生活リズムが結構めちゃくちゃです。

ただ、こうして列挙すると、今の感覚の方がよっぽど社会人ぽいので、なるべくならこのまま行ければいいなぁ。

*1:法事のすぐ後だったので、親族にばれてそのまま見舞いラッシュも発生

PHPカンファレンス2008に参加してみました

PHPでつくる ぐるなび


今年で三回目の参加となりました(2002,2007,2008)。PHPにはこれまでお世話になってきたのもあって、今回は思い切って(!?)ボランティアスタッフとして、参加してみました。

内容については、参加された方のブログやこちらで。

ボランティア内容ですが、事前部分では、会場手配、サイトへの事例紹介講演のお願いや、パネルディスカッションのテーマの検討への参加、といったところ。
当日は、私はust配信などの即戦力特技?は持っていないので、会場設営、一部発表用PC準備、サブ会場スタッフ(VTR(HDD録画なので、VDR?)のOn/Off)といった普通の裏方です。

一般参加者として参加した時には気が付かなかったのですが、プログラムの構成や、講演していただく方への依頼など、カンファレンスをつくっていく過程というのを、改めて感じました。

これまで参加してきた宴会、勉強会等も非常に面白かったのですが、カンファレンススタッフは、ちょっと違った面白さがありました。ちょっと違ったと思える点としては。。

  • 自分たち以外の人を対象としたイベント
  • 協力してくれる人(講演していただく方など)や会場の準備など、ステップが多い

そんなこんなで、コミュニティイベントを「作っていく感覚」という得難い経験*1を堪能できました。夏期休暇と法事で、カンファレンス開始直前の大事な2週間は何もお手伝いできなかった私でも、こう思えます。(法事で力尽きて、前日のhackathonで寝てしまいましたけど)

もし、興味を持てた方は、自分の好きなコミュニティのイベントに、思い切ってボランティア参加してみることをお勧めします!

*1:地元の町内会イベント担当に似てる?

クラスメンバーがコピーされるタイミング

榛名山麓のうどん屋さん。うまかった!

2010/2/17追記
2年放置していた はてなdiaryをみてたら、ひどいのがあったので追記。。(汗
pythonでは、コンストラクタ内ではなく、method定義の外側にメンバー定義をすると、インスタンスではなくて、クラスのメンバーになるので、下記では駄目ですねぇ。
ホントは、メンバー宣言をコンストラクタ内に書くのは、実はまだちょっと慣れません。。とはいえ、最近はほとんどpythonでコード書いてなかったり。。


メンバーを保護する感じのクラスを作ってみました。
privateっぽくメンバー(name, job)を隠蔽して、jobのみ編集可能、name, job以外のメンバー追加は不可にするというものです。
DBを隠蔽して、変更すべきでないカラムのデータを変更できないようにして、カプセル化しようと思ったのがきっかけ。

# -*- coding: utf-8 -*-

class Foo(object):

    __attr = dict(name=None, job=None)

    def __init__(self, name=None):
        if (name is not None): self.name = name

    def __getattribute__(self, name):
        try:
            if (name == '_Foo__attr'):
                return object.__getattribute__(self,
                                               '_Foo__attr')

            _tmp = object.__getattribute__(self,
                                           '_Foo__attr')
            if (_tmp.has_key(name)):
                return _tmp[name]
        except:
            raise

    def __setattr__(self, name, value):
        try:
            if (name == 'name' and self.name is not None):
                raise "cannot change 'name'"

            if (self.__attr.has_key(name)):
                self.__attr[name] = value
            else:
                raise ("no attribute [%s]" % name)
        except:
            raise

で、一見うまく動くのですが、実際には、name, jobは、classオブジェクトのメンバーを変更してしまっているようです。

続きを読む

風邪治らない

ンモー、早く治らないかしら

先週から引いた風邪が、なかなか治りません。週末に向けて悪化した感じで、金曜日のsymfony勉強会は肝心の!?懇親会をキャンセルしてしまいました。
発表もどれもいい物でしたが、後半は頭が重くて働かなくなってきたのでメモだけとって、後日でUstreamと併せて見直すことにしました。

週末に参加予定だった読書会/勉強会系もすべてキャンセルさせていただき、土日はまるまる寝てました。開催担当の方、ご迷惑かけてごめんなさい。

今朝になってやっと頭痛等はとれたんですが、咳がまだすごく仕事にならない(てか迷惑)な状態なので、休ませてもらいました。うーん、何とか早く治さないと。なにか早く治る方法ないかな。(いちお、医者いって薬もらって、のんでます)

"cron jobからDjangoフレームワークを利用する" 再び

変な形のバンナム本社


djangoのframework内で作ったライブラリを、他のコンソールから直接呼び出すスクリプトで使用しようとしたら、ハタと困った。直接呼んでもsettingsとか見てないし。どこかでみたと思って探してみたら、
http://yamashita.dyndns.org/blog/creating-a-django-cron-job/にありましたが、1年半前の記事のため、そのままではうまくいかず。残念。
で、環境整えてるのはどこかなって事で、manage.pyあたりをちょろっと見ていたら動きました。

import MyApp.settings as settings
from django.core import management
management.setup_environ(settings)

from MyApp.foo.bar import buz

x = buz()

やったー。