CINT is an interpreter for C and C++ code. http://root.cern.ch/drupal/content/cint 以前からC言語インタプリタがこの世にあることは知っていたけど、ようやく具体例を見つけた。 曰く、標準に大体従っているらしい。 移植性が素晴らしい。ライセンスも…
ここ数年、ログイン制のサイトでパスワードを設定するときによく見かける「パスワード強度」。これは、入力したパスワードの「強度」を随時計算し、「非常に弱い」「非常に強い」と言った単純明快な言葉で、我々にパスワードの安全性を提示してくれるものだ…
Windowsで、プログラムに対してキーボード入力があったと偽るには、SendMessage, PostMessageで、対象プログラムのスレッドメッセージキューにWM_KEYDOWN/WM_KEYUP等のキーボード系メッセージを積んだり、keybd_event/SendInputでキーボードインプットストリ…
ATOKダイレクトでASがサポートされないから無視するなんていうのは、宝の持ち腐れにも程があるってもので、何か作ってみることにした。 しかし、作るからには誰ともかぶってなくて、ありそうでないようなものが作りたい。小一時間思案に耽ってみたところ、「…
エイプリルフールなのは知っていたけど、別にネタを仕込むほどでもなかった。http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/で公開されているActiveScriptRubyのunofficial版を作ってみた。 公式版との違いは、 ruby 1.9.1-p0 Visual C++ 20…
ATOK2009を手に入れたので、試したくてたまらなかったATOKダイレクトプラグインであるATOKダイレクト Social IME変換プラグイン公開 - t_daichoの日記(ruby 1.9.1での実行はruby 1.9 でATOKダイレクトを使う - p-araiの日記にある対策が必要)を導入してみた…
詳細にトレースしたりして必死にデバッグしてたら,Absの部分適用でLの引数に配列じゃない物を記述していることに気づいてしまった.こ,これは恥ずかしすぎる…… wwWWwWWWwvwWWwwWwwwWwwwwwWwwwwwwww T = λfx.f(fx) λx.(T T T) Out w ==> wwwwwwwwwwwwwwww …
本当に出来ているのかどうか怪しいんだけど,Grass処理系(?)をLimeChatスクリプトとして使えるようにしてみた. function grass(code, inputHandler, outputHandler){ // List function N(v, n) { this.n = n; this.v = v; } N.prototype.i = function(s)…
ちょこっとGrassが話題になったので,ふと,JScriptで実装してみたら面白くね?と思った.しかし,それが泥沼の始まりだった…… 最適化とか考えずにガリガリ書き進んでいった結果, function grass(code){ // List function N(v, n) { this.n = n; this.v = v…
前に上げたスクリプトは POE 1.0003 を想定したワークアラウンドを入れることで,上手く動くようにしていた.今日,久方振りにActivePerlを新調したところ,POE 1.0002に下げられてしまった.CPANで無理に入れた物体なので,下げられるのは仕方ない.まあ,k…
LimeChatとkeitaircで接続を共有するために,LimeChat->IRC ProxyIRC Proxy経由で接続しなければならないのがうっとうしい.そこで,折角Orthoclaseでperlが動くんだから,keitaircをLimeChatに寄生させればいいんじゃないかと思った. 早速ちょこちょことポ…
http://d.hatena.ne.jp/anon_193/20090301/1235886634の続き. Download (from Mediafire) keitaircをポーティングするために新たな拡張を施した.どんなのかは前のエントリーの通り. あと,今回作った keitairc.js 0.01 for LimeChat. Download (from Med…
ary = [ "aaa{{bbb}}ccc" * 5] ary += str.partition(/\{\{.+?\}\}/) until (str = ary.pop).empty? p ary みたいに書いたらest.rb:11:in `': undefined local variable or method `str' for main:Object (NameError)て怒られた。 http://d.hatena.ne.jp/dic…
久方振りにnadokaを使おうと思ったら,1.9.1で文字列の扱いが変わったおかげで,そのままではまったく動かないようになっていた.エラーが一個出るたびにencodeか,force_encodingで置き換えていく簡単な作業です・・・どう考えても修正箇所多すぎで死亡フラ…
RubyScriptをOrthoclaseで動かしたいので,もっともっとがんばってみた. イベントの接続は@LimeExt.ConnectObject(@event, "event_")で接続すればいいことに気付いたけど,今度はRubyScriptのディスパッチャが転けた. デバッガで原因を探ってみると,どう…
http://d.hatena.ne.jp/anon_193/20090227/1235708463の続き. Download (from Mediafire) 今度はPHPScriptに暫定対応した.Microsoft製以外のスクリプトエンジンは,どいつもこいつもバグワールドで挙動がおかしいので,JScript/VBScript以外を使う場合,最…
PHPScriptをどうしても動かしたいので,もっとがんばってみた. デバッグデータベースを置いてちょこちょこデバッグしてみると,案の定、GlobalInterfaceTableをScriptSiteのスレッド間共有に使っていて死んでいた.RubyScriptと同じ原因だ・・・ ここで詰ん…
結論・・・イベント周りがIEべったりすぎて嘆くしかなかった.AddScriptlet呼び出し前提のイベント登録とかどういうことなの・・・ParseScriptTextだけだとイベント発火が門前払いという素敵仕様.これをどうにかするには,RubyScriptのソースコードそのもの…
http://d.hatena.ne.jp/anon_193/20090131/1233376352の続き. Download (from Mediafire) 今度は言語選択が出来る機能を付けた. 標準の環境ならVBScriptの選択が,ActivePerlが入っているならPerlScriptの選択が出来るようになる. ほかのスクリプトエンジ…
IUnknownの実装周りをテンプレートメタプログラミングしている所為で非常にデバッグしにくいんだけど,超がんばった. 循環参照に陥っているところは全て取り除いて,JScript, VBScriptではきっちりオブジェクトが解放される実装に書き換えたけど,PythonScr…
もうちょっとがんばってみたところ,PythonScriptがSetScriptSiteで拗ねる理由を知ることが出来た. lib/site-packages/win32comext/axscript/client/framework.pyにあるこのコード def write(self,message): try: self.redir.write(message) except: win32a…
うごかないスクリプトエンジンが諦められないので、テストプログラム用意してがんばってみた. まず、PythonScriptが吹っ飛ぶ原因を探ってみたところ、なんとGetTypeInfoでAddRefしてないのが原因だった.そりゃ吹っ飛んでも仕方ない.ひどい濡れ衣だったねP…
今の実装状態だと,どれくらい動くのか気になるので確かめてみた. JScript これに最適化されているのだから当たり前に動く. VBScript logをLog(対数関数)に取られてしまう以外はしっかりと動く.事前バインディングのハンドラは例によって,event_プレフ…
JScriptだけじゃなくて,VBScriptとか,PHPScript, RubyScript, PerlScript, Haskell Script etc.なんかも使えたら楽しそうじゃないか・・・?と思ったので,早速実装を始めた. 言語種別をソースコードから読み取るとなると,IActiveScriptParse::ParseScri…
先日,組み込み系でスクリプト言語エンジンを組み込むこと(だじゃれではない)に関する話題があって,議論に値するネタが幾つかあったおかげで少々盛り上がった.たとえば,エンジンがどのくらい標準関数に依存しているのか,エンジンのライセンスの問題等々…
PHP+SmartIRCでIRCボットを書きたいというお話で,SmartIRCなるライブラリの存在を始めて知った.他の言語にある,IRCクライアントライブラリは幾つか知っているけど,それらも分かるのは名前ぐらいで,使い方はさっぱりだ. それならこれを機に使い方(言語…
メモ化された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>
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 @ Visual C++ 2005 - めらんこーど地階)の記録を参考に作業。こうやってやったことを残しておくと、あとで助かるなぁ。 ビルド時で変わったことと言えば、RMコマンドの設定バグってるのが直ったことぐらい・・・? 相変わらずmkexports…
[ruby-list:45836] [ANN] Ruby 1.9.1リリース あとでコンパイルする。