javascript
Идеально размещённые тултипы: все четыре стороны

Эта статья — перевод оригинальной статьи «Perfectly Pointed Tooltips: All Four Sides». Это вторая часть, первая часть уже есть на Хабре (Идеально размещённые тултипы: база), будет ещё перевод 3-ей части.Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеПора перейти ко второй части! У нас уже есть очень хорошие функциональные тултипы с позиционированием, но они в основном «смотрели» вверх или вниз и смещались у краёв, …

  • вторник, 18 ноября 2025 г. в 00:00:08
javascript
Руководство по архитектуре браузерных песочниц: как работает изоляция JavaScript-кода

Всем привет! Меня зовут Александр Григоренко, я фронтенд-разработчик. Последние несколько месяцев я работаю над пет-проектом — интерактивной образовательной платформой для изучения Web Audio API и принципов обработки и синтеза цифрового звука. На платформе пользователи смогут решать задачи, программируя на JavaScript прямо в браузере. Эти программы выполняются в изолированной среде — песочнице, где пользовательский код не может повлиять на работу самой платформы.Когда я начал реализовывать песо…

  • вторник, 18 ноября 2025 г. в 00:00:07
javascript
Сужение дипазона типов в TypeScript

1. Дискриминантное объединение (Discriminated Union)1.1 Сужение на основе признаков присущих типу Tagged Union2. Сужение дипазона типов (Narrowing)2.1 Анализ потока управления (Control flow analysis)2.2 Сужение диапазона множества типов на основе типа данных2.2.1 typeof сужение2.2.2 instanceof сужение2.2.3 Оператор in сужения2.3 Сужение истины (Truthiness narrowing)2.4 Сужение равенства (Equality narrowing)2.5 Использование предикатов типа (type predicates)2.6 Использование функции утверждения …

  • вторник, 18 ноября 2025 г. в 00:00:05
javascript
Модификаторы вариантности параметров типа в TypeScript

Модификаторы вариантности параметров типа in и outЭто расширенная функция для решения очень конкретной проблемы, и ее следует использовать только в тех ситуациях, когда вы определили причину ее использования.Ковариантность и контравариантность — термины теории типов, описывающие взаимосвязь между двумя родовыми типами. Вот краткое описание этой концепции.Например, если у вас есть интерфейс, представляющий объект, который может иметь определенный член make:interface Producer<T> { make():…

  • вторник, 18 ноября 2025 г. в 00:00:04
javascript
Ваши тесты упали по причине JavaScript

Рассказываем, как безобидная строка JavaScript-кода привела к нарушению стабильности тестов продукта, а также о том, как можно избежать подобных ошибок.Для нашего статического анализатора мы поддерживаем довольно большое количество интеграций в различные инструменты, в том числе в IDE, чтобы разработчики могли без проблем пользоваться инструментом в процессе разработки. Одна из таких интеграций — расширение для Visual Studio Code, написанное на JavaScript и TypeScript.Примечание. О том, как пол…

  • вторник, 18 ноября 2025 г. в 00:00:03
habrahabr
Что нового в .NET 10?

Дождались! .NET 10 вот-вот выйдет, а значит, самое время запускать фейерверки и отмечать юбилей любимой платформы! Ну и, само собой, ознакомимся с улучшениями JIT, расширением стандартной библиотеки, новыми возможностями SDK и с другими нововведениями в этой статье..NET 10 сфокусирован на улучшении производительности, а также безопасности — в частности, криптография подверглась серьезной доработке. Это long-term support (LTS) релиз, а значит будет поддерживаться в течение трёх лет.Эта статья ра…

  • понедельник, 17 ноября 2025 г. в 00:00:12
habrahabr
Забудьте про print(): Современное и красивое логирование в Python с помощью Loguru

Введение: Боль и страдания от print() и стандартного loggingЕсли вы пишете на Python, скорее всего, ваша карьера разработчика начиналась с одной простой, но незаменимой команды — print(). Нужно проверить значение переменной? print(my_variable). Хотите убедиться, что функция вообще вызвалась? print("Я внутри функции!"). Этот метод прост, интуитивно понятен и кажется верным другом в мире отладки.Но дружба эта длится ровно до первого серьезного проекта. Внезапно оказывается, что ваш термин…

  • понедельник, 17 ноября 2025 г. в 00:00:11
habrahabr
Обзор коммерческих дистрибутивов Linux: зачем люди платят, если можно не платить

Привет! Меня зовут Кирилл Кузнецов, я представляю коммерческую команду SelectOS — серверной операционной системы от Selectel. Перед запуском продукта моя команда изучила мировой опыт наиболее успешных коммерческих Linux-дистрибутивов, и в этой статье я предлагаю посмотреть, как RedHat, SUSE и Canonical строили свой бизнес на основе OSS, то есть open-source-software. Мы разберемся, какие уроки можно извлечь из опыта крупнейших мировых вендоров, с поправкой на российский рынок, проанализируем биз…

  • понедельник, 17 ноября 2025 г. в 00:00:10
habrahabr
Мультитул для инженера: волшебная коробочка с I2C/SPI/UART/JTAG за 1.000 рублей

Будучи творческим человеком и техногиком, я обожаю при первой возможности апгрейдить своё оборудование. Время от времени я мониторю маркетплейсы в поисках чего-то новенького и в этот раз я наткнулся на настоящий мультитул для Embedded-разработчика — контроллер I2C/SPI/UART/JTAG в одной коробочке и всё это всего за 1.000 рублей... Конечно я не смог пройти мимо этой штучки и в рамках сегодняшней статьи хочу рассказать что оно из себя представляет и как с ним работать. Жду вас под катом!❯ Что за у…

  • понедельник, 17 ноября 2025 г. в 00:00:09