はじめに:

  • なんかもう年かな。日課になって書き続けてるけどなんで書いてるのかわからないし、日記以外の固定ページはいじるのも面倒くさい。古くなったことも直さずそのままにしてるし、それがまずごめんなさい。あととにかく目に止まってごめんなさい。読んでねって他人に言えない。こっそり書いて晒しておきたい。見るな!かまうな!一人にして置いてくれ!

その他:

  • いろいろあったけど、いろいろかまうの面倒くさい。生きるの面倒くさい。遊ぶの面倒くさい。

強力な正規表現#5

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

強力な正規表現#4

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

強力な正規表現#3

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

強力な正規表現#2

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

強力な正規表現

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

真魚2.11

1425 letters | 632 views | コメントする

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

真魚のユーザー総数

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

キャレット問題

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

エンドレス作業

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

真魚2.10

2110 letters | 591 views | コメントする

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

折り返し問題

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

偽パッドで検証

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

メモ帳にはかなわないが

以前も書いたように、より多くのテキストエディタと同じ仕様にすればスタンダードなのではなく、 よりユーザー数の多いソフトと同じ仕様にすればスタンダードである。 たとえWindowsの仕様が間違っていたり使いにくかったりしても、 Windows風にあわせてやればより多くの人が迷わずに使えるようになるわけで、 テキストエディタにおける動作のお手本は、まぎれもなくメモ帳である。 でも、メモ帳と同じにするわけにはいかない部分もあるよと言う話。 ま…続きを読む

CRとLFの問題#2

1708 letters | 608 views | コメントする

TEditorを使っていた真魚1.xxでの仕様は、元のテキストがどの改行を使っていても、 読み込んだ時点でCRLFにしてしまって、EUCで保存するときのみLF統一で、 それ以外の文字コードではCRLFで保存しちゃうということで、 WindowsのエディタなんだからWindows風の処理をするのは当たり前で、 唯一Windows以外で使うことがはっきりしているEUCでのみ、ケアしてあげる方法にしてた。 バージョン2.xxでは、どの改行コー…続きを読む

検索と置換のインターフェイス#4

Owned Window型の検索と置換のダイアログを用意し、 ダイアログ表示中も編集ウィンドウと行ったり来たり出来るようにしたのはいいが、 メモ帳と同様に、「次を検索」しても閉じない検索ダイアログが邪魔で仕方ない。 でもこれがメモ帳での正解なんだから、なじめない自分の体質の方が間違いであり、 ダイアログを閉じて検索するようなオプションはつけない事にする。 置換については、メモ帳の場合、確認しながら連続置換するっていう操作はなくて、 手動…続きを読む