Python.jp SlackからDiscordへ

これまで、python.jp ではSlackチームを用意していたが、こちらの利用は取り止めて、Discord に移行することにした。 書き込みはそれほどなかったものの、Python.jpチームには、約1000アカウントが登録されていた。そこそこな規模だろう。Slack->Discordへの…

Dell XPS 13 (9370) に Ubuntu 16.04 をインストールした

Dell XPS 13 (9370) の全部入り( i7-8550U・4Kタッチパネル・1TB SSD ・16 GBメモリ) を購入した。 これまでのところ、思ったより使い勝手がよい。キーボードはいい感じだし、パームレストのカーボンファイバも触り心地が良い。 液晶は非光沢がなくて光沢の…

hashlibのハッシュアルゴリズム、計算速度ってどのぐらい差があるの選手権

雑に図ってみた (Python 3.6.4) 対象ファイル: 画像ファイル約20000件(2GB弱) アルゴリズム 処理時間(秒) ファイル読み込み時間は含まず md5 2.536 sha1 1.798 sha256 3.873 sha384 2.591 sha512 2.626 まとめ sha1はええ。md5そんな速くねえ。sha512とそん…

Python/CFFIでCUDAしてみる

ふと思い立って、CUDAでCPUからGPUにデータを転送する時の速度を測ってみた。 普通にCUDA SDKのサンプルで測定しても良いが、PythonのCFFI で実行してみよう。 コードはこんな感じで書ける。 import time import sys from cffi import FFI ffi=FFI() ffi.cde…

クラスブロックのひみつ

さて、 リスト内包のひみつ - atsuoishimoto's diary で、Python3では、リスト内包式は関数呼び出しとなることを説明した。 >>> a = [i*2 for i in range(3)] というスクリプトは、次のように展開される。 >>> def _listcomp(_it): ... ret = [] ... for i i…

リスト内包のひみつ

こちらのTweetが Python.jp slack でちょっと話題になっていた。 どういうこと? pic.twitter.com/BxyyWbyvQo— ahuglajbclajep (@ahuglajbclajep) 2018年1月24日 次のようなコードだ >>> a = [lambda: print(i) for i in range(3)] >>> for i in a: i() 2 2 …

Python文法詳解(二刷) 正誤表

以下の正誤表は、二刷のものです。一刷の正誤表は Python文法詳解(一刷) 正誤表 - atsuoishimoto's diary を参照してください。 第1章 P.1 誤 >>> 1 + 1j # 整数 + 複素数 (1+2j) # 結果は複素数となる 正 >>> 1 + 1j # 整数 + 複素数 (1+1j) # 結果は複素数…

Pythonのfor文は遅い?

bicycle1885.hatenablog.com こちらの記事を拝見していて、ちょっと気になったので注釈。 PythonやRを使っている人で、ある程度重い計算をする人達には半ば常識になっていることとして、いわゆる「for文を使ってはいけない。ベクトル化*1しろ。」という助言…

GitLab PagesのDeployが失敗する場合の対処方法

GitLab Pages にドキュメント生成するたびに同じ落とし穴にハマるので、ここに記しておく。 GitLab Pagesにドキュメントを生成すると、ビルドが成功しても、その後のDeployが失敗する場合がある。 この問題は次のチケットでGitLabに報告済みで、もうすでにCl…

ダイクストラおばちゃん

最近、偶然プログラミング初心者に接する機会が続いた。初心者にもいろいろあるが、中でも印象深い女性のことを思い出したので書いておきたい。 大昔、ちょっとした業務改善のシステムを開発することになって、実際にその業務を行っている事務や経理の方々に…

API star - Python3用 Web API framework

最近何度か名前を目にした Webアプリケーションフレームワーク API Star を試してみた github.com まだ開発中のフレームワークだが、Pythonの型アノテーションをうまく利用して、Web APIを簡単に開発できるようになっている。 インストール githugからソース…

tse 0.0.15リリース

tse 0.0.15をリリースした。 組み込み関数 P() を追加 Python3以降では、print(...) の代わりに P(...) と書けるようにした。 コマンド置換 Python3以降では、`command` で コマンドとして command を実行するようにした。 例: $ tse -b 'P(`ps`)' PID TTY T…

静的サイトジェネレータ Miyadaiku

ここ数年、www.python.jp は、 Pelican を使って構築していた。 Pelican は実績のある静的サイトジェネレータで使いやすくはあるが、基本的にはBlogサイトの構築ツールであり、あまり柔軟性や拡張性には重点を置かれていないように感じていた。www.python.jp…

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文法詳解(一刷) 正誤表

以下の正誤表は、一刷のものです。二刷の正誤表は Python文法詳解(二刷) 正誤表 - atsuoishimoto's diary を参照してください。 第1章 P.1 誤 次のようなというカテゴリーになるでしょう 正 次のようなカテゴリーになるでしょう 第2章 P.18 誤 >>> 10 // 3 3…

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が必修科目だった昔とは…