PC

rubygemで証明書有効期限ぎれ

Mohmongar
rubyでgemを使ってライブラリをインストールしようとするとSSL証明書の有効期限切れするとか出る。いろいろ方法があるが追加証明書をインストールした。詳しくはここかここを参考にしました。thanks! エラーメッセージ: Unable to download data from https://rubygems.org/ - SSL_connect retur ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed ( https://api.rubygems.org/latest_specs.4.8.gz) が出る場合は、これを https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem ここ ....libruby2.*.*rubygemsssl_certs にコピーするだけ。

Rubyで凡ミス

Mohmongar
Rubyで凡ミス。if文の構文終わりのend にifをつけても次段(行)になにか値を返すものがあればエラーが出ない。末尾ifが条件式(print 3)として値はnilで解釈されて、前段のif文すべてが実行されない。end ifとしてしまうのがそのそもの間違いだが、then以下もelse以下も実行されないので30分くらい悩んだ。例文は短くて見通しがいいが、実際はthen~else~end部分が長かったので、末尾にifをつけていたのに全然気が付かなかった。また例文の(print 3)のところが普通の式(ex. x = x + 1)だと通ってしまうことがあるので困りもの。その場合(x = x + 1)部分が先に実行されるので、ますます挙動がわからなくなる。 if a==1 then print 1 else print 2 end if print 3

Windows 7でCプログラム上から、ある再生デバイスを「既存の再生デバイス」として設定する

Mohmongar
Windows 7でプログラム上から、ある再生デバイスを「既存の再生デバイス」として設定するには、IPolicyConfigオブジェクトからSetDefaultEndPointメソッドを使う。Microsoftのundocument apiなのでいつか使えなくなるかも。 参考にしたのはイム日記とZorn Softwareとそのsvnにあるサンプルソースです。特ににヘッダはここ。Thanks! HRESULT hr = CoCreateInstance(__uuidof(CPolicyConfigClient), NULL, CLSCTX_ALL, __uuidof(IPolicyConfig), (LPVOID *)&pPolicyConfig ); hr = pPolicyConfig->SetDefaultEndpoint(defaultTag, eConsole);

Chromeでアンチエイリアス

Mohmongar
Chromeで何の拍子かアンチエイリアスがかからなくなったので設定をいろいろ試してたときのメモ。 設定画面の「Chrome://flags」から ソフトウェア レンダリング リストをオーバーライド : 無効 DirectWrite を無効にする: 無効 LCD テキストのアンチエイリアス:無効 をすべて無効。最後のやつは一見有効が正解のような気がしますが、「無効にすると、アクセラレート合成の際に LCD(サブピクセル)の代わりにグレースケール アンチエイリアスでレンダリングされます。」とのことなので、無効にしてグレースケールAAにしましょう。

Assassin’s Creed® IV Black Flag™ セール中

Mohmongar
Assassin’s Creed® IV Black Flag™がSteamでセールをしてたのでぽちった。最近のUnityもセールしてたけどまだ高いので、もちょっと待とうか。アサシンシリーズは初体験だが、WatchDogsと操作はほぼ同じ。 IVがとっつきやすそうだったので、ここから試しです。Steam中の右のカラムにある言語についての対応で日本語が「サポートされていません」と出ているが、これは大丈夫。日本語でガンガンしゃべってます。steamではよくあるが、そうかいてあっても、説明文中にOnly English and Japanese languages are available in Japan.とかあって対応している場合がある。パッケージ版とかの配慮?。よく読むか、ネットの情報を調べるべし。

Firefox 36/36.0.1がWin8で挙動不審

Mohmongar
Firefox 36/36.0.1が会社のPC(Win 8)の調子が悪い。立ち上げてしばらくはふつうに動くが、しばらくして新しいページを読み込みにいったら、そのまま帰ってこないときがある。いったん起こると、どのタブも読み込みしにいったまま帰ってこない。終了ボタンで終了させてもウインドウは閉じるが、バックグランドでプロセスが動いている。再起動するとプロファイルにアクセスできない、となるので、多分ファイルをつかんだまま。プロセスがゾンビ化していてタスクマネージャからも落とせない。Win8だから?8.1に上げたいが社内システムの関係で上げられない(泣)、うちのWin7proでは問題がない。とりあえず会社ではChromeを使っている。 まてよ今思いついたが会社はプロキシ経由なので、firefox36でリリースされたhttp2が悪さをしているかも。明日ためす。

スクリーン上のマウス座標を取得し、WPFの論理座標に変換する方法

Mohmongar
スクリーン上のマウス座標を取得し、WPFの論理座標に変換する方法。マウス座標はデバイス座標なのでWPFで使うには論理座標に変換が必要。 System.Drawing.Point dp = System.Windows.Forms.Cursor.Position; System.Windows.Point wp = new System.Windows.Point(dp.X, dp.Y); // マウス座標から論理座標に変換 PresentationSource src = PresentationSource.FromVisual(this); CompositionTarget ct = src.CompositionTarget; System.Windows.Point p = ct.TransformFromDevice.Transform(wp);

テキストファイルをDLL形式にコンパイル

Mohmongar
テキストファイルTest.txtをDLL形式リソースのTest.resources.dllにコンパイルする方法。内部識別子をつけるオプション/embed:filename,specified root nameのところがミソだったのでメモ。 resgen.exe Test.txt Test.resources al.exe /t:lib /embed:Test.resources,Usernamespace.Test.resources /out:Test.resources.dll

C#で外部にあるDLL形式のresourceを動的に読み込む方法

Mohmongar
C#で外部にあるDLL形式のresourceを動的に読み込む方法。内部に埋め込む方法やサテライトDLLを使う方法はよくあったけど、こちらの方法はあまり紹介されてなかったので、メモ。 System.Reflection.Assembly asm; asm = System.Reflection.Assembly.LoadFrom("Test.resources.dll"); string[] manifests = asm.GetManifestResourceNames(); string manifest = manifests[0].Replace(".resources", string.Empty); ResourceManager rm = new ResourceManager(manifest, asm); string text = rm.GetString("String1"); // string resource

WPFでコードだけどバインドするときの例

Mohmongar
WPFでデータバインドをコードだけで実現する方法がわかりにくかったのでメモ。XAMLだとサンプル例は見つかりやすいんだけど、コードだけの例は少なかった。WPFの主旨からはずれるのかな。 バインドされるクラス側のコード(プロパティ変更の通知あり) Class Class1 { private int _test; public int test { get { return _test;} set { _test = value; OnPropertyChanged("test"); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string name) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(name)); } } public Class1(int x) { test = x; } } コードだけでバインドする時 obj = new Class1(1); label1.DataContext = obj; label1.SetBinding(Label.ContentProperty, new Binding("test")); XAMLも使ってバインドする時のXAML側 <Label Content="{Binding test}" name="label1"/> XAMLも使ってバインドする時のコード側 obj = new Class1(1); label1.