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

Веб-разработка *

Делаем веб лучше

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

Вышел React v19

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

React v19 теперь доступен на npm!

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

Читать далее

Народный браузер — каким он мог бы быть?

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

image


Добрый день! Меня зовут Тимур и я программист.


В прошлой статье я сделал анонс сборки Хромиума — Ultimatum, и несмотря на то что обсуждения на хабре слегка потеряли градус (по сравнению с обсуждениями 5-10 летней давности) — пара неплохих идей все таки всплыла. Собственно этой статьей я рассчитываю поднять интерес к теме и попытаться понять на какие фичи у людей есть реальный запрос.


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

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

Как написать Google Calendar на коленке? Обзор FullCallendar

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

Привет, Хабр! В свободное от работы время я занимаюсь разработкой своего проекта. На днях мне понадобилось разработать раздел с календарем и задачами, чтобы пользователи могли отслеживать свою деятельность. Увы, но полностью готовых решений я не нашел. API стандартного календаря Google не подходит, так как данные хочу хранить внутри контура проекта.

Спустя несколько часов поисков я наткнулся на плейлист разработчиков из Индии. В жизни все циклично — именно эти видео мне и помогли. Так я познакомился с классной open source-библиотекой FullCalendar, о которой расскажу в этой статье. Если вы уже начали составлять календари на 2025 год, добро пожаловать под кат!
Читать дальше →

Правда или миф: почему в разработке не все так быстро, как кажется

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

Клиент заказал разработку сайта.

Ожидание: все готово еще вчера.
Реальность: составление ТЗ, прототипирование, доработки, конфликты, снова доработки, и только потом результат.

Читать далее

Автоматически обновляем дату завтрашнего дня в Тильде. Пошаговая инструкция на чистом JS

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

Автообновление завтрашнего дня в Тильде. Как добавить +1 день внутри текста в Tilda. Пошаговая инструкция.

Если вы сделали сайт на Tilda и вам требуется добавить дату завтрашнего дня, то эта статья для вас. Данный метод позволяет добавить дату куда угодно в любое место на сайте и с наступлением нового дня будет автоматически добавлять завтрашний день. Код сделан на чистом JavaScript что делает его универсальным и не требует добавления сторонних библиотек.

Читать далее

Создание бота в дискорде с деплоем на сервер за 5 минут

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

Доброго времени суток, уважаемые читатели. В этой статье мы поговорим о том как сделать простейшего бота в Discord на Python с базой данных SQlite3 и задеплоим его с использованием GitOps-подхода за три команды в терминале.

Функционал бота будет следующим:

1. Вывод пинга: 

- Бот отвечает на команду /пинг, отправляя обратно сообщение с текущим пингом на запущенном сервере.

2. Выдача роли: 

Читать далее

Знакомство со слоем абстракции Netflix для хранилищ данных типа «ключ-значение»

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

Наша компания — Netflix — способна организовывать бесперебойную, высококачественную потоковую передачу видео миллионам пользователей благодаря своей надёжной глобальной серверной инфраструктуре. В самом центре этой инфраструктуры лежит множество онлайновых распределённых баз данных. Среди них — Apache Cassandra — NoSQL-СУБД, известная высокой доступностью и хорошей масштабируемостью. Cassandra играет роль опорной технологии для множества самых разных возможностей Netflix: от механизма входа пользователя в систему — до хранения истории просмотренных материалов и до поддержки аналитики реального времени и прямых трансляций.

Со временем появлялись новые базы данных типа «ключ-значение» (Key-Value, KV), владельцы сервисов вводили в строй новый функционал. В результате мы столкнулись с массой сложностей, связанных с неправильным использованием хранилищ данных. Во-первых — разработчикам сложно оперировать такими понятиями, как производительность хранилищ данных, согласованность и устойчивость данных. Ведь речь идёт о взаимодействии со сложной системой глобальных масштабов, представленной множеством хранилищ. Во-вторых — разработчикам приходилось постоянно переучиваться, осваивая новые подходы к моделированию данных и распространённые, но очень важные паттерны доступа к данным. В перечень сложностей, встающих перед разработчиками, входят высокие задержки, которым подвержен небольшой процент запросов, находящихся в «хвосте» распределения задержек (tail latency) и идемпотентность операций. Тут же можно упомянуть и поддержку работы «широких» разделов хранилищ с множеством строк, и работу в условиях, когда для хранения данных применяется единственный «толстый» столбец, и медленную пагинацию ответов. Кроме того — наши системы были связаны с множеством собственных API разных баз данных — с API, которые постоянно развивались, и в которых иногда появлялись изменения, нарушающие обратную совместимость. Всё это привело к тому, что инженеры, в масштабах всей организации, тратили много времени на поддержку и оптимизацию механизмов доступа к данным наших микросервисов.

Читать далее

Дайджест новостей по PHP, Symfony и Laravel за ноябрь'2024

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

Привет Хабр!

Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за ноябрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

Способ организации gRPC контрактов и их автоматизация для микросервисов

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

Привет! Меня зовут Данил, я бэкенд разработчик.

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

Читать далее

Голосовая аутентификация через GPT

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

Около трёх месяцев назад я задумался о том, что в ближайшем будущем взаимодействие человека с техносферой (программно-аппаратно-сетевой инфраструктурой) будет происходить скорее через мессенджеры, такие как Telegram, чем через привычный браузер. Частое использование чатов на смартфоне быстро подтолкнуло меня к попытке снова попробовать голосовой ввод вместо привычных тапов по виртуальной клавиатуре или набора слов жестами. К моему приятному удивлению, распознавание голоса сейчас достигло очень высокого уровня как на Android, так и на iPhone. Причём настолько высокого, что STT (speech-to-text) стал для меня основным способом ввода текста в чатах, включая браузер.

Поскольку искусственный интеллект в целом, и технологии OpenAI в частности, уже практически стали повседневной нормой (по крайней мере, для меня), я, естественно, начал использовать голосовое общение и в GPT-чатах. А узнав о действиях (actions) в настраиваемых GPT-чатах, я сразу загорелся идеей соединить GPT-чат с каким-нибудь внешним приложением. Однако на этом этапе встал вопрос: как аутентифицировать пользователей чата во внешнем приложении? Несмотря на то что OpenAI предлагает использовать OAuth 2.0 для интеграции, в этой статье я рассмотрю альтернативный вариант — парольную аутентификацию, которая, на мой взгляд, лучше подходит для голосового взаимодействия.

Читать далее

JavaScript-фреймворки и библиотеки, на которые стоит обратить внимание в 2025 году

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

Привет! Это Саша Калач, разработчик в МТС Диджитал. Сегодня поделюсь подборкой фреймворков и библиотек, которые могут быть полезны JavaScript-разработчику. О самых известных, вроде React, Vue.js, Next.js, говорить не буду, о них и так все знают. Вместо этого предлагаю посмотреть менее популярные инструменты. Если вы пользуетесь другими фреймворками и библиотеками, которые не вошли в подборку — пишите о них в комментариях. Поехали!

Читать далее

Дизайн Системы

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

Эта статья расскажет о том, что такое Дизайн Системы.

Не какая-то конкретная Дизайн Система от конкретной компании, а в общем и целом. Термин не самый простой, и, на мой взгляд, слишком уж абстрактный.

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

Читать далее

Как мы 2 гбита видео из гаража пытались раздать

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

Решили мы попробовать для хранения видео файлов использовать garage. Он казалось бы, идеально подходит для наших целей — запускается на древнем консьюмерском железе, требований к латенси сети у него нет, к ошибкам администрирования устойчив. А ещё файлы отдает с низкой задержкой, причем даже если запросить кусок из середины файла. Вроде бы красота, но мы ошиблись.

Никогда не пытайтесь сделать домашний интернет своей опорной инфраструктурой.

Читать далее

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

Как мы разработали SaaS-сервис для поиска компаний: опыт создания B2B-базы данных с 15 млн организаций

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

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

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

Читать далее

OAuth 2.0, OpenID Connect и SSO для самых маленьких

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

Всем привет! Меня зовут Павел, я Head of Development в Банки.ру. Сегодня хочу погрузиться с вами в, кажется, уже давно заезженные темы: Single sign-on, OAuth, OpenID и нюансы их реализации. 

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

Я решил восполнить этот пробел и подготовил именно такой материал.
В этой статье погрузимся в теоретическую часть и рассмотрим: 

– основные Flow OAuth 2.0 и отдельно Authorization Code Flow with Proof Key for Code Exchange;
– OpenID Connect (OIDC);
– Single Sign-On или SSO: схему реализации и применение SSO в мобильных и веб-приложениях.

Читать далее

Антиспам защита для WordPress форм без ущерба личным данным посетителей

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

Формы — важная часть любого сайта. С их помощью посетители и клиенты могут связаться с вами. Контактные формы, подписка на рассылку, обратная связь — всё это необходимо нам чтобы установить прямой контакт с посетителями. Но, как и любой открытый канал, формы часто привлекают злоумышленников.

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

Читать далее

Самая сложная директива Taiga UI

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

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

В этой статье исследуем директиву ActiveZone — подход, который мы использовали в библиотеке компонентов Taiga UI. Она полагается на два моих любимых инструмента Angular: Dependency Injection и RxJS. Нам понадобится глубокое понимание нативных событий DOM. Как бы ни был далек Angular от чистого JavaScript и DOM, он все равно полагается на старые добрые Web API, поэтому важно качать свои знания и в области ванильного frontend.

Читать далее

SMS-уведомления о снижении цен: внедряем на Wordpress с API Exolve

Время на прочтение9 мин
Количество просмотров678

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner платформы МТС Exolve. Сегодня мы поговорим об одной интересной и полезной фиче — автоматических SMS-оповещениях о снижении цены на товар из вишлиста.

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

Читать далее

Руководство по Convex. Часть 2

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


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


В этой серии статей я рассказываю о Convex — новом открытом и бесплатном решении BaaS (Backend as a Service — бэкенд как услуга), которое выглядит очень многообещающе и быстро набирает популярность среди разработчиков.


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


Эта вторая часть серии, в которой мы поговорим об аутентификации и авторизации.


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

250 000 товаров и миллионы характеристик: как мы скрестили Битрикс с Symfony и MongoDB

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

10 лет назад мы начинали бизнес студии с разработки сайтов на CMS 1С-Битрикс. Сегодня наш основной стек связан с подходом Single Page Application на Symfony и Nuxt, но клиенты по-прежнему просят сайты на Битриксе.

Отказываться от работы не хочется, однако приходится обходить ограничения Битрикса, чтобы делать быстрые и качественные продукты. В этой статье о том, как мы написали сервис для обработки больших объемов данных на Symfony и MongoDB и интегрировали его с 1С-Битрикс.

Читать далее

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