ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

msavin | Backend & PHP

msavin | Backend & PHP

前往频道在 Telegram

Пишу про пыху и backend разработку. Менторю, смотри закреп ЛС - @msavin_dev

显示更多
802
订阅者
无数据24 小时
+27 天
+230 天
帖子存档
Мне окончательно надоело, что в симфоневом профайлере нельзя посмотреть тело ответа, только заголовки. Толку то мне от заголовков.. Благо симфа и здесь легко расширяется, поэтому я быстренько навайбкодил написал бандл, позволяющий смотреть содержимое ответа. Аналогов найти я не смог( По умолчанию работает для json- и text- подобных mime-типов, и обрезает слишком большие ответы (настраиваемо). Если разделяете мою боль - велком

Правило для ректора, добавляющее именованные аргументы, теперь умеет убирать дефолтные значения из переданных аргументов, чтобы код был еще выразительнее, пробуйте 🙂

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

Итак, по результатам опроса 44% респондентов используют AAA pattern при тестировании Я обычно отделяю части комментариями, хотя кто-то просто пустыми строками, но периодически сам забываю, периодически команда приносит тесты с несколькими act-assert Поэтому запилил правило для ректора на этот счет, может и вам будет полезно

Используете AAA (arrange-act-assert/given-when-then) при тестировании?
Anonymous voting

А как вы относитесь к graphql? ❤️ - мне нравится, особенно типизация на фронте 💩 - мне не нравится, особенно генерация схемы
А как вы относитесь к graphql? ❤️ - мне нравится, особенно типизация на фронте 💩 - мне не нравится, особенно генерация схемы на бэке 🤔 - что это?

Написал обзор на преимущества zsh над bash, которые я нашел для себя за время использования Буду рад услышать ваши лайфхаки на эту тему !

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:
<?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 😅. В обычном бэкенде и подумать смешно о таких оптимизациях, но в контексте приложений, где счет идет на миллисекунды помноженные на тысячи операций в день - это профит!

Под предыдущим видео было много комментариев, шо вопросы слишком рандомные и поверхностные, поэтому сделал видос, где большую часть времени (35 минут) мы с интервьюером разбираем бизнес задачу Мне лично нравятся собесы, где не блиц опрос по 100 темам (как это в ВК, например), а вы решаете одну крупную задачу - будь то рефакторинг кода, system design, или проектирование, как вот здесь Надеюсь, вам тож такой собес зайдет Ссылка 👇 https://youtu.be/4qV7G1tR21g

Выложил видос с одним из моих старых тех. собесов, который завершился оффером на 300к. Надеюсь, видео будет полезно для вашей пассивной подготовки к собесам — включайте на фоне. Ссылка 👇 https://youtu.be/a58yv8GQiIw

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

Export-ignore-check В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не ска
Export-ignore-check В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не скачивал вместе с архивом либы ненужные файлы, вроде документации, тестов, файлов конфигурации dev зависимостей Но у меня лично каждый раз боль глазами сравнивать структуру файлов и содержимое .gitattributes (export-ignore директива), тем более часто случается рассинхрон, в том числе и у крупных библиотек (тот же phpstorm-stubs) В связи с этим написал либу, которая призвана проверить, что там за архив получается из вашей библиотеки (через git archive или скачав напрямую с packagist) и найти там ненужные файлы. Она покажет вам сколько вы сэкономите кБ, вдобавок автоматически может добавить рекомендуемые изменения в ваш .gitattributes. Я прогнал топ тысячу пакетов с packagist, 470 из них могут быть оптимизированы, так шо возможно и вам пригодится

AI + opensource В opensource проектах стали появляться просьбы не использовать написанные AI PRs. Причины 2, но интересная то
AI + opensource В opensource проектах стали появляться просьбы не использовать написанные AI PRs. Причины 2, но интересная только первая - так как AI обучается на коде других людей, то априори это копирайт, и не подходит под лицензионное соглашение. Сразу возникает вопрос, а чем я лучше чатгпт, я тоже списываю код у других, не очень то спрашивая лицензию :(

CTF Приняли участие в CTF (capture the flag) от T-bank с @aldardeb и @tsym_tima На данный момент мы аж на 1205 месте). Это ок
+2
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) Таким образом наши идеи кончились Я пересмотрел кучу видосов по прохождению машин, но ума мне это не прибавило) Может кто-то из вас уже решал подобные задачи?

Gamethon Никогда не участвовал в хакатонах, а тут решил поиграть в геймтон https://datsteam.dev/datscity Суть была в том, что
+2
Gamethon Никогда не участвовал в хакатонах, а тут решил поиграть в геймтон https://datsteam.dev/datscity Суть была в том, чтоб за минуту построить башенку по определенным правилам из предоставленных слов. Больше 4 слов сконнектить не удалось 😢. Всего было 515 команд, 90 смогли что-то отправить, а моя команда из 2 человек заняла почетное 56 место 😁 (спасибо, @szxcvbbn) Писать такие, подобные эволюционным, алгоритмы стократ сложнее задач на работе по перекладыванию крудов Выражаю респект командам победителям 1 фото - одна из наших удачных башен 2 фото - одна из наших неудачных башен 3 фото - башня здорового человека

Тестирование Вышла моя статья на Habr про тестирование. Там достаточно как теории для собесов, так и практики для разработки. Изначально этот материал служил моим конспектом для проведения лекций, потом я пытался сделать из этого сценарий для видео на ютуб, в итоге получилась статья 😁

TeamLead roadmap Нашел классный roadmap для лидов, но и для линейных разработчиков здесь много полезной информации из областей, не касающихся кода напрямую: например, из одной из веток я узнал про boy scout rule при рефакторинге

CI/CD Опубликовали мою большую статью на Habr. На этот раз не в песочнице, а дали инвайт (ура ура). Забавно, что я узнал об этом факте из рекомендаций гугла по хабру В этой статье я привел конкретные примеры и советы по использованию GitLab CI/CD для PHP проектов

Git config Попалась статья о настройке git'а, мои эмоции – 🤯. Столько болей закрылось, что настоятельно рекомендую к прочтен
+1
Git config Попалась статья о настройке git'а, мои эмоции – 🤯. Столько болей закрылось, что настоятельно рекомендую к прочтению Как пример приведу сортировку тегов до и после (см. скрины)