ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2012年10月14日日曜日

エキスパートPythonプログラミング読書会 第二期 10に参加しました。 #expertpython

エキスパートPythonプログラミング読書会 第二期 10 - connpass
に参加してきました。

エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 36822

当日の様子はこちら。
エキスパートPythonプログラミング読書会 第二期 10 - Togetter

1.アイスブレイク
恒例のアイスブレイク、各島ごと(3名程度)で簡単に自己紹介をしました。
しかしお互いに見知った顔過ぎて、
自己紹介が茶番臭いというまさかの事態に(笑)。


2.「第8章 コードの管理」
  • 2人以上だといろいろと難しい。
  • SCM(software configuration management) = VCS
  • 中央集権型: サーバーがないとコミットできない
  • 分散型: 複数の独立したローカルにコミットして同期をとる。
  • 中央集中か、分散か。 →プロジェクト状況による。
  • PythonのVCSはHGに移行済み→hg.python.org
  • DVCSの種類→Git, Mercurial, Bazzar

  • ドキュメントとリソースファイルを一緒にするのは無理?
    →この辺りに経緯がまとまってたりすので一度目を通すといいかも。
    svnからの切り替え先にbzrを検討するなど(最終的にはhgになった‥) - Togetter
    →SVNは内部をUnicodeオブジェクトから外部に落とす時にエンコーディング返還してくれる。
    →bzrはできる。hgは今頑張ってパッチ書いてる。Gitはまだ。
    →設定はあるが、Gitはもう一段Windowsの問題がある。UIの件。
    →コマンドラインをデザイナーさんに打ってもらうのはハードルが高い。
    →日本語使えねーとMLとかにDDOSして下さい。

  • unicodeのメソッドを使うと、大文字小文字の判定、濁点の問題チェック、
    east_asian_widthで文字の幅のチェックとか色々できる。
  • GitとHgは用語は対応してない。HgとSVNは似ている。
    →簡略化しているように感じるかもしれないが、人に説明するにはこっちの方が楽(らしい)。
    →Branchが一番違う。あとはHEADとか。addとか。
    →ステージの概念はないので、MQとか使った方がいい。
    →標準と拡張。
    →Gitだと初めから色々出来るが、Hgだと拡張でやったりする。
    →MQを入れると履歴を入れ替えたり、コミットの内容そのものを書き換えたりできる。
    →Pythonでやると拡張も楽に書ける。内部のUnicodeとかもいじれる。
    →Hookをいじると色々できるよ。
  • hg serveと渡すと自分をサーバーにすることができる
    →PUSHはできない。もう少し設定が必要。PUSHとかCLONEはできる。
  • hgのコマンドは日本語マニュアル化されている。言語設定を日本語に設定すればOK。
  • hg help add -v とかすると、コマンドの実行例が見れる!
    →オンラインで見るとほとんどわかるよ。でもPythonistaの人ならソース見たほうがはやいかも
  • Mercurialでプロジェクト管理→Server立てる人が読めばいいと思うよ!
  • なんでHG?
    →@shimizukawa hg。やりたいことに対してGitは複雑。
    →@hirokiky hg。いざとなったらソース読めるし。安心感。
    →@shomah4a git。前SVNで。いやで、Hgでやってたのが、なんかのタイミングで壊れたのでGit触ったらいいじゃんと。
    誤解を招く表現になっていたので訂正。
    なぜgitを選ばれたのかがご説明されています。
    Expert Python 読書会 第二期 10 #expertpython - プログラマのネタ帳
    →??? SVNを触っていたが、gitやって、それで壊すのはどうなの?あとはTortoiseHGがいい。わかりやすい。
    →@tfmagician 4年ぐらい前からGit。WebDBの初めてのGitの特集を読んで。管理は大変だが、
    今更戻れない。あとGitHubが素晴らしい。PG管理のツールとしているので。
    →@usaturn Windowsを使っていたから。Cygwinで使えばそこそこだが、アンインストールできなかったことが… Yokohama.pyの日にTokyoMercurialに参加することがったのでそれで。
  • GitはSCM bootcampのチューターの人でも「Windowsの人はVMにLinuxにいれた方がいいんじゃね?」 というレベル。
    →ポータビリティーや使いやすさを重視するとHg。
  • Buildbotは使わない方がいい。普通に使う分はJenkins。
    →セットアップが面倒くさい。
    →Jenkinsが有名でユーザーが多いし、皆がCIに求めるのはJenkins。
    →Buildbotのいいところは、ユーザ参加型であること。(自分の環境でテストしてくれる)
  • CIやっている人?→2人
    →@shomah4a 会社はJenkins。JavaやPython。趣味はTravis CI
  • この本はBuildbotは0.7で書いてあるが、0.8からソースコードが大きく分かられている。
    →最新版0.8だとドキュメントを自力で読んだほうがはやい。
  • DVCSの戦略 git-flowとか使ってるのか?
    →カスタマイズしていたり、組織の文化による。
    ex)枝は一本vs枝分かれ上等。Branch戦略について。
    hg-flow, bpmercurial-workflowドキュメントなど
3.ビアバッシュ&LT
今回は仕事の都合で参加できなかったのが残念……
久しぶりのお寿司LTだったのでぜひとも参加したかったところですが、
また次回に期待ですね。

4.まとめ
今回は@lincolinnyanさんの代役でTogetterまとめたりしましたが、
実際にその場で参加してないとわからないところがあるなーと思いました。
本は読みなおせばいいけど、LTはその場で聞かないとわからないので、
本編は聞けなくてもLTを聞ける時は迷わず参加したいですね。

参考リンク

2012年9月15日土曜日

PyConJP2012 スライド・資料まとめ

公式サイト:PyCon JP 2012 開催します! - PyCon JP 2012
発表風景:PyConJP - YouTube

一日目参加してきました。
二日目参加中です。
参加者・発表者のみなさんお疲れ様でした。

見つけられた発表者スライド・資料をまとめてみます。
「これが足りないよ!」というのがあれば、
URL付きでTwitterにメンションなり、
連絡いただければ追加します。 というか是非連絡お願いします。

Togetter・Twitterまとめ
1日目
2日目
参加者Blog

2012年7月28日土曜日

Python Developers Festa 2012.07 に参加しました。


Python Developers Festa 2012.07に参加しました。

当日は大きく分けて
・ハンズオン(もしくは自分で持ってきた課題)
・プレゼンテーション
が行われました。

下手すると第一回目に参加した時より置いてけぼりだったかもしれない。
9割Pythonと関係ないことやってました。
早く知識のレベルから抜けだして、次のレベルに進みたいな。

Python Developers Festa 2012.07 開催概要
前回の様子
Togetterまとめ
ハンズオン(10:00~15:00)
Sphinxハンズオンとひとりでもくもくのどちらにしようか迷った挙句、
ひとりでもくもくしていました。
三回目の参加になりますが、ハンズオンに参加しなかったのは初です。
仕事捗らせるためにずっと↓の本を読んでました。

C++クラスと継承完全制覇 (標準プログラマーズライブラリ)
矢沢 久雄
技術評論社
売り上げランキング: 162990

それとハンズオンが開催している間にステッカーもらいました。 防水加工とかしてあるいいやつだそうです。 キラキラしているステッカーもありましたが、 そちらは講師陣・発表者のみだったのが残念…

LT、プレゼン(15:00~)
    前回はPythonの話が多かったため(?)、今回はほとんどPythonのお話はありませんでした。
    置いてけぼり感がすごいと有名なこの時間。
    以下のタイムテーブルで進みました。

  • @shomah4a - PyCon JP 2012 参加者募集のお知らせ的な何か
    Python使いのためのPython使いによるイベント 9/15~17
    併設イベント…Django、Sphinx、App Engine、NVDA
    #kabepyもよろしく。

  • @johtani - Elasticsearch入門 pyfes 201207
    Blog: @johtani の日記
    キラキラシールが欲しくて頑張ってスライド作りました。

    ■elasticsearch って何?
    (1)分散型でRESTfulな検索エンジン
    (2)OSS - GitHubで公開されている
    (3)Apache Lucenseベース
    (4)スキーマレスでドキュメント指向
    (5)マルチテナント指向
    (6)なぜか盆栽がトレードマーク

  • @tokoroten - たのしいうぇっぶくろーら
    社畜してます。 9:30-1:30
    シャチクミイ作りました。please.shachiku.me
    元Googleから3文字短い検索エンジンの中の人
    るbyの会社で蛇書いてます。
    データ欲しい方お声がけ下さい。
    ソースコードはGitHubに上がっています。
    tiny_web_crawler — Gist

  • @ymotongpoo - Sphinxで翻訳してたら本が出てた話
    自己紹介と、お願いと、宣伝をしにきました。
    Tornadono翻訳で初めてSphinx触った。
    「ドキュメント翻訳でもOSSに貢献できる!」
    Python界隈ではまだまだ翻訳していないものがたくさんある。
    是非翻訳しましょう。
    例:django-docs-ja/django-docs-ja · GitHub
    SphinxCon JP来て下さい。

  • @Seasons - iOS app hacks~バイナリを解析し、知識をつけるための方法~
    Blog: Seasons.NET
    cocos2dのエバンジェリストやってます。
    逆アセンブラはあくまで趣味です。
    楽しい発見をして、正しい使用法で活用しましょう。

  • @shiumachi - 20分でわかるHBase
    アーキテクチャの観点から概要だけでも掴んでもらえば。
    HBase本日本語版でました。
    HBase…列ファミリ指向DB。KVS。
    定期的に「本買ってね!」というCMが入るプレゼン。
    幸福は義務です。

  • @mkouhei - Git pyfes201207-presen
    Gitによるバージョン管理
    岩松 信洋 上川 純一 まえだこうへい 小川 伸一郎
    オーム社
    売り上げランキング: 22649

    数あるなかでGitPythonを試しました。
    DebeanのPythonパッケージ名は、Python-git
    GitPython - Gitorious
    CouchDB勉強会の参加者いつも10人いるかいないのか
    というほどなのでよろしくお願い致します。

  • @sawonya - 勉強会を成長させる参加者になろう! by やまもと さをん on Prezi
    セミナーに言ってみたい人向けのセミナーを開催してます。
    東京・静岡・大阪...
    「セミナーに行ってみよう講座」 セミナー・勉強会初心者マークのあなたに送ります
    勉強会を継続・成長させるためには三者の協力が必要
    →自分・開催者・既存の参加者
    成長させるための三要素
    →新しい人を取り込む・主催者の成長・既存の参加者

  • @tmmkr - 8ヶ月間、勉強会を開催してみて
    たいやきの人 アジャイルサムライ新宿道場について
    「ないならやろう。」というシンプルな発想で開催
    投げ出さずに継続できれば自分の自信につながる。

  • @kenji_rikitake - Do not invent your own RNGS
    jj1bdx/tew · GitHub
    RNG…Random Number Generator - 乱数生成器。
    自分で乱数を作らない!
    こんな酷い乱数を見たことない。

  • @yosukehara - Introduce LeoFS
    LeoFastStorage…楽天さんが作った分散ファイルシステム。
    98%がErlangで後はC。
    基本的にStorage、Gateway+Cache、Managerで構築。
    コストが著しいところを下げましょう。

  • @troter - 継続的デリバリーの話 - Google Docs
    Mercurialハンズオンの講師してました。
    Windows Azureの仕事していますが、もう嫌です。
    継続的デリバリー = 継続的インテグレーションの発展系
    →テストしてできたもの(CIでできたもの)を結合テスト環境へ
    デプロイして、最後は本番までデプロイする。
    「デプロイは日常」
    継続的インテグレーションをすべてやるのは大変だが、
    環境構築、デプロイなら実現可能。
    モックでいいので、やってみると1週間くらいでできる。

  • @takufukushima - Behind the scene of the fully client-side dashboard
    Javascriptのお話。curl のウェブフロントエンドほしい。
    なるべく細かい部品にして管理しやすく。

  • @mopemope - Meinheld 0.5 - Google Docs
    PythonのWebフレームワークサーバーの作者日本人
    「Mozillaは僕の作ったライブラリを使う傾向にあります」

  • @tk0miya - 3分間 開発環境クッキング 2012.07 #pyfes
    「3分で環境つくれますか?」
    ベースイメージはA list of base boxes for Vagrant - Vagrantbox.esに有志が公開している。
    しかしセキュリティとか怖いのでVeeWeeを使いましょう。
    OSのイメージからVMイメージを作成してくれます。

  • @moriyoshi - 気軽にパッケージをあげましょう
    Python3系だと 「import ぁっぉ」 ができます。
    xaxtsuxoパッケージ作りました。(Python3対応)
    Python3対応パッケージだとPyPIのロゴがかわる。
    今後の展望未来のあつおを召喚したい。
    気軽にパッケージをあげましょう。

  • Web魚拓の中の人 - 筋トレについて
    「ジムで運動不足を解決するのは無理」
    ダイエットの成功率は、
    国家公務員一種の合格率「5%」より低い。

    ジムが続くための三箇条
    ・労働時間が10時間以下であること
    ・ジムが会社か家に近いこと
    ・そのジム(環境)が好きなこと

    ただ歩いたほうが仕事量が確保できる。
    ジムよりは二駅あるた方がいい。歩いていると腹筋を使う。

懇談会
今回は有志の懇談会にも参加してきました。
場所は会場近くのお寿司屋さんです。
今日のPyFesのこと、普段どんな勉強会に参加しているか、
明日行われるJenkinsConferenceのことなど話していました。

まとめ
今回はステッカーいっぱいもらいました。 独自言語Pythonのステッカーもらえたのも結構うれしかったです。
まだ日取りは決まっていないそうなので、
開催のアナウンスを気長に待つことにします。

会場を提供してくださったOracleさん、
ハンズオンや発表されたみなさん、
参加されたみなさん、お疲れ様でした&ありがとうございました!

参加者・発表者Blog

2012年7月19日木曜日

エキスパートPythonプログラミング読書会 第二期 08に参加しました。

エキスパートPythonプログラミング読書会 第二期 08 - connpass
に参加してきました。

エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 36822

今回は業務が終わってから時間があったので、電車を使わずに歩いて行きました。
会社から20分ちょっとの距離ですのでいい運動ですね。
当日の様子はこちら。
エキスパートPythonプログラミング読書会 第二期 08 - Togetter

1.アイスブレイク
恒例のアイスブレイク、各島ごと(4名程度)で簡単に自己紹介をしました。
今日はあえて一つ後ろの島に。
今回から参加された方も一緒になり、どこか新鮮でした。


2.「第6章 アプリケーションを作る」
  • 皆virtualenvどうやって使っているの?
    【前提】複数プロジェクトが存在
    • 他のプロジェクトに移動した時、切り替えはどうやっているのか。
      →プロジェクト1個につき、virtualenv1個以上。
    • もしくはSphinxコマンドなど使いたいものだけ、そこにPath通してしまう(bin/)など、
      Sphinxとしてプロジェクト一つ作ってもいいと思う。
  • 環境変数PIP_DOWNLOAD_CACHEを設定していれば、
    環境を再構築する際にキャッシュ利用できるので時間節約になる。
    一応最新バージョンの確認をするから、ネットにはつなぐ。
  • pip bundleコマンドでインストールするパッケージを一つに固めることができる。
    ただしソースしか入っていないので、gccが入っていなくてインストールで落ちるなんてことも。
  • easy_install bundleみないなことはできない。→bundleしたファイルはpipでしか使えない。
  • テストコードはパッケージに含める。基本的に不可分。
  • virtualenvwrapperとか使うと疎結合になるけどどうすれば?
    →PyCharmだとPythonのVersion、プロジェクトを作るディレクトリ、site-packageの指定
    とかできて、新しくプロジェクトを作ってやることができる。PyCharm便利。
  • あくまで使い方のサンプルとしてdoctestを作る。本格的なのはpy_test~とか。
    doctestはdocumentとコードの乖離を防ぐために書く。
    →両方書くと親切。テスト書けないdocumentは追従するのが面倒なので、
    それはdoctest化した方がいい。
    参考:25.2. doctest — 対話的な実行例をテストする — Python 2.7ja1 documentation
  • sphinx.ext.autodoc とかで、Sphinxに-doctestでできると理想。
    だけど多言語化してくると困る。(doctestは英語で、documentは日本語にしたい時など)
  • import datetime from * とかの * は基本×。
    Eclipseだとimport typeで*を解決してくれる機能がある。
    PyCharmだと使っていない関数をグレーアウトしてくれるとかはある。
  • doctestの省略のオプション…ELLIPSIS
    このフラグを指定すると、期待する出力中の省略記号マーカ (...) が実際の出力中の任意の部分文字列と一致するようになる。
    アドレスというか、IDなんかを省略できたりするから便利。

3.ビアバッシュ&LT
  • @shimizukawa
    • @aodag先生のEuroPython体験記解説。
      @aodag先生が話していた内容をメモっていたそうで、それをLTするという流れ。
      (↑書いててよくわからない)
      Euroでもピザ、帰ってきてもピザばかりでお疲れ様です。
    • Python3.3で搭載されるvenvの紹介。
      virtualenvに相当する機能らしい。デフォルトで入るのはいいね。
  • @aodag ヨーロッパでPyramidのLTしてきたよ。
    向こうでのLTはネタ(エンジニアと健康とか)に走っていて、
    まじめにPythonネタやるんならしっかり枠取ってやれよという空気だったらしい。
  • @tfmagician vagrantとかchefとか。
    vagrantはVirtualBoxを利用した仮想マシンをコマンドラインから作成してくれるらしい。
    chefはサーバOSでのインストール・設定・各サービスの状態管理等、諸々のシステム構築や運用作業を自動化してくれるRuby製のシステム管理ツールらしい。
    すごく便利そうというのだけはわかった!

4.まとめ
    ほとんどがvirtualenvとpipの使い方でしたね。
    (あとPyCharm便利なのは分かった)
    「詳しくはpyproで!」というのもちらほらあった気がする。
    実際PIP_DOWNLOAD_CACHEやpip bundleなんかも
    書いてあるしね!
    次回はzc.buildoutなので、一度しっかり見につけて、
    SphinxやGAEの環境作るのに手間取らないようにしたい。

参考リンク

2012年6月17日日曜日

reST→PDF出力の環境を整備した。

reST→PDF出力する環境を整備してみました。

当方の環境はMacOSX 10.7になっております。
Windows/Linuxの方はコマンドやディレクトリなどを
ご自身の環境に置き換えて作成下さい。

また以下のものがインストールされている前提となっています。
  • Python
  • pip

rst2pdfのインストール
コマンドラインから
$ pip install rst2pdf

日本語フォントのインストール
VLゴシックフォントIPAフォントをインストールします。
それぞれダウンロード解凍後に、フォントディレクトリにコピーします。

日本語出力のためのスタイル設定
これより下のファイルはプロジェクトディレクトリ内に作成します。
% vi ja.style
ja.styleに以下のように記述します。
{
    "fontsAlias" : {
        "stdFont": "VL-PGothic-Regular",
        "stdBold": "VL-PGothic-Regular",
        "stdItalic": "VL-PGothic-Regular",
        "stdBoldItalic": "VL-PGothic-Regular",
        "stdMono": "VL-Gothic-Regular",
        "stdMonoBold": "VL-Gothic-Regular",
        "stdMonoItalic": "VL-Gothic-Regular",
        "stdMonoBoldItalic": "VL-Gothic-Regular",
        "stdSans": "VL-Gothic-Regular",
        "stdSansBold": "VL-Gothic-Regular",
        "stdSansItalic": "VL-Gothic-Regular",
        "stdSansBoldItalic": "VL-Gothic-Regular"
    },
    "styles" : [
        ["base" , {
            "wordWrap": "CJK"
        }],
        ["literal" , {
            "wordWrap": "None"
        }]
     ]
 }

フォントの埋め込み
% vi ja.json
ja.jsonに以下のように記述します。
{
   "embeddedFonts" :
   [[
       "VL-Gothic-Regular.ttf",
       "VL-PGothic-Regular.ttf",
       "ipam.ttf",
       "ipag.ttf",
       "ipagp.ttf",
       "ipamp.ttf"
   ]],
   "fontsAlias" : {
       "stdFont": "VL-PGothic-Regular",
       "stdBold": "VL-PGothic-Regular",
       "stdItalic": "VL-PGothic-Regular",
       "stdBoldItalic": "VL-PGothic-Regular",
       "stdMono": "VL-Gothic-Regular",
       "stdMonoBold": "VL-Gothic-Regular",
       "stdMonoItalic": "VL-Gothic-Regular",
       "stdMonoBoldItalic": "VL-Gothic-Regular",
       "stdSans": "VL-Gothic-Regular",
       "stdSansBold": "VL-Gothic-Regular",
       "stdSansItalic": "VL-Gothic-Regular",
       "stdSansBoldItalic": "VL-Gothic-Regular"
   },
   "styles" : [
       ["base" , {
           "wordWrap": "CJK"
       }],
       ["literal" , {
           "wordWrap": "None"
       }]
    ]
}

rst2pdfの設定ファイル
以下のように作成
$ mkdir ~/.rst2pdf
$ vi ~/.rst2pdf/config
~/.rst2pdf/configに以下のように記述します。
[general]
stylesheets="ja"
compressed=flase
font_path="~/Library/Fonts"
header=
footer=
fit_mode="shrink"
break_level=0

後は以下のように叩くだけでPDFファイルが出力されます。
$ rst2pdf -o output.pdf input.rst

完了後は以下のようなフォルダ構成になっているはずです。
~/.rst2pdf/config
-project
|-input.rst
|-ja.json
|-ja.style
|-output.pdf
以上です。お疲れ様でした!

参考リンク

エキスパートPythonプログラミング読書会 第二期 07に参加しました。

エキスパートPythonプログラミング読書会 第二期 07 - connpass
に参加してきました。

エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 36822

最近Blog書いてないなーということで書きます。
遅刻かと思ったけど、何とか時間までについて良かった。
当日の様子はこちら。
エキスパートPythonプログラミング読書会 第二期 07 - Togetter

1.アイスブレイク
恒例のアイスブレイク、各島ごと(4名程度)で簡単に自己紹介をしました。
以下自己紹介順に、
  • @usaturn 面談したら実は同じ会社だったと言うオチ
  • @taison PHPゴリゴリからDjango git wiki google document活用してる。
  • @shimizukawa 台湾行って来ました。最近はSencha Touchとかやってる。
2.「5章 パッケージを作る」
  • setuptoolsとdistribute使える環境があったらdistributeを使いましょう。
  • いままで
    • distutils: Python3.2までの標準
    • setuptools: 業界標準(ez_setupで入れる)
    • distribute: setuptools上位互換
      (distribute_setup.pyで入れる)
    • pip: setuptools/distributeを活用して使いやすいコマンドライン
    • buildout: setuptoolsを活用した環境構築ツール
    • virtualenv: Pythonのユーザーランド仮想環境作成ツール
  • これから↓
    • Distutils2: packagingと同じものでPyhton2.4-3.2で使えるようにしたもの。
      (実際はPython2.6-3.2。シンタックス対応が大変だねという話)
      →しかしこれによってパッケージの手法が必ずしも綺麗になるわけでないと関係者が頭抱えてる。
    • packaging: Python3.3からの標準
    • pip?: packaging上で動くようになる?(virtualenvはどうだかわからない)
    • pythonv: virtualenvをPython3.2から標準でできるようにしたもの(実装別)
  • パッケージング: 「パッケージを作ろう」と「Python3.3のパッケージ」がある。
    • PyPIの配布物(PYPIにもpackagingという名前で登録されているものがある)
    • Python言語自体のパッケージ(import……の,名前空間パッケージ←応用)
    • Python言語自体のパッケージは_とつけてれば安心と理解した。手を動かして理解しよう!
  • sdist = soure distribution
  • eggの圧縮はPython3.3では圧縮される?
    →eggがありません。eggみたいなものは今議論されていない(すげー困る。ほとんどの環境で動かなくなる)
  • python setup.py check というコマンドがある。
    setup.pyの構文チェックができる。
  • buildとbdist: バイナリ配布用のパッケージを作ってくれる。
    あんま使わないほうがいい → bdistを拡張したbdist_eggを使おう。
  • bdist_egg: どのPythonでbuildされたかわかるものが作られる。
    eggも出来る。素直な、依存関係のないeggが生成される。
    install_requiresで、依存関係のパッケージもPyPIから見つけてインストールしてくれる。
  • アンインストールについてはpipにお任せしましょう。
  • develop: -linkだとPython PATHに自動的に追加されるので、どこにいても import aodag とかいうことが出来るようになる。-uオプションで削除ができる。
  • test: test_suite, tests_requireを確認してくれる。
    python setup.py sでオプションが全部出てくる
  • PyPIはbasic認証で大変いけてない。
    .pypircのPasswordの行を削除すると、毎回Passwordをきいてくれる仕様にできる。
  • list printerとかPyPIで調べるといっぱいできる。
    →テストで登録したものはちゃんと消しましょう。
  • alias: setup.cfgに追記してくれる。
  • 最近はまだまともですが、この本の読んでからじゃないとdistutilsガイド、setuptoolsガイドが読みにくいと思われます。
  • テンプレートベースのアプローチは有用ではあるが、
    大抵がその内メンテしなくなる。
3.ビアバッシュ&LT 4.まとめ
パッケージ管理は今のところ distribute + virtualenv(pip)安定ですかね。
エキpyに書いてある内容で2〜3年は使えるそうです。
Python2.7は最低でも2017年までメンテナンスされる見込み(source→Python3と向かい合ってみる)なので、
最新の状況に乗り遅れないようにしつつ、
Pythonと向い合って行きたいです。

参考リンク

2012年5月16日水曜日

「エキスパートPythonプログラミング読書会 第二期 06」に参加してきました。

エキスパートPythonプログラミング読書会 第二期 06 - connpass
参加してきました。
1回来ないと随分久しぶりな気がしますね。
あいにくの雨でしたが楽しんでこれました。

当日の様子は@lincolinnyanさんがまとめてくれています。
エキスパートPythonプログラミング読書会 第二期 06 - Togetter

全体としてはサクサクテンポよく進んでいました。
テーマが「良い名前を選ぶ」で、
コードがあまりでてこなかったからかもしれませんね。
流れとしては以下のとおり。

  • 1.アイスブレイク
  • 2.読書会
  • 3.ビアバッシュ&LT


  • 1.アイスブレイク
    毎度おなじみアイスブレイク。
    今回も各島ごとに行いました。
    自分以外の方は皆さんアプリや自社サービスを行なっている方々ばかり。
    @tfmagicianさんがPyramidについて熱弁されてました。


  • 2.読書会
    特に気になった点をいくつか。

    - PEP8…命名規則。コーディングルールについてまとめたもの。
    日本語訳はこちら
    PEP 8 - - Style Guide for Python Code
    ex)
    デリミタで揃える
    トップレベルの関数のクラス定義の間は、2行あける
    演算子の前後にスペースを1つ入れる
    チェックツール:PEP8, pyflakes
    小話:Googleは昔インデントスペース2だったのが、4に変わったらしい。

    - パブリック変数とプライベート変数
    Rubyだとよく使うメソッドは名前を短く,
    あまり使わないものは名前を長くする慣習があるらしい。
    Pythonの場合は短くするよりも意図をわかりやすく表現するほうが大切。

    - プライベート変数を保護する仕組みはPythonにはない。
    それっぽいものはあるがプライベートメソッド,フィールドは存在しない。
    複雑になるから。Pythonは元々クラスの概念がなかった。
    クラスの概念を導入する段階で付けなかった。
    継承してプライベートと扱うのはメリットがなかったと考えられる。

    - 特殊メソッドは継承、マンダリングされません。

    - importする時にallや*はなるべく書かないようにしましょう。

    - 引数のベストプラクティス
    引数は少しずつ作ろう。必要なものだけ追加していこう。
    引数とテストを信頼しよう。つまり「テスト書こう。」
    *argsと**kwには注意。本当に着ているか確認するのに、
    if文をたくさん書かないといけなくなる。
    →フレームワークを作る時や、デコレータを実装する時、
    メタプログラミングなどはどうしても必要になってくのだけど、
    気をつけて使おう。

    - パッケージ名をつけるのは難しい。
    グランドルールはPEP8として、ローカルルールでわかりやすくするなど、
    読みにくくなる場合はPEP8を破ってもいいのではないか。

    - pylintやPEP8とかは今だとCIと組み合わせて
    自動レポートとかうまくできるようになる。

    - docstring, testcode, 使い方を書くと実装の構成の方にフィードバックを
    かける時にテストとしてはやりやすくなる。それを反復し、実装に
    反映させていく。

    - Pythonのインタプリタから
    import antigravity
    
    って打つと、デフォルトのブラウザから
    xkcd: Pythonが見れる。


  • 3.ビアバッシュ&LT
    @takanoryさんの「PyCon台湾行くよ!壁Py宣伝してくるよ!」
    @shiumachiさんの「Hadoop documentの更新日時検索作りました
    (←名前が思い出せない)」
    @aodagさんの「フレームワークなしでWSGIプログラミング」からのbuchoパッケージ紹介
    でした。
    来月とか参加できるかな……
    参加できなくても学習は続けていきたいですね。


  • 2012年4月22日日曜日

    Sphinx+翻訳 Hack-a-thon 2012.04に行ってきました。

    connpass-Sphinx+翻訳 Hack-a-thon 2012.04に行ってきました。

    [追記](2012/04/30 16:05)
    当日の様子はこちら
    Sphinx+翻訳 Hack-a-thon 2012.04 - Yukarin'Note

    当日やったことリスト
  • Sphinxテーマのimpress.js弄った。
  • Sphinxプラグインのblockdiag触った。
  • MacにMercurial入れた。
  • bitbucket試した。


  • Sphinxテーマのimpress.js弄った。

  • 今まではs6触ってて「これはシンプルでいいなー」と思ってましたが、
    "impress.js"っていうのもアニメーションが効いてて良さそうと思ったので試しました。

    sphinxjp.themes.impressjs 0.1.0 : Python Package Index
    を参考にして、
    pip install sphinxjp.themes.impressjs
    
    した後、conf.pyに以下の設定を記述しました。
    extensions = ['sphinxjp.themecore']
    html_theme = 'impressjs'
    

    そしたら何故か以下のようなエラーがでる……
    Exception occurred:
      File "/Users/***/.virtualenvs/impressjs/lib/python2.7/site-packages/sphinx/jinja2glue.py", line 149, in get_source
        raise TemplateNotFound(template)
    TemplateNotFound: genindex.html
    The full traceback has been saved in /var/folders/cg/8n8k9bvj5vgbp65py_kxf52r0000gn/T/sphinx-err-l8t7JZ.log, if you want to report the issue to the developers.
    Please also report this if it was a user error, so that a better error message can be provided next time.
    Either send bugs to the mailing list at ,
    or report them in the tracker at . Thanks!
    make: *** [html] Error 1
    

    エラーのログを見てみると以下のようになっているので、
    「どこか設定ファイルの記述が間違っているのでは?」と予想。
    exception jinja2.TemplateNotFound(name, message=None)
    Raised if a template does not exist.
    

    もう一つ出てきたサイト、
    shkumagai/sphinxjp.themes.impressjs
    を参考にして見ると、先の2行に加えて以下の1行を加える必要があることが判明。
    html_use_index = False
    
    設定を追記したら、あっさりmakeできました。

    その後は、先のサイトのoutputと、inputを見比べながら進めて行きました。

    他に参考にしたサイトは以下になります。
    use No::Name; [log][sphinx][python][document]sphinxjp.themes.impressjs 0.1.2 リリースしました。
    百式年賀状 powered by impress.js

    その時四苦八苦している様子を@usaturnさんがまとめてくれています。
    Sphinxのかっこいいスライド作成拡張「sphinxjp.themes.impressjs」 - Yukarin'Note

    impress.jsでは以下の設定を記述して、魅せ方の調整を行うようです。
    .. impressjs:: title
           :data-x: 0           横軸の設定
           :data-y: 0           縦軸の設定
           :data-z: -1000       奥行きの設定
           :data-rotate-x: -90  回転する角度の設定
           :data-scale: 4       表示するスライドの大きさの設定
    
    これの意味が最初ちんぷんかんぷんで、
    適当に数値を変えてみたら複数のスライドが重なって表示されました。

    しっかりと意味あるものにするのには微妙な調整が必要のようです。
    実際に試してみないと感覚がつかめないなと思いました。


  • Sphinxプラグインのblockdiag触った。

  • pip install sphinxcontrib-blockdiag
    
    して、
    Sphinx 拡張:sphinxcontrib-blockdiag — blockdiag 1.0 documentation
    を一通り試して終了。


  • MacにMercurial入れた。

  • Mercurial binary packages for Mac OS X
    から最新版をインストール。
    ターミナルからhgを打ったら起動……しない。
    あれ?と思って調べてみると、どうやらPATHが通っていない。
    更に調べてみるとインストールされたはずの、
    /usr/local/bin/以下にアクセスできなくなっていました。

    アクセス権限を設定し直したらうまく行きましたが、
    以前システム設定の共有の設定を弄った時に変えてからかな……
    Mercurialに原因があったわけではありませんが少し気になります。


  • bitbucket試した。

  • 完全に忘れていましたがアカウントは以前に作成してため、
    まずはgithubと同様にdotfilesを上げてみました。
    これからはちょくちょくこちらも弄っていきたいです。

    まとめ
  • 今月一回も勉強会にこれてなかったので、まずはこれてよかった。
  • やっぱりmake一発でプレゼン式のPDFなりPPTなりの出力する仕組みが欲しい。
  • 来月もHack-a-thon参加します。
  • 2012年4月9日月曜日

    今更ながらpythonの開発環境を整えてみる。

    Pyfesの時にも思ったのだけど、
    前から一度開発環境を整えてみたいと思っていたのでやってみました。

    導入したのは以下、
  • 1.MacPorts
  • 2.virtualenv, virtualenvwapper
  • 3.ipyton
  • 4.pythonbrew


  • 1.MacPorts

  • 巷ではHomebrewが人気らしいのですが、
    Shibu's Diary: MacPortsは生まれ変わった
    を見て導入を決意した次第です。

    The MacPorts Project -- Download; Installation
    からdmgを選択してインストール。簡単ですね。


  • 2.virtualenv, virtualenvwapper

  • virtualenvは以前から使用していたのですが、
    便利だと言われるvirtualenvwapperも
    virtualenv, virtualenvwrapper, pip を使う方法 - Ian Lewis
    を参考に導入しました。
    $ pip install virtualenvwapper
    
    と打つだけでvirtualenvも導入してくれました。
    その後virtualenvwapperのコマンドを使えるようにするため、
    .bashrcに以下のように記述しました。
    export WORKON_HOME=$HOME/.virtualenvs
    source `which virtualenvwrapper.sh`
    
    その後.bashrcに記述した内容を有効化するために、
    以下のコマンドを打って完了です。
    $ source ~/.bashrc
    


  • 3.ipyton

  • IPython — kenkov.jpを参考にして導入。
    $ sudo port install py27-ipython
    $ sudo port select --set ipython ipython27
    
    その後、設定ファイルを作成しました。
    $ ipython profile create
    
    でデフォルトの設定ファイルを作成し、
    出力されたファイルに以下の設定を記述しました。
    c = get_config()
    # 出力の後の改行をなくす
    c.TerminalInteractiveShell.separate_in = ''
    # 入力のプロンプトの変更
    c.PromptManager.in_template = '[\\#] >>> '
    # 出力のプロンプトの変更
    c.PromptManager.out_template = '[\\#] ==> '
    # デフォルトのエディタの設定
    c.TerminalInteractiveShell.editor = 'vim'
    


  • 4.pythonbrew

  • pythonbrewはPyfesの時に導入済みだったのだけど、
    何故かsudo付けないと有効化されなかったので以下のようにして入れ直しました。
    $ export PYTHONBREW_ROOT=~/.pythonbrew
    $ curl -kLO http://xrl.us/pythonbrewinstall
    $ chmod +x pythonbrewinstall
    $ ./pythonbrewinstall
    

    よしこれでOK!と思っていたら、
    何故か毎回
    source ~/.bashrc
    
    しないとpythonbrewの設定が反映されない…

    そこで、.bash_profileを作成して以下の1行を追加しておきました。
    source ~/.bashrc
    

    これで一通りPythonの開発環境を整えることができました。
    さあ後は実践するだけ!

    2012年3月26日月曜日

    「エキスパートPythonプログラミング読書会 第二期 04」参加してきました。

    connpass-エキスパートPythonプログラミング読書会 第二期 04
    に参加しました。
    今のところ一度も逃さず参加できている。
    我ながら素晴らしい。

    当日の様子はお館様がまとめて下さっています。
    エキスパートPythonプログラミング読書会 第二期 04 - Togetter
    清水川先生のスクリーンログはこちら
    エキPy読書会2nd #4 スクリーン — Gist

    実をいうと今回は予習なしで参加してしまったので、
    オブジェクト指向に理解が乏しい自分にはハードル高めでした。
    予習復習大事ですね。本当に。

    かろうじて理解したこと

  • 組み込み型の拡張はできるが、大抵の場合組み込み型そのままで十分
  • super=公式ドキュメントには組み込み関数と書いているが、実態は組み込み型。
  • 継承関係を調整してくれているものがsuperのクラスの役割。
  • superのdictとただのdictはどう違うのか。
    特殊な継承を使う時はsuperのdictを使うと便利なことがある。
    オーバーライドしてしまったメソッドの元の方を呼び出したいと言った時に、superが役立つ。
  • ネームマンダリング=頭に__をつける。
    継承の時に名前がぶつからないようにするため。
  • MROがあるからといって、superがあるとは限らない。
    (MRO = Method Resolution Order, メソッド解決順)
    Pythonの本体ですらそういううところがある。一意ではない。
    だから正しく判断する時はソースコードを見てする。
  • Python3のパッケージ対応リストーPython 3 Wall of Shame

    そんな頭の回っていない自分にはありがたいことに、
    今回はなんと「エキPyチロルチョコ」が用意されていました!
     #expertpython チロルチョコ食べて落ち着く。 on Twitpic
    本来は2/14に配られる予定が諸々の都合によって中止になったので、
    この日に配られたそうです。

    作成された@tk0miyaさんが参加されないとのことでしたので、
    @usaturnさんが持ってきてくださいました。
    実はconnpass-新宿 Book-a-thon #11の時にそのやりとりがあったり。
    「エキPyに参加される方はその時に貰って下さい」と、
    その時には頂けなかったので何とか貰えて一安心です。

    次回はちゃんと予習したから行きたいですね。
    せっかくの機会を無駄にしないようにしたいです。

    参加者ブログ
  • エキPy読書会 第二期04参加しました - 絵事後素
  • ryu22eBlog : エキスパートPythonプログラミング読書会 第二期 04 に参加しました #expertpython
  • 2012年3月17日土曜日

    Python Developer Festa 2012.03行って来ました。

    Python Developers Festa 2012.03 on Zusaarに行って来ました!
    Python Developers Festa 2012.03 を開催します - Twisted Mind

    例の如く、当日の天気は雨模様。
    前回はぎりぎりだったので、今回は早めに行きました。

    当日の様子はかえるの人(@blaue_fuchs)がまとめてくれています。
    Python Developers Festa 2012.03 #PyFes 〜ハンズオン開始まで - Togetter
    Python Developers Festa 2012.03 #PyFes 〜ハンズオン中 - Togetter
    Python Developers Festa 2012.03 #PyFes 〜LT1 - Togetter
    Python Developers Festa 2012.03 #PyFes 〜LT 2 - Togetter
    Python Developers Festa 2012.03 #PyFes 〜LT 3 - Togetter
    Python Developers Festa 2012.03 #PyFes 〜LT 4 - Togetter
    Python Developers Festa 2012.03 #PyFes 〜終了後 - Togetter

    当日は大きく分けて
    ・ハンズオン
    ・プレゼンテーション
    が行われました。

    ・ハンズオン
    @voluntasさん、@yokatsukiさんより諸注意の後、
    10:00〜15:00まではハンズオンを実施しました。

    自分はPython でテスト(仮)に参加しました。
    しかし落とし穴が……
    講師のシャイデレ(@aodag)さんが来ない!!!
    そこでTLを探っていたところ、


    ……ひとまずハンズオンのURLは公開されていたので、
    必要なツールをvirtualenvを使ってインストール。

    しかし資料を読み進めながらテストツールをためしていたところ、
    「もしかして、Python3が必要……???」
    と気づきました。
    自分のMBAにはPython2系しか入っていないので、
    進めるには新しくPython3系を入れる必要があります。

    どうしようかな思いましたがあまり環境を汚したくないので
    pythonbrewを導入しました。
    pythonbrewはpythonのバージョン管理ができるツールになります。
    前々から入れようと思っていたのですが今回ので決意。

    しかしはまった!pythonbrew及び、
    Python3.2のインストールで午前中を使ってしまいました。
    午後一でPython3.2のインストールまで終了したものの、
    ハンズオンの内容は半分も進みませんでした。
    いかんせん自分のレベルの低さと言うものを実感しましたね。

    他のテーブルでは前回同様初心者テーブルは好評だったみたいですね。
    隣でやっていたMercurialのテーブルも終始賑やかに見えました。

    ・発表
    今回はPythonの話が多かった気がする。いや気のせいか……
    PyCon2012とBPさんからの出版されるPython本
    の押しが強かった気がします。
    置いてけぼり感がすごいと有名なこの時間。
    以下のプレゼンテーブルで進みました。

    しょーま(@shomah4a)さん
    PyConJP2012 メンバ募集 -pyfes 2012.03-
    →PyConJP2012スタッフ募集中。やる気のある人希望。
    PyConで年収が上がりました!(要出典)

    bucho(@torufurukawa)
    Python 3.3 チラ見
    →今さらながらチェックインアプリ作りました。
    mixiと連携してクーポンゲットできるよ!

    ところてん (@tokoroten)さん
    レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
    →FirefoxやMicrosoftではやってます。
    Vista時代からやり始めてて、XPに比べてバグが半分になりました。

    Vの人(@voluntas)riak-ja meetup #1 (仮)
    →ライアックじゃなくてリアックと読みます。
    全部英語だけどイベントやるよ。

    トイプーの人(@atsuoishimoto)
    Python3と向かい合ってみる
    →あわてるな。Python2.4、2,5を使っている人は、
    まずはPython2.7の移行を始めよう。

    ナツ(@natsu_bm)さん
    塹壕戦から揚陸艇強襲上陸まで (2012/03/17 pyfes)
    →テスト≠品質 システムの価値をあげる手段の一つ。

    しぶや(@lanius)さん
    KoshiNukeによる最高のGit体験
    →会場の謎の一体感。次々と発せられる感嘆の声。
    Hey!Koshinuke!

    清水川先生(@shimizukawa)
    PYTHON PACKAGING (PyFes 2012.03 発表資料) - Google Docs
    →そんなうまい話はねぇ!

    たきざわ(@turky)さん
    実録!電子出版サイト裏の裏!
    →「電子書籍について話してください!」と
    色々なところでいわれますが、全部断っております。

    くえにし(@kuenishi)さん
    できる!ZooKeeper超入門
    →「ゲームじゃないよ!」「どうしてこうなった!」

    takabow♨ (@takabow)さん
    絵で見てわかる 某分散データストア
    →便利でカスタマイズしまくれる分散KVSです。(100%Java!)
    Pythonボルダリングイベントきてね!

    Yohei Sasaki(@yssk22)さん
    20120317 CloudFoundry #pyfes
    →PaaSのカーネル部分を提供。
    ぶっちゃけGettingStartedがあるくらいで
    ドキュメントありません。CouchDBはオワコン。

    TakuFukushima(@takufukushima)さん
    ネットワーク仮想化プラットフォームMidoNetについて
    →ネットワーク機器はスケールアウトできる!?

    moriyoshi(@moriyoshi)さん
    何か(仮)
    →innokoDB。ストレージエンジン。
    「泣いてもいいですか?」「あ、insertとかできるんですね」
    Web魚拓の人(@hiroki_niinuma)
    ウェブ魚拓史
    →1DのAndroidゲーム,トンネルRPG出しました。
    魚拓が起こした問題。◯電すごいな(◯い意味で)

    次回の日取りは決まっていないそうですが、
    引き続き参加したいと思います。
    9月ごろとおっしゃっていたので、
    その頃はPython3.3がリリースされている頃ですかね。
    Python2→3系に移行することになった時のために
    もっとPython力を見につけておきたいですね。

    会場を提供してくださったOracleさん、
    ハンズオンや発表されたみなさん、
    参加されたみなさん、お疲れ様でした&ありがとうございました!

    参加者ブログ
    Python Developers Festa 2012.03 #pyfes でテストハンズオンに参加した - あさとの @drillbits
    Even More Addicted to Indentation: Python Developer Festa 2012.03 に行きました。
    Python Developers Festa 2012.03に参加してきましたよ! #pyfes - プログラマ行進曲
    「Python Developers Festa 2012.03」に参加して来ました。 - 強火で進め
    Python Developers Festa 2012.03 に参加してきた - 彷徨えるフジワラ
    pyfes 2012.3に参加してきました。 - そこはかとなく書くよ。

    2012年1月18日水曜日

    エキスパートPythonプログラミング読書会 第二期 03

    エキスパートPythonプログラミング読書会 第二期 03
    に参加してきました。
    今回は定時ダッシュを決められたので、
    あまり走らずに済んでよかったです。

    1.アイスブレイク
    各島ごと(6名程度)で5分間の自己紹介を行いました。
    自己紹介順に、
    @Qooh0さん、@aodagさん、@drillbitsさん、
    @usaturnさん、そして清水川先生でした。

    ここでは清水川先生と
    「お正月にお雑煮を食べたことがない」
    という話題で盛り上がりました。
    清水川先生は先日初めてお雑煮を食べたそうです。
    自分は未だに食べたことがありません……

    2.読書会
    前回に引き続きこの本の中では言語として一番難しいところでした。
    ツイート数も少なかったように感じます。

  • islice
         -イテレータ向けのslice関数
         -ウィンドウに見えているところにだけ切り出している。
         -オブジェクトの実態を変えずに、VIEWを参照している。

  • tee
         -Unixのteeと同じなはず。2つに分けるのがtee
         -一時的に先読みしたい時先ので読み込んで、必要なら全部読み込むなどできる。
         -最初の数バイト読み取って置いて、
        もう片方はまったく受け取っていないオブジェクトとして、
        そのまま使いまわすことができる.

  • groupby
         -個数が入っているわけではない。a a a a などになっている。
         -カウントが欲しい時は自分でカウントの処理を書いてやる。
         -「aabbcda」のような後ろの方にあるaは取れない。
         -数を数えたい時はソートして同じ物を整列させて挙げる必要がある。
         -目的次第で分けて考える。
         -GAEだと泣きそうになるほど使うそうらしい。

  • imap, izip, ifilter
         -python3でimap, izipがmap, zipになる。
         -filter reduce は残るが、グローバルの組み込み関数でなくなる
         -(2012/01/25 0:30追記:functools.reduceに移動する)      -リスト内包表記でできるのはなくなっていく方向らしい。
         -関数型言語で使っているような表現をそのまま使っっている。

         -itertoolsはジェネレータ普通に使おうとするとよく使うが、
        やってみないと感覚がつかめない。

  • オペレーターとlambda
         -オペーレーターモジュールにあるよってツッコミがある。
        しかしlambdaの方が短くていいじゃんという意見もある。
        「標準モジュールをつかってやるのは悪いこっちゃ無いです。」

  • デコレータ
         -Pythonには、"クラスメソッド"、"インスタンスメソッド"がある。
         -@がついているものは関数呼び出しで、
        その直後にくるメソッドを読み込んで渡している。
         -普通はちょっとした処理を追加したい時にデコレータを使う。
         -デコレータは実装しようとすると難しいので、まずは使ってみたほうがいい。
         -デコレータはオブジェクトを受け取れればなんでもいいので、
        クラスでも、関数でも呼び出し可能であればなんでもいい。

  • with
         -try~finallyとclose()が要らなくなる。
         -with文に対応するには、withプロトコルに対応している必要がある。
        →  __enter__, __exit__
         -DBとかLibraryとかだとだいたい実装してくれているので、
        書くことはほとんどない。

         -清水川先生もwithが出た当時はそれほど試さなかった。
        本を訳すまでは使ったことなかった。
        なので、こんなものがあったなあと必要な時に思い出してくれれば。

  • contextlib
         -yield文で分割している。
         -yieldより前が__enter__相当、yieldより後が__exit__相当
         -closing:ファイルとかだと勝手にクローズしてくれるが、
        してくれないやつはこれを使うことでcloseを呼び出す。wrapper。

  • デコレータの注意点
         -デコレータを使うと、関数がラッパー関数になり、引き剥がしができない。
         -デコレータにする以前の状態にできないので、
         テストの時毎回通ってしまうという問題も。

  • ツイート数が少なかったのとは別問題かと思いますが、
    初めてTwitterでの質問を最後になるまで拾わなかったですね。
    内容を理解するのでお腹いっぱいでした。
    書き上げた内容もまだまだ説明が足りていない気がします。

    3.ビアビッシュ
    今回は予めビアビッシュの時間に
    LT枠を取ってやろうという初の試みだったわけですが、
    なんと発表予定者が全員キャンセルしてしまうという非常事態に。

    なので当日公募という形で行われました。
    行われたのは、
  • 主催の@tfmagicianさんのmongoDB即興セットアップ

  • PyPyの方のPyPy紹介(お名前を失念してしまいました。すみません。)

  • @aodagさんのメタクラスプロトコル解説


  • @aodagさんのメタクラスプロトコル解説は特に印象的でしたね……
    "メタクラスプロトコル"という名に
    似合わぬファンシーな感じのスライド
    あれは注目の的でしょう。
    内容もすごく濃かったと思います。

    「どのネタがいい?」と聞かれた時は、
    「えっ。何本あるんですか?」と驚きました。
    10本くらいは準備しているそうです。

    "いつ来るか分からない15分のために常に準備をしているのがプロ"
    "来ないかもしれないからと言って準備をしないのがアマチュア"
    とどこかで見たことがあります。

    自分はまだまだですね。
    いざと言う時に自分の力を出し切れるようにしたいです。
    (追記:Gigazineでした。リンクはこちら)

    次回の日程も既にconnpassにでています。
    日程を聞いた時はまさかと思いましたが、どのようになるのか楽しみです。
    エキスパートPythonプログラミング読書会 第二期 04

    参考リンク
  • Togetter:エキスパートPythonプログラミング読書会 第二期 03

  • エキ Py 読書会02 2章後半
  • 2011年12月15日木曜日

    (続き)「エキスパートPythonプログラミング読書会 第二期 02」参加してきました。

    感想は前回述べたので、今回は本編についてのまとめ

    ●リスト内包表記
        -mapより速い
            前はmapを使っていたが、mapはあくまで関数
            リスト内包表記は内部処理としてあるので、リストの方が早い
        -enumerate関数
            ループ処理でインデックスやカウンタを使いたい時に便利
        -リスト内包表記は慣れると書きやすて便利
            だけど可読性が低くなるときはfor文などの読みやすい方にする
            そのほうがPythonic

    ●Pythonic
        -Pythonのインタラクティブシェルで、
        import this
        と打つとそのThe Zen of Python、その世界観に触れることができる
    以前ブログも書きました

    ●イテレータ
        -nextメソッド、__iter__メソッド
            プロトコルに問い合わせる関数
        -「プロトコル = アダプター」
            lenもアダプター
            シンタックスの分かりやすさを、
            ”アダプターをかましている”という考えだとしっくりくるかなと
        -イテレータプロトコルはどこで誰が定義したの?
            →リファレンスマニュアルに規約が乗っている
            →いまだとabc(抽象基底クラス)や仮想クラスのような形で、
            http://www.python.jp/doc/nightly/library/collections.html
            に乗っている
            ここを満たしていると、よりモダンな感じになる

        -たとえると、
            単にラップされていて、
            必要なものに必要な処理をするための橋渡しをしている
            コンセントのアダプタを意識すると分かりやい
            (海外にいくと必要)

            プロトコルに対応されていると、
            それはイテレータであることを保証している
            (ダックタイピングの話)
            ただそれだとゆるすぎるから、
            isインスタンスで証明できるようにしている

            改行コードを受けった時に改行単位で、行読み出しなど
            好きな単位でnextで読み込みできる組み込みでもある

            関数など使わなくても、for文回せばいいのねという認識になる


    ●ジェネレータ
        -yield
            yieldがあるとジェネレータになる関数ではない
            returnだと関数になるが、
            yieldだとジェネレータの中にreturn書くなと怒られる
        -StopIterationはお約束で、ループを抜けるために必要
     
       -ジェネレータはイテレータプロトコルを実装しているので、
         多段にyieldとかやるとメモリをほとんど食わずに、
         ほぼ無限長のものを扱える
         20GBのログなども落ちずにできると思う
        -フィルタ条件とか色々かましたくなってくると便利になってくる

        -sendメソッド
            ジェネレータを外からコントロールすることは不可能だったけど
            Python2.5でsendメソッドを搭載したので、
            コントロールできるようになった

            初期化の時はsendは使えない
            最初にnext使ってやらないといけない
            ジェネレータのそれ以降の動きを方向転換することができるのが、
            sendのいいところ

        -closeメソッド
            close()を渡すとexceptionを発生させる→finallyで拾う

    ●PEP
        -Python Enhancement Proposal(Python拡張提案)
        -PEPはPythonのモダンな仕組みを取り入れるためのもの
        -PEP8はPythonのコーディング規約を書いたもの

    コルーチン
        -組み込みだとタスク
        -スレッドだとデッドロックを考慮する必要がある

    ●ジェネレータ式
        -リスト内包表記だと最初にメモリを食ってしまうため、
         順次処理ならジェネレーターで
        -順次処理系だとDBで1行(カーソル)を取り出していって、
         ジェネレーターでやると10万行一気に読みこまないで済むので便利

    ●range()とxrange()の違い
        -xrange()はオブジェクトを返している
        -xrange()はPython3でrange()になるためいらないと思われ
        -清水川せんせはほとんど使っていない
        -10万のrange() を作る時は有効ではある

    取っていたメモを元に書いてみました。
    過不足ありそうですが、ひとまずこれにて振り返り終了。

    @tfmagicianさんのツイートにもあったけど、
    清水川せんせのライブコーディングのログがあったらなあと。
    ブログ書いてて思い出せない所があったりして、
    もどかしい思いもしたので次回からは是非残して欲しいと思う。

    2011年12月14日水曜日

    (感想)「エキスパートPythonプログラミング読書会 第二期 02」参加してきました。

    エキスパートPythonプログラミング読書会 第二期 02
    参加してきました。
    参加された皆さんお疲れ様でした。
    今回参加されなかった皆さん次回にお会いしましょー。

    さて今回学んだ内容は後ほどまとめるとして、
    ところどころ思ったところについて書き連ねてみます。

    今回は仕事が忙しくていけるかどうかわかりませんでした。
    20:00までかかりそうだったので
    今回はちょっと厳しいかなと思ったのですが、
    半ば無理矢理終わらせてしっかり報告をしてきて5分遅れで到着。
    ほんとは10分くらい遅れると思ったけど、
    道がわかってたからまっすぐこれた。
    (途中@usaturnさんと一緒になりました。)

    今回からは前期にのっとって、自己紹介からスタート。
    とはいっても30人全員だとそれだけで時間が終わってしまうので、
    5分ほどの間各島(しま)、テーブルごとに自己紹介でアイスブレイク。
    自分は@shomah4aさん、@kanonjiさん、@takanoryさん、
    @tfmagicianさん、@Akira_Kitoさんと自己紹介させて頂きました。


    その後読書会。
    今回は清水川せんせも、
    「第2章と3章はこの本では言語として一番難しいところ」
    とおっしゃっていたこともあり質問の数も少なかったように思う。

    今回やった範囲は
    「第2章 構文ベストプラクティス-クラス以外」の前半、
    ●リスト内包表記
    ●イテレータとジェネレータ
    自分も後追いで理解するのに必死すぎて他になかなか頭が回らない……

    もっと具体的な使い所はPythonでプログラム書き続けていくと、
    「あ、ここ使える」
    というポイントがでてくるのかなと思いました。
    今は頭ではわかっていても実際どうするというところまでいけてない。
    ここについてまた改めてまとめます。


    そして全体の所感ですが、
    ●LTやっぱおもしろい。
    今回は@usaturnさんもLTした。
    ただLTはLTで面白かったけど周りと話す時間がなくなり、
    若干物足りないところもあった。
    最初30分懇談時間で、
    最後30分に4, 5人でLTとすると丁度いいのかなと思った。
    参加の際に「LT希望されますか」の欄があったらいいかも。
    お館様のご尊顔把握(ただし実は影武者らしい)
    ●世界の小宮、LT枠(ピザ枠 or すし枠)で登場。流石。
    ●帰りの電車で@yosida95と一緒に。イケメン。
    「イケメンですね」と聞いたら、
    「はい。よく言われます。」と言われた。
    切り返しもイケメン。
    ●もしLTやりたくなった時にGoogle DocsのPresentationだと
    物足りないから、とりあえずKeynote買っとこう。

    最後に、
    清水川せんせと世界の小宮さんの写メり合い面白かったです(笑)
    あれを写真に取れなかったのだけは悔やまれる!


    既に次回の予定も決まってます。参加予定です。
    エキスパートPythonプログラミング読書会 第二期 03 #expertpython 
    今回のまとめはこちら エキスパートPython読書会 第2期 第2回

    その他にも時間内にでてきた参考リンクです。
    Check out this SlideShare presentation : エキ Py 読書会02 2章前半 
    The Zen of Python 解題 - 前編 - atsuoishimotoの日記
    Python 2.6ja2 documentation
    (nightly版ですが、2.7ja1もあります。こちら

    やはりこのエキPy読書会は鍛えられている感じがあっていいですね。
    皆勤賞達成して、その頃にはPythonistaになりたいです。

    エキスパートPythonプログラミング
    Tarek Ziade
    アスキー・メディアワークス
    売り上げランキング: 18862

    追記:
    内容の方もまとめてみました。
    (続き)「エキスパートPythonプログラミング読書会 第二期 02」参加してきました。

    2011年12月11日日曜日

    Pythonの仮想開発環境作成ツール-virtualenv1.7-での変更点

    気がついたらvirtualenvが1.6.4から1.7にバージョンアップしていた。
    (virtualenvについてはこちらでも書いてみた。)

    以下変更点。
    • Updated embedded Distribute release to 0.6.24. Thanks Alex Grönholm.
    • Made --no-site-packages behavior the default behavior. The --no-site-packages flag is still permitted, but displays a warning when used. Thanks Chris McDonough.
    • New flag: --system-site-packages; this flag should be passed to get the previous default global-site-package-including behavior back.
    • Added ability to set command options as environment variables and options in a virtualenv.ini file.
    • Fixed various encoding related issues with paths. Thanks Gunnlaugur Thor Briem.
    • Made virtualenv.py script executable.
    特に大きいなと思ったのが2つ目の変更点
    virtualenv1.7は指定しなくても
    --no-site-packagesを勝手に指定してくれるようになった。

    --no-site-packagesはインストール済みのモジュールを、
    全て外した状態で仮想環境を作成できるオプション。
    これをつければ、
    virtualenv内のパッケージのみのリストを得ることができる。

    しかし今までは、
    python virtualenv.py --no-site-packages env1
    
    といちいち指定しなければならないので面倒だった。
    これが
    python virtualenv.py env1
    
    で済むのだから快適と言わざるを得ない。

    人によっては、
    • インストールするPythonのバージョン(2.5, 2.6, 2.7, etc)
    • パッケージ管理ツールdistribute
    など指定するオプションも多いはず。
    (例)
    python virtualenv.py --distribute --python=python2.5 --no-site-packages env2
    

    distributeは既にデフォルトで設定する方法もあるようなので、
    virtualenv1.7で--no-site-packagesもデフォルトにできるようになったのは大きいと思う。

    ちなみに確認のため--no-site-packagesを付けて試してみたところ、
    インストールが始まる前に
    The --no-site-packages flag is deprecated; it is now the default behavior.
    と表示された。
    確かにインストールしてくれているようだ。
    より使いやすく便利になったね!

    2011年11月29日火曜日

    Heroku+Djangoであれこれメモ

    Heroku+Djangoを弄ってて分からない単語が
    たくさんでてきたので一度整理してみます。

    ■syncdb
    syncdb は、特定のクエリの実行結果を
    他のデータベースに保存するためのツール。
    元のデータに変更があった際には、
    その差分だけを効率よく同期できる。

    ■psycopg2
    PostgreSQLのPythonインターフェース。
    似たようなものにpygresqlやpopyがある。
    Adapterという単語がどうもしっくりきていないのだけど、
    """
    デザインパターンの一種で、
    既存のクラスを全く修正せずに、
    提供するインターフェースを変更する方法。
    (From wikipedia)
    """
    ということなので、
    デザインパターンの知識がないとピンとこないかな。

    ■gunicorn
    Pythonで作られたWSGIに対応するウェブサーバー。
    綴りは'Green Unicorn'を縮めたもの。
    """
    Web Server Gateway Interface (WSGI; ウイスキー) は、
    WebアプリケーションとWebサーバを接続するための、
    簡潔かつ統一されたインタフェース定義である。
    プログラミング言語Pythonで使われる。
    (From wikipedia)
    """
    これにより、対応させたWebアプリケーションは
    任意のWebサーバ上で実行することができる。

    ■Procfile
    Herokuアプリの動作方法(プロセスモデル)を指定するもの。
    web, worker, clockの3種類がある。

    とりあえずここまで、
    必要の都度書いていきたい。

    2011年11月28日月曜日

    Python-Django試行錯誤

    まーDjangoのドキュメントを進めているわけです。
    いや正確には”進めようと”しているわけなのですが、
    「進まない……」

    何も考えずに記事の通りにやっていけば進むのかもしれませんが、
    ただチュートリアルを進めていくだけじゃ
    あまり身につかないだろうなと思い、
    「今はPostgreSQLを立てないでHeroku+Djangoでやる」
    という目標を立ててやっています。

    Proclieって何だ。
    gunicornって何だ。
    psycopg2って何だ。
    つーかDjangoが1.0と1.3でどう違うんだ。
    Herokuはどうゆう動きをしているんだ。

    と知らないことづくしですが、
    それでこそやり甲斐があるってものですかね。
    地道に焦らずやっていこうと思います。

    2011年11月27日日曜日

    SyntaxHighlighter動作テスト

    FizzBuzzで試してみます。

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    def fizzbuzz(n):
        if n % 15 == 0:
            ans =  'FizzBuzz'
        elif n % 3 == 0:
            ans =  'Fizz'
        elif n % 5 == 0:
            ans =  'Buzz'
        else:
            ans =  n
        return ans
    
    def main():
        for i in range(1, 101):
            print fizzbuzz(i)
    
    if __name__ == '__main__':
        main()
    

    できたみたい。
    参考サイトはこちら

    ■追記 2011/11/27 17:54
    どうもSyntaxHighlighterの読み込みが遅いと思ったら、
    一番最後の方に読み込まれているようだ。
    そりゃ遅く感じるわけだ。
    なんとかしたいな……

    2011年11月24日木曜日

    HerokuでDjangoしてみました。

    Heroku 上で Django を動かす - Twisted Mind 試して見ました。

    すると今まで悩んでたのが嘘みたいにあっさりできました。
    タイポでこんなエラーもでましたが(焦りすぎ。'pattterns'て何よ)、
    しっかり動くようになりましたよ〜。
    Top
    http://warm-mountain-4083.herokuapp.com/
    管理画面
    http://warm-mountain-4083.herokuapp.com/admin/


    最初は
    Getting Started with Python/Django on Heroku/Cedar
    を見ながら進めていたんですが、
    DBが絡んできたあたりからチュートリアルの通りに進まなくなったため、
    「一連の流れを早く体験したい!」
    の思いでやってしまいました。

    Djangoのチュートリアルと一緒にやってしまったから、
    何故かPostgres入れたりして環境がごちゃごちゃにorz


    まあ「失敗は成功のもと」と言いますので、
    気長にやっていきましょう……
    ただ写経しただけだとこのままだと忘れてしまうので、
    何故そうしたのか考えながらもう一度試してみようと思います。

    2011年11月17日木曜日

    The Zen of Python -import this-

    The Zen of Pythonでも読んでみる。
    ターミナルでPythonを立ち上げて、
    import thisと打つと

    >>> import this
    The Zen of Python, by Tim Peters
    
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    
    うん。頑張ろう。
    ちなみに日本語訳はこちらで見れます。