Hatena::Grouptemtan

End of Dary

2012-08-27

[プログラミング]MSコンパイラに移行計画 00:16  [プログラミング]MSコンパイラに移行計画 - End of Dary を含むブックマーク はてなブックマーク -  [プログラミング]MSコンパイラに移行計画 - End of Dary

自作の Windows 汎用ライブラリ( TTL )は今まで BCC で書いていたのだけど、いい加減他のオープンソースモジュールを使うときとかに不便(それを BCCコンパイルしないといけないし、サポートしてないと結構修正が必要だったり)だったりしたので、開発環境を MSコンパイラで行く事にした。C++11 の機能も魅力的だったのも大きい。

んで、 IDE は VS だと重いのイヤー、好きなエディタ使いたいーということなので簡易 IDE でも作る事にした。それらの

全体の予定とか。順番はおおまかにはコレ。多少前後するかも。

  • TTL 移行
  • MS コンパイラ用の IDE 作成
  • toxyzzy 移行
  • TtSquirrel 制作
  • BMSBEL 移行
  • BMX2WAV 移行
  • BMX2WAV 次期バージョン制作
  • TtWifky 制作

2012-07-29

[]toxyzzy その9 00:56 toxyzzy その9 - End of Dary を含むブックマーク はてなブックマーク - toxyzzy その9 - End of Dary

続き

xyzzy と直接通信する部分は応用が利いて使い回せるように汎用的に作れば便利なのかなーって思ったのだけど、二度と使わない可能性があって無駄な努力になったり、そもそも汎用的にするとちゃんと理解しないと行けないのだけど、そこまで理解していないので今回は toxyzzy 専用に作る事に。

ということで、xyzzycli の xyzzy との通信部分を自分流に書いて 一部を toxyzzy 用に改造して実装して完成。一通りテストしてみて意図した動作になったので非常に満足。xyzzycli を経由するやりかただと toxyzzy を起動した際に必ず xyzzy が前面に出てきてしまうのがあったのだけど、直接 xyzzy と通信する方法にしたのでそれも無くなり本当に不満なし。これはうれしい。

と、ソフトウェア開発の作業はここでは終わらない。リリース用の作業があって、要するにダウンロード用に圧縮ファイルの用意と説明書とか web ページとかいろいろあるわけで、これがとにかくめんどい。まあ人につかってもらうには絶対に必要な作業なんだけどさ…。

ということでリリース作業をいろいろ。今までやってた圧縮ファイルを作るスクリプトが毎回いろいろ適当に作っていたので、その辺をちゃんと枠組みを作ろうとスクリプトを組み始める。ちょっと手間取ったがまあ大まかなのは出来たので今までのとか、今後はこれを使うようにすることに。

とまあリリース作業もそこそこ出来たので明日あたりに正式公開しようかなと思ってまする。

2012-07-28

[]toxyzzy その8 01:34 toxyzzy その8 - End of Dary を含むブックマーク はてなブックマーク - toxyzzy その8 - End of Dary

続き

前回までで下地はできていたので、lisp 側、C 側共に設計した通りにコードを書いていく。まあ、機能的にはシンプルなのでコード量は多くない感じなのですぐに出来るけど、この界隈のプログラミングは慣れていないので、細かい部分で結構思い通りに動かない感じなので適宜修正して詰めていく感じ。手動で動かしながら動作確認していって最終的には予定したとおりに完成。

…だった予定だったのだけど、完成目前でまたもアイデアが湧く。現在は toxyzzy.exe → xyzzycli.exexyzzy.exe といった感じで動作が連係しているのだけど、 toxyzzy.exe が xyzzycli.exe の動作で遣っていることをやれば toxyzzy.exexyzzy.exe という一番シンプルな動作になるのではないだろうか?と考えて xyzzycli.exe のソースは公開されてるし、実装可能じゃね?と思い xyzzycli.exe のソースをざっと見ると実装可能っぽい。むむむ、これはこっちで実装できないと完成と呼べねー(自分の矜恃としてね)。

ということで xyzzycli.exe のソースを読んでみて、部分的にコピペして目的の lisp を実行できるかどうか確認。テストプログラムを作ってやってみたら上手くいったので、あとはこの辺のソースを自分流に書いて実装すれば行けるわわわ。ということで自分なりに色々書き始めた感じ。

今日あたりで終わると思ったんだけどね。なかなか終わらないですわねー。

2012-07-25

[]toxyzzy その7 00:40 toxyzzy その7 - End of Dary を含むブックマーク はてなブックマーク - toxyzzy その7 - End of Dary

続き。

コードを書く前段階は大詰め。機能インターフェイスに関しては結局のところ、出力するバッファはどこにするのかということで、ぐるぐるまわって整理して結局以下のような感じに

な感じ。

そのへん固まったので、ちびちびと下地固めのコード書く作業に入る。今日は lisp 側で使う Win32API の定義、指定したストリームハンドルからデータを取り出してバッファに書き込む関数Windowsシステムエラーメッセージ取得用の関数を書いた感じ。lispFFI 関連のチャンクとか勉強したなり。

次は下地ができあがり始めたのでそれらをまとめ上げるメインの関数を書くかなーって感じ。

2012-07-23

[]toxyzzy その6 23:46 toxyzzy その6 - End of Dary を含むブックマーク はてなブックマーク - toxyzzy その6 - End of Dary

続き。

休日中、車で移動中に色々と実装方法について考えていたのだが、元々はデータ出すプロセス匿名パイプ→toxyzzy→名前付きパイプ→xyzzy というデータの流れが当初の考えであった。けれども、このパイプが 2 つあって一度バッファにするの無駄じゃねー?って思うようになって xyzzy に直接この匿名パイプをつなげる事ができればいいんじゃね?って思いついた。確か、ハンドルを他のプロセスにうつす関数が DuplicateHandle ってあって以前それを(別の目的で)使った時にそういう仕様があったのを思い出したので実現できそう。

ということで、実際にテストプログラムを組んでみてやってみたら、ちょいと試行錯誤はあったけど、大体思ったとおりに出来ることが判明。これにより、今まで想定していたのよりもかなり効率や手間自体が良い感じのプログラムになった感じ。この前書いた lisp の半分以上が無駄になったけど、まあいいでしょう。名前付きパイプ用の待ち受け同期やエラー時のめんどくささが無くて、かなりベストに近い実装になると思う。

ということで、あと懸念事項は、toxyzzy から xyzzyプロセスハンドルを取得する方法。ちょこちょこっと調べてみると CreateToolhelp32Snapshot 関数を使うと良いみたいで、Windowsタスクマネージャもこの関数を使ってるっぽい。ちょいとプログラムを組んで使ってみるとあっさりと xyzzyプロセスIDが取得できるみたいなので、これでほぼ懸念事項は無い感じかな。設計に関しても、プログラムの構造自体が相当簡単になったので、もうここらで直接コードを書き始める感じで OK でしょう。それは明日かなー。