はじめに こんにちは、Python界の情弱です。最近C/APIを使ってモジュールを書くブームがきているわけですが、まあPythonで文字列を扱うのが大学3年の嫌々やった演習以来ということで全然出来ない。というわけでハマったところをメモしました。特にメモリ周りはC/APIならではのポイントも有りました。 危険なコード 次のコードが色々と危険をはらんでいるのでキチンと対応する必要があると教わった。 buffer = realloc(buffer, old_size * 2); reallocに関する注意 失敗する可能性 reallocは失敗するとNULLになってしまい、その時realloc前にmallocされた領域は解放されないままになってしまうので、freeする術がなくなってしまう。必ず戻り値をチェックすること。まして上記のようなコードにしてしまうと、もとのアドレス触れなくなってしまうので絶
動機 ふと思い立った。簡単なサンプルを書いたつもりだったけど、思わぬところでちょっとはまったからメモ。 方法 サンプルコード 基本的にはこちらの写経。 PythonからCプログラムを呼び出す | 象歩 Cのラッパを書いたのは2度目だけど、前回はバインディング部分はほとんど書いてなかったし、そもそもMacではなかったんで今回は新鮮。コードは上記サイトがなくなった時のために写させてもらいます。 test.c #include <stdio.h> int add(int x, int y) { return x + y; } void out(const char* address, const char* name) { printf("こんちはー、おいどんは%sの%sです。\n", address, name); } testWrapper.c #include "Python.h" ext
はじめに こんにちは、Python界のSIGTERMです。先日CPython 3.2ソースコードリーディングに参加して「そもそもソース読む前にC/APIの書き方わかってないとだめだな」と痛感したので手習い的に書き始めてみました。題材は今や絶賛サンプルパッケージとしておなじみの bucho をC/APIで書きなおした cbucho です。 書き散らかしたもの cbucho 0.0.3 : Python Package Index PyPIへのリンク ymotongpoo/cbucho · GitHub GitHubのレポジトリ 参考 とりあえず公式ドキュメントと既存のソースを読めばいいと思います。 Python インタプリタの拡張と埋め込み — Python 2.7ja1 documentation Python/C API リファレンスマニュアル — Python 2.7ja1 docum
pythonでいうunicode⇔string変換。 'ほげほげ'.decode('utf-8', 'ignore') u'ほげほげ'.encode('utf-8', 'ignore') 内部的にはunicodeはPyUnicodeObject, stringはPyStringObjectという構造体で管理してらっしゃる。この2つをCで楽に相互変換したい。ちなみに、デコードはこんな感じになる。 char *str = "ほげほげですよ"; PyUnicode_Decode(str, strlen(str), "utf-8", "ignore"); 長いw マクロ化しちゃいます。 #ifndef __COMMON_H__ #define __COMMON_H_ #define DEBUG #ifdef DEBUG #define LOG printf #else #define LOG #e
生きていればつらいことがある。 しかし、つらいからと言って簡単に投げ出す事は出来ないということも多い。 みなさんもつらまってる時、よく宮崎あおいを見ると思う。 当然のごとく僕もそうである。 最近つらい事がよくある。 そんな時のために、宮崎あおいを素早く表示する必要があった。 なので、宮崎あおいをすぐ見れるGoogle Chromeの拡張を作った。 「だめだ。もうやってらねー」って時は、空の tab を表示すればすぐ宮崎あおいに会える。最高。結婚したい。 chrome-tumblr-tile from soh335 on Vimeo. soh335/chrome-tumblr-tile · GitHub option で apiKey と 表示したい tumblr の hostname を設定すれば色々見られます。 本当はからっぽ を表示するのも良いと思います。 合わせて読みたい すぐに吉高
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く