Как стать автором
Обновить
337.18

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

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

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

WebSocket: просто о сложном. Часть 2 — практическое применение и тонкости

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

С вами снова Юля, системный аналитик из EvApps и мы продолжаем разбираться в технологии WebSocket. В первой части (WebSocket для начинающих системных аналитиков: просто о сложном. Часть 1), мы познакомились с основами WebSocket, а теперь давайте заглянем под капот реального сайта, например, криптобиржи. Попробуем понять, как работает этот сложный механизм: что происходит, когда вы видите мгновенно меняющиеся котировки и графики, и что происходит “за кулисами”.

Читать далее

Адаптивная вёрстка с учётом размера шрифта пользователя и брейкпоинты

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров4.5K
На эту статью меня вдохновил вопрос из раздела Q&A «Как выбрать «опорные точки» перехода ширины экрана для стилей страниц сайта?». Занимаясь в последнее время адаптивной вёрсткой, я пришёл к нескольким выводам, которыми и хочу с вами здесь поделиться. Заодно разберём некоторые полезные (и не очень) техники для адаптивной вёрстки, и пересоберём Bootstrap с их учётом.


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

От хаоса к системе: как мы создавали корпоративный фронтенд-фреймворк

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

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

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

Меня зовут Сергей Шахов, я долгое время занимался развитием корпоративного фреймворка в нашей компании. Наш фреймворк помогает создавать командам пользовательские интерфейсы, иными словами, это фронтенд-фреймворк.

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

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

Читать далее

Как я набирал штат программистов с фрилансерских сайтов (в основном индусов)

Время на прочтение1 мин
Количество просмотров2.2K
Я использовал понравившиеся мне своим функционалом elance.com и odesk.com
Сначала создал работу типа «Нужен программист на Prestashop PHP» в описании написал, что мол реагируйте — а я посмотрю кого из вас взять.
Через сутки у меня было 71 новое предложение. Необходимо выработать систему — как их просматривать. Открываю каждого и смотрю на 2 вещи — наличие prestashop в skills и наличие работ на этом движке в портфолио.
Читать дальше →

Joomla-дайджест. 1-й квартал 2025 года

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

После долгого перерыва читайте все главные новости из мира Joomla с момента выхода Joomla 5.2.0 (15 октября 2024 года) в одной статье. Но для удобства в названии ограничимся первым кварталом 2025 года. Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla.

Читать далее

Событийный диспетчер отложенных задач на C#: консолидация и дедупликация данных в текущей инстанции

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

Всем привет, меня зовут Артур Богданов. Я занимаюсь проектированием, разработкой и оптимизацией высоконагруженных веб-приложений на ASP.NET Core.

Хочу поделиться с сообществом своей разработкой, которая позволяет использовать несколько фоновых задач (или «раннеров») для отложенной обработки консолидированных данных. Раннеры построены на шаблоне PubSub для асинхронного ожидания новых задач, что делает этот подход более реактивным, но менее ресурсоемким.

Читать далее

Как ускорить Varnish Cache и исключить его зависания

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

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

Читать далее

Как сделать хорошее API

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

Обстоятельно и подробно, на конкретных примерах рассказываю как спроектировать и реализовать API, за которое потом не будет стыдно.

Читать далее

Как сантехник стал IT-бизнесменом. Моя невыдуманная история на миллион долларов

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

Когда-то я думал, что успех — это прямая линия вверх. Ты молод, амбициозен, голоден, у тебя горят глаза, и ты искренне веришь, что сможешь всё. Ты начинаешь действовать немедленно. Осваиваешь технологии, создаёшь алгоритмы, пишешь код, запускаешь свои первые онлайн-проекты. Радуешься первым пользователям, первым деньгам, первым успехам — и ловишь себя на мысли: «Вот оно. Кажется, я ухватил бога за бороду!»

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

Ты морально выгорел, твой банковский счёт опустел, а за окном — не Кремниевая долина, а грустное зрелище провинциального серого городка.

Никто не предупреждал, что успех может быть временным, а падение - болезненным и очень личным.

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

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

Читать далее

Виджет CDEK с бэкендом на .NET

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

Всем привет. Некоторое время назад стояла задача интегрировать виджет CDEK в сайт на .NET. Код виджета доступен на github: фронт (ts) + бэкенд (php). При переносе на .NET с фронтом проблем нет. Кроме того, есть готовый скрипт, который можно подключить с cdn. Но при этом есть существенное ограничение для бэкенда: данный скрипт работает только с php.

В данной статье показано, как перевести виджет на бэкенд .NET. При этом фронтенд код остается неизменным. Прежде, чем начать, хочу предупредить, что данное решение никак не связано с официальной версией виджета и не поддерживается командой CDEK. В любой момент CDEK может изменить свой код без сохранения обратной совместимости, и решение, представленное здесь, может перестать работать. Тем не менее, думаю (вернее, мне хотелось бы так думать :) ), что информация, представленная в данной статье, может быть полезной как с точки зрения конечного результата, так и в образовательных целях.

Читать далее

Современные фронтенды

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

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

Читать далее

Разбираем Pino: как работает самый быстрый логер для Node.js

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

Pino — один из самых быстрых логгеров для Node.js, но как он устроен внутри? В этой статье мы углубимся в низкоуровневые механизмы: разберём, как работают транспорты, чем отличается multistream от pipeline, и как настроить логирование без потери производительности. Вы узнаете, как использовать child loggers, маскировать данные с redact и избегать типичных проблем. Этот материал для тех, кто хочет понять Pino на фундаментальном уровне и применять его с максимальной эффективностью.

Читать далее

Postman скрипт для обновления токена авторизации

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

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

В какой-то момент мне это надоело, и я задумался как это дело автоматизировать. Узнал, что можно написать Pre-request скрипт для коллекции в постмане, который будет выполняться перед каждым запросом, а уже в этом скрипте делать запрос токена авторизации.

С какими сложностями мне пришлось столкнуться... Ну во первых пришлось немного полазить в доке постмана, но там только поверхностно описано, не смог найти как сделать запрос. Гуглёж вопросов других бедолаг мне тоже не особо помог, т.к. там были немного другие кейсы.

Мне неожиданно помогла локально запущенная лама, которая мощно сходу дала мне хорошую подсказку, как сделать в скрипте постмана запрос с телом urlencoded и сохранить из него ответ в переменные. Чем я собственно и хотел поделиться.

Итак исходное положение. Имеем некую коллекцию запросов в постмане и все креды для авторизации сохранённые в переменных.

У нас есть запрос Auth, который получает токен авторизации.

Читать далее

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

Пишем тесты для php backend приложений

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

Статья нацелена в первую очередь на PHP backend-разработчиков уровня junior/middle, чтобы познакомить с теорией, которую спрашивают на собеседованиях, и с практическими примерами/советами, полезными для разработки.

Здесь хочу рассказать зачем вообще тестировать код, какие инструменты использовать, какие есть паттерны и тп.

Читать далее

Ну, поехали! Или как запускать проекты (QA)

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

Долго сидела девица и думала: что такого она умеет делать, за что ей платят денюжку. И тут осознала, запускать крупные стрессовые проекты. Быть QA для тревожника - это ну мед, медятина. А если еще ты вечная стартапница, кортизоловые горки обеспечены. Так как браться за объемные проекты, которые нужно было сделать "еще вчера" и при этом не отъезжать в отпуск в пнд?

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

А еще тут набор базовых правил, которые в принципе и так известны человечеству, но как и в случае здорового образа жизни лишним не будет проговорить о главных принципах (иначе откуда было бы столько коучей в нашем времени)?

Смоделируем ситуацию:

Читать далее

Создание простого хука для работы с формами в React на основе `zod`

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

Создание простого хука для работы с формами в React на основе zod

В этой статье мы реализуем удобный хук useForm, который минимизирует ререндеры и упрощает работу с формами в React, используя FormData для сбора данных и zod для валидации. Рассмотрим разницу между контролируемыми и неконтролируемыми компонентами.

Читать далее

Мой опыт вайб-кодинга. Сервис за выходные

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

Я занимаюсь разработкой уже больше пятнадцати лет. Наверное, меня можно отнести к “прошлому” поколению разработчиков — тем самым старперам, которые вручную писали код на высокоуровневых языках вроде Java, PHP, JavaScript, Go. Уже давно замечаю за собой, что становлюсь всё более консервативным в вопросах выбора инструментов и технологий для проектов, за которые отвечаю. Поэтому к AI-хайпу, копилотам, агентам и прочему отношусь с осторожностью и скепсисом.

Но всё же решил попробовать — и делюсь с вами своими наблюдениями: что работает, а что нет.

Сразу скажу: мне в целом понравилось. Я бы даже сказал, что впечатлён.

Читать далее

Как спасти digital-рынок от провала: хаос, ложная экспертиза и гонки со временем тормозят рост агентств

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

Рынок digital-услуг в России в 2025-м остается хаотичным, без четких стандартов и объективных критериев качества. Клиенты не могут заранее понять, кто выполнит работу хорошо, а кто просто продаст красивую презентацию. Изначальные причины этого понятны. Агентства не продают готовый продукт, а оказывают услугу по созданию этого продукта, поэтому их реальный уровень становится очевидным только после начала работы. Это базовые условия, проблем не в этом факте, а в том, что происходит дальше.

За этапом пресейла часто можно увидеть как даже масштабные проекты передают людям без опыта на непосредственное исполнение. Вчерашний школьник, освоивший Figma за пару вечеров, может легко получить заказ, потому что границы профессии размыты. Достаточно разместить вакансию «senior дизайнер» и посмотреть отклики, чтобы убедиться в масштабе проблемы, и кто сегодня считает себя дизайнерами такого уровня. HR разбираться с квалификацией не будут, им надо затыкать дыры, и так вчерашний студент может оказаться в перегруженном агентстве у которого нет лавки с резервом ресурса (потому что это дорого) на большом проекте, делать же кому-то нужно.

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

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

Читать далее

Создание анонимного чата в Telegram: Бот с MiniApp интерфейсом. Часть 2 — VueJS3 + Centrifugo с монетизацией приложения

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

В первой части мы построили бэкенд на FastAPI, Aiogram, Redis и Centrifugo, заложив основу для анонимного чата в Telegram. Теперь пришло время развернуть фронтенд и создать стильный и отзывчивый интерфейс с использованием VueJS 3 в формате Telegram MiniApp.

В этой статье мы:

Разработаем интерактивный UI с фильтрами поиска, анимациями загрузки и real-time чатом.
Настроим мгновенный обмен сообщениями через Centrifugo без лишних запросов к серверу.
Интегрируем монетизацию для заработка на рекламе в приложении.
Выполним деплой на удаленный сервер и подготовим проект к продакшену.

Если вы хотите создать быстрый, удобный и монетизируемый анонимный чат в Telegram, который работает без задержек и перезагрузок, — эта статья для вас!

Читать далее

Адаптивная flex-сетка на CSS: разбираем реализацию на атомы

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

Наверное, каждый, кто сталкивался с frontend`ом, хотя бы раз использовал адаптивную flex-сетку на N-ном количестве колонок. В данной статье мы не станем рассматривать область применения такого подхода, его плюсы и минусы, а разберем теорию и напишем собственное решение, с брейкпоинтами и настраиваемым спейсингом!

Данная статья, в первую очередь, будет полезна новичкам, однако надеюсь, что и опытные разработчики найдут в ней что-то интересное. Для упрощения жизни, будем использовать SCSS, продублировав CSS «под спойлер».

Читать далее