気がついたら
以前ダウンロードした音楽ファイルや
Windows Media Player で、
DRMのエラーが起こってた。
とうも、こないだマザーボードを交換したのが原因の様子。
DRMはハードウェアの構成情報を元にライセンスが
管理されているらしい。
で、
CPUとかマザーボードを変更したせいで
以前のライセンスがすべて無効になった、と。
システムドライブを交換したときは大丈夫だったのに・・・?
まぁ、とりあえず今回は何とかなったけど、
こういう時ってDRMはとにかく邪魔でしかないな・・・。
2009/11/23
2009/11/22
テクスチャとGLSL入門の本
たぶん、
「床井研究室」 http://marina.sys.wakayama-u.ac.jp/~tokoi/
で掲載されている内容を書籍化したものだと思います。
いつも参考にさせていただいているサイトだし、
本屋で見かけたので買ってみた。
ちなみに、「入門2」とついているとおり、前編も出版されています。
Chapter 1 ~ 27 は固定機能を使った
テクスチャの基本と応用、
残りのChapter 28 ~ 36 がGLSLを使った
シェーダの基本と応用、
という感じの内容。
WEBサイトのほうをみての通り、
読みやすく丁寧に解説されてます。
OpenGLの基本的なことはある程度わかってきて
これからシェーダに手を出してみようかというのには
ちょうどいいかと。
2009/11/15
2009/11/12
マザーボードを交換してみた
そろそろ Pentium D ってのもいかがなものかな、という気がしてきたので、
思い切ってCPUとマザーボードを自分で交換してみることに。
最初はCore2 Quad あたりにしようかと思っていたが、
Core i7 シリーズの新しいのが発売されているようなので、
せっかくなのでそっちにしてみた。
CPU : Core i7 860
マザー : GIGABYTE P55M-UD2
メモリ : 1GB 1333MHz x2
グラフィックカードは前から使ってる
ASUSのGeForce 8600GTをそのまま。
おっかなびっくりCPUをセットしたりとかしながら、
なんとか無事に組み込みは完了。
電源系をつなぎ直して、
いよいよ電源ON。
ちゃんと起動画面が表示され、起動も無事に・・・
と思ったら、
ハードウェアの大きな変更が検出されたとかで
Windowsのライセンス承認が要求された。
この時点ではLANがまだ使えないようでネットに接続できず、
電話で10分ほど自動音声とやりとりするはめに・・・。
まぁ、それもなんとか終わり、
ドライバのインストールなんかもわりとすんなり完了。
で、再起動・・・。
起動するたびに、起動中にAHCIを有効にするかY/Nと聞かれるので
試しにYにしてみたら起動中に落ちて、セーフモードも起動しない状態に・・・。
よくわからんがYにしてはいけなかったらしい。
BIOSで「Integrated Peripherals」 - 「SATA RAID/AHCI Mode」
がAHCIになってたのでDisableにもどしたら、ちゃんと起動するようになった。
CUPが8スレッドも扱えるようになったし、
.NET Framework も近々4.0で
並列プログラミングのための機能が追加されるらしいし、
そのうちマルチスレッドでなにか遊んでみるのも面白そうかも。
思い切ってCPUとマザーボードを自分で交換してみることに。
最初はCore2 Quad あたりにしようかと思っていたが、
Core i7 シリーズの新しいのが発売されているようなので、
せっかくなのでそっちにしてみた。
CPU : Core i7 860
マザー : GIGABYTE P55M-UD2
メモリ : 1GB 1333MHz x2
グラフィックカードは前から使ってる
ASUSのGeForce 8600GTをそのまま。
おっかなびっくりCPUをセットしたりとかしながら、
なんとか無事に組み込みは完了。
電源系をつなぎ直して、
いよいよ電源ON。
ちゃんと起動画面が表示され、起動も無事に・・・
と思ったら、
ハードウェアの大きな変更が検出されたとかで
Windowsのライセンス承認が要求された。
この時点ではLANがまだ使えないようでネットに接続できず、
電話で10分ほど自動音声とやりとりするはめに・・・。
まぁ、それもなんとか終わり、
ドライバのインストールなんかもわりとすんなり完了。
で、再起動・・・。
起動するたびに、起動中にAHCIを有効にするかY/Nと聞かれるので
試しにYにしてみたら起動中に落ちて、セーフモードも起動しない状態に・・・。
よくわからんがYにしてはいけなかったらしい。
BIOSで「Integrated Peripherals」 - 「SATA RAID/AHCI Mode」
がAHCIになってたのでDisableにもどしたら、ちゃんと起動するようになった。
CUPが8スレッドも扱えるようになったし、
.NET Framework も近々4.0で
並列プログラミングのための機能が追加されるらしいし、
そのうちマルチスレッドでなにか遊んでみるのも面白そうかも。
2009/10/12
BinaryFormatterにアセンブリバージョンを無視させる
シリアル化、逆シリアル化に使われる
BinaryFormatterクラスについて。
どうやら、
逆シリアル化するときに
BinaryFormatter.AssemblyFormatプロパティに
FormatterAssemblyStyle.Simpleを設定しても、
ちゃんと機能してくれない(アセンブリバージョンの違いなどを無視してくれない)
といバグがあるらしい。
特に、ジェネリックなクラスを逆シリアル化する場合に
この現象が起こるっぽい。
回避策としては、
BinnaryFormatter.Binderプロパティに、
SerializationBinder抽象クラスを実装した自作のクラスのインスタンスを設定する
というのが有効のようだ。
で、
SerializationBinderクラスの実装方法。
実装すべきは
Type BindToType( string assemblyName, string typeName )
というメソッドひとつのみ。
名前通りアセンブリ名と型名が引数として渡されるので、
アセンブリバージョンを無視したいなら
return Type.GetType( typeName );
とすればいいんじゃない?
と、思うところだが、そうはいかない場合がある。
ジェネリッククラス(または構造体)の場合、
typeNameには、例えば
List<BinaryFormatterTest.Hoge>
を逆シリアル化するときには、こんな感じの文字列がはいってくる。
System.Collections.Generic.List`1[[BinaryFormatterTest.Hoge, BinaryFormatterTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ef4f1793c250e8fa]]
つまり、型パラメータにアセンブリの厳密名が入ってしまっている。
これを
Type.GetType( typeName );
とすると、
VersionやCulture、PublicKeyTokenがすべて一致するアセンブリが
見つからない場合、例外がスローされる。
なので、アセンブリバージョンとかを無視させたいなら、
Type.GetType()にtypeNameを渡す前に
どうにかしてtypeNameの文字列中から型パラメータの
Versionやらなんやらの文字列を強引に削除しないといけない。
で、以下、そのサンプルコード。
結構、強引にやってますが、なんとかうまくいくみたい。
バグがあったらごめんなさい。
BinaryFormatterクラスについて。
どうやら、
逆シリアル化するときに
BinaryFormatter.AssemblyFormatプロパティに
FormatterAssemblyStyle.Simpleを設定しても、
ちゃんと機能してくれない(アセンブリバージョンの違いなどを無視してくれない)
といバグがあるらしい。
特に、ジェネリックなクラスを逆シリアル化する場合に
この現象が起こるっぽい。
回避策としては、
BinnaryFormatter.Binderプロパティに、
SerializationBinder抽象クラスを実装した自作のクラスのインスタンスを設定する
というのが有効のようだ。
で、
SerializationBinderクラスの実装方法。
実装すべきは
Type BindToType( string assemblyName, string typeName )
というメソッドひとつのみ。
名前通りアセンブリ名と型名が引数として渡されるので、
アセンブリバージョンを無視したいなら
return Type.GetType( typeName );
とすればいいんじゃない?
と、思うところだが、そうはいかない場合がある。
ジェネリッククラス(または構造体)の場合、
typeNameには、例えば
List<BinaryFormatterTest.Hoge>
を逆シリアル化するときには、こんな感じの文字列がはいってくる。
System.Collections.Generic.List`1[[BinaryFormatterTest.Hoge, BinaryFormatterTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ef4f1793c250e8fa]]
つまり、型パラメータにアセンブリの厳密名が入ってしまっている。
これを
Type.GetType( typeName );
とすると、
VersionやCulture、PublicKeyTokenがすべて一致するアセンブリが
見つからない場合、例外がスローされる。
なので、アセンブリバージョンとかを無視させたいなら、
Type.GetType()にtypeNameを渡す前に
どうにかしてtypeNameの文字列中から型パラメータの
Versionやらなんやらの文字列を強引に削除しないといけない。
で、以下、そのサンプルコード。
結構、強引にやってますが、なんとかうまくいくみたい。
バグがあったらごめんなさい。
public class IgnoreVersionBinder
: SerializationBinder
{
public override Type BindToType
( string assemblyName, string typeName )
{
int i = typeName.IndexOf( '[' );
while( i >= 0 )
{
i = typeName.IndexOf( ',', i );
int end = typeName.IndexOf( ']', i );
typeName = typeName.Remove( i, end - i );
i = typeName.IndexOf( '[', i );
}
Type t = Type.GetType( typeName, false );
return t;
}
}
2009/08/13
OpenTKが更新中
最近OpenTKの活動が活発になっているようだ。
まだ詳細はみていないが、
現在、正式にリリースされているのはver.0.9.8-2。
でもって、ver.1.0リリースに向けてver.0.9.9も公開が始まっている様子。
なにやらOpenCVなるもののラッパーも追加されたとか。
ver.0.9.9からwindowsでのFSAAをサポートするようになったっぽいが、
まだ試してないのでよくわからん。
まだ詳細はみていないが、
現在、正式にリリースされているのはver.0.9.8-2。
でもって、ver.1.0リリースに向けてver.0.9.9も公開が始まっている様子。
なにやらOpenCVなるもののラッパーも追加されたとか。
ver.0.9.9からwindowsでのFSAAをサポートするようになったっぽいが、
まだ試してないのでよくわからん。
2009/05/28
TeX : 索引ページのヘッダ・フッタ
なんか唐突だが、
TeXの小ネタ。
ヘッダやフッタをいろいろいじった文書を
fancyhdr パッケージを使って作ってた。
で、それにはmakeidx パッケージと mendex を使って索引もつけてたのだが、
どういうわけか、\printindex コマンドで出力した索引ページだけは
ヘッダ・フッタが強制的に(デフォルトの設定に)変更される。
fancyhdr を使わずにヘッダ・フッタを設定しても同じようなことが起こる。
まぁ、索引ページにあれこれヘッダ・フッタをつけるな、
と、いうことなのかもしれないが、
状況によっては
ページ番号の位置が索引ページだけ違うところにある、
なんてことにもなるわけで。
いろいろ原因を探ってみたところ、
結局、クラスファイル jsarticle.cls の
theindex 環境の定義に原因があった。
(この theindex 環境は、\printindex コマンドで取り込まれる
*.ind ファイルに書かれているので、直接使用することはない。と思う。)
jsarticle.cls ファイル中の theindex 環境の定義(1400行ちょっとあたり)
\newenvironment{theindex}{%
...
に続く、
\plainifnotempty
というコマンドをコメントアウトすると
(このコマンドがヘッダ・フッタをデフォルトに設定するらしい)
ヘッダ・フッタが索引ページで強制的に変更されることはなくなる。
TeXの小ネタ。
ヘッダやフッタをいろいろいじった文書を
fancyhdr パッケージを使って作ってた。
で、それにはmakeidx パッケージと mendex を使って索引もつけてたのだが、
どういうわけか、\printindex コマンドで出力した索引ページだけは
ヘッダ・フッタが強制的に(デフォルトの設定に)変更される。
fancyhdr を使わずにヘッダ・フッタを設定しても同じようなことが起こる。
まぁ、索引ページにあれこれヘッダ・フッタをつけるな、
と、いうことなのかもしれないが、
状況によっては
ページ番号の位置が索引ページだけ違うところにある、
なんてことにもなるわけで。
いろいろ原因を探ってみたところ、
結局、クラスファイル jsarticle.cls の
theindex 環境の定義に原因があった。
(この theindex 環境は、\printindex コマンドで取り込まれる
*.ind ファイルに書かれているので、直接使用することはない。と思う。)
jsarticle.cls ファイル中の theindex 環境の定義(1400行ちょっとあたり)
\newenvironment{theindex}{%
...
に続く、
\plainifnotempty
というコマンドをコメントアウトすると
(このコマンドがヘッダ・フッタをデフォルトに設定するらしい)
ヘッダ・フッタが索引ページで強制的に変更されることはなくなる。
登録:
投稿 (Atom)