【 技術文書 】 記事一覧

システム開発時に調べた内容など、文書に残しておくことで再度参照できるようにしておきます。一度調べたことは二度調べることになるものですから。

.NET Framework のインストールを確認する

とあるシステムで、.NET Framework 2.0 が存在していることを前提として作成したものの、実際に運用される環境を調査していたら、意外と .NET Framework 2.0 が入ってないマシンが多いことに気がついてしまった。

少なくともプログラムを実行して、何がおきたかわからない状態になることを防ぐため、.NET Framework 2.0 が入ってなければ Windows Update のサイトへ誘導する仕組みを作りこむこととなった。

続きを読む ".NET Framework のインストールを確認する" »

Yahoo! デベロッパーネットワーク

後で調べるためのメモ。

MD5 を一致させる!?

ファイルに情報を追加することで、MD5 ハッシュを一致させる(衝突させる)アルゴリズムについての記述。
以前、MD5 にも脆弱性があるとの話が出ていた件の元ネタですな。

Symbian に関する記事

省電力 OS、Symbian に関する記事。

Lanczos resampling

なるへそ。Wikipedia でも、日本語のページばかりではなくって、英語のページも探さないといけないって話ですね。

未整理情報置き場

Windows Network の必読資料

Windows Network の必読資料みたいです。

統計的画像処理手法

栗田多喜夫先生の文献「統計的画像処理手法

メモ、メモ、、、

OpenCV の jpeg 保存

OpenCV で画像の読み書きを行なう際、JPEG に関して品質を指定できるはずなのに、そんなパラメータを渡す方法が存在しないような感じだなぁと思ってちょっと調べてみた。

普通に渡す方法があることをご存知の方は教えていただけると幸いです。

続きを読む "OpenCV の jpeg 保存" »

intel 資料庫

こないだ、「基本的な最適化」の話で、「CPU ごとの...」などと書きましたが、一番使われていると思われるインテルの石に関する資料は以下のページを参照するようにしてくださいませ。

Xming

1 年ほど前にも Windows 上で動作する X Server を探したことがあったのですが、そのときには、cygwin の X が中心で、それ以外に商用のものがちらほらという感じでした。
ところが、この 1 年で流れは一気に Xming にうつってしまったような感じです。


とはいえ、仮想化の技術も相当に進んでいますし、ひところほど Windows 上での X Server の必要性も減っていますが、使いたいと思ったとき用のメモということで。

GNU GLOBAL source code tag system

GNU GLOBAL source code tag system なるものが存在していることに恥ずかしながらいまごろ気がついた。


ソースコードのクロスリファレンスを作成したりするのに使えそう。
これを使った、ドキュメント自動生成ツールなんかがどこかにありそうな気がする。
また、時間を見つけて探してみることにしよう。

半角円マークの出し方

html で、半角円マークを確実に出すためには、「¥」を用います。
フォントによっては、普通に半角の円マークを出すことも可能ですが、これに頼ってしまうとユーザーの側でブラウザのフォント設定を変えていたりすると期待する半角円マークが表示されずにバックスラッシュが表示されてしまうことになります。

というわけで、めんどうくさくても、明示的に半角円マークを表示させるためには「¥」を使用するのが良さそうです。

とか言いつつこのサイトでも、¥ マークがうまく表示されてないところがありそうだな。
直して歩かないと。。。(大汗

Happy Hacking Keyboard Lite を MacBook で

客先では日本語 109 キーボードを使わざるを得ませんが、自分のパソコンでは、Happy Hacking Keyboard Lite を使い続けています。
すでにパソコンの本体は何台目かわかりませんが、キーボードだけはこれをずうっと使い続けていたという話。

で、ノートパソコンとして Mac Book を手に入れたのでありますが、これも持ち歩いているときは当然ながら本体のキーボードを使用しますが、戻って来たときにはこれまたいつものキーボードを使いたいもの。

続きを読む "Happy Hacking Keyboard Lite を MacBook で" »

VisualSVN

わたしのところの環境では、ソースコード管理というと基本的に subversion を使用しています。
ちょっと git にも浮気をし始めているというのは内緒の話なのですが。

Windows 上で使用する subversion クライアントは、定番の tortoise svn を使用していたのですが、Visual Studio に特化した VisualSVN なるものを発見してしまいました。


まだ、常用しているわけではないので使い勝手とかがどうなのかは評価していませんが、いつか使ってみようということでメモ。

openntpd

openntpd と言うのはセキュアで半分偏執狂的(尊敬を込めてこう書いてますので誤解なきよう)なグループが作成している時刻合わせのツール。
普通に ntpd と言ったら http://ntp.isc.org/ および http://www.ntp.org/ を思い起こされるかと思いますが、これとは別の実装です。

設定が簡単で直感的。一部実装の足りない部分がありますが、普通に時刻合わせを行なう範囲ではまったく問題になりません。

ぜひ一度お試しあれ。

vim モードラインの書き方

vim:sw=4:ts=4」のエントリでも書いてますが、vim のモードライン機能をよく利用しています。
ふとしたことで、以前紹介した書き方ではうまくないパターンがあることに気がつきました。

続きを読む "vim モードラインの書き方" »

アフィン変換行列

画像を平行移動したり、回転させたり、サイズを変更したりと言ったときに必ず出てくるアフィン変換行列ですが、毎度同じことばっかり調べているのでリンクをまとめておくことにします。


たぶんこのページの説明があれば他のものは必要ないような気がする。

基本的なコード最適化

C 言語でのコード最適化の基本的な文献を紹介。

CPU ごとの最適化まで考え出すと、CPU を作っているメーカーのページを参照することになると思われますが、ここではそこまでの最適化は考えません。
# と言いつつ、どうしたって CPU には依存するんですけれど。。。

エクスプローラのタイトルバーアイコンをドラッグアンドドロップ

Windows Xp 上で、手がすべって、たまたまエクスプローラのタイトルバーにあるアイコンをドラッグアンドドロップしてしまった。

何が起きたかと言うと、表示中のフォルダへのショートカットが作られたと言う話。

続きを読む "エクスプローラのタイトルバーアイコンをドラッグアンドドロップ" »

fopen の m 指定で mmap

fopen の man ページを眺めていたら、m なるモードがあることを発見してしまった。(遅

サンプルのプログラムでその結果がどうなるのかを確認してみることにしました。

続きを読む "fopen の m 指定で mmap" »

VC6 のプロファイラ

VC6 には、標準のツールとしてプロファイラが付属しています。
最新のコンパイラの最適化とは少々結果が異なることはあるかもしれませんが、基本的にどこがホットスポットになっているのかを調査するためにはそれなりに使用可能といえるでしょう。


以上の三つのコマンドを使用して、プロファイリングを行なうことになります。

続きを読む "VC6 のプロファイラ" »

apache ロードバランシング

apache 2.0 のころに、負荷分散を行なったときのメモ。
2.2 系が標準的な負荷分散の仕組みを持つようになったため、今となっては不要な内容ではありますが、なかなか古いサーバを入れ替えられないと言うところもあるかもしれませんので。

続きを読む "apache ロードバランシング" »

スクリプトに setuid / setgid すると?

ここでは、Linux の debian etch 環境でと断りをした上で書かせていただきます。
これは、他の unix like な OS でも動作が異なりますし、同じ Linux と言っても動作が異なることがあったりしますので、注意が必要です。

続きを読む "スクリプトに setuid / setgid すると?" »

lint はどこに?

最近の C コンパイラは、旧来の lint で警告を出していたようなことまで、解析して報告してくれるようになっています。
とはいえ、専門のツールにまかせた方が良い部分も多くありますので、いまどきの lint がどうなっているのかを調べてみました。

続きを読む "lint はどこに?" »

ファイルの種別を判定する

ファイルの種別を判別すると言われたら、file コマンドでおしまいと思われますが、大量のファイルを find して、file コマンドを exec するのは、ちょっと重すぎかなぁと言う場合に libmagic なるライブラリを使用することが可能です。

libmagic 自体、file コマンド派生のライブラリですし、処理結果は file コマンドと同じものが得られます。

続きを読む "ファイルの種別を判定する" »

vim:sw=4:ts=4

debian のテスト環境内で作業をしていて、表題にあげた vi のシフト幅とタブストップの設定が効いてないことに気が付きました。

vi では、ファイルの先頭付近(終端付近でも良いらしいけど)に上記のようなコメントを書いておけば、そのファイルでのタブストップ&シフト幅を設定できるのですけれど、なぜかこの設定を無視してしまうのです。

はて、、、悩むこと数分。

$ sudo apt-get install vim vim-tiny-


で、初期状態で入っている vim-tiny を vim に入れ替えることで解決しましたとさ。(大汗

emacs 試してます

先日 Debian の関西勉強会なるものに出席してきました。
で、その後の飲み会で emacs について洗脳されてしまいましたので、慣れ親しんだ vi をちょっとおいておいて、emacs でも使ってみようと思い立ったのでありました。

続きを読む "emacs 試してます" »

SATA / PATA Software RAID

そこらへんに転がっていた、PATA なハードディスクを有効利用しようと言うわけで、まだ使ってない同サイズの SATA なハードディスクと組み合わせて、ソフトウェア RAID を組んでみようとして、はまりにはまってしまいました。

ハード的におかしくなってるのかと疑ってみたりしましたが、個別に調べてみる範囲ではおかしくなっているようには思えない状況。

続きを読む "SATA / PATA Software RAID" »

smbfs/cifs のマウント

ちかごろの Linux は、Windows の共有を普通にマウントできるようになっています。
が、なぜか、マウントしようとするとエラーが起きて素直にマウントできないという状況を経験しましたので書いておくことにします。

続きを読む "smbfs/cifs のマウント" »

フルドメイン名で名前解決できない

社内用のドメイン名として準備していた dear-jpn.co.jp.local が Debian なマシンから名前解決できないという現象が出たのでその顛末を。

続きを読む "フルドメイン名で名前解決できない" »

メイリオのダウンロード

以前、メイリオなる Vista の標準フォントがなかなかよろしいという話を書きました。

で、今日 Windows Xp SP3 のダウンロードを調べていた(全マシン Windows Update なんかやってられないので)ところ、メイリオもダウンロードできることに気がついてしまいました。

Japanese ClearType fonts なんぞと難しめに書いてあるのが、メイリオのことです。
誰でも自由にダウンロードして使用できるようですので、一度お試しあれ。

標準関数を用いてファイルをコピー

以前 Windows 環境にて stdio 関数を使用してファイルのコピーをやったことがありましたが、2G を超えるファイルをうまく取り扱えなかったことがあります。
今回は、Linux で stdio 関数を使用して大き目のファイルをコピーするプログラムを書いてみましたのでその顛末を。

続きを読む "標準関数を用いてファイルをコピー" »

Visual Studio 6.0 でタブを使う

Visual Studio 6.0 は、古めの OS をサポートするツールの類を作るときには、まだまだ現役と言える開発ツールです。
とはいえ、さすがにデザインの古さはなんともしがたく、いまどきのタブを使ったファイルの参照が標準ではついてなかったりします。

続きを読む "Visual Studio 6.0 でタブを使う" »

Debian パッケージの作り方

ちょっとしたプログラムを管理するのに、毎回ネットワーク上からシェルスクリプトをダウンロードして走らせるのもなんなので、ちょいと調べて .deb で管理できないか試してみた。


いろいろ検索でひっかかったけど、結局のところ上記の文書があれば何の問題もないということに落ち着くみたい。

deb を作ってみたのは、r1000 ドライバ。
カーネルが 2.6.18 とちょっと古めなもので、素直に認識される r8169 ドライバを使うと、samba が極端に遅いと言う現象がでる。
これに対処するために r1000 ドライバを .deb で管理したいと言うのが目的。

たしかにいろいろ苦労はありましたが、dpkg 一発でドライバを入れ替えるところまでできたのでよしとする。

詳細は、、、知りたい人いる?

5月6日追記

r1000 ドライバを再度インターネット上で探してみたのですが見つからなくなってますね。
で、Realtek のサイトを探してみたら、ドライバがずいぶんと新しくなってることに気がつきました。
4 月 22 日に 8.006.00 なるバージョンが公開されているようです。
暇を見つけて、この新しいドライバも試してみることにしよう。

と言いつつ、このところあまりにも忙し過ぎるので(仕事というよりは、プライベートの方が)、いつになるかはまるでわからないのですけれど。(汗

Windows Xp x64 Edition

メインの作業マシンを Windows 2000 に戻したという話を書いてましたが、64 ビット環境での作業がどうしても必要となったことで、Windows 2000 から Windows Xp x64 Edition にメインマシンの環境を移行することになりました。

他にも Vista の 64 ビット版と言う選択肢もあったのですが、Xp の次のサービスパックで処理速度が大きく向上しそうだと言ううわさを聞いたもので、さくさく動くことがメインマシンの一番の条件であることから、Vista ではなく、Xp の 64 ビット環境を採用することになりました。

Vista の 64 ビット版で遊んだ経験から、現在使用中のマシンで 64 ビット版のドライバがなくて困ると言うことはないだろうと安易な予測のもと、Windows 2000 の入ってたハードディスクをまるまんまバックアップした上でクリーンインストールを敢行。

ちなみにバックアップには Windows のツールではなくって Ubuntu の CD から立ち上げて NTFS ドライブをマウントして、tar でサーバにコピーしたと言うのは内緒の話。
Windows のバックアップツールは、あとのハンドリングがめんどうくさいというのがあって、個々のファイルのセキュリティ情報なんかが欠落してもかまわない場合は、いつもこの方法でバックアップとってます。

続きを読む "Windows Xp x64 Edition" »

パスワードが8文字までしか認識されない

社内のマシンの認証は、Windows 2003 Server がやっているのですが、これと NIS でパスワードを共有している Linux マシンでなんとパスワードの 8 文字目までしか認識されていないと言うとんでもない設定になっていたことに気がついてしまいました。

恥さらしシリーズ(けっこうな数投稿しているような気が)としてこいつもメモっておくことにいたしましょう。

続きを読む "パスワードが8文字までしか認識されない" »

スレッドのサンプルその2、イメージビューワ

スレッドのサンプルと言うことで、どんなものを作るかと言う話を前回やりましたので、今回は実際にちょこちょことコードを書いてみましたので、紹介しておきます。

続きを読む "スレッドのサンプルその2、イメージビューワ" »

スレッドのサンプル

単純に数値を増やすサンプルなんかは不要なので、スレッドのサンプルとして実用的なものが見てみたいと言う要望を受けていたのですが、なかなか良いサンプルが思いつかず悶々としておりました。

たまたま数千枚のイメージファイルを置いている場所(ただの管理べた)を IrfanView(いるふぁんびゅー) で開いてしまって「しまった」と思った直後に「よっしゃこれをスレッド処理のサンプルにしたら良い」と思いついたのでありました。

続きを読む "スレッドのサンプル" »

メイリオ

Windows Vista の新フォントであるメイリオですが、見た目かなり良い感じです。
うれしがって、Vista と Xp と 2000 とのトリプルブートになっているマシン(おっと、ubuntu もあるからクアドラプルブートってか?)で、Vista 以外のマシンにも入れてみましたが、ブラウザのフォント設定を変更したりする必要があったものの、それさえきっちりやってしまえば快適に使用することができます。
これ以外に Windows Xp のフォントを滑らかにする設定を「標準」から「ClearType」に変更しておく必要もありましたが。

で、メインの OS を Windows 2000 に戻したと言う話を前に書きましたが、この Windows 2000 では、ClearType を設定することができないことが響いて、メイリオを入れたとしてもかなり大きなサイズにならないときれいに表示してくれないようです。
残念。

ちなみに、このメイリオですが、Visual Studio 2008 を導入するといっしょにインストールされます(もちろん Express Edition でも)ので、実質的に無料で使えるフォントと言えそうです。
Windows Xp で、ClearType の設定で良いのであれば、一度試してみる価値のあるフォントだと思います。

chkdsk.exe

しょうもない話なのですが、Windows 2000 の chkdsk コマンドのヘルプを表示させたときに、/C のオプションの説明にあるべきコロン(:)が、セミコロン(;) になっているのを発見してしまいました。

Windows Xp ではまだ直っていないようですが、Windows Vista ではさすがに直っているようです。

では、、、と言うことで調べてみたら、Windows NT 4.0 の chkdsk にはこの間違いはないようです。

Windows 2000 の段階で入れ込まれた間違いが Windows Xp 時代を生き延びて、Vista になってようやく直ったと言うことなのでしょう。

どうでもよい話ですが、ちょっと面白かったので紹介まで。

Windows 2000 のコマンドプロンプト

現在メインの作業マシンが Windows 2000 になっているとか書きましたが、Windows 2000 を使っていて、いきなり「うむっ」と思ってしまうのが、コマンドラインでタブキーを使っても補完が効かないこと。

Windows Xp 以降ではデフォルトで、タブキーが補完のキーになっており、bash やらを使っているのと同じような感覚で使えるのですが、なぜか Windows 2000 では、この設定が行なわれていません。

Windows 2000 のコマンドプロンプトでも設定さえきちんとしてあげれば補完が使えるようになりますのでその方法を紹介。

続きを読む "Windows 2000 のコマンドプロンプト" »

メモリマップトファイルで作成したファイルを調整する

なにやらメモリマップトファイル関連の話題が続いていますが、今回はメモリマップトファイルで作成したファイルを切り詰める話を書いておこうと思います。

続きを読む "メモリマップトファイルで作成したファイルを調整する" »

VS6 で、*.c をコンパイルすると警告が出る

うちの会社では、いまだに Visual Studio 6.0 を使ってたりするのですが(なんでまたこんな古いのを使っているのかと言う話は別の機会に)、VS6 で、*.c ファイルをコンパイルするときに、windows ヘッダをインクルードしていると警告レベル 4 で怒られるという現象が出ます。

続きを読む "VS6 で、*.c をコンパイルすると警告が出る" »

ファイルのコピー再び

メモリマップトファイルでスラッシング」で、示したように、UnmapViewOfFile の前に FlushViewOfFile を入れるだけで、メモリマップトファイルの処理が劇的に改善されることがわかりました。

以前、「ファイルのコピーにこだわってみる」を書いたときも、このスラッシング問題が発生しており、メモリマップトファイルの処理が十分な処理速度が出ていなかったわけですから、再度ファイルのコピー処理をやり直してみました。

続きを読む "ファイルのコピー再び" »

メモリマップトファイルでスラッシング

何度かこのブログで Windows のメモリマップトファイルを取り上げていますが、実際に積まれた実メモリを超えるようなサイズの処理を行なわせると、スラッシングにも似た現象が発生して、処理が劇的に遅くなると言う点を指摘してきました。

で、この現象を発生させなくする方法をようやく発見したので紹介しておきます。

続きを読む "メモリマップトファイルでスラッシング" »

rand() の最大値 RAND_MAX

Visual Studio 2005 を使用していて、rand() 関数を使用して、配列をばらばらに並べ替えていたときのこと。
なんか、ちっともランダムじゃないような気がする。。。

もちろん、Visual Studio の rand 関数が線形合同法を使っていて、この線形合同法の問題点はわかった上で書いてます。

続きを読む "rand() の最大値 RAND_MAX" »

Windows のリモートリブート

さっきまで書いてたファイルのコピー話の実装をテストしていたときの話。
メモリマップトファイルを使用するとスラッシングに似た現象が発生して、まともに動かない状態になったとか書きました。
この状態に陥ると、なんと Ctrl+Alt+Del にすら反応せず、お手上げ状態になってしまいます。

こんなときでも、とにかく処理を終わらせて、リブートさせる方法がありますので紹介しておきます。

続きを読む "Windows のリモートリブート" »

ファイルのコピーにこだわってみる

今回は Windows 環境でのファイルのコピーにこだわってみました。

試してみたのは、fopen, fread, fwrite, fclose と言う stdio 系の関数を使うものと、Windows API である CopyFile、そしてメモリマップトファイルの 3 つとなります。
コーディングが一番楽チンなのは、CopyFile を使うものとなりますが、処理速度でどんな結果が出るのか、さまざまな条件下で試してみることにしましょう。

続きを読む "ファイルのコピーにこだわってみる" »

標準技術集

調べろと言われたら泣きそうになるけど、ひまなときに眺める分にはとっても楽しい。

Windows 版 subversion 日本語文字化け

毎度 subversion を新しいマシンに入れるたびに調べるのでメモ。

環境変数 APR_ICONV_PATH に、svn 入れたディレクトリの iconv のパスを設定する。

C:¥Program Files¥svn にインストールしたとすると、APR_ICONV_PATH には、C:¥Program Files¥svn¥iconv を設定することになる。

mantis / subversion 連携

mantis と言えば、それなりにあちらこちらで使用実績があがりつつあるバグトラッキングシステム。
subversion は、ソースコード管理システムとして定番となった感があるシステム。
両方を統合できたら幸せになれる人は多いと思うのでメモを残しておきます。

まずは参考となる URL を示します。

mantis も version 1.1 になって、連携機能が標準機能として組み込まれたと言う話を聞いたことがあるのですが、残念ながらその方法を書いた文書を見つけることができていません。
結局これまでにインターネット上で書かれたものを一通りまとめてみたのが今回のメモとなります。

続きを読む "mantis / subversion 連携" »

バイナリエディタ

バイナリエディタで良いのがないかと聞かれたので、「Visual Studio」と答えたらびっくりされてしまった。
意外と皆さんフリーのものを探しておられるようで、素直に Visual Studio 使ってる人の方が少ないのかしらん?
と言うよりも、Visual Studio にバイナリエディタの機能が含まれていることに気がついていない人の方が多いのかな。

逆アセンブラや逆コンパイルとかする必要がないのであれば、素直に手元にある Visual Studio で十分のように思ってます。

とか、知ったかぶりな書き方してますが、わたしが Visual Studio にバイナリエディタの機能が含まれていることに気がついたのは、ほんの 2~3 年ほど前のことだったりして。(汗

Trac / Subversion

ほしいなぁと思っていたような記事を見つけた。

1 秒未満の sleep

恥さらしが続いていますが、今回も恥さらし。。。

続きを読む "1 秒未満の sleep" »

32 ビット、64 ビット ?

実数の比較で恥をさらしましたが、今回は、C のプリプロセッサの動作で恥をかいたのでさらしておきます。(汗

続きを読む "32 ビット、64 ビット ?" »

Windows 2000 用の shutdown コマンド

Windows 2000 には、標準で shutdown コマンドがないという話をこないだ書きました。
んで、そのときには、同じマシンにインストールされている Xp の shutdown コマンドを使いました。

今回、Windows 2000 のみのクリーンインストールを行ないましたので、この shutdown コマンドが使えなくなってしまったのが困りもの(Xp なマシンからコピーして来るってのはライセンス的にまずいと思う)。

そんなわけで、ちょっと調べて shutdown コマンドを作ってみましたので紹介しておきます。

続きを読む "Windows 2000 用の shutdown コマンド" »

Windows 2000 のサポート期間

先日 Windows 2000 が軽くて良いとか言う話を書きました。
今でも Windows Update とかで新しいファイルの更新がありますし、いったいいつまでこのようなサポートが行われるのかなぁと思って調べてみました。

Microsoft の「Windows 2000 ファミリのサポート期間」 のページによると 2010 年 6 月 30 日まではサポートが行われるようです。
今からでもまだ 2 年以上は使っていても問題なさそうです。

サポートがなくなったら、今度はマシンも劇速のを準備して、Xp をメインマシンにするぐらいで今と同じようなさくさく感が出るのかもね。

デフラグやってシャットダウン

作業が終わったあとにデフラグを開始させて、翌朝までには完了しているだろうってのはよくやることだろうと思います。
とは言うものの、デフラグが終わってから数時間以上も電源が切れずに無駄に電気が使われているってのはいやだなぁなどとエコなことを感じていました。
そんなわけで、この問題をこんな方法で解決してみたので紹介しておきます。

続きを読む "デフラグやってシャットダウン" »

Windows 2000 復活

ちょっと前に最近の OS は重過ぎるみたいなことを書きました。
その時は、OS/2 互換の OS をまた試してみようとか書いたような記憶がありますが、ひょんなことから Windows 2000 なマシンがメインの作業マシンになりましたのでその顛末を。

なんでまた Windows 2000 なんぞが出てきたのかと言うと、とあるプログラムの互換性の確認のために、Pentium Dual-Core 1.6G 主記憶 2GB のマシンに Windows 2000 を入れて評価をしたのがそのきっかけ。
Vista みたいに裏でごちょごちょといらんプロセスが動いたりしませんし、ふだん使っているツールの類もほとんど動きます。

そんなわけで、Windows Xp と Vista のデュアルブート環境で使っていたマシンとは別にこの Windows 2000 を入れたマシンをメインの作業マシンとして使用しはじめました。
んで、Windows 2000 で不足があったり困った点などをこのページにメモっておくことにします。

続きを読む "Windows 2000 復活" »

MFC でのプログラミング

ひっさしぶりに、MFC でプログラムを書く必要が出てきました。
Windows 上でのプログラミングと言うと、ユーザーインターフェース部分は C# で、コアなコードは C 言語で書くというのがごく普通になってしまいましたよね。
そんなわけで、わざわざ MFC 使って画面を作ったりすることなどとんと無くなっていました。

今回の要件では、CD-ROM 1 枚でどこでも動く(っても、Windows 限定)必要のあるプログラムを書かねばなりません。
MFC を使ったプログラムであれば、「動かすプログラム本体」+「C ランタイム DLL」+「MFC DLL」と、これだけを準備すれば Windows 2000 から Vista までサポートできる(へたすりゃWin95/98/Meも?)ことになります。

続きを読む "MFC でのプログラミング" »

C での文字列連結

C 言語での文字列連結ですが、strcat とかそんなのとはちょっと違います。
マクロで使用したりする場合に便利な機能だったりします。

続きを読む "C での文字列連結" »

subversion で、ウェブの保守

subversion には、ファイルをコミットしたタイミングで何かを実行するということが可能なように、フックと言う仕組みが組み込まれています。

この仕組みを利用すると、ウェブコンテンツをコミットすると、そのタイミングでサーバ側で svn update を実行することができます。
つまりは、自分で使用しているマシン上でウェブコンテンツの作成を行ない、それをコミットするだけでウェブに公開することができるようになるわけです。

続きを読む "subversion で、ウェブの保守" »

subversion と改行コード

Windows なら Windows だけ、Mac なら Mac だけ、Linux なら Linux だけの世界で開発が完了するなら良いのですが、なかなかそうも行きません。
特に Web 系の開発作業だと、どうしてもデザイナさんが使用する OS と、プログラマが使用する OS とが別のものになってしまうものです。
となると、スクリプトを埋め込んだ行とデザイナさんが編集した行との間で改行コードに違いが出てしまって、わけのわからないエラーに悩まされるということがあるものです。

このような現象を解決する仕組みが subversion には組み込まれており、各々がきちんと subversion からファイルを持ってきて作業を進めれば先に示したような改行コードの問題を回避することが可能となります。

続きを読む "subversion と改行コード" »

Windows OS の識別

とある事情があって、Windows のどのバージョンが実行されているのかを調べる必要が出てきました。
最初は、Windows 付属の winver.exe あたりで良いかと考えていたのですが、Windows 2000 Professional/Advanced Server がまったく同じ表示をするもので、これではだめだなぁとなったのでありました。
他に思いつくのは、コマンドプロンプトで ver とたたいてみるぐらいですが、こちらも思ったほど詳細な情報は出力されてこず、目的を果たすことができませんでした。

続きを読む "Windows OS の識別" »

ディレクトリの存在チェック

こないだは「ファイルの存在チェック」をやりましたが、今度はディレクトリの存在チェック。

いろいろと google で調べてみましたが、わたしがいつもやっている方法を解説したページは見当たらなかったので(適当にしか調べてないので存在してないとは言えないのですけれど)、ちょいと書いておくことにしましょう。

もちろん、この方法が最も良い方法かどうかはわかりませんが、確実に動作すると言う点では間違いない方法です。

続きを読む "ディレクトリの存在チェック" »

ファイル存在チェック

Windows 上でファイルの存在チェックを行なう際、リムーバブルディスク上のファイルに関しては、メディアが挿入されていないとダイアログボックスが表示されてしまうため単純にはチェックできないと言う問題が存在しています。

具体的には「Windows - ディスクがありません」なるダイアログボックスが勝手に立ち上がって、誰がどうみても役に立たないメッセージ「Exception Processing Message 0xc0000013 Parameters...」が表示されてしまって、これにユーザーが応答しない限り処理が進まず、結局のところ自動的にファイルの存在チェックを行なうことができないのです。

続きを読む "ファイル存在チェック" »

CppUnit 再び(信頼の積み重ね)

信頼の積み重ね

今回の GetGCD と GetLCD では、まず GetGCD をしっかりとテストを行ない、その上で、GetGCD を使用する GetLCD を作成しました。
おかげさま(?)で、GetLCD のテストを行なっておかしな結果が出てきたときに、GetGCD を疑うことなく、GetLCD の範囲だけでデバッグが進行しました。
信頼できる関数だけを使用してデバッグしていくわけですから、基本的にその信頼できる関数をデバッグする必要がなくなり、めんどうなように見えて、結局は相当に効率的な作業ができるようになっています。

最初に CppUnit を導入して感じることは「とにかくめんどうくさいことが多い」ということでしょうが、それを乗り越えてしまうと、今度は逆にこれがないと「不安でしかたがない」と言う感覚に徐々に変わっていくものです。

ぜひ皆様もこのツールを使ってみて、その威力を体感していただければ幸いです。
このブログがそのきっかけとなっていただければ幸いです。

続きを読む "CppUnit 再び(信頼の積み重ね)" »

CppUnit 再び(テストはつづくよ)

GetLCD

ながらくかかってしまいましたが、残っている GetLCD の方を片付けてしまうことにしましょう。

GetLCD は、最小公倍数を求めることになりますので、ふたつの 32 bit 整数を引数として渡した場合に、返ってくる値は最大で 64 bit の幅が必要になります。
現実的に 64 bit 幅必要かどうかはわかりませんが、ここでは Visual Studio .NET 2005 にばりばり依存してしまうことにして、GetLCD はこんな感じに定義してみました。

__int64 GetLCD(int n1, int n2);


続きを読む "CppUnit 再び(テストはつづくよ)" »

CppUnit 再び(さらにテストの追加)

さて、次はどんなテストを準備しましょうか。
今回の GetGCD は、引数として整数を二つ取ります。
整数と言われたら、その整数すべての組み合わせをテストしなければなりませんが、それはあまりにも現実的ではありません。

続きを読む "CppUnit 再び(さらにテストの追加)" »

CppUnit 再び(テストの追加)

では、さらにテストを追加して行きましょう。

続きを読む "CppUnit 再び(テストの追加)" »

CppUnit 再び(テスト関数)

実際にテストを行なう関数を書くことにしましょう。

続きを読む "CppUnit 再び(テスト関数)" »

CppUnit 再び(テストプログラム)

ここまで設定してようやくテストを書き始めます。

続きを読む "CppUnit 再び(テストプログラム)" »

CppUnit 再び(メモリリークチェッカ)

CppUnit の本題からちょっと離れますが、ここでメモリリークチェッカの設定を行なっておきましょう。
Visual Studio 標準のメモリリークチェッカを設定しておくことで、プロジェクトの後半になって悩まされるメモリリークを撃退しましょう。

続きを読む "CppUnit 再び(メモリリークチェッカ)" »

CppUnit 再び(プロジェクトの設定)

プロジェクトの設定

それでは、例題を使って、CppUnit の使い方を見ていくことにしましょう。

続きを読む "CppUnit 再び(プロジェクトの設定)" »

CppUnit 再び(インストール)

インストール

何はなくともまずはインストール作業から。
ここでは、現段階で使う人が一番多いと思われる、Visual Studio .NET 2005 を Windows 上で使えるようにするところまで。

続きを読む "CppUnit 再び(インストール)" »

CppUnit 再び

以前書いた CppUnit 関連の文書が少々大きすぎたので、分割して再度書き直すことに決めました。

昔書いた大きすぎる版はこちら。

参考までに、64 ビット、32ビットの両方でコンパイルしなおしたバージョンを置いてあるページはこちら。

続きを読む "CppUnit 再び" »

cygwin からファイルサーバにアクセスする

cygwin は、Windows 上で Linux ライクなツール群を使うことができる便利な環境です。

某氏も cygwin 大好き人間なのですが、UNC 名を取り扱うのがめんどうくさいのが嫌いだと言っていたので、「へ?」と思って聞いたらこういうことらしい。

続きを読む "cygwin からファイルサーバにアクセスする" »

代替ストリーム/alternative data-streams/Alternate Data Stream

NTFS のAlternate Data Stream(ADS) ってのを調べてます。

なんでこんなものを調べ始めたかと言うと、手持ちのビデオを IEEE 1394 インターフェース経由で取り込んだファイルをいったん NTFS ファイルシステム上に置いて、それを samba で公開している場所に置こうとしたら怒られてしまったと言うのがその理由です。

ちなみに、Windows Xp では特に怒られることなく素直にコピーすることができました。
どうやら、Vista になってからこのチェックが行われるようになったみたいです。

続きを読む "代替ストリーム/alternative data-streams/Alternate Data Stream" »

Zend Framework

symfony と来たら、次は Zend Framework。
とは言うものの、symfony にあるような何から何までこの文書を読めばオッケーみたいなのは見つけられなかった。
リファレンスマニュアルが日本語だからそれを読めってなことなのかも知れないけれど、これだけではちょっととっつき悪いなぁ。

続きを読む "Zend Framework" »

symfony

php のフレームワークを探していて、symfony を見つけた。
なんか良さげ。

あれま。テストの仕組みも組み込まれているではないですか。
まじめに調べてみることにしよう。。。

PHPUnit

ひさしぶりに、php を使って、ウェブページを作ってます。
が、やっててなーんか、気持ちが悪い。

気持ちが悪いのがなぜかと言うと、テストを書いてないからなんですね。

続きを読む "PHPUnit" »

php スクリプトを使う

php を普通にコマンドとして実行することができると言うことを某氏にびっくりされてしまいました。
PHP って、ウェブ上でだけ使うものと思い込んでいたようです。
perl だって、CGI や mod_perl 使ってウェブ上で使う他にも、コマンドライン上から使ったりしますよね。

と言うわけで、もしかして他にも驚いてくれる人がいるかもしれないので書いておくことにします。

続きを読む "php スクリプトを使う" »

bash スクリプトで数値を扱う

bash のスクリプトでは、整数値の計算を取り扱うことが可能です。
カウンタを使うような用途では、bc コマンドの力を借りる必要もありません。

$ for i in `seq 10`; do echo $i times 10 is $(($i*10)).; done
1 times 10 is 10.
2 times 10 is 20.
3 times 10 is 30.
4 times 10 is 40.
5 times 10 is 50.
6 times 10 is 60.
7 times 10 is 70.
8 times 10 is 80.
9 times 10 is 90.
10 times 10 is 100.


seq コマンドの力を借りてるやん! とか言うつっこみはなしと言うことで。。。

DHCP / DNS 連携で、名前解決できない。

詳細は、また別の機会に書きますが、社内のネットワークで DHCP と DNS の連携を行ないました。

設置してあるマシンのうち Windows マシンはうまいこと DHCP からアドレスを取得できて、かつ DNS にも名前が登録されるのですが、Linux マシンがうまく行きません。
きちんと DHCP でアドレスを取得できるのですが、DNS のエントリは空っぽになってしまうのです。

ところが、このような状態であるにもかかわらず、Windows マシンからは Linux マシンに向けて ping を打つ(もちろんマシン名を使って)ができてしまうから困りもの。

はてさて原因は?

続きを読む "DHCP / DNS 連携で、名前解決できない。" »

tortoise svn 入れたらディスクが遅くなったような気が

tortoise svn と言えば subversion 使っている Windows ユーザー必携のツールです。

以下に良く使うと思われるリンクを。

続きを読む "tortoise svn 入れたらディスクが遅くなったような気が" »

make install のルートを変更する

通常、make install では ./configure --prefix=/path/to/packageroot で指定したディレクトリへインストール作業を行ないます。
このとき、ディレクトリツリーのルートは当然ながら / と仮定されますが、この / を変更することが出来ればインストール作業でいったい何が起こるのかを確認することができることになります。

主にパッケージメンテナ向けの機能と思われますが、PC 管理者にとってもそれなりに有効と思われますのでメモとして残しておきます。

続きを読む "make install のルートを変更する" »

libtool on cygwin

以前、cygwin のバイナリ配布の中に、libtool を見つけられなかったと言う話を書きました。
ソースコードを拾ってきてビルドしたら、特に何の問題も無く使用できるようになったのでそのメモを。

続きを読む "libtool on cygwin" »

Autotools cygwin

ここまでの作業で、Linux 上と Windows 上で完全に同一のソースコードをメンテナンスする仕組みが構築できました。

次は、Windows 上でありながら、Linux っぽい環境を構築できる cygwin 上でも同じコードが使えるかどうかを試してみましょう。
これで、三つの環境に対応できるソースコードツリーを得ることが可能になります。

以下、参考となるリンクを。

また、続き物(?)ですので、これまでに書いてきた内容を以下に。

続きを読む "Autotools cygwin" »

Autotools でライブラリを作成する

前回の話(Autotools)の続きです。

参照すべきリソースは、前回も提示したここになります。

続きを読む "Autotools でライブラリを作成する" »

Autotools

Autotools についての基本情報。

続きを読む "Autotools" »

整数と実数の比較

以前実数の比較について書きました。
アクセスログ見てたらけっこうなアクセスがあるので調べてみたら、いつの間にやら google で「実数の比較」と検索するとトップに来るようになっているみたいです(2007年12月19日現在)。
いつまでこれが続くかはわかりませんが(笑)、今回は整数と実数を比較する方法について書いておきましょう。
おまけ(こっちが本題か?)で、カラー画像をグレースケール変換するときの誤りやすい点についても書いておくことにします。

続きを読む "整数と実数の比較" »

CppUnit 64 ビット版(Windows/Visual Studio)

プロジェクトを作るたびに CppUnit のテストを作って、、、おーい、64 ビット版の CppUnit(Windows 版) がないじゃないですか。

というわけで、はりきって構成を作り直してコンパイル。
問題いっぱいありましたが、なんとかバイナリを作ることができましたので、置いておきます。
けっこうでかいので注意くださいませ。

続きを読む "CppUnit 64 ビット版(Windows/Visual Studio)" »

OpenCV を用いた物体検出

OpenCV を用いた物体検出について調査中。

というわけで、まずは調べるもととなる文書など。

と、探していたものの、なんだかたくさん見つかりすぎるので、、、

OpenCV を用いた画像縮小

以前、画像縮小の話を書きましたが、今回は具体的なコードを用いて画像縮小をやってみることにしましょう。

というわけで、まずは、関連するページへのリンクを列挙。

続きを読む "OpenCV を用いた画像縮小" »

OpenCV

OpenCV について調べる必要が出てきましたので、メモを残しておきます。

まずは、調べるもととなるリンクを。

続きを読む "OpenCV" »

grub ブート CD の作成

システムの最低限のメンテナンスを行なうために、grub が立ち上がるだけの最低限のブータブルCDを作成してみました。
作成した環境は、debian etch です。

参考資料は以下のとおり。

続きを読む "grub ブート CD の作成" »

シリアルコンソール

手元にあるファイルサーバ(debian/etch)のメンテナンスをシリアルコンソールを使って行えるように設定を行ってみました。

続きを読む "シリアルコンソール" »

Xen - Ubuntu on Ubuntu

以前、Xen を Debian 上に構築しましたが、今度は Ubuntu 上で構築作業を行なってみました。

題して「Ubuntu on Ubuntu」

続きを読む "Xen - Ubuntu on Ubuntu" »

実数の比較

実数の比較は、整数の大小比較と同じと考えるとはまるというのは、広く知られた事実。
とはいえ、なにげなく書いてしまったコードではまったので恥をさらしておく。(汗

続きを読む "実数の比較" »

Xen

はやりの Xen で、仮想環境作ってみたときのメモ。

続きを読む "Xen" »

OS/2 後継

eComStation と言う、OS/2 の後継 OS の開発が行なわれているらしい。
2007年11月4日現在で、2.0RC2 が最新らしい。

Linux もずいぶんと重たいOSになってしまってなんかデスクトップとして使う気が失せてきている今日このごろ。
軽いと明確にウェブサイトにも書かれている eComStation を、ひまなときにでも試してみることにしよう。

DocBook

DocBook について

いろいろあって(何が?)、DocBook について調べることになりました。
そのメモを残しておくことにしましょう。

続きを読む "DocBook" »

Xerces/Xalan で、XML 変換

自分が使用している環境には間違いなく Java が入っているのですが、入っていない環境が意外と多いことについ最近気がついてしまいました。
やっぱり、なんだかんだ言っても、C/C++で、バイナリ一式持って行くだけで動くってのは強いってことなんでしょうかねぇ。

続きを読む "Xerces/Xalan で、XML 変換" »

Doxygen

Doxygen についても調査が必要となりましたので、こちらもメモを残しておくことにいたしましょう。

続きを読む "Doxygen" »

CppUnit

CppUnit の使い方をまとめた日本語のページが少ないなぁと言うことで、ちょっと書いてみることにしました。
とはいえ、わたしもまだ使い始めたばかりと言うことで、なかなか全てを網羅しているわけではないと思います。ご指導よろしくお願いします。

などと書いていたら、参考資料のところにリンクはってあるページを発見してしまった。
無用の長物となってしまったかも。。。(汗

続きを読む "CppUnit" »

画像縮小について

画像の縮小

画像の縮小について調べたのでまとめておく。

基本的な画像縮小アルゴリズムとして以下のみっつ。

  • ニアレストネイバー法
  • バイリニア法
  • バイキュービック法

これ以外に、平均画素法を利用した縮小を実装して処理結果を検討してみよう。

この記事を書いた後に、具体的なコードを用いたページを作成したので参考まで。

続きを読む "画像縮小について" »

gphoto2 でカメラからデータを削除

わたしの手元にはすでに相当に古くなったデジカメが存在している。

いまどきシリアルポートで制御するようなデジカメをいったい誰が持っているだろう?

続きを読む "gphoto2 でカメラからデータを削除" »

Win32 環境のメモリマップトファイル

メモリマップトファイルを使用するのとファイル処理をやるのとどっちが速いのか?
いきなりですが、以下のプログラムを見ていただきたい。

続きを読む "Win32 環境のメモリマップトファイル" »

Win32 環境で 2G を超える配列を使う

こんな要件のプログラムを書く必要がありました。

  • けっこう大きめの構造体を大量に使用する。
  • 構造体ひとつのサイズは10240バイト。
  • これらの構造体20万個のセットを二組同時に使用。

すでに少ない個数でテストの済んだコードが手元にあったのですが、テストの過程で1セット10万個にしたあたりからメモリオーバーのエラーが出始めました。

続きを読む "Win32 環境で 2G を超える配列を使う" »

Plamo Linux 用パッケージの作成方法

Plamo Linux と言いつつ、実は作成中の NASUBI へのパッケージ作成の方法としてメモを作成。

続きを読む "Plamo Linux 用パッケージの作成方法" »

文字変換に関する小ネタ

以前バックエンドの文字コードはUTF-8しかありえないと言う話を書いたことがあります。

検索エンジンで探して来られた方からメールで、UTF-8にしても、問題があるのではないかというご意見を頂戴しました。

続きを読む "文字変換に関する小ネタ" »

XML の小ネタ

本日は、データベースの複製に関する話題です。

ずいぶん前にも社内のデータを外部のサーバに持っていく仕組みを作ったことがありますが、なぜに皆さんわたしにこういう作業を振ってくるんでしょうね?(笑

続きを読む "XML の小ネタ" »

Apache Bench(ab) の小ネタ

ちょっとした負荷テストを行なうのに、apache に付属の ab コマンド(Apache Bench)プログラムが便利に使うことが可能です。

先日ちょいと顧客さんの環境内において負荷試験をやる機会があり、一瞬はまった話を書いておこうと思います。

続きを読む "Apache Bench(ab) の小ネタ" »

フィルタの続き

先日は書いてる最中でかなりの割り込み作業が入ってきたので、中途半端になってしまいました。今日はその続きを書いておきましょう。

続きを読む "フィルタの続き" »

フィルタ

さて、本日はすでに使い古された実装である、サーブレットのフィルタについて書いてみたいと思ってます。

続きを読む "フィルタ" »

JBoss 4.0.1sp1 で動かない

ついこのあいだ、4.0.2で動かないとか言う話を書きましたが、今度は4.0.1sp1でも動かないと言う経験をしました。

続きを読む "JBoss 4.0.1sp1 で動かない" »

JBoss 4.0.2 で動かない

わたしは意外と新しいもの好きだったりします。

昨日も、JBoss が新しくなっているのを発見して、早速 4.0.1sp1 からバージョンアップを敢行。

それなりに動いているなぁと思っていたら、一部サーブレットのプログラムでおかしな例外を発生させることがあることに気がつきました。

続きを読む "JBoss 4.0.2 で動かない" »

JBossの拡張ライブラリ

今日書くことはまったくもって正しいかどうか自信がありません。

必要があって、やったことがうまく動いたので覚え書き的に書いておくと言うことです。

続きを読む "JBossの拡張ライブラリ" »

ダウンロード一覧

技術文書としてまとめるのではなく、ただのリンクとして使えば良いと言うのはおいておきましょう。

これを書く気になったのは、ちょっとした調べごとがあって、MySQL のサイトをのぞいたのがきっかけ。いつのまにやら、新しいバージョンが公開されており、他のソフトでも変わっている奴がないものか一通り調べようとしたら、まとまっているところがありません。それなら作っておこうと思った次第。

では、以下にダウンロードサイトを一覧しておきましょう。

だいたいこんなもんですかね。

JBoss/Tomcat/JSTL/EL

さてと、今日はどこかで見かけたような単語を羅列した表題で書いてみます。

自分でいろいろと設定したものの覚え書きです。

続きを読む "JBoss/Tomcat/JSTL/EL" »

MySQL と Java

ここのところ、Java な案件が多くなんだかんだ言っても世の中ちょっとはちゃんとしたプログラム言語で組もうと考える人が多くなってきたのかなと言う印象です。

続きを読む "MySQL と Java" »

PostgreSQL と MySQL

PostgreSQL と MySQL は、オープンソースプロダクトとしてリリースされ、ともに業務にも十分に使えるデータベースシステムです。

この二つのデータベースシステムを使用していると、自分がどっちを操作しているのか分らなくなり、MySQL 上で PostgreSQL 向けのコマンドを叩いて、「あれ?」とか思ってしまうことが多々あります。

続きを読む "PostgreSQL と MySQL" »

ssh ポートフォワード

通信経路を暗号化したいと言うのは、インターネットを使用していると常に出てくる要望だろうと思われます。

ここでは、sshを使用して通信経路を暗号化させる方法を示します。

続きを読む "ssh ポートフォワード" »

ssh をパスワードなしで使用する

バックアップ処理をバックグラウンドで走らせたりする際、パスワードを必要としないアカウントがあると便利です。

続きを読む "ssh をパスワードなしで使用する" »

アーカイブ