月別アーカイブ: 2012年11月

ジェネリック、Private、Protectedメソッドを実行する

「プライベートメンバにアクセスする」で、プライベートなメソッドを実行する Invoke-PrivateMethod をご紹介しました。
今回のスクリプトは、それの発展系で、ジェネリックメソッドに対応したものです。
一般の使用においては、プライベートメソッドの実行よりもジェネリックメソッドの実行に使われる方が多いのではないかと思い、スクリプト名を変更しています。

用例1

(1).ToString(‘D4’) と等価です。

PS> Invoke-Method (1) ToString('D4')
0001

用例2

Array.ForEach を呼び出します。

PS> $delegate = New-Delegate Action[int] {Write-Host ($args[0] * $args[0])}
PS> Invoke-Method ([Array]) ForEach([int[]](1..5), $delegate) -GenericType int
1
4
9
16
25

用例3

System.Linq.Enumerable の Repeat メソッドを呼び出します。ジェネリック型が System.Object の場合、-GenericType を省略できます。

PS> Invoke-Method ([Linq.Enumerable]) Repeat('Hello', 3)
Hello
Hello
Hello

ダウンロード


テキストエンコーディング(3)

Resolve-Encoding.ps1 の改修

  • BOM 付き UTF8 に対応しました。

Convert-Encoding.ps1 の改修

  • パラメータに以下のエイリアスを作成しました。

    • LiteralPath = IL
    • OutputLiteralPath = OL
    • InputByte = IB
    • InputString = IS
    • InputEncoding = IE
    • OutputEncoding = OE
  • 入力の数に関わらず、BOM の出力を一回だけにしました。
  • 入力に BOM が含まれていた場合、BOM を出力しないようにしました。
  • InputString の値として $null を許可しました。
  • パイプラインから文字列が入力された時、InputString として受け取るようにしました。
  • InputString の最後に改行を入れていたのを廃止しました。
  • その他細かな修正

ダウンロード


テキストエンコーディングの変換(2)

テキストエンコーディングの変換で紹介した Convert-Encoding.ps1 の改良版です。

-Bom オプションを指定することによって BOM を出力することができるようになりました。

追記

改良版 が存在します。そちらをお使いください


WordPress のパーマリンクがパーマ(永久)でなかった件

WordPress のエクスポート機能とインポート機能を使い、ブログを引っ越しました。

引っ越してからおかしなことに気づきました。リンクが正しく機能していないのです。ジャンプしたいページにジャンプできません。今まで http://flamework.net/archives/3 のように、投稿 ID を使ったパーマリンクにしていたのですが、インポート時に ID がでたらめに作り直されたせいで、アドレスがことごとく変わってしまったのです。そして、どうもそれが WordPress の仕様のようなのです。ID を使ったパーマリンクを使われている方、直せるなら被害の少ないうちに直しましょう。

今までのアドレスをGoogle様に聞いて原状回復しようかとも考えましたが、どうにも面倒なのであきらめました。自サイトに関しては、リンクをすべて貼り直しましたが、外部からのリンクに関しては諦めます。