CCFinderX には,それなりに癖があります.いちおう需要があるかもしれないので書いておくと,たとえば以下のようなものがあります.
.ccfxprepdir
という作業データ格納用ディレクトリが作られます.Eclipse JDT のソースディレクトリにデータが作られた場合,Build Path 上のファイルとして認識されてしまい,その複製データが無駄に bin ディレクトリにも作られる,という事態が起こる場合があります.CCFinderX の実行に必要なのは次のソフトウェアです.
前の記事にも書いてますが,Python は2.6でなければなりません(2.7以降だとクラッシュします).また,使っているDLLのバージョンが32ビットなので,64ビットバイナリではDLLが読み込めず,起動できません.64ビット版のWindowsを使っている場合でも,必ず32ビット版のJDK,Pythonを使ってください.
これらがインストールできたら,CCFinderX の GUI フロントエンドを起動するgemx.bat
を修正します.
set CCFINDERX_PYTHON_INTERPRETER_PATH=C:\Python26\python.exe
というコメントアウトされてる行を復活させる(Python 2.6を別パスにインストールした場合はそれに合わせて修正).java -classpath %THE_JARS% GemXMain ...
という行があるので,javaコマンドを,"C:\Program Files (x86)\Java\...\bin\java.exe"
というように,32ビット版のJavaバイナリを直接指すように修正する.以上の修正が終わったら,gemx.bat
でGemXを起動することができます.
久しぶりに CCFinderX を使おうとしたところで,Python のバージョンにちょっとだけ悩んでしまったので,忘れないようにメモしておきます.
お手軽に CCFinderX を動かすには,Windows 32ビット版の上で動く Python-2.6.6.msi と組み合わせるのがいいようです.これなら,Python をインストールして,gemx.bat
の中でset CCFINDERX_PYTHON_INTERPRETER_PATH=C:\Python26\python.exe
というコメントアウトされてる行を復活させるだけで動きます.
これに対して,cygwin の bin/python.exe を使おうとすると,sys.path が /bin などの cygwin 用のパスになってしまうので,easytorq というモジュールを import するタイミングでモジュールが見つからない旨のエラーが出てしまい,そのままでは動きません.
また,CCFinderX の README には動作条件「Python 2.6 or later」と書いてあるものの,Python 2.7 を使ってしまうと,easytorq というバイナリのモジュールを import するタイミングで ImportError: Module use of python26.dll conflicts with this version of Python.
と言われて怒られます(バージョン違いの時点でそれを明示して停止してくれるのは非常にありがたいところですが,動かないことに変わりはありません).
自宅で hyCalendar 等の開発に使ってたPCがここ数日何もしてなくてもフリーズ頻発してたんですが,とうとう起動しなくなりました.BIOS画面すら出なくなってたのでケースを開けてみると,USB 端子付近のコンデンサが死んでました.
購入からちょうど3年になったところでした.最近,仕事場のPCでも,スリムタイプのやつが動かなくなるのはコンデンサが原因な気がしますから,SSD とかの寿命よりも,本体の寿命のほうが実は短いかもしれません.
後継機を購入して開発環境を再構築するまでは,このサイトで公開している各種ソフトウェアのバグ対応とかは一切できませんが,そこは個人で持てるリソースの限界なので,ご理解ください.
]]>自宅のデスクトップとノートPCをお手軽に操作する方法がないかなーと思っていたところを,店頭で見かけたので買ってみました.
両端が USB のコネクタになっているデバイスで,両端をそれぞれPCに挿して専用アプリケーションを立ち上げると,「メイン」 PC のマウスカーソルを画面端まで持っていったとき,「サブ」PC 側のマウスカーソルが動く,というものです.サブ側のマウスを直接動かすと,メイン側の消えていたマウスカーソルが戻ってきます.
マウスカーソルがある側の PC に,キーボード入力も届きます.移動先 PC では生のキー情報が届くようで,Windows XP における AltIME などのキーバインド変更は無効です.
私の環境では,手元のノートPCをメインにして,デスクトップPC側に少しだけ仕事をさせて戻ってくる,という使い方ができるので,それなりに便利です.リモートデスクトップと比べた場合,デスクトップ側のディスプレイはそのまま使える,専用ケーブルだけあってか応答速度が良いという利点があります.新しいデバイスにありがちな「すぐ飽きる」リスクはまだ残っていますが,とりあえず使って満足しました.
なお,このデバイスは,ハードウェア的にはLANアダプタとみなされます.192.168.x.0 (xは設定ダイアログで選択)というネットワークを介して情報をやり取りするので,ファイアウォールの設定だけは調整が必要です.画面をまたいだファイルのドラッグ&ドロップもできますが,PC間でアカウントが違うと,他方の PC に持っていった瞬間に移動先PCでユーザ認証ダイアログが表示されるという,微妙な動きをするようです.コピー&ペーストだと,素直な動作に見えます.
]]>CX-Checker には XPathView という「構文木に関する XPath 式を書いてボタンを押したら即座に該当コードを教えてくれる」便利ツールが付いてるらしいんですが,マニュアルに書いてある「チェック」ボタンが表示されない(?)という問題に遭遇しました.
学生に試用してもらおうとした直後の指摘で,手元で試したところ,選択したソースコードにマッチする XPath 式を表示する「取得」ボタンは表示されているし動作するけれども,他には「クリア」「コピー」ボタンしか表示されないようです.2人揃ってインストール手順等を間違えているのでなければ,CX-Checker 側に何か問題があるのかもしれません.
……とりあえず問題を(学生から)問い合わせ窓口に伝えて,様子を見ることにしました.
(7/31 追記) お返事があり,ボタンはなくなって「Tab キーを押す」とチェックが走るようです.
今更の感想ですが,インタラクティブに検査しながらソースコードを修正しようとすると,ソースコード修正ごとのデータベース更新作業が少し手間がかかるように感じられます.Eclipse JDT で,ファイル保存にコンパイル等が連動するのに慣れているせいかもしれません.
]]>授業で学生がC言語のコードを「読みやすく」書きなおす作業をするということだったので,CX-Checkerを試してみました.
一括インストーラでインストールしたら,Cygwin の /bin ディレクトリへの PATH を環境変数に設定してから,Eclipse を起動します.CDT でプロジェクトを作成した後,設定マニュアルに従って,プロジェクトに Cygwin の /usr/include と /usr/lib へのパスを設定しておきます.検査したいコーディングルールを記述した XML ファイルを好きなだけ登録してから,プロジェクトを右クリックして 「Checker」メニューから 「SDB の作成」を行い,続いてソースコードのチェックを実行するだけとなります.設定の半分は CDT の設定に関する部分であり,CX-Checker 自身が要求しているのは Cygwin/bin への PATH 設定とルール集合だけです.設定項目はかなり少なく収まっている気がします.
Cygwin の /bin ディレクトリへの PATH を設定しておかないと java.io.IOException: Cannot run program "cygpath" (プロジェクトのパス名) ... (以降文字化け)
というエラーメッセージが出ます.いわゆる「コマンドが見つからない」状態であることがエラーメッセージには明示されていなかったので,解決にはちょっとだけ考え込んでしまいました.また,Cygwin を普通に setup.exe
からインストールしていたのですが,make
が標準ではインストールされないということに気付かなかったので,こちらも少し引っかかりました.
CX-Checker のツールそのものに関しては,チェックするルール集合が標準では空になっており,「チェックしたいルールだけを追加して使う」という形式になっているので,「学習しながら試す」のに向いている気がしました.変数名の長さぐらいの簡単な検査であれば,MISRA-C 用に書かれた既存 XML ファイル群をそのまま使えますし,「どんな検査がしたいか」考えてカスタマイズすることが可能です.今回は,学部生が授業で書いたプログラムに対して,いくつかの検査ルールを適用するという使い方だったので,既定で大量のルールを用意しているようなコーディングチェッカに比べて,利用しやすかったという印象です.
]]>私事ですが,先月,結婚しました.
何か所かでブロードキャストしてたのですっかり全員に伝達したつもりになっていましたが,そうでもなかったみたいなので,今更ながら,ここでも報告しときます.
]]>噂のセパレート携帯 F-04B にしてみました.これは,Bluetooth のキーボード&音声通話用ユニットが裏に合体してるタッチパネル式端末だと思えば分かりやすいかもしれません.それぞれユニット単位では通常の端末より少し軽い気がするものの,両ユニットに電池を積んでるので,全体では重くなってます.
タッチパネル,テンキー,キーボードの全部が付いていること,ディスプレイとキーボードのどちらか一方あれば電話できること(通信そのものはディスプレイ側が担当ですが)が気に入ったポイントです.
]]>1.1.2 をリリースしていたにも関わらず Vector の公開ファイルを 1.1.1 のままにしてたことに今更気付きましたので更新しておきました.
]]>掲示板で指摘された不具合1点を修正してリリースしました.
「周期予定編集ダイアログ」が最初に開かれたとき,その時点で編集中のファイルのデータを掴んだままとなっており,別ファイルを開き直したあとにデータを操作しようとすると実行時エラーになる,という問題でした.
このバグは,少なくともここ2年ぐらいのバージョンで発生するはずです.2つ以上のファイルの周期予定を編集する人が偶然いなかったので,発見されずに来ていたのかもしれません.
]]>Windows Vista での開発環境がとりあえず回復しました.ただし,家が職場から遠くなったので,開発に使える時間は減りぎみです.
]]>要望で出ていた,別の月の背景色を変更する機能を追加しました.
それから,ほとんど出番がない(気がする)URL ツールバーが標準で非表示になりました.
]]>引越しの影響により,主要な開発環境であるデスクトップ PC が封印されたままのため,しばらく開発系は身動きとれません.
古い棚を捨てた → 本が溢れた → PC 類展開できないという状態なので,しばらくデスクトップ PC なしの状況が続きそうです.
]]>hyCalendar では設定ファイルの書き出しに VCL の TIniFile
クラス,実体は WritePrivateProfileString
という Windows の API を使っていました.この API は,設定ファイルを項目名と値の組のデータ列として扱い,指定項目だけを選択的に更新するという処理をします.
ところが,設定の全項目を毎回書き出すように実装していたので,設定ファイルが大きくなるに従って,この更新処理に非常に時間がかかるようになっていたようです.私の手元の環境で計測してみたところ,約300項目のデータを出力するために最大で4秒程度使っていました.
1.6.6 の更新では,この処理を一新して,そもそも TIniFile クラスを使わず,テキスト形式で項目と値の組を直接書き出すようにしました.これにより,数十ミリ秒で処理が完了するようになりました.正直なところ,選択した項目だけを更新するなんていう処理がまったく必要なさそうなレベルの高速化です.
]]>