Visual Studio 6.0 が MSDN からダウンロードできない理由
以前からMSDNにVisual Studio 6.0がないのを不思議に思っていたのだが、最近になってその理由のページを見つけた。
http://msdn.microsoft.com/ja-jp/subscriptions/dd179309.aspx
Windows 2000 も同じ理由で、なかったのね。
今となっては不要だけど、当時はMSDNからダウンロードしたかった。
sendmail の第三者中継で悩んだ
#ドメインはすべて例です。
example.co.jp のメールサーバを設定中、第三者中継が行えるように見えて、悩んだ。
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 対応
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 の書き方を変更して解決