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

SwigによるPython拡張モジュール

配列処理の例。 // hoge.h class MyError {}; class MyArray { int num; int* vals; public: MyArray(int num); int __getitem__(int idx) throw(MyError); }; // hoge.cpp #include "hoge.h" MyArray::MyArray(int num) { this->vals = new int[num]; this-…

メモ

Swigの使い方用のメモ。 PythonのC言語拡張モジュール作成ガイド (http://www.hexacosa.net/documents/python-extending/#swig) SWIGでPythonラッパを書いてみる (http://d.hatena.ne.jp/sleepy_yoshi/20091123/p1)

C言語への埋め込み (2)

Pythonファイルの実行 // test.c #include "Python.h" int main(int argc, char* argv[]) { PyObject* PyFileObject; Py_Initialize(); PyFileObject = PyFile_FromString("test.py", "r"); PyRun_SimpleFile(PyFile_AsFile(PyFileObject), "test.py"); Py_F…

来年の抱負

来年勉強するかも。 Go Mecurial (TortoiseHG) PythonのC言語への組み込み PyQt きっと勉強しない。 F# GUIにはいつも悩まされる。正規表現やSQLのような言語外DSLでGUI記述言語とか誰か作ってくれないかな?XAMLはどうなのだろう?

C言語への埋め込み

http://d.hatena.ne.jp/Wacky/20060103/1136292735 を参考にとりあえずビルドまで。 # test.c #include <stdio.h> #include "Python.h" int main(void) { Py_Initialize(); PyRun_SimpleString("print 'hello python'"); Py_Finalize(); return 0; } C:\temp\python>g</stdio.h>…

fibの例題

Go

http://golang.org/に載ったいた例題動いた。 package main // fib returns a function that returns // successive Fibonacci numbers. func fib() (func() int) { a, b := 0, 1; return func() int { a, b = b, a+b; return b; } } func main() { f := fib…

プログラミング言語Go

Go

package main import "fmt" import "sort" func sum(a []int) int { s := 0; for _, v := range a { s += v; } return s; } func sum2(m map[string]int) string { s := ""; for k, _ := range m { s += k; } return s; } type T struct { a, b int } func m…

GCC

Go

GCC4.6からGoが取り込まれるらしい。普及が期待できる。 http://golang.jp/2010/12/3206

pyファイルをpycファイルにコンパイルする方法

Pythonはモジュールをimportする際にpycファイルを作成する。なので、コマンドプロンプトから以下のコマンドでaaa.pyファイルをaaa.pycにできる。 > python -c "import aaa" もしくは、1つのpyファイルをpycファイルに変換するには、以下のコマンド。 > pyth…

メモ

ソースコードを試せるサイト。 http://ideone.com/

メモ

((Pythonで) 書く (Lisp) インタプリタ) (http://www.aoky.net/articles/peter_norvig/lispy.htm) ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) (http://www.aoky.net/articles/peter_norvig/lispy2.htm)

C++の記事

C++

C++の落とし穴 (http://shnya.jp/moin/C%2b%2b%e3%81%ae%e8%90%bd%e3%81%a8%e3%81%97%e7%a9%b4) 半分が、クラスの継承に関する事。やはり機能が複雑だと実行の仕組みも複雑になる。

言語名(2)

今日もゲーセンに行ってマリオカート2をやってきた。キャラの名前はBlinkyでなくAKABEIだった。言語名が、Akabeiで拡張子が、.akかな。でも、Tenpraの方が良さそうかな。

カリー化

def foo(a, b, c): print(a, b, c) foo1 = foo(1, @, @) foo1(2, 3) #=> 1, 2, 3 foo(1, @, @) #=> オブジェクトが宙に浮いているのでエラー(必ず代入するか、呼び出すかのどちらかが必要) このカリー化のやり方だと、前出のブロックを代入する場合に、どの…

ブロックを引数に与える

Rubyの [1, 2, 3].each {|x| puts x } は、以下のようになる。 [1, 2, 3].each(@) {|x| print(x) } スロット演算子@で与えたところに、ブロックが代入される。しかし、listにeachというメソッド持たせるのは、Python流ではない。Pythonならfor文を使用すると…

言語名

昨日の夜一生懸命考えて、外人ウケを狙ってTenpraという名前を考えた。コマンドを打ち込む時にちょっと長いがPythonと同じ文字数の6文字。Tenpuraは7文字で長いから'u'を削った。拡張子は、本当は2文字が良かったが、3文字の.tprとなる。 もう一つの案は、パ…

クラスの定義(2)

おとといの日記では、(1)の部分のFoo.__init__()内のselfの扱いがうまくいかなそう(selfはレシーバであるとするとうまくいかない)。以下のように変更。 class Foo: def __init__(): self.a = 1 def foo(): print(self.a) class Bar: mixin(Foo.__block__) # …

クラスの文法

クラスは以下のように定義、使用する。基本はPythonベース。以下の特徴がある。 インスタンスメソッドの第一引数にselfは不要 関数とメソッドの区別はしない。関数定義時にselfキーワードを使用できるが、メソッドでなく関数として呼び出した場合は、selfはN…

自作言語の妄想

日経ソフトウェア8月号を購入出来た。もうじき届くはず。これでMILを勉強できる。とりあえず自作言語は、Pythonでリファレンス実装して、後でCにポーティングするつもり。とりあえず自作言語の機能を妄想してみる。 基本はPython3の文法をまねる。文字列フォ…

スクリプト言語MIL

http://d.hatena.ne.jp/kmaebashi/20100704/p1 雑誌を購入しようと思ったら、既に取り扱いが終了していた。書籍化されるのを待つしかない。 以前から関数型言語の機能を持ったハイブリッドな簡易のPythonベースの言語を作りたいと思っているが、何言語で作る…

インタビュー本

『言語設計者たちが考えること 』 プログラム言語の設計者たちへのインタビュー集らしい。メジャーな言語が入っているので、良さそうな気がする。

プログラミングコンテスト本

『目指せ!プログラミング世界一―大学対抗プログラミングコンテストICPCへの挑戦』 『プログラミングコンテストチャレンジブック』 など、最近やっと充実しつつある感じがする。自分が興味なくなってから出てくるなあ。でも後者の本は良さそうだなあ。

ピッキング(ポリゴン選択)のサンプル

ネットに落ちていたものをPythonに移植したサンプルを一応貼っておく。 # coding: cp932 from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * WIDTH = 300 HEIGHT = 300 BUFSIZE = 64 def DrawObjects(): glLoadName(1) glBegin(GL…

ピッキング処理

OpenGLでピッキング(ポリゴン選択)処理をするには以下の方法で出来る。ソースコードはPython。 viewport = glGetIntegerv(GL_VIEWPORT) glSelectBuffer(BUFMAX) glRenderMode(GL_SELECT) … hits = glRenderMode(GL_RENDER) この方法でうまく選択出来ないで悩…

フリーFEMプリポスト Calamari 0.1 リリース

FEM

Calamari 0.1 (http://morchin.sakura.ne.jp/fem_prepost2/calamari.html) フリーのFEMプリポストのPython版をリリースした。今まではC#で作成していたが、今後は開発効率の良いPython版をメインに開発をすることにした。OpenGLを色々研究するつもり。

PyInstaller

PyOpenGLとwxPythonをPyInstallerを使ってexe化出来た。py2exeでは出来なかったが、これでアプリを作れそう。それにしても、日本語で読めるwxPythonの記事がネットにかなり少ない…。

VertexPointer

OpenGLで一番高速な描画命令は? (http://d.hatena.ne.jp/malibu-bulldog/20100102/1262396039) PyOpenGL はじめました:glVertexPointer (http://d.hatena.ne.jp/kotsubu-chan/20051102) glVertexPointer glDrawElements を使用すると高速になるとの事だが…

フリーFEMプリポスト Squid 0.2.1 リリース

FEM

Squid ver 0.2.1 (http://morchin.sakura.ne.jp/fem_prepost/squid0.2.1.html) 今回は、IronPythonによるカスタマイズ機能を付けた。IronPythonを内蔵したら実行ファイル群のサイズが大きくなってしまったが仕方ない。今後は、OpenGLの部分やGUIの部分に力を…

Python本

リバースエンジニアリング―Pythonによるバイナリ解析技法 (http://www.oreilly.co.jp/books/9784873114484/) エキスパートPythonプログラミング (http://dl.dropbox.com/u/284189/epp/index.html) 『エキスパートPythonプログラミング』買おうかな。結構安い…

GC

PythonのGarbageCollection (http://www.narihiro.info/translate/garbage_collection_for_python_jp.html) 後で読む。