hex

本日のバイナリエディタ

hex

Qt Designerを使ってGUIフォーム(Window = Widget)を作成。タブに対応。 これからファイルメニュー、ツールバー、スクロールバーなどの実装を。1つのドキュメント(ファイル)に対して複数のView(Single Doc Multi View)にも後ほど対応する。

バイナリエディタ進捗

hex

アドレスビューのカラム(上側)の実装完了 カーソルの描画はレイヤー(childのWidget)で表示

今日の実装

hex

ビューのカーソル同期(slot/signal) ビューの再描画イベントの送受信(slot/signal) アドレスビューの左側実装

最近バイナリエディタの開発を再開したらしい

hex

先月くらいから開発再開してコード書いています。最近の悩みは、複数のViewでのカーソル位置の同期、ドキュメント変更時のイベントの粒度(Model-Viewアーキテクチャなので)、画面再描画する時の再描画範囲の最適化などなど。キーボード入力が出来たら、最…

期間までにリリースはしたい

hex

ほとんど開発は進んでいませんが、夏の終わりにはα版くらいでリリースしたいですね。

開発の記録

hex

土曜の夜(23:30頃)からバイナリエディタの実装の続きを始める ・範囲選択実装の続き ・マウスでのドラッグに対応+色分けのバグフィクス → 色分け機能に根本的な設計ミスがあったため無効化。マウスイベントの処理を進める。 ・選択ぐりぐりするともたつく…

twittter log: UIとコンピュータ

hex

twitterのログをぺたり。 16:40:08 講義から戻ったー 講義中はずっとGUIにおけるソフトウェアの操作性、視覚ベースのユーザ支援、キーマップやショートカットキーにおける機能の操作性うんたらについて考えていた 16:42:19 やっぱりコンピュータ使うとき、デ…

Visual Reverse-Engineering

Visual Programmingじゃないですが、Visual Reverse-Code−Engineeringなツールとかあったらかっこいいし、便利そうだよね、って思って幾つかアイディアをバインダーにメモメモ。Visualと言っても何をどこまで視覚化できるようにするかってのがミソなのと、そ…

バイナリエディタ進捗具合

hex

MacBook買ったので〜という流れでQtを使う案もありましたが、やっぱりWin32ネイティブでまず作成します。Visual Studio 2008のSP1がリリースされたので、最終的なGUIにはFloating toolbarとかあったらいいですね。AbiWord由来のPieceTable実装を利用させても…

QtとGPLにまつわるライセンスについて一考

hex

ちょっとした考え事をチラシの裏的に書きつづってみる。 バイナリエディタをマルチプラットフォームで利用できるようにしたいとなると、Qtというライブラリの選択がある。しかし、非商用で利用する場合はライセンスがGPLとなってしまう。できればGPL汚染は勘…

開発チャット

hex

IRCの #pheasant@irc.freenode.net(文字コードはUTF8)にてバイナリエディタ開発用のチャンネルを用意しました。私は(正確にはボットが nick:obfuscation)常駐し、ビュー開発を担当してもらっているyaruharu君もたまにいるので、早く開発しろとせっつきた…

リバースエンジニアはモテるか否か?

謎に包まれたプログラムを明らかにするリバースエンジニアリングはかっこいいので、モテると思います! しかし、自分が作ったソフトウェアが解析されて脆弱性を発見された上に、更にケチをつけられることを考えると切ないものがあります。まあ、脆弱性・バグ…

UIの実装とかバイナリデータの可視化どうしよう><

バイナリエディタ実装の、PieceTableクラスが腐ってる・・・のは置いておきまして、UI関連の設計を1ヶ月ほど保留にしています。ファイルフォーマットの構造体に従って、ファイルをグラフィカルに表示できるとcoolなんですが、具体的なアイディアが少ししかあ…

テストコードほぼ完成っと

hex

ドキュメントクラスのInsert/Delete/Replace関数それぞれのテストが完了。見つけたバグは3つほど。再帰を使ってパターンを列挙している。コードのイメージとしては次のような感じ。パターンを列挙しつつ、状態保存→Insert→比較→再帰呼び出し→返ってきたら状…

内部コード用Fuzzer書いた

hex

プロジェクトを止めたままにするのもよくないので、やっとこさテストコードを書き始めたところ。ドキュメントインターフェースクラス用のFuzzerをとりあえず作成。とりあえず全パターンの検査・・・っと思ったらNULLチェックが抜けていた。急いで修正。コー…

ドキュメントクラス作成中

hex

久しぶりにコードが書け、Undo/Redoの実装が「とりあえず」完了したので、次はユニットテスト。ついでなので、ドキュメントクラス用のFuzzerも作ってみたいところです。

エディタのUndo/Redoにスナップショットはないのか?

hex

バイナリエディタに実装するとは限らず、テキストエディタのUndo/Redoにスナップショットのような機能があったらいいなと思ったことがないでしょうか? Visual Studioでコードを書いて、数十回Undoしてコードを見直し、そしてRedoで最新の状態に戻そうとした…

「上書き保存」できないバイナリエディタに意味はあるか

「保存するとUndo/Redoがクリアされる」という仕様は、どう考えても使いにくい。普通のファイル編集について想像するから、この仕様だと使いづらいと思えるのかもしれない。 それなら逆に「普通に保存できないバイナリエディタ」について考えてみよう。「普…

PieceTableをUndo/Redoの関係

hex

ここ数日、ドキュメントクラスのファイル保存と、Undo/Redoの設計・実装について考え中。FileMappingとPieceTableを使ったファイルの読み込みとUndo/Redoの実装は簡単そう。Undo/Redoで扱うのは、削除か挿入か・位置・長さだけで済み、挿入・削除ごとにデー…

耐久プログラミング, PieceTable実装OK

hex

夏休みに入ったので、友人と一緒に「耐久プログラミング」というものをやっている。48時間プログラムを組んだり、何か作ったり好きなことをするというもの。ルールはかなり緩やかで、仮眠OK、飯・風呂等の理由で帰ってもよい。まぁ、とにかくまったりとコー…

最近の作業

hex

PieceTableクラスのGet,Deleteの実装してました。Get関数をテストすると、長さは正しいのに比較部分で失敗が。テストコードで、PieceTable::Getで取得したデータにNULL文字が含まれないにも関わらず、比較にstd::string::compareを使っていたのが問題でした…

PieceTable実装の真っ只中

ここ一週間ほど、バイナリエディタで使える状態ではなく、汎用性のあるC++向け「テンプレートコンテナクラス」としてのPieceTableを実装中です。相変わらず忙しい&時間を無駄しすぎているせいで、ちょっとずつしか進んでおりませんが(苦笑)。 今日は単体…

というかPieceTable

hex

巨大なファイルの編集とパフォーマンスについてを前回書きましたが、この構造ってPieceTableでしたorz 詳しくは、INABAさんの日記の方をご覧ください。 http://www.kmonos.net/wlog/39.php http://www.kmonos.net/wlog/40.php

巨大なファイルの編集

hex

バイナリエディタ開発関連のお話です([hex]カテゴリ)。さて、今回はファイルの編集と、巨大なファイル編集時のことについて。 http://www.catch22.net/tuts/bigmem01.asp http://www.catch22.net/tuts/bigmem02.asp 読まなくてもわかるように簡単に説明し…