CI/CD
Опубликовали мою большую статью на Habr. На этот раз не в песочнице, а дали инвайт (ура ура). Забавно, что я узнал об этом факте из рекомендаций гугла по хабру
В этой статье я привел конкретные примеры и советы по использованию GitLab CI/CD для PHP проектов
Опубликовали мою большую статью на Habr. На этот раз не в песочнице, а дали инвайт (ура ура). Забавно, что я узнал об этом факте из рекомендаций гугла по хабру
В этой статье я привел конкретные примеры и советы по использованию GitLab CI/CD для PHP проектов
Хабр
Практическое руководство по настройке CI/CD для PHP проектов
В этом лонгриде я расскажу немного теории о CI/CD, но в основном это будут практические примеры и советы, в первую очередь полезные для PHP backend разработчиков, однако некоторые инструменты подходят...
🔥14
TeamLead roadmap
Нашел классный roadmap для лидов, но и для линейных разработчиков здесь много полезной информации из областей, не касающихся кода напрямую: например, из одной из веток я узнал про boy scout rule при рефакторинге
Нашел классный roadmap для лидов, но и для линейных разработчиков здесь много полезной информации из областей, не касающихся кода напрямую: например, из одной из веток я узнал про boy scout rule при рефакторинге
tlroadmap.io
Teamlead Roadmap: Управление техническим долгом
Технический долг – это несделанная в проекте работа, которая будет мешать его развитию в будущем, если так и не будет выполнена. В технический долг не включаются баги или отложенные низкоприоритетные фичи. Технический долг – это, например, плохо спроектированная…
👍6
Тестирование
Вышла моя статья на Habr про тестирование. Там достаточно как теории для собесов, так и практики для разработки.
Изначально этот материал служил моим конспектом для проведения лекций, потом я пытался сделать из этого сценарий для видео на ютуб, в итоге получилась статья 😁
Вышла моя статья на Habr про тестирование. Там достаточно как теории для собесов, так и практики для разработки.
Изначально этот материал служил моим конспектом для проведения лекций, потом я пытался сделать из этого сценарий для видео на ютуб, в итоге получилась статья 😁
Хабр
Пишем тесты для php backend приложений
Введение Статья нацелена в первую очередь на PHP backend-разработчиков уровня junior/middle, чтобы познакомить с теорией, которую спрашивают на собеседованиях, и с практическими примерами/советами,...
🔥17❤2👏1
Gamethon
Никогда не участвовал в хакатонах, а тут решил поиграть в геймтон https://datsteam.dev/datscity
Суть была в том, чтоб за минуту построить башенку по определенным правилам из предоставленных слов. Больше 4 слов сконнектить не удалось 😢. Всего было 515 команд, 90 смогли что-то отправить, а моя команда из 2 человек заняла почетное 56 место 😁 (спасибо, @szxcvbbn)
Писать такие, подобные эволюционным, алгоритмы стократ сложнее задач на работе по перекладыванию крудов
Выражаю респект командам победителям
1 фото - одна из наших удачных башен
2 фото - одна из наших неудачных башен
3 фото - башня здорового человека
Никогда не участвовал в хакатонах, а тут решил поиграть в геймтон https://datsteam.dev/datscity
Суть была в том, чтоб за минуту построить башенку по определенным правилам из предоставленных слов. Больше 4 слов сконнектить не удалось 😢. Всего было 515 команд, 90 смогли что-то отправить, а моя команда из 2 человек заняла почетное 56 место 😁 (спасибо, @szxcvbbn)
Писать такие, подобные эволюционным, алгоритмы стократ сложнее задач на работе по перекладыванию крудов
Выражаю респект командам победителям
1 фото - одна из наших удачных башен
2 фото - одна из наших неудачных башен
3 фото - башня здорового человека
🤮49🔥12👏2❤1👍1😁1
CTF
Приняли участие в CTF (capture the flag) от T-bank с @aldardeb и @tsym_tima
На данный момент мы аж на 1205 месте). Это оказалось еще сложнее, чем предыдущий gamethon😅
На выбор есть множество заданий, одно из простейших - на первом скрине. У Вас есть магазин, 100 монет, а надо купить флаг за 1337. Чуть покопавшись, нашли, что количество капитокенов передается в jwt в cookies.
Правда токен не токен - пользовательская информация в header, не указан алгоритм шифрования, тело вообще по всей видимости являлось бинарным обозначением движения средств (скрин 2)
Логично было бы подменить токен.
Сначала попробовали прописать "alg": "none" флаг, шоб обойти проверку.
Вторым вариантом было подобрать секрет из логичных вариантов (ctf, название команды, uuid команды и прочее).
Потом попробовали забрутфорсить секрет. Спустя часа 2 мы дошли только до 7-символьных секретов, что оч долго (скрин 3)
Таким образом наши идеи кончились
Я пересмотрел кучу видосов по прохождению машин, но ума мне это не прибавило)
Может кто-то из вас уже решал подобные задачи?
Приняли участие в CTF (capture the flag) от T-bank с @aldardeb и @tsym_tima
На данный момент мы аж на 1205 месте). Это оказалось еще сложнее, чем предыдущий gamethon😅
На выбор есть множество заданий, одно из простейших - на первом скрине. У Вас есть магазин, 100 монет, а надо купить флаг за 1337. Чуть покопавшись, нашли, что количество капитокенов передается в jwt в cookies.
Правда токен не токен - пользовательская информация в header, не указан алгоритм шифрования, тело вообще по всей видимости являлось бинарным обозначением движения средств (скрин 2)
Логично было бы подменить токен.
Сначала попробовали прописать "alg": "none" флаг, шоб обойти проверку.
Вторым вариантом было подобрать секрет из логичных вариантов (ctf, название команды, uuid команды и прочее).
Потом попробовали забрутфорсить секрет. Спустя часа 2 мы дошли только до 7-символьных секретов, что оч долго (скрин 3)
Таким образом наши идеи кончились
Я пересмотрел кучу видосов по прохождению машин, но ума мне это не прибавило)
Может кто-то из вас уже решал подобные задачи?
🤮48🔥10
AI + opensource
В opensource проектах стали появляться просьбы не использовать написанные AI PRs.
Причины 2, но интересная только первая - так как AI обучается на коде других людей, то априори это копирайт, и не подходит под лицензионное соглашение.
Сразу возникает вопрос, а чем я лучше чатгпт, я тоже списываю код у других, не очень то спрашивая лицензию :(
В opensource проектах стали появляться просьбы не использовать написанные AI PRs.
Причины 2, но интересная только первая - так как AI обучается на коде других людей, то априори это копирайт, и не подходит под лицензионное соглашение.
Сразу возникает вопрос, а чем я лучше чатгпт, я тоже списываю код у других, не очень то спрашивая лицензию :(
👎21👍11💘2💯1
Export-ignore-check
В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не скачивал вместе с архивом либы ненужные файлы, вроде документации, тестов, файлов конфигурации dev зависимостей
Но у меня лично каждый раз боль глазами сравнивать структуру файлов и содержимое .gitattributes (export-ignore директива), тем более часто случается рассинхрон, в том числе и у крупных библиотек (тот же phpstorm-stubs)
В связи с этим написал либу, которая призвана проверить, что там за архив получается из вашей библиотеки (через
Я прогнал топ тысячу пакетов с packagist, 470 из них могут быть оптимизированы, так шо возможно и вам пригодится
В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не скачивал вместе с архивом либы ненужные файлы, вроде документации, тестов, файлов конфигурации dev зависимостей
Но у меня лично каждый раз боль глазами сравнивать структуру файлов и содержимое .gitattributes (export-ignore директива), тем более часто случается рассинхрон, в том числе и у крупных библиотек (тот же phpstorm-stubs)
В связи с этим написал либу, которая призвана проверить, что там за архив получается из вашей библиотеки (через
git archive или скачав напрямую с packagist) и найти там ненужные файлы. Она покажет вам сколько вы сэкономите кБ, вдобавок автоматически может добавить рекомендуемые изменения в ваш .gitattributes.Я прогнал топ тысячу пакетов с packagist, 470 из них могут быть оптимизированы, так шо возможно и вам пригодится
👎21👍12🔥5
Modulith
Написал туториал по этой незамысловатой архитектуре для Symfony приложений.
Не нашел норм статей, а сам каждый раз забываю, как писать все эти конфигурационные файлы, и иду рыться в старых проектах в поисках примера 😢
Написал туториал по этой незамысловатой архитектуре для Symfony приложений.
Не нашел норм статей, а сам каждый раз забываю, как писать все эти конфигурационные файлы, и иду рыться в старых проектах в поисках примера 😢
Хабр
Как сделать Modulith в Symfony
Modulith — архитектурный стиль, при котором приложение остаётся монолитом, но код внутри разбит на модули (подпапки) по доменам. Содержание Введение Конфигурация модулей DI Routing Doctrine Утилиты и...
🤮51👎20👍9❤2😢2💘1
Выложил видос с одним из моих старых тех. собесов, который завершился оффером на 300к.
Надеюсь, видео будет полезно для вашей пассивной подготовки к собесам — включайте на фоне.
Ссылка 👇
https://youtu.be/a58yv8GQiIw
Надеюсь, видео будет полезно для вашей пассивной подготовки к собесам — включайте на фоне.
Ссылка 👇
https://youtu.be/a58yv8GQiIw
YouTube
Собеседование PHP разработчик на 300к
Привет! Меня зовут Михаил.
Сегодня вы увидите мое реальное техническое собеседование на позицию Senior PHP-разработчика.
Изначально я просил 280 тысяч на руки, но в итоге получил оффер на 300 тысяч.
Если вы хотите расти как разработчик, разбираться в архитектуре…
Сегодня вы увидите мое реальное техническое собеседование на позицию Senior PHP-разработчика.
Изначально я просил 280 тысяч на руки, но в итоге получил оффер на 300 тысяч.
Если вы хотите расти как разработчик, разбираться в архитектуре…
🔥25👍2
Под предыдущим видео было много комментариев, шо вопросы слишком рандомные и поверхностные, поэтому сделал видос, где большую часть времени (35 минут) мы с интервьюером разбираем бизнес задачу
Мне лично нравятся собесы, где не блиц опрос по 100 темам (как это в ВК, например), а вы решаете одну крупную задачу - будь то рефакторинг кода, system design, или проектирование, как вот здесь
Надеюсь, вам тож такой собес зайдет
Ссылка 👇
https://youtu.be/4qV7G1tR21g
Мне лично нравятся собесы, где не блиц опрос по 100 темам (как это в ВК, например), а вы решаете одну крупную задачу - будь то рефакторинг кода, system design, или проектирование, как вот здесь
Надеюсь, вам тож такой собес зайдет
Ссылка 👇
https://youtu.be/4qV7G1tR21g
YouTube
Решение бизнес задачи на собеседовании PHP 350к
В этом видео показано мое техническое собеседование на Senior позицию по PHP с уклоном в Symfony
В комментариях под прошлым видео вы много раз сказали, что на собеседовании вопросы были рандомные и никак не раскрывали инженера
В этом видео я постарался…
В комментариях под прошлым видео вы много раз сказали, что на собеседовании вопросы были рандомные и никак не раскрывали инженера
В этом видео я постарался…
❤12👍3
Shared Memory vs Redis: микросекунды против миллисекунд
Недавно столкнулся с бизнес-задачей, где нужно было передать данные между двумя PHP-скриптами с максимально возможной скоростью - счет шел на миллисекунды
Привычным решением было бы использовать Redis.
Там затраты были бы около 0.10 - 0.12 ms, если не надо открывать TCP соединение заново.
Если надо - то уже около 0.30 ms (тык тык тык).
И это если Redis стоит на локалхосте, иначе затраты могли бы вырасти до 3 порядков
Подход с разделением оперативной памяти в результате испытаний по моему бенчмарку дал 27 µs (~0.03 ms) задержки на передачу данных, что в примерно в 4 раза быстрее, чем Redis с persistent connection
В php оказалось готовое API и для семафоров, и для мьютексов, и для самой shared memory:
Есть и другие варианты IPC, но показались неподходящими
Как итог, сэкономили около 0.07 ms 😅. В обычном бэкенде и подумать смешно о таких оптимизациях, но в контексте приложений, где счет идет на миллисекунды помноженные на тысячи операций в день - это профит!
Недавно столкнулся с бизнес-задачей, где нужно было передать данные между двумя PHP-скриптами с максимально возможной скоростью - счет шел на миллисекунды
Привычным решением было бы использовать Redis.
Там затраты были бы около 0.10 - 0.12 ms, если не надо открывать TCP соединение заново.
Если надо - то уже около 0.30 ms (тык тык тык).
И это если Redis стоит на локалхосте, иначе затраты могли бы вырасти до 3 порядков
Подход с разделением оперативной памяти в результате испытаний по моему бенчмарку дал 27 µs (~0.03 ms) задержки на передачу данных, что в примерно в 4 раза быстрее, чем Redis с persistent connection
В php оказалось готовое API и для семафоров, и для мьютексов, и для самой shared memory:
<?php
$key = 0xDEADBEEF;
$size = 1024;
$shm = shmop_open($key, 'c', 0666, $size);
$mutex = new SyncMutex('crypto_rate_mutex');
$mutex->lock();
shmop_write($shm, $payload, 0);
$mutex->unlock();
Есть и другие варианты IPC, но показались неподходящими
Как итог, сэкономили около 0.07 ms 😅. В обычном бэкенде и подумать смешно о таких оптимизациях, но в контексте приложений, где счет идет на миллисекунды помноженные на тысячи операций в день - это профит!
Docs
Diagnosing latency issues
Finding the causes of slow responses
🔥16❤3👏2
Новый видос!
https://youtu.be/rtoLYuXtLGk?si=6Zfrk7go31scHSku
https://youtu.be/rtoLYuXtLGk?si=6Zfrk7go31scHSku
YouTube
Спидран техсобеса на 400к Backend PHP
В этом видео будет спидран технического собеседования на синьор позицию
В комментариях под прошлыми видео вы говорили, шо на моих собесах какие-то сложные вопросы
Так вот этот собес был самым коротким в моей жизни и пожалуй самым легким.
При этом я просил…
В комментариях под прошлыми видео вы говорили, шо на моих собесах какие-то сложные вопросы
Так вот этот собес был самым коротким в моей жизни и пожалуй самым легким.
При этом я просил…
❤14🫡1
Написал обзор на преимущества zsh над bash, которые я нашел для себя за время использования
Буду рад услышать ваши лайфхаки на эту тему !
Буду рад услышать ваши лайфхаки на эту тему !
Хабр
Что дал переход на zsh мне, как разработчику?
Когда я был еще джуном, старшие разработчики настоятельно советовали мне перейти на zsh. Я помню, что я так и не получил никакой аргументации, чем zsh лучше, чем привычный bash, и...
👍8❤3🤔2🤝1