急に暑くなった。うちの古いエアコンは動くんだろうかとつけてみたら意外にもとても元気に冷やしてくれた。
クレジットカードが止められた。Amazonでスキャナと裁断器を買おうとしたら決済ができないというエラーが出てきて数回試すもののだめだったので、キャッシュカードについてきた普段使ってない方で通した。
何かあぶないことがあったかと明細を見てみるけどべつにおかしい物はないな。変な使い方もしてないので止められる覚えがないし、どこかから漏れたとかいう話も聞かない。クレカ会社に電話してみると7月1日の朝に○○円の物買おうとしましたか?って言われたが覚えがないぞ……って決済失敗したスキャナと裁断器じゃねぇか。わたしです。怪しいパターンがあったから止めたとのことでもう解除されたと言われて使えるようになった。よかった。
クレカっててっきり怪しい使われ方があったあとで止まるものだと思ってたが、これから決済しようとした物が怪しいパターンにひっかかったって時に止まることもあるんだね。リアルタイムといってもいいような短時間でそこまでチェックしてるとかすげー。
普段あんまり使ってないAmazonでいきなり家電みたいな換金性の高い物を買おうとしたからひっかかったんだろうな。買おうとした物の情報がどこまでクレカ会社に渡ってんのかわからんけど。
受信側の再接続なんかが上手くいかないのをなんとかしようと四苦八苦してる。
送信側のOutputStreamは一接続一オブジェクトになってるんだけど、受信側のSourceStreamは一チャンネル一オブジェクトになってて再接続なんかをちゃんと処理しないといけなくなってるのが複雑になってる原因だな。SourceStreamも一接続一オブジェクトにしたい。
SourceStreamは今接続してる上流の情報とか接続しちゃだめリストとか保持してるから一接続一オブジェクトになってないんだけど、それらの情報をチャンネル側に移行してしまえば接続の度に作り直すことができよう。再接続もとにかくSourceStreamを作り直せばいいだけなので話が簡単になる。
ただそれをやろうとするとそこそこ時間かかりそうなのでちょっと保留。 とりあえずSourceStreamBaseとかOutputStreamBaseに非同期送受信の管理が埋め込まれてるのが気にくわないのでこれを分離したい。
……分離した。まあ分離だけだったので簡単なんだけど、エラー処理をどうすればいいのか曖昧だったので動かなくなってしまった。 接続終わってもいいと判断したあとに接続エラーが出るとエラー扱いになっちゃう。 アプリケーション層で接続終了したのでこれ以降の通信エラーは見ませんということにしないとだめだな。
結局大きく作り直さないと整理しきれないかー。かといって中途半端な状態でリリースするわけにもいかんしな。 めんどいからmasterにコミットしちゃったのは早まったぜ。
コミットする前の時点でリリース用のブランチ分けるか一個戻すかした方がいいな。
何故かエラーが出て起動しないという報告が上がってるんだが、再現しないし情報も少ないので如何ともし難い。
また起きたという話なので聞いてみたんだが、PeerCastStation.exeのプロセスは無く、なんだか既に起動している的なエラーメッセージが出ていたらしい。 あと特に何もおきずに起動しないパターンもあったとか。いずれもOS再起動で復旧したとのこと。
PeerCastStation.exeは二重起動防止のため1、名前付きのイベントオブジェクトを作ってそれが開けたら二重起動ということにしてるんだけど、何らかの理由でイベントオブジェクトが削除されないまま終了した後に二重起動防止にひっかかって起動しなくなってるのだと予想できる。
が、しかし。二重起動防止にひっかかった時って何の表示もなく終了してるんだよね。だから何もおきずに起動しないパターンはこれに当てはまりそうなんだけど、既に起動している的なメッセージが出ることはない。そのメッセージを出してるのは一体何者なんだろう。さらなる情報が待たれる。
あと名前付きイベントオブジェクトが削除されない理由もよくわからない。該当部分のソースを見ると作ったイベントオブジェクトは明示的にDisposeしていないが、まあファイナライザで削除されるんでないか。でもPeerCastStation.exeが落ちた後に発生したということなのでもしかしたらファイナライザが正常に実行できない場合にイベントオブジェクトが生き残っちゃうのかも。それってどう回避すればいいんだろう?
……CreateEventのドキュメント見たらプロセス終了時にイベントオブジェクトのハンドルは自動的に閉じられるって書いてあるじゃん!ファイナライザ実行失敗してもプロセスが死んでるんだからイベントオブジェクトのリークなんか起きないよ!どういうことなの!?
うーん、謎だなぁ……。
二重起動防止とか好きでやってるわけじゃないんだけど、PeerCast.exeがそういう動作をしてそれに依存する周辺ツールがあるので互換性を取るためにやってる ↩
fossil 1.2.6がちょっと前に出てた。 リリースノートの翻訳でも……と思ったんだけど明示的にリリースノートとした物が無いんだよね。 ダウンロードページに出てる変更点を訳すか。
fossilオリジナル(?)のWiki記法はいまいち使いづらいので、Markdownがチケットで使えるようになったやったー!!と思ったんだけど使い方がわからん。 入力フォーマットのドロップダウンに出てこないんだけどこれ自分でMIMEタイプ入力できるようにフォーム改造しないといけないんだろうか。 Wikiでは普通に選べるんだけどなぁ。
fossilでコミットする時に-M ファイル名
とやって前もって書いといたチェンジログをつっこんだら文字化けた。
Windowsで使ってるんだけど、どうもCP932で書いたファイルを指定しないといけないのにUTF-8で書いたファイルをつっこんだようだ。普通にci
だけでやった時は適当にエディタが起動してそこに書いてるだけで何も問題なかったので気付かなかったよ……。
チェンジログが文字化けしてるのは困るのでコミットを取り消そうとundo
……あれ、戻す物がないって言われた。コミットの取り消しはできないのかー。
他に方法がないかとヘルプを眺めてたけど簡単にはできなさげ。
MLを調べるとshunすれば消える的なことがわかったけど、変更したファイルを全部無効化しないといけないのでめちゃくちゃめんどくさい。 gitと違ってバージョン履歴管理ソフトなんでコミットを消したりはやるべきでないんだよ!とのこと。monotoneもそうだったので理解できる。 でも文字化けチェンジログはなんとかしたいな。
monotoneはcert付けなおしてチェンジログ変えられた(と思う)んだけどfossilではそれっぽいコマンド見当たらない。
だがui
のタイムラインでコミットを選択するとEditとかいうのが出てるのを発見。やってみたら普通にチェンジログを変更できた。やったー。
変更つっても以前のは以前ので残ってるんで文字化けデータが無くなったわけではないんだが、新しく入力した方がタイムライン上に出てくるので実用上は問題ない。
チェンジログ間違ったらui
でブラウザ上から変更しろってことね。コマンドでもやる方法ありそうなんだけどどれなんだろう。まあわざわざコマンドでやる必要はないからべつにいいんだけど。