走れる時に、走ってみた。
今日のジョグ 5km 28分52秒。
梅雨なんで、走れる時に走ってみた。
最近、走っていて脚よりも心臓の方が先に疲れる。
今までは、脚の方が先だったのに。
暑いか、貧血かの、どっちかだろう。
とりあえず、鉄分サプリを補給しとこ。
今日のジョグ 5km 28分52秒。
梅雨なんで、走れる時に走ってみた。
最近、走っていて脚よりも心臓の方が先に疲れる。
今までは、脚の方が先だったのに。
暑いか、貧血かの、どっちかだろう。
とりあえず、鉄分サプリを補給しとこ。
ボタンをクリックする事で、Formを最前面に表示したり、通常のFormに戻したりしたいと思い、次のようなコードを書きました。
if (this.TopMost == false) {
this.TopMost = true;
}
if (this.TopMost == true)
{
this.TopMost = false;
}
でも、何か上手く動きません。
何回クリックしても、通常のFormのままです。
試しに、TopMostのデフォルト値をtrueにしてやると、初期状態はもちろん最前面に表示されます。
一回クリックして、通常表示のFormには成るのですが、もう一回クリックしても、二度と最前面表示されません。
何だか良くわかりませんが、色々と検索していくうちに、上のコードは、次の一行で表現出来る事が分かりました。
this.TopMost = !this.TopMost;
これだと、上手く動きます。
最初のコードと、意味は同じ筈なのに。
なんでだ?
大量のIPアドレスを眺めていて、サブネットマスクを集約したくなる時ってありますよね?
・・・・・・少なくとも、私はあります。
と、いう事で、自動的にIPアドレスをまとめてくれるツールを作ってみました。
ダウンロードは、こちらから。
ダウンロード先は、以前に私が使ってた場所なんで、特にあやしく無いです。
ただ、フリーウェアって事で、御利用は自分自身の責任でお願いします。
左側のテキストボックス「アドレスリスト」欄に、集約したいIPアドレスを「*.*.*.*/*」形式で入力し、「集約してみる」ボタンを押すと、IPアドレスを纏めてくれます。
//一番上のuseingの所に、一行追加する。
using System.Text.RegularExpressions;
//例えば、入力された文字がIPアドレスかどうか調べるには。
string Ipaddr = "172.24.1.1/24";
if (Regex.IsMatch(Ipaddr,"^[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/[0-9]+$"))
{
//ここにIPアドレスだったら処理する内容を書く
}
//ちなみに、この正規表現だと393939.3030030.30030.33333./33333なんて出鱈目な値でもIPアドレスって判断するので注意。
//今回は、マスク部は無視してます。
//まずは、*.*.*.*/*の形からマスク部を消去。
string addr = "172.24.1.1/24";
string[] addrbu = addr.Split('/');
//アドレスをオクテット毎に分割して、int型に変換する。
string[] addrgoto = addrbu[0].Split('.');
int iti = Convert.ToInt32(addrgoto[0]);
int ni = Convert.ToInt32(addrgoto[1]);
int san = Convert.ToInt32(addrgoto[2]);
int yon = Convert.ToInt32(addrgoto[3]);
//アドレス部を2進数標記にして文字列に戻す。
string sini = Convert.ToString(iti, 2);
string sni = Convert.ToString(ni, 2);
string ssan = Convert.ToString(san, 2);
string syon = Convert.ToString(yon, 2);
//このままだと、行頭が零の場合無視されているので、桁数を合わせる。
sini = sini.PadLeft(8, '0');
sni = sni.PadLeft(8, '0');
ssan = ssan.PadLeft(8, '0');
syon = syon.PadLeft(8, '0');
//最後に各オクテットをまとめて完成。
stirng Ipaddr = sini + sni + ssan + syon;
//enterで区切られた文字列をstrblockとする。
//Splitメソッドはchar型しか指定出来ないので、単純に分割すると「\r」みたいな制御文字が残る。
//これを避けるため、最初にenter記号を一文字に置き換えてしまう。
strblock = strblock.Replace("\r\n", "\n");
//置き換えた文字を使って、文字列を分割する。
string[] Kekka = strblock.Split('\n');
//ランダム値の取得
//例えば、10までのランダムな数字をRanとして取得する。
Random Pas = new System.Random());
int Ran = Pas.Next(10);
//でも、randomクラスは、ランダムを作る際にPCの起動時間か何かを参照するらしく、繰り返し文なんかで使うと、同じ結果が続いたりする。
//それを防止するには、useingの所に次の一行を追加する。
using System.Security.Cryptography;
//でもって、byte形の乱数を発生させる。
byte[] Seed = new byte[1];
RNGCryptoServiceProvider Rand = new RNGCryptoServiceProvider();
Rand.GetBytes(Seed);
//この乱数を、randomクラスの参照値として指定する。
Random Pas = new System.Random(Convert.ToInt32(Seed[0]));
int Ran = Pas.Next(10);
//でもこれって、参照元がbyte形なので、255以上のRandamが欲しい時は、もう一工夫がいるかも??
例えば、test.exeを実行させる場合。
//一番上のusingの所に一行追加
using System.Diagnostics;
//プログラムをインスタンス化して起動
Process Protest = Process.Start("test.exe");
//プログラムが終わった事を判定
Protest.WaitForExit();
プログラムを実行するだけなら、
Process.Start("test.exe");
だけでも実行可能可能。
//一番上のusingの所に一行追加
using System.Globalization;
//文化圏を指定
CultureInfo USA = new CultureInfo("en-US");
//例えば現在日時
DateTime Hi = DateTime.Now;
//で、英文風な値をstringで取得
stirng Hizuke = Hi.ToString("ddd,dd MMM yyyy",USA);
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
最近のコメント