Обновить
439.4

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

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

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

Вы должны перейти на Podman сейчас же. Но это не точно…

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

Podman – один из множества инструментов для контейнеризации. Но в отличие от Docker, используется он не часто, даже в тестировании или хотя бы pet-проектах. 

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

Но Podman, будучи на 4 года младше Docker, а также, в теории, фундаментально безопаснее, подобного приёма не получил. Быть может, он его всё-таки заслуживает?
Возможно, к ужасу ваших DevOps и SRE-инженеров вам стоит уже сейчас бежать и громить выстроенные пайплайны оркестрации кластеров Docker-контейнеров, чтобы менять всё на Podman?!

Читать далее

Почему технология Macromedia Flash не выжила?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.2K
В прошлом году я сделал большой пост про историю Macromedia Flash. Спасибо всем за интересные комментарии и вопросы. История и технические детали подробно в первом посте. По итогам той публикации и обсуждения, я записал часовое видео добавив мелкие детали, несколько личных историй (например, про зарплаты), мой опыт во Flash, что мы делали и как. Вот это видео, а внутри поста я сделал хронологию по годам: что и как происходило в мире Flash технологий.



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

Pinterest: разработка всеобъемлющей JSON-системы логирования для клиентских приложений

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

В начале 2020 года у приложения Pinterest для iOS часто возникала серьёзная проблема, связанная с нехваткой памяти (у нас есть материал об этом). Тогда мы поняли, что у нас нет ни достаточно подробных сведений о работе приложений, ни хорошей системы, позволяющей анализировать подобные сведения в целях мониторинга приложений и решения проблем.

Читать далее

Кратко про основные техники кеширования в браузере

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

Сегодня мы поговорим о крайне важной, но порой недооцененной теме — кешировании в браузере.

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

В статье рассмотрим несколько основных методов кеширования, таких как использование HTTP заголовков Cache-Control, ETag, и If-Modified-Since, а такжеLocalStorage.

Читать далее

Мега-Учебник Flask Глава 16: Полнотекстовый поиск (издание 2024)

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

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

Начать изучение

Как я написал загрузчик YouTube видео на Ktor + HTMX. Убийца React?

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

Мы вырастили монстра, который больше не нужен (с)

Рассмотрим возможности применения модного фреймворка HTMX в связке с Ktor на примере написания загрузчика видео.

Читать далее

Автотесты на Postman в связке с Newman, Gitlab CI и AllureTestops: как организовать тестирование бэка на проекте

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

Всем привет!

Меня зовут Гребенюк Гузель, я QA-руководитель группы тестирования в АЭРО. Мы занимаемся разработкой eCommerce- и data-решений для крупного бизнеса.

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

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

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

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

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

Читать далее

Разработка простого приложения для заметок на HappyX

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

Как создать веб-приложение, если вы пишите на Nim? Что такое HappyX и как можно создать на нем приложение для заметок? Обо всем этом вы узнаете в полной статье.

Читать далее

Управление зависимостями в Javascript заходит на новый виток? Работа с ES модулями без сборщиков

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

Изначально эта статья задумывалась, как рассказ о различиях и назначении полей dependencies, devDependencies и peerDependencies в package.json. Эту тему выбрали ребята в моем телеграм-канале, кстати подписывайтесь, если еще не. Однако, когда я посмотрел количество контента на эту тему, то понял, что его достаточно даже в русском сегменте. При этом я прочитал одну статью, которая показалась мне очень хорошей, а также там были мысли на тему будущего управления зависимостями.

В итоге, я решил кратко пересказать вышеупомянутую статью, чтобы лучше самому усвоить тему, а также набросать проект по управлению зависимостями прямо на клиенте, через ES Modules. Так что вы можете прочитать либо оригинальную и полную статью у автора, либо сокращенную версию в первой половине этой статьи. А разбор работы ESM будет во второй половине.

Читать далее

Переезд на Spring Boot 3.0 c версии 2.0: какие сложности могут возникнуть

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

Привет, Хабр! Я Артем Киреев, ИТ‑инженер в СберТехе. Мы с командой занимаемся развитием продукта из состава Platform V Synapse — децентрализованной платформы для задач интеграции. Мы стремимся поддерживать актуальность стека, на котором разрабатываем наши продукты, и регулярно отслеживаем все изменения. Обратившись к таблице поддерживаемых версий на официальном сайте Spring, мы обнаружили, что версии Spring Boot ниже 3.0 больше не поддерживаются. Поэтому мы решили, что нужно перевести проект на последнюю из существующих версий. На момент написания статьи это Spring Boot 3.2.

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

Читать далее

Как подменять данные в SSR-сайтах

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

Привет, на связи Surf Web Team и Никита, QA Surf! 

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

Читать далье

Как я выстрелил себе в ногу, не соблюдая паттерны

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

Всем привет, меня зовут Андрей, я — php-разработчик в wpp.digital.

Сегодня я поделюсь с вами историей. Она о том, как поверхностное понимание (или непонимание) паттернов проектирования отстрелило мне ногу. А еще поделюсь примером реализации простой истины: знание чего-то не равно умению это применять. Кстати, главным героем поэмы являюсь (неожиданная информация) я.

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

Теперь к задаче.

Читать далее

Знакомьтесь, WOPI! Как настроить работу с документами в браузере

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

Всем привет! Меня зовут Алексей Симонов. Я — разработчик в компании ELMA. 

Сегодня мы поговорим про протокол под названием WOPI. Он позволяет работать с файлами документов с использованием облачного сервера. Вы выбираете файл который хотите посмотреть или отредактировать —  и он тут же открывается в веб-редакторе в вашем браузере. WOPI поддерживают такие продукты, как Onlyoffice, Р7-Офис, Мой Офис, Microsoft Online Office, а также ELMA365, в разработке которой я и участвую.

Внутри нашей Low-code платформы существуют пользовательские модули. Они добавляют системе гибкости за счет расширения функционала. Подробнее о модулях тут. В рамках реализации одного такого модуля я и познакомился с WOPI-протоколом. Задача заключалась в организации работы с файлами с использованием различных облачных серверов документов.

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

Читать далее

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

От RFC до RCE, или как неожиданная особенность библиотечного метода стала причиной уязвимости

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

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

Читать далее

Авторизация через Yandex, ВК, Telegram с помощью Laravel Socialite

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

В интернете есть множество статей и руководств по интеграции OAuth авторизации через популярных провайдеров, таких как Google, Facebook и Twitter, в проекты на Laravel. Но как это сделать через Yandex, ВК и т.п. информации в рунете вообще нет.

Буду показывать на примере Яндекса. Через другие провайдеры делайте аналогично.

Читать далее

Полный гайд по UI-китам: как их создавать, подключать и ничего не бояться

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

Привет! Я Леша Кузьмин, главный про фронтенду в AGIMA. Мы с коллегами решили суммировать наш опыт по подготовке UI-китов и сделать большую и внятную инструкцию для новичков. Во-первых, это удобно — будем давать эту статью нашим стажерам и падаванам. Во-вторых, нам не жалко — читайте, делитесь опытом, задавайте вопросы в комментариях.

Ниже разбираем всё с самого начала: от «зачем это вообще нужно» до «как использовать на реальном проекте». А в самом конце найдете репозиторий с фрагментами кода, которые можно использовать в своей работе. Статья для начинающих и не только начинающих Frontend-разработчиков. За помощь в ее подготовке благодарю мою коллегу Ангелину Николаеву.

Читать далее

Сила кэширования: повышаем производительность API и масштабируемость

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

В этой статье о том, как использовать кэширование для оптимальной производительности API и веб-приложений. А также подробный обзор на методы кэширования на стороне клиента, на стороне сервера и в CDN для более быстрой и надежной работы.

Читать далее

Многопоточность JavaScript с SharedArrayBuffer и Atomics: основы

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

JavaScript по традиции известен как однопоточный язык. Т.е код выполняется последовательно, и одновременное выполнение нескольких задач может быть проблематичным. Если код сталкивается с тяжелыми вычислительными задачами, это может привести к задержкам и замедлению интерфейса юзера. Поэтому один поток не для каких-либо интенсивных вычислений или обработки больших объемов данных.

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

Здесь помогают SharedArrayBuffer и Atomics.

Читать далее

Загрузка es-модулей в браузерные приложения

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

Мне тут на днях попеняли, что, мол, я не в курсе, "что из esm до сих пор нельзя собрать бандл без транспиляции". Ну что я могу сказать... я действительно не в курсе :) На мой взгляд, es-модули придумали как раз для того, чтобы загружать по мере необходимости JS-код непосредственно в браузер, и собирать модули в бандлы - это, ну... как гладить кошку против шерсти.

Я понимаю, что традиции / привычки / требования бизнеса / обратная совместимость / корпоративная этика и т.п. говорят о том, что код для браузерных приложений должен поставляться в бандлах и точка! Тем не менее, в некоторых случаях (малые приложения, быстрое прототипирование, распределённая разработка) сборка бандлов является излишней и код в браузер можно и нужно загружать непосредственно в виде es-модулей.

Читать далее

Frontend. Поток данных

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

Здравствуйте :)

Коротко о чем тут, чтобы вы могли понять нужно ли оно вам или нет.

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

Материал может быть полезен как для новичков, так и для более опытных.

Примеры будут на React и Effector, но это не важно, потому что тут важна идея, а не реализация. К тому же это везде будет примерно одинаково выглядеть.В конце будут так же ссылки на примеры с svelte + effector и react + redux thunk

Читать далее

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