プログラミング

warning! warning!! warning!!!

VCFをそのまま日本語版VisualStudioでビルドすると色々warningが出ます。 エラーは出ないのでビルドには失敗はしません。 なお、ここで出るwarningのうち、 FoundationKit.h GraphicsKit.h Control.h StringUtil.h のヘッダファイルで出る文字コード関連のwa…

VCFのあれこれ追記

オンラインリファレンス http://vcf-online.org/docs/ref_manual/index.html ライセンスについて http://vcf-online.org/license スタティックライブラリとDLLの2種類用意してあるって話のようだが、どれがDLL読み込み用libファイルでどれが中身入りlibファ…

Visual Component Framework

WindowsでGUIアプリを作る際に、Win32API直叩きは面倒過ぎるし、WinFormsもWPFも重いし、MFCとかは未来無いし、だからって自作ライブラリ作っても大した汎用性持たせられないし、ということで他に良いWindows用GUIライブラリは無いかと探していたら、良さそ…

コードの書き方

読みやすいは正義。なので適度に関数とかクラスに分割する。 だけど分割しすぎると性能劣化に繋がる。 さじ加減がポイント。

gtkmm/GUIプログラミング - 2

今回はwidgetをクラスで表現してそれを表示するところまで書いてみます。 何はともあれ例から。 #include <gtkmm/main.h> #include <gtkmm/window.h> #include <gtkmm/button.h> class MainWindow : public Gtk::Window { Gtk::Button mButton; public: MainWindow(); ~MainWindow(); }; MainWindow::MainWi</gtkmm/button.h></gtkmm/window.h></gtkmm/main.h>…

gtkmm/GUIプログラミング - 1

CではなくてC++で書きたいという理由でGTK+をすっ飛ばしてgtkmmを使い始めてみました。 日本語の満足いくチュートリアルがパッと見つからなかったのでここのドキュメントページに載ってるチュートリアルっぽいリファレンスと格闘中。 とりあえず、ここまで学…

関数ポインタ

すぐやり方を忘れるので覚えているうちにメモ。 void hoge(){} namespace foo{ void piyo(){} } class bar { public: void boon(){} static void ban(){} }; // typedef 戻り値 ポインタの型名(引数リスト); 引数部分の書き方はC/C++の文法に準じる。 typede…

segmentation fault

セグメントはメモリ上に特定のデータ量でコード及びデータが展開された領域のこと。 んでここから外れた所をポインタで参照したら出るエラーが「segmentation fault」。

変数に放り込める最大値を知る。

unsignedな変数ならsignedにキャストして-1を放り込んでunsignedに戻せば達成できます。*1 ですが、コンパイラに付属のヘッダファイルから直値で知れればそっちの方が処理速度は上がります。 ってことで、各変数に放り込める最大値がマクロで定義されている…

途中return

今まで普通にやってきたけど、関数の途中でreturnを平気で書いちゃうのはあんまり良くないらしい。 たしかに関数が肥大化して書いた本人も処理の流れを把握できてないような可読性が著しく下がりまくったコードで、breakだとかcontinueだとかreturnだとかが…

コーディングスタイルメモ

変数・定数・関数の命名規則 - 2008年10月19日版。 変数 グローバル変数は g_ を接頭辞にする。 自動変数は a_ を接頭辞にする。 関数引数は i_ を接頭辞にする。 static変数は s_ を接頭辞にする。 クラスのメンバ変数は m_ を接頭辞にする。 一時変数*1は …

PerlでのHTTPレスポンスヘッダ制御のあれこれ

Perlスクリプトにアクセスされた時に404とか返して嘘つくにはどうしたらいいんだろうと思ったのでメモ。 レスポンス行: Status: (ステータスコード) (補足テキスト) \n って感じでprintとかで出力。ヘッダ行: とりあえずそのまんまprintとかで出力してみる…

DBI使うときの鉄板

RaiseErrorを有効にしてDBIにdieさせてevalでキャッチ。 AutoCommitは切る。SELECT文だけしか使わない時はどっちでもいい。 問題なく全てが終了したときだけcommitする。他は全部rollbackして元に戻す。 外部から入力された値をSQL文に組み込むときは必ずプ…

C++での多次元配列の作り方

今日久しぶりにC++やってnew char[x][y]って書いたらコンパイラに怒られたのでメモ。 1:コンパイル前に大きさが決まってる場合。 char str[5][5]; 2:コンパイル後に動的に大きさをコントロールする場合。 int x = 5; int y = 5; char **str; str = new cha…

ディレクトリ内のファイルを全て削除

my $DirectoryPath = '/hogehoge/hogehoge'; opendir(DIR, $DirectoryPath); unlink map { $DirectoryPath.'/'.$_ } grep { -f $DirectoryPath.'/'.$_ } readdir DIR; closedir(DIR); ディレクトリは削除されません。

Perlの俺ルール

Perlでプログラミングする際の俺ルール。文字コード編。 内部的に扱う文字コードはutf8で統一。 プラグマはuse utf8のみ。 入力されたデータは必要に応じてutf8::decodeしてutf8で扱う。 出力するデータはutf8::encodeしてから出力。 ---- 2009/09/19 追記 -…

Perlでファイルアップロード

Perlでアップロードファイルを受け取る時の最小よりちょっと色々おまけが付いてるコード。 post.cgi UTF-8で記述。 #!/usr/bin/perl -w use strict; use warnings; use utf8; use CGI; use File::Copy; use File::Basename; &main(); sub main{ # CGIオブジ…

mapとgrepの違い

Perlではmapとgrepというぱっと見よく似た関数があります。 mapが対象リストの各要素に対して行う処理は式。その結果のリストを返す。 grepが対象リストの各要素に対して行う処理は条件式。合致した要素だけからなるリストを返す。

ディレクトリ中のファイル一覧取得

opendir(DIR, $DirectoryPath); @DirectoryIndex = grep { !m/^(\.|\.\.)$/g } readdir DIR; closedir(DIR); . と .. 以外のファイル一覧が取得出来ます。

ubuntuでのApache2へのmod_perl2導入

インストール $ sudo apt-get install libapache2-mod-perl2 で、mod_perl2はインストール完了。 設定 apache2.confとかがincludeしてくれる位置に、適当な設定ファイルを作っておくといい。 mods-enabledの中にperl.confとして作っておくと他のmodと似たよ…

OpenGLプログラミングの準備

ubuntuの場合、コマンド一行で完了。GLUTっていうOpenGLをラップして使いやすくしたライブラリをインストール。 $ sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev コンパイルするときは「glut」「GL」「GLU」をライブラリパスとして指定してリ…

google - sparsehash

google codeにて公開されているsparsehashがなかなか速くていいそうです。 http://code.google.com/p/google-sparsehash/ 要素アクセスの際のオーバーヘッドが2bits/entry。よく分からんのでこの辺要勉強。メモリ効率を重視した sparse_hash_map/set 実行速…

State/Strategyパターン

State/Strategyパターンは状態とか戦略とかのクラス化をするパターンです。 要するにインターフェースは同じままでアルゴリズムを取り替え可能にしましょって話。 複数のソートアルゴリズムを扱う場合の簡単過ぎる一例を書いておきます。 まぁこんな感じって…

Qt 及び Qt Eclipse Integrationのインストール

Kubuntu上でGUIプログラミングを行うのにQt4を利用しようと思ったので、必要な物のインストール及び設定メモ。 まずAdeptとかを使って公式のリポジトリからQt4関係の物を一式インストールしようと思ったけども、uicとかが何故か古いので本家のtrolltechから…