2009-01-01から1年間の記事一覧

IME

あんまり使ってないけどATOKみたいに自己主張が激しくないのがいい。頭幾分悪くても使い勝手がよくて学習がちゃんできれば問題はない。 http://www.google.com/intl/ja/ime/それにしても Google はすげーな。8.8.8.8 も。

共有フォルダの作成、アクセス権の設定、編集。

中身はWMI 元ねたはどっかの海外サイト。(ごめんURL手元にないや) 参照設定は Systesm.Managemant vista 以降は管理者での起動が必要。 まずはアクセス権限 /// <summary> /// ユーザのアクセス権限 /// </summary> public enum ShareMode : uint { /// <summary> /// 読み取り。 /// </summary> …

フォルダのアクセス権限を設定する。

ファイルならFileInfoで。 C:\private\test にローカルユーザーの aaa をフルコントロールで追加する場合。 DirectoryInfo di = new System.IO.DirectoryInfo( @"C:\private\test" ); DirectorySecurity ds = di.GetAccessControl(); ds.AddAccessRule( new …

powershell(ver1.0) で try-catch

2.0 は実装されたらしい。 でもなんか 1.0 使うらしい。ネタ元 http://csharper.blog57.fc2.com/blog-entry-177.html 必要に迫られて catch の複数対応。 つかんだ例外の $Error は削除してる。 function CatchStatements ( $catchBlocks, $ex, [ref]$isCatc…

DirectoryServices.DirectoryEntry で dispose できない罠

powershellの話。(ver1.0) 確認ロジック $target = New-Object DirectoryServices.DirectoryEntry( 'LDAP://rootDSE' ) if ( !($target -is [IDisposable]) ) { return; } $target.Dipose(); ちなみに GetType もできないし。 なんかのラッパーなのかと思う…

powershellの落とし穴

function test() { "aaaaa"; Write-Host "bbbbb"; Write-Output "ccccc"; return 100; } cls; $result = test; # output # bbbbb $result.Length; # output # 3 $result[0]; # output # aaaaa $result[1]; # output # ccccc $result[2]; # output # 100 retu…

PowershellでActiveDirectoryオブジェクトの属性を変更する。

絶対値が取れるのが前提。エラー処理とかないよ。 $targetAccountName = ""; $root = New-Object DirectoryServices.DirectoryEntry( 'LDAP://rootDSE' ) $dn = $root.defaultNamingContext.Value; $entry = New-Object DirectoryServices.DirectoryEntry( "…

P/Invoke ツール

VS2008ではアドインのPInvoke.net使えなかったんで。 P/Invoke Interop Assistant http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120 結構いいね。 ネットならpinvoke.net http://www.pinvoke.net/

マネージオブジェクトのポインタ変換

マネージオブジェクトからIntPtrに変換 GCHandle gch = GCHandle.Alloc( targetObject, GCHandleType.Pinned ); IntPtr ptr = gch.AddrOfPinnedObject();配列からIntPtrに変換 Marshal.UnsafeAddrOfPinnedArrayElement( targetArray, 0 );これで先頭ポインタ…

NTFS代替データストリーム(ADS)一覧取得

NTFSに設定されている代替データストリーム(ADS)の一覧を表示したい。 いろいろ調べた結果 NtQueryInformationFile を使うのがよさげらしい。 dsofile.dll とかもあったんだけど、欲しい情報が取れなかったんですべてを取れるわけじゃないっぽい。 ネタ元 …

SafeFileHandle

FileStream.Handle が Obsolete 属性が付いてた。 いつの間にって思ったけど2.0からかわったみたい。んで代わりに使用するのが SafeFileHandle。 http://msdn.microsoft.com/ja-jp/library/microsoft.win32.safehandles.safefilehandle.aspxこんなのあったん…

サービス削除コマンド

たまに使うけど、たまにだからすぐ忘れる sc delete servicename いつも net しか思い出せなくて、しかも net では削除は使えないことまで思い出すんだけどね。

ドメインコンローラー内のオブジェクトを列挙

所属ドメコンで権限がある場合。 所属ドメコン内のオブジェクトを列挙。 参照設定:Com の「Active DS Type Library」と「System.DirectoryServices」が必要。 static void Main( string[] args ) { try { DirectoryEntry rootEntry = new DirectoryEntry( "…

識別子取得

LDAP+C# 参照設定:System.DirectoryServicesが必要。 DirectoryEntry directoryEntry = new DirectoryEntry( "LDAP://rootDSE" ); Console.WriteLine( directoryEntry.Properties["defaultNamingContext"].Value);LDAP+VBS Set objDomain = GetObject( "LDA…

ReSharperショートカットエラー

Some keyboard shortcuts could not be assigned because the current keyboard scheme is read only. Change the keyboard scheme and try again.リードオンリーだと!?んなバカな。 どうせVSが掴んでるんだろとか思いつつVS落とすと設定できないし・・・…

構造体とインターフェイスとボクシング。

構造体にインターフェイスってあんまりやらなかったんだけど。 振る舞いに対してはつけるもんなんだな。でもそれを間違ってプロパティにしてしまうとボクシングも絡み嫌な感じに。 static void Main( string[] args ) { IA a = new A(); IA b = a; a.Bl = 1;…

.net でサービスインストーラーで必要な設定。

必要な設定が分散してるのでいろいろ迷う。なんで覚えてるうちにメモ。 サービスインストーラーの作り方。 サービスプロジェクト(A)を作る。 サービスのデザイナのプロパティ(もしくは右クリック)からインストーラーの追加を選択。 サービス用のインストー…

プログラマに重要な資質

なんか最近めんどいって連呼してる気がしたんで。 プログラマに重要な資質とは。 楽するのがすき。 楽するためにはどうしたらいいかを真剣に考える。 ってのをむかしどっかで聞いたな。 1万行のソースとかを苦もなく書ける人間は、ほかの職業付いたほうがい…

プロセスの使用リソースとかの確認。

死ぬほどめんどい。なんで WMI はスクリプトなんだ。インテリセンスきかねーじゃねーか。 というわけでいろいろ手抜き。してもめんどい。 /// <summary> /// ProcessResourceInfo クラス。 /// </summary> public class ProcessResourceInfo : IDisposable { private readonly i…

Serializerつくってみた。

というわけで Serializer つくってみた。 /// <summary> /// Serializer クラス。 /// </summary> public class Serializer<T> { public T Deserialize( string filePath ) { using (var stream = File.Open( filePath, FileMode.Open )) { using (XmlDictionaryReader reader = Xm</t>…

BinaryFormatterで大量データを扱うと例外が発生。

ある程度の大きさを持ったオブジェクトをシリアライズしてみた。 System.Runtime.Serialization.SerializationException:内部配列を Int32.MaxValue 要素を超えて展開することはできません。 えっ!?相変わらず意味不明のエラー吐きやがる。 途中まで作られ…

Excel Com オブジェクトの扱いがめんどくさい点。

なんか前にオープンするサンプル作ったんだけど。 あれでは開放が不十分らしい。 以下要点。 ReleaseComObject での開放が必要。 Excel.Range の開放も必要。 他 App, Books, Book, Sheets, Sheet も なんか全部ラップして本体は触らせないようにさせるくら…

Transaction 確認。

ちょっと話題に出た+忘れかけてたので再確認してみた。参考 トランザクション スコープを使用した暗黙的なトランザクションの実装 とか。 static void Main( string[] args ) { TranTest test = new TranTest(); test.TestExecute(); Console.WriteLine( "-…

Console WriteLine で色を変える。

そういや、xp あたりからエスケープシーケンスがデフォルトでは使えないんだっけ、とか思いつつ。 (NT以降の32BitのWindowsらしい)Console クラスは static だったので拡張できず残念。 出来るように言語拡張してくれないかな。 public static void ConsoleW…

SQL Azure Server テーブル定義取得

select * from sysobjects where xtype = 'U' order by xtype, name Azure ではこれ使えなかったんで View で ちょっと追加してるけど。 select objs.name , objs.object_id , objs.type , cols.name , cols.column_id from sys.all_objects objs , sys.all_…

円周率

つくば記念に。 ガウス・ルジャンドルアルゴリズム static double Pi(int count) { double a = 1; double b = Math.Sqrt( 1 / 2.0 ); double t = 1 / 4.0; double p = 1; for ( int i = 0; i < count; i++ ) { double x = (a + b) / 2.0; double y = Math.Sq…

.net でのエクセル読み込み

エクセルを読み込む。(未テスト)Openで全部の引数指定とかめんどいからクラス作ってみた。 ついでなんでちょっと機能拡張。まずは参照設定。 COM のタグから。 Microsoft Excel 11.0 Object Library WorkbookHelper /// <summary> /// ワークブックを簡易に扱えるラ</summary>…

NTP補足

2036年問題はいいけど。 その前にきっと IPV6 のほうが問題になるから結局2036年まで使えるかどうか。 参照識別子に IP 入ってくるし。 とか思ったらver4はIPV6対応なのか。固定小数点とかビット単位でのフラグとかいろいろ古臭い仕様だよな。

NTPクライアント

ソースまとめ [クラス] TimeSynchronizer 時刻補正 NtpClient NTP 通信用クライアント NtpPacket NTP 通信で使用するパケット NtpPacket /// <summary> /// NTP 通信で使用するパケットを提供します。 /// </summary> public class NtpPacket { const long COMPENSATING_RATE_32…

固定小数点数。

小数部は2の小数部の桁数(ビット)乗でわる。 桁数 = n 固定小数点の小数部 = a 求める値 = x x = a / Math.Pow(2, n)元ネタ 2pow(Σn-1)/2pow(Σn) = 1/2Pow((Σn) - (Σn-1)) = 1/2Pow(n)※てきとー表記法小数部16bitで0x8000なら0.5 単純に少数部は1/2の乗数に…