[Komodo Edit] インタラクティブシェルを使う

Screenshot from 2014-05-16 07:18:55

Komodo Extension Developer

 拡張機能『Komodo Extension Developer』に便利なインタラクティブシェル機能が含まれています。

Komodo developer extension
http://community.activestate.com/xpi/komodo-developer-extension

 Webでは『developer extension』と書いてありますが、インストールする拡張機能の名前は『Extension Developer』と表記されています。後で改名したのかもしれません。

マクロ書く上でもベンリ

Screenshot from 2014-05-16 07:32:10

 付属する『PyShell』(Python Shell)という名のツールは、Pythonのインタラクティブシェルが起動するのですが、Komodo Editが包含するPythonのシェルになるので、Komodo Edit特有のモジュール等にアクセスできたり、XPCOM(まだよく理解してない)を利用する事ができます。
 もちろんJavaScript向けの『JavaScript Shell』もあります。
 マクロで実装するコードを簡単に試せるので、拡張機能の開発でなくても、利用用途は多いです。

インストール

メニュー[Tools]→[Add-ons]

 Add-ons Managerにて『Extension Developer』を検索するとリスト上に表示されるので、[Install]ボタン押下で入ります。

インストール後は以下手順で利用できます。
メニュー[Tools]→[Extension Developer]

著者 : 柴田淳
ソフトバンククリエイティブ
発売日 : 2012-08-29

[Komodo Edit][Macro] 表示中のテキストにアクセスする

快適にMarkdown書きたい

 前に書きましたが、例えば画面を2分割して一方でMarkdown書きながら、もう一方でプレビューするような事ができないので、どうすれば実現できるのか考えています。
 Komodo Editのマクロは起動トリガの設定(ファイルを保存したら実行する等)が行えるので、そのあたりに糸口があると思い、まずはKomodo Editのマクロについて勉強しています。

Helpに書いてあるサンプルが間違ってる

 マクロは、PythonかJavaScriptで記述する事ができます。
 まともに書いた事ないのですが以前から学習したかったのでPythonで書いていく事にしました。

Komodo Edit Help
Macros->Macro API->Python Macros->Accessing the editor
ONLINE HELP:
http://docs.activestate.com/komodo/8.5/macroapi.html#macroapi_py

 Komodo Editのヘルプファイルにはマクロについての記述があり、”Accessing the editor”章には、Pythonによって表示中のテキストにアクセスする方法が書いてあります。

 これが動かない。

 Pythonの知識も、XPCOMの知識(XPCOMよくわかっていない。ミドルウェア?)も皆無の為、実行環境が悪いと思ってハマりました。Helpに載ってるコードが間違ってるとは思わなかった。

既に指摘されてた(2007年)

Scimoz object in Python
http://community.activestate.com/forum-topic/scimoz-object-python

 最後に、「手元のドキュメント修正したyo」みたいな事が書いてあるけど、2014年現在でも修正されてないので忘れ去られているのだと思う。

Scimozによりテキストへアクセスする

 僕の理解ではこのポストの内容から、修正後のコードは以下となり、view.scimoz による、Scimozのインスタンス取得が成功します(Helpのコードではエラーとなる)。
 ※ Gist貼るとおかしい。何かと競合しているみたいだな。あとでなおします。

Komodo EditはPython2を包含している

 今回の件で、Pythonの実行環境が悪いのだと思い、プラットフォーム側のPython環境を調べていたら、Komodo Editは自らが持つPython環境を用いている事を知りました。 プラットフォーム側の環境がエディタの動作に影響を与えてしまうからです。

 逆を返すと、プラットフォーム側のPythonに手を加えても、Komodo Edit上では利用できない事になる(と思う)。 Markdownのコンバートの為に、Markdown.pyを導入しようと考えていたけど代案が必要になりそうだな。

著者 :
ソニー・ピクチャーズエンタテインメント
発売日 : 2008-02-20

[Komodo Edit] 速く起動する

速く起動したい

 普段eclipseと付き合っているので起動スピードについてある程度寛容なのですが、できることなら速く起動したい。

Komodo Edit is SLOW! but you can speed it up…
http://richelectron.blogspot.jp/2009/06/komodo-edit-startup-time-slow-speed-up.html

 この記事では不要なアドオンを無効化する事が起動スピードの改善に効果があると書いています。
 ただ、これが2009年の記事で、対象としているのがKomodo Edit 5(のはず)なので、現在のKomodo Edit 8に対する効果についてはわかりません。

計測する

 実行環境は以下になります。

  • ThinkPad X220
  • OS:fedora 20 (64bit)
  • CPU:Intel® Core™ i5-2520M CPU @ 2.50GHz × 4
  • Mem:8GByte

 計測にはtimeコマンドを使用しました。ユーザCPU時間(user)とシステムCPU時間(sys)を判断材料とします。

$ time komodo
real 0m13.117s
user 0m5.361s
sys  0m0.536s

 なお、CPU処理中に画面描画は開始されるため、体感的には計測結果よりも早く起動しているように見えます。

インストール直後

 まずは、何も手を加えていないインストール直後の状態での起動時間です。
 1回目の起動は、諸々の処理(ホームディレクトリに設定定義ファイル生成したり等)を行っている為、安定後の倍の時間が掛かっています。

  1. user 0m10.638s sys 0m1.070s
  2. user 0m5.361s sys 0m0.536s
  3. user 0m4.803s sys 0m0.433s
  4. user 0m5.161s sys 0m0.523s
  5. user 0m4.599s sys 0m0.412s
  6. user 0m5.455s sys 0m0.516s
  7. user 0m5.251s sys 0m0.523s
  8. user 0m5.351s sys 0m0.514s
  9. user 0m5.542s sys 0m0.517s
  10. user 0m5.277s sys 0m0.514s

 平均(1回目除外)で、ユーザCPU時間5200ms(5.2秒)、システムCPU時間499ms(0.499秒)です。

Start Pageを表示しない

 次に、Start Pageを表示しない設定での起動時間です。
(メニュー[Edit]→[Preferences]→[Appearance] “Show Komodo Start Page on startup”をOFF)

  1. user 0m4.246s sys 0m0.381s
  2. user 0m3.820s sys 0m0.311s
  3. user 0m4.265s sys 0m0.355s
  4. user 0m4.206s sys 0m0.313s
  5. user 0m4.235s sys 0m0.383s
  6. user 0m4.070s sys 0m0.328s
  7. user 0m4.134s sys 0m0.383s
  8. user 0m4.363s sys 0m0.398s
  9. user 0m4.217s sys 0m0.328s
  10. user 0m4.198s sys 0m0.344s

 平均で、ユーザCPU時間4175ms(4.175秒)、システムCPU時間352ms(0.352秒)です。
 1秒程度早くなっています。

Add-onsを無効化

 全てのアドオンを無効化します。こうしてしまうと、ほとんど使い物にならなくなるのですが、Add-ons無効化の影響を計るために。
(メニュー[Tools]→[Add-ons] Extensionsにリストアップされる拡張機能を全て”Disable”にする)

  1. user 0m3.494s sys 0m0.305s
  2. user 0m3.583s sys 0m0.333s
  3. user 0m3.520s sys 0m0.346s
  4. user 0m3.534s sys 0m0.322s
  5. user 0m3.482s sys 0m0.324s
  6. user 0m3.698s sys 0m0.330s
  7. user 0m3.541s sys 0m0.299s
  8. user 0m3.573s sys 0m0.297s
  9. user 0m3.509s sys 0m0.306s
  10. user 0m3.552s sys 0m0.315s

 平均で、ユーザCPU時間3549ms(3.549秒)、システムCPU時間318ms(0.318秒)です。
 500~600ms程度早くなっています。

思ったほど早くならないが効果はある

 デフォルトでインストールされるアドオンは結構あるので、それら全てを無効化すればかなり早くなるのではと思いましたが、その数に比べ、効果は薄いように感じます。
 Start Pageを非表示とするのと共に、不要なアドオンがあれば無効化しておくという使い方がよさそうです。

起動時のエラー

 今回の件と直接関係ないのですが、コマンドラインから起動すると、以下のエラーが出力される事に気づきました(アドオンの無効化は関係なく)。

$komodo
(process:3828): GLib-CRITICAL **: g_slice_set_config: assertion ‘sys_page_size == 0’ failed

 この現象はBugzillaにも記録されており、既知の問題のようですが、現時点ではまだ解消されていないようです。

Bug 833117 – Does not disable glib slice allocator with glib >= 2.35
https://bugzilla.mozilla.org/show_bug.cgi?id=833117

Komodo Edit: GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0′ failed
http://askubuntu.com/questions/322702/komodo-edit-glib-critical-g-slice-set-config-assertion-sys-page-size-0

 「気にしなくてダイジョブ!」とか言ってるけど気持ち悪いな。

Komodo Editはじめましたの2

前回の続き

Komodo Editなんとかしたい

 いじり甲斐があるので、いろいろと設定を試しているのですが、現時点までの未解決項目を書いておきます。
 なんらかの方法で解決できるものもあるかもしれないけど、現時点の知識レベルだと簡単に解決できない。まだコーディングに使用していないので、本格的に使い始めたらもっと他にも文句が出てくるかもしれないです。

水平ルーラーがない

 Komodo Editでは、水平ルーラーを表示する機能が実装されていません。
 水平ルーラーというのは、下の画像でいうと、一番上に描画されている定規のようなものです。1行の文字数を気にするときのガイドになります。ちなみにこの画像は秀丸エディタです。

Hidemaru

 ActiveStateのBlogにも書かれているのですが、開発側は行の長さを制限する事(例えば80文字とか)に否定的で、そういった人達をやんわりとdisってます。実装する気はないようです。
 その代りに、指定した文字数の位置に垂直線を引く機能が実装されていて、文字数を気にしなければならない場合はそれで我慢。
 個人的にこれで概ね事足りるのですが本当は水平ルーラー欲しい。

マルチバイト空白スペースを可視化する方法が用意されていない

 全角スペースとも呼ばれます。これを見えるようにしたい。ちなみに秀丸エディタでは、淡いグレーの破線で書かれた正方形が現れます(可視/不可視は設定による)。
 下の画像で言うところの3行目です。というか、さっきと同じ画像ですが、今回このキャプチャに僕の思いが全て詰まっています。

Hidemaru

改行文字の表示がヒドい

 設定項目の中に、EOL(End Of Line)の表示/非表示があるのですが、表示してみると、これは誰も使ってないのではないかと思うくらいの見栄えになります。下の画像は、改行コードがCR/LFのテキストファイルを開いた画面です。

komodo_win

 ファイル終端の空行や、行末のスペース(Markdownのために)を確認したりするため、改行文字の位置が知りたいのですが、これはちょっとひどい。
 知りたいのは改行文字の位置です。どのような改行コードが用いられているか、は常に知りたい情報じゃないですよ。下の画像のように、単にそこが改行されている事がわかればよいのです。

Hidemaru

EOFを表示させたいのに無い

 上記に関わるのですが、EOF(End of File)を表す記号が表示できない(できる?)。
 ファイルの末尾がどの位置か。最終行末か、それとも改行を一つ挟んで次の行なのか。これが知りたい。下の画像で[EOF]と表示されているものです。

Hidemaru

タブ文字の自己主張が強すぎる上にタブ文字を表示させようとするとホワイトスペースまで可視化されるふざけるな

 面倒なので画像については上のを参照してください。2行目がタブ文字です。秀丸エディタでは慎ましく控え目な表示ですが、Komodo Editではタブ幅いっぱいに矢印が引かれています。
 しかも、なぜかわからないのですが、ホワイトスペースの表示非表示設定と、タブ文字の表示非表示設定が1つの設定項目になっていて、どちらも可視化するか、どちらも不可視化するかしかありません。
 画像1行目はホワイトスペースが4つ並んでいるのですが、個人的に、ホワイトスペースは不可視でタブ文字は可視にしたい、切実。

Markdownを気持ちよく書く方法が用意されていない

 Komodo Editはプレビュー機能が標準実装されていて、例えばHTMLを編集しつつ同時にプレビューを行えたりします。素晴らしいです。
 だがしかし、Markdownを書きながらプレビューする機能がない。誰かがプラグインかマクロか何か書いてるだろうと思って探すも見つからない。

頑張ってみる

 とりあえず今の時点ではこんな有様なのですが、Komodo Editを攻略していくのは楽しいし、しばらく付き合っていくつもりなので、マクロとかプラグインとか駆使して頑張ってみます。

Komodo Editはじめました

Screenshot from 2014-05-05 18:40:24

Komodo Edit
http://komodoide.com/komodo-edit/

今日は、こもどの日ということで、Komodo Editについて書いてみます。
Komodo Editは、Active Perlでお馴染のActiveState社製エディタです。この上位パッケージに有償のKomodo IDEがあります。

オープンソース化もされてる。リポジトリはGitHubに。
https://github.com/Komodo/KomodoEdit

仕事ではWindows、プライベートではLinux(fedora)を使っているので、以前からエディタを統一したいなと考えているのですが、Win環境では十数年使っている秀丸エディタから離れられず、Linuxでは模索しながら未だに個人的なスタンダードエディタを手に入れていません。

先日、ふとあることでKomodo Editに巡り合って、じゃあちょっと試してみようかなと。
もちろんマルチプラットフォームなのが第一の理由です。Linux環境でのマイスタンダードを手に入れられるかもしれない。

以前、Linuxで秀丸動かそうとしたりgeditblue fishをWin環境で無理矢理使ってみたりしたのですが、なんともダメな感じでした。もちろん昔Sublime textも試したのですが、今ではもう解決しているのかもしれないけれど、日本語入力時の問題があって敬遠していました。そうそう確か、Winでも使えるヴィームとかいうエディタも試してみたけどあのエディタは

で、話を戻してこのKomodo Edit、国内だとあまり情報がない。
これは、このアプリがメニュー等を容易に日本語化できないので日本人ユーザが少ないのが理由だと推測しています。もったいないことだね。
でも、エディタの場合はアプリの特性上、作業中にメニューバーから辿って何かをするという頻度が、他のアプリと比べ極めて低いと思われるので、実は英語でも案外大丈夫のはずです。というか大丈夫。

設定項目が多数あり、プラグイン対応もしているので、カスタマイズしていくことである程度満足の行くエディタになるんではないかいなと淡い期待を込めて使ってみようと思っとります。

まだこのエディタでコードをガリガリ書いていないので、善し悪しについて判断できない状況ですが、既に現時点で不満に感じる部分が数カ所あるのであとで書きます。

では。

Gunma.web #16に行ってきたよ #gunmaweb

2014/04/12(土)、16回目のGunma.webが大開催されました。
前回(#15)が昨年の12月なのでしばらくぶりです。

会場は高崎市の cafe あすなろ でした。僕は初めてだったのですが(#14欠席だったので)落ちついてて静かな良いお店です。

今回は、いにしえのServerPushについて、90’sをフィーチャーした内容でLTしました。
久々に振り抜いた感のあるLTができて個人的に満足してます。

実は、LT中で”x-multipart/x-mixed-replace”はIE以外みんな動くというまとめで終わらせたのですが(実際アニメーションは全て動作したのですが)、ATT Pushのスクリプトは、FirefoxとNetscape以外で動かせてません。
たぶんどこかコーディングミスがある気がするのですが、解決しないまま当日を迎えてしまい、5分で納めるためにLTでは特に触れてません。もうデバッグする気がないのでGistに放置しておきます。あたた。

AttPush – Gist
https://gist.github.com/ivoryworks/10433705

あと、赤ん坊が踊り狂うやつはここにあります。

dance-with-serverpush – GitHub
https://github.com/ivoryworks/dance-with-serverpush

ゆかいな2次会はGruで。
たいへん盛り上がりました。

ジャマタ!

こんどGunma.web #16があります #gunmaweb

SlideTitle

2014.04.12(土)に16回目のGunma.webがあります。

Gunma.web #16 – Gunma.web | Doorkeeper
http://gunmaweb.doorkeeper.jp/events/8784

今回僕のLTは『server push navigations』と言って、同じく発表予定されている『browser push notifications』@kanayannet を意識したタイトルになってるのですが、内容的にはどう転んでも勉強にならない代物になる(まだタイトルしか書いてない)ので、いつもの前座LTという事でひとつよろしく。一番手なので遅刻してきてOKです。

参加締め切りまでまだ時間あるのでゼヒドウゾ。

それと、ゆかいな2次会もあります。

Gunma.web #16(2次会) – Gunma.web | Doorkeeper
http://gunmaweb.doorkeeper.jp/events/9500

こちらは本会より締切が早いので注意してください。

ソレデハー。

古いPCをLinuxマシンにするというよくある話

 使わなくなったPCにLinuxをインストールして再利用しようとか、初心者がLinuxを体験するにはもってこい、などという煽り文句の特集とか昔からありますが、最近の主流なLinuxはGUIもリッチになってきたので、Linuxだからといって低スペックPCでサクサク動くわけではありません。

 そういった古いPCにLinux入れてモッサリした感じで使ってみても、Linux未体験の人にとって、そこに質の良いエクスペリエンスはないでしょう。

 個人的には、ハイスペックなPCにこそLinuxをインストールして、未知のOSを体感したほうがずっと楽しいと思っています。
 どちらかと言えば、ある程度Linuxに馴染んだ後、古いPCにLinuxを入れて使うというのが理想的な順路でしょう。

 この世には『新しく買ったPCにLinuxインストールして使ってみよう!』という特集が必要とされています。(年賀状とか印刷まわりが弱いとかこの際忘れて)Linuxをぜひどうぞ。

Viva Linux!

読:『はじめる! Box2DJS』

Box2DJS

Box2DJSというのはJavascriptで書かれた物理演算エンジンです。
オリジナルのBox2DはC++で書かれていて、様々な言語や環境に移植されているのですが、これはそのJavascript版という事です(正確にはActionScript 版である Box2DFlashAS3から移植されているそうです)。筆者の方が移植されてます。

AndEngineのBox2D

AndroidのゲームエンジンAndEngineにBox2Dのextensionがあって、それを勉強しようと思ったのですが、なかなか情報が無くて困ってました。
Box2Dどころか物理演算エンジンについても試したことがなかったので、色々と調べている内に、Box2Dは各方面に移植されてて、JS版もある。たくさんある(実際いくつかある)、で、達人出版で本出てるみたい、安い、買った。という。

JS版のBox2Dとしては最古

Box2DのJavascript版は複数あって、他のバージョンの方がメンテナンスされているようなのですが、お手軽な値段だったし、そもそもの目的はAndEngineのためにBox2Dの基礎が学習できれば良いので、これにしました。

何か愉快なものを作ってみようと思います。

青いThinkPadが来た(ThinkPad E145)

DSC_0543

遊び半分で買いました。

通算6台目(あれら + これ)になるThinkPad、E145が到着。
普段はX220にLinux(Fedora)を入れて使ってるけど、Linuxは印刷が弱くて、毎年年賀状シーズンになると印刷のためだけにXP出してきたりしてなんだかもうダメまっているのでお手軽なThinkPad E145してみました。11.6インチ。ちいさめ。

このモデルは、ThinkPadシリーズにしては珍しく天板の色が3色から選べる。

普段使ってるX220の12.5インチと約1インチしか違わないけど結構小さく感じて、複数ペインで構成されるアプリだと少し辛そう。Webブラウズやメールかいたりするなら問題なし。

Windows8という聞いたことのないOS(知ってる?)が入っていて、起動はしたけど終了のさせかたがわからないという事態になったり、なんだかよくわかっていません。怖いです。

そういえば、以前のThinkPadだとトラックポイントの予備キャップが付いてきたけど、もう付かないのかな。X220もついてなかった気がする。

頑張ってべんきょうします。

No tags for this post.