[ カテゴリー » PC関連 ]

Tclのイベント処理が止まる

Tclにはイベントドリブンで処理を行う方法が用意されています。
proc record1 { } {
  global s
  gets $s data
  set f [open "c:/temp/record.txt" a+]
  puts $f $data
  close $f
}

set s [socket 127.0.0.1 8097]
fconfigure $s -blocking 0 -buffering line -translation auto
fileevent $s readable record1
vwait a

こういうコードを書くと、サーバ(この場合localhost)のポート8097に接続しサーバから送られてくるデータをファイルに保存していきます。fileeventがTclのイベント処理に登録するコマンドで、読み取り可能なデータが入ってくると関数record1が呼び出されるようにしています。vwaitが変数aに値がセットされるまでイベント処理を続けるコマンドですが、このコードには変数aをセットするところがありませんので延々とイベント処理が続きます。

一方Tcl環境をC#等Managedな環境と一緒に使う場合Tcl/CSharpLinkEagleLink といった間を取り持つ層を用いますが、Tcl/CSharpを用いて以下のことをやるとします。

  1. C#側でソケット接続を受け付けるようにする
  2. C#側で同じプロセスの別スレッドからTcl interpreterを作成する
  3. 作成したTcl interpreterから先ほどのC#で作ったソケットサーバに接続する
  4. Tcl側で上のようなfileeventを使う方法で、C#側とソケット通信する

なぜこんな変なことをするのかは聞かないで(^^;) 実際には通信を開始する前にTcl interpreterにはコマンド追加などさまざまな操作をしており、それが今回の問題を引き起こしているかもしれないのですが、その内容はここには書けませんw

ここで問題が発生しまして、

  • Tcl側でデータを一切受信しない。上の例で言えばrecord1が呼ばれません。
  • ソケット接続は行われるのでTcl側が全く動いていないわけではない。
  • telnetや即席のソケット通信プログラムを使用する限りC#側のソケットサーバーはデータを送信しているので、C#側に問題はない模様。
  • ソケット通信TclスクリプトをC#とは別プロセス(別途起動したtclshやwish)から立ち上げるとちゃんと通信する。
これを解決するためTclスクリプト側に以下を追加しました。
proc EventKeepAlive { } {
  after 100 EventKeepAlive
}
after 100 EventKeepAlive
(ここまでvwaitより前に)
100msecごとにEventKeepAlive関数が延々と呼ばれると言うだけで全く仕事をしないこの部分、これを追加するとC#と同じプロセスで作られたTclインタープリタでもちゃんと通信するようになりました。

理由、分かりません。こうやってTclのイベントを絶えず使っておかないと止まってしまうようです。ここLink 書いてあるスレッドが止まると言うことと原因は同じなのかなぁ。

この解決を見つけるまで.NET Frameworkのマルチスレッド処理がおかしいのではないかとかいろいろ大変でした。ただあまりに特殊なことをやっているためここに書いても同じ状況にぶつかる人がいるのか疑問ですがw

— posted by mu at 12:35 pm   commentComment [0]  pingTrackBack [0]

初心者の中古PC

会社の人や知り合いから時々PCに関する相談を受けます。その中で私があまり来て欲しくないのは、比較的初心者に近い方達が安く済ませたいから、中古PCに手を出すとか要らなくなったパーツでパソコンを組みたいというもの。

あまり使わないしよく分かってない物にお金をかけたくないという事なのでしょう。でも免許取りたてで最初に選ぶ車を10年物の中古車にするでしょうか? (まぁ、する人もいそうですがw) 車と違ってPCで怪我や命にかかわることは無いから話が違うと思うかもしれませんが、将来トラブルに巻き込まれるかもしれないという不安感は変わりないはず。

最近はネットオークションも発達したので、そこから探してきて「ほらこんなに安い」てな話で持ちかけてこられる場合もあるのですが、安いということには裏がある、つまり欲しがる人が少ないから安いんです。

OS(Windows)が古い
  • 周辺機器(プリンタなど)やソフトウェアを買ってきても、古いOSには対応していない。
  • これまた中古のプリンタなどを手に入れてきてもドライバディスクが付いてなかった、メーカーからはすでにダウンロード不可能など。
新しいOS(Windows)やOfficeが入れられない
メモリが少ない、CPUが遅い、HDDの容量不足など。また入れ替える新しいWindows/Officeも安くないので、結局安物買いの銭失いになりやすい。
OS(Windows)が付いてない
結構そういうやつ売ってます。すでにXPより前のWindowsは販売停止ですし、XPもVista Businessという割高のWindowsを購入しないと入手困難です。
デジカメのデータ取り込みが面倒
そもそも取り込む手段(USB)がない、あっても遅い。最近のデジカメのデータは巨大化してますので、USBが遅いとつらいですよ~。
故障しやすい
新品の頃から故障しやすいなどの欠陥品。またHDDに関して保障している中古PCは稀。
などなど。これらの問題がなく今でも使えるPCは需要があるので、安く売られることはありません。

なぜこの手の相談が嫌かと言うと、あらかじめ注意を促しておいても理解してなくて、後々トラブルが発生・泣きついてくることが多いからなんです。こちらも最初の時点で限られた予算内でできることは全てやって渡しているので、追加費用なしで対処するのはほとんど無理なのですが、結局新品買うのと変わらない額になることもあり、お金かけたくないのでなかなか納得してくれません。

また安いのは本来有料となる部分をこちらが苦労しているから、悪く言えば(こちらからは言えませんが)ただ働きさせているんだよという事実に気づいてくれてないこともあり、後味の悪いやり取りになることも。

初心者向けのPCなら、液晶ディスプレイにWindowsとOffice乗っけて10万円で見繕いますので、そこで手を打ってくれませんかねぇ。

— posted by mu at 11:29 am   commentComment [0]  pingTrackBack [0]

秘密結社 ブラックアイレム団

今年も4/1、エイプリルフールがやってまいりました。エイプリルフールといえば、各Webページで繰り広げられる4/1限定ページ。私が毎年見るのは窓の社LinkアイレムLink

特にアイレムは毎年のことながら、片手間のエイプリルフール企画とは一線を画す気の入れよう。しかし4/2 0:00になるとあっさり消えてなくなる(翌年3月ごろにこの辺Link に現れる)。

今年は「秘密結社 ブラックアイレム団」。アイレム本社とホームページがブラックアイレム団に乗っ取られ、たまたまそこに居合わせた自分が捕らえられて戦闘員に改造、一員として活動することになるという展開。最後に明かされる、秘密結社の意外な目的とは?

なんか今年は完成が間に合わなかったのでしょうか? ボリューム不足に感じました。
  • 例年なら動物図鑑とか歴史年表だとかリスト物に異様な充実振りを見せるのですが、今年のそれにあたるのは資料館だけ。
    • 7冊中3冊は閲覧できなかった(何か条件があるのでしょうか?)。
    • 怪人プロファイルに登場する怪人の半分が画像無し。
  • アイレムショップに商品が1点しか並んでなかった。
  • 自分がどの怪人(プリンパフェ女含む)になっても、台詞が男口調の一種類だけ。
  • 全国制覇すると時計が授与されるのですが、画像はなく文章だけ。
  • 食堂のとんでもなさを前振りしておきながら、大した事なかった。
  • 4/1 1:20過ぎ位までエイプリルフールページにならなかった(私だけ?)

とは言え、他所とは格段上のボリュームであることには変わりなく。今年Link もJava script多用でもう大変(なにが?)。総データ量の半分以上を4つの動画で占めておりました。

[2009/4/2 加筆]

— posted by mu at 11:55 pm   commentComment [0]  pingTrackBack [0]

プログラマー適性

先輩曰く(その方も後輩から聞いた話らしいですが)、パソコンで使っているプログラムに機能が分からないボタンを見つけた場合、とりあえず押してみる人の方がプログラマーに向いているそうです。

はて私はどっちだろうと悩んでいたところ、絶対に押すほうだと言われました。う~ん、そうかなぁとなんとなく納得してなかったのですが・・・

先輩の言うとおりでしたw

今日初めて使うTortoiseSVNLink 、Exportボタンを意味も分からず押している自分でそれを確認。

— posted by mu at 10:50 pm   commentComment [0]  pingTrackBack [0]

SQL Server 2005 Express SP3への更新に失敗する

blog20090220-SQLSvr2005ExpSP3-InstanceName

今週頭くらいからWindows XP SP3上で自動更新機能からMicrosoft SQL Server 2005 Express Edition SP3 (KB955706)のインストールを促されるのですが、いざやると毎回失敗していました。それだけならいいのですが、シャットダウンのときに毎回その更新をやろうとするため、時間がかかってしょうがない。

検索すると同じ症状になって質問している人がちらほらいるのですが、「SQL Serverなんて使ってるの?」→「要るかどうか分からないんです」→「普通使わないよ、消しちゃえ」→「使わないみたいですね、アンインストールします」てな流れ。

私使ってるから (T_T)

まずはWindows Updateに接続して、左側にある更新履歴を確認。あぁ、やっぱり何度も失敗している。エラーコードを見ると、0x2B2F。ところがこれでMicrosoftのページを検索しても何も出てこない。16進数は10進数に直して検索するLink なんてしらね~よ(つдT) 0x2B2F=11055。このエラーコードの意味は"Unable to install Windows Installer MSI file"、非常につかみどころが無い・・・

結局半日かけて解決した方法は以下の通り(基本的に管理者権限必要)
  1. 念のため、SQL Server関連はコントロールパネルのサービスから停止しておく。
  2. 更新はWindows Updateではなく、下記のフルインストールパッケージを使う。インストールパッケージだが、アップデートにも対応してくれる。
  3. インストール時にいろいろ聞かれるので、適当に答えるw
    • IISがインストールされていないという警告が出ますが、実際入れていないなら無視。
    • Management Studio Expressをインストールしているなら、更新対象に加える。
    • 画像のように(これは英語版ですが)、インスタンスの名前には既定のインスタンスを指定する。
  4. 上の更新でMSXML6の更新に失敗して後が全部失敗する場合、以下のようにする(XP SP3を入れるとMSXML6 SP2が入るのが原因らしい)。
    • このページLink にある、Windows Installer Clean UpLink をダウンロード [2010/10/8 ダウンロードできなくなりました。追記参照してください]。インストールするとスタートメニューのプログラムに追加されるので実行。MSXML6を削除する。
    • Microsoft Core XML Services (MSXML) 6.0Link をダウンロード、インストール。これでMSXML6が初期バージョンに戻る。
    • 再度SQL Server 2005 Express SP3フルインストールを実行。これでうまくいかない場合は、他を当たってください orz

      [2010/1/15 追記] SQL Server Express関連もこのツールで削除するとうまく行ったという報告があります。Toriさんのコメントを読んでください

  5. 自動更新を考え直させるためWindows再起動、もしくはコントロールパネル-管理ツール-サービスからAutomatic Updateをいったん停止・再起動。
  6. それでも自動更新が騒ぐ場合は、Windows Updateの更新履歴を削除。
    • コントロールパネル-管理ツール-サービスからAutomatic Updateサービスを停止。
    • %WINDIR%¥SoftwareDistributionディレクトリを名前変更するか削除。
    • Automatic Updateサービスを開始。
    • Windows再起動(シャットダウン時の更新が相変わらずセットされている場合)。
あ~疲れた。
[参考]

[2009/2/27 追記] 今読み返すと、MSXML6をアンインストールする(もしくは初期版に戻す)だけで良いんじゃないかと思えてきた。誰か気が向いたらお試しを。

[2009/3/19 追記] MSXML6アンインストール→Windows updateでうまく行ったという報告が来てます。コメント参照。

[2010/10/8 追記] Windows Installer CleanUpがダウンロード不可能になっているようです。この件の解決は2010/10/8の時点で文書番号: 968749Link にて、マイクロソフトに連絡を取るようにとなってます。契約を結ぶ必要があるなど面倒そうですが、費用はかからないとのことです。

[2010/10/8 追記] 検索Link したところ、以下のところからWindows Installer CleanUpがダウンロードできます。公式HPから取り下げられている以上これらは非正規と思われますので、自己責任でご使用ください。

— posted by mu at 10:06 pm   commentComment [22]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0264 sec.
prev
2025.10
next
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31