2009-01-01から1年間の記事一覧

LimeChatスクリプトを拡張するライブラリ 「Orthoclase」(2)

http://d.hatena.ne.jp/anon_193/20090131/1233376352の続き. Download (from Mediafire) 今度は言語選択が出来る機能を付けた. 標準の環境ならVBScriptの選択が,ActivePerlが入っているならPerlScriptの選択が出来るようになる. ほかのスクリプトエンジ…

ActiveScript Engine初期化の試行錯誤 (3)

IUnknownの実装周りをテンプレートメタプログラミングしている所為で非常にデバッグしにくいんだけど,超がんばった. 循環参照に陥っているところは全て取り除いて,JScript, VBScriptではきっちりオブジェクトが解放される実装に書き換えたけど,PythonScr…

ActiveScript Engine初期化の試行錯誤 (2)

もうちょっとがんばってみたところ,PythonScriptがSetScriptSiteで拗ねる理由を知ることが出来た. lib/site-packages/win32comext/axscript/client/framework.pyにあるこのコード def write(self,message): try: self.redir.write(message) except: win32a…

ActiveScript Engine初期化の試行錯誤

うごかないスクリプトエンジンが諦められないので、テストプログラム用意してがんばってみた. まず、PythonScriptが吹っ飛ぶ原因を探ってみたところ、なんとGetTypeInfoでAddRefしてないのが原因だった.そりゃ吹っ飛んでも仕方ない.ひどい濡れ衣だったねP…

Orthoclaseでうごくスクリプトエンジン

今の実装状態だと,どれくらい動くのか気になるので確かめてみた. JScript これに最適化されているのだから当たり前に動く. VBScript logをLog(対数関数)に取られてしまう以外はしっかりと動く.事前バインディングのハンドラは例によって,event_プレフ…

Orthoclaseに言語切り替え機能を付けたい

JScriptだけじゃなくて,VBScriptとか,PHPScript, RubyScript, PerlScript, Haskell Script etc.なんかも使えたら楽しそうじゃないか・・・?と思ったので,早速実装を始めた. 言語種別をソースコードから読み取るとなると,IActiveScriptParse::ParseScri…

組込系に組込用スクリプト言語

先日,組み込み系でスクリプト言語エンジンを組み込むこと(だじゃれではない)に関する話題があって,議論に値するネタが幾つかあったおかげで少々盛り上がった.たとえば,エンジンがどのくらい標準関数に依存しているのか,エンジンのライセンスの問題等々…

IRCボットの実装で見るスクリプト言語

PHP+SmartIRCでIRCボットを書きたいというお話で,SmartIRCなるライブラリの存在を始めて知った.他の言語にある,IRCクライアントライブラリは幾つか知っているけど,それらも分かるのは名前ぐらいで,使い方はさっぱりだ. それならこれを機に使い方(言語…

メタプログラミングでFib関数をメモ化するとどうなるのか

c++

メモ化されたC++テンプレートメタプログラミングなFib関数を考えてみた。 boost.mpl.mapをメモ帳代わりにして、計算していく。 #include <boost/mpl/if.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/map.hpp> #include <boost/mpl/insert.hpp> #include <boost/mpl/at.hpp> #include <boost/mpl/int.hpp> #include <iostream> using namespace boost::mpl; temp…</iostream></boost/mpl/int.hpp></boost/mpl/at.hpp></boost/mpl/insert.hpp></boost/mpl/map.hpp></boost/mpl/vector.hpp></boost/mpl/if.hpp>

fizzbuzz preprocessor

c

C++テンプレートメタプログラミングの例があるなら、C言語プリプロセッサメタプログラミングの例があってもいいと思うの…… #include <boost/preprocessor.hpp> #define FIZZBUZZ_PROC(z, i, _) \ puts( \ BOOST_PP_IF(BOOST_PP_MOD(i, 3), "", "Fizz") \ BOOST_PP_IF(BOOST_PP_MOD(i,</boost/preprocessor.hpp>…

ruby 1.9.1-p0 (stable) @ Visual C++ 2005

前回(ruby 1.9.1-p0 @ Visual C++ 2005 - めらんこーど地階)の記録を参考に作業。こうやってやったことを残しておくと、あとで助かるなぁ。 ビルド時で変わったことと言えば、RMコマンドの設定バグってるのが直ったことぐらい・・・? 相変わらずmkexports…

ruby 1.9.1-p0 正式版が出たそうで

[ruby-list:45836] [ANN] Ruby 1.9.1リリース あとでコンパイルする。

LimeChatスクリプトを拡張するライブラリ 「Orthoclase」

国内で開発されたWindows IRCクライアント最大手のLimeChatが、2.25あたりから、従来のマクロ機能に加えて、JScriptによるスクリプティングが可能になり、マクロ作成の自由度がよりいっそう高まったことは記憶に新しい。WWWリソースのスクレイピング、時刻に…

スクリプトでfoobar2000にて再生中の曲を喋る

foobar2000には、COM Automation Serverというプラグインがあって、そこから現在起動中のfoobar2000の情報の取得や、制御が出来るようだ。 制御の口は ProgID 'Foobar2000.Application.0.7' のCOMコンポーネントとして登録されていて、VB(S)ならCreateObject…

UTF-8 TEXTを含むレコードの閲覧

SQLiteデータベースのTEXT項目をUTF-8文字列で格納しているとき、コンソールの管理ツールから見ようとすると、盛大に文字化けしまくってしまう。おそらく、コンソールの解釈する文字符号化方式がWindows-31Jだからだと思うけど、これでは困る。 どうにかして…

ADO とプリペアドステートメント

最近、入力値検査の不備を突いたSQLインジェクションが取りざたされているのを見ていて、Windows上で、共通のAPIによるデータベースへのアクセスを可能にするActiveXコンポーネントADO(ActiveX Data Objects)では、対策を講じられるかどうか不安になって調べ…

SQLite3におけるREGEXP演算子

ちょっとした用で、SQLite3(via ODBC) を始めてみた。その用件で必要なのは項目に対する正規表現マッチング。LIKE 演算子で済ませなくもないけど、やっぱり楽したい。 SQL における正規表現マッチングに付いて調べてみると、 SQL99 にて、SIMILAR TO 演算子…

続・ruby 1.9 における文字列のエンコーディング

エンコーディング情報を表す Encoding クラスを定義する encoding.c を読んでみた。 対応している符号化方式のリストは、クラスメソッド Encoding#name_list で配列として得ることが出来る。Encoding クラスインスタンスの配列が欲しいときは、Encoding.list…

ruby 1.9 における文字列のエンコーディング

Kconv.kconv がなんかへたって使えないぞどうなってるんだ・・・とか思って調べていたら、どうやら ruby 1.9 から、各文字列が符号化方式の情報を持ち、保持している符号化方式の参照や、異なる符号化方式への変換等が行えるようになったらしい。 符号化方式…

hpricot-0.6.164 @ ruby 1.9.1-p0

ようやく入った hpricot を本番に投入したところ、今度は ruby コードの方でエラーを出力してくれた。 d:/ruby/lib/ruby/gems/1.9.1/gems/hpricot-0.6.161/lib/hpricot/elements.rb:306:in `block in filter': wrong number of arguments (1 for 0) (Argumen…

続・ruby 1.9.1-p0 @ Visual C++ 2005

rubygems Hpricot はバイナリだった ようやく rubygems が動く環境も整備できたので、息切れしつつ hpricot をインストール。テストのためにアプリを動かしてみると、msvcrt-ruby18.dll がねーよというエラーが出てくれた。どうやら、rubygems の Hpricot(ms…

ruby 1.9.1-p0 @ Visual C++ 2005

12月31日、Ruby 1.9系統初の安定版となるRuby 1.9.1のリリース候補版が公開された。Ruby公式サイトにダウンロード用URLが掲載されている。 Ruby 1.9.1 リリース候補版公開:CodeZine(コードジン) 年明け以降公式サイトを訪問してなかったので、全く気付か…

ruby/ext/socket のバグ?

ruby 1.8.7-p72(mswin32)+WEBrick で、LAN 向けの nslookup Web サービスを構築していたところ、socket ライブラリの不思議な挙動に気付いた。 ホスト名からホストの情報を取得する関数である gethostbyname は IPアドレスを与えても逆引きを行わない。IPア…

はじめてのエントリ

何となく持ってみたが、まだよく分からない・・・ 色々使っているうちにわかってくるかな?

Encode::JP::JIS7 のJIS X 0201片仮名対応

本来、iso-2022-jp という文字符号化方式には、JIS X 0201片仮名、所謂半角片仮名の対応は含まれていない。一方、perl の Encode モジュールで iso-2022-jp を担当する Encode::JP::JIS7 は、JIS X 0201片仮名も含めてエンコード・デコードを行うように作ら…