投稿

3月, 2009の投稿を表示しています

オフライン

1週間ほどオフラインになります。ご報告が遅くなりましたが、転職(就職?)、引っ越しをすることになりました。勤務先が海浜幕張のため、津田沼と幕張本郷の間ぐらいに住むことになりました。 1年半前に東京に来て、Pythonな皆様とお会いすることができ、そのPythonな方からお誘いをいただきました。 Python温泉 に感謝です。毎年2回ほど開催されているようなので、参加されたい方はぜひ(現在予約待ち状態ですが…)! 次のお仕事は、以前通信業界で経験したような業務内容です。業務アプリの構築から、DBのメンテ、インフラ構築から、ホームページまで。いわゆる情シス業務です。以前の業務アプリのGUIはJavaでしたが、今度はDelphiです。バックエンドのWeb APIがDjangoだったり。なんかわくわくですね。仕事でJava(PHP、CGIとしてのPerl、Rubyもちょろっと)以外は初めてなので、勉強しまくりです。また勉強会にも定期的に参加していきたいと思っています。 あと、自分の時間ができるのが何よりもうれしいことです。今までのように無駄な自由は少なくなりますが、色々と勉強するには大変いい機会だと思っています。Django、GAE、i-Phoneアプリ、アンドロイド等触ってみたいものがたくさんあるので、時間を有効活用して勉強がむばります。

SoozyCon #7

3/19、 SoozyCon #7 に飛び入り参加させていただいた。 Soozy とはperlベースのWAF(Web Application Framework)らしい。今回の勉強会ははPythonistaとPerlerの集い的な(?)。 PythonistaからPerlerへ Djangoいいよ( everes さん) フル チン スタックなWAF ModelはCharFieldだけじゃなくて、用途別に用意されている URLFieldなんてsave前にHTTPリクエストなげちゃって存在確認までやってくれる Modelに情報多いから、数行でFormが作れる many2manyは中間テーブル意識しなくてよし 簡単なPythonコードでアクセス出来ちゃう ModelのManagerクラス作って、挙動を制御できちゃう Modelさえ書いちゃえば、GenricViews(汎用ビュー)で追加、編集、削除のIFができちゃう contlibに標準アプリが沢山入ってる バックオフィスなadminはとても便利 テンプレートはかなりデザイナー志向 便利な標準テンプレタグがある(CYCLEとか) [method].alters_data = Trueでテンプレからは呼べないメソッドを作れる Python的なWAF事情( @mopemope さん) Pylons はプラガブル Nevow はTwistedベース web2py はWebからコードを書ける CubicWeb はキモイ WSGI で Werkzeug が流行り (WebOb, URLRealay, Routes, WebFlash, WebErrorとかの便利なパッケージを組み合わせる) TurboGears の禅の思想は素敵 これはリンクを張っておく: tg.__init__.py (Pythonistaこういうの好きだなw) Perler から Pythonista へ Angelosに - 最近のPerlのWAF事情(dannさん) C3はおばーちゃんの遺言で使えない ROSEは名前が嫌い HTTP::Engine、Moose(Mouse?)はいい 自分で作っちゃえがフルスタックなAngelos WAF作成の敷居は下がった あ

Mercurial 勉強会 #1

イメージ
最近ブログをまとめて書いてしまっている…。レスポンスが悪すぎる。 3/12は マーキュリアル勉強会 に参加させていただきました。 bitbucket ユーザだし、分散思想が好きだ。勉強会の資料は mercurial-ja にあります。内容まとめ。 最初のスピーカーは「 入門 mercurial 」の著者、 藤原克則 さん。 テーマは、 この本に書けなかった 「エクステンションの書き方」です。 次のスピーカーは @hfunai さん。 テーマは、「hgweb(テンプレートのコミットまで)」 最後のスピーカーは @MiCHiLU さん。 テーマは、「mercurial queues」。 エクステンションの書き方 公式ドキュメントをみると幸せになれる Developer Basics The Mercurial API (個人的に一番見てる) Writing Mercurial extensions API Changes ソースを読むともっと幸せになれる(TODO: ソース読む) エクステのベースとなるコード from mercurial import ui from mercurial import hg u = ui.ui() repo = hg.repository(ui.ui(), '.') アノテーションは犯人探し(良い意味も含む)に便利   hgweb hgのWebインターフェース 起動コマンド: hg serve mercurialは内部にも差分をもってる(分散)から、こんなことまでできちゃう パッチ送る時に注意すること アンダーバー禁止 添付ファイル禁止(内部に持っているツールで) ※詳しくは @hfunai さんに聞きましょう(笑) mercurial queues パッチは超便利(もっと使うべき) 他のバージョン管理使っててもキューは使うべき(TODO: SVNとの連携を調べる) ちらっと藤原さんが言ってらっしゃいましたが、仕事ではCVSかSVNしか使ったことがありません。gitやmercurialのような新しモノはちょっと嫌煙されがちですね。でも、mercurialの考え方は非常に理にかなっていると思っており、分散開発はこれからの時代の流れだと思います。

iPhone/iPod Touch 対応サイトを作る

The Django Book (日本語) サイトをiPhone/iPod Touchに対応させてみました。iPhone対応サイトを作る方法はいくつか( iUi 、 Universal iPhone UI Kit 、 jQuery Touch 等が有名)ありますが、今回はCSSのみを用いて実装することにしました。既存サイトをiPhone/iPod Touchに対応させるには一番近道だと思います。大きな変更点は3点です。 画面のリサイズを無効化する 以下のようなコードをheadタグ内のmetaタグとして追加します。 <meta content="width=device-width; maximum-scale=0.6667; user-scalable=0;" id="viewport" name="viewport" /> iPhone/iPod Touch用のCSSを追加する 以下のようなコードをheadタグ内のlinkタグとして追加します。どうやらIEはいつもどおり対応していないようなので、IE以外に読み込ませるよう ですね。iPhone/iPod Touchの画面サイズが480pxで、画面サイズが480pxより小さい場合にはこのCSSを読み込まれます。PC用のCSSを読み込むlinkタグよりも後ろに追加する必要があります。 <link href="/css/iPhone.css" media="only screen and (max-device-width: 480px)" rel="stylesheet" type="text/css" /> タッチアイコンを追加する サイズが60px×60pxのpng画像を用意し、その画像をタッチ用のアイコンとして指定します。favicon同様、以下のようなコードをheadタグ内のlinkタグとして追加します。 <link href="/apple-touch-icon.png" rel="apple-touch-icon" /> CSSを書く時に注意するポイントがいくつかあり

The Django Book 2.0 (日本語) の公開について

The Django Book (日本語)サイト Djangoを使い始めて1年もたたないけど、最初に The Django Book と出会えてほんとによかったと思っています。Django 1.0が出て、 The Django Book 2.0 の執筆が開始されました。ということで、翻訳することにした。これを読んで、1人でも多くの方がDjangoを触ってくれると幸せですね。ただし、英語が苦手なので、翻訳がボロボロだと思います。がしがしフィードバックしてください。 先日 app-engine-patchの記事 を書いたついでに、この本もapp-engine-patchを使って公開しています。内部はReSTructuredTextを sphinx でpickle化し、それを表示しているだけです。はい、app-engine-patchの機能(adminインターフェースとか)はまったく使っていま(ry。 ついでに、ソースもBitbucketで 公開 しました。

app-engine-patchを使ってみた

id:voluntas さんに、「 Helper だけじゃなくて patch も使え。むっちゃいい!」とごり押しされたので、app-engine-patchを触ってみることにしました。結論からいうと、AppEngineにデプロイするDjango使いはpatchを使うとかなり幸せになれる。ほぼ、まんまDjangoの機能が使えます。 manage.py で (runserver, test, flush, ...) が使える manage.py updateでGoogleにアップロードできる adminインターフェースが使える authミドルウェアが使える Userモデルがそのまんま使える Generic viewsが使える Content typesが使える(Generic以外) content_type = FakeModelProperty(ContentType, required=True) あと、ragendjaというユーティリティが入っていて、これも便利なAPIをたくさん提供してます。 ragendja.dbutils.get_object_or_404(), get_list_or_404():GAEモデルに対応してる ragendja.dbutils.db_create(), db_add():でBigTableを(安全に)処理 ragendja.dbutils.その他:リレーションに便利なAPIがいっぱい regendja.testutils.*:テストまでできちゃう 他にもたくさんあり(すぎ)ます これは使えるw

Vim勉強会@BPStudy

ここ最近デスマだったので、時間を作るのが非常に難しい状態だったわけです(ブログもだいぶさぼった)。だけど、Google App Engine Hackathon で「育て方に失敗している」と言われてしまったvimを調教しようと、2月22日に「Vim勉強会@BPStudy」に参加させていただきました。資料は Be PROUD 社様のサイトで 公開 されています。 色々とプラグインを教えて頂き、インスコしました。おかげさまでちょっとは開発が速くなったかな(笑)。今回教えて頂いて、インスコしたプラグインをご紹介。 NERD commenter :トグルでコメントアウト、コメントインができるようになる buftabs :バッファーリストを表示できるようになる grep :バッファーgrepできる python_fold :Pythonコードをclass、def、{{{}}}でフォールディングできる あれだ。まだまだ修行が足りないのか、 python_foldだけは使いこなせなくて外しました。でも、長文コードを書いて、リファクタして、関数がいっぱいになったりしたら便利なんだと思う。修行ですね。あと、_vimrcをカスタマイズしてショートカットを便利に使う方法を教えて頂いた。   QuickBufのリストを";;"で出せるようになる(これは神) let g:qb_hotkey = ";;" 使い慣れてるショートカットで編集する( Ian より) "コピー(Ctrl + c) vnoremap <c-c>"+y "切り取り(Ctrl + x) vnoremap <c-x>"+x "貼り付け(Ctrl + v) map <c-v>"+gP うん。これでだいぶvimで開発しやすくなった。講師の @shin_no_suke さんと、会場費を提供してくださった Be PROUD 様に多謝。ありがとうございました!