くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2013-07-09

日記

急に暑くなった。うちの古いエアコンは動くんだろうかとつけてみたら意外にもとても元気に冷やしてくれた。

クレジットカードが止められた。Amazonでスキャナと裁断器を買おうとしたら決済ができないというエラーが出てきて数回試すもののだめだったので、キャッシュカードについてきた普段使ってない方で通した。

何かあぶないことがあったかと明細を見てみるけどべつにおかしい物はないな。変な使い方もしてないので止められる覚えがないし、どこかから漏れたとかいう話も聞かない。クレカ会社に電話してみると7月1日の朝に○○円の物買おうとしましたか?って言われたが覚えがないぞ……って決済失敗したスキャナと裁断器じゃねぇか。わたしです。怪しいパターンがあったから止めたとのことでもう解除されたと言われて使えるようになった。よかった。

クレカっててっきり怪しい使われ方があったあとで止まるものだと思ってたが、これから決済しようとした物が怪しいパターンにひっかかったって時に止まることもあるんだね。リアルタイムといってもいいような短時間でそこまでチェックしてるとかすげー。

普段あんまり使ってないAmazonでいきなり家電みたいな換金性の高い物を買おうとしたからひっかかったんだろうな。買おうとした物の情報がどこまでクレカ会社に渡ってんのかわからんけど。

[PeerCastStation] 通信の見直し

受信側の再接続なんかが上手くいかないのをなんとかしようと四苦八苦してる。

送信側のOutputStreamは一接続一オブジェクトになってるんだけど、受信側のSourceStreamは一チャンネル一オブジェクトになってて再接続なんかをちゃんと処理しないといけなくなってるのが複雑になってる原因だな。SourceStreamも一接続一オブジェクトにしたい。

SourceStreamは今接続してる上流の情報とか接続しちゃだめリストとか保持してるから一接続一オブジェクトになってないんだけど、それらの情報をチャンネル側に移行してしまえば接続の度に作り直すことができよう。再接続もとにかくSourceStreamを作り直せばいいだけなので話が簡単になる。

ただそれをやろうとするとそこそこ時間かかりそうなのでちょっと保留。 とりあえずSourceStreamBaseとかOutputStreamBaseに非同期送受信の管理が埋め込まれてるのが気にくわないのでこれを分離したい。

……分離した。まあ分離だけだったので簡単なんだけど、エラー処理をどうすればいいのか曖昧だったので動かなくなってしまった。 接続終わってもいいと判断したあとに接続エラーが出るとエラー扱いになっちゃう。 アプリケーション層で接続終了したのでこれ以降の通信エラーは見ませんということにしないとだめだな。

結局大きく作り直さないと整理しきれないかー。かといって中途半端な状態でリリースするわけにもいかんしな。 めんどいからmasterにコミットしちゃったのは早まったぜ。

コミットする前の時点でリリース用のブランチ分けるか一個戻すかした方がいいな。

[PeerCastStation] 起動しないの謎

何故かエラーが出て起動しないという報告が上がってるんだが、再現しないし情報も少ないので如何ともし難い。

また起きたという話なので聞いてみたんだが、PeerCastStation.exeのプロセスは無く、なんだか既に起動している的なエラーメッセージが出ていたらしい。 あと特に何もおきずに起動しないパターンもあったとか。いずれもOS再起動で復旧したとのこと。

PeerCastStation.exeは二重起動防止のため1、名前付きのイベントオブジェクトを作ってそれが開けたら二重起動ということにしてるんだけど、何らかの理由でイベントオブジェクトが削除されないまま終了した後に二重起動防止にひっかかって起動しなくなってるのだと予想できる。

が、しかし。二重起動防止にひっかかった時って何の表示もなく終了してるんだよね。だから何もおきずに起動しないパターンはこれに当てはまりそうなんだけど、既に起動している的なメッセージが出ることはない。そのメッセージを出してるのは一体何者なんだろう。さらなる情報が待たれる。

あと名前付きイベントオブジェクトが削除されない理由もよくわからない。該当部分のソースを見ると作ったイベントオブジェクトは明示的にDisposeしていないが、まあファイナライザで削除されるんでないか。でもPeerCastStation.exeが落ちた後に発生したということなのでもしかしたらファイナライザが正常に実行できない場合にイベントオブジェクトが生き残っちゃうのかも。それってどう回避すればいいんだろう?

……CreateEventのドキュメント見たらプロセス終了時にイベントオブジェクトのハンドルは自動的に閉じられるって書いてあるじゃん!ファイナライザ実行失敗してもプロセスが死んでるんだからイベントオブジェクトのリークなんか起きないよ!どういうことなの!?

うーん、謎だなぁ……。

  1. 二重起動防止とか好きでやってるわけじゃないんだけど、PeerCast.exeがそういう動作をしてそれに依存する周辺ツールがあるので互換性を取るためにやってる 

[fossil] fossil 1.2.6

fossil 1.2.6がちょっと前に出てた。 リリースノートの翻訳でも……と思ったんだけど明示的にリリースノートとした物が無いんだよね。 ダウンロードページに出てる変更点を訳すか。

  • “fossil ui”と”fossil server”に指定する –port オプションの引数にポート番号に加えてIPアドレスも指定できるようになりました。指定すると指定のIPアドレスにのみbindします。
  • パスワード入力を受け付けたあとにパスワードを記録するかどうかを聞くようになりました。
  • diffエンジンの速度を向上させました。
  • 並べて比較のdiffエンジンがマルチバイトのUnicode文字列でも上手く動くように修正しました。
  • Webベースのアノテーション(blame)表示で色付けするようになりました。またアノテーションエンジンが時刻のねじれで混乱する問題を修正しました。
  • Markdown書式が標準で使用できるようになり、チケット・Wiki・埋め込みドキュメントで使うことができるようになりました。
  • “fossil bisect”のサブコマンドとして”fossil bisect log”と”fossil bisect status”を追加しました。他のサブコマンドと同じようにbisectを強化するものです。
  • クローラやボットによってCPUと帯域を食いつぶされるを防ぐための対策を強化しました。
  • コマンドラインオプンションの -n と –dry-run に一貫性を持たせました。
  • Win32: 「”*:<>?|」といった文字を一つ以上含むCygwinのパスを扱えるようにしました。これらは通常win32では禁止されています。これによりwin32版のfossil.exeをCygwin環境内で使いやすくなります。
  • Cygwin: ドライブ文字で始まるwin32の絶対パスをどこでも扱えるようにしました。”case-sensitive”設定のデフォルト値はFALSEになりました(Windowsカーネルの大文字小文字の区別が有効になっていない場合に限る)。
  • /timeline.rssを強化し、特定のチケットへの変更を購読したりできるようなフィルターフラグを追加しました。
  • 大文字小文字を区別するファイルシステムと区別しないファイルシステム間での差分検出の扱いを改善しました。
  • JSON API: ローカルチェックアウト状態を報告する’status’コマンドを追加しました。
  • –args のサポートを修正し、この機能についてヘルプに記述しました。
  • /stats_report ページを追加しました。
  • “/timeline” URLに ym=YYYY-MM フィルタを追加しました。
  • 修正: config reset コマンドでデフォルトのチケット報告書式を再インストールするようにしました。
  • ssh:// と file:// プロトコルはプロキシ設定を無視するようにしました。
  • /hash-color-test ページを追加しました。
  • Cherry-pickマージは内部的に記録されるようになりました(ただしタイムライングラフには表示されません)。
  • SQLite, zlib, autosetupの最新バージョンを上流から持ってきました。

fossilオリジナル(?)のWiki記法はいまいち使いづらいので、Markdownがチケットで使えるようになったやったー!!と思ったんだけど使い方がわからん。 入力フォーマットのドロップダウンに出てこないんだけどこれ自分でMIMEタイプ入力できるようにフォーム改造しないといけないんだろうか。 Wikiでは普通に選べるんだけどなぁ。

[fossil] コミット時のチェンジログが文字化けした

fossilでコミットする時に-M ファイル名とやって前もって書いといたチェンジログをつっこんだら文字化けた。

Windowsで使ってるんだけど、どうもCP932で書いたファイルを指定しないといけないのにUTF-8で書いたファイルをつっこんだようだ。普通にciだけでやった時は適当にエディタが起動してそこに書いてるだけで何も問題なかったので気付かなかったよ……。

チェンジログが文字化けしてるのは困るのでコミットを取り消そうとundo……あれ、戻す物がないって言われた。コミットの取り消しはできないのかー。 他に方法がないかとヘルプを眺めてたけど簡単にはできなさげ。

MLを調べるとshunすれば消える的なことがわかったけど、変更したファイルを全部無効化しないといけないのでめちゃくちゃめんどくさい。 gitと違ってバージョン履歴管理ソフトなんでコミットを消したりはやるべきでないんだよ!とのこと。monotoneもそうだったので理解できる。 でも文字化けチェンジログはなんとかしたいな。

monotoneはcert付けなおしてチェンジログ変えられた(と思う)んだけどfossilではそれっぽいコマンド見当たらない。 だがuiのタイムラインでコミットを選択するとEditとかいうのが出てるのを発見。やってみたら普通にチェンジログを変更できた。やったー。

変更つっても以前のは以前ので残ってるんで文字化けデータが無くなったわけではないんだが、新しく入力した方がタイムライン上に出てくるので実用上は問題ない。

チェンジログ間違ったらuiでブラウザ上から変更しろってことね。コマンドでもやる方法ありそうなんだけどどれなんだろう。まあわざわざコマンドでやる必要はないからべつにいいんだけど。


ページのトップへ | トップ «前の日記(2013-07-01) 最新 次の日記(2013-07-16)» | 編集 | kumaryu.net by kumaryu