自PCのIPアドレスを取得する

| 2008年9月23日火曜日
複数ある場合は、foreachでまわして探す。

$localHostName = [System.Net.Dns]::GetHostName()
$localIP = [System.Net.Dns]::GetHostByName( $localHostName )
$localIP.AddressList[0].ToString()

ディスクの空き容量

|
PowerShell

空き容量の%
$d = New-Object System.IO.DriveInfo("C")
$d.TotalFreeSpace / ( $d.TotalSize / 100)

ディスクサイズ(GB)
$d.TotalSize / 1GB

リムーバブルディスクの取り出し

|
よく忘れるのでメモ。

PowerShell
$Shell.Application.NameSpace(17).ParseName('D:\').InvokeVerb("取り出し(&J)")

VBScript
CreateObject("Shell.Application").NameSpace("D:\").Items.Item.InvokeVerb "取り出し(&J)"

Excel/VBAでスペース区切り出力する

| 2008年6月16日月曜日
 Excelで固定長でTextファイルで保存する際に、.prn(スペース区切り)で保存すると、Excelの仕様で240文字までしか一行で出力できなかったので、簡単なスペース区切りができるマクロを作成してみました。
 かなり適当に作ってあります。
 範囲指定は「A1:H10」のような感じで入力してください。
 ファイル名は、元ファイルと同じ場所で、シート名.txtで保存されます。

--- 以下 コード ---

Sub SpaseSeparatedValues()
Dim i, j As Integer

Dim fileName As String
fileName = ActiveWorkbook.Path & "\" & ActiveSheet.Name & ".txt"

Dim scope As String
scope = InputBox("スペース区切りで出力したい範囲をしていしてください。", "SpaseSeparatedValues")

Dim data As Variant
data = Range(scope)

Dim fileNo As Integer

fileNo = FreeFile()
Open fileName For Output As #fileNo

Dim printLine As String

For i = 1 To UBound(data)
printLine = ""
For j = 1 To UBound(data, 2)
printLine = printLine & data(i, j) & Space(Int(Cells(i, j).ColumnWidth) - Len(data(i, j)))
Next
Print #fileNo, printLine
Next
Close #fileNo
End Sub

VineLinux4.2でmonoを使ってみる

| 2008年3月7日金曜日
 久しぶりにLinuxを使ったけど、思ったより早い。前にUbuntoを使ったときは、なんか、もっさりしてる感じだったから、あんまり使わなかったけど、これならだいぶいい。
 仕事では、ずっとWindowsだからなんか、ちょっと戸惑うけど。
 C#でプログラミングしたいので、monoをインストールしてみる。ソースから入れたほうが、最新のものを試せるけど、まずは、Vineのパッケージを試してみる。

apt-get install mono-core
apt-get install mono-devel
apt-get install mono-winforms

 バージョン的には少し古いけど、十分使えるだろう。早速、テストコードをコンパイル。思ったより、あっさりとコンパイルできた。ただ、フォームを表示して、メッセージボックスを出しただけだから、たいしたことはないけどLinuxでC#が動くと、ちょっとびっくり。
 ただ、バージョンが古いからなのか、partialで分割クラスが使えない。テストコードははじめ、Program.cs、Form1.cs、Form1.Designer.csにしていたけど、コンパイルでpartialがどうとかでるので、ひとつにまとめた。
 あと、namespaceを使うとこれもコンパイルできない。なんでだ?そのnamespaseにはこのアプリはない。見たいなエラーになる。やっぱり最新のものを入れたほうがいいな。
 こんど、ソースからインストールしてみよう。なんか、面倒くさそうな気がするけどね。その時には、monodevelopも入れたいな。

viよく使うコマンドメモ

| 2008年3月5日水曜日
最近ログをチェックすることが多いので、こんなんばっかり。バイナリを見るのは、設定ファイルがシリアル化してた場合・・・

文字数カウント
:%s/./&/g

fooを含む行を削除
:%g/foo/d

fooを含まない行を削除
:%v/foo/d

空白行を削除
:%g/^ *$/d

バイナリエディタ
:%!xxd
:%!xxd -r

Windows Temporary Folderについて

| 2008年3月2日日曜日
 C#なんかでTempフォルダを使いたくなった時、その場所は、System.IO.Path.GetTempPath()で取得するけど、この時、得られるフォルダの場所は環境変数に定義されている順に先に見つかったのを返してくる。具体的には、

1 TMP C:\Document and Setting\LocalSetting\Temp\
2 TEMP C:\Document and Setting\LocalSetting\Temp\
3 USERPROFILE C:\Document and Setting\

 っとこれに関しては、これで良いんだけど、気になったのがこのTempフォルダはいつクリアされるのか?っという事だ。
 Tempフォルダというとなんとなく、システム側で勝手に消してくれると思っていたけど、調べてみると実は違った。
 確かに、ディスクのクリーンアップで消してはくれるけど、これは勝手にWindowsがしてくれる訳じゃなく、ユーザが自分でする必要がある。それまでは、ユーザが自分でわかってTemp領域のファイルをクリアするまで、そのまま残り続けるって事になる。
 もし、自分で作ったアプリケーションでTempフォルダを使うなら、そこに置いた一時ファイルはちゃんと、アプリで消してあげないと、どんどん溜まってしまうことになる。まぁ溜まっても限界まできたら「ディスクのクリーンアップをして下さい。」メッセージがでるから、ほって置いてもかまわないのかもしれないし、最近のHDDはデカイからそれほど問題にはならないのかもしれない。
 でも、少なくとも、自分が書く時には汚した所は自分で綺麗にして終了させるようにしたほうが礼儀正しいだろう。