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へ
PerlerからPythonistaへ
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にあります。内容まとめ。
※藤原さんから「水銀」なるシールを貰ったけど、どこに貼るかをすごい迷っている(笑)
3/12はマーキュリアル勉強会に参加させていただきました。 bitbucket ユーザだし、分散思想が好きだ。勉強会の資料はmercurial-jaにあります。内容まとめ。 - 最初のスピーカーは「入門 mercurial」の著者、藤原克則さん。
テーマは、この本に書けなかった「エクステンションの書き方」です。 - 次のスピーカーは@hfunaiさん。
テーマは、「hgweb(テンプレートのコミットまで)」 - 最後のスピーカーは@MiCHiLUさん。
テーマは、「mercurial queues」。
- 公式ドキュメントをみると幸せになれる
- ソースを読むともっと幸せになれる(TODO: ソース読む)
- エクステのベースとなるコード
from mercurial import ui from mercurial import hg u = ui.ui() repo = hg.repository(ui.ui(), '.')
- アノテーションは犯人探し(良い意味も含む)に便利
- hgのWebインターフェース
起動コマンド:hg serve
- mercurialは内部にも差分をもってる(分散)から、こんなことまでできちゃう
- パッチ送る時に注意すること
- アンダーバー禁止
- 添付ファイル禁止(内部に持っているツールで)
※詳しくは@hfunaiさんに聞きましょう(笑)
- パッチは超便利(もっと使うべき)
- 他のバージョン管理使っててもキューは使うべき(TODO: SVNとの連携を調べる)
※藤原さんから「水銀」なるシールを貰ったけど、どこに貼るかをすごい迷っている(笑)
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" />
- PC用に横幅を固定している場合は、横幅を100%で上書きする(表示がくずれる)
#doc{width:100%;min-width: 100%;} - white-spaceは改行する(white-space部分の最大長が画面幅になり、表示が崩れる)
cite, pre {overflow:scroll; white-space: pre-wrap;} - 長い単語は改行する(長いURLとか書いちゃうと上記同様の現象が発生する)
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{word-break: break-all;}
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で公開しました。
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.dbutils.get_object_or_404(), get_list_or_404():GAEモデルに対応してる
- ragendja.dbutils.db_create(), db_add():でBigTableを(安全に)処理
- ragendja.dbutils.その他:リレーションに便利なAPIがいっぱい
- regendja.testutils.*:テストまでできちゃう
- 他にもたくさんあり(すぎ)ます
Vim勉強会@BPStudy
ここ最近デスマだったので、時間を作るのが非常に難しい状態だったわけです(ブログもだいぶさぼった)。だけど、Google App Engine Hackathon で「育て方に失敗している」と言われてしまったvimを調教しようと、2月22日に「Vim勉強会@BPStudy」に参加させていただきました。資料はBe PROUD社様のサイトで公開されています。
色々とプラグインを教えて頂き、インスコしました。おかげさまでちょっとは開発が速くなったかな(笑)。今回教えて頂いて、インスコしたプラグインをご紹介。
色々とプラグインを教えて頂き、インスコしました。おかげさまでちょっとは開発が速くなったかな(笑)。今回教えて頂いて、インスコしたプラグインをご紹介。
- NERD commenter:トグルでコメントアウト、コメントインができるようになる
- buftabs:バッファーリストを表示できるようになる
- grep:バッファーgrepできる
- python_fold:Pythonコードをclass、def、{{{}}}でフォールディングできる
- QuickBufのリストを";;"で出せるようになる(これは神)
let g:qb_hotkey = ";;"
- 使い慣れてるショートカットで編集する(Ianより)
"コピー(Ctrl + c) vnoremap <c-c>"+y "切り取り(Ctrl + x) vnoremap <c-x>"+x "貼り付け(Ctrl + v) map <c-v>"+gP