« 日記 |Main| 日記 »

« 東京へ帰る新幹線にて | log | log »

log

  • CommonGatewayが組み込み名前空間に入っていない件
    • XML-RPCでアクセスする際にはserver.grineditがCommonGatewayを指している
      • grinedit.addVertex(...)
    • Jythonスクリプトからのアクセスの際にもgrinedit.addVertexでアクセスできるようにした。
  • Jythonから叩くとPyDictionaryでXML-RPCから叩くとHashtableである件
    • PyDictionaryのコンストラクタにHashtableを渡すことが出来るが…
      • HashtableをPyDictionaryに変換してから処理するってのは美しくない気がする
    • 引数がHashtableのメソッドとPyDictionaryのメソッドの両方があるのはコードクローン
    • HashtableをPyDictionaryに変換してPyDictionaryに統一するのが一番いいのかなぁ。
    • Jython.jarとの結合が密になりすぎるが…。
    • PyDictionaryにtoHashtableがあれば済む話なのになぁ。
    • Jython.jarとの結合が密になりすぎるのを避けたければPyDictionaryの側をHashtableに変換すべきなのかも知れないが…
    • PyDictionaryに統一したら動かなくなった。
         File "(略)", line 41, in load
      java.lang.ClassCastException: java.lang.String
      	at org.python.core.PyList.(PyList.java)
      	at org.python.core.PyDictionary.keys(PyDictionary.java)
      	
    • キーがjava.lang.StringであるようなHashtableをコンストラクタに渡して作ったPyDictionaryのkeysメソッドを呼ぶとClassCastExceptionが再現される。Jythonのバグだろうか?どちらにせよ、このバグを取ったとしてもJythonから渡されたPyDictionaryのキーはStringじゃなくてPyStringになっているからJavaから使い勝手が悪い。
      < if(_params.has_key(new PyString("name"))){
      <   name = _params.__getitem__(new PyString("name")).toString();
      < }
      > if(_params.containsKey("name")){
      >   name = _params.get("name").toString();
      > }
      
    • うむ、やっぱりPyDictionaryが来たときにはHashtableに変換する方針で。
  • それは済んで、入れ子の頂点がうまく動いたときにわかるように中に入る頂点から他の頂点に辺を繋いでみる
    • 動かない。原因は頂点の名前空間にjava.lang.Stringの文字列をキーにして入っている頂点オブジェクトを取得するのにPyStringのオブジェクトをキーにして探していた為にnullが返っていること。問題点はわかったが、その問題を解決するために一番酔い解決方法は何か。
    • ふむふむ。StringのtoStringはreturn this;だからオーバーヘッドはほとんどないな。修正完了。
    • これで赤がりんご、黄色がバナナにつながればOK。
    • ただここまで書いて想像が付いたのだけど、今は頂点を先に描画してそれから頂点を描画しているので内側の頂点へつながる辺は外側の頂点の輪郭で途切れてしまうだろう。難しい問題だ。描画コードはパフォーマンスに直結するだけに、パフォーマンスを落とさずに一般化することを考えないと行けない。
    • 頭が回らないのでもう寝よう。5時だし。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/281

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.