Visual Studio 6.0 が MSDN からダウンロードできない理由

以前からMSDNVisual Studio 6.0がないのを不思議に思っていたのだが、最近になってその理由のページを見つけた。

 

http://msdn.microsoft.com/ja-jp/subscriptions/dd179309.aspx

 

Windows 2000 も同じ理由で、なかったのね。

 

今となっては不要だけど、当時はMSDNからダウンロードしたかった。

sendmail の第三者中継で悩んだ

#ドメインはすべて例です。

example.co.jp のメールサーバを設定中、第三者中継が行えるように見えて、悩んだ。

 

$ telnet mail.example.co.jp 25
Trying XXX.XXX.XXX.111...
Connected to mail.example.co.jp (XXX.XXX.XXX.111).
Escape character is '^]'.
220 unknown ESMTP
EHLO example.jp
250-example.co.jp Hello example.jp [XXX.XXX.XXX.222], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
MAIL FROM: <test@yahoo.com>
250 2.1.0 <test@yahoo.com>... Sender ok
RCPT TO: <test@gmail.com>
250 2.1.5 <test@gmail.com>... Recipient ok
QUIT
221 2.0.0 example.co.jp closing connection
Connection closed by foreign host.

 

いろいろ調べたところ、

テストのtelnetを行ったクライアントの逆引きが example.jp で

/etc/mail/local-host-names に example.co.jp に加え example.jp の記述があった。

local-host-names から example.jp の記述を取り除き、

service sendmail restart で sendmail 再起動(必要)したところ、

(略)
MAIL FROM: <test@yahoo.com>
250 2.1.0 <test@yahoo.com>... Sender ok
RCPT TO: <test@gmail.com>
550 5.7.1 <test@gmail.com>... Relaying denied. Proper authentication required.

 と無事、第三者中継を拒否するようになった。

VC++のBCMenuクラス内でプログラムが落ちる

VC++のBCMenuを使っている。

BCMenu : http://www.rocscience.com/~corkum/BCMenu.html

http://www.codeproject.com/Articles/22/Cool-Owner-Drawn-Menus-with-Bitmaps-Version-3-03 (3.033がダウンロード可能)

 

しかし、BCMenuクラス内で落ちることがあった。

 

・プログラム内で、以下のようにセパレータを追加

BCMenu* pSubMenu;

...

CMenu* pMenu = (CMenu*)pSubMenu;

pMenu->InsertMenu(2, MF_BYPOSITION|MF_SEPARATOR);

 

・その後、追加したセパレータを削除

・削除したセパレータより下にセパレータがあった場合、このセパレータの表示がおかしくなるもしくは、プログラムが落ちる

 

プログラムをおったところ、BCMenuData であるはずのものが、CString になってたりした。なので、上記の部分を発見。修正した。

 

(なぜ、CMenu* にキャストしていたかは謎。)

 

 

ついでに、BCMenu の2点おかしなところを発見。

1. 無意味コード

1426行目付近

    else if (nFlags&MF_STRING){
        ASSERT(!(nFlags&MF_OWNERDRAW));
        ModifyMenu(pos,nFlags,nID,mdata->GetString());
    }

は、MF_STRING が 0 なので、絶対に if文の中は実行されない

 

2. 無意味指定

1990行目付近

            if(!mdata)mdata=NewODMenu(j,
                state|MF_BYPOSITION|MF_SEPARATOR|MF_OWNERDRAW,0,_T(""));//SK: modified for Unicode correctness
の MF_BYPOSITION の指定は意味なし。

 

ソースを読む限り、BCMenuData->nFlagsに MF_BYPOSITION は、指定しても無意味。

Twitterコマンドラインクライアント shtter の Twitter API 1.1 対応

ツイッターLinux コマンドラインのクライアント shtter の Twitter API 1.1 対応のパッチ

https://lostman-worlds-end.blogspot.com/2010/05/openwrt_22.html?showComment=1373621194847#c28097559419757091

 

マージ済みのソース

https://github.com/lostman-github/shtter/tree/v1.1-patched

 

シェルスクリプトの中で投稿だけするために shtter を利用させていただいていたのだが、Twitter API 1.0 が完全停止され困っていたので、助かる。

 

(Twitter API v2 対応は 

Twitterコマンドラインクライアント shtter の Twitter API v2 対応 - 苦労する日々 )

VC6 で GetProcessId()

VC6 で ShellExecuteEx をしたプロセスのプロセスIDの取得に苦労。

GetProcessId() は、kernel32.dll に実装されているが、VC6 のヘッダにはないみたい。

以下で解決

typedef ULONG (__stdcall *GETPROCESSID)(HANDLE Process);

GETPROCESSID GetProcessId=(GETPROCESSID)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProcessId");
DWORD processID = GetProcessId(m_hProcess);

Windows7 急に起動を含むすべての動作が遅くなった。

現象: Windows7 急に起動を含むすべての動作が遅くなった。

 

検索して、HDD のライトキャッシュや DMA 設定などを確認したりしたが、ダメ。

 

いろいろ設定を確認していて気づいた。

原因:ソフトウェアRAID1 が再同期中

 

 

 

 

 

vSphere 上の CentOS5 でのHDD二つの時に、df で表示されるものと違う HDD がマウントされていた。

vSphere 上の CentOS5 でのHDD二つの時に、df で表示されるものと違う HDD がマウントされていた。

以下の状況


つまり、df の表示では、/dev/sda2 が / にマウントされているように見える。
(mount でも同様)
しかし、実際は /dev/sdb2 が / にマウントされている。
(fsck の結果参照)

dmesg を見たら、以下だった。

device-mapper: multipath: version 1.0.6 loaded
EXT3 FS on sdb2, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 2096472k swap on /dev/sda3.  Priority:-1 extents:1 across:2096472k

理由は不明

fstab の書き方を変更して解決