何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Python

『Real World HTTP』with Python

requestsを使ったら負けかなと思っている 『Real World HTTP』を読み始めたが、自分でも実際に書いてみるのもよいと思うのでPythonで書いてみた。 PythonのHTTPクライアントというと標準モジュールurllib.requestではなくrequestsが主流であるが、requestsを…

pipは何の略語なのか

pipとはPythonのパッケージ管理ツールである。 Python 3.4以降ではデフォルトでついてくる。 私がPythonに触り始めた学部生のころはまだeasy_installが現役であったが、今ではpip install -r requirements.txtで必要なサードパーティモジュールを仮想環境に…

cmathとmatplotlibでMandelbrot集合を描画する。

cmathに思いをはせて cmathモジュールの活用例を求めて色々と考えた後、まずはMandelbrot集合を書いてみようと思い立った。 Mandelbrot集合の定義はWikipediaを参照してほしい。 マンデルブロ集合 - Wikipedia 簡単に述べると、ある複素数列が収束する初期値…

cmathモジュールのジレンマ

無何有の郷へ Pythonには複素数を計算するための函数を収めた標準モジュールcmathが存在する。 9.3. cmath — 複素数のための数学関数 — Python 3.6.1 ドキュメント ドキュメントにはこのような一節がある。 mathと同じような関数が選ばれていますが、全く同…

PythonicではなくPythonesqueなクラスを書く その2

最近、いかに役に立たないプログラムを書くかということを考えている。

PythonicではなくPythonesqueなクラスを書く

It’s… プログラミング言語Pythonにおいて、Pythonらしい、といった概念をPythonicと呼ぶことがある。 Pythonicらしい書き方を知るにはZen of Pythonや『Effective Python』の第一章を参照すればその一端を知ることができる。 Effective Python ―Pythonプログ…

Pythonでバイナリ列から画像の種類を判別する

拡張子を信じたい人生であった。 画像ファイルがネットワークを介して飛んでくる。拡張子を信じて保存をしたいが、拡張子だけ書き換えたり中身が改ざんされているかもしれない。画像フォーマットごとにあるヘッダを読んで画像を識別したい。

Pythonのソートキーに何を渡すべきか

Pythonのリストの中身をソートしたい場合、list.sort()かsorted()を使う。 その際に何をキーとしてソートをするかをkey引数として渡すことができる。 よくある状況として、辞書を含むリストが存在し、辞書の特定のキーの値でソートしたい、という状況である…

第74回Python Mini Hack-a-thonに参加しました。

去る2017年3月25日に第74回Python Mini Hack-a-thonが行われた。 PyHackは第58回、第59回、第64回、第65回、第67回、第69回、第70回に参加している。 参加レポートがあるのは初参加の第58回のみである。もっと参加していたり、レポートを書いているつもりで…

文字列の類似度をPythonで計算する

文字列の距離 仕事で文字列の類似度を計算する必要があったのでちょっとだけ頑張ってみた。 要件として、2つの文字列が与えられ、その類似度を実数与える、類似度は0から1の間に収まる、である。 Cosine Similarity まず、最初に類似度と聞いて思い浮かべた…

Python 3.6 リリースパーティに参加しました

マイクを持って話す。これぞ文明の機器。 去る2017年1月31日にヤフージャパンにて「Python 3.6 リリースパーティ」が行われた。 pystudy.connpass.com 当初は一般参加のつもりであった。 石本さんのPython 3.6に関する一連のエントリを読んでクラス生成に関…

Python 3.6における『Effective Python』 項目35はこう変わる

項目35は言語に取り込まれた Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある、というのは前回の流れと同じ。 項目35「クラス属性をメタクラスで注釈する」はクラス定義後にプロパティを修正したり注釈を加える…

Python 3.6における『Effective Python』 項目34はこう変わる

項目34はかなりシンプルになる Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある、というのは前回の流れと同じ。 xaro.hatenablog.jp クラスが定義された際に自動で何らかの辞書に登録したいという場面でメタクラ…

Python 3.6における『Effective Python』 項目33はこう変わる

項目33「サブクラスをメタクラスで検証する」はこう書き換わる Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある。 PEP 487 -- Simpler customisation of class creation | Python.org か石本さんのエントリを参…

『アルゴリズムクイックリファレンス 第2版』の査読を担当しました

2016年12月24日にオライリージャパンから『アルゴリズムクイックリファレンス 第2版』の邦訳が発売される。この度、邦訳の査読者として参加させていただいた。

Pycon JP 2016 2日目に参加しました。

去る2016年9月22日に早大理工にてPyCon JP 2016の2日目が行われた。 PyCon JPには2014, 2015に続いて3回連続3回参加しているが2日目に参加したのは初めてである。 参加した講演の感想をまとめておきたい。 Keynote Andrey Vlasovskikh 前日の反省を生かして…

Pycon JP 2016 1日目のLTに登壇しました。

xaro.hatenablog.jp 去る2016年9月21日に早大理工にてPyCon JP 2016の1日目が行われた。 2014, 2015に続いて3回連続3回目の参加である。 何を思ったか、今回はLTに登壇するという暴挙に出た。 プレゼン 31分あたりから。恥ずかしすぎるので見れません。現実…

Pycon JP 2016 1日目に参加しました。

去る2016年9月21日に早大理工にてPyCon JP 2016の1日目が行われた。 2014, 2015に続いて3回連続3回目の参加である。 記憶が新鮮なうちに参加した講演の感想をまとめておきたい。 Keynote Jessica McKellar 会場入りするタイミングが悪く既に同時通訳がある席…

Pythonで巡る線型代数:ベクトルと行列篇

「はじめに」の前に これは以下のプロポーサルに沿ったエントリ(の予定です) pycon.jp ただ、あまり需要がなさそうなので取り下げる可能性が高いです。 ベクトル 定義 のように3個の数を一列に並べたものを3次元数ベクトルという。 一般に、のように個の数…

Pythonで巡る線型代数:準備篇

「はじめに」の前に これは以下のプロポーサルに沿ったエントリ(の予定です) pycon.jp はじめに 線型代数学は、数学のもっとも古い分野の一つでありながら、またもっとも新しいものの一つに数えられる。 Bourbaki『数学史』 線型代数は現代数学の基礎をな…

『Effective Python 読書会 #3』を開催しました

単調減少の恐怖 去る2016年5月28日に品川区立五反田文化センターにて『Effective Python 読書会 #3』を開催しました。 前回同様(会議室のキャパシティである)18人規模で開催し、10名の参加者でした。 発表者枠の無断キャンセルはさすがにつらい…。 項目25…

Slackに電卓を入れたい

をとこもすなるSlackといふものを をむなもしてみんとてするなり 世間ではSlackを活用したChatOpsという流れもあるなかで、Skypeすら全面的に禁止されている環境ではSlackなど望むことすらできなかった。 とはいえ、Slackは個人でも使えるので自分でやってみ…

『Effective Python 読書会 #2』を開催しました

2回目でした。 去る2016年4月23日に五反田にて『Effective Python 読書会 #2』を開催しました。 前回は一応30人規模でしたが、今回は18人規模で開催し、12名の参加者でした。 読書会ならばこの程度の規模がよさそうです。 よかったこと 無事開催できた 今回…

『Effective Python 読書会 #1』を開催しました

1週間以上前の出来事ですが… 去る2016年3月19日に代々木にて『Effective Python 読書会 #1』を開催しました。 きっかけは『Effective Python』邦訳版の「訳者あとがき」です。 この本の読み方としては読書会などもいいのではないかと感じました。 お互いに新…

Python Puzzler 「Puzzle 2: __iter__ VS. __getitem__」

Puzzle 2: __iter__ VS. __getitem__ イテラブルオブジェクトとは__iter__()または__getitem__()が定義されたクラスのことである。 次のプログラムでは半角英大文字をたどるイテレータを提供するイテラブルオブジェクトのクラスが定義されている。 以下を実…

Python Puzzler 「Puzzle 1: Once Read」

きっかけは紀伊國屋書店 紀伊國屋新宿で、『Scalaパズル』を見つけた。 Scalaパズル 36の罠から学ぶベストプラクティス作者: アンドリュー・フィリップス,ネルミン・セリフォヴィック,竹添直樹,島本多可子出版社/メーカー: 翔泳社発売日: 2016/02/05メディア…

亡きメーリングリストのための一節

404 Not Foundなんかじゃない。お亡くなりになったんだ。このメーリングリストは、この世を去ったの。停止したの。無意味なビット列になって、電子の海へ去っていった。これは「故メーリングリスト」。リンク切れ。サービスが止まって、永遠の眠りについてい…

『Effective Python』Item 36 訳注の補遺(のつもり)

過去にこのようなエントリを書いた。 掲載されている下記のコードがWindowsでは動かない、という内容であった。 def run_openssl(data): env = os.environ.copy() env['password'] = b'\xe24U\n\xd0Ql3S\x11' proc = subprocess.Popen( ['openssl', 'enc', '…

『Effective Python』の査読を担当しました

2016年1月23日にオライリージャパンから『Effective Python』の邦訳版が発売された。 この度、邦訳の査読者として参加させていただいた。 驚くべきことに査読者紹介として略歴まで掲載されている。 『Effective Python』の邦訳を世に出すべきだと思い淡々と…

第58回Python Mini Hack-a-thonに参加しました。

宿題その2に全く手をつけていない。pyhackでやろうかなとか目論んでいるけどまだ床枠なんだよねえ— XaroCydeykn (@CardinalXaro) 2015, 11月 3 ここで、宿題とは単なる隠語。現在、普段の仕事とは関係のない何かを2つ抱えている。 明日の #pyhack 、とうとう…

Pycon JP 2015 1日目に参加しました。

PyCon JP 2015が行われたのはもう先週のことである。今更感想など書いても需要がないかもしれないが思い出代わりに書いておく。 残念ながら、2日目は体調を崩してスプリント含め2日間寝込んでいた。現在は何とか復活したがカンファレンス2日目に参加できなか…

『Effective Python』Item 37: スレッドはブロッキングI/Oに使い、並列処理は避けよう

『Effective Python』の続き。不遇のWindows。 Effective Python › The Bookwww.effectivepython.com 人によってはGlobal Interpreter Lock(GIL) と聞くと嫌な思い出が蘇ることがあるのだろうか。 私は恥ずかしながら並列・並行プログラミング未経験というア…

『Effective Python』Item 36: 子プロセスを制御するためにsubprocessを使おう

『Effective Python』の続き。想像以上につらい。 Effective Python › The Bookwww.effectivepython.com Item 36から「Concurrency and Parallelism(並行と並列)」と題してPythonによる並行・並列プログラミングのコツを解説…となるのはよいが2つ問題があ…

『Effective Python』Item 35: メタクラスを使ってクラス属性に注釈をつけよう

『Effective Python』の続き。メタクラスとディスクリプタの華麗なる関係。 Effective Python › The Bookwww.effectivepython.com メタクラスの応用例、そしてChapter 4の最後を飾るのはクラス属性の注釈、またはメタクラスとディスクリプタの合わせ技の話で…

『Effective Python』Item 34: メタクラスを使ってクラスの存在を登録をしよう

『Effective Python』の続き。末端の人間頑張れメソッドダメ、ゼッタイ。 Effective Python › The Bookwww.effectivepython.com メタクラスの活用第二弾として、クラスの登録を挙げている。 PythonのオブジェクトをJSON文字列へシリアライズ、JSON文字列から…

『Effective Python』Item 33: メタクラスを使ってサブクラスの検証をしよう

『Effective Python』の続き。水際で防げ。 Effective Python › The Bookwww.effectivepython.com 『Effective Python』のChapter 4冒頭に筆者は次のように述べている。 Metaclass are often mentioned in lists of Python's features, but few understand w…

『Effective Python』Item 32: 属性の遅延評価には__getattr__, __getattribute__,__setattr__を使おう

『Effective Python』の続き。ナマケモノでいこう。 Effective Python › The Bookwww.effectivepython.com 遅延評価を__getattr__やgetattribute__、__setattr__で実現できますよ、という話。 __getattr__らは一般に、クラスの属性アクセスを制御するための…

『Effective Python』Item 31: 再利用可能な@propertyメソッドにはディスクリプタを使おう

『Effective Python』の続き。@propertyの限界を超えろ。 Effective Python › The Bookwww.effectivepython.com @propertyデコレータの欠点として再利用ができないというのがある。 テストの成績を管理するクラスを例に説明している。 class Exam(object): d…

『Effective Python』Item 30: 属性をリファクタリングする代わりに@propertyを検討しよう

『Effective Python』の続き。@property大好き一番好きなデコレータです! Effective Python › The Bookwww.effectivepython.com @propertyを使えばクラス全体をリファクタリングすることなく属性のリファクタリングができますよ、という話。 リーキーバケッ…

『Effective Python』Item 29: ゲッターやセッターの代わりに通常の属性を使おう

『Effective Python』の続き。ゲッターやセッターをPythonで実装しちゃうのは素人。 Effective Python › The Bookwww.effectivepython.com 今回からChapter 4「メタクラスと属性」に突入。 タイトルの順序はメタクラスが先であるが、しばらくは属性の話が続…

『Effective Python』Item 28: カスタムコンテナ型はcollections.abcから継承しよう

『Effective Python』の続き。足りないものを補うために。 Effective Python › The Bookwww.effectivepython.com 自作のコンテナを作る際にはlistとかから直接継承するのではなく、collections.abcから継承して作りましょうという話である。 次の二分木にリ…

『Effective Python』Item 27: プライベート属性よりもパブリック属性を使おう

『Effective Python』の続き。Pythonにプライベートなどない。 Effective Python › The Bookwww.effectivepython.com 「Pythonには、パブリックとプライベートという2つのクラス属性があります。(超訳)」からこのItemは始まるが、基本的にはパブリックを使い…

『Effective Python』Item 26: 多重継承はMix-inユーティリティクラスでのみ使おう

『Effective Python』の続き。多重継承は日の目を見るか。 Effective Python › The Bookwww.effectivepython.com 多重継承は一般的に避けましょうとしつつ、どうしても使いたい場合はMix-inを検討しましょうという話である。 Mix-inというとRubyが思い浮かぶ…

『Effective Python』Item 25: 親クラスの初期化にはsuperを使おう

『Effective Python』の続き。親の顔を見てみたい。 Effective Python › The Bookwww.effectivepython.com 子クラスのインスタンスから親クラスの初期化をしたい場合はsuper使え、というタイトルオンリーな話。 クラス階層のメソッドの検索順序はMethod Reso…

『Effective Python』Item 24: ジェネリックなオブジェクト構築には@classmethodポリモーフィズムを使おう

『Effective Python』の続き。__init__のポリモーフィズム? Effective Python › The Bookwww.effectivepython.com Googleに勤務する筆者らしく、MapReduceの構築を例にジェネリックなオブジェクト構築を説明している。 ハードディスク上の巨大なファイルの…

『Effective Python』Item 23: 単純なインタフェースではクラスの代わりに関数を受けよう

『Effective Python』の続き。Callableなクラスも。 Effective Python › The Bookwww.effectivepython.com listのsortメソッドやcollections.defaultdictのdefault_factoryに渡すような函数についての話。 他の言語だとフックを実現するには抽象クラスを定義…

『Effective Python』Item 22: 辞書やタプルで保持するよりもヘルパークラスを使おう

『Effective Python』の続き。リファクタリング! Effective Python › The Bookwww.effectivepython.com Pythonの辞書は便利だなあと思いつつ、次から次へと湧いてくる仕様変更・追加機能に対応していくと酷い目に合う。 生徒の成績を管理するコンテナを作る…

『Effective Python』Item 21: キーワード専用引数で関数をわかりやすくしよう

『Effective Python』の続き。Chapter2.の最後を飾るのはキーワード専用引数。 Effective Python › The Bookwww.effectivepython.com 割り算で、オーバーフローとかゼロ除算を無視して扱いたい、という場合、以下の様な気のきいたオプション付きの函数が書け…

『Effective Python』Item 20: 動的デフォルト引数ではNoneとドキュメンテーション文字列を使おう

『Effective Python』の続き。デフォルト引数の評価は作成時一度のみ。繰り返しませんのでどうか皆様Noneを使ってdocstringをお書きください。 Effective Python › The Bookwww.effectivepython.com 前回『Effective Python』Item 19: キーワード引数でオプ…

Pythonで函数の型チェック

先日、 第6回Python文法詳解を詳解する会に参加した。 python-in-depth.connpass.com デコレータと聞いたので、予習としてデコレータによる型チェック機能をPythonで実装した。 引数とアノテーションに関する情報はinspectモジュールで取得、逐一isinstance…