Jan 10, 2008 - UdpClientひでえ
UdpClient.BeginSendやUdpClient.BeginReceiveに渡したcallbackは常に非同期で呼び出されるのかと思っていたら、ときどきBeginSendやBeginReceiveの中から同期呼び出しされる場合があることが判明。ひでえ。
IAsyncResult.CompletedSynchronouslyがtrueって何なんだよ。orz
Jan 10, 2008 - UdpClientひでえUdpClient.BeginSendやUdpClient.BeginReceiveに渡したcallbackは常に非同期で呼び出されるのかと思っていたら、ときどきBeginSendやBeginReceiveの中から同期呼び出しされる場合があることが判明。ひでえ。 IAsyncResult.CompletedSynchronouslyがtrueって何なんだよ。orz Jan 02, 2008 - 本当に地デジだけになるの?昨年、実家のテレビが映らなくなってきたのでAQUOSを買ったのですが、 父の使い方を見ていると、BSデジタルと地上アナログしか視聴していません。 どういうことなのかというと、地デジが視聴に耐えられないような映像しか送られてこないからです。 まるで帯域の狭いインターネット接続環境でストリーミング再生しているような感じです。 こんな状況で地上アナログ放送が終了すると、私の実家の地域(能登半島の入り口)では地上波放送が受信できなくなるのではないか?と心配です。 Jan 01, 2008 - 今年はWPFでGO!明けましておめでとうございます。 今年は.NET Framework 3.5とIronPythonで新年を迎えております。 昨年までWin32 APIとC++で頑張ってきましたが、 .NET Frameworkの機能がPlatform SDKで提供されてきた機能を凌駕するようになってきたこととIronPythonの機能が優れていてActiveX Scripting Hostより使いやすくなっていることが分かったので、 今後は.NET Frameworkを前提にしたソフトウェア作りに移っていこうと思っています。 デスクトップアプリケーションの開発者としては、WPFのビジュアルが魅力的に感じるのはもちろんなのですが、WPFを実際に使い始めて分かったのは、クラスライブラリの設計がとても洗練されているということです。 例えば、WPFのクラスライブラリがDependency Propertyですが、2つのインスタンスがそれぞれ保持している値(プロパティ)をBindingで互いに関連付けることができます。 通常、WPFのFramework Elementのプロパティと関連付けて用いるかと思いますが、自前のクラス同士で関連付けるときにも使えるのではないかと思っています。 from mywpf import * class FooObject(DependencyObject): def __init__( self ): pass def __GetFoo( self ): return self.GetValue( FooObject.FooProperty ) def __SetFoo( self, value ): self.SetValue( FooObject.FooProperty, value ) Foo = property( __GetFoo, __SetFoo ) FooObject.FooProperty = DependencyProperty.Register( 'Foo', String, FooObject ) class BarObject(DependencyObject): def __init__( self ): pass def __GetBar( self ): return self.GetValue( BarObject.BarProperty ) def __SetBar( self, value ): self.SetValue( BarObject.BarProperty, value ) Bar = property( __GetBar, __SetBar ) BarObject.BarProperty = DependencyProperty.Register( 'Bar', String, BarObject ) foo = FooObject() bar = BarObject() BindingOperations.SetBinding( bar, BarObject.BarProperty, Binding( 'Foo', Source=foo, Mode=BindingMode.TwoWay ) ) foo.Foo = 'This is Foo.' print bar.Bar bar.Bar = 'This is Bar.' print foo.Foo 一組のプロパティ同士での関連付けなら設定関数を作って互いの設定値を同期すればよいでしょうけど、 プロパティの数が膨大になってくると設定関数による方法ではコードの整合性を維持するのが辛くなっていくことでしょう。 | ||
Copyright ©
2008
Koichi Yamamoto |