Surgo

lazy programmer. (simple is better than complex !)

Mar 26, 2009

オフライン

1週間ほどオフラインになります。ご報告が遅くなりましたが、転職(就職?)、引っ越しをすることになりました。勤務先が海浜幕張のため、津田沼と幕張本郷の間ぐらいに住むことになりました。

1年半前に東京に来て、Pythonな皆様とお会いすることができ、そのPythonな方からお誘いをいただきました。Python温泉に感謝です。毎年2回ほど開催されているようなので、参加されたい方はぜひ(現在予約待ち状態ですが…)!

次のお仕事は、以前通信業界で経験したような業務内容です。業務アプリの構築から、DBのメンテ、インフラ構築から、ホームページまで。いわゆる情シス業務です。以前の業務アプリのGUIはJavaでしたが、今度はDelphiです。バックエンドのWeb APIがDjangoだったり。なんかわくわくですね。仕事でJava(PHP、CGIとしてのPerl、Rubyもちょろっと)以外は初めてなので、勉強しまくりです。また勉強会にも定期的に参加していきたいと思っています。

あと、自分の時間ができるのが何よりもうれしいことです。今までのように無駄な自由は少なくなりますが、色々と勉強するには大変いい機会だと思っています。Django、GAE、i-Phoneアプリ、アンドロイド等触ってみたいものがたくさんあるので、時間を有効活用して勉強がむばります。

Mar 19, 2009

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作成の敷居は下がった
あとはあんまりメモが取れなかった…。perlすごい。

Mercurial 勉強会 #1

最近ブログをまとめて書いてしまっている…。レスポンスが悪すぎる。

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(), '.')
    
  • アノテーションは犯人探し(良い意味も含む)に便利
 hgweb
  • hgのWebインターフェース
    起動コマンド: hg serve
  • mercurialは内部にも差分をもってる(分散)から、こんなことまでできちゃう
  • パッチ送る時に注意すること

    • アンダーバー禁止
    • 添付ファイル禁止(内部に持っているツールで)
      ※詳しくは@hfunaiさんに聞きましょう(笑)
mercurial queues
  • パッチは超便利(もっと使うべき)
  • 他のバージョン管理使っててもキューは使うべき(TODO: SVNとの連携を調べる)
ちらっと藤原さんが言ってらっしゃいましたが、仕事ではCVSかSVNしか使ったことがありません。gitやmercurialのような新しモノはちょっと嫌煙されがちですね。でも、mercurialの考え方は非常に理にかなっていると思っており、分散開発はこれからの時代の流れだと思います。ぜひ水銀使ってみてください。

※藤原さんから「水銀」なるシールを貰ったけど、どこに貼るかをすごい迷っている(笑)

Mar 15, 2009

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

The Django Book (日本語) サイトをiPhone/iPod Touchに対応させてみました。iPhone対応サイトを作る方法はいくつか(iUiUniversal iPhone UI KitjQuery 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を書く時に注意するポイントがいくつかあります。
  • 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;}
 CSSはそれを読み込んだ順序でどんどん上書きしていきます。それを利用すると既存サイトのCSSをちょっと上書きするだけで、すぐにiPhone/iPod Touch 対応サイトになります。対応するとユーザビリティがぐんと向上しますね。

Mar 9, 2009

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で公開しました。

Mar 6, 2009

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様に多謝。ありがとうございました!

about

friends

archives

Kosei Kitahara.

surgo.jp at gmail.com

hosted at blogger.