カテゴリー: 開発について
投稿者: shinichi
VPNサーバーをたてることで、インターネット上から家のPCにアクセスできるようになりました。

VPNサーバーの構築

写真や音楽データ、資料はできるだけファイルサーバーに集約するようにしていますが、作業中のファイルやPCにしかインストールしていないアプリケーションを使いたい場合とても歯がゆい思いをします。

PCをも24時間起動していればそんな思いをすることもないのですが、ただでさえサーバーをつけっぱなしにしているので、これ以上は控えたいところ。そんな時にWake-on-LANのことを思い出しました。

何かのパケットを送りつければいいと言う位しか知らなかったので調べると、
・ブロードキャスト
・UDP
・ポートはサイトによっていくつかあったがどこでもいい
・パケット本体は6バイトの255とそれに続くNICのマックアドレス16個

以上の要件を満たせば良い。もちろんターゲットNICがWake-on-LANに対応している必要があります。

メインで使ったのはUdpClientクラスのメソッド3種類です。
Connect
Send
Close

その他16進数のチェック・IPアドレスのチェックに別のクラスメソッドも使いました。

動いたときはちょっと感動しました。

マジックパケットを送信すると次の様なパケットがキャプチャできます。
MACアドレスは"AB:CD:E0:12:34:56"として送信します。


"FFFFFFFFFFFF"の後ろに"AB:CD:E0:12:34:56"がきれいに16回並んでます。


WindowsのPCは電源を落としていても、NICに電気が通っているので停止状態から起動させることができましたが、Macはだめでした。スリープ状態からの復帰はできるのですが、停止状態からはうんともすんとも・・・NICに電気が通らないようです。もう少し調べてみようと思います。

早く実際に外からアクセスしてみたいものです。

【仕様】
.NET Framework2.0以上で動く。
テキストボックスに入力されたブロードキャストアドレスに、もう一つのテキストボックスに入力されたMACアドレスを使ったマジックパケットを送信する。

ダウンロードはこちら-> WOL
zipを解凍して使ってください。

Wake-on-LANについてもう少し詳しくはこちらへ
Wake-on-LAN(wikipedia)
Wake-On-LAN入門 - @IT
カテゴリー: 開発について
投稿者: shinichi
大阪地検のFD改ざん事件ではファイルの更新日を変更していました。Linuxではtouchコマンドを使って作成日等を変更することができますが、Windowsではそれに該当するコマンドは無いようです。

WindowsでもtouchコマンドがあればいいのになとMSDNのライブラリを見ていた頃にメソッドがあったのを思い出して使ってみました。フリーウェアで探してみると結構たくさん出てきました。しかもとても使いやすそうな物も。そういったすぐれた物に比べればちゃっちいけれども、案外簡単に作れるなと言うのが正直な思いです。

使ったのはDirectoryクラスのメソッド6種類です。
GetCreationTime
GetCreationTimeUtc
GetLastAccessTime
GetLastAccessTimeUtc
GetLastWriteTime
GetLastWriteTimeUtc

【仕様】
.NET Framework1.0以上で動く。
テキストボックスに入力されたディレクトリもしくはファイルのタイムスタンプを変更する。

【課題】
課題は前回のMngDirと同じです
ファイル等のパスををドラッグ&ドロップで入力できない。これは調べ中です。
コードの書き方がわからなかったのでオブジェクトのイベント毎にコードを書いている。クラスなりにして外だしする方が再利用性が高くなるのはわかっているのだが。

ダウンロードはこちら-> Touche
zipを解凍して使ってください。
カテゴリー: 開発について
投稿者: shinichi
Visual C++で物を作ることができるようになるとようやく決意して数日。一つ目のツールを作りました。

ディレクトリを作って削除するだけ。

仕事ではLinuxを使っているのだが、Linuxでは入れ子になったディレクトリを作成することも削除することもできるのに、何でWindowsではできないんだろうと疑問に思ってました(注:今確認したところ、入れ子ディレクトリはコマンドラインからもPowerSherllからも作成できますが、削除はPowerSherllでしかできませんでした)。

なので入れ子ディレクトリをいじくることができるツールを作ってみました。
正直、.NET Frameworkと言う物が何なのかすらよくわからなかったのですが、結構簡単に作れました。純粋にC言語で作ろうと思っていたのでどう作って良いのかあれこれ考えながらMSDNのライブラリを見ていたら、使いたいけど自分で作るしかない機能(関数)がたくさん用意されていました。

そうか。.NET FrameworkはStrutsなどと同じ用にFrameworkなんだと今更ながらに気がつきました。

なんだ、思っていたほど難しくはないな。パフォーマンスを要求する様な高度な物でなければ何とか作れるのかもしれません。

今回作ったツールについて:

【仕様】
.NET Framework2.0以上で動く。
テキストボックスに入力されたディレクトリを作成もしくは削除する。

【課題】
ファイル等のパスををドラッグ&ドロップで入力できない。これは調べ中です。
コードの書き方がわからなかったのでオブジェクトのイベント毎にコードを書いている。クラスなりにして外だしする方が再利用性が高くなるのはわかっているのだが。

ダウンロードはこちら-> MngDir
zipを解凍して使ってください。
カテゴリー: 開発について
投稿者: shinichi
一昨年参加したカンファレンスでMicrofsoft Visual Studio 2008をもらった。PCにインストールしてLinuxツールのソース等を見るのに使っていたのだが、やっぱり自分で何かを作らなきゃもったいないし技術がつかないのであれこれ作ってみることにした。

自分のわかる範囲では存在していないけれど、あったら便利であろうソフト/ツールのアイディアはいくつかある。とは言っても、開発経験はほぼゼロなのでそんなソフト/ツールを作るどころか、しょうもないツールを作ることでもあっぷあっぷ。

とりあえず、「習うより慣れろ」で試行錯誤していこうと思う。「こんなん作ってどうするの?このツール使うより、手で作業した方が早いでしょ?」という台詞はしばらく封印する。

ところで、Visual C++とVisual C#、どっちをやったらよいのだろう・・・一つのツールを二言語で作ってみるか。