nDiki : Win32

Win32

Win32 API のこと。

2006年12月15日 (金)

Perl テストスクリプトの中で標準エラー出力を一時的に止める

make test で実行するテストスクリプトの中で、標準エラー出力を止めたい場合がある (わざとエラーを起こす時など)。

Perl 5.8.8 の ExtUtils/MM_Unix.pm を参考に

  {
    local *STDERR_COPY;
    my $duped = 0;
    $duped = 1 if open(STDERR_COPY, '>&STDERR');
    open(STDERR, '> ' . File::Spec->devnull()) if $duped;
    my $result = `$command`;
    my $status = $?;
    open(STDERR, '>&STDERR_COPY') if $duped;
  }
  warn "This message is printed to STDERR\n";

としてみた。 LinuxWin32 ではとりあえずうまくいって動いている。

追記

(open が2引数なのは、当時古い Perl バージョンでも動くように書いたから)


[ Perl テストスクリプトの書き方 ]

スポンサード リンク
[ 12月15日全て ]

2007年2月9日 (金)

XAMPPWiKicker を動かしてみた。PPM インストール OK。

Perl で書いた Web アプリケーションのポータブルな Win32 デモ環境として XAMPP を使ってみるとどんな感じになるか試してみた。

使ったバージョンは以下。

(http://www.apachefriends.org/jp/xampp-windows.html)

C: ドライブで試す

それぞれ 自己解凍型 7-ZIP アーカイブをとってくる。 最初に XAMPP を展開し、次にその xampp ディレクトリの中で Perl アドオンを展開。 xampp ディレクトリを c: の直下に移動する。

次にコマンドプロンプトを開き c:\xampp\perl\bin へ移動後 ppm コマンドを起動して作成済みの PPM パッケージインストールする。 インストール先は \xampp\perl 以下とドライブ無しのパスで指定されているようで、問題なく必要な Perl ライブラリをインストールできた。

次に \xampp\xampp-control.exe を実行して GUI 管理ツールを立ち上げ、その画面から Apache を起動。 普通の Win32Apacheインストールしてある PC だったため、xampp-control から Apache を起動したらそちらが立ち上がってしまったが、これは Svc にチェックが入っていたからだった。Svc を外せば \xampp 以下の Apache がきちんと起動する。

あとは \xampp\htdocs 以下で WiKicker CGI プログラムの配置や設定ファイルを作成すれば OK。 もともと WiKicker は相対パスだけで動くようになっている*1ので、問題なく実行することができた。

*1多分

他のドライブに移す

一度セットアップできた \xampp ディレクトリを TrueCrypt 仮想ドライブにコピーして起動してみた。

こちらも問題なく OK。

ということで XAMPP でお手軽に Perl CGI プログラムの動く Web サーバ環境を作れることを確認できた。

問題があるとすれば XAMPP + Perl アドオンが馬鹿でかいところか。400MB オーバー。 今回何が一番時間がかかったかって、XAMPP + Perl アドオンを展開した直後の xampp ディレクトリを、後でまた使えるように 7-ZIP の最高圧縮する処理に時間がかかった。 使っている PC では 50分以上かかったよ。

[ 2月9日全て ]

2007年10月18日 (木)

今日のさえずり - 最近 CM で「しりあがり寿」の名を見る。うちでは画伯扱い(ほぼ日手帳の影響)。

  • 10:17 プロジェクトのスケジュール共有用に Google カレンダー上に、1つカレンダーを新規作成。 *Tw*
  • 10:50 GNU Make (Win32) では変数を設定しても、そのままではコマンド実行時の環境変数には入らないことを思い出した。 *Tw*
  • 11:57 最近 CM で「しりあがり寿」の名を見る。うちでは画伯扱い(ほぼ日手帳の影響)。 *Tw*
  • 12:32 着もと化した。 *Tw*
[ 10月18日全て ]

2007年11月22日 (木)

今日のさえずり - ふぁぼったーのフィードを Google リーダーに登録

[ 11月22日全て ]

2009年2月23日 (月)

PARDLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら

 Can't locate loadable object for module PDL::Core in @INC ...

というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。

いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。

ファイル名の大文字・小文字が問題だったらしい。 PARFAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。

以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。

[ 2月23日全て ]

2010年3月31日 (水)

今日のさえずり - 題名のない音楽会公開収録終了

2010年03月31日

  • 09:55 GCMG から Google カレンダーへのアクセス許可を取り消した。
  • 12:05 ロースかつ丼(昼食) 498円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 13:38 BOSS 贅沢微糖 100円。
  • 13:40 Uncrustify 0.56 の Win32 用バイナリが出てる。
  • 17:06 これからデート。 @nyafuru スルドイ。
  • 17:12 ピックアップ。 (@ 秋葉原駅 w/ 6 others) http://4sq.com/68fhHr
  • 17:46 東京オペラシティ到着。
  • 20:46 題名のない音楽会公開収録終了。リピートしたくなるな、これ。
  • 23:39 AndroidTwitter クライアントはどれがいいのかな。twicca が評判が良いので最初はこれ使ってみようかと思ってる。 #twicca
  • 24:20 @yunzo77 「題名のない音楽会」都合が悪くなった人がいて入場整理券もらったんですよ。けっこう倍率高いんですか?
  • 24:31 Gmail からiモードメールアドレスへのフィルタ転送全て停止。
[ 3月31日全て ]

2010年4月30日 (金)

今日のさえずり: 情熱が感じられないか

2010年04月30日

  • 09:56 誰かって私しかいないよね。どこのサイズが必要? RT @as_tone: 朝一イケアやってみた。しかし、四角い植木鉢のサイズを測ってこなかったことに気付く。誰か教えて!早く!
  • 10:12 メジャーがみあたらない。
  • 10:23 @as_tone メジャー借りました。植木鉢の下部は 7cm 四方でした。
  • 10:41 @as_tone あの白い植木鉢の底が 7cm x 7cm でしたよ。
  • 12:04 牛丼 350円。 (@ なか卯 神田佐久間町店) http://4sq.com/9tdwTs
  • 12:47 [note] Xperia で PandaHome 5画面にしたときの壁紙スクロール http://goo.gl/fb/RJZxW
  • 13:03 LEXER RESEARCH Inc. の Web サイトがリニューアル。 http://bit.ly/b7QzCz
  • 14:29 @as_tone よさそげなのがあったら写真写真
  • 14:49 マンスリーレポート先月まで pLaTeX2e で書いていたけれど、今月は Google ドキュメントにする。
  • 17:20 久しぶりに XAMPP for Windows ダウンロードしている。
  • 18:54 やっぱり XAMPP for Windows デカすぎなので、Apache は 本家 Win32 インストーラインストールしたものをコピーして使うことにした。PerlStrawberry Perl にするつもり。
  • 20:24 ヴィ・ド・フランス皿 GET。
  • 20:30 帰宅。ゴールデンウィーク突入です。
  • 20:54 紹介ありがとうございます。面白そうですね。 RT @OK2nd: @Naney XAMPP上で動作するWebポータルシステム「MyHome Portal」はいかがでしょう。 http://ok2nd.web.fc2.com/
  • 20:58 @OK2nd 今回は Perl ベースのあるシステムをセットアップしてアーカイブし、後は別の PC でも展開すれば動くようにしたいのでちょっと方向が違いますね。
  • 21:16 10万人の交通安全カブト一斉装着計画って本気なのか?
  • 21:27 ホーム3画面では足りなくなってきたので PandaHome を入れて5画面にしてみた。まだまだスペースがあるのでこれ以上増やす必要はないかな。ウィジェット動かしすぎると重くなりそうだし。 #Android #Xperia
  • 21:46 今思うと植木鉢ほんとうに 7cm だったか不安になってきた。メジャー読み間違えてたかな。
  • 24:48 情熱が感じられないか。
[ 4月30日全て ]

2010年7月2日 (金)

今日のさえずり: バックで逆走って、どこまで許されるの?

naney:4767516521

2010年07月02日

[ 7月2日全て ]

2010年11月11日 (木)

今日のさえずり: 私の隣の席は空席ですがゴミ捨て場ではありません

2010年11月11日

  • 09:32 @yamakiyo そういえば iPhone アプリは何を作ったの?
  • 11:03 Frame Grabber for Xperiaインストールしておいてみた。
  • 12:34 @yamakiyo おお、ぜひブラッシュアップして公開を。
  • 12:35 おにぎりとパン 310円。
  • 13:07 U+00A0 にちょっぴりハマってた。
  • 14:13 肩が冷える感じなのでフリース着用。この間洗濯して持ってきたやつ。
  • 14:22 Growl for Windows で通知が他のウィンドウの上に出たり下に出たりするの何とかならないかな。いつもトップでいいんだけれど。
  • 14:48 Smokestack だからか。 Plain だと最前面になる。 RT @Naney: Growl for Windows で通知が他のウィンドウの上に出たり下に出たりするの何とかならないかな。いつもトップでいいんだけれど。
  • 15:20 TranslucentDark にした。 RT @Naney: Smokestack だからか。 Plain だと最前面になる。 RT @Naney: Growl for Windows で通知が他のウィンドウの上に出たり下に出たりするの何とかならないかな。
  • 15:26 管理グループ長がたしか、クラウド コンピューティングEXPOに行ったはずなんだけれど、一体何を見にいったのだろう。 http://bit.ly/9j0noo
  • 16:13 substr の長さ間違えてて最後の1桁読んでなかったとか。
  • 16:37 私の隣の席は空席ですがゴミ捨て場ではありません。
  • 17:33 Win32::FileOp って2003年のが最新版か。ちょっと古いな。
  • 19:41 ボジョレー・ヌーヴォー来週か。でもとは別行動の日なんだな。
  • 21:03 Amazon.co.jp はカラー違いで値段違いすぎ。
  • 21:46 土曜日 11:20 ぐらいから東京駅構内(改札内)で軽く食事とるのどこがお薦めだろう。
  • 22:12 @zakwa やはりカフェ系が手軽よさそうですね。東京駅内は変化が激しくて Web では調べにくくて。
  • 22:14 Dila東京どうかなと思ってたんだけれど、2010年9月5日で閉鎖かあ。
  • 22:42 何か外で猫がギャーギャー鳴いてる。発情期っていつ?
  • 22:47 そういえばほぼ日手帳2011の BLACK CASE ってもう発売してたんだ。そして初回入荷分は完売。カバーのみで12,000円て予想より高いでやんの。
  • 22:49 それに「ほぼ日刊イトイ新聞」ってロゴが PORTER ロゴの上にあるので、なんか雑誌連動ものっぽくてザンネンな感じ。
  • 22:59 「自動システムでは「nDiki」という名称は認められません。詳しくはこちら」
  • 24:01 少なくなくなってきたアラビックヤマトをブシューブシューってしたい。
  • 24:02 アラビックヤマトは1975年9月発売開始か。
  • 00:06郵便局にあったのって壺糊だったよね。
  • 00:10 せっかく XperiaAndroid 2.1 にしたので "Android 2.1 以降" で検索してみる。
  • 00:21 "Android 2.1 以上" の方が良さそげ。
  • 00:41 Facebook の公式 Android アプリケーションだとファンページは見られないのかな。
[ 11月11日全て ]

2011年2月21日 (月)

Visual C++ Win32 コンソールアプリケーションへのメモリリーク検出の埋め込み

Visual C++ 2005 で開発のプログラムがどうもメモリリークしているっぽい。 メモリリーク検出を仕込む方法のメモ

stdafx.h

デバッグバージョンのヒープ割り当て関数を使うようにするマクロ定義と crtdbg.h のインクルードをする。 メモリリーク情報ダンプの際にレポートにファイル名と行番号が出るように new を書き換えるマクロを定義する。

 // デバッグバージョンのヒープ割り当て関数を使うようにする。
 #ifdef _DEBUG
 #define _CRTDBG_MAP_ALLOC
 #include <stdlib.h>
 #include <crtdbg.h>
 #endif

 // _CRTDBG_MAP_ALLOC に関係なくプリコンパイルしたいもの。
 // かつ new を書き換えるとコンパイルが通らなくなるヘッダファイル群。
 #include <string>

 #ifdef _DEBUG
 // プリコンパイルするほどではないけど、
 // new を書き換えるとコンパイルが通らなくなるヘッダファイル群。
 // 例えば。
 #include <map>

 #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
 #endif

 // プリコンパイルしていもの。
 #include <myproj/utility.h>

main 関数

終了時にメモリリーク情報をダンプさせるようにする。 また、コンソールアプリケーションの標準エラー出力にレポートが出力されるように設定する。

 int main(int argc, char* argv[]) {
   // 終了時にメモリリーク情報をダンプさせる。
   _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);


   // レポートをファイルに書き出させる。
   _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
   _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
   _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);

   // レポートを標準エラー出力に出力させる。
   _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
   _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
   _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);

   // 処理を開始。
   ...
 }
[ 2月21日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.060963s / load averages: 0.57, 0.54, 0.53
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker