Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в 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 лет позоди !!!!!!!!!!!!!!!!!!!!!!!!!!!
Здравствуйте, graviton9, Вы писали:
G>Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте.
Мой рецепт будет традиционен и зануден — как минимум, обложиться всякими RFC и
официальными спецификациями HTML/CSS/Javascript/TCP+HTTP, начиная с самых ранних
версий, и, достигнув в их штудировании некоторого понимания и зрелости, пробовать
писать отдельные компоненты движка рендеринга, сравнивая результаты их работы с
работой других популярных браузерных движков. Кстати, глубокое знакомство с
внутренним устройством таких движков, — я имею в виду по меньшей мере чтение их
исходного кода и комментариев, — может оказаться очень полезным.
Перед тем, как сделать что-то хорошее, посмотри, как это сделано у других.
Если интерес к этой задаче не угаснет хотя бы в течение первых двух-трех лет,
и будет кто-то, кто согласится спонсировать весь этот инженерно-костыльный кошмар, то
вполне можно написать нечто, умеющее более-менее нормально отображать веб-страницы.
Не все, конечно, но процентов 60-70 точно. При этом я даже не заикаюсь о поддержке
HTTPS/FTP, прокси-серверов, кэширования, Flash, AJAX и т.д.
А еще придется столкнуться с массой вещей, которые будут бесить и выводить из себя.
Например, обилие реализаций, нахально не следующих стандартам, и соответствующее
обилие браузерных костылей, чтобы такие реализации поддерживать.
При этом количество багов и производительность, скорее всего, окажутся такими, что
нужно будет постоянно бороться с мыслями бросить все и засесть за вторую версию.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, samius, Вы писали:
CS>>>В зависимости от опыта написать HTML/CSS rendering engine это примерно от 6 до 18 месяцев. S>>Я бы не стал ограничивать сверху 18-и месяцами без оговорки относительно поддерживаемых фич HTML/CSS, т.к. уверен, что за 18 человеко-месяцев нереально реализовать все фичи разметки, поддерживаемые современными браузерами в среднем по больнице. Проблема так же в том, что разные браузеры реализуют разные фичи по-разному, и время еще уйдет на то, что бы разобраться, какой вариант реализации той или иной фичи лучше соответствует спецификации (или ее частной трактовке).
CS>Технически сие возможно.
Конечно, ведь технически нас ограничивает лишь скорость ввода исходников через интерфейс автор/компьютер. И скорость компиляции CS>Я например могу за 18 месяцев сделать нечто на уровне современных Gecko или WebKit. CS>Имеется ввиду HTML/CSS rendering CSS 2.1, т.е. до уровня ACID2 теста.
Неплохо! Но вот FF/NoScript для 100% прохождения ACID2 требует разрешить выполнять скрипты. Т.е. к HTML/CSS надо добавлять видимо JS/DOM? Либо оговаривать степень выполнения ACID2.
Не, я, конечно, верю в такой сценарий, когда некий разработчик, написав за 36 месяцев нечто подобное, утверждает, что версию 2.0 он сделает с нуля за 18 месяцев. Реальный такой сценарий
CS>>>Начальное планирование и архитекура — критичны. На переделывать хотелки может не хватить. S>>Вероятность разработать архитекту, которую не придется переделывать, до начала кодирования, человеком, который задает вопрос, с чего начать, да еще и с грузом дополнительных хотелок, ради которых затевается разработка своей разметки — полагаю что она невелика.
CS>Это да. Но скажем свой BlockNote я писал 9 месяцев. Там CSS зачаточный, но то по условию задачи. CS>И с нуля вообще. Правда был опыт написания WYSIWYG редакторов.
У мну обратная ситуация. Сейчас как раз 18-ый месяц беременности разметчиком HTML/CSS. Он далек от ACID2, хотя это и не требовалось. Зато умеет некоторые специфические и очень нужные заказчику фишки. Т.е. после того, как я немного поварился в предмете, я могу сделать утверждение о том что справлюсь со своим BlockNote за 8 месяцев (не факт, на самом деле что справлюсь, но думать я так могу) Опять таки, надо оговаривать набор фич, потому как все заявленные фичи BlockNote мне в одну каску не осилить и за 18 месяцев.
CS>А вообще дорогу осилит идущий.
Во всяком случае у него есть на это шанс!
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, graviton9, Вы писали:
G>>Привет. U>проще всего устроиться на работу в мелкософт или гугл: там и название браузеру уже придумали
Спасибо всем за советы. Просто есть желания написать серьезный проект до этого написал норм процессный менеджер и на 40% написал файл менеджер (после того как понял как все остальное реализовать пропал интерес). И вот как -то на форуме посоветовали написать еще и браузер (видимо пошутили) и я подумал включить браузер в функциональность своего файл-менеджера.
Здравствуйте, graviton9, Вы писали:
G>Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
Для "отображения страниц" нужно освоить, как минимум, HTML и CSS, спецификации которых весьма путанны и неоднозначны, к тому же существуют разные версии. Потом еще нужно сделать восстановление после возникших ошибок парсинга. И еще тысяча вещей.
Здравствуйте, DorfDepp, Вы писали:
DD>Здравствуйте, graviton9, Вы писали:
G>>Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
DD>Для "отображения страниц" нужно освоить, как минимум, HTML и CSS, спецификации которых весьма путанны и неоднозначны, к тому же существуют разные версии. Потом еще нужно сделать восстановление после возникших ошибок парсинга. И еще тысяча вещей.
DD>Одному человеку это не под силу.
Спасибо за ответы. Просто на одном форуме посоветовали (видимо пошутили). Просто после процессного менеджера и файл менеджера (закончил на 40 % примерно) хотелось что то посерезнее, кстати что посоветуйте напистаь ?
Здравствуйте, graviton9, Вы писали:
G>Здравствуйте, DorfDepp, Вы писали:
DD>>Здравствуйте, graviton9, Вы писали:
G>>>Речь не идет о написании браузера типо chrome, mozzila, opera..... имею ввиду простенкий браузер для отображения страниц
DD>>Для "отображения страниц" нужно освоить, как минимум, HTML и CSS, спецификации которых весьма путанны и неоднозначны, к тому же существуют разные версии. Потом еще нужно сделать восстановление после возникших ошибок парсинга. И еще тысяча вещей.
DD>>Одному человеку это не под силу. G>Спасибо за ответы. Просто на одном форуме посоветовали (видимо пошутили). Просто после процессного менеджера и файл менеджера (закончил на 40 % примерно) хотелось что то посерезнее, кстати что посоветуйте напистаь ?
Тут главное, не размениваться на мелочи. Лучше сразу начинать писать свою ось. Тем более что есть масса положительных примеров: Таненбаум, Торвальдс.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, samius, Вы писали:
CS>>Технически сие возможно. Я например могу за 18 месяцев сделать нечто на уровне современных Gecko или WebKit. М>мне неизвестен ни один браузер, написанный с нуля. в том же фоксе чужих библиотек до черта (не считая наследия нетшкафа). так что эта возможность чисто теоритическая и ни разу не подкрепленая практикой.
Для рендеринга HTML/CSS в принципе достаточно JPG,PNG,GIF + стандартные примитивы windows.
Для поддержки <canvas> нужно что-то типа AGG,cairo,GDI+ ну и для <video> что-то соответсвующее.
Т.к. FF мултиплатформенный то ему требуется набор библиотек для фактической эмуляции windows API на разных платформах. Тот же pango вместо uniscribe и пр.
CS>>Имеется ввиду HTML/CSS rendering CSS 2.1, т.е. до уровня ACID2 теста. М>со стандартными библиотеками и ничем другим? помилуйте.
Да, до уровня ACID2 кроме JPG,PNG,GIF и стандартных библиотек (std, C++11 или моей tool) больше ничего не надо.
За год. Но опять же с высоты своего собственного опыта (5 написанных версий HTML/CSS + все спеки вдоль и поперек и не раз).
Да, для того чтобы сделать именно browser — устойчивый error handling для страниц from Web wilderness + browser chrome (UI) + плюшки типа transition/animations + scripting (готовый V8 например)
нужно больше. Но это уже задача для команды из 4-5 человек и примерно двух лет в целом.
Утверждаю что за два года можно написать browser общего назначения класса GC или FF.
CS>>А вообще дорогу осилит идущий. М>это если есть цель. если цели нет. непонятно куда идти и зачем, то ни идущий, ни бегущий дороги не осилят, ибо нет цели.
Предполагается что дорога в данном случае это нечто что идет из пункта А в пункт Б. Я ж про это и говорил — как минимум пункт Б должен быть известен. И также пункты питания в дороге.
Желательно также иметь промежуточный пункт А-bis где-нить на Карибах. В котором нужно остановиться и еще раз все оценить. И решить может надо со всем хозяйством двигаться в пункт В вообще.
Т.е. архитектура должна быть модульной. Из блоков собранных по дороге по-хорошему нужно иметь возможность собрать что-то еще. Но это уже так — из области завихрений здравого смысла.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, мыщъх, Вы писали:
CS>Для рендеринга HTML/CSS в принципе достаточно JPG,PNG,GIF + стандартные примитивы windows.
если мы говорим за api винды, то бразуер можно и за неделю написать. чем отличается браузерное api от средств работы с графическими файлами?
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.
Здравствуйте, samius, Вы писали:
S>Неплохо! Но вот FF/NoScript для 100% прохождения ACID2 требует разрешить выполнять скрипты. Т.е. к HTML/CSS надо добавлять видимо JS/DOM? Либо оговаривать степень выполнения ACID2.
ACID2 это сугубый тест CSS и совсем чуть HTML. Скрипт там не требуется.
S>Не, я, конечно, верю в такой сценарий, когда некий разработчик, написав за 36 месяцев нечто подобное, утверждает, что версию 2.0 он сделает с нуля за 18 месяцев. Реальный такой сценарий
А что конкретно тебя смущает? Да, я знаю как сделать эффектвный и расширямый DOM, я знаю как парсить и представлять в памяти CSS оптимально и с учетом дальнейших расширений.
Т.е. технически 9 месяцев на DOM и CSSOM и девять месяцев на layout managers коих в HTML/CSS в общем-то три: vertical block flow, inline (text) flow, table flow. Плюс рядом floats и position:absolute.
Совершенно реально. Еще и много, если времени на "снег башка попадет" не тратить (т.е. есть реальный опыт).
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, мыщъх, Вы писали:
CS>>Для рендеринга HTML/CSS в принципе достаточно JPG,PNG,GIF + стандартные примитивы windows. М>если мы говорим за api винды, то бразуер можно и за неделю написать. чем отличается браузерное api от средств работы с графическими файлами?
Под Windows API я имею ввиду не COM интерфейсы типа IWebBrowse а так называемый plain windows API из kernel.dll, gdi.dll и user.dll
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, samius, Вы писали:
S>>Неплохо! Но вот FF/NoScript для 100% прохождения ACID2 требует разрешить выполнять скрипты. Т.е. к HTML/CSS надо добавлять видимо JS/DOM? Либо оговаривать степень выполнения ACID2.
CS>ACID2 это сугубый тест CSS и совсем чуть HTML. Скрипт там не требуется.
Как тогда объяснить то что FF не выполняет ACID2 до конца с заблокированными скриптами?
S>>Не, я, конечно, верю в такой сценарий, когда некий разработчик, написав за 36 месяцев нечто подобное, утверждает, что версию 2.0 он сделает с нуля за 18 месяцев. Реальный такой сценарий
CS>А что конкретно тебя смущает? Да, я знаю как сделать эффектвный и расширямый DOM, я знаю как парсить и представлять в памяти CSS оптимально и с учетом дальнейших расширений.
Хорошо, когда знаешь как. Т.е. либо уже писал, либо еще что. Остается лишь записать решение. В таком случае, можно уложиться и в меньшее время. CS>Т.е. технически 9 месяцев на DOM и CSSOM и девять месяцев на layout managers коих в HTML/CSS в общем-то три: vertical block flow, inline (text) flow, table flow. Плюс рядом floats и position:absolute. CS>Совершенно реально. Еще и много, если времени на "снег башка попадет" не тратить (т.е. есть реальный опыт).
Много времени как раз нужно на "снег башка попадет". Например, vertical-align в разных движках выглядит похожим лишь в первом приближении. Но ни один движек в точности не соответствует спецификации, в той трактовке, в которой я ее понимаю. Везде какие-то расхождения. Еще пример: по каким правилам переносить border-ы inline non-replaced боксов? Будут ли они переноситься отдельно от содержимого? Или нет? Спека не дает ответ на этот вопрос, а движки браузера ведут себя по-разному. Хорошо, когда знаешь как поступить, и остается записать решение.
Еще пример — GDI портачит с Font matching-ом. Т.е. согласно спеке CSS, Font-matching должен работать строго указанным способам, а через GDI невозможно даже узнать, есть ли глиф для некоторого codepoint-а в данном fontface-е. У GDI все есть. Т.е. он достанет глиф из какого-то другого фейса, ты об этом и не узнаешь.
Даже грамматика CSS местами неоднозначна. Я закидывал вопросы на rsdn, местами мне объяснили, местами нет. Кстати, ты кажется учавствовал в обсуждении.
Итого, время как раз уходит на то, что прямо по рельсам спецификации не проехать. Все время надо где-то искать брод, объезд, облет, компромиссы...
Но да, если знаешь ответы на все вопросы, то остается лишь записать решение.
Здравствуйте, graviton9, Вы писали:
G>Спасибо всем за советы. Просто есть желания написать серьезный проект до этого написал норм процессный менеджер и на 40% написал файл менеджер (после того как понял как все остальное реализовать пропал интерес).
Игрушку напиши.
G>И вот как -то на форуме посоветовали написать еще и браузер (видимо пошутили) и я подумал включить браузер в функциональность своего файл-менеджера.
Ну так и включи этот готовый CppWebBrowser в свой проект.
Здравствуйте, graviton9, Вы писали:
G>Здравствуйте, uzhas, Вы писали:
U>>Здравствуйте, graviton9, Вы писали:
G>>>Привет. U>>проще всего устроиться на работу в мелкософт или гугл: там и название браузеру уже придумали G>Спасибо всем за советы. Просто есть желания написать серьезный проект до этого написал норм процессный менеджер и на 40% написал файл менеджер (после того как понял как все остальное реализовать пропал интерес). И вот как -то на форуме посоветовали написать еще и браузер (видимо пошутили) и я подумал включить браузер в функциональность своего файл-менеджера.
В Windows есть стандартный браузер Internet Explorer. Движок от него (грубо говоря — рабочую область) несложно использовать в своём приложении. Так вы получите качественный движок с минимальным вложением сил. Естественно это только для Windows. Ещё есть Webkit — движок, который используется в Safari, Google Chrome. Он в стандартной поставке Windows не идёт, но использовать его тоже никто не запрещает, просто дистрибутив вашего приложения будет занимать немного больше места. Ну и с портируемостью у этого движка тоже всё в порядке.
Писать свой браузер не стоит, если у вас нет финансирования лет на 5 вперёд. Да и тогда я бы очень хорошо подумал.
Здравствуйте, graviton9, Вы писали:
G>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
Предлагаю для начала написать свой компилятор и свою ось.
Помница, было такое задание на собеседовании в Spb Software. Тока нада было закодить простенький браузер за 1.5 часа на MFC — ну чтобы только текст из HTTP request'a корректно отображался с форматированием, картинки не обязательно. Спортивное программирование, my ass..
Здравствуйте, samius, Вы писали:
S>Здравствуйте, c-smile, Вы писали:
S>>>Неплохо! Но вот FF/NoScript для 100% прохождения ACID2 требует разрешить выполнять скрипты. Т.е. к HTML/CSS надо добавлять видимо JS/DOM? Либо оговаривать степень выполнения ACID2.
CS>>ACID2 это сугубый тест CSS и совсем чуть HTML. Скрипт там не требуется. S>Как тогда объяснить то что FF не выполняет ACID2 до конца с заблокированными скриптами?
Прошу прощения, был невнимателен. Не разобрался, что именно блокирует NoScript в ACID2. А там <object>.
Здравствуйте, romankr, Вы писали:
R>Здравствуйте, graviton9, Вы писали:
G>>Привет. Хочу написать свой браузер причем с нуля в инете везде советуется встроенная в visual studio тулза CppWebBrowser но мне это не устраивает. Опыт у меня достаточно. С чего начать какие функции, апи, книги статии и тгд посоветуйте. Спасибо.
R>Я рекомендую взяться за Qt. Там есть Webkit, и вам не придется заниматься велосипедостроением. Подробнее, можете подсмотреть здесь — http://doc.qt.nokia.com/latest/qtwebkit-guide.html R>http://doc.qt.nokia.com/latest/qwebview.html
Могу подогнать свой самодельный HTML-парсер, работающий с юникодом Рожает на выходе цепочку структур типа HTMLTag — имя тега + набор параметров. Умеет забивать болт на комментарии и яваскрипты.