Information
- Rating
- 5,920-th
- Location
- Батуми, Аджария, Грузия
- Date of birth
- Registered
- Activity
Specialization
Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
From 500,000 ₽
PHP
Docker
PostgreSQL
Git
Английский язык
Разработка программного обеспечения
Кайф, спасибо за норальное тесто!
Спасибо за статью. 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 и в вашем коде,
class Comment implements CommentTypeFactoryInterface { private function addComments() private function editComments() private function deleteComment() private function retrieveComments() }Кто и откуда запускает эти методы?
В методе editComments() вызывает метод
$this - > page - > addComments($comment);, но ведь DDD подразумевает, что мы общаемся на языке бизнеса, а получается, что редактирование комментария у нас приравнивается к добавлению?Хотелось бы более детального разбора кода.