Эта статья — перевод оригинальной статьи «Perfectly Pointed Tooltips: All Four Sides». Это вторая часть, первая часть уже есть на Хабре (Идеально размещённые тултипы: база), будет ещё перевод 3-ей части.Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеПора перейти ко второй части! У нас уже есть очень хорошие функциональные тултипы с позиционированием, но они в основном «смотрели» вверх или вниз и смещались у краёв, …
Всем привет! Меня зовут Александр Григоренко, я фронтенд-разработчик. Последние несколько месяцев я работаю над пет-проектом — интерактивной образовательной платформой для изучения Web Audio API и принципов обработки и синтеза цифрового звука. На платформе пользователи смогут решать задачи, программируя на JavaScript прямо в браузере. Эти программы выполняются в изолированной среде — песочнице, где пользовательский код не может повлиять на работу самой платформы.Когда я начал реализовывать песо…
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 Использование функции утверждения …
Модификаторы вариантности параметров типа in и outЭто расширенная функция для решения очень конкретной проблемы, и ее следует использовать только в тех ситуациях, когда вы определили причину ее использования.Ковариантность и контравариантность — термины теории типов, описывающие взаимосвязь между двумя родовыми типами. Вот краткое описание этой концепции.Например, если у вас есть интерфейс, представляющий объект, который может иметь определенный член make:interface Producer<T> { make():…
Рассказываем, как безобидная строка JavaScript-кода привела к нарушению стабильности тестов продукта, а также о том, как можно избежать подобных ошибок.Для нашего статического анализатора мы поддерживаем довольно большое количество интеграций в различные инструменты, в том числе в IDE, чтобы разработчики могли без проблем пользоваться инструментом в процессе разработки. Одна из таких интеграций — расширение для Visual Studio Code, написанное на JavaScript и TypeScript.Примечание. О том, как пол…
# Русский JavaScript — это не баг, это фича будущего. Представляю RJS Друзья, признайтесь честно: сколько раз вы матерились на `if (user.isAdmin)` потому что забыли, что `isAdmin` — это булево, а не строка из бэкенда? Сколько багов родилось из-за того, что `null == undefined` в JS, но `null === undefined` — нет? А теперь представьте: **код, который читается как документация, потому что написан на русском**. Да, я серьёзно. Встречайте **[RJS](https://github.com/nike-17/rjs)** — транслятор Ja…
Большинство ИИ-ассистентов работают в облаке. А я сделал локальный — прямо внутри мессенджера HalChat.Большинство современных ИИ-ассистентов работают в облаке, требуют подключения к серверам и не дают контроля над данными. Я решил исследовать, возможно ли встроить искусственный интеллект прямо в мессенджер, чтобы он работал локально прямо в браузере, офлайн и под управлением самого пользователя.Цель HalChatLocalAI - упростить взаимодействие человека с ИИ и встроить его в повседневную жизнь чере…
Представьте себе не просто «карусель карточек», а временную шкалу, которая уходит в перспективу, карточки выезжают по наклонным линиям, масштабируются как в 3D-сцене, а под всем этим — настраиваемый скроллбар с годами и плавной анимацией смены категорий. Всё это — без WebGL, только HTML, CSS и JavaScript. Чтобы сразу было понятно, о чём речь, вот финальный результат, который мы будем разбирать в статье: демо: http://142.111.244.241:3000/timeline3d/step14 Если у вас сейчас открыт десктопный б…
Обо мнеНачну с краткого «кто я и с какой горы припёрся?». Зовут меня Юра и у меня немногим больше семи лет опыта разработки фронта на vue+typescript в ЛАНИТ и в МТС. Начал я, что забавно, с Angular 5 в далёком 2018, когда пятёрка ещё была актуальной версией, и работал с ним немногим больше пары месяцев, после чего перекатился во vue2.Работал я исключительно в B2B и внутренней разработке. Системы документооборота, сервисдески, внутренние ГИС и PaaS и вот это вот всё. Благодаря этому я повидал ра…