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

2012年11月3日土曜日

#ujihisa.vim #3に参加しました。

イベント詳細
ujihisa.vim#3


感想など
ふと思い立って、行って来ましたujihisa.vim。
敢えて一言で感想を言わせてもらうなら、「Vimmer怖い……」
発表がぶっとんでる…… これが上級Vimmerが集まりかと思いました。
(特にマクロの話とかマクロの話とか)
カーソル移動の話は非常に参考になったので、どのように操作したら
効率がいいのか見直したいです。
以下はBlogと言う名のメモ書きになります。


オープニング
  • mixiの方から挨拶
  • 飲食はペットボトルのもののみOK

発表(@kaoriya)
  • 資料: vim-jpの活動報告
  • 村岡太郎 @kaoriya
  • vim-jpってなんだっけ?
    バグの修正、新機能の提案、啓蒙活動
  • vimこわい
  • mvp二人が大体日本人が出すパッチの8割を書いてる。
  • vimdoc-ja, autofmt
    Vim documentation: help
  • cpp.vim →vim-jpによって管理されることになった。
  • vimrc読書会 http://vim-jp.org/reading-vimrc/
  • 月刊vimマガジン http://vim-jp.org/vimmagazine/2012/10/31/vimmagazine.html
  • vim-jpの本質
  • vimの未来
    • 単一のメンテナの限界
    • グループによる分割統治
      vim-jpがやっていることが先駆けになる


発表(@basyura)
  • 資料: ujihisa.vim #3 で発表した TweetVim 1.8 Release!! - basyura’s blog
  • The whirlwind evolution of TweetVim
  • ずっとjava1.4, C#, Silverlight, Ruby好きです。
  • TweetVimご存知のかた→ほぼ全員か。
  • TweetVim 24人ぐらい呟いてた→多いと思う。
  • Advent Calender 30日目で公開しました。
  • TweetVim1.8
    • now!今プッシュしたいと思います。リリースされました。
    • 末尾が...で省略される問題を解決 rhysd ++
    • 検索時の日付表示
  • TweetVim1.9
    • 非同期にタイムライン更新とか
    • できならいいなと


発表(@thinca)
  • 資料: thinca gist: 4006236 — Gist
  • vital.vim
  • プラグイン開発者向け
    quickrun.vim, neocomplcache, uniteなど他のものでも使われている。
  • ライブラリ欲しい。
  • 通常のライブラリの欠点
    • ユーザに別途入れて貰う必要がある。
    • そこでvital.vimですよ。
  • vital.vimとは
    • vim scriptのライブラリ郡
    • モジュール単位で管理されている。
  • モジュールを充実させたい。全然足りない。help。
  • テスト機能見直ししたい。一応あるが、結構適当。
  • 外部モジュールも読めるうようにする!
  • vital 開発参加者待ってます!

発表(@ujm)
  • HDMI出力のためプロジェクターに投影できない。→なんとか解決。
  • ujihisa
  • マイクラフトを知らない人は調べたり、やってみたりしないこと。
    ゲームで〜クラフトとかあるのはやったら駄目です。
  • ujihisa.vimのためにカナダから日本に来ました。
  • showtime.vimを使うつもりだったが、できない。
  • neosnippet.vimの紹介します。作ったのは@ShogoMatsuさんです。
  • neocomplcacheを使って、snippetの一覧を出してくれる。
  • unitesnippletだと更に簡単にsnippetの一覧を出してくれる。
  • C言語のHello, World!デモ
  • snippet Setup
    • install
    • map expand key
    • map jump key


発表(toku)
  • 資料: vim-jp/ujihisa.vim-3 · GitHub
  • 匿名希望さん
  • マクロ漁船に乗ろう。
  • マクロを使ってお手軽プログラミング
    どれくらい使っている?→ほとんど使っていない。
  • "[a-z]
  • 正規表現で小文字を大文字に変換することはできない→子、孫を使って実現!
  • マクロ漁船に乗る準備はいいか!→よくない!

発表(@rbtnn)
  • 資料: About regex ujihisa.vim #3
  • vimrc800行
  • set numberをしてない。rulerに行数表示。
  • vimpluginは30個ほど。
  • 自分のプラグイン Hexript について
    バイナリを書くプラグイン。quickrun対応。vinariseで見れる。
  • バイナリを書く上で、欲しい構文を募集中。
  • Twitterなどでリプライとかくれれば……
  • vital.vimに字句解析入れたいなと。

発表(@deris0126)
  • 資料: ujihisa.vim#3で発表してきた - derisの日記
  • vim歴2年半。
  • カーソル移動について。
  • 効率的に移動するには?横、縦移動。
  • 横移動
    • ステップ1: ^S
      行末から近ければ。
    • ステップ2: f(F) 行内で1つだけの文字を探す。
      記号>数字>大文字>小文字
    • ステップ3: w b h l
      数単語以内…w b, 同単語or数文字内…hlとf(F)
    • ステップ1〜3のそれぞれを一瞬で判断できるように鍛錬が必要。
    • あとは慣れと好み。
  • 縦移動
    • 移動箇所が明確の時
      • gg G
      • 目的の単語を知っている。 *で検索(プラグイン)、その後/で検索
      • どう画面内にある。{ } 5j 5k j kでアプローチ。後は横移動
    • 眺めたいだけの時
      • ざっくり Ctrl+F, Ctrl+B
      • 細かく Ctrl+D, Ctrl+U
  • おまけ: kjhl連打、おしっぱ
  • カーソル移動系Plugin
    vim-smartword, vim-visualstar, vim-easymotion, columnpjump, vim-submode, ……

発表(@ShogoMatsu)
  • 資料: neobundle.vimについて+おまけ
  • Vim人 Tシャツ
  • neobundle.vim プログラマーたちよこれがテキストエディタだ。
  • VundleとneobudleはCとC++ぐらい違うよ。
  • NeoBundleLazyを使うとプラグインの遅延読み込みができる。

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年10月7日日曜日

ITコミュニティ秋祭りリターンズで登壇してきました! #itmatsuri



まさか去年はいち参加者の立場だったのに、
今年は壇上スピーカーとして話すことになろうとは……(何度でも言う)

終始緊張しっぱなしでしたが、何とか無事終わりました。
普段お話できない方ともお話できるこういった機会は本当に貴重です。

せっかくこうゆう機会を得られたので、
今回参加したことをまとめてみたいと思います。

今日やったこと&できたことリスト
  • 壇上スピーカーとしてお話してきたよ!


  • ノベルティステッカーもらったよ!

  • Pythonコミュニティの紹介してきたよ!
    #kaisenpy とか, #kabepy とか
  • 以前お会いした人と再開してお話できたよ!
  • パネリストの人たちとお話してきたよ!
  • Rubyの人たちと仲良くなってきたよ!
  • スタートアップRubyを出版された @igaiga555 さんから
    本を購入して、サインまで頂いたよ!

まとめ
Pythonコミュニティのお話しをしに行ったはずが、
Rubyの人たちとお話し、Ruby本のサインまでもらってきてしまいました。

この本はRubyの文法うんぬんが書いてあるというより、
Ruby文化や考え方みたいなことが書いてあるようなので
これから読むのが楽しみです。

今回参加して思いましたが、
言語やコミュニティは違っていても思っていることは一緒なのかなと。
これからはRuby ConferenceやYAPCなど自分が全然知らないところにも、
どんどん顔を出していったらもっと面白いかもしれない。

最後に会場を用意していただいた@niftyさん、
参加された方々、スタッフ・登壇者の方々お疲れ様でした!
そしてありがとうございました!
また来年も開催できるといいなって思います。

2012年10月2日火曜日

IT秋祭り開催間近!!!



今週の金曜(10/05)にお台場でITコミュニティ秋祭りが開催されます。
イベント詳細はこちら
去年の模様。

去年はこのイベントで「コミュニティ初参加」を果たしたわけですが、
今年はなんと「壇上スピーカー」として登壇することになりました。

登壇者のみささんはたのぐちさんがまとめてくださっています。
ITエンジニアの生き様を見よ!「ITコミュニティ秋祭り・リターンズ」の見どころを妄想紹介 全登壇者のスライド付 - Seize The Day!

この話を引き受けた時の自分の気持ちをぶっちゃけますと、

「自分が登壇?パネリスト?えっいいの!?」
「まわりみんなすごい人ばっかでこわいわ―。」
「Pythonの人だれもいないじゃないですかー。やだー。」

と思っていました。
しかしうだうだいいながらも、

「この1年間感じたことを伝えることでお役に立てるのなら……」
「普段話しをしないような人たちと、意見を交わすのはおもしろそう。」
「この人たちはどんな考え方を持っているのか知りたい!」

と興味や好奇心の方が勝ってしまい、結果登壇することになりました。


一番初めに勉強会やコミュニティに参加した時にも、

「自分はまだそんなすごい技術持ってないし……」
「まわりがみんなすごい人に見える……」
「ぼっちになったらどうしよう……」

といろいろと思ったりしましたが、

でもやっぱり行ったらおもしろそう!楽しそう!

という気持ちが一番大事なんだと思い出しました。


この「ITコミュニティ秋祭り・リターンズ」はお祭りです。
みなさんぜひこの機会に参加して、
日々思っていることを語りあいましょう!

チケットはこちら。みなさんの参加お待ちしております。


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日日曜日

TokyoMercurial4.5に参加しました。



当日の深夜に以下のようなやりとりがあり、
多少自分のスキルに不安をいだきながらも突撃参加しました。


その日の朝にdocumentを舐めてからの参加です。

1.アイスブレイク
簡単なアイスブレイクの後、@troterさんによるハンズオン開始。
各々どのぐらいMercurialをしようしているのかを紹介したのですが、
Gitも使っていますと言う方もちらほら。
そうゆう自分もVimのdotfilesやHeroku使うためにGit使っていた頃がありました。

2.ハンズオン
以下のように導入編・ハンズオンとわかれていました。
  • 第一部: Mercurial Queues(MQ)の説明、パッチキューの操作
  • 第二部: MQを用いた基本操作のまとめ、歴史改変編のハンズオン
MQを使いこなすと、 という印象になるらしい。 自分はそこまで使いこなせてなかったからまだ恩恵を受けられていないのが残念。
恩恵を受けれられた方の例↓
3.Tips
  • TortoiseHg2.4.1でたよ!
  • GUIでMQ使うならTortoiseHg。
    SourceTreeだとリビジョンもパッチも全部丸で表示されるから分かりづらい。
  • Gitの機能がMercurialにないとかいってる人はMQ使ってから。

    懇談会楽しかった!3時間近くいましたかね?勉強会でこれだけ長時間いたのは初めてだったのでとても新鮮でした。

    次回のTokyoMercurial5.5はビギナー向けになるそうなので、
    一旦そこで基礎力を鍛えようかとも思っています。
    主催者の@troterさんTAの方々、参加者の皆さんお疲れ様でした!

エキスパート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年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年3月12日月曜日

    新宿 Book-a-thon #11に参加してきました。

    kashew_nuts-tech: 新宿 Book-a-thon #7 -新春スペシャル-に行って来ました。
    以来ずっと仕事が終わらず一向に参加できる気配がなかったのですが、
    久しぶりに参加。

    気づけばconnpass-新宿 Book-a-thon #11と二桁になっております。
    ATNDからconnpassへとイベントページも移行。
    気分一新ですね。

    当日の様子は@usaturnさんが以下にまとめてくれています。
    新宿 Book-a-thon #11 - Yukarin'Note

    今回自分が読んだ本は

    読んだと言うより記述しているスクリプトを、
    VM上のUbuntuで写経していました。

    主催の@tk0miyaさんの学生時代のバイト話で盛り上がっていたお陰で
    そちらの話が気になりなかなか本に集中できないというおまけも
    ついてましたが、
    区切りのいいところまでは読み終えることができました。

    次回のBook-a-thonイベントももう日にちが決まっているようです。
    connpass-新宿 Book-a-thon #12
    20日が祝日ということで22日(木)になり、
    自分もまさかの補欠になっていますがなんとかなるでしょう。
    楽しみです。

    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章後半
  • 2012年1月13日金曜日

    新宿 Book-a-thon #7 -新春スペシャル-に行って来ました。

    hb qp bp study 新年LT&ビアバッシュ2012行けなかった...
    このまま1日が終わるのも癪だからブログ書きます。

    新宿 Book-a-thon #7 -新春スペシャル-に行って来ました。
    いつもは余裕で参加できるのに、
    まさかの補欠者がでるという事態になりました(笑)

    自分は当初エキPyを読むつもりでしたが、
    年末年始で読みきれなかったBeing Geekを読むことにしました。
    エキスパートPythonプログラミング
    Tarek Ziade
    アスキー・メディアワークス
    売り上げランキング: 20751

    Being Geek ―ギークであり続けるためのキャリア戦略
    Michael Lopp
    オライリージャパン
    売り上げランキング: 25733


    Book-a-thonは前回と同じように最初に読む本を各自紹介して、
    そのあともくもくと持ってきた本を読み続けるというものでした。
    大人7人が集まってほとんど話しもせずに
    もくもく本を読んでいる図はシュールだったでしょう。

    @tk0miyaさん曰く、
    「集まって各々がバラバラのゲームを無言でやってる状態です」
    なるほど!確かに!
    何が楽しいのかって…やっている本人が楽しければいいんです!

    読書自体は前回と同じように結構捗り、
    7,8割のところまで読むことができました。
    正月ボケが抜け切らない頭をしゃきっとさせるにはすごく良かったです。
    実際問題無理矢理にでもこうゆうまとまった時間を取らないと、
    なかなか本を読む機会なんて作れないと思う。

    毎週第1、3火曜日に行われている新宿Book-a-thonだけど、
    主催者の@tk0miyaのご都合で次回の開催日は未定。
    何読むか考えておかないとな……
    新宿道場の前だとアジャイルサムライに決定だろうけどね。

    2011年12月23日金曜日

    新宿 Book-a-thon #6に参加してきました。

    新宿 Book-a-thon #6 : ATNDに参加してきました。
    凍えるような寒さの中会場に辿りついたのですが、
    「ルノワールどこよ!」
    ちょっと迷いました。案内板もあれじゃ別のところ指してるって。

    自分がついた時は@tk0miyaさんと@usaturnさんのお二人だけでした。
    今日やることの紹介をして時間もそろそろってことだったので、
    粛々と作業開始。
    自分は
    「エバンジェリスト養成講座 究極のプレゼンハック100」
    を読みました。

    エバンジェリスト養成講座 究極のプレゼンハック100
    西脇 資哲
    翔泳社
    売り上げランキング: 13256

    @dproject21さんにおすすめされてから積ん読になっていたので、
    この機会にと思って一気に読みました。
    ちょこっと書いてあることを抜粋させてもらうと、
    -------------------------------------------------------------------------------
    *私がプレゼンテーションで一番大切にしていることは、「経験」です。
    プレゼンテーションでまず大切なのは「自分が説明するものを経験しているかどうか」、
    そして「説明するものを友達や、周りの人にも好きになってほしいかどうか」です。
    *P014-伝われば、成功。伝わらなければ、失敗。
    *P015-一番最初にやらなければいけないのは何を伝えたいのかを決めること。
    -------------------------------------------------------------------------------
    *P71-プレゼンテーションの視点
    *自分視点-〇〇のクラウド版を出荷します
    *神様視点-〇〇のクラウド版が出荷されました
    *顧客視点-クラウドで〇〇を手に入れることができます

    *プレゼンテーションは顧客視点にすると、より上質に、より伝わりやすくなります。
    自分視点、神様視点ですと、製品説明にすぎなくなってしまいます。なるべく顧客しし視
    視点を心がけて下さい。
    -------------------------------------------------------------------------------
    *P077-プレゼンは、必ずドラマにする
    *P080-ドラマになったプレゼンテーションは
    ◯登場人物(会社や製品、自分自身)をいつ紹介するか
    ◯クライマックスr(インパクト)をどこにするか
    ◯何話構成(何スライド、何分)にするか?
    ◯最終回(まとめ)は必ず作る
    -------------------------------------------------------------------------------
    *P107-比喩を使うことでよけいわかりづらくしない
    *P109-実在しないもの、実在しない現象にたとえてしまう人はけっこう多いんですが、
    実在しないものはイメージが共有できないので、使わないようにして下さい。簡単な
    もの、実在するものにたえることを心がけて下さい。
    *P124-数字を入れる
    1分間に数字を3つ織り交ぜる。説得力を高めるときのテクニックです。
    これも試してみてください。
    1分間に3つ以上の数字を織り交ぜると、説得力が増します。
    -------------------------------------------------------------------------------

    途中@hekyouさん@th0x0472さんがいらっしゃいましたが、
    良かった!本被らなかった!
    「別に被ったっていいんですよ?」
    とのお言葉も頂きましたが、まあこれはこれで。

    当日読まれた本は他に、

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

    アジャイルサムライ−達人開発者への道−
    Jonathan Rasmusson
    オーム社
    売り上げランキング: 2487

    Being Geek ―ギークであり続けるためのキャリア戦略
    Michael Lopp
    オライリージャパン
    売り上げランキング: 29707

    Blogを書いている方が2名いましたね!
    一人Advent Calendarをしている方々はお忙しいですよね。わかります。

    普段はもっと雑談が多いBook-a-thonらしいですが、
    今回は集中的に自分の持ってきたタスクをしていたようです。
    お陰様で自分も
    「エバンジェリスト養成講座 究極のプレゼンハック100」を
    読破しました!
    次回は1/10(火)だそうです。さ〜て次回は何を読みましょうか……
    新宿 Book-a-thon #7 -新春スペシャル- : ATND

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