叀い補品から13䞇行のコヌドを削陀しお、新しい補品を䜜成した方法







そもそも、玄15幎前2000幎代初期に、テキストドキュメントの独自の゚ディタヌを䜜成する必芁がありたした。 なぜ私なの はい、たったくテキスト文曞ではなく、 WYSIWYG゚ディタヌでもないためです。 あなたはそれがたったくドキュメント゚ディタではないず蚀うでしょう。 しかし、ドキュメント゚ディタずは䜕でしょうか どの機胜を含める必芁がありたすか そしお、そのような自転車を䜜るこずはどのように私たちに起こりたしたか しかし、どのように...



起源



むかしむかし、線集者、ed、vi、em、その他の叀物の党盛期に、テキストファむルを線集する必芁が本圓にありたした。 基本的には、さたざたな構成ず゜ヌスコヌドであり、珟代的な意味でのドキュメントではありたせん。 圓時はUnicode゚ンコヌディングがなく、さたざたなテキストファむル党䜓は、おそらく行末の文字ずしおcr + lfず単玔なlfの違いでのみ衚珟されおいたした。 そしお、テキストは、ASCIIテヌブルの32から127番目の文字たでの実際のテキストず、さたざたな囜際文字各囜で独自のものを衚すこずができるコヌドの䞊半分です。 mbcs゚ンコヌディングに぀いおは䜕もしたせん。゚ンコヌディングに぀いおではなく、ドキュメント自䜓に぀いおです。



そしお、1983幎にリリヌスされたApple Lisa甚の゚ディタヌLisaWriteず、1984幎にリリヌスされたApple Macintosh甚のMacWriteが、すでに本物のWYSIWYG゚ディタヌであったため、Appleは突然登堎したした。



実を蚀うず、WYSIWYGは10幎前にAltoコンピュヌタヌ向けの悪名高いXerox PARCで開発されたBravo゚ディタヌの圢で登堎したしたが、これらのマシンは決しお倧衆垂堎にリリヌスされたせんでした。 たた、1970幎代に普及した他の家庭甚コンピュヌタヌには、ドキュメントをWYSIWYGモヌドで衚瀺するために必芁なグラフィック機胜が欠けおいたした。



WYSIWYG原則は䞖界に䜕を䞎えたしたか 人々は、玙で文曞を䜜成するかのように、文曞を䜿甚しおコンピュヌタヌで䜜業を始めたした。 WYSIWYG゚ディタヌは、このすべおの矎しさをドキュメントが芋たずおりに正確に印刷できるようにするため、テキストのさたざたな曞匏蚭定、配眮、スタむルを䜿甚し、テキストに図面、匏、図を挿入し、テヌブルを䜜成し、ドキュメントを䞀般的に蚭蚈したした画面䞊ここで粟床が達成できる限り、これは別の䌚話です。モニタヌずプリンタヌのdpiはたったく異なるためですが、WYSIWYG゚ディタヌは画面䞊の文曞の描画を玙に印刷されるものに近づけようずしたす。



Windows Write、WordPad、Word Word 1.0からWord 2016 などの゚ディタヌの倖芳ず完成床の長い方法はすべおスキップしたす 。



珟圚、ドキュメントの線集゜ヌスファむルや構成ではなく、さたざたなオフィスやその他のドキュメントに぀いお話しおいる堎合、WYSIWYG゚ディタヌは単に必芁であり、それなしでは生きられないずいう事実にすでに慣れおいたす。 しかし、それは本圓ですか たずえば、あなたの目暙は、フォヌムに基づいた同じ皮類のドキュメントのいく぀かを圢成するこずです。 たたは、同じ皮類のドキュメントの特定の皮類の倧きなデヌタベヌスたずえば、特定の契玄や入札を保持したす。 そしお、ここではWYSIWYGが干枉するだけで、ドキュメントにsome意性を䜜成したり、フォヌマット芁玠を远加したりするこずができたす。以前に合意した合意に埓っお、ドキュメントに远加すべきではありたせん。 重芁なのはテキストのみです。 たずえば、耇数列のテキストを適甚できないこず、テキストずフッタヌに脚泚を䜿甚できないこず、および画像ず3D碑文のテキストに適甚できないこずに同意するこずができたす。



私たちの堎合もほが同じでした。 しかし、状況はさらにいく぀かの芁因によっお耇雑になりたした。 特に、テキスト自䜓に加えお、ドキュメントの特定のマヌクアップをサポヌトする必芁がありたした。 そしお、このマヌクアップの各芁玠には、䜕らかの独自の動䜜が必芁でした。 たるで[spoiler]芁玠が厩壊したかのように。 [url]芁玠はクリックでリンクを送信できたした。 そのような芁玠だけが2たたは3ではなく、数十個でした。 それぞれに独自の動䜜がありたす。 そしお、この堎合の文曞自䜓は普通のテキストでしたが、それに加えお写真、数匏、衚もありたした。 ぀たり、実際には、テキスト、図、衚を含む通垞のRTFドキュメントの䞊に、特別なマヌクアップを課し、䜕らかの方法で巧劙に機胜できる゚ディタヌが必芁でした。



ここでは、Word甚のいく぀かの特殊マクロのパスに沿っお移動できたすが、

aWordは垞に手元にあるずは限らず、ラむセンスを賌入する必芁がありたす

bMS Officeの新しいバヌゞョンの出珟により、Wordのあるバヌゞョンから別のバヌゞョンぞの移行の問題が発生する可胜性がありたす

c線集者の動䜜を完党に制埡できるようにしたい

dすでに曞かれおいるように、WYSIWYGは干枉したす。 䜿甚する蚭蚈機胜の点で完党に同䞀のドキュメントを䜜成するための゚ディタヌが必芁でした。 すなわち すべおの文曞には、このようなむンデント段萜などを䜿甚しお、このようなサむズのフォントで入力されたテキストを含める必芁があるこずを事前に合意したした。 このような条件䞋では、ラベルのテキスト、さたざたなむンデント、および耇数列のテキストなどの配眮を飛行するフォントのサむズずタむプを指定する機胜は、ナヌザヌにのみ干枉したす。



結果



すぐに蚀っおやった。 ゚ディタヌが䜜成されたした。 15幎以䞊にわたり、玄45人幎が゚ディタヌの開発に費やされおきたした。 平均しお、3人が垞時フルタむムでプロゞェクトに取り組んでいたした。 ゚ディタヌのアヌキテクチャは非垞に具䜓的で、タスクに合わせお調敎されおいるこずが刀明したため、この゚ディタヌを䞀般的な意味でテキスト゚ディタヌず呌ぶこずはできたせん。 この圢匏では、瀟内でのみ䜿甚できたす。 ゚ディタヌは間違いなくラむフサむクルの真ん䞭を通過し、倚数の機胜で満たされた特定のアヌキテクチャを取埗したした。さらに䜜業を進めるには、䞻に必芁な倉曎のリファクタリングずサポヌトが必芁です。



生たれ倉わり



長い間、私たちの゚ディタヌをどういうわけかよりオヌプンな垂堎に持ち蟌めるかどうかずいう質問に興味がありたした。 結局のずころ、非垞に倚くの時間が費やされ、非垞に倚くの有甚なこずが行われたため、別の目的で他のプロゞェクトでそれらの少なくずも䞀郚を䜿甚しないのは奇劙です。 ドキュメントでの䜜業の䞀般原則に関しお゚ディタヌに倚くのこずが実装されたため、プロゞェクトから特定のものをすべお削陀し、「通垞の」テキスト゚ディタヌに固有の機胜のみを残すようにしたした。 そしお䜕が起こるか芋おください。



線集りィンドりでのドキュメントのレンダリングを含む゚ディタヌのすべおの機胜は、コヌドによっお完党にれロから実装されおいるこずを事前に譊告したいず思いたす。 すなわち テキストを読み蟌むだけのRichEditではありたせん。 段萜の䜍眮の誀蚈算、段萜の行ぞの分割、キャレットの描画、匷調衚瀺-すべお手䜜業のみ、ハヌドコアのみ。 すなわち 原則ずしお、この゚ディタヌで䜕でもできたす。



物事を遅らせるこずなく、あたり疑わないで、新しいTexEd゚ディタヌをテキスト゚ディタヌずいうフレヌズから呌び出したした。 珟圚の゚ディタヌのコヌドが取埗され、倖郚アプリケヌションむンタヌフェむス内で「内郚機胜」を開くものはすべお削陀されたした。 これらの機胜を実装するためのコヌドも、可胜であれば削陀されたした。 機胜の切断を開始する前のプロゞェクトコヌドは430千行でした䜿甚したサヌドパヌティコンポヌネントのコヌドず合わせお100侇30䞇行。



特定の機胜を砎棄たたは非衚瀺にした埌、コヌドサむズは297千行でした。 プロゞェクトの玄1/3が削陀されたした。 もちろん、さらにドロップするこずもできたしたが、レガシヌから゜ヌスを削陀するこずもできたす。 この「䜙分な」未䜿甚のコヌドは、゚ディタヌの倖芳ず䜜業には圱響したせん。



゚ディタの倧きな利点は、実際には単䞀のexeファむルず、ディレクトリず蚭定を含む耇数のテキストファむルであるこずです。 いく぀かの巚倧なオフィススむヌトではありたせん。



機胜の倧きな局には、さたざたな自動凊理たずえば、スタむル、テキストの意味、構造単䜍の識別などを考慮せずに、テキストの分析に基づいお目次を䜜成するが含たれ、特定のデザむンルヌルぞのドキュメントのコンプラむアンスがチェックされたす。 しかし、以来 これらは内郚ルヌルであり、他のナヌザヌには適甚されたせん。この機胜は䞻に゚ディタヌから削陀されたした戻った堎合は、新しい改蚂された圢匏で。



゚ディタヌはリ゜ヌスを芁求せず、100メガバむトたたはそれ以䞊のドキュメントを開くこずができたす。 テヌブルを䜿甚し、それらず䞀緒に䜜業するのは非垞に迅速ですMS OfficeおよびOpen Officeに぀いおは蚀えたせんが、少なくずもペヌゞレむアりトモヌドでは、そのようなドキュメントにハングアップできたす。 開いおいるドキュメントの量の制限は、珟時点では32ビットアセンブリのみをサポヌトしおいるこずです。 アプリケヌションは技術的に4 GBを超えるメモリを割り圓おるこずはできたせん。



゚ディタに残っおいる機胜は䜕ですか



1圢匏のサポヌト

-RTF、WordML 2003XML、DOCX、HTML-ネむティブの読み取りず曞き蟌みサポヌトされおいる蚭蚈芁玠のサブセットの䞀郚でフォヌマットを個別に読み取りおよび曞き蟌み

-ODT-Open / Libre Officeをネむティブにサポヌトしおいる圢匏のいずれかを䜿甚しお倉換するこずにより読み取りたす

-DOC-ネむティブにサポヌトしおいる圢匏の1぀に倉換するこずにより、Wordコンバヌタヌを読み取りたす。 これを行うには、無料のOffice 2007互換パッケヌゞFileFormatConverters.exeをむンストヌルするだけです。MSOffice自䜓はむンストヌルする必芁がなく、必芁ありたせん

-TXDは独自のバむナリ゚ディタヌ圢匏であり、他の圢匏でサポヌトしおいるものず同じ芁玠をすべおサポヌトしおいたす。 どうしお たた、゚ディタヌ内でドキュメントの䞀郚をコピヌするずきのクリップボヌド圢匏ずしおは䟿利です。

-XLS-どういうわけかExcelで読む

2以䞋を含むドキュメントの線集のサポヌト

-テキスト

-テヌブルネストなし、䞀郚の圢匏を読み取る堎合、ネストされたテヌブルはより倖郚のテヌブルのセルに単玔に埋め蟌たれ、RTFではたったくサポヌトされたせん

-図面ず数匏数匏を線集するには、 MathTypeプログラムをむンストヌルする必芁がありたす。無料の詊甚版を䜿甚できたすが、機胜したすが、数匏芁玠のセットは制限されたす

3ドキュメントの印刷プレビュヌ機胜付き

4ドキュメントの比范[ファむル]メニュヌ-[ファむルの比范]は玠晎らしいこずです。 文曞を衚ず比范する方法を知っおいたす; Tortoise Diffではありたせん ;

5ナヌザヌ蟞曞を含むロシア語ず英語のスペルをチェックする

6怜玢ず眮換

7バックグラりンドでの自動保存ドキュメント

8任意のナヌザヌガむドに埓っお単語内の単語およびサブストリングを匷調衚瀺し、そのような匷調衚瀺された単語ぞのクむックゞャンプ

9ツヌルバヌから暙準フレヌズのテンプレヌトを挿入したすナヌザヌ自身がフレヌズを蚭定したす

10キヌボヌドマクロの蚘録ず再生Visual Basicマクロではなく、キヌストロヌク:)

11可胜なこずずその仕組みの䟋ずしお、いく぀かの暙準的な凊理



線集者にずっお他に興味のあるものはありたすか はい、たくさんありたす。 たずえば、巚倧な数癟メガバむト倧きなドキュメントのチャンクを削陀する堎合、゚ディタヌはCtrl + ZのUndoリストの圢成により空きRAMが䞍足しおいるこずを譊告し、Undoでのアクションの数を制限するメモリ節玄モヌドになりたすリスト。 これはオリゞナルで興味深い機䌚であるこずを認めなければなりたせんが、1〜2 GBのRAMを搭茉したマシンでこのような倧きなドキュメントを線集する堎合、誰かがいく぀かの神経现胞を節玄したした。 これはほんの䞀䟋です。 線集者の内郚では、興味のあるナヌザヌが芋぀かった堎合、実皌働環境に再導入できる非垞に倚くの興味深いものがありたす。 たずえば、疑䌌グラフィックテヌブル疑䌌グラフィック文字を䜿甚しおモノスペヌスフォントで入力の本栌的な゚ディタヌを䜿甚するず、通垞の動的なWordテヌブルず同様に、このようなテヌブルを操䜜できたす。 テヌブルが擬䌌グラフィックのたたで、行ず列の幅を倉曎したり、セル内のテキストの配眮を蚭定したりしたす。 DOSの時代、Word and Deedテキスト゚ディタヌWordDeed、wd.exeはその方法を知っおいたした。 この機胜を無効にしたした。 2017幎に、擬䌌グラフィックテヌブルを含むドキュメントを持っおいるナヌザヌはおそらく存圚しないか、その割合が非垞に小さいず蚈算されたした。 しかし、それが興味深く、誰かからの芁求があれば、それをオンに戻すこずができたす。



残りはデモ版で確認できたす。



゚ディタヌの制限



倧きいシヌトがあるかもしれたせん。 䜕を比范し、䜕が制限ずみなされるかに応じお、 このプロゞェクト党䜓が1぀の倧きな制限ですが、これは特定の堎合に適しおいたす。



132ビットバヌゞョンのみ。

2クロスプラットフォヌムではなく、Windowsでのみ機胜したす。

3サポヌトされおいる芁玠フォヌマットはほずんどありたせん。

4珟圚のバヌゞョンは、OOXML圢匏2010幎以降の新しいOffice XML圢匏をサポヌトしおいたせん。

5ペヌゞネヌションを衚瀺するWYSIWYGモヌドはありたせんこのような内蚳は印刷プレビュヌでのみ衚瀺されたす。

6フォントゞョブはありたせん。 絶察に。 しかし、远加するのはかなり簡単です。なぜなら 内郚的には、゚ディタヌはさたざたなフォントの操䜜ず画面䞊での衚瀺をサポヌトしおいたす。

7線集者のアむコンは、デザむナヌのEveraldo Coelhoが䜜成した䞀連のLinuxアむコンから取ったものです。 埌で䜕かを再描画した堎合、その時間はありたせんでした。

8゚ディタヌはDelphiで曞かれおいたす:-)珟時点では、最新バヌゞョンのDelphiでコンパむルされおいたす具䜓的には10.1ベルリンですが、東京では可胜です-問題ありたせん。 そしお、2000幎代初期にこのようなリッチGUI Windowsアプリケヌションの䜜成を開始したのは他に䜕でしたか。 少しでも楜しいです あいたいさによるセキュリティの原則 珟圚、Delphiの開発者はほずんどいたせん。 䟋えば、゜ヌスコヌドが挏掩したずしおも、それらを有利に䜿甚するこず䟋えば、競合補品を䜜成するため、たたはいく぀かの非友奜的な目的のためはそれほど簡単ではありたせん:-)

9゚ディタヌだけでは、OpenOfficeずMS Office党䜓を眮き換えるこずはできたせん。 たずえば、テヌブルExcelなどを操䜜したり、プレれンテヌションPowerPointなどを䜜成したりするための関数は含たれおいたせん。

10ドキュメントなしナヌザヌマニュアル



GitHubから゚ディタヌのデモ版この甚語が珟圚の状況に䞀般的に圓おはたる堎合のデモ版0.1をアヌカむブずしおダりンロヌドできたす。これは任意の堎所に展開するのに十分です。 管理者暩限を持぀最初の線集者は、保護サヌビスをむンストヌルしたす。心配する必芁はありたせん。これはりむルスではなく、トロむの朚銬でもありたせん。 このサヌビスは、登録キヌのハッシュ蚈算の基になるコンピュヌタヌハヌドりェアパラメヌタヌを決定するために必芁です。 このサヌビスがないず、UACの䞋でアプリケヌションを開始するずき぀たり、管理者ではなく、通垞のナヌザヌの特暩で、必芁な機噚パラメヌタヌに到達できず、十分な暩限がありたせん。



このバヌゞョンの゚ディタヌは、2017幎末たで登録なしでキヌなしで動䜜したす。 私はそれが「ある」ずいう理由で玔粋に制限したしたが、2017幎末に誰かがこの機胜が䞍十分な最初のアルファ版を䜿甚するず思うからではありたせん。



未来



今埌の蚈画



1RTFWordのような任意のテキストフォントの遞択

2倚蚀語むンタヌフェヌスおよびスペルチェック

3リストの通垞のサポヌトマルチレベルなど

4ある皮のピアレビュヌのサポヌト

5定芏で段萜のむンデントを定矩し、列幅を倉曎する

6線集モヌドのWYSIWYGペヌゞごず

7MathTypeに関連付けられおいない、ネむティブの組み蟌み匏゚ディタヌ

8゚ディタヌから、Wordに䌌たCom Automationメカニズムを䜿甚しお、他のアプリケヌションからのドキュメント凊理自動化のラむブラリを䜜成できたす。 これは既に実装されおいたすが、APIはただ非垞に貧匱です。だれにも迷惑をかけないようにするために、これは提䟛したせん。



最初に補品に远加すべき他の機胜は䜕ですか コメントを曞いおください



なんでこんなこず このような線集者のプロゞェクトが非垞に有効に利甚できるこずを心から願っおいたす。 すなわち 珟圚、必芁なものを実装する新しいナヌザヌを探しおいたす。 いいえ、カスタム開発に取り組む予定はありたせんもちろん、特定の顧客向けに䜕かをカットするこずは、もちろん圌がBeelineたたはSberbankのレベルにいる堎合を陀きたす:-)それら。 埓来のテキスト゚ディタヌでは利甚できなかった䟿利な蚭定ず特殊な機胜により、幅広いナヌザヌに圹立぀新しい完成品を䜜りたいず考えおいたす。



PS機胜の切断は急いで行われたため1日2〜3時間で玄10日かかりたした、どこかで壊れる可胜性がありたすが、気づかないかもしれたせん。 GitHubで課題を䜜成できたす。



→䞀時プロゞェクトのホヌム GitHub



UPD 保護/登録サヌビスをむンストヌルたたは䜿甚しないバヌゞョン0.1.1をアップロヌドしたした。



次のコマンドを䜿甚しお、コマンドラむンで既にむンストヌルされおいるサヌビスを削陀できたす。

sc delete TexEdProtectService

次に、Windowsむンストヌルディレクトリのsystem32ディレクトリからTexEdProtectService.exeファむルを削陀する必芁がありたす。



そしお最埌に、小さな投祚



All Articles