メモの日々


2000年11月29日(水) PJ

  • 昨日は松木さん佐々木さん岩崎さんらと打ち上げ。
  • 夕方PCのYさんと顔合わせした。世間話をできるようにならねばならない。

2002年11月29日(金) 家賃を払いました

Cプロジェクト

  • 22:20 色々書いたがまとまらず、完成せず。うーん、家で考えます。

Kプロジェクト

  • 13:26〜13:40 ステータス確認。どんどんいい加減になっていく。

その他

  • 10:20 わー家賃を払わねば。
  • 11:05 PostgreSQL7.3がリリースされたようじゃ。pgsql-jp MLより。遠くの話だけど。
  • 13:25 お昼に家賃を払った。皆ATMの操作に永遠時間をかけているけど何をしているのか。おれは振込みだけだったのですぐ終わってしまい寂しい。

2003年11月29日(土)

[java] 規約、テクニカルレポート (EJBコンポーネントに関するコンソーシアム)

「パフォーマンスに関するHints&Tips集 第1版」などが公開されている。このサイト、Mozillaだと綺麗に表示されないみたい。

[サッカー] Fマリノスvsジュビロ

TV観戦。雨のせいか迫力なく面白くない。名波も鈴木もイエローカード貰ってしまったよ。

[サッカー] ワールドユース 日本vsイングランド

TV観戦。川島菊地近藤角田今野小林徳永鈴木成岡阿部坂田が先発。成岡パッとしない。パッとする所を見たことがない。静かな実況は好感触。もう寝る。

生活

  • 一昨年4月の日記を補完。論じたり2階へ移動したり。
  • 左目が痙攣する。どうしたら治るのかな。

2007年11月29日(木)

  • 11月は色々とバタバタしていた。
  • 週末に髪の毛切った。2ヶ月ぶり。
  • C++の仕事は一段落した。次はJava。久しぶりだな。

[java] 開発環境

  • Javaは環境構築が面倒。CentOSの場合JPackageというのが関係あるみたいなんだがよく分からん。SunのJDKをインストールして普通に動いてはいる。
  • NetBeansを使ってみようとWindowsにバージョン5.5.1をインストールしてみた。ちょっと前にもインストールしたけど、このときは全然使わなかったのだ。で、Vimキーバインドのプラグイン(jVi)がよくできているのはいいんだけど、エディタの設定でタブの幅などを変更してもいつの間にか元に戻ってしまう問題を解決できず。
  • 仕方ないのでEclipse 3.3.1.1もインストールしてみた。Eclipseは日本語化とか色々面倒という印象があったが、Pleiades All in Oneというパッケージが良くできていて簡単にインストールできた。
  • Eclipseよくできてるなあ。が、キーバインドが問題だ。Eclimに期待しているが面倒でまだ試してない。

[life] 免許証の更新

2800円で証紙を買わされ、申請書に名前など書いて写真と一緒に提出。視力検査した後ビデオの視聴。すいていて助かった。

ビデオ視聴の途中で交通安全協会のおじさんが入ってきて、ビデオは20分間で私の説明が10分間あるのだと言い話を聞かされた。こんな制度はじめて。説明の内容は、今年の6月から中型免許というのが新設され、更新後はおれも中型免許になるのだとか。へー。

ビデオの中にハンマー投げをするシーンがあったがあれは不要だ。

やること

  • 免許
  • 請書

2011年11月29日(火)

[life] 歯医者へ行く 4回目

今日は歯石を取ってもらった。やっと治療的なことをしてもらえたぞ。

口用の穴が開いたタオルを顔に掛けられて実施。冷却水(?)が結構飛び散ってきた。機械でカリカリやられたのだけれど、痛みはそれ程ない。たまに鈍痛があって、そのときは緊張した。薬を塗られて終了。歯が白くなっていた。2000円。


2021年11月29日(月)

[windows] Zipファイルを作るPowerShellスクリプト

初めてPowerShellスクリプトを書いた。フォルダパスとZipファイルパスを指定すると、フォルダ内の.exeと.dllをアーカイブしたZipファイルを作成するスクリプト。

param(
    [Parameter(Mandatory=$true)][String]$srcDir,
    [Parameter(Mandatory=$true)][String]$zipFile
)

try {
    # エラーが発生したら処理を止める
    $ErrorActionPreference = "Stop"

    Write-Host "$srcDir --> $zipFile"

    # 一時フォルダを作成
    $tmpDir = New-TemporaryFile |
        % { Remove-Item $_; New-Item -ItemType Directory $_-d }

    # 一時フォルダへ必要なファイルだけをコピー
    Copy-Item -Include *.exe,*.dll $srcDir\* $tmpDir

    # zipファイルが存在している場合はそれを削除
    if (Test-Path $zipFile) { Remove-Item $zipFile }

    # zipファイルを作成
    Compress-Archive $tmpDir/* $zipFile

    # zipファイルの内容を出力
    Add-Type -AssemblyName System.IO.Compression.FileSystem
    [System.IO.Compression.ZipFile]::OpenRead($zipFile).Entries |
        Format-Table -Property FullName,LastWriteTime
} finally {
    # 一時フォルダを削除
    if ($tmpDir) { Remove-Item -Recurse $tmpDir }
}

PowerShellスクリプトの実行方法

PowerShellスクリプトはデフォルトの設定だとセキュリティエラーになり実行できない。

PowerShellコマンドExecutionPolicyオプションと共にスクリプトを指定すれば実行できる。

> powershell -ExecutionPolicy unrestricted ./make-zip.ps1 test test.zip
test --> test.zip

FullName LastWriteTime
-------- -------------
a.exe    2021/11/29 16:26:54 +09:00
b.dll    2021/11/29 16:20:18 +09:00

スクリプトのパラメータ

スクリプトのパラメータはparamで指定できる。ちゃんとした説明を見つけられないがParameters in scriptsで少し説明されている。

上のスクリプトではParameter属性を使って2つのパラメータ(srcDirとzipFile)を必須に設定している。

エラー時にスクリプトを終了する

処理中にエラーが発生したらそこでスクリプトは止まってほしい。それを実現するには、$ErrorActionPreferenceにStopを設定すればいいようだ。

メッセージの出力

メッセージを出力するにはWrite-HostまたはWrite-Outputが使える。

一時フォルダの作成と削除

PowerShellには一時フォルダを作成する機能はなさそう。上のスクリプトではStack Overflowにあった例を真似して、一時ファイルを生成 → その一時ファイルのパスを利用して一時フォルダを作成、という手順で作っている。

なお、一時フォルダ作成処理内にある「%」はForEach-Objectのエイリアス。

作成した一時フォルダの削除はtry/finallyステートメントのfinally内で行うようにしている。

Zipファイルの作成

Zipファイルの作成にはCompress-Archiveが使える。

Zipファイル内のファイル一覧を出力

Zipファイルの作成は上述のCompress-Archiveでできるが、Zipファイル内のファイル一覧を得るコマンドレットは無いみたい。Zipファイルを展開するのならExpand-Archiveを使えるのだけれど。

ファイル一覧を得るには、.NETのライブラリを使う必要がありそう。System.IO.Compression.ZipFileというクラスが使える。

PowerShellでは、Add-Typeを使うとDLLを読み込んで.NETのクラスを使えるようになる。上のスクリプトではSystem.IO.Compression.FileSystem.dllを読み込んで ZipFile#OpenRead() を呼び出し、更にFormat-Tableを使って出力を行っている。