UDPTranscriptのメモ

以前自家製ツールのDOSbridgeなるものをつくったが、Linuxで使うためにwinsockからLinuxのソケットに変更した。ついでに名前もUDPTranscriptに変更した。後で使いかたをどうせ忘れるだろうからメモ。

UDPTranscriptはTranscriptでは表示が間に合わない場合やログとして残したいために作ったツールだ。動作は簡単でログとして残したい文字列をUDPで送信して、UDP受信プログラムでLinuxコンソール(genome-terminal)に表示したり、ファイルに保存したりするだけだ。ただこれだけでは、貧弱なので(あまり使わないかもしれないが)いろいろ機能を盛りこんでいる。

機能:

  • 文字表示:ANSIエスケープで色付可能
  • heartbeat:指定間隔で時間をコンソールに出す(headless時に動いているかすぐわかる)。

squeak:

UDPTranscript heartBeat "開始"

terminal

2007-01-18T23:18:56+00:00
2007-01-18T23:19:01+00:00
2007-01-18T23:19:06+00:00

squeak:

UDPTranscript default terminate "停止"
  • progress:進捗状態を表示する(すごく時間がかかる処理は便利)。

squeak:

ut
ut := UDPTranscript default. ut sendMessage: String crlf. 1 to: 100 do: [ :cnt | (Delay forMilliseconds: 500) wait. ut progress: 'TEST :' percent: cnt].

terminal:

TEST : 76% oooooooooooooooooooooooooooooooooooo............
  • コンソールから文字列送信(Squeakで受け取る)
  • コンソールからの文字列をSmalltalk式として実行

terminal:

StarMorph new openInWorld

terminal:

a StarMorph(2993) "評価結果をasStringしたものが帰る"
  • context:呼び出し時点のコンテキスト表示
"at ParagraphEditor>>readKeyboard"
----------
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke: {[editor readKeyboard]}
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.  ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
-------------------------------
  • inspect:オブジェクトをinspect(クラス名とその値を表示)
-------------------------------
Character
value=120
-------------------------------

SqueakからUDPを受信するプログラムはCで書かれたもので、ファイル保存、バッチ処理用に簡易文字列置換を持っている。UDPはホスト/ポートを指定できる。