2009年12月27日日曜日
2009年12月22日火曜日
ubuntuでunicodeコード入力
ubuntu9.10ではiBusが標準になっているが使いにくい。
とりあえず、まず、SCIMにしよう。
1)日本語環境セットアップヘルパで「scim-anthy」 「SCIMとAnthyによる日本語入力」をチェック
2)システム->システム管理->言語サポートで「キーボード入力に使うIMシステム」でscimを選択
3)一度ログアウトして再度ログイン
SCIMで「その他-RAW CODE」を選択
これでunicode入力ができる
とりあえず、まず、SCIMにしよう。
1)日本語環境セットアップヘルパで「scim-anthy」 「SCIMとAnthyによる日本語入力」をチェック
2)システム->システム管理->言語サポートで「キーボード入力に使うIMシステム」でscimを選択
3)一度ログアウトして再度ログイン
SCIMで「その他-RAW CODE」を選択
これでunicode入力ができる
2009年12月16日水曜日
PDFからTEXTの抽出
ロックのかかっていないPDFファイルからテキストを抽出するのはacroreadで
ファイル(F)->テキストとして保存(V)
optionでCUIからできないかと思ったが-toPostScriptでPSファイルにできるだけでした。
ちなみにそのPDFファイルはpdftotextではちゃんと抽出できませんでした。
ファイル(F)->テキストとして保存(V)
optionでCUIからできないかと思ったが-toPostScriptでPSファイルにできるだけでした。
2009年12月8日火曜日
2009年12月5日土曜日
meldで差分を見る。subversion
subversionの差分をmeldで見るには?
ここが詳しい。
まんまコピーです。ごめんなさい。
~/.subversion/configファイルを編集
P.S. windowsだとここが詳しい。
c:\Documents and Settings\admin\Application Data\Subversion\config
ここが詳しい。
まんまコピーです。ごめんなさい。
~/.subversion/configファイルを編集
~/bin/svn-diff-meldファイルを作成[helpers] diff-cmd = /home/torutk/bin/svn-diff-meld diff3-cmd = /home/torutk/bin/svn-diff3-meld diff3-has-program-arg = false
~/bin/svn-diff3-meldファイルを作成#!/bin/sh # SVN diff wrapper for meld left="$6" right="$7" meld "$left" "$right"
#!/bin/sh # SVN diff3 wrapper for meld mine="$9" older="$10" yours="$11"
meld "$mine" "$older" "$yours"
P.S. windowsだとここが詳しい。
c:\Documents and Settings\admin\Application Data\Subversion\config
2009年12月2日水曜日
2009年11月24日火曜日
2009年11月13日金曜日
FireFoxがよく落ちるのは朝日新聞のせい?
最近気がついたけれど、FireFoxがよく落ちるのは朝日新聞のサイトが開かれているとき。
Flash使いすぎか?
環境はUbuntu9.10, Firefox3.5.5
Flash使いすぎか?
環境はUbuntu9.10, Firefox3.5.5
2009年11月11日水曜日
ubuntu9.10でgrub編集+FreeBSDデュアルブート
grub1.97~betaでは、設定が/boot/grub/menu.lstから/etc/default/grubに変わったようです。
こことここが詳しい。
sudo gedit /etc/default/grub
1)デフォルト起動
GRUB_DEFAULT=0
2)起動までの時間
GRUB_TIMEOUT="10"
追記:FreeBSDは自動で認識してくれないみたいなので、2番目のここを参考にして、/etc/grub.d/40_customにでも
menuentry "FreeBSD 7.2-RELEASE i386" {
set root=(hd0,2)
chainloader +1
}
としてやればイイミタイ。ディスクの番号は自分の環境に合わせて下され。
最後にupdate-grub2を忘れないように。
こことここが詳しい。
sudo gedit /etc/default/grub
1)デフォルト起動
GRUB_DEFAULT=0
2)起動までの時間
GRUB_TIMEOUT="10"
追記:FreeBSDは自動で認識してくれないみたいなので、2番目のここを参考にして、/etc/grub.d/40_customにでも
menuentry "FreeBSD 7.2-RELEASE i386" {
set root=(hd0,2)
chainloader +1
}
としてやればイイミタイ。ディスクの番号は自分の環境に合わせて下され。
最後にupdate-grub2を忘れないように。
2009年11月9日月曜日
wxWidgetsをVC++
error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
と言うエラーが出たら、cmakelists.txtで add_executableにWIN3を追加
add_executable (hoge WIN32 ${hoge_SRCS})
と言うエラーが出たら、cmakelists.txtで add_executableにWIN3を追加
add_executable (hoge WIN32 ${hoge_SRCS})
2009年11月6日金曜日
2009年11月4日水曜日
Python開発環境を整えよう
システム全体にパッケージをインストールしたくないときは「Python開発環境を整えよう」を参考にしていたけれどubuntuだとpython2.6ではdist-packagesになっているのでvirtual-pythonがそのままでは使えない。こんな時はvirtualenvを使うといいらしい 。
virtualenv-1.3.4.tar.gzを取ってきて解凍。python ./virtualenv ENVでインストールできる。ENVは入れたいところを指定しよう。
source ENV/bin/activateを~/bash_mine辺りに設定すればOK
P.S. ここの方が詳しい。
virtualenv-1.3.4.tar.gzを取ってきて解凍。python ./virtualenv ENVでインストールできる。ENVは入れたいところを指定しよう。
source ENV/bin/activateを~/bash_mine辺りに設定すればOK
P.S. ここの方が詳しい。
ubuntu9.10日本語環境構築
Ubuntu 9.10 Desktop 日本語 Remix CD リリースのまえにインストールしてしまったので日本語環境構築しなければならない。
Ubuntuの日本語環境を参考にしてと。方法2ではじめたが面倒くさいのでシェルスクリプトにしました。適当にファイルに書き出して、実行権限くれてやればOK
#!/bin/sh
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/karmic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop-ja
gksu ubuntu-ja-setup-helper
Ubuntuの日本語環境を参考にしてと。方法2ではじめたが面倒くさいのでシェルスクリプトにしました。適当にファイルに書き出して、実行権限くれてやればOK
#!/bin/sh
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/karmic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop-ja
gksu ubuntu-ja-setup-helper
2009年10月28日水曜日
Boost Python VC++
cmakeでboost pythonを使うとき、
find_package( Boost COMPONENTS python ... )
とやるとVC++ではリンクできないとわめく。
set(Boost_USE_STATIC_LIBS OFF)
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINTIIONS})
としておくとやめる。
しかし、開発中のものでVC++ではエラーが出ないがgcc on UbuntuでコンパイルしたBoost Pythonが動かない。
Python argument types in .... did not match C++ signature: .... と出やがる。
追記:pythonをリンクさせることを忘れていました。トホホ
2009年10月17日土曜日
Boost::Pythonでmember function overloadを使う術
Boost::Pythonでmember function overloadを使うには、
class gaga
{
public:
void get(void);
void get(const int pos);
};
とすると
boost::python::class_("TvtkTranslation")
.def("get", (void (gaga::*)(void) ) &gaga::get)
.def("get", (void (gaga::*)(const int &) ) &gaga::get)
;
class gaga
{
public:
void get(void);
void get(const int pos);
};
とすると
boost::python::class_
.def("get", (void (gaga::*)(void) ) &gaga::get)
.def("get", (void (gaga::*)(const int &) ) &gaga::get)
;
2009年9月28日月曜日
2009年9月14日月曜日
VTKでアニメーション
ここを参考にすると、
1)vtkAnimationSceneがvtkAnimationCueのコレクションクラスで全体を統括。
2)vtkAnimationCue1つ1つがそれぞれの動きの時間管理を受け持つ。
3)それぞれの動きはvtkCommandを継承したクラスで行う。
vtkCommandのvirtual void Execute (vtkObject *caller, unsigned long eventId, void *callData);をvtkAnimationCueが設定にしたがって呼んで、その内容で
vtkCommand::StartAnimationCueEvent(セットアップ)
vtkCommand::EndAnimationCueEvent(終了処理)
vtkCommand::AnimationCueTickEvent(動き)
に分岐させる。
追記:上記サンプルではわざわざCueAnimatorと言うクラスを作っているけれども、いらないと思う。vtkCommandを継承したクラスに押し込めば十分。第一、vtkObjectを継承していないのもなんだかな。
1)vtkAnimationSceneがvtkAnimationCueのコレクションクラスで全体を統括。
2)vtkAnimationCue1つ1つがそれぞれの動きの時間管理を受け持つ。
3)それぞれの動きはvtkCommandを継承したクラスで行う。
vtkCommandのvirtual void Execute (vtkObject *caller, unsigned long eventId, void *callData);をvtkAnimationCueが設定にしたがって呼んで、その内容で
vtkCommand::StartAnimationCueEvent(セットアップ)
vtkCommand::EndAnimationCueEvent(終了処理)
vtkCommand::AnimationCueTickEvent(動き)
に分岐させる。
追記:上記サンプルではわざわざCueAnimatorと言うクラスを作っているけれども、いらないと思う。vtkCommandを継承したクラスに押し込めば十分。第一、vtkObjectを継承していないのもなんだかな。
2009年9月11日金曜日
cmakeでcuda
cudaではコンパイラに色々食わせなければならない。ああ面倒くさい。と言うわけでcmakeで使えるモジュール探してみました。ありました。FindCuda。
svn co https://gforge.sci.utah.edu/svn/findcuda/trunk FindCUDA
でチェックアウト
/FindCUDA/CMake/cuda/の下の
FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake
をcmake/share/cmake-2.6/Modules/の下にコピー
ちゃんと動くかどうかは、チェックアウトしたモジュール(FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake)を削除して/FindCUDA/で cmake . && make ビルドできればOK
svn co https://gforge.sci.utah.edu/svn/findcuda/trunk FindCUDA
でチェックアウト
/FindCUDA/CMake/cuda/の下の
FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake
をcmake/share/cmake-2.6/Modules/の下にコピー
ちゃんと動くかどうかは、チェックアウトしたモジュール(FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake)を削除して/FindCUDA/で cmake . && make ビルドできればOK
2009年9月2日水曜日
cuiからcmake in Win32
win32ではcmakeにはguiが装備されているけれど毎回guiを起動してやるのな面倒くさいときcuiからprojectを生成してみよう。
1)まず、Cmake\binにpathを通す。
2)目的のpathへ移動。私はよく最上位のディレクトリの下にbuildディレクトリを作ってそこでプロジェクトの作業をします。
3)目的のpathをめがけて私の場合はcmake ..とすればguiと同じように出来上がり。
追記:WIN32ならGUIを起動することもできるぞ。複数のプロジェクトを扱っているとGUIを単独で起動すると、前に使ってたプロジェクトを覚えているからソースやどこに作成するか一々入力しなければならない。その点CUIからCMakeSetup.exe ..としてやればやりたいプロジェクトがすぐ起動できる。wxWidgetsでunicodeを使おうとするとGUI使って、/D_UNICODEを指定しなければならないので重宝する。
1)まず、Cmake\binにpathを通す。
2)目的のpathへ移動。私はよく最上位のディレクトリの下にbuildディレクトリを作ってそこでプロジェクトの作業をします。
3)目的のpathをめがけて私の場合はcmake ..とすればguiと同じように出来上がり。
追記:WIN32ならGUIを起動することもできるぞ。複数のプロジェクトを扱っているとGUIを単独で起動すると、前に使ってたプロジェクトを覚えているからソースやどこに作成するか一々入力しなければならない。その点CUIからCMakeSetup.exe ..としてやればやりたいプロジェクトがすぐ起動できる。wxWidgetsでunicodeを使おうとするとGUI使って、/D_UNICODEを指定しなければならないので重宝する。
2009年8月25日火曜日
Boost::Pythonでshared_ptrを使う術
Boost::Pythonでshared_ptrを使うには、先に宣言しよう。
BOOST_PYTHON_MODULE(gaga)
{
boost::python::register_ptr_to_python<boost::shared_ptr >();
boost::python::class_("gigi")
.def("gugu", &gugu)
;
...
...
}
BOOST_PYTHON_MODULE(gaga)
{
boost::python::register_ptr_to_python<boost::shared_ptr
boost::python::class_
.def("gugu", &gugu)
;
...
...
}
2009年8月22日土曜日
Boost::Python
Boost::Pythonはソースに手を入れなければならないと思われているがそんなことはない。サンプルがそのようであるからで、実際にはヘッダーファイルをインクルードしたラッパーを書けば1丁上がりである。元になるライブラリがDLLならラッパーだけのDLLができてライブラリのDLLを読みに行ってくれる。すなわち軽量。しかもラッパーはC++のソースだからわかりやすい。Python以外のLLにポートしないのならSwigよりおすすめです。
2009年8月20日木曜日
Boost::Pythonに泣く
pythonの拡張をC++でしようと思ってubuntuでやっていたことをVC++に持っていくとpython25.dllがないと怒られた。そんなもん使ってないのになんでいるんだとしばらく毒づいていた。
ふと気づいて、dependencywalkerで見てみると、なんとboost::pythonのライブラリが依存していた。そうそう、このライブラリ構築したのはpython25のときでした。「スマンカッタ。」
そこでboostライブラリの再構築。しかし時間かかるなーあ。complete指定だと優に1時間かかったが、こんどはエラー吐かなくなった。目出度しめでたし。
ふと気づいて、dependencywalkerで見てみると、なんとboost::pythonのライブラリが依存していた。そうそう、このライブラリ構築したのはpython25のときでした。「スマンカッタ。」
そこでboostライブラリの再構築。しかし時間かかるなーあ。complete指定だと優に1時間かかったが、こんどはエラー吐かなくなった。目出度しめでたし。
2009年8月13日木曜日
2009年8月8日土曜日
pythonのsetup.pyにswigでC++のオプションを付けるの術
from distutils.core import setup, Extension
setup(
ext_modules = [
Extension('_example', ['example.i', 'example.cxx', 'sample.cxx'],
library_dirs=[],
libraries=[],
extra_compile_args=[],
extra_link_args=[],
swig_opts=["-c++"],)
])
setup(
ext_modules = [
Extension('_example', ['example.i', 'example.cxx', 'sample.cxx'],
library_dirs=[],
libraries=[],
extra_compile_args=[],
extra_link_args=[],
swig_opts=["-c++"],)
])
VS2005でpythonの拡張を行うの術(まとめ)
prebuildされたpython25はVS7.1、python26はVS2008でコンパイルされているためVS2005しか持っていないときはsetup.pyでbuildすることはできない。(たぶん)
これを回避するには、
1)VS2005でdllを作ってしまう。
2)mingwを導入する
3)VS7.1もしくはVS2008を導入する。
4)sourceよりpythonをコンパイルして自分の物とする。
と言う方法が考えられる。
ここでは1)についてまとめる。
手順は次のとおり。
1)VS2005でdllを作成できるようにする。(以前のエントリが少し助けになる。)
2)dllを作成し、名前を[package_name].pydに変更する。
3)C:Python26/DLLsの下に[package_name].pydと[package_name].py置く。
4)importしてみる。
おまけ。
prebuildされたpythonにはpython26_d.libは含まれていない。C,C++でpythonインタープリターを使いたいときdebugが必要なら、sourceを引っ張ってきてコンパイルしてできたpython26_d.libをC:Python26/libsの下へ入れればよい。
これを回避するには、
1)VS2005でdllを作ってしまう。
2)mingwを導入する
3)VS7.1もしくはVS2008を導入する。
4)sourceよりpythonをコンパイルして自分の物とする。
と言う方法が考えられる。
ここでは1)についてまとめる。
手順は次のとおり。
1)VS2005でdllを作成できるようにする。(以前のエントリが少し助けになる。)
2)dllを作成し、名前を[package_name].pydに変更する。
3)C:Python26/DLLsの下に[package_name].pydと[package_name].py置く。
4)importしてみる。
おまけ。
prebuildされたpythonにはpython26_d.libは含まれていない。C,C++でpythonインタープリターを使いたいときdebugが必要なら、sourceを引っ張ってきてコンパイルしてできたpython26_d.libをC:Python26/libsの下へ入れればよい。
cmakeでリンクするファイルをdebugとreleaseでカエルの術
昨日のエントリから
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
とそれぞれのライブラリにdebugもしくはoptimizedをつければよい。
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
とそれぞれのライブラリにdebugもしくはoptimizedをつければよい。
2009年8月6日木曜日
windows上でC++でpython拡張するの術
example.i, example.h, example.cppを作ってコマンドラインから
Cだけなら
$ swig -python example.i
C++なら
$ swig -c++ -python example.i
とすると
example_wrap.cxx
とexample.pyができる。
CMakeList.txtにむにゃむにゃと
#-----------------------------------------------------------------------------
set (BoostPython_SRCS
example.cxx
example.h
example.i
example_wrap.cxx
)
#-----------------------------------------------------------------------------
add_library(example SHARED ${BoostPython_SRCS})
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
target_link_libraries(example boost_python-vc80-mt-gd-1_39 ${PYTHON_LIBRARIES} )
#-----------------------------------------------------------------------------
何てやってから、ビルドするとexample.dllができる。
できたexample.dllを_example.pydと名前を変えてC:Python26/DLLsの下に置く。
ついでにexample.pyもそこへ置く。
後は、
$ python
>>>import example
>>>
と読み込めればOK
VS2005でコンパイルしてもOK
Cだけなら
$ swig -python example.i
C++なら
$ swig -c++ -python example.i
とすると
example_wrap.cxx
とexample.pyができる。
CMakeList.txtにむにゃむにゃと
#-----------------------------------------------------------------------------
set (BoostPython_SRCS
example.cxx
example.h
example.i
example_wrap.cxx
)
#-----------------------------------------------------------------------------
add_library(example SHARED ${BoostPython_SRCS})
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
#-----------------------------------------------------------------------------
何てやってから、ビルドするとexample.dllができる。
できたexample.dllを_example.pydと名前を変えてC:Python26/DLLsの下に置く。
ついでにexample.pyもそこへ置く。
後は、
$ python
>>>import example
>>>
と読み込めればOK
VS2005でコンパイルしてもOK
2009年7月29日水曜日
vtkImagePlaneWidgets
vtkImagePlaneWidgetsでvtkCellPickerで取得した値がwindowの下に隠れて見えない。
しかたがないのでソースを読むが分からんかった。
対症療法だが、GenerateText()メソッドの中の
coord->SetValue(.01, .01);
を
coord->SetValue(0.01, 0.05);
に変えて見えるようになった。
と思ったら、別のパネルに貼り付ける奴では普通に見えた???
このクラスの問題ではないか???
しかたがないのでソースを読むが分からんかった。
対症療法だが、GenerateText()メソッドの中の
coord->SetValue(.01, .01);
を
coord->SetValue(0.01, 0.05);
に変えて見えるようになった。
と思ったら、別のパネルに貼り付ける奴では普通に見えた???
このクラスの問題ではないか???
2009年7月14日火曜日
BOOST_PP_SEQ_ELEM_III error
これもしばらく苦しんだのでメモ
"BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given とでたら、
BOOST_PP_SEQ_ELEMを遅延評価に。
BOOST Archives参照
"BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given とでたら、
BOOST_PP_SEQ_ELEMを遅延評価に。
BOOST Archives参照
2009年7月13日月曜日
2009年7月11日土曜日
boost::preprocessor nested seq
しばらく苦しんだのでメモ。
boost::preprocessorで入れ子のコンテナ例えばシーケンスのシーケンスを処理するとき同じマクロを2度使えない。
#define SEQ ((Red)(Blue))((Blue)(Red))((Black)(White))((While)(Black))
を処理しようとすると、
○
#define INNER_MACRO(r, data, i, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH_I(INNER_MACRO, _, elem)
BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)
×
#define INNER_MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH(INNER_MACRO, _, elem)
BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)
VC++で確認するには
cl /EP/ /I c:\Boost\include\boost-1_39 .\test.h
おまじない
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
も忘れないように。
追記:IDEからはプロジェクトのプロパティ->プリプロセッサ->前処理済みのファイル生成=>行番号なし、で確認できる。
boost::preprocessorで入れ子のコンテナ例えばシーケンスのシーケンスを処理するとき同じマクロを2度使えない。
#define SEQ ((Red)(Blue))((Blue)(Red))((Black)(White))((While)(Black))
を処理しようとすると、
○
#define INNER_MACRO(r, data, i, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH_I(INNER_MACRO, _, elem)
BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)
×
#define INNER_MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH(INNER_MACRO, _, elem)
BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)
VC++で確認するには
cl /EP/ /I c:\Boost\include\boost-1_39 .\test.h
おまじない
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
も忘れないように。
追記:IDEからはプロジェクトのプロパティ->プリプロセッサ->前処理済みのファイル生成=>行番号なし、で確認できる。
2009年6月12日金曜日
vtkコンパイルエラー
新しく5.4.2が出たけれども相変わらずコンパイルエラーが出るのでメモ
tif_fax3sm.c: Cannot create output file.と出たら。
chmod +w ./VTK/Utilities/vtktiff/tif_fax3sm.c
http://www.vtk.org/Bug/view.php?id=7813
tif_fax3sm.c: Cannot create output file.と出たら。
chmod +w ./VTK/Utilities/vtktiff/tif_fax3sm.c
http://www.vtk.org/Bug/view.php?id=7813
2009年6月11日木曜日
マクロの設置場所 (pythonでOpenOffieをあやつる。)
pythonで作成したマクロは
$HOME./.openoffice.org/3/user/Scripts/の下にpythonを掘って入れよう。
$HOME./.openoffice.org/3/user/Scripts/の下にpythonを掘って入れよう。
pythonでOpenOffieをあやつる。
spreadsheetをCSVにしようとはじめたが嵌まった。なんぼやってもplane textで保存できなかった。
保存するときの引数を渡すときそれぞれがオブジェクトだということを忘れてました。
結局こう
saveProperty=[]
p=PropertyValue()
p.Name="FilterName"
p.Value="Text - txt - csv (StarCalc)"
saveProperty.append(p)
p=PropertyValue()
p.Name="FilterOptions"
p.Value="44,34,76,1"
saveProperty.append(p)
p=PropertyValue()
p.Name="SelectionOnly"
p.Value=True
saveProperty.append(p)
doc.storeToURL(unohelper.systemPathToFileUrl(fname), tuple(saveProperty))
ちなみにpythonでoooを操るときはそっけなくてあちこち行かなければならないAPIみるよりhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.xhtmlのほうがましかも。
保存するときの引数を渡すときそれぞれがオブジェクトだということを忘れてました。
結局こう
saveProperty=[]
p=PropertyValue()
p.Name="FilterName"
p.Value="Text - txt - csv (StarCalc)"
saveProperty.append(p)
p=PropertyValue()
p.Name="FilterOptions"
p.Value="44,34,76,1"
saveProperty.append(p)
p=PropertyValue()
p.Name="SelectionOnly"
p.Value=True
saveProperty.append(p)
doc.storeToURL(unohelper.systemPathToFileUrl(fname), tuple(saveProperty))
ちなみにpythonでoooを操るときはそっけなくてあちこち行かなければならないAPIみるよりhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.xhtmlのほうがましかも。
2009年6月8日月曜日
reportlabでバーコード
http://two.pairlist.net/pipermail/reportlab-users/2008-November/007685.html
を写経してPDFにバーコードに文字列付けてhumanReadableで出力しようとしたところ。
Traceback (most recent call last):
File "./barcode2.py", line 16, in
barcode.drawOn(pdf,50*mm,250*mm)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 105, in drawOn
self._drawOn(canvas)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 89, in _drawOn
self.draw()#this is the bit you overload
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 219, in draw
self.drawHumanReadable()
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 164, in drawHumanReadable
self.annotate(x+width/2.,-y,s,fontName,fontSize)
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 176, in annotate
getattr(canv,func)(text,x,y)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1287, in drawCentredString
width = self.stringWidth(text, self._fontname, self._fontsize)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1392, in stringWidth
(fontSize,self._fontsize)[fontSize is None])
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1104, in stringWidthU
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1147, in _instanceStringWidthU
AttributeError: decode
とエラー。
調べてみるとcommon.pyの line 176
175: else: func = 'drawString'
176: getattr(canv,func)(text,x,y)
177: canv.restoreState()
でcanvas.pyのline 1283のdrawCentredStringを呼んでいるけれど、定義はこう
1283: def drawCentredString(self, x, y, text):
ということで
176: getattr(canv,func)(x, y, text)
でしょう。
追記:patchを投げておきました。trunkは変わっています。
を写経してPDFにバーコードに文字列付けてhumanReadableで出力しようとしたところ。
Traceback (most recent call last):
File "./barcode2.py", line 16, in
barcode.drawOn(pdf,50*mm,250*mm)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 105, in drawOn
self._drawOn(canvas)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 89, in _drawOn
self.draw()#this is the bit you overload
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 219, in draw
self.drawHumanReadable()
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 164, in drawHumanReadable
self.annotate(x+width/2.,-y,s,fontName,fontSize)
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 176, in annotate
getattr(canv,func)(text,x,y)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1287, in drawCentredString
width = self.stringWidth(text, self._fontname, self._fontsize)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1392, in stringWidth
(fontSize,self._fontsize)[fontSize is None])
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1104, in stringWidthU
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1147, in _instanceStringWidthU
AttributeError: decode
とエラー。
調べてみるとcommon.pyの line 176
175: else: func = 'drawString'
176: getattr(canv,func)(text,x,y)
177: canv.restoreState()
でcanvas.pyのline 1283のdrawCentredStringを呼んでいるけれど、定義はこう
1283: def drawCentredString(self, x, y, text):
ということで
176: getattr(canv,func)(x, y, text)
でしょう。
追記:patchを投げておきました。trunkは変わっています。
2009年5月22日金曜日
printer parallel portで嵌まる。
「嵌まる。」またかよ。
ご老体のubuntuを9.04にアップグレードしたらPrinterがみつからなくなった。[システム]->[システム管理]->[印刷]でプリンターの設定ダイアログで新規プリンタを検索してもパラレルポートが見つからなかった。神様[google]に聞くと
http://ubuntuforums.org/archive/index.php/t-1135964.html
で発見。
sudo modprobe parport_pc
で解決
ご老体のubuntuを9.04にアップグレードしたらPrinterがみつからなくなった。[システム]->[システム管理]->[印刷]でプリンターの設定ダイアログで新規プリンタを検索してもパラレルポートが見つからなかった。神様[google]に聞くと
http://ubuntuforums.org/archive/index.php/t-1135964.html
で発見。
sudo modprobe parport_pc
で解決
2009年5月20日水曜日
wxWidgets文字列変換
wxString -> std::string
std::string str(wstring.mb_str(wxConvUTF));
std::string -> wxString
wxString wstr(str, wxConvUTF);
std::string str(wstring.mb_str(wxConvUTF));
std::string -> wxString
wxString wstr(str, wxConvUTF);
2009年5月19日火曜日
boostインストールで嵌まる。
「嵌まる。」多いな最近。
boost_1_39_0をUnixにinstallしようとコンパイルしたところ、localにprefixを設定したはずなのにインストールしてくれない。
結論、bootstrap.shのbug、252行の
251: if test "x$LIBDIR" = x; then
252: LIBDIR="$EXPREFIX/lib"
253: fi
て、
252: LIBDIR="$EPREFIX/lib"
でしょうが。
boost_1_39_0をUnixにinstallしようとコンパイルしたところ、localにprefixを設定したはずなのにインストールしてくれない。
結論、bootstrap.shのbug、252行の
251: if test "x$LIBDIR" = x; then
252: LIBDIR="$EXPREFIX/lib"
253: fi
て、
252: LIBDIR="$EPREFIX/lib"
でしょうが。
2009年5月16日土曜日
pythonでバーコード
2009年5月9日土曜日
Atheros ether chipでFreeBSD
P5KPL-CMと言うマザーボードにのっかているAtherosのetherドライバがないのかインストール直後のFreeBSD7.1では繋がらなかった。GENERIC読んだらaleと言うのがあるのだがドライバがないと怒られている。
load.confに
if_ale_load="YES"
としてOK
http://www.freebsd.org/cgi/man.cgi?query=ale&sektion=4&manpath=FreeBSD+8-current
load.confに
if_ale_load="YES"
としてOK
http://www.freebsd.org/cgi/man.cgi?query=ale&sektion=4&manpath=FreeBSD+8-current
NEC LaVie Cのubuntu linux起動オプションメモ
acpi=off noprobe
これを付けないとブラックアウトする。PC-LG30SUUGFと言うタイプ。
ご老体で、蛍光管は点かなくなるし、CDは書き込めなくなるし。
これを付けないとブラックアウトする。PC-LG30SUUGFと言うタイプ。
ご老体で、蛍光管は点かなくなるし、CDは書き込めなくなるし。
cmakeでGUIに変数表示
自分で定義したcmakeの変数をGUIに表示させるには、
set (TEST false CACHE BOOL "Create tests")
TESTと言う変数をキャッシュさせる。(肝)後は、変数の属性を指定(BOOLならON,OFFと表示されるぞ!)最後に変数の説明。
advance optionとして表示させたいなら
mark_as_advanced(TEST)
とする。
set (TEST false CACHE BOOL "Create tests")
TESTと言う変数をキャッシュさせる。(肝)後は、変数の属性を指定(BOOLならON,OFFと表示されるぞ!)最後に変数の説明。
advance optionとして表示させたいなら
mark_as_advanced(TEST)
とする。
2009年5月7日木曜日
2009年4月27日月曜日
2009年4月24日金曜日
解決
4月21日のエントリーで「wxVTKRenderWindowInteractorは、vtk5.0なら動くけれどvtk5.4では一部動かない。」と書いたが解決。Joystickのタイマー作ってるmethodが変更になったみたいで、ヘッダーファイルに、
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
int InternalDestroyTimer(int platformTimerId);
#else
int CreateTimer(int timertype);
int DestroyTimer();
#endif
ソースに
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalCreateTimer(int timerId, int timerType, unsigned long duration)
{
bool oneShoot(false);
if (timerType==1){
oneShoot=false;
}
if (!timer.Start(duration, oneShoot))
assert(false);
wxLogDebug(wxT("Create Internal Timer"));
return timerId;
}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalDestroyTimer(int platformTimerId)
{
// do nothing
wxLogDebug(wxT("Destry Internal Timer"));
return 1;
}
#else
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
{
// it's a one shot timer
if (!timer.Start(10, TRUE))
assert(false);
wxLogDebug(wxT("Create Timer"));
return 1;
}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::DestroyTimer()
{
// do nothing
wxLogDebug(wxT("Destry Timer"));
return 1;
}
#endif
で動きました。(環境はWindows XP、VC++2005、VTK-5.4.0)
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
int InternalDestroyTimer(int platformTimerId);
#else
int CreateTimer(int timertype);
int DestroyTimer();
#endif
ソースに
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalCreateTimer(int timerId, int timerType, unsigned long duration)
{
bool oneShoot(false);
if (timerType==1){
oneShoot=false;
}
if (!timer.Start(duration, oneShoot))
assert(false);
wxLogDebug(wxT("Create Internal Timer"));
return timerId;
}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalDestroyTimer(int platformTimerId)
{
// do nothing
wxLogDebug(wxT("Destry Internal Timer"));
return 1;
}
#else
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
{
// it's a one shot timer
if (!timer.Start(10, TRUE))
assert(false);
wxLogDebug(wxT("Create Timer"));
return 1;
}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::DestroyTimer()
{
// do nothing
wxLogDebug(wxT("Destry Timer"));
return 1;
}
#endif
で動きました。(環境はWindows XP、VC++2005、VTK-5.4.0)
2009年4月21日火曜日
wxVTKRenderWindowInteractorに嵌まる。
wxVTKRenderWindowInteractorは、vtk5.0なら動くけれどvtk5.4では一部動かない。
wxSampleでいきなりマウスでポイントしてジョイスティックで回転させようとするとError吐いて動かない。
wxSampleでいきなりマウスでポイントしてジョイスティックで回転させようとするとError吐いて動かない。
2009年4月14日火曜日
boost::shared_ptrをキャスト
boost::shared_ptrをキャストするときは
boost::shared_polymorphic_castを使おう
boost::shared_dynamic_castは、キャストが失敗した時に例外を投げない。
と書いていたが、boost::shared_polymorphic_castは非標準らしい。
ラッパーを書くのがベター。boost
boost::shared_polymorphic_castを使おう
boost::shared_dynamic_castは、キャストが失敗した時に例外を投げない。
と書いていたが、boost::shared_polymorphic_castは非標準らしい。
ラッパーを書くのがベター。boost
2009年4月8日水曜日
cmakeで作成したCodeBlocksのプロジェクトでデバッグするには
cmakeで作成したCodeBlocksのプロジェクトでデバッグするには、
cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles"
http://www.cmake.org/Wiki/CMake_FAQの
How can I build multiple modes without switching ? 辺りを参照するといい。
CodeBlocksのブレークポイントも効く。
cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles"
http://www.cmake.org/Wiki/CMake_FAQの
How can I build multiple modes without switching ? 辺りを参照するといい。
CodeBlocksのブレークポイントも効く。
登録:
投稿 (Atom)