アーカイブ

2006年 のアーカイブ

落ちる話からは離れて、いったい今実装している正規表現の何が不満かという話。 あたしゃ正規表現自体普段使わないし詳しくないので、一口に正規表現と言っているが、 実際はどんな書き方が通るのかが、物によってもバージョンによっても違うらしい。 今使ってるTRegExprが、一般に正規表現と言われるものに比べて、 十分な実装がされているのかされていないのか、その判断すら難しいほど無知なんだが、 ウチにある正規表現について書かれた本を見ると、ここが…続きを読む

さて、8000文字テストで落ちないエディタを三つあげたわけだが、 その三つとも、80000文字テストを乗り切ることは出来なかった。 EmEditorの限界は74483文字で、それ以上だと「見つかりませんでした」が出るか、 条件は不明だが「Too Big」とかなんとかっていうダイアログが出るかする。 落ちるよりはヒットしない方が全然マシ。 萌ディタは、80000文字の貼り付けが出来なかくて「がっかり」ダイアログ。 仕方ないので8000文字…続きを読む

最初は、ヘルプに遅いと書いてあるから速くできるんじゃないかとか、 まだ対応してない物を自前で対応できないかとか、 そういうつもりで正規表現ライブラリの中身を検証していたはずだったが、 途中からはアプリが落ちるか落ちないかの話題に変ってしまったな。 で、一応解決したよ。現在は、8000どころか80000文字でも落ちないようになった。 もちろん、32bitを超える数字のケアはしてないので、そこであふれるだろうが。 32bit以上のケアしない…続きを読む

アプリが落ちる話なので、言いがかりだと言われないように、やり方を明確にしておく。 -(半角のマイナス)を8000文字入力する。コピペでも良い。 なぜ8000かというと、欠陥のあるライブラリでも数百ぐらいだとまだ耐えるからだ。 マイナスには特に意味はないが、改行が含まれると検索出来ない物もあるのでダメ。 で、8000文字入力したら先頭1文字目に入力位置をあわせ、 正規表現で(.|¥n)+を検索する。あえて全角で書いたがもちろん半角で。 す…続きを読む

難しい言葉で言うと再帰。 正規表現の検索では、普通の検索と違ってたくさんの枝分かれが起こる。 その分かれた枝からさらに別の枝分かれが起こる。 全部の枝を検証して最長一致を求めるっていう事をやらせるために、 TRegExprは再帰っていう方法を使っている。 マッチしているかどうかを判断すべきメソッドは、枝分かれ前の現在の枝しか評価せず、 枝分かれの分岐点からは、それぞれの枝について自分と同じ仕事をするメソッドに託す。 それれぞれの枝がさら…続きを読む

ショック。 やっぱり自分で使うライブラリは、ソースコード全部把握してから使わなきゃダメね。 正規表現では+や*とかを使って、ものすごく長い範囲にヒットさせる事が出来るわけだが、 TRegExpで、ものすごく長い文字列にヒットさせようとすると、 オーバーフローが起こって何の警告も出さずにアプリが落ちる事がわかった。 たぶんさ、足し算とか引き算とかで桁があふれた場合は警告出るんだろうね。 今回のオーバーフローは、正規表現ライブラリ内のとある…続きを読む

出来れば自分で書きたくないので、利用できる物を探してみるのだが、 Delphiであると言うことがどうしても足かせになる。 .NETの正規表現が逆方向も検索できて大変よろしいのだがな。 ともかく、Delphiってのはユニコードがない時代に作られたものなので、 Delphi向けの正規表現といえばSJISしか検索できないとか日本語ダメとかで、 逆にユニコードの検索が出来るとDelphiから利用できなかったりで、 Delphiかつユニコードな正…続きを読む

ずっと仕様だからしょうがないとか思ってあきらめてた部分は多々あるわけだが、 その仕様だからってのは、仕様じゃなくすることは出来るけど面倒すぎるって事ばかり。 で、たまたまやる気が持続したので、仕様を打破する更新とか続いたわけだ。 もうさ、不満があったら面倒でも修正しちゃうって流れに完全にシフトしちゃったんだけど、 知識不足でどうしても手が出せないのが正規表現部分。 真魚は作者と嫁が使うために作られた物であり、 作者も嫁もよくわかっていな…続きを読む

検索ダイアログからの検索でエディタ画面をスクロールさせられないバグを見つけて修正アップ。 あとはまぁどうでもいいことだが、昨日とおとといだけでもいろいろやったのでそれ。 K2Editorの事を書いたら即日見つかって、しかも過去ログまで見られてコメント書かれたので、 これからはもうちょっと遠慮しながら、書いていこうと思う。 ケンカをする気はないんだぜ、誰でも見れるインターネットで悪く書くつもりはないんだ。 http://wantech.i…続きを読む

作ったものをWebでばらまいていると、ログでアクセス数はわかるけれども、 ダウンロードした人のうちの何人が気に入って使い続けるかとかはわからない。 バージョンアップがあったのをキッカケに初めてDLしてみたが、 なんじゃこりゃ?って感じですぐ削除したり、それも面倒で放置したり。 あるいはメモ帳でいいじゃんってことで存在を忘れちゃったり、 ムカついて一生使わないと決意したり、 便利だなぁとは思ったけど、使う機会がないから一度しか起動してなか…続きを読む

これも、ぎょえの時点から抱えてきた問題である。 キャレットは、テキスト入力位置が点滅するって言う当たり前の機能のことね。 当たり前の機能なのだが、キャレットを持つウィンドウってほとんどOS標準なもので、 自作のエディタウィンドウにキャレットを表示するやり方は解説が少なく手探り状態。 そもそも自前でキャレット表示する必要があるのは、テキストエディタのみだから、 さいわいTEditorというサンプルはある物の、他に常套手段みたいな物をみつけ…続きを読む

やる気がないときは一切やらないのに、いったんハマると抜けられないな。 折り返しやEUC関連の修正と変更は、手作業でばかりやっていたわけではない。 数万の文字についてそれが何語だとか記号だとか、変換先がどこだとか、 人間様が手作業で分類してたら気が遠くなるわけで、 既に他人によって分類されたデータを利用しやすいように編集するという作業は、 それ専用にプログラムを書いてやらせたりとかしているわけだ。 プログラムをプログラムに書かせるみたいな…続きを読む

本当に、見えないところの変更はいっぱいやってるんだが、 それを変更したからって全然ありがたくないようなことばかりなんだよね。 バグは結構あって、気がつき次第直しているんだが、 そのほとんどは、作者だからこそ意図してない動作に気がついているが、 よその人が使う分には仕様かと思ってしまうようなくだらないことで、 だからこそ指摘されて直すのではなく、自分で気がついてばかりいる。 いくら真魚なんて使っている人がほとんどいないっていっても、 わか…続きを読む

折り返しに関してアレコレとやってたら、深みにはまりつつある。 まず、動作確認中にバグを一つ見つけた。 小さい「っ」とか「ゃ」を行頭におけないっていう禁則が動いてなかった。 コレは単に内部で間違って逆の処理をしてただけなので、修正は1秒で終わった。 それは別に良い。 今悩んでいるのは、アポストロフィだ。 そもそも、一つの文字につき、決めなきゃいけないことがどれだけあるかと言うと、 ○色分けで何扱いするか ○折り返すときに切れる場所か ○単…続きを読む

偽パッドはエディタエンジン自体を自作したわけではなく、 OSについてくるリッチエディットをプレーンテキストモードで使い、 OS任せで描画したあとに、マークなどを加筆する形で動作している。 よって、偽パッドが折り返しでどんな処理をしているかは一切わからない。 メモ帳とかなり近い動作をしているわけだが、違う動作もいろいろあるわけで、 メモ帳ではロシア語のワードラップはしないが、リッチエディットはするらしい。 で、真魚は出来ればメモ帳準拠で行…続きを読む