Windows Home Serverが
そいや、Windows Home ServerがMSDNでダウンロード可能になっているのね。
結構評判よさげなので、購入も考えてただけに、うれしい。
そのうち入れてみる。
そいや、Windows Home ServerがMSDNでダウンロード可能になっているのね。
結構評判よさげなので、購入も考えてただけに、うれしい。
そのうち入れてみる。
MD5値を返すExcelUDF(過去記事)から結構時間が掛ってしまったが、とりあえず。
なぜ時間が掛ったかというと、Excel2007とExcel2003以前の両対応にしたから。
#内部で使ってる自作クラスは未完成だけど・・・
本当は、1ページ使って公開するところなんだけど、予定完成形までにはまだいろいろと必要なので、ブログ記事として出しておく。
やってみてはじめてわかることばかり。
Excel2007SDKのヘッダで定義されている構造体について、設定によって異なるから困るとアラインメント?として書いたわけだが、結局、VisualStudioのデフォでOKらしい。
一応、#pragma pack(push,1)~#pragma pack(pop)で囲んでやってみたんだけど、例外発生してアウト。
囲まずにそのままなら問題なし。
まぁ、当たり前だけどさ。
でもさ、ちゃんとオフセット位置が固定になるように、定義されるべきだと思うのは今も同じ。
COMのようにエクスポートされていればいいんだけど、ヘッダファイルに定義されているだけじゃ、なんともなぁ。
プチトラブル64として、64bitVista上でのちょっとした問題点を挙げたのだが、回避策らしきものをやっと見つけたので。
32bitでは安定動作することは経験済みなので、ひょっとしたらと思ったわけだ。
[メモ] VS2008のC++エディタのIntelliSenseで書いたけど、下側がダメなんじゃなくて、全体的になんか動きがおかしい。
おかしいときには、.ncbファイルを削除して、自動再作成に任せれば復活するんだけど、どうしても、クラスメンバに対しても、有効なものと、効かないものがある。
.ncbファイルのサイズは30MBほど。
メモリ不足が原因かも知れない。
C++です。
Cではありません。
#いつものごとく、もしかすると間違ってるかも知れないので、要注意。
#当たり前すぎるかも知れないので、だとしたら恥ずかしいが、メモとして。
表題だけでは何を言いたいのかわからない(かも知れない)ので、前置きを。
手始めに。
int a[10];
int (&b)[sizeof(a)/sizeof(int)] = a;
これは、bという参照でaを読み替えているだけなので、aとbは同じメモリを使う。
そして、当然、sizeof(a)とsizeof(b)は同じ値になる(というより、同じでなければならない)。
まぁ、普通は、↓みたいな関数引数に使う技だと思う。
template <size_t size> void hoge(int (&arg)[size]);
配列数の情報が一発でやり取りできるため、非常に有効だと思う。
もうひとつ。
多次元配列を定義した場合、そのメモリ領域は、一度に確保されれば、連続している。
#はず。
なので、以下のようなコードが書けることは(よく)知られている(んじゃないかと思う)。
int a[10][10];
int *p = (int*)a;
for(int i = 0; i < sizeof(a)/sizeof(a[0][0]); i++)
{
p[i] = i;
}
sizeof(a)/sizeof(a[0][0])みたいなことは常套手段なんだけど、しかし、sizeof(p)/sizeof(p[0])といった、pを使ったコードには置き換えられない。
この点で、ポインタよりも配列のほうが情報量が多いということになる。
#配列サイズは実行時に動的に変わるものではないため、コンパイルまでだけど。
では、同じことができるコードを配列として書くにはどうしたらよいかというのが、問題。
[y][x]→[x * y]にするにはどうすればよいのかということ。
当然、コピーじゃなくて、同じメモリ位置を参照する方法で。
XLLを創る方法にあるコードなんだけど、xlAutoOpen内で呼んでるExcelの第3引数が10なんじゃないかと、思うのだがね。
少ない分にはなんとかなるのかも知れないけどさ。
っちゅうことで、コメント入れて修正しておいた。
なんか、こういうところにクオリティの低さが少なからずあるので、SDKのヘルプとかMSDNとかも鵜呑みにできない。
あの、127.0.0.1を削除しちゃうWindows Defenderの件。
常用のX60では警告が表示された記憶がないにも関わらず、"取り除く"で処理されている。
気付かないうちに、警告に従っていたのかも知れないが、Windows Defenderオプションの既定の操作で「推奨の操作(定義ベース)」になっていると、勝手に処理されてしまうようだ。
もしかしたら、SpyNetに参加していることも何か関係があるかも知れないけれど、それにしても、hostsからエントリを勝手に削除するのはいかがなものかと。
削除したのがWindows Defenderであることをコメントで記述しておくとか、なんとかできなかったのだろうか・・・
自分用メモなので、他のサイトを見たほうがいいかもね。
#間違ってるかも知れん。
CDHtmlDialogを継承してダイアログを作ると、入力要素の追加削除が文字列ベース(HTMLだからね)でできるので、いろいろと楽。
なんだけど、それらデータの設定や取得ができないとなんにもならんのでメモ。
昨年の福井(恐竜博物館)日帰りの写真が、骨だくさんって雰囲気じゃなかったので、追加した。
相変わらず整理下手かつ面倒なのでアップのみ。
日帰りの様子は過去記事にあるけど、プテラノ丼自体の写真は載せてなかったと思うので、一応。
以下、独り言。
なんか気になったので、試しに、もう一度スキャンして、「取り除く」を選択してみた。
したら、
127.0.0.1 localhost
だけが削除されるのな。
とりあえず、プライベートIPのほうは問題ないらしいので、あれは間違い。
それにしても、デフォルトであるものをどうして、"警告:中"にするのか。
やるなら、Windows Updateとかでパッチ適用だろうと思うのだが・・・
さて、127.0.0.1 localhostが無いと、いろいろ問題がありそうな気がするのだけども、dnsを引ける状態ならば名前解決はできるようなので、とりあえず放置して様子見ておくとする。
OutputDebugStringで書式指定ができるようにするコード。ただし、C++。
昔はどうだったかはわからんけど、今のOutputDebugStringはマクロなので、置き換えてしまえば良い。
Windows DefenderでSettingsModifier:Win32/PossibleHostsFileHijackが見つかったらしいので、確認すると、hostsファイル。
中身を確認しても、自分で編集した以外の情報はない。
編集してあること自体がチェック対象として認識されるっぽい感じだ。
確かに、hostsの書き換えは悪意を持ったサイトへの誘導方法としてはベタなのだが、それなら、プライベートIPは書かないだろ、普通・・・
とりあえず、「無視」を選択しておいたが、hostsは書き換えないものになったのだろうか?
超小規模LANの場合、DNSとかDHCP用意するより、固定IP+hostsファイル書き換えのほうが楽ってのが一般常識だったと思うんだけどなぁ。
永遠普遍な一般常識なんてものは無いんだけどさ。
以前、BlackJumbpDog(現時点で最新版)をVista64にインストールしたんだけど、どうも動作がおかしい。
リダイレクト処理で他サイトへ飛ぶようなサイトで、どうもサイト移動ができてないようなのだ。
たとえば、googleの検索結果をリンクすると、URLは切り替わるのに、アイコンは変わらないし、googleのトップページや、パスが見つからないといったエラーページが表示される。
#URLを直接打ち込んだり、リダイレクトがない状態では問題は発生しない。
どうも、ホスト名の振り分けができていないようなのだが、さすがに、64bitはインストーラも対応してないってことは、保障外動作なので、騙し騙し使うしかない。
この環境は、開発用なので、できれば安定動作してほしいんだけどなぁ・・・
やっぱり、創るしかないのか。
もしかしたら設定漏れかも知れないけど。
VS2008のC++コードエディタで上下分割すると、上ではIntelliSenseがちゃんと動くのに、下では動かない。
#SP1は適用してある。
よって、コードを書くのは上側ですべき。
・・・ってことなんだろうけど、なんだかなぁ。
WEBページで情報をPOSTなりするとき、やはりSSL暗号化(HTTPS)されていたほうが安心できる。
しかし、電子メールとなるとどうだろう。
何気なく、パスワードなどを書いて送ったことはないだろうか。
SMTPもPOPも基本的に平文だ。
IMAPも平文か。
昨年の夏、豪雨で電車が止まったんだよね。
熱海だった。
熱海から小田原の間って、海に面していて、雨風波に弱いんだよね。
で、東海道線で、横浜へ向かうために、熱海で5時間待ち。
ようやく、振り替えてもらえたわけだ。
その切符の写真があったので、載せておく。
ピンボケだけど。
C++(VC++2008)で、unionは継承元になれないとコンパイルエラーが出る。
でも、struct定義に変えて内部を丸ごと無名unionで構成すると、コンパイルは通るし、アクセス方法も変わらない。オフセットも変わらない。
なんでやねん・・・
確かに無名の定義が入ることで、構造的には異なるけど、だからといって、unionを継承できない理由にはならんと思うんだけどなぁ。
携帯電話のこと。
「なぜ、片手が塞がるタイプしか出さないのか?」という疑問。
イヤホン使えばいいとか、そういう話ではない。
#そして、以下は俺の想像であり、事実かどうかはわからないので、要注意。
オフセットの計算は難しい。
#include <stdio.h>
#include <stddef.h>
struct A
{
short a1;
short a2;
short a3;
};
struct B
{
short b1;
int b2;
};
struct C
{
short c1;
struct A c2;
};
struct D
{
short d1;
struct B d2;
};
struct E
{
short e1;
union
{
struct
{
short e2;
short e3;
short e4;
};
struct
{
short e5;
int e6;
};
};
};
int main()
{
printf("offsetof A::a2 => %d\n", offsetof(A, a2));
printf("offsetof B::b2 => %d\n", offsetof(B, b2));
printf("offsetof C::c2 => %d\n", offsetof(C, c2));
printf("offsetof D::d2 => %d\n", offsetof(D, d2));
printf("offsetof E::e2 => %d\n", offsetof(E, e2));
return 0;
}
構造体のメンバのオフセットを求めるだけなんだけど・・・
最近のコメント