オンラインTCG(トレーディングカードゲーム)の歴史

ソーシャルゲーム業界の雄Cygamesがshadowverseを発表したことにより話題となっているオンライントレーディングカードゲーム(以下TCG)ですが、その歴史は意外と古くもう15年以上になります。 shadowverseがどのようなゲームを元に作られているのか、Cygames…

Python プロフェッショナルプログラミングの第二版(Second Edition)

Python プロフェッショナルプログラミングが3年の時を経て改訂されました。 初版の執筆をした縁でレビューに参加したのですが、全般的に初版に比べてこなれています。 特に @feiz が書き下ろした 11章. 環境構築とデプロイの自動化 がとても良い内容だったの…

猿でもわかるDjango1.7のmigration

さよならSouth Django1.7からmigrationツールが含まれることになりました。 それにより1.6までは必須なツールだったSouthがお役御免となります。 詳しくはここを読んで欲しいのですが、面倒な方のためにSouthからDjango1.7への移行について簡単に書きます。 …

転職しました

BeProudはとても良い会社でした BeProudで2年半ちょい働いた訳ですが、3000行超のファイルを書いていたような人間が、他人のコードレビューができるようになるくらいには成長できました。 それもこれも一緒に働いた同僚のおかげですね。 こんな社会不適合社…

転職して4日が経った

前職は2年半で辞めたので、前職生活の約1/200を現職で過ごしたことになる。 以下略

PyCon APAC 2013 終わりました

チュートリアルデー 朝受付をやった後はそのまま仕事していました。 チュートリアル終了後は懇親会に参加した後、翌日の会場である工学院大学でタイムテーブルの打ち合わせ後に帰宅。 想定より多くの方が参加してくれたり、前々日に突発的に企画した懇親会に…

PyCon APAC 2013 はっじまっるよー

PyCon APAC 2013 開催します! 去年「何故PyConJPの運営に関わっているのか」で書いたように、今年もなりゆきと惰性でスタッフをやっています。プログラム選んだりタイムテーブルを決めたりチュートリアルを一から企画したり開催前レポート書いたり外タレの…

Django と South と テーブル名変更

South でテーブル名を変更したい class Hoge(models.Model): text = models.TextField() hogeアプリケーションにこんなモデルを作るとデータベースのテーブル名はhoge_hogeになります。 Djangoの外に出ないならこのままでも良いんですけど、データベースを直…

Django と South と カラム名変更

South でカラム名を変更したい class Example(models.Model): hoge = models.TextField() こんなモデルの hoge を huga に変えたいとします。 class Example(models.Model): huga = models.TextField() # hoge → huga こういう場合普通に schemamigration を…

僕とPythonとBeProud

はじめにというか注意書きエイプリルフールだし先月転職2周年で公開しようと思いつつ躊躇してたものを一部嘘を交えて書き直しました。 そんな訳でこの内容をそのまま信じたり何が嘘なのか聞くのは止めてください。 前職の話 お前たちの社長とCTOに絶望した。…

人生を豊かにする

はじめに この記事はPySpa Advent Calendar21日目の記事です。人生を豊かにするものは幾つもあります。 例えば、魅力的な恋人。 例えば、心を許せる友人。 例えば、知的な語らい。 例えば、力を発揮出来る仕事。 …etc今日までのAdvent Calendarを読んでいれ…

South のハマりどころ -同じ番号のmigrationファイルが出来た場合-

はじめに この記事は 2012 Pythonアドベントカレンダー 12日目の記事です。 South を使ってると幾つかハマるポイントがあります。 Pythonプロフェッショナルプログラミングにも少し書いているのですが、書ききれなかったものとか、それ以降で感じたことなど…

Django と South と custom sql

自前で create table したい Django を使っていて Django の ORM はそのまま使いたいんだけど、create table は自前で行いたい場合があります。 良くあるのは、partition 切りたい場合とか。 MySQL の range partition を使うには Primary Key を 複合Primar…

PyCon JP 2012 終わりました

初日 誘導を手伝った後、発表者用受付にほぼずっといました。 発表は何も見ていません。夕方からはPartyの準備とか受付とかをしてました。 参加者が少ないのではないかと心配していたのですが、思ったよりずっと当日参加が多かったのと、会場が素晴らしかっ…

PyCon JP 2012 始まるよー

PyCon JP 2012 開催します! 以前「何故PyConJPの運営に関わっているのか」で書いたように、今年はスタッフとしてがっつり関わってました。プログラム選んでタイムテーブルを決めたり講師の方にハンズオンをお願いしたりPartyの手配をしたり開催前レポート書…

DjangoのGenericForeignKeyとdumpdata

GenericForeignKeyって使いにくい DjangoのGenericForeignKeyってdumpdata→loaddataするとデータがズレるし使えないよねーって思ってた時期が僕にもありました。 なんでかって言うと、contenttypesの順番がsyncdbする度に変わるから、dumpdataした環境とload…

何故PyConJPの運営に関わっているのか

はじめに 去年もスタッフをやっていたPyConJP2012に今年も関わっています。 去年は途中から参加したのもあってあまり何もしていなかったのですが、今年は何の因果か色々と働いています。 「Call for Proposal出してよー」 とか 「スポンサー募集中だよー」 …

rediscoの利点と欠点と正しい使い方

はじめに プロジェクトぽしゃって気力失ってたけど、どこかで誰かが使おうと思った時のために残しておく。rediscoの使い方等は以下を参照 http://d.hatena.ne.jp/flag-boy/20110601/1306902308 rediscoの利点1. Key-Valueじゃないデータ構造が扱いやすい red…

PyConJPでスタッフしてました

せっかくだから何かお手伝いしたいなーってことで、 夏前からスタッフ登録をしてちょっとしたHPの修正とかをやってました。 当日はこんな格好で誘導したり Partyの受付をしたりしてました。 大した事は出来なかったけど、次回もまたお手伝い出来たらなって思…

rediscoのzfilter

前回zfilterは条件を1個しか指定出来ないよって書いたけど Animal.objects.filter(area_id=1).zfilter(x__gte=1).zfilter(y__gte=1) みたいにネストして書けば問題ないってことに一月以上経ってから気付いた。 ネストしたら一個目しか評価してなかった…今ま…

rediscoを使ってみた

rediscoって何?redisco とは Redis を Django モデルっぽく使えるようにしてくれるライブラリ。 redis-py に依存している。 今回MySQLのTPSだと問題になりそうな処理がある & その処理にある程度複雑なモデルが必要だったので @cuctasman に教えてもらって…

DjangoのurlresolversでURL以外を振り分ける

リクエストを即時実行したくない現在作ってるゲームでは諸々の都合で複数のリクエストを一度キューに貯めて後からまとめて実行する仕組みが必要になっている。 そういう時にどうするかってのを、@cactusman と検討したのだけど MQ や Celery をそのままでは…

DjangoのForeinKeyとかキャッシュとか改

毎回キャッシュアクセスはしたくない前回、DjangoのForeinKeyとかキャッシュとか - ま、そんな日もあるさを書いたんですけど name = player.cached_community.name id = player.cached_community.id みたいに使うと複数回キャッシュを見に行ってしまうので c…

DjangoのForeinKeyとかキャッシュとか

キャッシュ機能付きモデルの欠点以前、Djangoでキャッシュ機能付きモデル - ま、そんな日もあるさを書いたんですけど、これって ForeinKey を持つようなモデルだと思ったように上手く動いてくれません。 class Community(AbustractCachedModel): name = mode…

GWとかを振り返って

今年のGWは何もしなかった 月曜を休んで7連休だったのだが、30日に服を買いに行ったのと2日に奥様の付き添いで病院に行った以外は近所のスーパーくらいしか行かずに引きこもっていた。 それだけ時間があるなら勉強でもすれば良いのだが、それすらせずに毎日…

randomがどれくらい収束するのか試してみた

twitterで50枚のものから1枚を選ぶのを延々と繰り返した場合に、最も選ばれるものと最も選ばれない物とでどれくらい差が出るのかって話をしてたので試してみた。 ソースはこんなの。 import random count_list = [0] * 50 for i in xrange(10000 * 100): cou…

Google MapsのKMLを触ってみた

Google MapsのマイマップからRSSが無くなっていたので、社内用SkypeBotをRSSからKMLへ変更してみた。 その時いくつかハマったのでメモ代わりに書き残す。 KMLのパースにはElementTreeを使った。 コードはこんな感じ。 import urllib2 from xml.etree import …

DjangoテンプレートとGenshiを比較する

これはgumi Engineer's Diaryに書いたものを修正・転載したものです。 はじめに 世の中には、Advent Calendarなるものが存在しているみたいです。 僕は不勉強なのもあって今年になって初めて知りました。 そのうちの一つPython Web フレームワーク アドベン…

モバイル向けCSSのインライン化ライブラリを公開しました

これはgumi Engineer's Diaryに書いたものを修正・転載したものです。 はじめに 今日のお題は悪名高きガラケーのCSSのお話です。 キャリアごとに色々あって面倒くさいガラケーのCSSも、これを読めばPCサイトのように簡単に扱えるようになります。 モバイルで…

Djangoでキャッシュ機能付きモデル

これはgumi Engineer's Diaryに書いたものを修正・転載したものです。 キャッシュを自動化しよう ソーシャルアプリのようなトラフィックが高いサービスを作るときはDBアクセスを減らすことが重要になります。 Djangoにはそのための機能であるdjango.core.cac…