とあるシステムで、.NET Framework 2.0 が存在していることを前提として作成したものの、実際に運用される環境を調査していたら、意外と .NET Framework 2.0 が入ってないマシンが多いことに気がついてしまった。
少なくともプログラムを実行して、何がおきたかわからない状態になることを防ぐため、.NET Framework 2.0 が入ってなければ Windows Update のサイトへ誘導する仕組みを作りこむこととなった。
続きを読む ".NET Framework のインストールを確認する" »
OpenCV で画像の読み書きを行なう際、JPEG に関して品質を指定できるはずなのに、そんなパラメータを渡す方法が存在しないような感じだなぁと思ってちょっと調べてみた。
普通に渡す方法があることをご存知の方は教えていただけると幸いです。
続きを読む "OpenCV の jpeg 保存" »
客先では日本語 109 キーボードを使わざるを得ませんが、自分のパソコンでは、Happy Hacking Keyboard Lite を使い続けています。
すでにパソコンの本体は何台目かわかりませんが、キーボードだけはこれをずうっと使い続けていたという話。

で、ノートパソコンとして Mac Book を手に入れたのでありますが、これも持ち歩いているときは当然ながら本体のキーボードを使用しますが、戻って来たときにはこれまたいつものキーボードを使いたいもの。
続きを読む "Happy Hacking Keyboard Lite を MacBook で" »
Windows Xp 上で、手がすべって、たまたまエクスプローラのタイトルバーにあるアイコンをドラッグアンドドロップしてしまった。
何が起きたかと言うと、表示中のフォルダへのショートカットが作られたと言う話。
続きを読む "エクスプローラのタイトルバーアイコンをドラッグアンドドロップ" »
fopen の man ページを眺めていたら、m なるモードがあることを発見してしまった。(遅
サンプルのプログラムでその結果がどうなるのかを確認してみることにしました。
続きを読む "fopen の m 指定で mmap" »
apache 2.0 のころに、負荷分散を行なったときのメモ。
2.2 系が標準的な負荷分散の仕組みを持つようになったため、今となっては不要な内容ではありますが、なかなか古いサーバを入れ替えられないと言うところもあるかもしれませんので。
続きを読む "apache ロードバランシング" »
ここでは、Linux の debian etch 環境でと断りをした上で書かせていただきます。
これは、他の unix like な OS でも動作が異なりますし、同じ Linux と言っても動作が異なることがあったりしますので、注意が必要です。
続きを読む "スクリプトに setuid / setgid すると?" »
そこらへんに転がっていた、PATA なハードディスクを有効利用しようと言うわけで、まだ使ってない同サイズの SATA なハードディスクと組み合わせて、ソフトウェア RAID を組んでみようとして、はまりにはまってしまいました。
ハード的におかしくなってるのかと疑ってみたりしましたが、個別に調べてみる範囲ではおかしくなっているようには思えない状況。
続きを読む "SATA / PATA Software RAID" »
ちかごろの Linux は、Windows の共有を普通にマウントできるようになっています。
が、なぜか、マウントしようとするとエラーが起きて素直にマウントできないという状況を経験しましたので書いておくことにします。
続きを読む "smbfs/cifs のマウント" »
社内用のドメイン名として準備していた dear-jpn.co.jp.local が Debian なマシンから名前解決できないという現象が出たのでその顛末を。
続きを読む "フルドメイン名で名前解決できない" »
以前 Windows 環境にて stdio 関数を使用してファイルのコピーをやったことがありましたが、2G を超えるファイルをうまく取り扱えなかったことがあります。
今回は、Linux で stdio 関数を使用して大き目のファイルをコピーするプログラムを書いてみましたのでその顛末を。
続きを読む "標準関数を用いてファイルをコピー" »
Visual Studio 6.0 は、古めの OS をサポートするツールの類を作るときには、まだまだ現役と言える開発ツールです。
とはいえ、さすがにデザインの古さはなんともしがたく、いまどきのタブを使ったファイルの参照が標準ではついてなかったりします。
続きを読む "Visual Studio 6.0 でタブを使う" »
メインの作業マシンを 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" »
社内のマシンの認証は、Windows 2003 Server がやっているのですが、これと NIS でパスワードを共有している Linux マシンでなんとパスワードの 8 文字目までしか認識されていないと言うとんでもない設定になっていたことに気がついてしまいました。
恥さらしシリーズ(けっこうな数投稿しているような気が)としてこいつもメモっておくことにいたしましょう。
続きを読む "パスワードが8文字までしか認識されない" »
スレッドのサンプルと言うことで、どんなものを作るかと言う話を前回やりましたので、今回は実際にちょこちょことコードを書いてみましたので、紹介しておきます。
続きを読む "スレッドのサンプルその2、イメージビューワ" »
現在メインの作業マシンが Windows 2000 になっているとか書きましたが、Windows 2000 を使っていて、いきなり「うむっ」と思ってしまうのが、コマンドラインでタブキーを使っても補完が効かないこと。
Windows Xp 以降ではデフォルトで、タブキーが補完のキーになっており、bash やらを使っているのと同じような感覚で使えるのですが、なぜか Windows 2000 では、この設定が行なわれていません。
Windows 2000 のコマンドプロンプトでも設定さえきちんとしてあげれば補完が使えるようになりますのでその方法を紹介。
続きを読む "Windows 2000 のコマンドプロンプト" »
なにやらメモリマップトファイル関連の話題が続いていますが、今回はメモリマップトファイルで作成したファイルを切り詰める話を書いておこうと思います。
続きを読む "メモリマップトファイルで作成したファイルを調整する" »
うちの会社では、いまだに Visual Studio 6.0 を使ってたりするのですが(なんでまたこんな古いのを使っているのかと言う話は別の機会に)、VS6 で、*.c ファイルをコンパイルするときに、windows ヘッダをインクルードしていると警告レベル 4 で怒られるという現象が出ます。
続きを読む "VS6 で、*.c をコンパイルすると警告が出る" »
何度かこのブログで Windows のメモリマップトファイルを取り上げていますが、実際に積まれた実メモリを超えるようなサイズの処理を行なわせると、スラッシングにも似た現象が発生して、処理が劇的に遅くなると言う点を指摘してきました。
で、この現象を発生させなくする方法をようやく発見したので紹介しておきます。
続きを読む "メモリマップトファイルでスラッシング" »
Visual Studio 2005 を使用していて、rand() 関数を使用して、配列をばらばらに並べ替えていたときのこと。
なんか、ちっともランダムじゃないような気がする。。。
もちろん、Visual Studio の rand 関数が線形合同法を使っていて、この線形合同法の問題点はわかった上で書いてます。
続きを読む "rand() の最大値 RAND_MAX" »
さっきまで書いてたファイルのコピー話の実装をテストしていたときの話。
メモリマップトファイルを使用するとスラッシングに似た現象が発生して、まともに動かない状態になったとか書きました。
この状態に陥ると、なんと Ctrl+Alt+Del にすら反応せず、お手上げ状態になってしまいます。
こんなときでも、とにかく処理を終わらせて、リブートさせる方法がありますので紹介しておきます。
続きを読む "Windows のリモートリブート" »
今回は Windows 環境でのファイルのコピーにこだわってみました。
試してみたのは、fopen, fread, fwrite, fclose と言う stdio 系の関数を使うものと、Windows API である CopyFile、そしてメモリマップトファイルの 3 つとなります。
コーディングが一番楽チンなのは、CopyFile を使うものとなりますが、処理速度でどんな結果が出るのか、さまざまな条件下で試してみることにしましょう。
続きを読む "ファイルのコピーにこだわってみる" »
mantis と言えば、それなりにあちらこちらで使用実績があがりつつあるバグトラッキングシステム。
subversion は、ソースコード管理システムとして定番となった感があるシステム。
両方を統合できたら幸せになれる人は多いと思うのでメモを残しておきます。
まずは参考となる URL を示します。
mantis も version 1.1 になって、連携機能が標準機能として組み込まれたと言う話を聞いたことがあるのですが、残念ながらその方法を書いた文書を見つけることができていません。
結局これまでにインターネット上で書かれたものを一通りまとめてみたのが今回のメモとなります。
続きを読む "mantis / subversion 連携" »
実数の比較で恥をさらしましたが、今回は、C のプリプロセッサの動作で恥をかいたのでさらしておきます。(汗
続きを読む "32 ビット、64 ビット ?" »
Windows 2000 には、標準で shutdown コマンドがないという話をこないだ書きました。
んで、そのときには、同じマシンにインストールされている Xp の shutdown コマンドを使いました。
今回、Windows 2000 のみのクリーンインストールを行ないましたので、この shutdown コマンドが使えなくなってしまったのが困りもの(Xp なマシンからコピーして来るってのはライセンス的にまずいと思う)。
そんなわけで、ちょっと調べて shutdown コマンドを作ってみましたので紹介しておきます。
続きを読む "Windows 2000 用の shutdown コマンド" »
ちょっと前に最近の 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 復活" »
subversion には、ファイルをコミットしたタイミングで何かを実行するということが可能なように、フックと言う仕組みが組み込まれています。
この仕組みを利用すると、ウェブコンテンツをコミットすると、そのタイミングでサーバ側で svn update を実行することができます。
つまりは、自分で使用しているマシン上でウェブコンテンツの作成を行ない、それをコミットするだけでウェブに公開することができるようになるわけです。
続きを読む "subversion で、ウェブの保守" »
Windows なら Windows だけ、Mac なら Mac だけ、Linux なら Linux だけの世界で開発が完了するなら良いのですが、なかなかそうも行きません。
特に Web 系の開発作業だと、どうしてもデザイナさんが使用する OS と、プログラマが使用する OS とが別のものになってしまうものです。
となると、スクリプトを埋め込んだ行とデザイナさんが編集した行との間で改行コードに違いが出てしまって、わけのわからないエラーに悩まされるということがあるものです。
このような現象を解決する仕組みが subversion には組み込まれており、各々がきちんと subversion からファイルを持ってきて作業を進めれば先に示したような改行コードの問題を回避することが可能となります。
続きを読む "subversion と改行コード" »
信頼の積み重ね
今回の GetGCD と GetLCD では、まず GetGCD をしっかりとテストを行ない、その上で、GetGCD を使用する GetLCD を作成しました。
おかげさま(?)で、GetLCD のテストを行なっておかしな結果が出てきたときに、GetGCD を疑うことなく、GetLCD の範囲だけでデバッグが進行しました。
信頼できる関数だけを使用してデバッグしていくわけですから、基本的にその信頼できる関数をデバッグする必要がなくなり、めんどうなように見えて、結局は相当に効率的な作業ができるようになっています。
最初に CppUnit を導入して感じることは「とにかくめんどうくさいことが多い」ということでしょうが、それを乗り越えてしまうと、今度は逆にこれがないと「不安でしかたがない」と言う感覚に徐々に変わっていくものです。
ぜひ皆様もこのツールを使ってみて、その威力を体感していただければ幸いです。
このブログがそのきっかけとなっていただければ幸いです。
続きを読む "CppUnit 再び(信頼の積み重ね)" »
GetLCD
ながらくかかってしまいましたが、残っている GetLCD の方を片付けてしまうことにしましょう。
GetLCD は、最小公倍数を求めることになりますので、ふたつの 32 bit 整数を引数として渡した場合に、返ってくる値は最大で 64 bit の幅が必要になります。
現実的に 64 bit 幅必要かどうかはわかりませんが、ここでは Visual Studio .NET 2005 にばりばり依存してしまうことにして、GetLCD はこんな感じに定義してみました。
__int64 GetLCD(int n1, int n2);
続きを読む "CppUnit 再び(テストはつづくよ)" »
さて、次はどんなテストを準備しましょうか。
今回の GetGCD は、引数として整数を二つ取ります。
整数と言われたら、その整数すべての組み合わせをテストしなければなりませんが、それはあまりにも現実的ではありません。
続きを読む "CppUnit 再び(さらにテストの追加)" »
CppUnit の本題からちょっと離れますが、ここでメモリリークチェッカの設定を行なっておきましょう。
Visual Studio 標準のメモリリークチェッカを設定しておくことで、プロジェクトの後半になって悩まされるメモリリークを撃退しましょう。
続きを読む "CppUnit 再び(メモリリークチェッカ)" »
プロジェクトの設定
それでは、例題を使って、CppUnit の使い方を見ていくことにしましょう。
続きを読む "CppUnit 再び(プロジェクトの設定)" »
インストール
何はなくともまずはインストール作業から。
ここでは、現段階で使う人が一番多いと思われる、Visual Studio .NET 2005 を Windows 上で使えるようにするところまで。
続きを読む "CppUnit 再び(インストール)" »
cygwin は、Windows 上で Linux ライクなツール群を使うことができる便利な環境です。
某氏も cygwin 大好き人間なのですが、UNC 名を取り扱うのがめんどうくさいのが嫌いだと言っていたので、「へ?」と思って聞いたらこういうことらしい。
続きを読む "cygwin からファイルサーバにアクセスする" »
NTFS のAlternate Data Stream(ADS) ってのを調べてます。
なんでこんなものを調べ始めたかと言うと、手持ちのビデオを IEEE 1394 インターフェース経由で取り込んだファイルをいったん NTFS ファイルシステム上に置いて、それを samba で公開している場所に置こうとしたら怒られてしまったと言うのがその理由です。
ちなみに、Windows Xp では特に怒られることなく素直にコピーすることができました。
どうやら、Vista になってからこのチェックが行われるようになったみたいです。
続きを読む "代替ストリーム/alternative data-streams/Alternate Data Stream" »
詳細は、また別の機会に書きますが、社内のネットワークで DHCP と DNS の連携を行ないました。
設置してあるマシンのうち Windows マシンはうまいこと DHCP からアドレスを取得できて、かつ DNS にも名前が登録されるのですが、Linux マシンがうまく行きません。
きちんと DHCP でアドレスを取得できるのですが、DNS のエントリは空っぽになってしまうのです。
ところが、このような状態であるにもかかわらず、Windows マシンからは Linux マシンに向けて ping を打つ(もちろんマシン名を使って)ができてしまうから困りもの。
はてさて原因は?
続きを読む "DHCP / DNS 連携で、名前解決できない。" »
通常、make install では ./configure --prefix=/path/to/packageroot で指定したディレクトリへインストール作業を行ないます。
このとき、ディレクトリツリーのルートは当然ながら / と仮定されますが、この / を変更することが出来ればインストール作業でいったい何が起こるのかを確認することができることになります。
主にパッケージメンテナ向けの機能と思われますが、PC 管理者にとってもそれなりに有効と思われますのでメモとして残しておきます。
続きを読む "make install のルートを変更する" »
以前、cygwin のバイナリ配布の中に、libtool を見つけられなかったと言う話を書きました。
ソースコードを拾ってきてビルドしたら、特に何の問題も無く使用できるようになったのでそのメモを。
続きを読む "libtool on cygwin" »
ここまでの作業で、Linux 上と Windows 上で完全に同一のソースコードをメンテナンスする仕組みが構築できました。
次は、Windows 上でありながら、Linux っぽい環境を構築できる cygwin 上でも同じコードが使えるかどうかを試してみましょう。
これで、三つの環境に対応できるソースコードツリーを得ることが可能になります。
以下、参考となるリンクを。
また、続き物(?)ですので、これまでに書いてきた内容を以下に。
続きを読む "Autotools cygwin" »
プロジェクトを作るたびに CppUnit のテストを作って、、、おーい、64 ビット版の CppUnit(Windows 版) がないじゃないですか。
というわけで、はりきって構成を作り直してコンパイル。
問題いっぱいありましたが、なんとかバイナリを作ることができましたので、置いておきます。
けっこうでかいので注意くださいませ。
続きを読む "CppUnit 64 ビット版(Windows/Visual Studio)" »
以前、画像縮小の話を書きましたが、今回は具体的なコードを用いて画像縮小をやってみることにしましょう。
というわけで、まずは、関連するページへのリンクを列挙。
続きを読む "OpenCV を用いた画像縮小" »
システムの最低限のメンテナンスを行なうために、grub が立ち上がるだけの最低限のブータブルCDを作成してみました。
作成した環境は、debian etch です。
参考資料は以下のとおり。
続きを読む "grub ブート CD の作成" »
以前、Xen を Debian 上に構築しましたが、今度は Ubuntu 上で構築作業を行なってみました。
題して「Ubuntu on Ubuntu」
続きを読む "Xen - Ubuntu on Ubuntu" »
自分が使用している環境には間違いなく Java が入っているのですが、入っていない環境が意外と多いことについ最近気がついてしまいました。
やっぱり、なんだかんだ言っても、C/C++で、バイナリ一式持って行くだけで動くってのは強いってことなんでしょうかねぇ。
続きを読む "Xerces/Xalan で、XML 変換" »
わたしの手元にはすでに相当に古くなったデジカメが存在している。
いまどきシリアルポートで制御するようなデジカメをいったい誰が持っているだろう?
続きを読む "gphoto2 でカメラからデータを削除" »
メモリマップトファイルを使用するのとファイル処理をやるのとどっちが速いのか?
いきなりですが、以下のプログラムを見ていただきたい。
続きを読む "Win32 環境のメモリマップトファイル" »
こんな要件のプログラムを書く必要がありました。
- けっこう大きめの構造体を大量に使用する。
- 構造体ひとつのサイズは10240バイト。
- これらの構造体20万個のセットを二組同時に使用。
すでに少ない個数でテストの済んだコードが手元にあったのですが、テストの過程で1セット10万個にしたあたりからメモリオーバーのエラーが出始めました。
続きを読む "Win32 環境で 2G を超える配列を使う" »
Plamo Linux と言いつつ、実は作成中の NASUBI へのパッケージ作成の方法としてメモを作成。
続きを読む "Plamo Linux 用パッケージの作成方法" »
ちょっとした負荷テストを行なうのに、apache に付属の ab コマンド(Apache Bench)プログラムが便利に使うことが可能です。
先日ちょいと顧客さんの環境内において負荷試験をやる機会があり、一瞬はまった話を書いておこうと思います。
続きを読む "Apache Bench(ab) の小ネタ" »
ついこのあいだ、4.0.2で動かないとか言う話を書きましたが、今度は4.0.1sp1でも動かないと言う経験をしました。
続きを読む "JBoss 4.0.1sp1 で動かない" »
わたしは意外と新しいもの好きだったりします。
昨日も、JBoss が新しくなっているのを発見して、早速 4.0.1sp1 からバージョンアップを敢行。
それなりに動いているなぁと思っていたら、一部サーブレットのプログラムでおかしな例外を発生させることがあることに気がつきました。
続きを読む "JBoss 4.0.2 で動かない" »
さてと、今日はどこかで見かけたような単語を羅列した表題で書いてみます。
自分でいろいろと設定したものの覚え書きです。
続きを読む "JBoss/Tomcat/JSTL/EL" »
PostgreSQL と MySQL は、オープンソースプロダクトとしてリリースされ、ともに業務にも十分に使えるデータベースシステムです。
この二つのデータベースシステムを使用していると、自分がどっちを操作しているのか分らなくなり、MySQL 上で PostgreSQL 向けのコマンドを叩いて、「あれ?」とか思ってしまうことが多々あります。
続きを読む "PostgreSQL と MySQL" »
バックアップ処理をバックグラウンドで走らせたりする際、パスワードを必要としないアカウントがあると便利です。
続きを読む "ssh をパスワードなしで使用する" »