WebViewまたはブラウザがKolibriOSで記述された方法のストーリー

おそらく、KolibriOSに興味のある人なら誰でも、グローバルネットワークにアクセスする唯一の方法が、そして今日、開発者の1人によってゼロから書かれたテキストブラウザであったことを知っているでしょう。 このブラウザはおそらくOSの「サイト」の1つであるため、そのストーリー、つまり、どのように表示され、開発され、近い将来にどのような計画があるのか​​を伝えることにしました。 誰も気にしない、猫へようこそ。



この投稿は、 リージェンシープログラムの著者との緊密なコラボレーションで作成されたため、ナレーションは彼に代わって行われます。



もし私がそんなに素朴な愚か者でなければ、私は決してブラウザを書くことを約束しません! 経験豊富な賢明なプログラマーであるダイアモンド (@grechnik)でさえ、人生ではそのような冒険を決心することはなかったでしょう。 しかし、私は若く、大きな発見の瀬戸際にいると感じました。 まるで全世界が私の足元に横たわっているかのように、これは言葉では言い表せない感覚です。あなたは手を差し伸べるだけで、それはすべてあなたのものです。 なぜなら、私が最初に作成したプログラムはWindowsエクスプローラーのファイルマネージャーであり、2番目のプログラムはブラウザーだったからです。 つまり、「Hello World」は弱虫の活動であり、クールなプログラマーはブラウザーから始めます。



この不幸はすべて、 Kostya VeliantがHTMLビューアーのソースコードをダンプした6か月後の2008年の暖かい7月1日から始まりました。





このプログラムは、CではHTMLビューアと呼ばれていました。 ライブラリの新しいバージョン(menuet.h--→kolibri.h--)にプログラムコードを適応させることから始め、デザインを改善し、コントロールキーのサポートを追加し、ホイールでスクロールしました。 マイナスの-テキストは1文字のウィンドウに表示されました:)



以下は、2008年6月20日にリリースされた最初のバージョン0.00001のスクリーンショットです。





2日後、変更リストにバージョン0.1の更新がありました。







バージョン0.2では、テキストは文字ではなく行で表示されるようになりました。2つ以上の連続するスペースが1つに折りたたまれるようになりました。



プログラムのその後の開発は進化的な方法で行われました。タグのサポートが改善され、「戻る」ボタンが機能し、相対パスのサポート、複数のタグパラメーター、マルチレベルリスト、その他の機能が登場しました。



ちなみに、今回はプログラムがブラウザではなく、HTMLページのみを表示していたため、HTMLv(HTML Viewer)という名前が付けられていました。 ティッピングポイントはバージョン0.48.5で発生しました。



「HTTPCを使用して、html表示を切断し、Webページの下にメモリの動的割り当てをねじ込みました。 このことをHTMLvと組み合わせると、ブラウザーが得られます。



それが行われました。 切り捨てられたHTTPCはファイルダウンローダーと呼ばれ、ダウンローダーに名前が変更されました。 そして、ブラウザがダウンローダーを介してロードしたページの最初のスクリーンショットは次のとおりです。















「HTMLv +ダウンローダー」リンクは非常にうまく機能しました。ページアドレスが「http://」で始まる場合、HTMLvはページアドレスパラメーターでダウンローダーを開始しました。 ダウンローダーがファイルをダウンロードし、HTMLvは謙虚に待機しました。 ダウンローダーが終了すると、ページを「/sys/.download」に保存して閉じました。 HTMLvはこの瞬間を焦がし、保存されたページを開きました。



はい、それは乱暴に松葉杖です、しかし、それは働きました! これは、ハミングバードを使用してインターネットにアクセスし、ほとんど何も読まない最初の実際の方法でした。 それはばかげているように見えるかもしれませんが、それは重要な心理的瞬間でした-今ハミングバードでは、オープンな世界への窓があります。



ハッキングと言えば...ハミングバードに精通している人なら誰でも、フォントに常に問題があることをよく知っています。それらの2つだけがあります:モノスペースと非モノスペース。 90%では、固定幅が使用され、その中の文字サイズは6x9ピクセルです。 太字と斜体はありません。 しかし、それはブラウザにあります! 太字は、X軸に沿って1ピクセルのオフセットで互いに重ねられた2行のテキストです。 最初のバージョンは、バージョン0.63のlevによって実装されました。最初に、プレーンテキストがウィンドウに表示され、次に画面がメモリに表示され、その後、ウィンドウにオフセットが表示されます|||| →//////



以降のバージョンの新参者は、RMBメニューの追加、アンカーのサポート、および画像キャッシュシステムに関係していました。



これは、ブラウザのテストに長い間使用されてきたacid_0.1.htmlテストページのスクリーンショットです。





しかし、遠くに行くほど、私は間違った方向に進んでいるという印象を受けました...





これには何か関係がありました。 記事の冒頭を覚えていますか? 「最初に作成したプログラムはWindowsエクスプローラーのファイルマネージャーであり、2番目はブラウザーでした。 そのため、Eoliteコードは進化的な方法で書き直されました。ステップバイステップ、ピースバイピース、そして時間が経つにつれて、論理的で読みやすくシンプルになりました。 HTMLvコードは、以前のように、構造化されていないままであり、変更および保守が困難でした。また、新しい機能を追加すると、必然的に多くの問題が発生しました。 この瞬間に悲しみに気づき、それを整理することを約束しました。 この難しいタスクの最初の兆候はHTMLv 0.99でした。



HTMLv 0.99はクリップボード描画を実装しました。 つまり 以前、テキストの行は次のように表示されていました。背景色の長方形がウィンドウに描画され、テキストが上に表示されます。 これで、メモリ内に「描画」が作成され、背景色で塗りつぶされ、テキストと線が描画され、最終的にこの非常に完成した描画がウィンドウに表示されました。 これにより速度が向上し、将来的に新しい機会が提供されます。



バージョン0.99.1はタグのサポートを取得し、さらにalign = "center"およびalign = "right"をサポートしました。



バージョン0.99.31では、重大なイベントが発生しました。

このバージョンから、HTMLvでページのコンテンツを表示するWebViewコンポーネントは別のモジュールに移動され、C--の別のプロジェクトの一部としてコンパイルできます。 これは、Lizaメールクライアントでレターの内容を表示し、コードの構造を改善するために行われました。



バージョン1.0ベータ1以降、プログラムはWebViewに名前が変更されました。 これは無駄ではありませんでした。プログラムが過去数バージョンで大幅に成長したためです。 同じバージョンでは、新しい名前に加えて、プログラムは以下を受け取りました。







それ以降のバージョンでは、タグのサポートとバグ修正が改善され、新しい機能が追加されました。 次の重要な変更は、WebView 1.0 Beta 4で行われました。構文の強調表示を使用して、ブラウザでページのソースコードを表示します。





今日の最新バージョンはWebView 1.0 Beta 6.1です。 プログラムを最適化するために重要な作業が行われました。



現在、著者はネットワーク上のページを表示する際にタブの実装と画像の表示に取り組んでいます。



小規模なビデオレビュー:




All Articles