- 1 名前:ミスター外骨格 [2007/10/24(水) 04:02:04 ID:ENN/kcvg0]
- CraftLaunchの作者が今度はファイラー界へ殴り込みだ!
hp.vector.co.jp/authors/VA012411/cfiler/doc/index.html >内骨格には以下の特徴があります。 >・キーボードで操作 >・マウスではほとんど操作できない >・あふ(www.h5.dion.ne.jp/~akt/)に強い影響を受けている >・スクリプト言語Pythonを内蔵しており、Pythonで拡張が可能 >・テキストビューアを内蔵 >・イメージビューアを内蔵 >・ミュージックプレイヤを内蔵
- 371 名前:364 mailto:sage [2008/11/03(月) 15:16:44 ID:mVyLBJ2y0]
- >>369-370
おお、修正サンクス
- 372 名前:364 mailto:sage [2008/11/04(火) 19:39:16 ID:y4scTvX50]
- 使ってみていたが、ファイルリネーム後にキーを受け付けなくなったりするな。
やはりsubThreadCall()がネックのようだ。 キーイベントはsubThreadCall()内でハンドラを摩り替えているが、 タイマは動いたままなので、UIスレッドからでもタイマ経由で subThreadCall()実行中にsubThreadCall()に再入する可能性があり、 その場合は余裕で問題が発生する。 とりあえずsubThreadCall()前後でonTimerJob()とonTimerSyncCall()が走らないように 摩り替えるようにしてみた。 codepad.org/t2j940nG 今回のはextensionに入れることを念頭に書いた。 foo.pyとかいう名前で保存してextensionに入れた場合は、 configure()の中で、 import hoge foo.start_directory_watch(window) とかやればおk。
- 373 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/04(火) 19:41:12 ID:zSoA+Q1n0]
- import hogeじゃ駄目だろw
import fooだな。
- 374 名前:364 mailto:sage [2008/11/04(火) 19:44:01 ID:y4scTvX50]
- >>373
><
- 375 名前:364 mailto:sage [2008/11/05(水) 00:00:56 ID:y4scTvX50]
- ウザくてすまん
あげなおし codepad.org/Df2LOmLF WaitForMultipleObjectsの最後の引数を1から500に変えた 1ミリ秒タイムアウトは無いわ……デフォの分解能だと10ミリは寝るだろうから CPU負荷全然かかってなくて気づかんかった
- 376 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/06(木) 13:58:52 ID:52AN3cia0]
- keyhac (craftware)
sites.google.com/site/craftware/keyhac
- 377 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/09(日) 23:21:26 ID:/V4H/JXd0]
- 手抜きPythonコンソール作ってみた
codepad.org/rsdkWANY 補完とか自動インデントとかカッコイイ機能はない 新たにPythonインタプリタを立ち上げるわけではないので 起動だけは爆速、ただし簡単に内骨格を道連れにできるので危険 >>358のzipの中にあるvensterと、 www.scintilla.org/ で配布してるScintilla(のSciLexer.dll)に依存してるんで まとめてextensionの中に放り込んでもらえればおk console.pyとかいう名前で保存したら config.pyに↓のような感じで def command_Console(): import console con = console.ConsoleWindow() con.start_interp({'window': window, 'console': con}) window.keymap[VK_F3] = command_Console start_interp()の引数は無くてもいいけど、 こんな感じでwindowインスタンスを与えてやると コンソールから内骨格のwindowインスタンスが可視になる
- 378 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 00:37:07 ID:5kaSuGXo0]
- なんかよさそうな拡張だねえ
これipython組み込める?
- 379 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 01:45:23 ID:ryZKA2JN0]
- >>378
すまんが、かなり弄らんと無理だと思う ipythonは端末とコネクトされている&readline前提のはずだし
- 380 名前:377 mailto:sage [2008/11/10(月) 16:12:32 ID:ryZKA2JN0]
- ちょっと直した
codepad.org/1FMoSxfh ・コピペで複数行一度に入力した場合にまともに動いてなかったんで直した ・↑↓でヒストリを行き来できるようにした なんつうかEmacs風キーバインドに慣れてる人はごめんなさいなんだが ScintillaのキーバインドはデフォでWin風なので カーソルキー、Home、Endなどを使うかコードを書き換えてください
- 381 名前:364 mailto:sage [2008/11/11(火) 20:40:38 ID:Mg6hT/QX0]
- ディレクトリ監視用のソースをちょっと直した
監視スレッドがちゃんと解放されないという凶悪なバグだった 途中の版でエンバグしてたらしい それと、キューを左右のペイン両方に持つようにした codepad.org/ugsU82p6
- 382 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/13(木) 20:28:18 ID:AaHgjMpF0]
- 作者さん別のもの作りだしちゃった?
倉EXと同様に内骨格も放置されちゃうのかな?
- 383 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/13(木) 21:27:44 ID:qnH+rrmF0]
- >>382
どうだろな 誰も使ってないだろうけど >>358の画像ビューワをGIFアニメ対応にした ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8024.zip
- 384 名前:383 mailto:sage [2008/11/13(木) 22:45:47 ID:qnH+rrmF0]
- すまん、あげなおし
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8027.zip
- 385 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 01:03:44 ID:2HVCJRp60]
- sites.google.com/site/craftware/cfiler
1.72 - 2008/11/15 - ファイルリストを自動的にリロードする処理を追加 - デフォルト設定ファイルに、左右のペインから重複ファイルを探すコマンド CheckDuplicate を追加。 - デフォルト設定ファイルに含まれている SelectEmpty コマンドを CheckEmpty コマンドに変更。 (バックグラウンドで処理している関係で、アイテムを選択することができない場合があるので、ログに出力するだけにした。) - 左右のペインに含まれる全てのアイテムを返す関数を追加。 MainWindow.leftItems() MainWindow.rightItems() MainWindow.activeItems() MainWindow.inactiveItems() - 一括変名機能で正規表現のパターンの記述が間違っていたときに、エラーが発生して操作不能になってしまうのを修正。 - ウインドウのクラス名を、CtermWindowClass から CfilerWindowClassに変更。 - iniファイル中のバージョン番号が更新されていなかったのを修正。 - ディレクトリの変更のためにサブスレッド中でアイテムリストを作成している間に、ほかのスレッドがアイテムリストにアクセスしてエラーになる場合が稀にあったのを修正。
- 386 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 01:49:28 ID:/4TVgKTE0]
- おお、作者さんがディレクトリ監視機能作ってくれたのか
これで俺の怪しいコードは安心して削除できるな
- 387 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 01:52:01 ID:2HVCJRp60]
- cfiler_nativeに監視用の機能が追加されてるみたいです。
- 388 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 02:16:28 ID:MqCfj//Y0]
- >>386
短い間だったけどつかってたよー サンキュー 作者さんもサンキュー
- 389 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 12:18:01 ID:/4TVgKTE0]
- 新バージョン1.72での現象(>>364の拡張は外してある)
内骨格で表示してるディレクトリを他のプログラムからまるっと削除したら [Error 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。 [Error 5] アクセスが拒否されました。 とコンソールペインに表示されて、その後キー、マウス入力を受け付けなくなった。 完全にフリーズしているわけではなくて、最小化はできるし再描画もされる。 どーも>>372と同じ現象っぽい。
- 390 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 17:41:16 ID:2HVCJRp60]
- 1.73 - 2008/11/16
- ログペインのテキストを、マウスで選択してクリップボードにコピーできるようにした。 (選択するだけで、自動的にクリップボードにコピーされます。) - ログペインをマウスのホイールでスクロールできるようにした。 - Ctrl + Alt + ↑↓←→ で、すばやくセパレータを移動するようにした。 - 1.72で入れた自動リロードが原因で、操作不能になってしまうことがあったのを修正。 - 大きなサイズのバイナリファイル比較のときに、メモリ不足で失敗しないようにした。 - tgzファイルを作成するとき、日本語文字が含まれているパスに作成できなかったのを修正。
- 391 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/16(日) 20:16:49 ID:/4TVgKTE0]
- 相変わらず作者さん対応速いなあ
- 392 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/17(月) 01:20:17 ID:KGEhMk9D0]
- まだ怪しい感じだな。
最小化して放置してたら、いつの間にか固まって復帰しなくなってた。 以下は作者さん宛だが。 やはりsubThreadCall()の問題だと思いますよ。 1. 現在のマウス、キーフックをセーブし、書き換える(ESCしか効かなくなる) 2. ワーカースレッドを起動し、メッセージループを回す 3. ワーカースレッドが終了すると、window.quit()を呼び、メッセージループを止める 4. 1.でバックアップを取ったマウス、キーフックに戻す といった流れですが、タイマーを止めていないので、2.のメッセージループを 回して待っている間にファイル変更が発生すると、2.の間にsubThreadCall()が 再び呼ばれてしまう。 この二番目のsubThreadCall()の流れでは、 Step1.で、無効になっているキーフックやマウスフラグを「保存」してしまう。 一番目のsubThreadCall()の後に二番目のが終了すると、4.では、 無効になっているものに「戻す」ことになってしまうわけだ。
- 393 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/18(火) 00:07:39 ID:bSvAqLtE0]
- 修正来た。
1 .74 - 2008/11/18 - MainWindow.subThreadCall() のサブスレッドの中で、MainWindow.quit() を使っていたのを修正。 subThreadCall() をネストして呼び出すケースで、外側のループを抜けるつもりの quit() が、内側のループを抜けるつもりの quit() よりも先に呼ばれてしまって、(さらにSyncCallなどの合わせ技により)、メインスレッドがデッドロックしてしまう危険があった。
- 394 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/23(日) 15:51:55 ID:tlLQO17i0]
- Scintillaを使ってシンタクスハイライトつきの手抜きテキストビューワ作ってみた
>>383の画像ビューワにもちょっと手を入れたので、同梱してある ttp://iroiro.zapto.org/cmn/jb2/data2/jb5313.zip
- 395 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/24(月) 00:43:08 ID:4c47A63Z0]
- sites.google.com/site/craftware/cfiler
1.75 - 2008/11/23 - ドライブ選択で存在しないディレクトリに移動しようとしたときに、ディレクトリ監視スレッドを作れずに、エラーになってしまうのを修正。 - ローカルなブックマークリストで、ブックマークの削除が出来なかったのを修正。 - ブックマークリストからのブックマーク削除で、即座にファイルリストの表示に反映するようにした。
- 396 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/24(月) 13:27:13 ID:vAoOotoJ0]
- 394のテキストビューアとか
本家に取り込んでもらうには どうしたらいいんだろう?
- 397 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/24(月) 15:36:12 ID:ttm4loU80]
- >>396
いや取り込んで貰っても全然構わないというか、有難い話なんだが ・2004年以降止まったプロジェクトであるvensterに対する俺俺パッチに依存 ・Scintillaに対する俺俺パッチに依存 ・extensionであることをいいことに、カスタマイズ機能なし(スクリプトの中 直接弄ってねの世界) という怪しい代物なので、どうなのか 正式配布物に含めるんなら、色々作者さん手直しいると思うわ
- 398 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/25(火) 22:05:31 ID:GjwnUsph0]
- ムービープレイヤーを作ってみた
それと、数が増えてきたんで物置きページを作って 今まで作った拡張をまとめて上げといた ttp://www9.atpages.jp/untitled/index.html
- 399 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/30(日) 12:48:18 ID:xYhBVKRV0]
- 連携用の拡張を作ってみた
ttp://www9.atpages.jp/untitled/pipeserver.html 他のプログラムから内骨格を操作できます
- 400 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/15(月) 18:41:31 ID:1tOm7dI/0]
- 作者さんには是非取り込んで貰いたいなー
拡張が細かく大量に増えてしまったり現時点で派生版が出来てしまったりするとちょっとね・・・
- 401 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/15(月) 19:21:43 ID:KqxG3NOk0]
- >>399
これ使うとあふみたく倉から使えるようになるの?
- 402 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/15(月) 22:41:04 ID:XU2/Yk5l0]
- >>401
うん。 もう見てないと思うけど、>>322あたりで問題になっていた DirectShowでのID3v2タグつきMP3への対応をしてみた。 標準でデフォで使われるFile Source + MPEG-I Stream Splitterの かわりに、WM ASF Readerを使うと、どうやらID3タグへの対応がマシに なるようなので。 ttp://www9.atpages.jp/untitled/songdirectshow.html
- 403 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 08:47:06 ID:WFUUFPrj0]
- 拡張ってアップデート毎にconfig.pyを修正していくのでしょうか?
簡単なものでいいからconfig.py configure末尾辺りに ユーザ設定呼び出しのSTUBが欲しいです。 try: import user_config except ImportError: pass else: user_config.congigure(window)
- 404 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 12:53:25 ID:W0R4wBlJ0]
- >>403
ちょっち意味わからん。 俺は内骨格がバージョンアップしても、 config.pyをいちいち入れ替えずに同じものを使い続けてるよ。
- 405 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 17:49:53 ID:WFUUFPrj0]
- >>404
readme.txtに記述見つけました。 バージョンアップでconfig.pyが更新(上書き)される事があるのだったら、 ユーザ設定とわけた方がいいのではないかなと思ったのだけど、 初回起動時にのみconfig.pyが作られるようなので、杞憂だったみたいです。 よく見ると組み込みの設定はEXE内で、 config.py自体がユーザ設定ファイルだったんですね。
- 406 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 18:19:15 ID:WFUUFPrj0]
- あれ、でも _config.py が更新されているような気がする。
diff 取ってみると config.py に変更した覚えのないコードが _config.py にありました。
- 407 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 19:43:42 ID:mToSUAzl0]
- そりゃ_config.pyは何回か更新されてるし。
- 408 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 21:56:47 ID:WFUUFPrj0]
- >>407
ということは、_config.py の更新をconfig.pyへ反映するのはユーザの手作業?
- 409 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/17(水) 22:21:14 ID:W0R4wBlJ0]
- >>408
差分を反映する必要は全く無いよ config.pyはあくまでユーザのカスタマイズ用のスクリプトで、 _config.pyはただのサンプルでしかないんだから
- 410 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/18(木) 07:22:11 ID:TnabzMpo0]
- >_config.pyはただのサンプル
config.py/_config.pyのファイルの運用のされ方について もし、config.pyが標準で何もしないのならそれでもいいのだけど、 _config.py に機能追加の更新があり、尚且つそれが初回起動時のconfig.pyになるようなので 自動更新と、後のバージョンからインストールした場合で デフォルトのconfig.pyの状態が変わってしまわないか、という懸念があります。 自動更新した人は、_config.pyの追加設定を手作業でconfig.pyに反映しないといけないのに対して、 後のバージョンからインストールした人は、標準で機能追加後の状態から開始することになります。 config.pyはユーザ・カスタマイズ設定なので、環境によって違うのは勿論当然ですが、 それでもデフォルトの、ユーザが設定を弄っていない状態での差異が出るのは、 同じバージョンなのに、標準で あれが出来た・出来ないという状態が出来るので、 ソフトを保守していく上では好ましくないんじゃないかなと思います。 インストール時のバージョン/現在のバージョンで機能/動作が異なる可能性が出てくるため バグ報告等にはインストール時のバージョンと現在のバージョンが必要になる。-> メンテナンス・コスト増に繋がります。 ↑はワースト・ケースのシナリオなので、実際には…少なくとも現時点では、それ程影響はありませんが、 運用で簡単にカバーできる事なので、検討をお願いしたいです。 具体的な対策としては、ユーザ設定とアプリの更新範囲の完全な切り分けで、二つ程方法を挙げると。 a. デフォルトのconfig.pyは、何もしない。ただ呼び出されるだけに留める。 b. config.py から別のユーザ設定を呼び出す。 ユーザとして利用してる分には、 - config.pyは更新時に上書きされないので、ユーザ側で編集しても問題ない - _config.py更新時の差分は、必要ならconfig.pyに持ってくきて編集 で、とりあえずは問題ないようなので。返答を下さった方、ありがとうございました。
- 411 名前:名無しさん@お腹いっぱい。 [2008/12/18(木) 17:27:50 ID:ttqEKvgp0]
-
あふとは違うのだよ、あふとは
- 412 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/18(木) 20:00:17 ID:w6AJdTOm0]
- >>410
それはその通りだと思う 内骨格のコンセプトがあんな感じである以上作者さんも煮詰め切れてない部分があるんだろうね
- 413 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/18(木) 21:09:29 ID:Kl/A5AWx0]
- 作者視点で言うと、
・いままで使ってるユーザーを、設定をいきなり変えることでびっくりさせたくない(←あたりまえ) ・でも新規ユーザーには推奨の設定で使ってほしい(←そういうときもあるよね) ってのは、アプリケーション作ってるとよく出会う場面だよ。 自分も経験あるけど、どんな新機能がつくかなんて作者でも予測できないもんだよ
- 414 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/18(木) 21:13:35 ID:tpt2nZZ30]
- 半月ぐらいレスついてなかったのに急にレスが増えたな
何かあったんかw
- 415 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/21(日) 09:34:20 ID:0ZGbTRvo0]
- 今北産業
あふとの違いなんだ? あふから乗り換える意義はあるのか?
- 416 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/21(日) 11:44:02 ID:q0gDujwF0]
- >>415
そんなことを聞く奴には向いてない。 おまえはあふを使い続けた方が良い。
- 417 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/21(日) 12:48:24 ID:1SC+aVB20]
- >>415
違いは色々あるが、Pythonというインタプリタ言語で拡張可能なのが最大の違い というか、内骨格自身がPythonインタプリタ上で走っている
- 418 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 18:35:23 ID:YS0yHJn90]
- シャレで内骨格をPython2.6で動かしてみた。
pydとか全部自分でビルドしないとダメなのであまりお勧めは出来ない。 気づいた点。 1) md5モジュールの代わりにhashlib使えと文句を言われる。 2) 俺の環境だけかもしらんが、tar.gzの閲覧に失敗する。 cfiler_filelist.pyの lister_Tar.__call__()の中で、 if names[-1]: # print "name[%d]=%s" % (-1,names[-1]) child = ArchiveNode( ( names[-1], info.size, time.localtime(info.mtime)[:6], info.isdir() and cfiler_misc.FILE_ATTRIBUTE_DIRECTORY or 0) ) current_node.children[ names[-1] ] = child こんな感じに変えてやると上手くいった。要は、パス名の最後の部分の ノードを作るときに、0決め打ちだったのを、ディレクトリかどうか見るようにした。 正直なんでこれが2.5/2.6で関係あるのか分からんが、こうしないと2.6では 動かなかった。 3) これは2.6関係ないけど、cfiler_mainwindowの leftJump()の中でself._jump()に渡してる引数足りてないですね。
|

|