
物欲の秋。
動画/Webプレイヤーとしてフィリピン出張前に欲しかったのですが、品薄で手に入らず。出張中に32GB版が発表されたので結果的には良かったのですが、品薄は相変わらずのようで帰国後3軒回って最後の1台を獲得。iPad miniより入手困難ですよとも言われたな。
Googleアカウントすら持ってない状態からのスタート。しばらく遊べそう。
これで目的が達成できない場合、物欲リストにThinkPad Tablet 2
が…
2012/11/5

物欲の秋。
動画/Webプレイヤーとしてフィリピン出張前に欲しかったのですが、品薄で手に入らず。出張中に32GB版が発表されたので結果的には良かったのですが、品薄は相変わらずのようで帰国後3軒回って最後の1台を獲得。iPad miniより入手困難ですよとも言われたな。
Googleアカウントすら持ってない状態からのスタート。しばらく遊べそう。
これで目的が達成できない場合、物欲リストにThinkPad Tablet 2
が…
— posted by mu at 08:39 am
2012/10/30
仕事で以下のネット設定をWindows7にする必要があるのですが、台数が多いのでプログラムを組んで半自動化を試みようと。
| 設定内容 | 使用技術 |
|---|---|
| ICS (Internet Connection Sharing)を有効にする | COM |
| プライベート側NICのアドレスは192.168.137.1/24と192.168.0.1/24の2つ | WMI |
| パブリックから特定ポートへのアクセスをプライベートにフォワード | netshコマンド |
調べ方が悪いのか、見事に使用技術がバラバラ。WMIはICSが有効かを見ることはできても設定を変えられない、COMはIPアドレス設定やポートフォワードができないなどなど。最初VBScriptでやろうと思ってたのですが、この3者でどのNICをパブリックにするのかの情報渡しが大変そうだったので、早々にC#に変更。
— posted by mu at 03:13 pm
2012/9/6
C# 3.0 4.0以降。LINQのメソッド式表現はほとんど使わない私ですが、これ
はちょっと感動。
string.Join(",", dictonary.Select(kv => kv.Key.ToString() + "=" + kv.Value.ToString()));
[参考] Is there anyway to handy convert a dictionary to String? (stackoverflow)
string.Join(",", from kv in dictionary select kv.Key.ToString() + "=" + kv.Key.ToString());
[2012/9/7 追記] String.Join(String, IEnumerable<String>)が実装されたのは.NET Framework4以降のようなので、上記はC# 4.0以降で有効。LINQ式の最後に.ToArray()を付ければC# 3.0でも行けるでしょう(簡潔さが悪化するので感動は薄れる ^ ^;)。
string.Join(",", dictonary.Select(kv => kv.Key.ToString() + "=" + kv.Value.ToString()).ToArray());
string.Join(",", (from kv in dictionary select kv.Key.ToString() + "=" + kv.Key.ToString()).ToArray());
— posted by mu at 07:32 pm
Comment [0]
TrackBack [0]
2012/9/5
備忘録。
Windows Vistaより前に作られたMSIファイルはUACを知らないので、管理者権限が取れずに不具合が起こるっぽい。実際使っていたインストーラーがWindows7でエラーを出して途中で落ちてしまう。
対策はここ
に書いてある通り、Orcaを使ってMSIファイルを改造する。
以上。Type値の2048(=0800h)に管理者権限昇格のビットが定義されているんでしょうねぇ。

[ 参考 ]
— posted by mu at 08:51 pm
Comment [0]
TrackBack [0]
2012/8/22
.NETにはアセンブリ(クラスの実行部分を記述した物、いわばプログラム、多くの場合DLL形式)を実行時動的に読み込み、プログラム実行に使用する機能があります。よく使われるケースがプラグイン。プラグインファイルの中身が.NET形式のDLLになっていて、プログラム起動時に読み込み実行します。
で、今回来たミッション。
プラグインファイルがサーバにあるって感じでしょうか。サーバから取ってくるアセンブリはファイルではなく、バイト配列(byte[])。中身は元々ファイルだったDLLそのままなのでローカルでそのバイト列をファイルに書き込んでから読むと言う方法もありますが、直接バイト列から読みこむSystem.Reflection.Assembly.Load(byte[])なんてのもあるのでそちらを使用。
が、アセンブリを読み込んだ後逆シリアルを行おうとすると、SerializationException。メッセージは"Unable to find assembly 'hoge'"つまり読み込んだはずのアセンブリが無かったことにされてしまっている。はて?
とりあえず見つけた解決法は以下のもの。
こうしておくとイベントハンドラから返されたアセンブリを使って逆シリアライズが進みます。
[ 2012/8/23 追記 ] 図らずも(*1)を別の方法で確認。自家製イベントハンドラがアセンブリを取ってくるためにサーバー通信用のアセンブリが必要なのですが、これが無い→通信アセンブリを取るためにAssemblyResolveイベント→同じハンドラで受け取りやっぱり通信アセンブリが無い、の無限再帰呼び出し orz。通信アセンブリはGACから取れるはずなのですが、もしかしてこのイベントの方が優先度上なの?
— posted by mu at 05:53 pm
Comment [0]
TrackBack [0]
Comments