tse 0.0.14リリース

tse 0.0.14をリリースした。 組み込み関数 E() を追加 tseからコマンドを使うとき、毎度毎度 subprocess.check_output('ls', shell=True, universal_newline=True) とするのは面倒なので、E('ls') で呼び出せるようにした。 例: $ tse -b 'for l in E("ls").…

Python 3.6 リリースパーティー 発表資料

What's new in Python 3.6 from Atsuo Ishimoto

真空調理法(sous vide)の基礎調査

sous vide 真空調理法または低温調理法と呼ばれる。 フランス語で「真空で」という意味。「スービド」って発音するのかな。 肉などの食材をビニール袋に入れて空気を抜き、お湯につける調理方法。 一定の温度を保ったお湯を使って、長時間加熱して調理する。…

Python 3.6の概要 (最終回 - オプティマイズ)

Python 3.6では、長年に渡って使われてきた、Python の基本的な実装に関わる部分で、重要な変更が行われている。 辞書オブジェクトのレイアウト変更 Raymond Hettingerのアイデア を元に、稲田さん が実装したもので、古くから使われてきたPythonの辞書オブ…

Python 3.6の概要 (その6 - ローカル時間の曖昧さを解消)

夏時間を採用している地域では、1日に2回、同じ時間となる場合がある。たとえば、アメリカの東部時間では、11月第1日曜日の午前2時に夏時間が終了すると、また同じ日の午前1時にもどる。つまり、この日は午前1時は2回存在することとなり、このタイムゾーンで…

Python 3.6の概要 (その5 - ファイルシステムパス プロトコル)

ファイルシステムパス プロトコル pathlib はPython3.4で導入されたが、pathlibで表現されるファイルパスは、 open() やos.path.* などの、既存のファイル操作関連関数では使用できないため、あまり便利には使えていなかった。 Python3.6からは、pathlib.Pat…

Python 3.6の概要 (その4 - クラス定義)

クラス定義のカスタマイズ これまで、Pythonのクラス定義をカスタマイズする手段として、メタクラスが使われてきた。しかし、メタクラスを利用したカスタマイズは、Pythonのオブジェクトモデルや型システムの知識が必要で実装が難しく、また複数のメタクラス…

Python 3.6の概要 (その3 - async関連)

非同期ジェネレータ 現在のPythonでは、ジェネレータを使って、とてもお手軽にイテレータを作成できる。例えば、奇数列を生成するジェネレータは、次のように書ける。 def odds(): i = 1 while True: yield i i += 2 しかし、ジェネレータが存在しなかった頃…

Python3.6の概要(その2 - 変数アノテーション)

変数アノテーション PEP 484 -- Type Hintsで導入された型ヒントが、モジュールのグローバル変数や、クラスのインスタンス変数などにも指定できるようになった。PEP 526 -- Syntax for Variable Annotations 変数の型アノテーションは、mypy などではコメン…

Python 3.6の概要 (その1 - f文字列)

f文字列 これまで、Pythonで文字列に変数を埋め込む方式にはいくつかあったが、ついに式を文字列中に直接記述できるようになった。 (PEP 498 -- Literal String Interpolation) 式を埋め込んだ文字列はf文字列(formatted string:フォーマット済み文字列)と呼…

仮想継承とsingledispatch

以前、emitjson というパッケージを公開した。使い方は簡単に こちらに 書いたが、要はfunctools.singledispatch() をちょっと使いやすくしたものにすぎない。 singledispatch() は、Python3の抽象基底クラスと組み合わせると、非常に面白い使い方ができる。…

Python3用パッケージってどのぐらい増えただろ?

Python3を使ってても、PyPIのパッケージがPython3対応かどうか、あんまり心配しなくなった気がする今日このごろです。 体感的にはPython3であまり不自由はない感じになってきたが、実際問題、どの程度Python3対応が進んでいるのか、気になったので簡単に調べ…

emitjson

emitjson というPythonモジュールを公開した。 pypi.python.org emitjson という名前にしたが、じつはJSONは出力しない。 任意のオブジェクトを、json モジュールがサポートしているオブジェクトに変換するときに使うユーティリティだ。 例えば、日付とバイ…

引っ越しました

http://www.gembook.orgの内容は、すべてこちら に移動しました。

Python文法詳解 正誤表

第1章 P.1 誤 次のようなというカテゴリーになるでしょう 正 次のようなカテゴリーになるでしょう 第2章 P.18 誤 >>> 10 // 3 3.0 正 >>> 10.0 // 3.0 3.0 P.21 誤 >>> S[1:4] 'bcd 正 >>> S[1:4] 'bcd' 第3章 p.48 誤 >>> a = 1 >>> 100 and x == 1 or 200 …

tse 0.0.9

tse(Text Stream Editor) 0.0.9 をリリースした。このリリースでは、--begin オプションと、--end オブションを複数指定できるように修正した。 これまでだと、--begin に複数行の値を指定するとき、 $ tse --begin 'print(1)' --begin 'print(2)' と複数の …

PyCon JP 2015 発表資料

PyCon JP 2015 で、tse の発表をさせていただき、ありがとうございました。思ったよりたくさんの、ワンライナーを愛する善男善女に聞いていただきました。 tse - Pythonによるテキスト整形ユーティリティ from Atsuo Ishimoto sed/awkが必修科目だった昔とは…

tse 0.0.5リリース

久しぶりに tse をリリースした。遅ればせながら Python3で動くように修正し、いくつかオブションを追加した。 tse は sed や awk のように Python をコマンドラインから実行するためのツールで、詳しくは 以前書いた解説 を参照していただきたい。 今回のリ…

python.jp改善計画

先日、CROSS2015 というイベントで、日本のPythonコミュニティ全般についてのパネルディスカッションに参加させていただいた。 90分という長丁場で、途中でトイレ行きたくなったらどうしようなどと余計な心配をしていたが、とくにダレることもなく緊張感をも…

Pelicanによる www.python.jpの構築

PyCon JP 2014の発表資料 Pelicanによる www.python.jpの構築 from Atsuo Ishimoto

Python2とその時代

宣伝が続いて恐縮だが、オライリージャパンよりPythonの解説書を上梓した。昔から、Python内部の仕組みも解説したPython解説書を書きたいと思っていて、ようやく実現した感じだ。 しかし、本書の執筆は、昔、構想を立てていたときに思っていたほどは楽しくは…

書籍 Python文法詳解 (※表紙は犬ではありません)

このたび、オライリージャパンよりPythonの解説書を出版させて頂くこととなった。表紙絵の動物は、犬ではなくアルプス・マーモットだ。 長年のあいだ、オライリージャパンの某氏にはPython本を書け書けとせっつかれていて、そのたびにうーんむにゃむにゃと誤…

Python 3.4 で追加されたモジュールのPyPIパッケージ

Python 3.4の新規モジュール で、Python3.3以前用のパッケージが用意されているモジュールの一覧。 モジュール名 対象バージョン URL enum 2.4 〜 3.3 https://pypi.python.org/pypi/enum34 asyncio 3.3 〜 <https://pypi.python.org/pypi/asyncio > pathlib 2.7, 3.2 〜 <https://pypi.python.org/pypi/pathlib > statistics 3.1 〜 https:/</https://pypi.python.org/pypi/pathlib></https://pypi.python.org/pypi/asyncio>…

Python 3のexcept文

Python3で例外をキャッチすると、例外オブジェクトを代入した変数は削除される。 >>>a =100 >>> a 100 >>> try: ... 1/0 ... ... except Exception as a: ... pass ... >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' </module></stdin>…

Python 3.4 のオブジェクト開放処理

Python Advent Calendar 2013 の六日目です。Python3.4 で導入された PEP 442 -- Safe object finalization の解説を簡単に。 Pythonのメモリ解放処理 Pythonでは、処理中に使われなくなったオブジェクトを検出し、自動的に開放するようになっている。他のオ…

Ubuntu 13.10 にVMWare Tools をインストールした時のメモ

Ubuntu 13.10 で普通にVMWare Fusion 6 の VMWare Tools をインストールしようとすると、 /vmhgfs-only/inode.c:1893:29: error: ‘struct dentry’ has no member named ‘d_count’ int dcount = dentry->d_count; こんな感じでエラーになってしまう。 こちら…

Cython による拡張モジュール開発

PyCon APAC 2013 での発表資料です。 Introduction to cython from Atsuo Ishimoto

めんどくさいmock.patch()

unittest.mock モジュールを正しく使って関数を置き換えるというのは以外と難しいもので、Pythonの名前空間について、しっかり把握できてないとうまくいかないことがある。 単純なケースでは、テスト対象のコードが参照している名前で置き換えてやればいい。…

Console IME対応パッチ

Windows用のコマントプロンプトの置き換えアプリ Console の、IME対応パッチ版 パッチ https://github.com/atsuoishimoto/console2-ime バイナリ 2013-07-06版(Console 2.00 b148用) https://github.com/atsuoishimoto/console2-ime/releases/tag/console-2-…

ジェネレータの循環参照

以前、ジェネレータが循環参照の一部になっている場合、メモリが開放されなくなるケースがあるという エントリ を書いた。 最近、この仕様が 問題となっていた ようで対策が検討されていたが、ついにトランクにコミットされたようだ。 http://bugs.python.or…

日本語でreStructuredText

実のところ、私はあんまり reStructuredText /Shinx が好きではない。Markdown と比べるとシンプルさで劣り、TeXと比べると印字品質で劣る。この辺の中途半端さが、restを愛せない大きな理由だが、もう一点、日本語の文章を書くのに適切なマークアップ言語で…

PowerPointは僕らのIllustratorだ

普段、図を書いたりすることはそれほどないが、書くときは適当にPowerPointを使って書いてしまうことが多い。このページの図 なんかもPowerPoint製で、けっこう綺麗な図を手軽にかけるので重宝している。 書くのが簡単なのはいいんだけど、書いたあと、画像…

動的型言語の使いどころ - その2

先日、動的言語の使いどころ という記事を公開してしまった。公開して「しまった」というのは、じつはあの記事はもうしばらく寝かしてから公開するつもりで、まだ未完成だったためだ。なんで公開するつもりがないエントリが公開されてしまったかというと、エ…

動的型言語の使いどころ

型宣言というのは良い物だ。型が明確なら、実行速度は型情報がない場合と比べて100倍も200倍も高速になるし、エラーチェックだってできる。リファクタリングも簡単だ。 型がないほうがいいという人は、昔の、まだプロトタイプ宣言がなかった頃のCコンパイラ…

OS Xの Vim で IME 制御

Vimで挿入モードから抜ける時に英数入力に切り替える を参考に、KeyRemap4MacBook を使って、ESCを押したらIMEを抜けるように設定。元のままだと、Ctrl+[ で抜けた時に効果が無いようだったので、private.xml ファイルに設定を追加した。 <root> <list> <item> <name>LeaveInsMode w</name></item></list></root>…

Python3 の数値型

お前ら、Python3 だと、みんな大好き全角数字使えるの知ってた? >>> int('100') 100 >>> int('100') 100 >>> int('100', 16) 256 ってことは、これがエラーになるのはバグじゃないか? >>> int('FF', 16) Traceback (most recent call last): File "<stdin></stdin>…

Macbook Air OS X 10.8.2 のふしぎ

Pythonで浮動小数点数を使って大きな値の計算をすると、 >>> 1e100 * 1e100 1e+200 >>> 1e200 * 1e200 inf >>> 1e200 ** 1e200 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range') >>> 1e1000 </module></stdin>…

Python 3.3 からの with 文

以前、Mockライブラリの説明記事 でこんなことを書いた。 コンテキストマネージャで patch() を使う場合、複数のオブジェクトを同時に置き換える時に def test(): with patch('testapp.func1') as m1: with patch('testapp.func2') as m2: with patch('testa…

Pythonで++i

この間、Pythonで変数のインクリメントないよね、って話がでた。こんなのだ。 i = 99 ++i print i ちなみに、Pythonでも ++i や --i と書くことはできる。書くことはできるが、Pythonでは ++ や -- はインクリメント/デクリメント演算子ではなく、単項の + …

Python3.3のdecimalが馬鹿っぱやい件

Python 3.3 では decimalモジュールがC言語で実装され、10進浮動少数演算が馬鹿っぱやになりました。単純なニュートン法で平方根を計算してみると、 def newton(n): guess = n/2 better = (guess + n/guess)/2 while better != guess: guess = better better…

PyConJP 2012 ハンズオン資料

PyCon JP 2012 hands-on FlaskによるWebアプリケーションの実装とプログラミングツール from Atsuo Ishimoto

Pandocでblockdiagを使う

最近、ドキュメント生成ツールとして Pandoc をちょっと試している。Markdownで手軽に書けて、reStructuredTextよりも好みだ。Pandocというのは「ドキュメント生成ツール」ではなく、正確に言えば「ドキュメント変換ツール」だ。MarkdownからHTMLやPDFへの変…

execとローカル変数

先日のPyCon JPで、私はまたもやってしまったのである。Hands on の講師という大役を引き受けておきながら、間違った演習用のスクリプトを書いてしまった。昔からの思い込みを元に、大雑把な実験だけで書いてしまったのである。何を間違えたかというと、Pyth…

PythonはDSLが苦手?

PythonはDSLが苦手でしょうか、って話をチラッと目にした。あんまりDSLって知らないけど、そんなに得意ってことはないんじゃないかと思う。Pythonってのは構文的に遊びが少ないように考慮して作られてるし、そもそもPythonは「実行可能な擬似コード」って言…

UbuntuのPyCharmでアンチアイリアスを有効にする

最近、買うんじゃなかったと思い始めているPyCharmですが、Ubuntuでアンチアイリアスを有効にする設定方法のメモ。[pycharm]/bin/pycharm.vmoption、または[pycharm]/bin/pycharm64.vmoptionに、以下の一行を追加する -Dawt.useSystemAAFontSettings=on

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制する について

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制するについてC言語の教科書にでも出てきそうなこんな基礎的なスクリプト import sys for l in sys.stdin: print l が動かない!って文句を言いたくなる気持ちは、非常によく理解できる。Unix的…

Cygwinのmintty上でコマンドプロンプトを開く

Cygwinをminttyで使っていて、本物のコマンドプロンプトでコマンドを実行する必要があるとき、いちいち別のコマンドプロンプトを開いてcdするのが面倒なときがある。こんなとき、 $ cygstart cmdとすると、cygwin上のカレントディレクトリでコマンドプロンプ…

python.jpの明日はどっちだ

最近「PYJUGって何なの?」「網元衆って何なの?」「何してるの?」「誰なの?」 って話を聞く機会が多いように思えます。 Pyjug-discussへの投稿も凄く減っていますし また網元衆が再編成されて5年も経っています。 外から見ていると、そろそろ運営が実態に…

Pythonのトレース情報を表示する disptrace ってのを作ってみた

Pythonには実行したスクリプトの行番号なんかを表示するtraceモジュールというのがあって、デバッグの時などうまく使うとデバッガでブレークポイント仕掛けるより効率的にデバッグできるときもあったりするんだけど、いまいち低機能で使いにくく、あんまり使…

Ubuntuをスリープさせても、マウスが動いただけで復帰してしまう件

最近、Thinkpad君にドッキングステーションをつけてデスクトップとしても使っているが、スリープ中ちょっとでも机にふれてマウスが動くとすぐ目を覚ましてしまう。敏感過ぎるだろ!夜泣き激しすぎて育児ノイローゼになるわ!っということで、Ubuntu 12.04 で…