Как стать автором
Обновить
17
0
Антон @Bonio

PHP разработчик

Отправить сообщение

Строим систему доменных событий в модульном монолите

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

Всем привет! В этой статье хочу поделиться опытом построения системы доменных событий (domain events) в нашем модульном монолите и микросервисах, рассказать о том, как мы гарантируем их доставку, следим за консистентностью в рамках транзакций, используя transactional outbox, чем доменные события отличаются от интеграционных и всё это в рамках multi tenant приложения. Подробнее под катом.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии37

Строим эффективный сетевой обмен в PHP-микросервисах

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

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

Я техлид в команде Авито в проекте SLA. Сегодня расскажу, как мы оптимизировали сетевые вызовы, чтобы избежать проблем с сетью при переходе в микросервисный мир. Разговор будет про оптимизацию CURL-запросов, деградацию сервисов и FAIL-FAST-подходы.

Читать далее
Всего голосов 34: ↑33 и ↓1+41
Комментарии38

Долгоиграющие приложения на PHP

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

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

Меня зовут Александр Пряхин, я TechUnit Lead в Авито. В IT работаю уже 14 лет. Из них 8 лет руковожу командами. Параллельно с этим преподаю и менторю. Сегодня разберём, как готовить демонов на PHP — от А до Я, и почему это актуально.

Читать далее
Всего голосов 54: ↑52 и ↓2+58
Комментарии17

Оптимизация OneToMany коллекций Doctrine

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

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

Поехали!
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

RabbitMQ: дополнительные возможности

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

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

Что конкретно разберём:

расчёт количества консьюмеров по формуле Эрланга;

шардирование — различные способы балансировки;

дедупликацию сообщений в очереди;

многоуровневую очередь повторных попыток;

приоритеты сообщений.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Условные выражения в CSS

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

Мне нравится думать о CSS как о языке дизайна с условными выражениями. На протяжении многих лет CSS был известен как способ стилизации веб-страниц. Однако сегодня этот язык эволюционировал настолько, что в нём уже есть правила условных выражений. Любопытно то, что эти правила реализуются не напрямую (например, в CSS всё ещё нет if/else).

Инструменты дизайна наподобие Figma, Sketch и Adobe XD сильно облегчили жизнь дизайнеров, однако им всё равно не хватает той гибкости, которая есть у CSS.

В этой статье я расскажу о некоторых возможностях CSS, которые мы используем каждый день, и покажу, насколько они условны. Кроме того, я приведу несколько примеров, в которых CSS гораздо мощнее, чем инструменты дизайна.
Читать дальше →
Всего голосов 48: ↑46 и ↓2+64
Комментарии4

Как создавать иконки сайтов в 2022 году — всё о favicon

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

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

Статья глубоко погружается в тему, поэтому в начале я даю два фрагмента кода для тех, кто уже достаточно настрадался и понимает, что делать. Тем не менее, я всем рекомендую читать статью целиком!

Статья целиком
Всего голосов 39: ↑39 и ↓0+39
Комментарии33

Как открыть ИП в Грузии, в том числе удаленно?

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

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

Наиболее популярной формой легализации бизнеса и работы на территории Грузии является регистрация иностранного гражданина в организационно-правовой форме индивидуального предпринимателя.

Благоприятные факторы для ведения бизнеса в Грузии:

Читать далее
Всего голосов 15: ↑10 и ↓5+6
Комментарии23

Создание telegram web apps и взаимодействие с ними в телеграм ботах

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

В обновлении Bot API 6.0 телеграм-боты получили много новых функций. Из них для разработчиков самая примечательная - Telegram Web Apps (Веб-приложения внутри телеграм). С этим нововведением разработчики могут подключать к своим ботам web-приложения, которые открываются в дополнительном окне, что сильно расширяет инструментарий, а, следовательно и функционал ботов в телеграм.

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии42

Работающие способы выехать за рубеж, или Спасение утопающих — дело рук самих утопающих

Время на прочтение10 мин
Количество просмотров93K
Привет, хабровчане! Надеемся, в эти сложные времена вы стараетесь держаться, хотя это и непросто. Впрочем, рефлексировать можно бесконечно долго, толку от этого не будет, сейчас нужно действовать. Как именно — решать только вам самим. Мы лишь можем рассказать об одном из вариантов. А именно о релокации. В этом посте мы решили собрать вакансии из нашего бота в других странах, а также снабдить их информацией, как туда попасть. Подробную информацию по вакансиям (стек и требования) можно найти в самом боте Get Me It, для этого нужно пройти начальную анкету бота и выбрать Европу или СНГ.

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


Гребите сильнее!
Всего голосов 82: ↑59 и ↓23+60
Комментарии321

Безопасный CSS, или как писать универсальные стили

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

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

Читать статью
Всего голосов 26: ↑24 и ↓2+26
Комментарии12

Книга: проектирование API

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

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

Пока что написал первую часть — о принципах проектирования API «сверху вниз»

PDF-версию можно скачать отсюда

Вопросы, пожелания и предложения принимаются. Книга распространяется бесплатно на условиях CC-BY-NC. You're welcome!

Читать далее
Всего голосов 39: ↑38 и ↓1+47
Комментарии27

Принимаем криптовалютные платежи с Coinbase Commerce

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


Если Вы планиуете подключать криптовалютные платежи и еще не знакомы с Coinbase Commerce, стоит потратить 5 минут Вашего времени. Расскажу о подключении, настройке и поделюсь готовым open source решениями для Nodejs.


Coinbase Commerce — это крипто-эквайринг без комиссий, паспортов, с отличным API и Вашим личным счетом.

Читать дальше →
Всего голосов 10: ↑7 и ↓3+8
Комментарии5

Среда разработки PHP на базе Docker

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

Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7MySQL 8PostgreSQLMongoDB 4.2Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.

Читать далее
Всего голосов 18: ↑16 и ↓2+19
Комментарии38

Как подготовить хорошее резюме для  IT-специалиста

Время на прочтение10 мин
Количество просмотров77K
Если вы не зарегистрированы на hh.ru или подобных ресурсах, находите работу в профильных сообществах на Facebook, в Telegram и по «сарафанному радио», и у вас нет отбоя от предложений, вам не нужно резюме. Но обычно оно нужно тем, кто вас нанимает — с рекрутера или HR начинается первый контакт разработчика и работодателя. Они изучают резюме кандидата перед тем, как передать его техническим специалистам и нанимателю. Рекрутер и HR — это первый этап отбора во всех компаниях, начиная с провинциальной веб-студии и заканчивая Яндексом или Сбербанком. Важно быстро пройти этот этап, а чтобы это сделать и нужно хорошее резюме.



Мы в headz.io работали примерно с 5000 резюме тестировщиков, разработчиков, DevOps-инженеров и других IT-специалистов, чтобы помочь им устроиться на ту работу, которую они хотели. Поэтому можем рассказать, как подготовить резюме, чтобы быстро пройти рекрутера или HR и понравиться работодателю.
Читать дальше →
Всего голосов 19: ↑6 и ↓13-5
Комментарии12

Docker Compose: от разработки до продакшена

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

Перевод транскрипции подкаста подготовлен в преддверии старта курса «Администратор Linux»





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

Читать дальше →
Всего голосов 13: ↑10 и ↓3+10
Комментарии12

Burp Suite Tips

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

Burp Suite – это платформа для выполнения тестирования по безопасности веб-приложений. В этой заметке я поделюсь несколькими приёмами, как использовать данный инструмент более эффективно.


Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии5

Основы ZFS: система хранения и производительность

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


Этой весной мы уже обсудили некоторые вводные темы, например, как проверить скорость ваших дисков и что такое RAID. Во второй из них мы даже пообещали продолжить изучение производительности различных многодисковых топологий в ZFS. Это файловая система следующего поколения, которая сейчас внедряется повсюду: от Apple до Ubuntu.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+39
Комментарии33

Ресайз изображений на лету с помощью Nginx и LuaJIT (OpenResty)

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

Уже довольно давно, вдохновившись статьей Ресайз изображений на лету был настроен ресайз изображений с помощью ngx_http_image_filter_module и все работало как надо. Но появилась одна проблема, когда менеджеру понадобилось получать изображения с точными размерами для заливки на некоторые сервисы, т.к. это были их технические требования. К примеру, если мы имеем оригинал изображения размером 1200x1200, и при ресайзе мы пишем что-то вроде ?resize=600x400, то получим пропорционально уменьшенное изображение по наименьшему краю, размером 400x400. Так же невозможно получить изображение с бОльшим разрешением (upscale). Т.е. ?resize=1500x1500 вернет все тоже изображение 1200x1200


На помощь пришла статья OpenResty: превращаем NGINX в полноценный сервер приложений для понимания как работает Nginx с Lua и сама библиотека для Lua isage/lua-imagick — Lua pure-c bindings to ImageMagick. Почему было выбрано такое решение, а не, скажем, что-нибудь на python — потому что это быстро и удобно. Вам даже не понадобится создавать никаких файлов, все прямо в конфиге Nginx (не обязательно).

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии21

Несколько малоизвестных возможностей docker-compose

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

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


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

Читать дальше →
Всего голосов 51: ↑49 и ↓2+47
Комментарии22
1

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность