Dead Zone

Stand alone.

coffeescript-eclipse (3)

2014-04-21 07:56:00 | 雑記

そんなこんなでパッチを作ったんですが。
' "XtextReconcilerJob" has encountered a problem' in 4.3.1 onwards · Issue #19 · Nodeclipse/coffeescript-eclipse
のコメントをよく見てみると、
>jokester01au referenced this issue from a commit in jokester01au/coffeescript-eclipse a month ago
ってことで
DO NOT mutate input text with multiple newlines -- partially addresses N... · d80d834 · jokester01au/coffeescript-eclipse
で、イケない処理を削除するパッチが既に(^^;
Pull Requestすりゃいいのにとか思ったり。
他にもこのバグの原因について言及してる人も一応いたりはするんですが。
なんかねぇ〜
というわけでブログの記事で済ますことに。

コメント (0) |  トラックバック (0) | 

coffeescript-eclipse (2)

2014-04-20 22:51:21 | 雑記

Nodeclipse/coffeescript-eclipse なんですけども。
随分前から「編集中にエラーダイアログがポップアップして使い物にならない」状態が続いてて。Marketplaceではとうとう「Nodeclipse CoffeeScript Viewer (Editor before Eclipse 4.3.1) 0.4.0-201403250304」とビュワー扱いになってしまってたり(^^;
XtextもCoffeeScriptも私は全く知りませんが、ちょっと追いかけてみたところ。
…何だよパッケージ名にcom.aptana.editor.coffee.parsingって(-_-) aptanaからコピってきたんでしょうか。いやそれはいいんだけど、コピって使えるもんなのか? Xtextで? 謎。
Xtextも謎で、org.eclipse.xtext.ui.editor.reconciler.XtextReconciler.getMergedReplaceRegion(XtextResource)にて、編集中のテキストを取得するために
>IParseResult parseResult = resource.getParseResult();
>String resourceText = (parseResult != null) ? parseResult.getRootNode().getText() : "";
ってやってるんですが。編集中のテキスト(Document)に対する変更イベント(DocumentEvent)を処理するシーンで、パーサーの処理結果からテキストを再構築する(かの如き)コーディングはなんか違和感を感じます(-_-) resource.getTextみたいなのとか、parseResult.getSourceみたいなのとか(そういうメソッドは無いんですが)ならまだわかるけど。
でもってこのパーサーが正しい(あるいは都合のいい)結果を返してくれないんですよね。
com.aptana.editor.coffee.parsing.lexer.CoffeeScanner.tokenize(String, Map)の中でパース対象ソースを勝手にトリミングしてしまっているので、末尾のホワイトスペースが消失してしまい。上記のresourceTextが編集中のテキストと一致しなくなってしまって。結果、編集中のテキストの範囲外に対して変更イベントが発生した格好になって
|An internal error occurred during: "XtextReconcilerJob".
|start > length()
(startは変更位置、lengthは編集中のテキスト(実際はトリミングされて短くなった内部テキスト)の長さ)

コメント (0) |  トラックバック (0) | 

coffeescript-eclipse

2014-04-20 21:37:53 | 雑記

' "XtextReconcilerJob" has encountered a problem' in 4.3.1 onwards · Issue #19 · Nodeclipse/coffeescript-eclipse

My patch from one day investigation. (I know neither Xtext nor CoffeeScript though)

diff --git a/csep/src/com/aptana/editor/coffee/parsing/lexer/CoffeeScanner.java b/csep/src/com/aptana/editor/coffee/parsing/lexer/CoffeeScanner.java
index c8babb7..44366c9 100644
--- a/csep/src/com/aptana/editor/coffee/parsing/lexer/CoffeeScanner.java
+++ b/csep/src/com/aptana/editor/coffee/parsing/lexer/CoffeeScanner.java
@@ -170,6 +170,7 @@
     private static final Pattern HEREDOC_ILLEGAL = Pattern.compile("\\*\\/");
     private static final Pattern LINE_CONTINUER = Pattern
             .compile("^\\s*(?:,|\\??\\.(?![.\\d])|::)");
+    @SuppressWarnings("unused")
     private static final Pattern TRAILING_SPACES = Pattern.compile("\\s+$");
 
     private static final Set<String> COMPOUND_ASSIGN = new HashSet<String>();
@@ -359,8 +360,6 @@
             code = "\n" + code;
             this.fOffsetCorrection -= 1;
         }
-        code = code.replaceAll("\r", "").replaceFirst(
-                TRAILING_SPACES.pattern(), "");
         this.fCode = code;
         this.fLine = 0;
         if (opts.containsKey("fLine")) {
@@ -891,7 +890,7 @@
             if (noNewlines) {
                 this.suppressNewlines();
             } else {
-                this.newlineToken();
+                this.newlineToken(indent.length());
             }
             return indent.length();
         }
@@ -969,9 +968,9 @@
         return 0;
     }
 
-    private void newlineToken() {
+    private void newlineToken(int length) {
         if (this.tag() != Terminals.TERMINATOR) {
-            this.token(Terminals.TERMINATOR, "\n", 1);
+            this.token(Terminals.TERMINATOR, "\n", length);
         }
         // return this;
     }

BTW, this is partially same as a bug-fix by jokester01au, I noticed later.
https://github.com/jokester01au/coffeescript-eclipse/commit/d80d834d80e5713144c76e9b557e0530adffec20

コメント (0) |  トラックバック (0) | 

887.6MB

2014-04-09 08:12:32 | 雑記

Windows 8.1 Updateダウンロード中...

ダウンロードに30分(ウチは回線が細いので)くらい。更新に20分くらい。
スタート画面がちょこっと変わった。
タスクバーにストアがピン止めされてた(^^;
そんだけ(・・)

いや、メモリの使用量は歴然と減っていました。アプリを何も起動しない状態で今までは0.9GBだったのが0.6GBに。

その後なんかWindows Modules Installer Workerがずっと走りっぱなしなんだけど(・・) 早よ落ち着いてくれ...

って落ち着いたらメモリは0.5GBに。

さて、とIconia W4をアップデートしようとしたら、サイズ427.4MB...あれ? なんだこの違い?

[追記]
そういやIconia W4は32bit版だった...

コメント (0) |  トラックバック (0) | 

xdebug 2.2.4 その後

2014-04-04 11:57:05 | 雑記

どうも本家は全然やる気が無さそうなので...
作業部屋: atlanto / eclipse のファイルダウンロード - SourceForge.JP のtrashの下にphp_xdebug-2.2.4-5.4-vc9-nts-private.dllとphp_xdebug-2.2.4-5.5-vc11-nts-private.dllを捨てときます(^^;

コメント (0) |  トラックバック (0) | 

8.1 Update...

2014-04-03 14:37:42 | 雑記

マイクロソフト「Windows 8.1 Update」発表、4月8日に一般公開 | マイナビニュース

Windows Updateで配布、ってこんな再インストール級の大型アップデートをもしも勝手に始められちゃったら困るなぁ...(^^;

コメント (0) |  トラックバック (0) | 

PHP ExplorerのUndo

2014-03-29 10:37:06 | 雑記

Undo Delete - Dead Zone
PHP Explorerからはファイル削除のUndoができない件で。
Undoは滅多に使わないしNavigatorやProject Explorerからできるからいいや、と放置してましたが。
最近テストのための作業として、ファイルを削除してUndoする繰返し作業が発生し... いちいちNavigatorにフォーカスを移してUndoするのがまぁ鬱陶しくて(^^;

原因もわかって対症療法も見つかったので、インスタントプラグインをこさえました。ここに置いときます。(Eclipse起動時にPHP Explorerが表示されている必要あり)
作業部屋: atlanto / eclipse のファイルダウンロード - SourceForge.JP のtrashの下の jp.sourceforge.pdt_tools.repair.undo_1.0.0.201403291029.jar

e4とは無関係でPDTの内部的なバグでしたが。

コメント (0) |  トラックバック (0) | 

わからん(続き)

2014-03-25 15:29:43 | 雑記

>まさかとは思うけど(ry

自動変数を初期化せずに使ってる時点でそれはもうそれだけで零点なんですけども。
実際のところどうなんだろうかと思いつつ、xdebug_com.cの
> actually_connected = getpeername(sockfd, &sa, &size);
の直前にprintfを突っ込んでsizeの値を吐き出してみたらば。
Mint16でもWindows8.1でも、値は0でした。偶然(?)って怖い...
でもMint16はOKでWindows8.1はNG。

Linuxの場合、
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
において
The addrlen argument should be initialized to indicate the amount of space pointed to by addr.
ですが、返されるエラーは
EINVAL addrlen is invalid (e.g., is negative).
で、負の値はダメだけど0は通っちゃう?
Windowsの場合、
int getpeername(_In_ SOCKET s, _Out_ struct sockaddr *name, _Inout_  int *namelen);
において
namelen [in, out] A pointer to the size, in bytes, of the name parameter.
返されるエラーは
WSAEFAULT The name or the namelen parameter is not in a valid part of the user address space, or the namelen parameter is too small.
で、0はダメ?
いや0だと何も受け取れなくなっちゃうのでダメだと思うんですが。Linuxは… 実際上記のテストで直前直後にsaの中を吐き出してみるとゴミが入っててそのままゴミが残ってましたけど。それじゃあこの関数の意味が無いような... それとも実データは不要で結果のOK/NGだけ知りたい場合を想定してサイズ0でも通すように意図的に作られている? Linuxだから? (-_-)

[3/26追記]
などというヒマなことやってるのは
0001040: E: Could not connect to client. :-( - MantisBT
が絶賛放置中だからなんですが(--;
なんていうか...

[4/14追記]
こんなつまらない初心者バグを直せないって恥ずかしいよね。ここまで低レベルなバグってちょっと記憶に無い(見たことない)な...

コメント (0) |  トラックバック (0) | 

Eclipse + Java 8

2014-03-20 10:00:23 | 雑記

Eclipse Project Downloads より。

Eclipse support for Java™ 8: Starting with I20140318-0830 all our Luna (4.4) builds contain the Eclipse support for Java™ 8. For Kepler SR2 (4.3.2) a feature patch is available (P20140317-1600).

もっと目立つ所でアナウンスしてくれりゃいいのに^^;

4.4M6をupdateしてラムダを試してみたらラムダ式内でコード補完ができなかったので棄てた。デバッグもやりにくそうだし...

コメント (0) |  トラックバック (0) | 

わからん

2014-03-19 16:41:52 | 雑記

Xdebugですが。
xdebug_com.cのxdebug_create_socketで
>actually_connected = getpeername(sockfd, &sa, &size);
こいつがエラーになっていて。エラーコードが10014(WSAEFAULT)。
>The name or the namelen parameter is not in a valid part of the user address space, or the namelen parameter is too small.
た、確かにsizeがセットされていない...
てなわけで直前にsize=sizeof(sa);を突っ込んでビルドしたら、動作しました(・・)

・・・逆にこれでなんでWindows7で動作したのか、と。
getpeername function (Windows)
別に仕様は変わってないようだし。
Linuxでもsizeのセットは必要だと思うんだけど。なんでMint16で動作したのか、と。
ちょっとググっても「getpeernameが〜 ⇒ namelen(↑のsize)はInOutだからちゃんと値をセットしろ」という当然の話しか。
激謎(汗

まさかとは思うけど(ry

コメント (0) |  トラックバック (0) |