Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает.
До пенсии планируешь закончить? Или уже внукам отдашь эстафету?
G> Опыт у меня достаточно.
(1) G> С чего начать какие функции, апи, книги статии и тгд посоветуйте.
(2)
эти два пункта, мягко говоря, противоречат друг другу.
Здравствуйте, netch80, Вы писали:
N>Здравствуйте, graviton9, Вы писали:
G>>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает.
N>До пенсии планируешь закончить? Или уже внукам отдашь эстафету?
G>> Опыт у меня достаточно. N>(1) G>> С чего начать какие функции, апи, книги статии и тгд посоветуйте. N>(2)
N>эти два пункта, мягко говоря, противоречат друг другу.
Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
Здравствуйте, graviton9, Вы писали:
G> имею ввиду простенкий браузер для отображения страниц
Курсовая что ли? Объясните, в чём по вашему разница между "простеньким браузером", который просто отображает страницу, и скажем Хромом, который тоже просто отображает страницу
Здравствуйте, graviton9, Вы писали:
G>Здравствуйте, netch80, Вы писали:
N>>эти два пункта, мягко говоря, противоречат друг другу. G>Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
Отображение страниц — это уже не простенько.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Начать можно покурив травы отсюда
Итак, что нужно
Расскажу что нужно для простого браузера который умеет открывать html и поддерживать css, без js.
Сначала для невизуальной части
Модель хранящую структуру документа:
текст, форматирование(свойства) текста, стили текста
параграфы, форматирование параграфов,
изображения,
нумерованные списки
таблицы, форматирование таблиц, строк, ячеек, бордюров
поддержка блоков
Парсер html я (вручную написанный), который умеет применять стили и форматирование к добавленным в модель объектам, должен переваривать любые плохие html и, c незакрытыми тегами, обрабатывать ошибки (обобый гемор тут с таблицами, потому большинство страниц используют табличную верстку, и если в процессе импорта у вас ошибка в расчете табличного грида(span пропустили) — все разъедится или упадет.
Также нужен парсер <style> секции со стилями и алгоритм применения стилей (не так просто, как звучит).
Чтобы эту радость показать нужно создать лайаут страницы. Тут нужно вам написать форматировщик, умещающий текст на строке , разбивающий на параграфы, учитывающий все отступы, + расчет таблиц, и расположение текста внутри( fit или нефит), потом блоки, обтекание текста..и прочий гемор.
Когда лайаут получен отрисовать его на форме дело техники, там и хиттест, селекшн (а селекшн хитрый, не просто по словам, там еще куча логики при выделении таблиц, ) .
Так, забыл, еще нужно поддержать копирование (алгоритм копирования не так прост) тут нужно еще rtf v1.9 поддержать, прийдется писать экспортёр для него ,и txt все это кладется вместе в клиборд при копировании. (+ экспортёр в html тоже).
Асинхронно грузить картинки.
еще 100500 всего, что я не слёту не вспомню.
Все это нужно чуть взболтать заоптимизить чтобы не лагало. примерно 6 человеколет упорного 8h/d труда. Удачи вам, надеюсь передумали. А если сможите 0.01 ую часть реализовать и не забъёте вы молодец.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Отличный вброс. Но с точки зрения "почему бы и нет", начти с main.
Здравствуйте, rusted, Вы писали:
G>>С чего начать R>Первым делом надо придумать красивое название новому браузеру.
..и начать продавать его в Android Market'е.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев.
Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить.
И вообще самое главное — мотивация. Т.е. с самого начала должно быть понимание для чего оно всё
и как ты собираешься свой интерес в проекте поддерживать.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, graviton9, Вы писали:
CS>В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев.
Я бы не стал ограничивать сверху 18-и месяцами без оговорки относительно поддерживаемых фич HTML/CSS, т.к. уверен, что за 18 человеко-месяцев нереально реализовать все фичи разметки, поддерживаемые современными браузерами в среднем по больнице. Проблема так же в том, что разные браузеры реализуют разные фичи по-разному, и время еще уйдет на то, что бы разобраться, какой вариант реализации той или иной фичи лучше соответствует спецификации (или ее частной трактовке).
CS>Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить.
Вероятность разработать архитекту, которую не придется переделывать, до начала кодирования, человеком, который задает вопрос, с чего начать, да еще и с грузом дополнительных хотелок, ради которых затевается разработка своей разметки — полагаю что она невелика.
CS>И вообще самое главное — мотивация. Т.е. с самого начала должно быть понимание для чего оно всё CS>и как ты собираешься свой интерес в проекте поддерживать.
Здравствуйте, 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 — тоже.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Здравствуйте, 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 редакторов.
Здравствуйте, 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.
Здравствуйте, Анатолий Широков, Вы писали:
АШ>Здравствуйте, graviton9, Вы писали:
G>>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
АШ>Отличный вброс. Но с точки зрения "почему бы и нет", начти с main.
mainуже 5 лет позоди !!!!!!!!!!!!!!!!!!!!!!!!!!!