はくさいのメモ帳

調べたことのメモをするだけです

C#

名前付きパイプがマシンをまたいじゃう件

C#

さすがM$、名前付きパイプがマシンを跨いでるじゃないか!IPCとか言うから騙されたよ・・・

Cancel()したTaskの後始末

C#

try { _taskRead.Wait(_canceller.Token); } catch (OperationCanceledException) { } _taskRead.Dispose(); こんなコード(もっと上のほうでCancel()してる)の3行目でException発生 System.InvalidOperationException タスクを破棄できるのは、そのタスクが…

OpenJTalkどうやって使うべきか

まだ検討中という段階だけど、使えるなら棒読みちゃんの名前付きパイプI/Fを使おうかと・・・

そういえばLinuxでコメント読み上げできました

まだサンプルレベルですが、技術的に難しくはないことが分かったという話です。

Mono/LinuxでNUnit

単品でnunit-guiとかすると文字化けとかして焦りますが、MonoDevelopにはNUnitが統合されてて普通に使えます(文字化けとかない)。

というわけで適当な追加パッチ

C#

うちの環境はさらにこのパッチも当ててしまった。影響のあるユーザーも出そうなパッチ。 でもこちらの方がマジックナンバーもないしTimeZoneInfoを潔く捨ててるのが気持ちいい。 diff --git a/CaveTubeClient/JavaScriptTime.cs b/CaveTubeClient/JavaScript…

JavaScriptTime.csを改悪

結局こんなパッチになりました。蛇の道は蛇ということで。 diff --git a/CaveTubeClient/JavaScriptTime.cs b/CaveTubeClient/JavaScriptTime.cs index 37ddd56..38f5b3a 100644 --- a/CaveTubeClient/JavaScriptTime.cs +++ b/CaveTubeClient/JavaScriptTim…

Mono/LinuxでTimeZoneInfo.FindSystemTimeZoneById()

無理でした。どうにもなりません。

DummyXmlResolver

とりあえずMono/LinuxにXmlPreloadedResolverがない問題を以下のダミー実装を使うことで解決しました。 class DummyXmlResolver : XmlResolver { protected Stream _stream = null; protected Uri _uri = null; public override ICredentials Credentials { …

Mono対応

.NET Framework 4.5→4.0の変更は、面倒ではあっても困難に直面するというほどのことではありませんでした。主にawait/async関連の書き直しだけだったので(それでもタイミングが変わるなどの余波があり、テストが通らなくなって焦りました。)。しかし、プラッ…

Mono

.NETも試行錯誤でしたが、さらに今回はMonoに挑戦してみました。

Livetubeのコメント読みにくい

コメント読むプログラムを書きました。 using System; using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml; using System.Xml.Resolve…

interface三昧その2

C#

まだそこら辺の適当な実装をたらたらと休み休みしているわけですが、クロージャが一般に使われるようになってワンライナーのような長ったらしい一筆書きの実装に囲まれつつある現在、型に強い制約を与えて変更しようものなら大きな余波が出まくるinterfaceを…

interface三昧

Moqでテストコードを書こうとすると、どうしてもパッケージ/名前空間の境界で外から見えるようなクラスはinterfaceにしておかないとうまいこと単体テストできません。生成するインスタンスは全部interfaceにしておいたほうがいいでしょう。そうなるとFactory…

Visual Studio 2012 Expressで使えるモックライブラリを知りたい

Moles最高という記事をよく見かけるもののExpressでは何かのガードに弾かれてるのかインストールできない。結論からいうといいのがなかったから教えてくださいって話なんだけど・・・

TextReaderにCancellationTokenを渡せるメンバがない!?

C#

いや本当にマジで StreamのReadAsyncとかにはついてるのになぜ? というかこんな渡せたり渡せなかったりするもので組めるか!!

ソースコメントからドキュメントを生成するには?

今までは必要ならDoxygen使ってました。でも今回はどうせ.NETならということでSandcastleを使ってみました。ちなみにソースコメントってこんなやつです。 /// <summary> /// 停止する /// </summary> public void Stop() { Dispose(); } Visual Studioだと///を入力した瞬間にシ…

.NETで文字列の比較は==?

C#

javaだとequalsTo()じゃないとダメって怒られるけど、.NETってどうなんだっけ? 今更ながら調べてみた。

await/asyncだって結局lockが必要

C#

.NETの非同期処理が段々分かってきた。

NUnitでAssert.Throwsするとユーザーコード内で例外がハンドルされなかったって怒られる

テストも成功してるしなになにどうして?って思った。

CSV Parserの時間計測

C#

汚くてもエラー検出ゼロのゆるゆるで実用性ゼロでもせっかくデバッグしたので時間を測ってみた。

lockとMonitorのWaitとPulse/PulseAll

C#

古い同期機構らしいけど、一番適切だったのでさっきの問題解決に使いました。Javaのsynchronizedとwaitとnotify/notifyAllそのものだった。

VS2012Express付属のコード分析

たまげた。すごいよ兄さん。

VS2012Express付属のテストツールのコマンド

VSTest.Console.exe だそうだ(2010ではMSTest.exeらしい。これも互換用についてると書かれているが2012Expressにはついてなさそう。)。使い方詳細とかはこちら。これでOpenCoverで使えそうなんだけどいらないし確認もしてない。

そしてOpenCoverに辿りつく

カバレッジ測定したいなーと思って探していたら、とりあえずM$の有償テストツールを使うか、どうやら製品になってしまったらしいNCoverを使うか、無償だけど開発が止まってるPatCoverがあるらしい。そもそもNUnitの付属品だと思ってたNCoverが有償だったとは…

Visual Studio 2012 Express Desktopの単体テスト機能を使ってみた

今更ですが初めてなんだもん

NLogでスレッドID表示

${threadid}で表示された。こんな感じ。 <target name="console" xsi:type="Console" layout="${level}[${threadid}]: ${message}" /> awaitの前後でスレッドIDが変わるのが見て取れたりして面白い。 とりあえず簡単そうだったので使ってるんだけど使ってる人いるんだろうかNLog。</target>

FileSystemWatcher

C#

日付などが変わって新しいログファイルが出来たらそれに監視対象を変更する処理を入れています。新しいファイルができたことを監視できそうなクラスが題名にあるFileSystemWatcherです。

CsvReader

C#

これ使ってたんだけど問題が・・・

asyncとawait

C#

ようやくんなんとなく理解しつつあるがどうにも理解できない