Бучнев Павел @butschster
Senior PHP Developer
Information
- Rating
- Does not participate
- Location
- Батуми, Аджария, Грузия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Software Architect
Lead
From 500,000 ₽
PHP
Docker
PostgreSQL
Git
English
Software development
Спасибо за статью. Centrifugo действительно крутой инструмент и его главное отличие от reverb и ему подобных это то, что он не только может отправлять события клиенту, но и клиент может через него слать сообщения на сервер. И вот здесь он крут.
У них есть в доке раздел Proxy events to the backend где они описывают механизм отправки сообщений от клиента на сервер и не только. Я очень часто использую фичу, когда клиент только устанавливает соединение с Webscoket сервером, то я его сразу авторизую и подписываю на те каналы которые ему нужны и мне не нужно из JS управлять подписками.
Причем там есть проксирование по gRPC и мы можем вообще скрыть endpoint для обмена данными между Centrifugo и backend сервером и это прям мега фича.
Короче он нам в своё время настолько зашел, что у RoadRunner из коробки появился плагин для Centrifugo с двухсторонним взаимодействием по gRPC и PHP SDK для работы. И проводили стрим на тему создания чата с RoadRunner и Centrifugo
P.s. посмотрел composer пакет и там только про push и ничего про проксирование(
Ну если твой проект покупала другая компания, то тебе бояться нечего, твой код идеален и запашка в нем быть не может! Спи спокойно.
А я вот часто пишу говнокод и мои коллеги пишут и наш код обязательно проходит код ревью с обратной связью, с пояснением что именно можно улучшить и т.д. Это помогает нам расти и повышать качество нашей работы.
Помню в бородатые годы, кстати, на хабре было много постов на тему говнокода:
https://habr.com/ru/articles/66973/
https://habr.com/ru/articles/116842/
https://habr.com/ru/companies/pvs-studio/articles/125120/
https://habr.com/ru/articles/172037/
https://habr.com/ru/articles/159973/
И конечно же мой любимый пост https://habr.com/ru/articles/313884/
P.S. Кстати, пора бы обновить свой профиль на Хабре, у тебя там стоит вилка ЗП от 120к, по рассказам у тебя там должно быть намного больше!
Да да да, уже изучали этот профайлер. https://github.com/wikimedia/mediawiki-php-excimer В планах сделать интеграцию с ним. Спасибо!
Blackfire) Кстати есть в планах их коллектор примерить к Buggregator, если подойдет, то можно будет слать трейсы прям в багри с прода. А так если проблема на конкретном серваке, то клонируй сервак и на нем уже профилируй, если проблема именно с конкретным серверов. Но как по мне, так попахивает дебаг сервера, а не приложения, раз все работают норм, а один сервер не норм.
проплаченная реклама детектед(
Это перевод. Для тех, кто в теме Temporal должно быть более-менее понятно. Для тех кто нет, я планирую провести стрим, где разберем весь код Workflow и поизучаем как оно работает.
Проблема не в одном файле, а во всей системе. В современном мире важна скорость и качество разрабатываемого кода и сейчас ценятся те, кто умеет пользоваться инструментами. Уже давно существует такое кол-во фреймворков, которые проверены годами и их создатели, а также контрибьюторы потратили тысячи часов, чтобы сделать их удобными, избавить от дыр и создать вокруг них целую экосистему. Когда я собеседую людей, мне важно, чтобы разработчик знал патерны, мыслил тестами, умел работать с существующими инструментами.
Что касается твоего кода, то первый вопрос, зачем копировать к себе в «велосипед» куски чужого кода, если за это время можно было взять готовый фреймворк/микрофреймворк и на нем уже создать полноценный продукт? И тратить время на более важные вещи, а именно на свой рост.
Я бегло изучил код, его кол-во и т.д. и как по мне, проще было взять чистый фреймворк и перенести кодовую базу в него, нежели пытаться файлики из yii внедорять в свой проект, на это есть одна простая причина — твой код необновляем. Вот представь, завтра выходит обновление ядра Yii, твои действия?
В общем я увидел исключительно небольшой рефакторинг кода и все, кодовая база небольших размеров. Глядя на твою CMS я не совсем понимаю в чем посыл твой? В том что ты написал код 2010 года и закинул туда пару файликов из Yii? Ну код ревью такой код не прошел бы.
P.s. В свое время я также занимался велосипедостроением (CMS разрабатывал). Начинал я это делать на фреймворке Kohana (Github) и он мне казался время мега крутым, но через год, он устарел и перестал развиваться и я принял решение переехать на новый фреймворк Laravel, который мне казался очень перспективным, тем самым.Куча модулей, сложный UI, я не представлял как перенести код с одного фреймворка на другой. Но я сделал это практически в одиночку (Github и Base Github), пришлось переделывать всё. Короче CMS умерла потому что я плохой маркетолог, хотя старался сделать ее на современных технологиях, оказывал поддержку, но не хватило сил сделать это в одиночку и привлечь для ее развития разработчиков, просто никому это не интересно. В России слишком маленька ЦА. Но главное, что я получил от использования фреймворков и интеграции с ними — это опыт работы с ними, изучение применяемых практик, ООП, паттерны проектирования и т.д.
Предлагаю созвониться и обсудить это. Вполне возможно, что найдем точки соприкосновения.
Не так давно я изучал этот вопрос и наткнулся на статью intoli.com/blog/not-possible-to-block-chrome-headless где показаны некоторые особенности браузера. Но я уверен, что даже этого будет недостаточно для прохождения гугл авторизации.
Что бросилось в глаза:
Хотелось бы вас попросить описать процесс добавления мной, как пользователя вашим пакетом нового API. Например, я решил получить список лайков. Что я должен сделать, чтобы выполнить данный запрос без изменения исходного кода библиотеки.
P.S.
Советую как можно скорее перейти к написанию тестов и тогда вы сами начнете дробить свой код на более мелкие части и выделять в отдельные классы. А также почитать про внедрение зависимостей.
Если мы посмотрим вот сюда github.com/laravel/laravel/blob/master/app/Http/Kernel.php#L20, то увидим, что Laravel уже изначально применяет функцию trim ко всем стринговым значениям для Request.
В остальном это самый примитивный вариант реализации фильтров.
Если исходить из поста про собеседование, то, как по мне, там важнее всего понимать и упомянуть про сложность алгоритма и показать интервьюеру своё мышление.
— Почему у вас какие то параметры именуются
$comment
, а какие то$DoctrineRepository
? Почему разный стиль?— Почему бы не использовать, хотя бы при создании репозиториев принцип инверсии зависимостей? Куда приятнее работать с интерфейсами, а не с реализацией, благо в Laravel это достаточно легко реализуется.
Вот кстати у меня вопрос, я как человек мало понимающий в DDD и в вашем коде,
Кто и откуда запускает эти методы?
В методе editComments() вызывает метод
$this - > page - > addComments($comment);
, но ведь DDD подразумевает, что мы общаемся на языке бизнеса, а получается, что редактирование комментария у нас приравнивается к добавлению?Хотелось бы более детального разбора кода.
Я надеюсь, ты понимаешь, что самостоятельно проверить все, что ты перечислил без автосервиса достаточно сложно, да порой скрученный пробег без спец приборов не определить.
Что касается масла, то я даже не представляю куда смотреть, чтобы понять, будет авто жрать его или нет. Как, по твоему, диагностировать коробку передач перед покупкой или двигатель? Да, можно конечно провести компьютерную диагностику на предмет ошибок в различных блоках, и автор канала это показывает в тех авто, которые он считает удовлетворительными после внешнего осмотра.
Нужно быть специалистом, чтобы самостоятельно все нюансы предусмотреть. Здесь тебя не одно видео не сможет этому обучить, в то время, как с визуальным осмотром все гораздо проще, поэтому такие видео обычно и снимают.
И я не говорю, что описанные тобой проблемы не важы, важно все, но не все можно проверить самостоятельно.