別のオヌプン゜ヌス

それから誰もこれらの蚀葉を䜿わなかった。 その意味さえ知っおいたかどうかはわかりたせん。 プログラママガゞンの2぀の問題の1぀で、初めおりラゞミヌルクラドフのKey Object Libraryプロゞェクト、たたは研究所の前のKOLに぀いお孊びたした。母は、地域のプログラミングコンテストに参加したこずを蚘念しお私に手玙を曞きたした。 蚘事のタむトルは「 プログラムの䞭心に数えられたす」 »それは雑誌の同じ号の䞭で、私が最初に.NETに぀いお孊んだようです。 そしお、リ゜ヌスに察するこのような法倖な芁件は、゜フトりェア業界の巚人がIT業界に察しおほずんど転換したように芋えたした。 Windows 98からのCeleron 433 64MBハヌドりェアの郚門で30分から始たる、同じクラスメヌトの1人の金型で構成される実隓宀の友人を今でも思い出したす。スチヌムタスクがあったずきに同じマシンでDiablo IIをブレヌキなしでプレむしおいたした完了:)



そしお、KOLは異なっおいたした。 圌は、䜜業の速床ず実行可胜ファむルのサむズを匷調したした。 圓時、むンタヌネットからそれぞれ10メガバむトの゜フトりェアアップデヌトをダりンロヌドするのはよくありたせんでした。 Delphiの䞋で曞いた人にずっおは、VCLを䜿甚するか、Delphiの暙準ビゞュアルラむブラリちなみに、そのアヌキテクトも.NETフレヌムワヌクの䜜成に取り組んだを䜿甚するか、Windows APIを䜿甚するかのどちらかを遞択したした。



VCLがひどいこずは蚀うたでもありたせんが、䞭芏暡から倧芏暡のプロゞェクトで玠晎らしい仕事をしたした。 しかし、初心者のプログラマヌが最も曞く小さなナヌティリティの堎合、圌は完党には適合したせんでした。 実行可胜ファむルの最小サむズは、Delphiのバヌゞョンに応じお250〜350 kbでしたが、アプリケヌションにさたざたなコントロヌルが远加されるず非垞に急速に増加したした。 これは、たず第䞀に、各コントロヌルが最倧12個の芪を持぀クラスの高床に分岐したツリヌの結果でした。 さらに、最初のAMD K5-100コンピュヌタヌで空のアプリケヌションを玄0.5秒間起動するこずをVCLに蚱せず、MFC叀いビゞュアルスタゞオの暙準フレヌムワヌク䞊のアプリケヌションはほずんどすぐに開始したした:)



どうやらりラゞミヌル・クラドフは同じ問題を心配し、ある時点でXCLの䜜成に取り掛かりたした。XCLは、VCLず同じ原理に基づいお構築されたラむブラリですが、実行可胜ファむルのサむズを慎重に尊重したす。 しかし、実行可胜ファむルのサむズに圱響を䞎える方法はたくさんあるず蚀わなければなりたせんパッカヌの圢で埌凊理をカりントしたせん。 同じタスクを実行する異なるコヌドは、サむズが倧きく異なる堎合がありたす。 しかし、このアプロヌチの非効率性が明らかになったずき、このプロゞェクトの䜜業は長続きしたせんでした1幎の倉化の歎史から刀断するず。 コンパクトフレヌムワヌクデバむスを再考する新しい詊みはKOLでした。



KOLアプロヌチの䞻な知識は、 1぀の PControlクラスにすべおの暙準コントロヌルの機胜を投獄するこずでした。 䞀芋、1぀のクラスがディレクトリツリヌずボタンを担圓する堎合、これは無意味に思えたすが、機胜したした。 党䜓の秘密は、異なるコントロヌルの異なるデザむナヌにありたした。 すべおのアドオンはMCKでした。これは、出力コヌドを生成しお同様のKOLコンポヌネントを䜜成するVCLのアドオンです。 ぀たり 䜿い慣れたDelphi環境で䜜業しお、フォヌムにボタンを投げるず、同じフォヌムでMCKが生成したコヌドが玔粋なKOLで生成されたす。 同時に、アプリケヌションの開始サむズは20 kbたたは10 kbで、ちょっずしたトリックがあり、「リリヌス」で䜿甚できるDelphiシステムラむブラリを眮き換えたした。



ラむブラリを開発しおいるコミュニティは小さくおも友奜的でした。 もちろん、りラゞミヌルは図曞通の発展に最倧の貢献をしたしたが、他者の圹割を過倧評䟡するこずも困難でした。 ただ完党に環境に優しいこのフレンドリヌなチヌムで、私は研究所の最初のコヌスに参加したした。 メむンフォヌラムは、バグトラックず組み合わせお、サむトdelphimaster.ruにありたした 。 Vladimirによっお䜜成されたナヌティリティを䜿甚しお行われた差分圢匏のコミットは、関心のあるすべおの人によっお行われたした差分の圢匏が他のオヌプン゜ヌスアナログず互換性があるかどうかはただわかりたせん。 新しいバヌゞョンは、氞続的なチヌムリヌダヌによっおリリヌスされたした。 ラむブラリを䜿甚できるラむセンスに぀いおは、これたで議論されおいなかったようです。 公匏サむトには、シンプルでわかりやすい「゜ヌスコヌド付きで無料で提䟛」がありたす。



倚くの補助ラむブラリがフレヌムワヌクの䞋で䜜成および移怍され、すべおが䞻なむデオロギヌに準拠しおいたす。



他のオヌプン゜ヌスプロゞェクトず同様に、誰もが開発䞭に䜕かを芋぀けたした。 りラゞミヌルには、KOLで構築された䞭小芏暡のプロゞェクトが数倚くありたす。 これらおよびその他の小さなアプリケヌションは、 KOL゜フトりェアのペヌゞで芋぀けるこずができたす。 りラゞミヌル自身が繰り返し蚀っおいるように、図曞通は圌の䞻な䜜品で圌によっお積極的に䜿甚されおいたす。



もちろん、私の目暙は完党に異なっおいたした。 私にずっお、これは䞻にプログラミングの緎習でした。 さお、圌らが今蚀うように、ただの楜しみのために。 私は、図曞通にたった4぀の倚かれ少なかれ重芁な貢献をしたした。 私はただ幎衚を芚えおいないので、重芁床の昇順でリストしたす。



GradientPanelコントロヌルの新しいレンダリング


曞き蟌みの理由は、以前の実装の非垞に遅い速床です。 新しい実装では、叀い実装でサポヌトされおいた䞀郚のタむプの塗りがサポヌトされおいないため、デフォルトでは有効になっおいたせん。



TinyPicturesラむブラリ


もちろん、これはKOLで写真をダりンロヌドするための最初のラむブラリでも最高のラむブラリでもありたせんでした。 しかし、それは非垞にトリッキヌでした:) BMP JPGおよびGIF圢匏のダりンロヌダヌは、コンパむルされたビュヌで1キロバむトを超えたせんでした。 これはどのように可胜ですか OLEオヌトメヌション関数OleLoadPictureが䜿甚されたした。 もちろん、これはグラフィック゚ディタヌのオプションではありたせんでした。少なくずもこの機胜は壊れた画像を読み蟌むこずができたせんでした。 しかし、䞀郚のむンストヌラヌにずっおは、それが䞀番でした。 しかし、PNGではすべおがより耇雑でした。 もちろん、私はいく぀かのラむブラリをKOLの基瀎ずしおは取りたせんでしたどのラむブラリも芚えおいたせんが、PNGを自分の頭でテストするための䞀連の写真を芋぀けたしたが、倚くの圢匏は機胜したせんでした。 私はそれを終えなければなりたせんでした。 それから、PNG圢匏がどのような胜力を持ち、どれだけ違うのかを知りたしたこんにちは。



叀い透明システムの亀換


KOLを䜿甚するず、任意の芁玠を任意の圢状で描画できたす。 りラゞミヌルが実珟し、埌で改善したこずは、りィンドりレスコントロヌル぀たり、画像ずラベルを陀いおVCLにはありたせんでした。 私の改善点は次のずおりです。以前は、透明な芁玠は芪によっおそれ自䜓の䞊に描画され、次にそれ自䜓の䞊に描画されおいたした。 透明な芁玠が20個ある堎合、各芁玠はそれ自䜓に芪をペむントしたした。 私の決定は、子芁玠を描画するこずではなく、すべおの子を自分で描画する芪に再描画のリク゚ストを送信するこずでした。 簡単に聞こえたすが、実際には、GDIが意図しおいないこずを実行するのは非垞に困難でした。 それでも、達成された結果は、少なくずも90のケヌスで正垞に機胜し、以前のバヌゞョンよりも高速に機胜したようです。



圧朰制埡


これたで、これは私が単独で完了した最倧のプロゞェクトです。 フォヌラムの誰かが、RB ControlsラむブラリをKOLに移怍するこずで、圌らの成果を䜕らかの圢で瀺したした。 ちなみに、元のRB ControlsはIEの少なくずも1぀のアドオンで䜿甚されおいたすmaxthonらしい。 移怍されたコンポヌネントのデモは次のようになりたした。



画像



同意する、かなりいい。 さらに、優れたカスタマむズオプション。 しかし、これらすべおの速床は驚くほどではありたせんでした コンパむルされた䟋を芋るこずができたす。 私が理解しおいるように、VCLの元のRBも茝いおいたせんでした。 私のさらなる行動を掚枬するのは難しくありたせん。私は、RB Controlsに䌌たコントロヌルのバヌゞョンに取り組み始めたしたが、内郚では完党に異なりたす-GRushコントロヌル。



その結果、いく぀かの皮類の塗り぀ぶし、抌したずきずホバヌしたずきの滑らかな流れ、滑らかな䞞い角hello、css3、圱付きのテキストず画像の䞡方を䜿甚する機胜を備えたコントロヌルが埗られたした。 これらはすべお、圓時のCeleron 500でも非垞に高速に機胜したした。コンポヌネントセットには、Button、Panel、CheckBox、RadioBox、Splitter他の2぀のコンポヌネントのナヌザヌサむズ倉曎甚スラむダヌ、ProgressBarが含たれおいたした。



この䜜業は、最初のプロゞェクトである迅速なグラデヌション塗り぀ぶしに圹立ちたした。 すべおの重芁なセクションは培底的にテストされ、MMXを䜿甚しおアセンブラヌで倚くが蚘述されたした。 チェンゞログのいく぀かのポむントを再読した埌、そのような懐かしさは次のようになりたす。

[+] USE_MEMSAVEMODE ( ). - Paterns , . ( ).

[*] BitmapAntialias4X MMX ( ), XXX_BorderRoundWidth/Height. - GDI, BitmapAntialias2X ( MMX) ( USE_2XAA_INSTEAD_OF_4XAA).






いく぀かの「衝撃的な」事実を瀺したす。

-RB Controlsデモを党画面に展開するず、スプリッタヌを䜿甚しおパネルのサむズを倉曎しおいる間、私から7メヌトル、最倧50メモリヌを消費したす。

-GRushデモは、850 Kbを消費するりィンドりサむズず最倧3 Mbのサむズ倉曎䞭に、ほが同じです コンパむルされた䟋 。 ビデオメモリの倉曎䞍可胜な衚面、倉数-dibに䜿甚する秘secret。

-サむズが1900×1100ピクセルのグラデヌションパネル など で、1秒間に70回のレンダリングが可胜な、䞞みを垯びた4倍のアむロンがけされた各100×100ピクセルの角。 ラりンドコヌナヌなしで最倧320回。 これは単䞀のAthlon 5200コア䞊にありたすが、これはコンポヌネントがサむズ倉曎たたは䜜成されたずきに発生する「れロから」レンダリングであるず蚀わなければなりたせん。 誰もコンポヌネントに觊れない堎合、キャッシュサヌフェスからはるかに速く描画されたす。



別の蚀及は、MCKでコンポヌネントを構成するための芖芚的なりィザヌドです。 前述したように、MCKコンポヌネントは本質的に同じVCLコンポヌネントです。 これはボタンやパネルには倧きな圹割を果たしたせん。䞡方は䞡方のフレヌムワヌクKOLずVCLにありたす。 しかし、VCLにはGRushコントロヌルはありたせんが、倚くの蚭定がありたす。 そしお、本栌的な゚ディタヌを䜜成するには、それらをVCLに移怍する必芁がありたす。 アむデア自䜓は悪くありたせんが、蚭定゚ディタヌのためではありたせん 私は異なった行動をしたした。 私の知る限り、私の前、そしおおそらくその埌、誰もこれをしたせんでした。 ゚ディタヌずしお実際のGRushコントロヌルを備えたKOLフォヌムを起動したした。 ぀たり KOLフォヌムはDelphi環境自䜓で機胜したした。 ゚ディタヌは次のようになりたした。



画像



私がしようずしおいたこずはすべお蚀ったず思う。 ストヌリヌは、昚日のハヌバヌに関するアンケヌト「プログラミングの暩限はありたすか」に觊発されたもので、著者は明らかに隠すこずを奜んでいたした調査は䌝統的に吊定的です、はい。



ずころで、私は1぀の興味深いアヌカむバで叀いftpを芋぀けたした。 自分でやったこずすらわからない。 VCL察KOLおよびVCLRB察KOLGRushに関するいく぀かのデモプロゞェクトがありたす。 プログラムのサむズ、ダりンロヌド速床、メモリ消費量を比范できたす。



All Articles