Обновить
434.11

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

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

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

Интеграция модели GPT-4 Omni в телеграм бота на Python

Время на прочтение5 мин
Охват и читатели6.2K

13 мая 2024 года, OpenAI официально представила новую модель Omni. 

Преимущества модели в том, что она умеет работать со всем контентом (текстом, звуком и изображениями) и знает 50 языков.

И сегодня мы интегрируем эту модель в небольшого бота на Python.

Читать далее

Сериализация сущностей с помощью декораторов на TypeScript

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

В процессе написания приложения с более-менее сложной бизнес-логикой на фронтенде возникает необходимость держать всю эту логику на слое предметной области в "толстых" моделях. Например, для работы с формой, которая отображает на пользовательский интерфейс создание или редактирование сущности с большим количеством взаимозависимых свойств. Если "размазать" обработчики изменения состояния этой сущности и входящих в неё подсущностей по слою Application, легко можно потерять целостность модели в разных actions, reducers, валидаторах. Такой код будет трудно читать, отлаживать и поддерживать.

Можно использовать паттерн Aggregate Root для единой точки входа управления моделью, тогда упростится поддержка инварианта такой сущности. Методы доступа к свойствам и методы, меняющие состояние сущности, можно вызывать из одного объекта, а сам объект будет обеспечивать целостность и валидность своих данных. Но здесь появляется ещё одна проблема: сериализация. К примеру, бывает нужно сохранить всю сущность в каком-нибудь хранилище -- localStorage, redux store. Или отправить на бэкэнд для сохранения. Или событием обновить пользовательский интерфейс, а в payload события при этом надо передать часть сущности в виде простого плоского объекта. В этих случаях нам нужна выжимка данных из сущности, которую можно будет восстановить потом при запросе из хранилища для дальнейшей работы. Это особенно актуально, если на проекте используется SSR, там данные, которые собираются для страницы на серверной стороне, должны быть сериализуемыми.

Читать далее

Как я создавал онлайн игру «нарды» (часть вторая). Сервер

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

Всем привет!

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

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

Читать далее

Телеграм-бот магазин на Python. Создание с нуля

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели29K

В этой статье я покажу, как сделать Telegram-бота для онлайн-магазина на Python, который позволяет пользователям просматривать каталог товаров, добавлять их в корзину и оформлять заказы. Мы также рассмотрим, как интегрировать платежи и работать с базой данных для хранения информации о товарах и корзинах пользователей.

Читать далее

Клиент-серверная архитектура. SA для самых маленьких

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

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

Погрузиться в прекрасное

PHP и Laravel дайджест новостей за июль 2024 года

Время на прочтение7 мин
Охват и читатели3.2K

Это дайджест PHP и Laravel от CutCode. Давайте посмотрим, что произошло за прошедший месяц в мире PHP и Laravel.

Читать далее

Расширяем кругозор: Garbage Collector в V8

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

Всем привет, Хабрчане! Во время подготовки к очередному тех-собесу, я задался вопросом: а как в V8 работает Garbage Collector, что такое Heap и Stack, про которые я неоднократно слышал? После прочтения нескольких англоязычных и русскоязычных ресурсов понял, что одни копают очень глубоко, а другие дают лишь минимальную базу. Я решил сделать что-то среднее и с агрегировать все эти знания в одну статью и плавно погрузить читателя в тему.

Читать далее

Внедряем DevSecOps в процесс разработки. Часть 4. Этап Test-time Checks, обзор инструментов

Время на прочтение6 мин
Охват и читатели1.7K

Привет! На связи Олег Казаков из Spectr. 

В предыдущей части статьи я рассказал о контроле безопасности артефактов сборки в процессе проверки на безопасность. Сегодня поговорим о следующем этапе DevSecOps — Test-time Checks.

Узнать больше про DevSecOps

Нагрузочное тестирование в разработке веб-приложений

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели4.9K

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

Читать далее

Как улучшить работу сайта с помощью оптимизации изображений Image Stack

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

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

Чтобы ускорить загрузку страниц и уменьшить объем передаваемых данных, существует Image Stack — инструмент CDN. Он позволяет автоматически оптимизировать изображения, улучшать SEO-результаты и повышать уровень конверсии за счет лучшего пользовательского опыта.

Читать далее

Telegram Боты на Aiogram 3.x: Простой бот на вебхуках с локальным запуском и деплоем

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели13K

Друзья, приветствую!

Если вы следите за моими статьями, то знаете, что на Хабре у меня опубликовано более 10 объемных публикаций на тему разработки телеграмм ботов через замечательный Python-фреймворк Aiogram 3.

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

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

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

В общем, будет интересно и позновательно!

Читать далее

Никаких стероидов, только продуктовый подход: как мы увеличили конверсию сайта World Class на 116%

Время на прочтение7 мин
Охват и читатели1.1K

Всем привет! На связи Александр Голенищев, руководитель проектов в AGIMA. Не так давно мы зарелизили сайт сети фитнес-клубов World Class. Главная фишка проекта — что мы вовсю использовали продуктовый подход. Это когда все задачи, идеи и решения основаны на исследованиях. А вторая главная фишка — что ребята из World Class оказались очень открытыми и разрешили нам рассказать обо всех этапах работы. Так что у нас есть уникальная возможность посмотреть на проект изнутри — оценить процессы и цифры.

Читать далее

PWA vs Native: где приложения для iOS и Android больше никогда не пригодятся

Время на прочтение6 мин
Охват и читатели4.4K

К прогрессивным веб-приложениям у разработчиков, бизнеса и пользователей все еще очень много вопросов о безопасности и технических возможностях. Но и адвокаты PWA не молчат. Мы с командой Clevertec обсудили аргументы за и против и делимся результатами с вами.

Узнать все "за" и "против" PWA

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

5 способов избежать сбоев в работе интернет-магазина и перестать считать упущенную прибыль

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели676

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

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

Читать далее

«От идеи до продакшена»: как разработать веб-приложение и загрузить в VK Mini Apps

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

Привет, Хабр! Меня зовут Егор, я независимый разработчик сервисов VK Mini Apps — открытой платформы мини‑приложений и игр, которые доступны в VK, ОК, Почте Mail.ru, браузере Atom и RuStore. Ими можно пользоваться без установки на устройства, а число уникальных пользователей достигает 45 миллионов в месяц.

На базе VK Mini Apps можно легко создать приложение и поделиться им с друзьями. А если разработка окажется успешной — загрузить в каталог мини-приложений VK. Об этом всем подробнее поговорим в статье. Создадим приложение для мониторинга погоды, задеплоим на сервер и загрузим в VK Mini Apps.
Читать дальше →

Магия CSS на практике: советы по вёрстке от гика. Часть 3

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


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


Сегодня мы рассмотрим:

  • подходы при стилизации элементов для вёрстки текста;
  • какая может быть проблема с радиокнопками в вашем проекте;
  • как задать размеры с использованием функций min() и max();
  • CSS-наследование и свойство line-height;
  • для чего делать подсказки в имени класса.

Давайте посмотрим, что я вам подготовил.

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

Публикуем материалы Ural Digital Weekend 2024 и подводим итоги

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели1.1K

2-3 августа в Перми мы провели уже третью конференцию для разработчиков и управленцев — Ural Digital Weekend 2024. В статье мы подводим итоги события, делимся полезными материалами и фотоотчетом.

Читать далее

Бот-парсер маркетплейса на Python

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

Всем привет! В этой статье я решил показать один из методов парсинга на Python на примере маркетплейса Wildberries.

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

В проекте будут использоваться следующие библиотеки:

Читать далее

Как я создавал онлайн игру «нарды» (часть первая)

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

Всем привет!

Время от времени меня сильно тянет на разработку игр и я даже публиковал на любимом хабре пару статей (здесь и тут) о том, что из этого получается. И вот в очередной раз, когда желание пересилило все остальное я почему-то решил, что могу сделать "простую" игру "длинные нарды" за несколько дней. Если вам интересно что из этого вышло, то усаживайтесь поудобнее, сегодня я расскажу о том, как все начиналось.

Читать далее

Атрибут charset и важность его использования

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

Какие предположения можно сделать относительно следующего HTTP ответа сервера?

Глядя на этот небольшой фрагмент HTTP ответа, можно предположить, что веб-приложение, вероятно, содержит уязвимость XSS.

Почему это возможно? Что обращает на себя внимание в этом ответе сервера?

Вы будете правы, если сомневаетесь насчет заголовка Content-Type. В нем есть незначительный недостаток - отсутствие атрибута charset.  Это может казаться неважным, однако, в этой статье мы объясним, как злоумышленники могут использовать этот недостаток для внедрения произвольного JavaScript кода на веб-сайт, сознательно изменяя набор символов, который ожидает браузер.

Читать далее

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