2008-06-23

SCons で一つのソースから複数のターゲットを作る

SCons で一つのソースから複数のターゲットを作るときにうまくいかないのでテストしてみる.

def XXXBuilder():
    return Builder(action = "perl xcommand $SOURCES")

def YYYBuilder():
    return Builder(action = "perl ycommand $SOURCES")

env = Environment(BUILDERS = { "XXX":  XXXBuilder(), "YYY": YYYBuilder() })

env.XXX("src.aaa.xxx", "src.aaa")
env.YYY("src.aaa.yyy", "src.aaa")

ここで,xcommand file は file から file.xxx を生成,また,ycommand file は file から file.yyy を生成.

これを実行するとうまくいった.

うまくいかないと思い込んでいたのは,

env.XXX(None, "src.aaa")
env.YYY(None, "src.aaa")

のようにしていたため.このようにしていたのは,この場合の一つのコマンドが一つのソースから複数のターゲットを生成するのに対応しようとしたため.(→そうではなく,scons -c で消去されないようにするためだった)

あらためて,一つのコマンドで一つのファイルから複数のターゲットを生成する方法を検証してみると,以下で全く問題なかった(もちろん xcommand で .xxx と .yyy を生成するようにした上で).

env.XXX(["src.aaa.xxx", "src.aaa.yyy"], "src.aaa")

2008-06-20

ssh によるポートフォワーディング(リモート→ローカル)

First Try

リモート側のポートに対するアクセスを転送するには -R オプションを用いる.

$ ssh -N -R 1234:intraserv:4321 publicserv

これによって,publicserv のポート 1234 に対するアクセスが,このコマンドを実行したマシンから見た intraserv:4231 に転送される.

ただし,デフォルトでは publicserv のループバックアドレスのみとバインドされるので publicserv 以外からのアクセスが不能である.これは /etc/ssh/sshd_config に以下の行を設定することで解決できる.

GatewayPorts yes

Second Try

しかしそれではちょっと危険なので,ローカル→リモートのポートフォワーディングと組み合わせてみる.

/etc/ssh/sshd_config を元に戻してから,先ほどと同様に

$ ssh -N -R 1234:intraserv:4321 publicserv

とする.publicserv においては localhost:1234 で intraserv:4321 にアクセスできるが,外部からは接続不能である.そこでアクセスしたいマシンで以下のようにする.

$ ssh -N -L 1234:localhost:1234 publicserv

これで万事OK.

2008-06-10

Silverlight 最初の一歩

3つのファイルが必要.

  • Silverlight.js
    SDKから持ってくるのが本道だが,面倒なので添付しておく
  • sample.html
    <html>
    <head> 
    <script src="Silverlight.js"></script>
    <body>
    <div id="iA"></div>
    <script>
    Silverlight.createObject(
        "sample.xaml",
        document.getElementById("iA"),
        "iA",
        { width: "300", height: "300", version: "1.0" });
    </script>
    
  • sample.xaml
  • <Canvas xmlns="http://schemas.microsoft.com/client/2007">
     <Ellipse Height="200" Width="200" Stroke="Black" StrokeThickness="10"/>
    </Canvas>
    

これで sample.html を読み込むと円が描画される.

参考文献

Silverlight QuickStart: Welcome to Silverlight