ラベル tool の投稿を表示しています。 すべての投稿を表示
ラベル tool の投稿を表示しています。 すべての投稿を表示

2013年1月12日土曜日

AstahScriptでアクティビティ図の遷移を出力してみる

仕事で作業フローをAstahでActivity Diagramで記述していました。
でも、Astahのままだとチェックリストとして機能としては使えないなぁ
と思ったので、AstahScriptでアクションをリストに落とせるようにしてみました。

JavaScriptはもう疎くなってしまったので、Groovyで書けばもっとすっきりする記述になります。


Astah API



//すべてのアクションの遷移を出力する
importPackage(com.change_vision.jude.api.inf.model)
//http://members.change-vision.com/javadoc/astah-api/6_6_3/api/en/doc/javadoc/index.html
seqs = astah.findElements(IActivityDiagram)
println("START")
var myObj = {};
for ( var i in seqs )
{
    var seq = seqs[i];
    var startNode = getStartNode(seq);
    getNext(seq,startNode)
//    getNext(seq,startNode.getOutgoings()[0].getTarget())
}
println("END")

function getNext(seq,tmp){
    var outgoings=tmp.getOutgoings();
    if(outgoings != 0){
        for(var index in outgoings)
        {
            var id = tmp + outgoings[index].getTarget();
            //Setがあれば置き換える
            if(myObj[id]=="SET"){
                continue;
            }
            myObj[id]="SET"
            //printNodeType(tmp)
            println(tmp+"->"+outgoings[index].getTarget())
            //【制限】前のアクションにもどる場合は無限ループになる。
            getNext(seq,outgoings[index].getTarget())
        }
    }
    return
}


function printNodeType(tmp){
        println("========")
        if( tmp instanceof IAction ){
            println("IAction"+tmp.getName())
            println(tmp.getInputs())
            println(tmp.getOutputs())
            println(tmp.isCallBehaviorAction())
            
        }else if (tmp instanceof IObjectNode ){
            println("IObjectNode"+tmp.getName())   
            println(tmp.getInState())   
            println(tmp.getBase())   
            
        }else if ( tmp instanceof IControlNode){
            println("ControlNode"+tmp.getName())
            println(tmp.isFinalNode())
            println(tmp.isForkNode() )
            println(tmp.isInitialNode() )
            println(tmp.isJoinNode() )
            println(tmp.isMergeNode() )
        }
        println("========")
}

function getStartNode(seq){
    var activities=seq.getActivity().getActivityNodes()
    var startNode;
    for ( var k in activities)
    {
        node = activities[k]
        if ( node instanceof IControlNode ){
            if( node.isInitialNode()){
                return node
            }
        }        
    }
    return null;
}

2012年12月5日水曜日

Macのxmindの日本語入力について

自分は仕事とかでmindmapを作成する場合にはXmindを使っています。
会社では最新版(2012/12/05現在の最新版はv3.3.0)をインストールしてやっています。
  • スプラッシュ画面の画像変わった
  • mindmapのテンプレートが用意されている。
  • ローカルヒストリが使える。

ローカルヒストリ機能が非常に有用だったので、自宅でもインストールしてみようと
やってみました。
インストール自体の問題はないのですが、日本語入力すると無視される。。。。。
Windowsでは入力できるが、Macだとできないようで。。。。。。。

ver.3.2.1をインストールしたら正しく日本語が入力できた。
ver.3.2.1は日本市場向けということで、日本語入力がうまくサポートしているのだろうか。
できたらv.3.3.0もちゃんと日本語入力サポートされたxmindがあればもっと使えるようになるんだろうなぁ。


2007年9月11日火曜日

readelf

ELFヘッダを見る方法:
readelf -h [オブジェクト]
ELFのマジックナンバーは「177ELF」という文字列になっている。

ABI:Application Binary Interface


・プログラムヘッダ
readelf -l sample

・セクションヘッダ
readelf -S sample

・ストリングヘッダ
ストリングヘッダが.shstrtabにあたるのでオフセットが0012f5、サイズが000158バイトのストリングテーブルがある。
od --skip-bytes 0x0012f5 --read-bytes 0x158 -t x1z sample

・シンボルテーブル
readelf -s sample
ELFヘッダから読み取ってみると。
シンボルテーブルとしては.dynsymがあることがわかる。
そしてダンプしてみると。

od --skip-bytes 0x0001ac --read-bytes 0x000060 -t x1z sample


・再配置情報

2007年9月6日木曜日

GDについて

gdImageCopyResized
とgdImageCopyResampled

の比較。

Resizedのほうが画質が悪く感じられる。


gdImageCopyResampled:

四角形のイメージを別のイメージにコピーする際に使う関数。
スムーズにピクセル値を修正する。
イメージのサイズを減らす際にclarityを保つためである。
オリジナルとターゲットのX,Y座標は適度に領域を延ばしたり、
縮めたりする結果、変化させることが可能
ピクセル値を修正しない場合には gdImageCopyResizedを見る。


gdImageCopyResized:
四角形をイメージから別のイメージへコピーすることができる。
オリジナル画像のX,Y座標とターゲット画像のX,Y座標を適度に
領域を延ばし縮みさせることで変化されることが可能。
イメージ間のコピーでの重要点:
イメージは同じカラーテーブルをもっている必要はないので、
ピクセルはコピーするための同じカラーインデックスをセットしない。
gdImageCopyは同じRGB値をgdImageColorExactに頼って探そうとする。
しかし値が見つからなかった場合にはgdImageColorAllocateで使われたカラーでallocateしようとする。



書いてある内容からするとResampledを使ったほうがよさそうな気がする。