Pull to refresh
3
0.5

WEB-программист, сетевой администратор

Send message

Как мы боролись с лишними рендерами в react

Level of difficultyEasy
Reading time7 min
Views7.9K

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

Читать далее

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

Level of difficultyMedium
Reading time8 min
Views4.9K

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

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

Читать далее

15 мс на ответ: как мы добились высокой скорости работы API Gateway

Level of difficultyMedium
Reading time6 min
Views11K

Меня зовут Николай Кокоулин, я бэкенд-разработчик в Ви.Tech — это IT-дочка ВсеИнструменты.ру. В этой статье поделюсь нашим опытом о том, как мы в ходе разделения монолитного приложения на микросервисы столкнулись с вызовом: как сохранить производительность и масштабируемость системы при росте нагрузки.

Читать далее

Ностальгические игры: Worms World Party

Level of difficultyEasy
Reading time14 min
Views6K

А вы знали, что первая версия Worms создавалась на... калькуляторе? Забавно, но именно с этого скромного начала начался путь культовой серии. А то, что компания Team17, хорошо знакомая всем поклонникам «Червяков» и выпускавшая их десятилетиями, на самом деле не автор оригинальной идеи? История появления этой культовой серии полна неожиданных поворотов, и, пожалуй, именно они превратили Worms в столь нестандартную игру, что покорила сердца геймеров по всему миру!

А Worms World Party, как мне кажется, является проектом вне времени – актуальным что тогда, что сейчас! Помню, как мы собирались у друга и запускали «Червяков» – и вот уже прошла прорва часов, а мы всё никак не можем оторваться. Кажется, никакая другая игра тогда не вызывала такого же безумного смеха и общего веселья: бросок банано-бомбы, пытаешься укрыться в земляной норе и – бац! – промазал, и она отлетает в твою сторону! Взрыв, и твой червяк улетает в невозвратном полёте вместе со всеми надеждами на победу. Море хохота и издёвок от товарищей и неимоверное желание реванша! Это были по-настоящему ламповые времена, которые, к сожалению, уже не вернуть. Но попробовать погрузиться в атмосферу тех лет и сыграть в неустаревающую классику – можно без проблем и сегодня. Благо в конце статьи я подготовил для вас множество различных сборок на любой вкус, чтобы без поисков сразу же скачать и сыграть в любимый проект!

А я тем временем расскажу, в чём кроется особый шарм «Червяков»: как рождалась эта идея и что сделало её настолько популярной, что серия до сих пор не сходит с игровой арены. Надеюсь, вам будет приятно вспомнить старые дни – и захочется снова присоединиться к этим безумным баталиям!

Читать далее

Мне надоело заполнять Word формы и теперь это делает ИИ

Level of difficultyMedium
Reading time10 min
Views13K

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

TLDR: Исходный код...

Читать далее

Миф о золотых горах IT: Почему высокие зарплаты в IT — исключение, а не правило

Reading time6 min
Views7K


Личный опыт и анализ рынка: как школы и курсы создают иллюзии, а реальность кусается

Каждый видел рекламу: «Станьте программистом за 6 месяцев! Зарплаты от 200 тысяч!». Школы и курсы рисуют IT как страну обетованную. Но когда я посмотрел на вакансии стажеров/джунов в регионах («от 40 тыс. рублей») и поговорил с друзьями из нефтянки и медицины, всё встало на места. Разберу, почему «высокие зарплаты в IT» — опасный миф. Который, как ни странно, транслируют даже на Хабре. Можно поставить вопрос иначе: в IT мы такие особые? Или это просто самая массовая инженерная профессия «среднего класса» на спаде хайпа.

Читать далее

Для защиты своего сервера я использую zip-бомбы

Level of difficultyEasy
Reading time3 min
Views86K

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

15 команд Git, которые покрывают 90% повседневной работы разработчика

Level of difficultyMedium
Reading time9 min
Views80K

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

Читать далее

Как я строю удобную инфраструктуру вокруг Python-проектов: линтеры, Poetry, CI/CD и Docker

Level of difficultyMedium
Reading time7 min
Views13K

Poetry вместо pip, Ruff вместо flake8, FastAPI вместо ручной документации. Что реально упрощает жизнь Python-разработчику сегодня — на примерах и с реальными конфигами.

Читать далее

Пример проектирования, ориентированного на домен: От хаоса к чистой архитектуре

Level of difficultyMedium
Reading time14 min
Views7.1K

Исследование принципов Domain-driven Design (DDD) на примере кейса "Аутсорсинг"

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

Читать далее

CI/CD для чайников — разберитесь, и начните автоматизировать рутину в разработке. Часть 3. Его величество, деплой

Level of difficultyEasy
Reading time14 min
Views12K

Пишу про полезные материалы про IT, и собираю свой ламповый нетворкинг тут - https://t.me/+434aQiGpZtAyNTU6. Присоединяйтесь!

Оглавление.

Читать далее

Kubernetes на кончиках пальцев

Level of difficultyEasy
Reading time9 min
Views3.2K

Привет, на CKA курсе туторы нарочито вдалбливают последовательность действи: set the cluster, set the namespace, set the pod... И все это происходит в консоли, используя kubectl - консольная утилита для управления k8s кластерами. Мне настолько это вдолбилось что я решил это автоматизировать. У меня уже был интересный проект автоматизации ssh подключений (sshto), не долго думая, я взял его за основу и написал kui. Это bash скрипт, dialog обёртка для kubectl. У диалога есть приятная фича присваивать горячку каждому пункту меню по первому символу. Это очень удобно, в результате весь k8s кластер оказывается у вас на кончиках пальцев.

что там на пальцах

Биллинг ИТ-компании на laravel

Level of difficultyEasy
Reading time5 min
Views1.2K

Обычно мы рассказываем, как помогаем нашим клиентам. Но сегодня разговор особенный — заказчиком биллинговой системы для ИТ-компании выступила сама ИНТЕРВОЛГА!

Когда мы увидели, что наши клиенты готовы работать по Agile-методологии и модели Time & Material (почасовая оплата), мы столкнулись с новым вызовом: управление проектами стало сложнее, а объем отчетности существенно вырос.

Один из наших ключевых принципов в работе с заказчиками — всегда говорить правду. В формате Time & Material это особенно важно: прозрачность должна быть полной — как в части “Time” (затраченное время), так и “Material” (стоимость работ).

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

На первый взгляд задача казалась простой:

ОБЩЕЕ ВРЕМЯ × СТАВКА ЧАСА = ОБЩАЯ СТОИМОСТЬ

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

Проектные менеджеры буквально становились магами Excel, применяя сложные формулы и сводные таблицы. Создание одного отчета занимало от 30 до 50 минут, а у каждого менеджера было несколько клиентов.

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

Читать далее

FastExcelWriter — избавление от проклятия PhpSpreadsheet

Level of difficultyMedium
Reading time3 min
Views6.1K

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

Библиотека PhpSpreadsheet, казалось бы, спроектирована очень правильно: листы таблицы, строки, ячейки, прочие сущности - это все классы, стили, форматы и всевозможные свойства тоже состоят из классов. И когда создается таблица, то в памяти создается огромное количество связанных между собой объектов, им задаются свойства, выполняются всевозможные манипуляции, ячейки заполняются данными, всё-всё это держится в памяти, и пишется в файл только в момент сохранения.

И вот однажды, когда ресурсы на генерацию большого Excel-файла превысили все разумные значения, я начал искать альтернативу известной библиотеке. Альтернатива нашлась. В отличие от PhpSpreadsheet, тут все было упаковано в один класс, возможности по форматированию и стилям - скромнее некуда, но зато XLSX-файл создавался в разы быстрее, а потребление памяти было вообще копеечное. А все потому, что тут был реализован совсем иной принцип - данные не накапливались в памяти, а построчно сразу выводились в файл. Вдохновившись этой идеей, я и создал свою библиотеку FastExcelWriter.

Читать далее

DevOps инфраструктура для стартапов ч.1

Level of difficultyEasy
Reading time7 min
Views10K

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

Когда вы только начинаете делать стартап, инфраструктура кажется чем-то второстепенным. Важнее MVP, фичи, дизайн, пичдек. Но в какой-то момент всё внезапно перестаёт помещаться на одном сервере, руками деплоить становится больно, SSL не обновляется, а продакшн падает из-за перегрузки или забытого docker-compose up.

Kubernetes? Слишком сложно, долго и дорого. Монолит? Неудобно масштабировать. Мы искали третий путь — и нашли его.

Читать далее

Асинхронная обработка запросов в Python: необходимость или просто модное слово?

Reading time8 min
Views4.8K

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

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

Читать далее

Настроил легковесный мониторинг для домашнего сервера с интеграцией Telegram для алертов: опыт использования Beszel

Level of difficultyMedium
Reading time8 min
Views16K

В статье описывается процесс установки и настройки утилиты Beszel для мониторинга домашних серверов. Автор делится опытом работы с этой платформой, её преимуществами и недостатками, а также рассказывает о том, как интегрировать систему уведомлений в Telegram для быстрого реагирования на проблемы.

Читать далее

FastOpenAPI: автодокументация OpenAPI для разных фреймворков на Python

Level of difficultyMedium
Reading time22 min
Views2.9K

Всем привет! Меня зовут Никита Рыженков, и я хочу поделиться опытом разработки библиотеки FastOpenAPI. Это инструмент, который приносит удобный стиль маршрутизации FastAPI и автоматическую документацию OpenAPI в целый ряд Python-фреймворков. Идея родилась из личной боли: в одном проекте приходилось поддерживать OpenAPI-документацию сразу в нескольких фреймворках, и я устал дублировать решения под каждый из них. Вдохновившись лаконичностью FastAPI, я решил создать унифицированный подход для Flask, AioHttp, Sanic, Falcon, Starlette, Quart, Tornado – назвал его FastOpenAPI​. В этой статье расскажу, какие проблемы решает FastOpenAPI, как он устроен внутри и как им пользоваться с примерами кода под каждый поддерживаемый фреймворк.

Читать далее

Как я создал клон Pinterest с использованием Vue 3 и FastAPI

Level of difficultyEasy
Reading time7 min
Views4.5K

👋 Привет, Habr!

Вы когда-нибудь пытались найти качественный open-source клон Pinterest — с real-time функционалом, полноценной архитектурой, удобным UI и современной технологической основой? Я — да. И не нашёл. Поэтому решил создать свой.

Представляю вам Pinterest Clone — мой pet-проект, над которым я работал в одиночку 4 месяца, чтобы воссоздать не просто копию, а полнофункциональную платформу с реальным пользовательским опытом, максимально приближённым к оригиналу.

Читать далее

Техдолг. Большое руководство

Level of difficultyMedium
Reading time20 min
Views6.7K

Меня зовут Андрей Никольский, я Head of Platform в Банки.ру. Сегодня хочу обсудить не самую приятную, но важную тему — технический долг и как с ним работать.

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

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

Читать далее

Information

Rating
3,532-nd
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity