Свой браузер на C++
От: graviton9  
Дата: 10.12.11 16:11
Оценка: :))) :))) :))) :)
Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Re: Свой браузер на C++
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.12.11 16:15
Оценка: +5 :)
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает.


До пенсии планируешь закончить? Или уже внукам отдашь эстафету?

G> Опыт у меня достаточно.

(1)
G> С чего начать какие функции, апи, книги статии и тгд посоветуйте.
(2)

эти два пункта, мягко говоря, противоречат друг другу.
The God is real, unless declared integer.
Re: Свой браузер на C++
От: minorlogic Украина  
Дата: 10.12.11 16:18
Оценка: +1
Здравствуйте, graviton9, Вы писали:

G>С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


Начни с разработки требований? Кеп передает привет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Свой браузер на C++
От: graviton9  
Дата: 10.12.11 16:44
Оценка: :)
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, graviton9, Вы писали:


G>>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает.


N>До пенсии планируешь закончить? Или уже внукам отдашь эстафету?


G>> Опыт у меня достаточно.

N>(1)
G>> С чего начать какие функции, апи, книги статии и тгд посоветуйте.
N>(2)

N>эти два пункта, мягко говоря, противоречат друг другу.

Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
Re[3]: Свой браузер на C++
От: b-3 Россия  
Дата: 10.12.11 17:02
Оценка:
Здравствуйте, graviton9, Вы писали:

G> имею ввиду простенкий браузер для отображения страниц

Курсовая что ли? Объясните, в чём по вашему разница между "простеньким браузером", который просто отображает страницу, и скажем Хромом, который тоже просто отображает страницу
Забанен с формулировкой "клинический дисидент".
Re[3]: Свой браузер на C++
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.12.11 17:06
Оценка:
Здравствуйте, graviton9, Вы писали:

G>Здравствуйте, netch80, Вы писали:


N>>эти два пункта, мягко говоря, противоречат друг другу.

G>Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
Отображение страниц — это уже не простенько.
Re: Свой браузер на C++
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.12.11 17:10
Оценка: :))
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.

Начать можно покурив травы отсюда
Re: Xronosd
От: Xronosd  
Дата: 10.12.11 19:06
Оценка: 5 (3)
Итак, что нужно
Расскажу что нужно для простого браузера который умеет открывать html и поддерживать css, без js.

Сначала для невизуальной части
Модель хранящую структуру документа:
текст, форматирование(свойства) текста, стили текста
параграфы, форматирование параграфов,
изображения,
нумерованные списки
таблицы, форматирование таблиц, строк, ячеек, бордюров
поддержка блоков

Парсер html я (вручную написанный), который умеет применять стили и форматирование к добавленным в модель объектам, должен переваривать любые плохие html и, c незакрытыми тегами, обрабатывать ошибки (обобый гемор тут с таблицами, потому большинство страниц используют табличную верстку, и если в процессе импорта у вас ошибка в расчете табличного грида(span пропустили) — все разъедится или упадет.
Также нужен парсер <style> секции со стилями и алгоритм применения стилей (не так просто, как звучит).

Чтобы эту радость показать нужно создать лайаут страницы. Тут нужно вам написать форматировщик, умещающий текст на строке , разбивающий на параграфы, учитывающий все отступы, + расчет таблиц, и расположение текста внутри( fit или нефит), потом блоки, обтекание текста..и прочий гемор.
Когда лайаут получен отрисовать его на форме дело техники, там и хиттест, селекшн (а селекшн хитрый, не просто по словам, там еще куча логики при выделении таблиц, ) .
Так, забыл, еще нужно поддержать копирование (алгоритм копирования не так прост) тут нужно еще rtf v1.9 поддержать, прийдется писать экспортёр для него ,и txt все это кладется вместе в клиборд при копировании. (+ экспортёр в html тоже).
Асинхронно грузить картинки.
еще 100500 всего, что я не слёту не вспомню.
Все это нужно чуть взболтать заоптимизить чтобы не лагало. примерно 6 человеколет упорного 8h/d труда. Удачи вам, надеюсь передумали. А если сможите 0.01 ую часть реализовать и не забъёте вы молодец.
Re: Свой браузер на C++
От: romankr  
Дата: 10.12.11 20:01
Оценка: 3 (1)
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


Я рекомендую взяться за Qt. Там есть Webkit, и вам не придется заниматься велосипедостроением. Подробнее, можете подсмотреть здесь — http://doc.qt.nokia.com/latest/qtwebkit-guide.html
http://doc.qt.nokia.com/latest/qwebview.html
Re: Свой браузер на C++
От: Анатолий Широков СССР  
Дата: 10.12.11 21:40
Оценка: 1 (1)
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


Отличный вброс. Но с точки зрения "почему бы и нет", начти с main.
Re: Свой браузер на C++
От: rusted Беларусь  
Дата: 10.12.11 21:56
Оценка: 4 (2) +1
Здравствуйте, graviton9, Вы писали:

G>С чего начать


Первым делом надо придумать красивое название новому браузеру.
Re[2]: Свой браузер на C++
От: dilmah США  
Дата: 10.12.11 22:14
Оценка: 2 (1)
АШ> начти с main.

нужно начать с base/
и своего аллокатора
Re[2]: Свой браузер на C++
От: Vain Россия google.ru
Дата: 11.12.11 02:48
Оценка:
Здравствуйте, rusted, Вы писали:

G>>С чего начать

R>Первым делом надо придумать красивое название новому браузеру.
..и начать продавать его в Android Market'е.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Свой браузер на C++
От: c-smile Канада http://terrainformatica.com
Дата: 11.12.11 04:11
Оценка: 2 (1)
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев.
Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить.
И вообще самое главное — мотивация. Т.е. с самого начала должно быть понимание для чего оно всё
и как ты собираешься свой интерес в проекте поддерживать.
Re[2]: Свой браузер на C++
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.11 05:00
Оценка: 2 (1)
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, graviton9, Вы писали:


CS>В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев.

Я бы не стал ограничивать сверху 18-и месяцами без оговорки относительно поддерживаемых фич HTML/CSS, т.к. уверен, что за 18 человеко-месяцев нереально реализовать все фичи разметки, поддерживаемые современными браузерами в среднем по больнице. Проблема так же в том, что разные браузеры реализуют разные фичи по-разному, и время еще уйдет на то, что бы разобраться, какой вариант реализации той или иной фичи лучше соответствует спецификации (или ее частной трактовке).

CS>Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить.

Вероятность разработать архитекту, которую не придется переделывать, до начала кодирования, человеком, который задает вопрос, с чего начать, да еще и с грузом дополнительных хотелок, ради которых затевается разработка своей разметки — полагаю что она невелика.

CS>И вообще самое главное — мотивация. Т.е. с самого начала должно быть понимание для чего оно всё

CS>и как ты собираешься свой интерес в проекте поддерживать.
Re[2]: Xronosd
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.11 05:27
Оценка: 3 (1)
Здравствуйте, Xronosd, Вы писали:

X>Итак, что нужно

X>Расскажу что нужно для простого браузера который умеет открывать html и поддерживать css, без js.

X>Сначала для невизуальной части

X>Модель хранящую структуру документа:
X>текст, форматирование(свойства) текста, стили текста
X>параграфы, форматирование параграфов,
X>изображения,
X>нумерованные списки
X>таблицы, форматирование таблиц, строк, ячеек, бордюров
X>поддержка блоков
Я бы сюда добавил обработку стилей CSS, как то каскадирование, наследование, assigning.

X>Парсер html я (вручную написанный), который умеет применять стили и форматирование к добавленным в модель объектам, должен переваривать любые плохие html и, c незакрытыми тегами, обрабатывать ошибки (обобый гемор тут с таблицами, потому большинство страниц используют табличную верстку, и если в процессе импорта у вас ошибка в расчете табличного грида(span пропустили) — все разъедится или упадет.

Именно парсер html можно, полагаю, выбрать из уже написанных. Хотя, тут я немного не в теме, т.к. у нас xhtml.
X>Также нужен парсер <style> секции со стилями и алгоритм применения стилей (не так просто, как звучит).
Совсем непросто. Но кроме секции со стилями, нужен еще и разбор внешних CSS, инлайн CSS.

X>Чтобы эту радость показать нужно создать лайаут страницы. Тут нужно вам написать форматировщик, умещающий текст на строке , разбивающий на параграфы, учитывающий все отступы, + расчет таблиц, и расположение текста внутри( fit или нефит), потом блоки, обтекание текста..и прочий гемор.

X>Когда лайаут получен отрисовать его на форме дело техники, там и хиттест, селекшн (а селекшн хитрый, не просто по словам, там еще куча логики при выделении таблиц, ) .
X>Так, забыл, еще нужно поддержать копирование (алгоритм копирования не так прост) тут нужно еще rtf v1.9 поддержать, прийдется писать экспортёр для него ,и txt все это кладется вместе в клиборд при копировании. (+ экспортёр в html тоже).
Выделение и копирование к самой собственно разметке не относятся. Имхо, это уже дополнительные фенечки, которые нужны не для всех задач, где нужна разметка.

X>Асинхронно грузить картинки.

Фенечка
X>еще 100500 всего, что я не слёту не вспомню.
+1
Например, загрузка шрифтов, чтение метрик, Font matching, не вспоминая уж о разметке под кернинг и т.п.

X>Все это нужно чуть взболтать заоптимизить чтобы не лагало. примерно 6 человеколет упорного 8h/d труда.

Это мало взболтать и запотимизить, т.к. кроме того, что бы собственно написать какой-то вариант какой-нибудь фичи, нужно долго болеть головой о том, какой же из существующих движков делает это более правильно, с чего лизать свою реализацию.
X>Удачи вам, надеюсь передумали. А если сможите 0.01 ую часть реализовать и не забъёте вы молодец.
Очень здорово, когда задача разметки ограничена и не нужно поддерживать всевозможные html. Например, отсутствие js — значительное облегчение. ограничение только xhtml — тоже.
Re: Свой браузер на C++
От: anonymouss  
Дата: 11.12.11 05:56
Оценка: :)
Здравствуйте, graviton9, Вы писали:

G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


если совсем простой, то вот

#include <stdlib.h>

int main()
{
    system("sed -e :a -e 's/<[^>]*>//g;/</N;//ba' r.htm > r.txt");
    system("gedit r.txt&");
    return 0;
}
Re[3]: Свой браузер на C++
От: c-smile Канада http://terrainformatica.com
Дата: 11.12.11 06:11
Оценка: 2 (1)
Здравствуйте, samius, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Здравствуйте, graviton9, Вы писали:


CS>>В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев.

S>Я бы не стал ограничивать сверху 18-и месяцами без оговорки относительно поддерживаемых фич HTML/CSS, т.к. уверен, что за 18 человеко-месяцев нереально реализовать все фичи разметки, поддерживаемые современными браузерами в среднем по больнице. Проблема так же в том, что разные браузеры реализуют разные фичи по-разному, и время еще уйдет на то, что бы разобраться, какой вариант реализации той или иной фичи лучше соответствует спецификации (или ее частной трактовке).

Технически сие возможно. Я например могу за 18 месяцев сделать нечто на уровне современных Gecko или WebKit.
Имеется ввиду HTML/CSS rendering CSS 2.1, т.е. до уровня ACID2 теста.

CS>>Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить.

S>Вероятность разработать архитекту, которую не придется переделывать, до начала кодирования, человеком, который задает вопрос, с чего начать, да еще и с грузом дополнительных хотелок, ради которых затевается разработка своей разметки — полагаю что она невелика.

Это да. Но скажем свой BlockNote я писал 9 месяцев. Там CSS зачаточный, но то по условию задачи.
И с нуля вообще. Правда был опыт написания WYSIWYG редакторов.

А вообще дорогу осилит идущий.
Re[4]: Свой браузер на C++
От: мыщъх США http://nezumi-lab.org
Дата: 11.12.11 06:43
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, samius, Вы писали:


CS>Технически сие возможно. Я например могу за 18 месяцев сделать нечто на уровне современных Gecko или WebKit.

мне неизвестен ни один браузер, написанный с нуля. в том же фоксе чужих библиотек до черта (не считая наследия нетшкафа). так что эта возможность чисто теоритическая и ни разу не подкрепленая практикой.

CS>Имеется ввиду HTML/CSS rendering CSS 2.1, т.е. до уровня ACID2 теста.

со стандартными библиотеками и ничем другим? помилуйте.

CS>А вообще дорогу осилит идущий.

это если есть цель. если цели нет. непонятно куда идти и зачем, то ни идущий, ни бегущий дороги не осилят, ибо нет цели.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Свой браузер на C++
От: graviton9  
Дата: 11.12.11 07:17
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, graviton9, Вы писали:


G>>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.


АШ>Отличный вброс. Но с точки зрения "почему бы и нет", начти с main.

mainуже 5 лет позоди !!!!!!!!!!!!!!!!!!!!!!!!!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.