Natural Software

KinectなどのDepthセンサーを中心に活動しています

プログラム

Win32 API BeginUpdateResource のエラーに対する対処

Win32 API の BeginUpdateResource を使ってて、エラー(HANDLEが0で返ってくる)になるけど、GetLastError()も0が返ってくる状況になった。 確実な対処ではないかもしれないけど、安定したのでメモ。 こんなコード HANDLE resource = ::BeginUpdateResource( …

コメントの話

僕の書いているコードはこんなんだよ、っていうノリで見てあげてください。 twitter 見てて、なるほどと思ったので、他意はありませぬ。 コメント不要論原理主義者は人間の言葉なんか使わずにコードのみで主張するべき。 道化師 on Twitter: "コメント不要論…

極論すると、コメントが無いと読めないコードはダメ

このあたりを読んでいて同意することが多かったのでちょっと書いておく。 コードコメントに書くべきは「意図」 - プログラマーの脳みそ 404 Blog Not Found:コメント!=ドキュメント 小野和俊のブログ:ソースコードのコメント率は20%を切ることが望ましい 煽…

プログラムから Trac を操作する

C# の勉強がてらプログラムから Trac を操作するアプリを作ることにする。 とりあえずわかっているのは、Trac を外部から操作するためには XmlRpcPlugin を入れて XML-RPC という形で操作するらしいということ。 いろいろ調べたところ、XML-RPC.NET という C…

PHPを使ってミニブログを作るチュートリアル

お勉強用にポイント http://phpspot.org/blog/archives/2008/10/php_107.html

テトリス・その2

先日の続き。 とりあえず自分の中でのお約束、「C言語」->「ベターC」->「C++」ってことで、C++版作成。 状態とゲームの動きをどう分けようかと悩んだ。 前に「リバーシのアルゴリズム」という本を買ったのを思い出し、それを参考にしてみた。 2人対戦ちっ…

テトリス

最近 Win32 API を触る機会があり、昔を懐かしみながら使ってる。 自分がプログラムを始めたのは高校を卒業してゲーム開発の専門学校に入ってからだけど、そのときに習った Windows プログラミングはよくわからなかった。 その後、普通のソフト会社に入って …

演算子のオーバーロードあれこれ

演算子のオーバーロードで気づいた点、注意点を備忘録的に列挙。 全体的 引数の名前は lhs と rhs(left (right) hand side / 左(右)辺値)を使う。 #この名前がどこまで一般的なのかは知らない。 代入演算子 1, 宣言 代入演算子の宣言は以下とする。 クラ…

デフォルト引数とコンストラクタ

今までなんとなくで通してたこと。 class A { public: A( int a = 0 ){} void put(){} }; void main() { // A a(); // NG // a.put(); A b( 1 ); // OK b.put(); A c = A(); // OK c.put(); } デフォルト引数のデフォルトコンストラクタでインスタンスを生成…

NULL と 0

C++ でプログラムを書くときにポインタの初期化は NULL ではなく、0 でおこなっている。 C 言語と C++ で NULL の定義が違うのと*1、どこかで(ソース不明) 0 のほうがいいよ、と見た気がするから。 なんだけど、どうも調べてみるとそうでもなくて、NULL が 0…

インクリメント・デクリメント

確か More Effective C++ に書いてあった、前置インクリメント(デクリメント)と後置インクリメント(デクリメント)の違い。 意外と気にしないものなんだろうか。 細かい話なので、気にしなくてもいいのかもしれないけど。 C++ のいいところは、C言語では…

なんだか知らぬ間に MFC がとんでもないことに(笑)

とりあえず入れてみた VS 2008 SP1。 MFC Feature Packのお試しをしてみたら、あらビックリ(笑) いつのまにこんなことが MFC で出来るようになったんでしょうか^^;

CppUnit-x ではじめる、簡単ユニットテスト−その7 Subversion との連携 パート2

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見るこの本の写経シリー…

設計者自らが書き下ろす「C++入門書」とは〜Bjarne Stroustrup氏との対話〜

設計者自らが書き下ろす「C++入門書」とは〜Bjarne Stroustrup氏との対話〜@CodeZine CodeZine の連載2回目。 氏が今まさに執筆中の C++ 入門書について語っている。 C++ とか C 言語の入門書って選定が意外と難しいんだけど、この本の評価によっては探し…

CppUnit-x ではじめる、簡単ユニットテスト−その4 makefile の作成

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見るこの本の写経シリー…

CppUnit-x ではじめる、簡単ユニットテスト−その5 makefile の自動生成

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見るこの本の写経シリー…

CppUnit-x ではじめる、簡単ユニットテスト−その6 Subversion との連携

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見るこの本の写経シリー…

CppUnit-x ではじめる、簡単ユニットテスト−その3 テストを自動化してみる

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見る写経シリーズ 第3…

CppUnit-x ではじめる、簡単ユニットテスト−その2 複数のテストをしてみる

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見る写経シリーズ 第2…

CppUnit-x ではじめる、簡単ユニットテスト−その1 テストをしてみる

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見る写経シリーズ 第1…

読中・eXtreme Programmingテスト技法

eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)作者: 日本XPユーザグループ,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2001/11メディア: 単行本 クリック: 20回この商品を含むブログ (14件) を見る読むといっておきな…

Bjarne Stroustrup氏との対話

あなたはC++の発明者? それとも創造者?〜Bjarne Stroustrup氏との対話〜@CodeZine 自分のことを C++ の設計者であり、最初の実装者と呼ぶのがカッコイイ! なんというか自信に満ち溢れて、それでいて嫌味がないそういう方なイメージを受けた。 記事より引…

電源オプションのプロパティ

これをプログラムから変える方法がわからない。 ノート PC のふたを閉じたときの動き。 普段はふたを閉じるとスタンバイになるんだけど、ちょっとした電車の乗り換えのときはふたを閉じても何もしないようにしたい。 いちいちこのプロパティを開いて変えるの…

Python入門

Trac のプラグイン作りを一から勉強するのに参考になると思うのでポイント。 Python入門 http://www.pythonweb.jp/tutorial/index.html

組み込みプログラム

今、新人に組み込みプログラムの導入を教えてるけど、単純に言語レベルで考えた場合にも組み込みって難しいね。 新人に C言語を教えるとポインタと構造体でつまづくけど、最低ポインタは必須。 あと今回は CPU に H8 を使っているので、統合環境 HEW が自動…

Google Test

@IT の Protocol Buffers の記事から見つけた googletest(Google C++ Testing Framework)。 とりあえずダウンロードしてみたけどややこしい^^; ユニットテストフレームワークって慣れてる人には使いやすいのかもしれないけど、素人にはどこから手をつけて…

eGUI++

Windows フォーム アプリケーションの簡潔さをネイティブ アプリケーションで実現する@MSDN 面白そうなのが出てきたね:) インストール方法とサンプルの動作方法はここを参考にした。 Visual Studio への統合が上手く出来ないけど、出来たら楽しそうね:) MFC…

なめてました(笑)

アセンブラ。 理由 何をするにも1から10まで書かなくてはいけない メモリを直接いじって計算できない。全部レジスタを通して レジスタの使用状況を頭で考えるとややこしい ある制約によってサブルーチンなしで組むとエラいことになる その代わり 順次実行…

AnkhSVN のエラー

Visual Studio と Subversionの連携で使った AnkhSVN がなぜかノートPCでエラーになってしまい動かなかった。 実はここでハマったのと同じで、Subversion がインストールされた環境で動かそうとするとダメだったらしい。 Subversionをアンインストールした今…

おわかれ

今のノートPC に入っている Visual Studio(VS) のバージョンは 6.0 と 2008。 研修で使ってるのは 2005。 VS2008 で作ったプロジェクトが VS2005 で開けないのが不便でどうしようかと。 VS2005 をインストールするためにはHDDが足りないので VS6.0 か VS2008…

SQLite 使用編

SQLite のラッパークラスを最小限実装したので、SQLの勉強がてら実際に使用してみる。 いろいろなサイトを見ていると、郵便番号データを使っているところが多いのでこれで試すことに。 住所を選択すると郵便番号を取得できるものとその逆。 最初の一歩として…

Visual Studio と Subversionの連携

今まで Subversion (というかTrac)使う場面がテキストエディタとコマンドプロンプトだったので TortoiseSVN で不自由なく使ってたのだけど、SQLiteの勉強始めてから Visual Studio 2008 使うようになって若干使い心地が悪くなった。 と言うのも、IDE とエク…

SQLite まずはちょいと改造

先日作ったやつからちょいと改造使用例はこんなカンジ。 ・SQL文の生成にステートメントではなくて、printf 式構文に変更した ・プロジェクトはこちらに #毎度のことですが、ご使用は自己責任で☆

SQLite 例外クラス

手始めに例外クラスを作成。 SQLiteのライブラリ使ってる過程でエラーが出たら片っ端から例外なげます。 クラス作成の時はいつもここ*1から始めるくらい、例外大好き(笑) #毎度のことですが、ご使用は自己責任で☆ *1:例外クラス作成

SQLite データベースクラス

お次はメインのデータベースクラス。 SQLは知識ゼロなので、open/close/exec のみ実装^^; #毎度のことですが、ご使用は自己責任で☆

SQLite SQL文作成クラス

最後に SQL文を printf 形式でフォーマットする sqlite3_vmprintf() のラッパクラス #しつこいですが、ご使用は自己責任で^^;

引数の評価順序

すっかり忘れてて小一時間ハマった。。。 char* p[] = { 文字列たち }; printf( "%s, %s", *p++, *p++ ); どうしても前と後ろが逆になると思ったら、_cdeclで呼び出す関数の評価は後ろ(右)からだった。。。

DLL内の関数名を取得

おもしろかったなりよ@東方算程譚 こいつをこの時間に1時間ほど見てしまった^^; WinUnit は DLL から直接関数名を取得している、とのことで忘れないうちにやってみた。

SQLite

ちょいとSQLやりたくなったので、これ見ながらC++でやってみる☆ SQLiteで組み込みDB体験 SQLiteで組み込みDB体験(2007年版) SQLiteで組み込みDB体験(2008年版)@よしなごと

かんたん単体テスト

たった二行でUnitTest : PicoUnit:東方算程譚 コンソールアプリ限定だけど、なんも考えずに単体テストができてしまう!! GUIが絡まなければ単体テストはコンソールで十分なので使いどころは多々ありそう。 #include <stdio.h> #define pico(EXP) ( !!(EXP) || (prin</stdio.h>…

FltReadFileの制限事項について

Windowsのドライバ開発のためのIFS(Installable File System) KitのAPIであるFltReadFileについて。IFSの情報が日本にはほとんどなくて開発がかなり大変。 とりあえずハマりそうでかつ情報がない部分を小出しにしようかなと。

CSV解析

ちょいと入用でCSV解析のコードを書いてみた。 STLとBoostで完全C++コードになりましたとサ。 #使用は自己責任で

Borland C++ Builderでのデバイス情報の取得

http://d.hatena.ne.jp/kaorun55/20080210/1202580779で書いたデバイス情報の取得をBorland C++ Builder(BCB)で実行しようとするとエラーになるとの指摘を受けた。 なんとか環境を作って調べてみたら、プロパティを要求するための STORAGE_PROPERTY_QUERY 構…

発掘 volatile メンバ関数

昨日自分のデスクトップPCを漁ってたら、昔作ったテストプログラムが出てきたので載せてみる。 一風変わったサンプルになってると思います。

契約による設計

プログラムを安全性を高める手法の一つに契約による設計(Design By Contract)というものがある。

Win32例外

今のところ自分が作ったクラスの中で一番使ってるもの。

簡易ユーザ切り替え機能におけるリソースの扱い

Windows XP以降の簡易ユーザ切り替え機能によってMutexやEventなどのリソースの扱いに若干の変化がある。

「C/C++」って表現がキライ

「C/C++」って表現がキライです。

Windows XPの簡易ユーザ切り替え機能

Windows XPからログインを維持したまま複数のユーザの切り替えができる機能が搭載された。 今更感があるけどサンプル等も少ないので載せてみることにする。

デバイス情報の取得

はてな記法のシンタックス・ハイライトというのが楽しいのでソースをはっつけてみる。 ※使用は自己責任で。