Patches для Composer вместо Fork'ов 🔧
Все мы знаем, что когда баг в библиотеке вендора мешает прямо сейчас, самый быстрый способ — форкнуть репозиторий и указать ссылку на форк в composer.json как git repository. Это достаточно распространенная практика, но оказывается, что это не всегда лучший вариант.
Пока я работал с Rector, я заметил интересный способ решения подобных проблем через патчи
🔍Есть статья, описывающая существующие плагины для патчинга пакетов
❗️P.S. К сожалению, на моем MacOS этот механизм не захотел работать, несмотря на установленный gpatch. Рекомендую использовать Docker для корректной работы этой функции.
Все мы знаем, что когда баг в библиотеке вендора мешает прямо сейчас, самый быстрый способ — форкнуть репозиторий и указать ссылку на форк в composer.json как git repository. Это достаточно распространенная практика, но оказывается, что это не всегда лучший вариант.
Пока я работал с Rector, я заметил интересный способ решения подобных проблем через патчи
🔍Есть статья, описывающая существующие плагины для патчинга пакетов
❗️P.S. К сожалению, на моем MacOS этот механизм не захотел работать, несмотря на установленный gpatch. Рекомендую использовать Docker для корректной работы этой функции.
GitHub
rector-src/composer.json at main · rectorphp/rector-src
Development repository for Rector. Contribute to rectorphp/rector-src development by creating an account on GitHub.
👍2
Плагины Zsh: Git
Недавно открыл для себя, что Zsh (командная оболочка) поддерживает плагины, и, как оказалось, у меня уже был установлен по умолчанию один из них — плагин для Git
Плагин представляет собой по большей части набор алиасов, и вот те, которые я взял на вооружение:
-
-
-
-
Так как Git пожалуй самая используемая в разработке утилита, всем настоятельно рекомендую - это сэкономит вам кучу времени!
Недавно открыл для себя, что Zsh (командная оболочка) поддерживает плагины, и, как оказалось, у меня уже был установлен по умолчанию один из них — плагин для Git
Плагин представляет собой по большей части набор алиасов, и вот те, которые я взял на вооружение:
-
g — вместо git-
gp — вместо git push-
gl — вместо git pull-
gpsup — вместо git push --set-upstream origin $(git_current_branch) (как меня раздражало это печатать каждый раз 😢 )Так как Git пожалуй самая используемая в разработке утилита, всем настоятельно рекомендую - это сэкономит вам кучу времени!
🔥4
Aspect Oriented Programming (AOP)
Случайно натолкнулся на эту интересную интересную парадигму, по сути расширяющую OOP.
Лучше всего о ней рассказано в статье:
https://habr.com/ru/articles/199378/
Лучшее применение этому - логирование (всегда раздражает напичкивать метод logging statements).
И хотя эта парадигма популярна в java (и даже поддерживается в Spring), для PHP я не нашел популярных библиотек:
- https://github.com/ytake/Laravel-Aspect
- https://github.com/Matthimatiker/AspectPHP
- https://github.com/swoft-cloud/swoft (фрейморк с AOP)
Поэтому пока эта парадигма служит лишь для общего развития
P.S. Как думаете, почему в PHP этот подход не получил схожей популярности?
Случайно натолкнулся на эту интересную интересную парадигму, по сути расширяющую OOP.
Лучше всего о ней рассказано в статье:
https://habr.com/ru/articles/199378/
Лучшее применение этому - логирование (всегда раздражает напичкивать метод logging statements).
И хотя эта парадигма популярна в java (и даже поддерживается в Spring), для PHP я не нашел популярных библиотек:
- https://github.com/ytake/Laravel-Aspect
- https://github.com/Matthimatiker/AspectPHP
- https://github.com/swoft-cloud/swoft (фрейморк с AOP)
Поэтому пока эта парадигма служит лишь для общего развития
P.S. Как думаете, почему в PHP этот подход не получил схожей популярности?
Хабр
Аспектно-ориентированное программирование: изучи и сделай сам!
Статья родилась из того, что мне потребовался удобный и простой механизм перехвата для некоторых задач, который легко реализуется техниками АОП. Существует довольно много перехватчиков (Casle.net,...
👍4
Когда-то давно, именно этот доклад побудил меня обвешаться различными инструментами контроля качества моего кода.
Во-первых, чтобы не было повода бояться, что сломаю прод своими правками.
Во-вторых, чтобы меньше думать о качестве кода, и больше о решении самой задачи.
Рекомендую к просмотрю всем, у кого на проекте нет проблемы с тем, чтобы залить задачу в master
Во-первых, чтобы не было повода бояться, что сломаю прод своими правками.
Во-вторых, чтобы меньше думать о качестве кода, и больше о решении самой задачи.
Рекомендую к просмотрю всем, у кого на проекте нет проблемы с тем, чтобы залить задачу в master
👍6
Нашел вот такую нейросетку, с которой в частности можно проводить mock interview (вдруг вы собрались на ВУ)
Довольно однотипно отвечает, но хорошо задает вопросы: я даже узнал о существовании Snyk и Trivy (DevSecOps продукты)
Меня лично хватило минут на 20 разговора. Прикольно что все разговоры записываются и транскрибируются, можно потом произношение поправить, грамматику
В общем, как минимум пару раз поиграться рекомендую
Довольно однотипно отвечает, но хорошо задает вопросы: я даже узнал о существовании Snyk и Trivy (DevSecOps продукты)
Меня лично хватило минут на 20 разговора. Прикольно что все разговоры записываются и транскрибируются, можно потом произношение поправить, грамматику
В общем, как минимум пару раз поиграться рекомендую
👍8🔥3
Ассистент n8n
Нашел сегодня инструмент автоматизации, и не могу оторваться весь день.
Пока сделал workflow, в котором можно из телеги попросить (как голосом так и текстом) создать встречу, отправить имейл, загуглить что-то, но число инструментов с которыми можно интегрироваться практически бесконечно, а этим еще и ChatGPT рулит
Пока непонятно, как это мне поможет, но собирать такой конструктор оочень интересно
Нашел сегодня инструмент автоматизации, и не могу оторваться весь день.
Пока сделал workflow, в котором можно из телеги попросить (как голосом так и текстом) создать встречу, отправить имейл, загуглить что-то, но число инструментов с которыми можно интегрироваться практически бесконечно, а этим еще и ChatGPT рулит
Пока непонятно, как это мне поможет, но собирать такой конструктор оочень интересно
🔥9
PHPStorm contribution
Приняли мой PR в phpstorm-stubs, который уменьшает вес сборки аж на 40 кБ 😄, если верить команде
Однако правил я это не с целью оптимизации, а потому что KICS ругался, что docker-compose у них написан небезопасно
Теперь я могу всем рассказывать, что оптимизировал топ IDE, а у вас появилась пара легких идей как законтрибьютить в крупный проект
P.S. Кто-нибудь использует .gitattributes в рабочих проектах?
Приняли мой PR в phpstorm-stubs, который уменьшает вес сборки аж на 40 кБ 😄, если верить команде
du -ch .gitattributes .gitignore .php-cs-fixer.php docker-compose.yml phpunit.xml.dist .github 2>/dev/null | grep total$
Однако правил я это не с целью оптимизации, а потому что KICS ругался, что docker-compose у них написан небезопасно
Теперь я могу всем рассказывать, что оптимизировал топ IDE, а у вас появилась пара легких идей как законтрибьютить в крупный проект
P.S. Кто-нибудь использует .gitattributes в рабочих проектах?
GitHub
feat: add .gitattributes for export-ignore by savinmikhail · Pull Request #1719 · JetBrains/phpstorm-stubs
Add .gitattributes for export-ignore directive for 100% dev-only files
👍11💘1
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