2012-07-01から1ヶ月間の記事一覧
前回マクロ化した文字列変換処理にバグがあった。 Py関数でオブジェクトを生成すると、内部的に参照カウントがインクリメントされる。 使わなくなったオブジェクトへの参照カウントは明示的にデクリメントしなくてはならない。 Pythonオブジェクトは参照カウ…
pythonでいうunicode⇔string変換。 'ほげほげ'.decode('utf-8', 'ignore') u'ほげほげ'.encode('utf-8', 'ignore') 内部的にはunicodeはPyUnicodeObject, stringはPyStringObjectという構造体で管理してらっしゃる。この2つをCで楽に相互変換したい。ちなみ…
ユニコードを受け取ってutf-8文字列に変換する。これだけでも難しかった… #include <Python.h> /* モジュールの関数 */ static PyObject *hello(PyObject* self, PyObject *args, PyObject *kwds) { PyObject *first = NULL; PyObject *encoded = NULL; // PyObjectと</python.h>…
cソースはmingw使ってビルド。 #include <Python.h> /* モジュールの関数 */ static PyObject *hello(PyObject* self, PyObject *args) { printf("Hello World!!\n"); Py_RETURN_NONE; } /* モジュールのメソッドテーブル */ static PyMethodDef methods[] = { {"hello</python.h>…
日本語を扱う場合はfontファイルのパスを直値で設定するしかないのか?今のところそれ以外の解決方法が見つけられていないがメモ。 import matplotlib.pyplot as plt import matplotlib.font_manager as mng # MS ゴシック fProp = mng.FontProperties(fna…
ちょっと算数のめも。2x1 + 3x2 = 10 x1 + 6x2 = 20簡単である。だが、この場合はどうだろうか?2x1 + 3x2 = 10 x1 + 6x2 = 20 3x1 + 4x2 = 30変数が2つしかないのに式が3つとは一体。。算数やってたころはあまり意識しなかったがコレ、現実世界では普通に…