2008年10月23日木曜日

Subversion(サブバージョン)

Subversion(サブバージョン)という
バージョン管理システムを導入してみました。

バージョン管理システムというのは、プログラムのソースコードなどのバージョンを管理するシステムです。(そのまんま)

しかしながら、私はバージョン管理が必要な大規模な開発をしているわけではないので、主とした利用方法はバックアップです。差分でバックアップされるらしいのでディスク容量の節約になるかも?(なんか、いろいろシステム用のファイルを作っているみたいなので逆に容量をくってそうですが・・・)


2008年9月28日日曜日

Eclipse について

以前、PHPのエディタという項目でEclipse について、エディタに矩形選択がないーというようなことを書きましたが、どうやら矩形選択を実現するプラグインがあるようです。

それは、見つけはしたものの、導入してはいないのですが、今回 別のプラグインを導入してみたのでご紹介いたします。

今回導入したのは JStyle というプラグインです。
JStyle は Eclipse のエディタ上で、タブや改行、全角スペースなどを視認できるように表示してくれるというものです。多くの一般的なエディタには備わっている機能で、Eclipse にも一応ありました。でも、使用してみたのですが、表示する空白文字を選択できない、表示文字がおかしい(のか、これが普通なのかよくわかりませんが)のでイマイチでした。

JStyle では表示する空白文字の選択、色の変更などが可能でなかなか良いです。興味がある方は調べてみてください。

Eclipse などの統合開発環境(IDE)は、テキスト編集機能について満足いくものがなかなかないということで今までは避けてきましたが、プラグインを導入することで高機能なテキストエディタにも負けないくらい機能強化できるのかもしれないですね。


2008年9月21日日曜日

LSL における XML-RPC のセキュリティ

Second Life サーバと外部のサーバとで通信を行う方法として、
LSL で使用できるのは HTTP, E-mail, XML-RPC などがあります。

この中で、外部からSL内にデータを送信することが可能なのは
E-mail と XML-RPC の二つです。

E-mail は、通信の際に一旦メールサーバを経由するので
リアルタイムな通信を行うことができません。
普段メールを使用するときにおこなうような 受信作業を
LSLで行う必要があるので、「メールが届いた」ということを
自動的に知ることができないのです。

なので、リアルタイムなインバウンド通信を行う手段としては XML-RPC
しかありません。

XML-RPC というのは外部サーバ上の関数を実行するための通信方法の一種で、
XML を用いて実行する関数、パラメタの指定、戻り値の受けとりなどを行います。
SL においては、外部サーバ上から SLサーバ上のスクリプトの remote_data() という関数を
実行することができます。(正確に言うとちょっと違うかもしれませんが、大体そんな感じです)

外部サーバからSLにアクセスできるというのは、なかなか便利で面白そうな機能なのですが、
この XML-RPC を LSL で使用するにあたって重大な問題点が一つあります。
それは、誰が 接続してきたかというのを LSL で判断する方法がないということです。

つまり、正規のクライアントになりすました悪意のある第三者が
自分自身に対して接続を行ってきたとしても、それを判別する方法がありません。
これはセキュリティ上、大きな問題となります。

しかしながら、別の機能制約のおかげで、このことは致命的な問題とは
なっていません。

XML-RPC 通信を行う際には、SLサーバ上の「どのスクリプトに対して
接続を行うのか」というのを、128ビットのキーで指定します。
(これは Channel と呼ばれています)

128ビットの名前空間というと、軽く1兆を超える
(1兆どころではない天文学的な桁数になります)ほどの数となり、
( 7958661109946400884391936 くらい? )
でたらめにうっても任意のスクリプトにつながる可能性はかなり低いです。

このキーを知らなくては、任意のスクリプトに対して接続することはできません。
逆にいえば、このキーを知っている=信頼できる相手だと、一応は
判断できます。(本当ならこれだけで、通信相手を信頼してはいけないです)

つまり、このChannelがパスワード的な役割を果たし、ある程度の
セキュリティは確保されます。

クレジットカードの番号でも、これと同じような形でセキュリティを確保してます。
クレジットカードが番号だけで買い物できるのは、16桁の連番でない番号を
使用しているので、でたらめに入力しても正規の番号に当たる確率は低いのです。
(最も最近は有効期限や、名前なども確認するところが多いですが)

ただ、SL の XML-RPCでは通信に暗号化されていない HTTP を用いているので、
通信の傍受にたいしては脆弱です。

本当に重要な情報をやり取りする場合には、XML-RPC でやり取りするデータ自身を
暗号化するなどした上で通信を行ったほうが良いでしょう。

ただし、LSLのメモリサイズ制限上、RSA などの複雑なロジックを組むことはできなさそうですが・・・。

2008年9月14日日曜日

PHP のエディタ

PHPの開発環境についてです。

今まではサクラエディタというテキストエディタ+PHPエディタという
フリーのソフトを使用してPHPの開発をしていました。

ほとんどPHPのエディタについて調べたことはなくて、
なんとなく、今まで使っていたサクラエディタと、
PHP+IDE で検索して上位に出てきた PHPエディタ というソフトを
使用していました。

別に大規模な開発をしているわけではないので、
これで充分といえば充分なのですが、そこそこコードのサイズが
大きくなってきたので、2つのソフトを使用しての開発が
めんどくさくなってきていました。

最近では、時間がない中、開発作業を行わなくてはいけないので、
もうちょっと、良いツールはないかなーということで、

今回、PHP + LSL の開発を行うにあたって新しい開発環境を探して
見ることにしました。

でまぁ、一から探すのもめんどくさいので(時間がない!)なんとなく
有名そうなEclipseのプラグインでPHPはないかなーと思って検索してみたところ、

割と最近でたもので、 PDT というものが良いみたいな記事が載っていたので
それをインストールすることにしました。

PDT は Eclipse のプラグインとして導入できます。
そして、LSLの開発でもEclipseがいいぜ!みたいなことを聞いていたので、
Eclipse 導入ついでに LSL 用のプラグインも導入してみました。

使ってみた感想としては

まず、PHPの方ですが、
エディタの機能としてはまぁまぁ、デフォルトで矩形選択が使えないというのはイマイチですが、
(もしかしたら使えるのかな?それかEclipse のプラグインとかである?)
とりあえず、よし。

デバッグなどもできるようなので、(まだそこまで開発がたどり着いていません・・・)
その辺には期待大、な感じです。


LSLについては、うーん・・・?な感じでした。
どこかのブログで大絶賛されていた割には、実際の機能の乏しさに
少々がっかりでした。

入力補完が使えるくらいかな?便利そうなのは。

実行確認などは サーバ上(※1)で実行してやるしかないので、
ローカルデバッグはできません。

なので、従来からEclipseを使用している方には良いかもしれませんが、
これだけの機能のために、あえてEclipse をインストールするのは
少々大がかりな気もします。

--------------------------------------------------------

※1 Second Life の仮想世界上で。


ラベル (例: スクーター、旅行、秋 の罠)

Blogger で記事を投稿するとき、編集画面の下のほうで
ラベルの設定ができます。

でも、例のように

(例では次のように書かれています。)
例: スクーター、旅行、秋

全角『、』で区切って投稿すると、ラベルが『、』を含んだラベルになります。

上の例だと、スクーター、旅行、秋 の3つのラベルができそうですが、
実際には『スクーター、旅行、秋』というラベルになってしまいます。

3つのラベルにしたいときは 半角『,』で区切るとできます。


#いつか修正されそうなので、2008/09/14 12:42:00+0900 (JST) としておきます。


アクセスカウンター

アクセスカウンターを追加してみました。

ITギア アクセスカウンター
http://cnt.itgear.jp/

のカウンターをガジェットとして追加するだけです。
ユーザ登録などもいらないので簡単です。

最初は Google Analytics を使おうかなと思ったのですが、
ユーザ登録で名前と電話番号を入力しなくてはいけないので、やめました。

普段、本名などを入力することに抵抗はないのですが、
最近少しあやしい噂もちらほら目にするので、とりあえず今回はやめときました。

偽名などは書く気にはならないです。

2008年9月4日木曜日

初めまして

初めまして。 Snow.c です。

このブログではプログラムに関する話題を中心にかいていこうかなと、思っています。
今は、PHP & LSL (SecondLife という3D仮想世界で使用できるプログラミング言語)での
プログラム開発をしているので、当面はそちらの話が多くなると思います。