Будни разработчика
14.6K subscribers
1.18K photos
338 videos
7 files
2.02K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://yangx.top/it_adv

Чат: https://yangx.top/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
加入频道
#ссылка дня

Встречайте: https://browser.engineering/

Ребята ставят своей целью создание минимального браузера на Python, по пути разбирая как, собственно, это все должно работать: протоколы, объектная модель документа, стили, интерфейс. Работа все ещё в процессе, подано в формате учебного пособия, с домашними заданиями.

Этот проект сложно назвать «чтивом выходного дня» (кроме первой части), но вряд ли кто-то будет параллельно погружаться в исходники настоящих браузерных движков.

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

Дико интересная штука.

#python #browser
👍5
#инструмент дня

Надо узнать, когда была выпущена последняя версия браузера?

Воспользуйся https://www.browsers.fyi/

Ну и API, конечно же: https://www.browsers.fyi/api/

Зачем? Ну, а почему бы и нет.

#web #browser #api
👍7
#такое дня

Как часто вы видите новые браузеры?

Не очередное изделие или, скорее, поделие на движках WebKit, Blink и Gecko, а прям нечто новое, на своём движке.

Думаете, нет такого? А вот господа из проекта SerenityOS не думают. А просто сделали.

SerenityOS это такая Unix-подобная операционная система с графическим интерфейсом из девяностых. Ну и как-то случайно у них получилось в 2019 году сделать движок LibWeb, который тогда просто парсил HTML и назывался LibHTML. Ну и для выполнения скриптов набросали LibJS.

Откуда скриншот? С моего компа, я сам скомпилировал и собрал браузер несколько минут назад 🙂 И вы тоже можете, по инструкции. Очень просто.

Забавное чувство.

#browser #unix
👍6🔥2
#книга дня

Я уже писал года два назад о книге
Web Browser Engineering, описывающей разработку простого браузера с нуля: https://browser.engineering/

Но они же не останавливались, и последняя на данный момент часть — про встраиваемые элементы — вышла в марте.

Описываются все сложности, преследующие разработчиков на каждом этапе разработки. Естественно, свой Chrome написать после прочтения не выйдет, но лучше понять, как работают браузеры — вполне.

Но в любом случае, чтение достаточно хардкорное :)

#python #dev #browser
🔥12👍4
#новость дня

Посмотрите на иллюстрацию. Ничего интересного не замечаете?

А здесь происходит ого-го какая драма!

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

Если коротко, есть такой чувак, Андреас Клинг. Долгое время он работал над движком WebKit в Nokia, а потом и над браузером Safari в Apple. А потому немного... в общем, оказался в центре реабилитации.

Выйдя оттуда, ему потребовалось чем-то себя занять (блин, звучит как история BMTH), потому он создал операционную систему SerenityOS. Суть её была в том, чтобы написать Unix-подобную ОС без использования сторонних библиотек. Постепенно вокруг проекта даже образовалось сравнительно большое сообщество.

И вот, разрабатывая просмотровщик HTML-документации, ребята случайно написали браузер. И так получилось, что браузер стал развиваться быстрее чем материнский проект.

И месяц назад Андреас решил, что будет заниматься только им, выпустив соответствующее уведомление.

И вот тут началось самое интересное. Все так наелись монополии Google, что новость взлетела с дикой скоростью. Казалось бы, зачем нам ещё один движок и тем более — браузер? Но запрос есть. Начиная от энтузиастов, заканчивая слабомощными машинами и телевизорами.

В общем, пару дней назад стало известно, что в некоммерческую организацию, созданную под Ladybird, инвестировали 1 миллион долларов. И не кто иной, а Крис Ванстрат.

Не знаете, кто это? А это сооснователь GitHub. И он не один такой. Shopify тоже в спонсорах.

В общем, мир наконец-то снова стал интересным. На скриншоте — браузер, собранный мной за пять минут до этого поста. Это очень легко.

И пусть он пока не умеет всего, что умеет Chrome, я верю в его светлое будущее.

#web #browser #ladybird
👍346🤩3
#такое дня

Есть у меня некое предубеждение к продуктам, которые распространяются через инфлюенсеров. Как, например, браузер Arc.

А когда есть предубеждение, стараешься невольно найти подтверждение своим опасениям.

Например, у вас не возникало ощущения, что обязательное требование облачного аккаунта для использования такого продукта, как браузер, это как-то ненормально?

Или что концепция бустов, Boosts — это когда кто-то может сделать свой набор скриптов и правил для изменения поведения любого сайта — звучит как встроенный MITM?

Man in the middle, если что. Это вот: https://en.wikipedia.org/wiki/Man-in-the-middle_attack

И ведь так и оказалось! Автор xyzeva (я только знаю, что зовут её Ева) опубликовала результаты исследования безопасности Boosts и смогла воспроизвести атаку с подменой авторства буста на любое нужное ей.

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

Вот, почитайте: https://kibty.town/blog/arc/

TL;DR: они использовали Firebase максимально наивно.

Даже если не интересуетесь инфобезом, там прекрасная кошечка бегает за курсором.


Arc признали существование уязвимости, выкатили об этом пост и выплатили автору вознаграждение: https://arc.net/blog/CVE-2024-45489-incident-response

По счастью, предположительно никто не пострадал.

В общем, внимательно рассматривайте продукты, которые предлагают всё и сразу, just call my toll free number.

#security #browser
👍12
#заметка дня

Не так давно я коротко обозревал браузер Ladybird, написанный с нуля и представляющий собой интересный феномен one-man band.

На самом деле, новых браузеров больше одного. Но не сильно :)

Например, Flow, разработчики которого случайно сделали браузер, пока делали демо-приложения под умные телевизоры. Просто в какой-то момент им потребовался быстрый и простой парсер SVG. Кстати, доступны публичные сборки, но только для Raspberry Pi. Разработчики пишут коммерческий продукт и пытаются избежать лишних сравнений.

Так вот, есть ещё один. Servo. Если у вас сейчас на подкорке памяти что-то зашевелилось, вы правы: судьба Servo плотно связана с браузером Firefox.

Много лет назад казалось, что весь Firefox перепишут на тогда только зарождавшийся язык Rust, который компания Mozilla и создала. Именно такие вайбы исходили от их тогдашнего CEO — Брэндана Айка. Да-да, создателя JavaScript. Но речь не о нём.

В итоге, что же произошло? Ведь Firefox так и не переписан на Rust целиком. Проект провален?

Вовсе нет!

Хотя кажется, что Mozilla отказалась от Servo, продолжив с Gecko, это не совсем так. Полная замена никогда не была целью.

Создать браузер, полностью совместимый со всеми стандартами и особенностями веб-сайтов (прошлого, настоящего и будущего), почти невозможно. Google не начинала Chrome с нуля, а фактически сделала форк открытой части Safari — WebKit. А тот в свою очередь — форк движка KHTML.

Microsoft потратила более миллиарда долларов на создание Edge и допиливание Internet Explorer, но в итоге сдалась и использует движок Blink, из Chrome.

По факту сейчас существует только три крупных независимых движка: Webkit (Apple), Blink (Google) и Gecko (Mozilla). Запустить новый проект с нуля — слишком дорого для некоммерческой организации, такой как Mozilla.

Servo стал полигоном для тестирования языка программирования Rust. Когда проект начинался, Rust был молод, и разработка Servo помогла проверить его возможности.

В итоге Rust стал важной частью экосистемы Mozilla и активно используется в её кодовой базе. Он помог упростить и обезопасить важные части Gecko, сделав их доступнее для сторонних разработчиков.

Тут стоит напомнить, что история Firefox своими корнями уходит в Netscape, а это уже что-то из середины девяностых.

Так что же конкретно в Firefox из Servo?

Движок CSS — Stylo, поддержка протокола HTTP/3 тоже стала возможной лишь с интеграцией сетевого слоя Neqo (название созвучно с Necko, а Necko — это Network Gecko).

А теперь то, ради чего писалась эта длинная заметка. Сам Servo никуда не делся и также развивается как самостоятельный проект! Вот, репозиторий более чем живой: https://github.com/servo/servo

Как и сайт: https://servo.org/

Более того, он прекрасно собирается прямо из транка репозитория! На иллюстрации к посту — браузер, собранный на моей машине. Собрался вообще без каких-либо проблем.

Работает, правда, довольно медленно в смысле отрисовки: пока что никакого GPU-ускорения нет, но это не в приоритете проекта. Ladybird в этом отношении позволяет себе сильно больше вольностей. Да и поддержка JavaScript в зачаточном состоянии.

Но приятно видеть, что Servo никуда не делся и когда-нибудь мы получим совершенно новый продукт.

#browser #history
29👍8
#инструмент дня

Вы знаете мою любовь к странным браузерам. Мы с вами запускали и Midori, чтобы отлаживать баги Safari/WebKit в Linux и Windows, и Ladybird, и Servo.

И если последние два сравнительно современные проекты, которые заодно ещё и получают мощное финансирование со стороны разных организаций, хотелось бы напомнить, что есть ещё смелые люди.

Например — браузер Dillo, которому недавно исполнилось 25 лет. Наверное, за 25 лет его научили всем трюкам?

Ну, вообще, нет. Да и цели такой не стояло. Пишется он по большей части для развлечения и некого... гуманитарного аспекта. Чтобы люди со слабыми машинами и соединением могли ту же википедию почитать. Ну или в виртуалке запустить документацию, в условиях ограниченных ресурсов.

Тем не менее, в честь 25 летия автор выпустил обновление — Dillo 3.2, в котором браузер научили поддержке webp, SVG, MathML, зуму через Ctrl+. И даже CSS-единицам вроде ch, rem, vw, vh, vmin, vmax.

С одной стороны, конечно, возникает логичный вопрос: «Кому это нужно-то вообще?», с другой — какое-то сообщество вокруг браузера сфомировано, люди пробуют свои силы в чём-то новом. Патч в Chrome вряд ли просто так зашлёшь, а в Dillo или Ladybird — почему бы и нет. Отличный дипломный проект, в том числе.

Ваши мнения, котаны?

#browser #engine #dillo
🫡167👍4
#такое дня

Вчера в Твиттере произошёл разговор. Обычный очередной разговор о собеседованиях и о том, что все кругом пытаются прыгнуть на уровень выше, хотя даже близко не там. Ну, обычное дело.

Но вот один вопрос, который задавал автор треда, прям немного покоробил: "Какие новые технологии в разработке вас вдохновляют?" И большинство просто отвечало: "RSC". И это автора очень расстраивало.

Речь шла, конечно, о фронтенд-собеседованиях.


Что не так с этим вопросом?

Да, вроде, всё так, пресловутая "искра в глазах". Вот только всегда есть нюансы.

Нюансы имплементации в браузерах. Там не просто собака порылась, там собака всё разнесла. Каждую из новых широкодоступных технологий.

Давайте посмотрим в качестве примера на такую простую штуку, как contenteditable.

Не так давно Firefox 136, наконец, присоединился к поддержке contenteditable="plaintext-only". Это значит, что при вставке какого-либо rich format куска, ну, грубо говоря, оформленного текста из HTML или Microsoft Word, он вставится обычным текстом, оберегая нас всех от лишних тегов.

Крутая фича, не правда ли? Так удачно легла на везде рекламируемый разными инфлюенсерами baseline!

Но вообще, нам что, textarea не хватает? Вот, кстати, не хватает. Например, сделать авторесайз textarea довольно непросто, и CSS Custom Highlight API тоже не накатить. А div всё сделает сам.

Вот только при редактировании такого текста Firefox вставит <br> на каждый перевод строки, а Chrome — нет.

Бадум-тсс.

И так почти с каждой новой спецификацией. Везде, где остаётся хоть какое-то пространство для манёвра вне спецификации — разработчики обязательно куда-то не туда вывернут и потом годами будут это защищать.

Плохо ли это? Да нет, наверное. Особенно, если ты разработчик браузера.

Но восхищаться этим становится как-то... трудозатратно.

#textarea #contenteditable
👍1311🤬1