2012-01-01から1年間の記事一覧

[python]python-oauth2使用時にカンマ区切りのクエリでTwitter APIに失敗する件

Twitter APIのお話。 sitestream api, user look apiはユーザIDのリストをカンマ区切りで渡すが oauthモジュールだと%2C変換かかって失敗する。 %2Cを,にdecode backしたら上手くいったね! #encoding=utf-8 ''' inet.py ''' import sys import urllib from …

[python]python-oauth2使用時にカンマ区切りのクエリでTwitter APIに失敗する件

Twitter APIのお話。 sitestream api, user look apiはユーザIDのリストをカンマ区切りで渡すが urllib.urlencodeちゃんがカンマを%2Cに変換してくれちゃってBad request が返ってくる。 urlencodeのカンマ変換なし版を作った。差分はquote_plus()にsafe=','…

c拡張でPyUnicodeObject, PyStringObjectの相互変換を楽にする II

前回マクロ化した文字列変換処理にバグがあった。 Py関数でオブジェクトを生成すると、内部的に参照カウントがインクリメントされる。 使わなくなったオブジェクトへの参照カウントは明示的にデクリメントしなくてはならない。 Pythonオブジェクトは参照カウ…

c拡張でPyUnicodeObject, PyStringObjectの相互変換を楽にする

pythonでいうunicode⇔string変換。 'ほげほげ'.decode('utf-8', 'ignore') u'ほげほげ'.encode('utf-8', 'ignore') 内部的にはunicodeはPyUnicodeObject, stringはPyStringObjectという構造体で管理してらっしゃる。この2つをCで楽に相互変換したい。ちなみ…

c拡張でのunicode, strの扱い

ユニコードを受け取ってutf-8文字列に変換する。これだけでも難しかった… #include <Python.h> /* モジュールの関数 */ static PyObject *hello(PyObject* self, PyObject *args, PyObject *kwds) { PyObject *first = NULL; PyObject *encoded = NULL; // PyObjectと</python.h>…

Python C APiで拡張 on windows

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>…

matplotlibで日本語

日本語を扱う場合は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つとは一体。。算数やってたころはあまり意識しなかったがコレ、現実世界では普通に…

vimからgoogle docsを操作したい 〜その3〜

〜その2〜で作成したgoogle docsプラグインに致命的な問題発見。 ドキュメントをダウンロードで、改行のみの行が改行×2になって返ってくる。 どうやらGoogle docsの仕様のようです。 百練自得の極みかよ この人の真似して'\n\n'→'\n'置換をすることにした…

eggファイルのインスコ

python外部モジュールのインスコはsetuptoolsでコマンド一発ハイ楽チンコなんだが、eggファイルから直接インスコする場面に出くわしたのでメモ。 > easy_install hogehoge.egg 以上 w

vimからgoogle docsを操作したい 〜その2〜

出来ました。 gdata-python-client v2.0.17 使ってます。↓ http://code.google.com/p/gdata-python-client/downloads/list ■Pythonモジュール #encoding=utf-8 import os from gdata.docs.service import DocsService from gdata.data import MediaSource fr…

vimからgoogle docsを操作したい 〜その1〜

はてなプラグインに続いてgoogle docsとvimを連携させようじゃないの計画始動。 めんどくさがりやなので、テキストのみのUPLOAD/DOWNLOADに限定します。さて、text fileのアップロードとdocs一覧の取得を試しに実装してみた。 #encoding=utf-8 from gdata.do…

はてな記事の編集/投稿 with vim&python

仕事中に社外秘でない技術メモを取りたいと思ったとき、はてなにすぐに投稿する環境があれば便利じゃね?と思った。エディタはvim。vimならわざわざ自作せんでもプラグインあるだろー、と探したらhatena.vimなるものがあった。 https://github.com/motemen/h…

pythonでログ出力

pythonのロギング機能は挙動を色々設定できる。便利なんだが、大抵の人間はファイル出力してトラブった時に見るという使い方しかしないのでは?document見るのもめんどくせぇ、という方は↓のコードをpython pathの通ってるモジュールに置いとけば幸せになれ…

unicode変換の自動化

久々のメモ。python使っててunicode変換時に例外発生 → ぶちギレという経験はないだろうか。pythonのunicode変換を自動化しちゃおう。chardet使って文字コード自動判別の話ですな。chardetは外部モジュールなので、easy_install chardet なりなんなりで。 さ…