Все потоки
Поиск
Написать публикацию
Обновить
227.46

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Как подружить веб-компоненты и JS-фреймворки

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.4K

Всем привет, я Роман Троицкий. Очень люблю веб-разработку; участвовал в проектах, попавших на Awwwards, Tagline и GoldenSite; помогаю организовывать митап Moscow CSS; участвовал в записи и разработке курса по фронтенду для Skillbox. На примере своего проекта я расскажу о сложившейся с Web Components ситуации, опишу их достоинства и недостатки. 

Читать далее

Yaml — король мета-описаний

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8.5K

На Хабре, было несколько статей о Yaml, но мне кажется все они однобоки и не раскрывают его истинную природу. Я попробую это исправить и рассказать о Yaml в положительном контексте. Не буду вновь описывать детали синтаксиса стандартного Yaml, в Интернете есть много материалов на эту тему. Их можно найти и на Хабре, в том числе, по ссылкам из этой статьи. Материал ориентирован на тех, кто знаком с Yaml, но возможно чувствует неприязнь к формату.

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 3

Уровень сложностиСредний
Время на прочтение46 мин
Количество просмотров9K


Привет, друзья!


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



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


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Интересно? Тогда прошу под кат.

Читать дальше →

Вычисление отсрочки старта приготовления каши на завтра

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.2K

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

И раньше я постоянно путался - какую отсрочку старта поставить вечером, чтобы каша была готова к определенному времени утром? 

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

Вычисляем время 🕰️

Atomic CSS Deep Dive

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров8K

Здравствуйте, товарищи! Меня зовут Валик и в этой статье мы поговорим про подход Atomic CSS в верстке, разработку инструментов и смежные темы.

Кратко вспомним базу - почему Atomic CSS. Рассмотрим популярные решения для работы в этом подходе и сравним их с моим изобретением - mlut. Разберем проблемы известных инструментов и посмотрим, как я решил их в своем. Будут интересные архитектурные решения, технические детали и немного хардкора.

Те, кто занимается версткой, смогут по-другому взглянуть на Atomic CSS и, возможно, взять в работу новый инструмент. А те, кто пишет системный код и тулинг - получить вдохновение и перенять нестандартный опыт.

Читать далее

Почему новый процесс в Node порождается так медленно?

Время на прочтение10 мин
Количество просмотров2.3K

Мы в Val Town выполняем ваш код в процессах Deno. Недавно мы заметили, что под нагрузкой отдельно взятый Node-сервер Val Town не может породить более 40 процессов. На протяжении 30% процессорного времени главный поток остаётся заблокирован вызовами к spawn. Почему так медленно? Можно ли как-нибудь ускорить эту работу?

Читать далее

Создание полного Fast-API сервиса с фронтендом и деплоем за полчаса

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров29K

В последнее время на Хабре я опубликовал более десяти крупных статей на тему разработки собственного API с использованием FastAPI. Однако, в основном, эти статьи были теоретическими. Сегодня я решил создать чисто практическую статью, в которой мы с нуля и максимально быстро разработаем полноценный веб-сервис с фронтендом и бэкендом.

После этого мы выполним деплой этого приложения, чтобы любой пользователь мог им воспользоваться.

Читать далее

Punk riff generator

Уровень сложностиСредний
Время на прочтение38 мин
Количество просмотров2.2K

В данной статье мы будем воспроизводить звук в браузере на примере небольшого проекта под названием Punk riff generator.

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

Читать далее

Давайте сделаем крупное приложение на Flask (язык Python)

Время на прочтение18 мин
Количество просмотров27K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее

Основы тестирования React-приложений через Cypress

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.7K

Привет, Хабр! Сегодня рассмотрим как автоматизировать тестирование React-приложений с инструментом Cypress.

Читать далее

Процесс, который продолжал умирать

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7.4K

В этой статье я изложил суть своего выступления, которое состоялось в рамках проводимой нашей компанией образовательной программы «Lunch n' Learn».

Если вас просто интересует, как искать утечки памяти в Node, переходите сразу к Части 2 (но тогда вы упустите всю невероятную предысторию).

Это рассказ об умершем процессе и о наших злоключениях в попытке найти его убийцу с целью призвать негодяя к правосудию. Если говорить точнее, то этот процесс продолжал умирать циклически, но такая картина нарушает проводимую мной аналогию, поэтому попрошу вас не придавать этому большого значения. Наша история начинается с периодического возникновения ошибки 502 Bad Gateway — загадки, которую предстояло разрешить.
Читать дальше →

Думаете, вы всё знаете о box shadows?

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров5.2K

Я люблю box-тени.

Четыре года назад я выяснил, что мой процессор M1 может рендерить безумное количество таких теней, поэтому решил извлечь из них максимум, и мне это удалось. Если вам интересно, как пользоваться box-тенями, чтобы создать современный стиль UX, то вы не по адресу. Но если вам нравятся творчество и эксперименты, то продолжайте чтение.

Я хочу поделиться худшими примерами того, что можно сделать при помощи box-теней в одном div. Примерами, которые не должны работать, однако почему-то работают. Но прежде чем приступить, нужно ответить на вопрос: что же такое box-тень?

Читать далее

Все, что вы хотели знать про иерархию инжекторов в Angular

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.9K

Привет. Меня зовут Дмитрий, я фронтенд-разработчик в компании «Цифровая индустриальная платформа». В своей работе мне часто приходится использовать Dependency Injection (DI) в Angular. Это мощный и популярный инструмент, который упрощает работу с зависимостями в наших приложениях. Он позволяет легко интегрировать необходимые сущности в компоненты, упрощает процесс тестирования и поддерживает принцип инверсии зависимостей. Однако часто мы не используем все возможности DI, потому что не знаем, как он работает под капотом. Давайте разберемся, как функционирует DI, что такое иерархия инжекторов и какие изменения принесла версия Angular 14.

Читать далее

Ближайшие события

BitImageTool — пиктограммы для кнопок и панелек приложений, закодированные в ASCII

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.8K

Статья о том, как легко делать графические кнопки для панелей инструментов, не таская за приложением гору бинарных ресурсов с картинками. Этот метод платформонезависимый и может быть использован в различных языках и средах, позволяющих работать с графикой и растровыми изображениями. Ниже приводятся примеры для C# (WinForms / WPF), JavaScript, Python.

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

Тогда возникла идея - рисовать одноцветные изображения, кодировать их в строку и хранить прямо в свойствах объекта (например - кнопки). Самый простой вид кодировки - когда шесть точек изображения превращаются в шестибитный код, соответствующий некоторому символу из ASCII таблицы с заданным базовым смещением...

Читать далее

React: одна любопытная особенность порталов

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.8K



Привет, друзья!


В этой небольшой заметке я хочу рассказать вам об одной интересной особенности порталов в React, которую я долгое время упускал из виду, но которая на днях привела к любопытному багу. Речь идет о том, что структурно дерево React не всегда соответствует DOM.


Полагаю, статья будет интересна всем разработчикам React, а также тем, кто любит разбираться с тонкостями работы JavaScript и браузерных API.


Предполагается, что вы имеете некоторый опыт работы с React, и вам не надо объяснять, что такое порталы и для чего они нужны.

Читать дальше →

Текстовые квесты… на Telegram

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.8K
Давным-давно, около полугода назад, мне в голову пришла интересная идея: а не запустить ли текстовые квесты из "Космических рейнджеров" под управлением Telegram-бота? Скажу сразу, что как и всё с упоминанием "Dagaz" в заголовке, проект полностью бесплатный, с открытыми исходными кодами и MIT-лицензией. Если вы неравнодушны к теме, всё ещё помните неповторимую атмосферу легендарной игры или любите играть в текстовые квесты, просто кликните по картинке в начале этой статьи и перейдите в уютный Telegram. В том же случае, если вам как и мне гораздо более интересны технические подробности, добро пожаловать в мою статью…
Читать дальше →

Выбор JavaScript фреймворка: Сравнение React, Angular и Vue Глазами Разработчика

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров19K

В мире фронтенд-разработки существует множество различных фреймворков, которые помогают сделать процесс создания веб-приложений более удобным и эффективным. Я являюсь частью этого мира уже более 4-х лет, сейчас занимаю должность фронтенд разработчика в компании Loyalty Labs. За все время в IT я познакомилась с разными инструментами и фреймворками, и хотела бы обсудить трёх "гигантов" в области frontend: React, Angular и Vue.

Эта статья не предназначена для того, чтобы обучать вас этим фреймворкам. Это не технический гайд. Здесь я поделюсь своим мнением, попытаюсь разобраться в особенностях и понять, чем каждый из этих "гигантов" может гордиться.

Читать далее

TypeScript + React: путь к идеально типизированному коду

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров7.2K

Частенько сталкиваются с проблемой поддержания типовой безопасности в React-проекте. Код разрастается, и управление типами становится всё сложнее. Ошибки, вызванные неправильной типизацией, приводят к крашам и длительным отладкам. Тогда приходит время внедрения TypeScript!

В статье рассмотрим как TypeScript может помочь решить проблемы с типизацией и сделать React-код идеально типизированным.

Читать далее

Создание собственного API на Python (FastAPI): Подключаем фронтенд и статические файлы

Уровень сложностиСредний
Время на прочтение33 мин
Количество просмотров29K

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

- Основы создания простого приложения с использованием FastAPI.

- Основные HTTP‑запросы: POST, GET, PUT и DELETE.

- Принципы работы с Pydantic моделями и их интеграцию в FastAPI.

- Использование инструментов Alembic и SQLAlchemy для управления базой данных.

- Настройку асинхронной работы с базой данных PostgreSQL в SQLAlchemy.

- Реализацию кастомной авторизации и аутентификации в FastAPI.

На данный момент мы уже умеем создавать достаточно функциональное API с приличным набором возможностей, но что дальше? Кто и в каких ситуациях ним будет пользоваться, ведь API пишется именно для этого.

Читать далее

Самопаркующийся авто за 500 строк кода

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров20K



TLDR


В этой статье мы научим авто самостоятельно парковаться с помощью генетического алгоритма.


Мы создадим первое поколение авто с произвольными геномами, которое будет вести себя примерно так:





Примерно на сороковом поколении авто начнут понимать, что такое авто-парковка, и начнут приближаться к парковочному месту:




Читать дальше →

Вклад авторов