Program Technique

個人的なgo言語に関する備忘録

ここ最近のgo言語に関して知った事や思った事の備忘録。 mapの中身を探すには? ある値がmapのキーにあるかどうかを判定 例えば,map型のmapdataとし,keyかどうかを判定したい変数をkeydataとすると if _, ok := mapdata[keydata]; ok { // keydataがmapdat…

Go on Google App Engineの速度差

Google App Engineのテスト用ローカルサーバを立ち上げてGo言語で作ったサーバを試してみたんだけど…WindowsとMacとでは速度にえらい違いが出てビックリした。どういう事かというと,Windows版がやたら遅い。 どちらも同じコードで単純な処理しかしていない…

GoのBuild Constraints

最近はGo言語を使ってウェブアプリケーションのサーバサイドプログラムをやっています。 そしてゆくゆくは公開する事を考えているのでGoogle App Engineで動くようにしたい。ところが,スタンドアロンでもGoogleAppEngineでもどちらでも動くように作るやり方…

Go言語の不満点

Google App Engineでアプリケーションを作りたくてやり始めたGo。 pythonと比較して満足いくスピードで,これなら作りたいものが出来る!と手応えを感じている。しかし不満点がないわけでない。例えば ネットで"go"で検索するとろくなことがない Goで検索し…

goはpythonよりどれぐらい高速か?

goとpythonで数値計算の速度比較を行いました。比較するのはCG法を使った連立方程式の解法です。 処理内容 処理は大きく分けて2つです。 連立方程式の作成 作成した連立方程式をCG法で解く行列計算 CG法で解く前の行列に前処理はしない 連立方程式の未知数が…

go言語についてメモ

最近GoogleAppEngineのアプリを趣味で作っています。 使っている言語はgoogleが提供しているgo言語。go言語はほかの言語と結構違うのでアレ?どうするんだっけ?的な事が多いです。そこで個人的な備忘録をブログに。 リテラル 配列や構造体のリテラルは型名…

Windowsマシンでpythonを使ってutf-8のBOM付きファイルを触る

相変わらずpythonの文字コードの扱いを腰を据えて勉強しないまま公私共にpythonをガンガン使っているんだが… 当然のように文字列処理でちょこちょこ詰まります。(文字コードの扱いをしっかりやってないので当たり前ですね) この前はまったのはutf-8形式の…

Pythonで文章中からカタカナの語句を取り出す

Pythonを使って文章中からカタカナで出来た語句を取り出すって事を最近やりました。こんな感じのコードで token = re.compile(u'[ァ-ヴー]+') results = token.findall(u"このテキストデータはテストです。") こうするとresultsリストの中には「テキストデー…

pythonのバージョン番号

ここ最近のホビープログラムはもっぱらpythonを使っています。 作ってるのはCUIばかりで,GUIを持つものやスピードが必要なものは作っていないからpythonで充分。それとやはりどこでも動いてくれるのはうれしい。個人的にはGoogleのGAE(Google App Engine)…

pythonのcProfileを使ってみる。

python専用のプロファイラー,cProfileを使ってみました。 プロファイラーって? 実行されているプログラムの処理のいろんなものを測定してくれる開発ツールの事をさします。 多くの開発者はプロファイラーを使って関数単位で処理時間を測定してプログラムの…

pythonを触ってみる

最近pythonを触っています。 きっかけはGAE(Google App Engine)でアプリを作りたくて,GAEではJavaとpythonが使えるみたいだったんでどうせなら触ったことがないpythonをチョイスしました。今までインタープリタで書いたことあるのは小さなプログラムばか…

ついつい口を挟みたくなるコード

一昨日見かけたこのコード,むかーしむかーし誰かが作った物。 void function(void) { int array[6] = {...} for( int i = 0; i < 6; i++ ){ .. } } 関数のローカル変数として配列が定義されている。 しかし,のちのちこの要素は増えそうな感じの仕様。やっ…

拡張子はhppにするべきなのか

C++で開発しているんだけどヘッダーファイルの拡張子をいつもhとしてたら,それはC言語のヘッダーファイルなのでhppにするべきと言われた。その際はお〜そうなのか!って言ったんだけど…実際そうなの?と思って調べてみると, 海外のサイトとか開発系のサイ…

for文でiつかう? on C++

僕はC++を使って繰り返し処理でfor文を使うときは初学者の時に習ったとおりいつも for( int i = 0; i < N; i++ ){ .... } と書きます。まぁ結構こういう書き方を怒る人はおおいですよね〜 変数名がダメって。もちろんforがネストしていくとちょっと読みにく…

プログラマの人選

僕の仕事はコンピュータプログラムを作ったり直したりする事で,世間的には僕みたいな人をプログラマと呼んでいる。 (僕はロックデベロッパーと勝手になのってるけど) 毎日毎日プログラムに触れているのでいろんな仕事をしてきた。 触ってきた言語もC言語…

mutable

C++のキーワードmutableを知っていますか? これはクラスのメンバを定義する時につかう修飾子です。例えばこんな感じ class Test { public: int index_; mutable double value_; public: Test(int arg = 0) : index_(arg), value_(0.0) {} }; mutable修飾子…

gtkglext

プライベートではUbuntuとMac OS Xを使っているんですが,現在両OSで動くプログラムを作っています。 そのプログラムはGUI側はそれぞれgtkとCocoaを使っていますが,3DCG描画処理や数値演算部分は共通の自作のライブラリとしてソースを共有しています。以前…

ログ出力

ちょっとでも規模の大きいプログラムをPC上で作った事がある人ならログ出力したことあると思うけど。みなさんはどうしてますか?コンソールアプリだとそのまま標準出力という人が多いのかな。 GUIだと使用するライブラリによっては標準出力が大変ってことも…

ファイルフォーマットを

ちょっと大きなプログラムをC++開発しようと思ってて。 そのプログラムはいろんなデータを扱う予定。なので現在,ファイルIOのライブラリを作ろうとファイルフォーマットを考えてます。 今日のブログは今考えていることをちょろちょろと書いてみようかなと。…

インタープリター

最近いろいろあってインタプリターを勉強中。 このエントリーはそれの備忘録。 インタプリターを実装するのは個人で行うと大変だ。なぜなら結構な規模のプログラムになるからだ。インタプリターのプログラムは次のようにパート分けできる 字句解析処理 構文…

OpenGLで一番高速な描画命令は?

一番高速な描画方法はなんでしょうか?まぁまず一番低速な描画命令は float* verarray = new float[9]; glBegin(GL_TRIANGLE); glVertex3fv(&verarray[0])^Z; glVertex3fv(&verarray[3]); glVertex3fv(&verarray[6]); glEnd() ですね。理由は 三角形の頂点毎…

Cocoaに思うこと

しばらくWin32だのMFCを触っていないので忘れてしまいましたが,確かテーブルにチェックボックスいれるのは大変だった気がします。 いろいろ書かなければいけいないことが多い。 C#とかだとこの辺はよくなっているのかな?Gtkはわりとサクッとできますが,M…

データ圧縮その2

前回malibu-bulldogの日記で書いたデータ圧縮に関しての続き。 ちょっと尻切れトンボな感じで終わってしまった圧縮アルゴリズムの検討の続き。ロスレスな手法として予測子修正子法をベースにしたものがあると前回書いたけど,それにかんしての追記。 2008年…

ドキュメント

http://d.hatena.ne.jp/etopirika5/20091110/1257857532を読んで。Doxygenで作られているページを覗いてみた。感想は「いやぁ〜しっかり書いてるなぁー」です。 すばらしい。 僕なんか一応プロなんだけど結構いいかげんだったりしてて。。。すんません関係者…

HDDへのアクセスって何を指標にすればいい?

浮動小数点の計算とかならCPUのFLOPSを見ればいい。 しかしHDDのアクセスの場合,もっと言えばHDD上のデータをメモリに入れるか,もしくはメモリ上のデータをHDDに書き込む場合。 この場合って何を指標にするんだろう?RPMといいたいところだけど,それだけ…

定数はdefineよりconstでグローバル変数を使うよ,僕は

定数を定義するとき #define TOLERANCE 0.3e-10 とかってするマクロという手法を僕はあまりすきでなくて, namespace bulldog { extern const double TOLERANCE; } こういう方が好き。実際の値はソースファイルを追っかけなきゃいけないけど,名前空間で区別…

名前空間を使ってと言う

C++で名前空間という機能がある。Cしかしていないとか,多人数での開発に慣れてない人にC++で開発するので名前空間を使ってくださいという説明をする場合,よく「No」と言われる。僕の説明がわるいのか?とちょっと落ち込む。Noの理由は利点が無いの一言。そ…

関数オブジェクト

C++を使ってて,いい加減関数ポインタうけとるんじゃなくて関数オブジェクトを使おうかなと思う。関数オブジェクトというのはオペレーターの()が定義されているクラスを指す。 そして,この関数オブジェクトをテンプレートにすれば完璧というかSTLなんかは…

演算回数を数えたくて

FLOPSを調べたくなり,C++のソース中で何回演算をしているのか数えるプログラムをRubyで。 といっても整数に対してなのか浮動小数点に対してなのかを判別するのは難しそうなので断念しました。それとポインタのアスタリスクなのかの判別も断念。 そんな,ま…

浮動小数点を分解

入力された浮動小数点を2進数で符号,指数部,仮数部に分けて表示するプログラムを。 というか,Rubyのサンプルそのまんまだけど… #!/usr/bin/ruby begin print "> " while line = gets $_.chomp! value = $_.to_f() puts [value].pack("G").unpack("B*") pu…