Открыть список
Как стать автором
Обновить
17
Карма
8
Рейтинг
Николай Сумрак @NikolasSumrak

PHP Magento Developer

Четыре ошибки программистов, которые я осознал, только когда стал CTO

Я не говорю, что тестами нужно покрывать все. Но неужто у вас никогда не было сложных алгоритмов, которые гораздо быстрее протестировать программно, нежели руками?

Четыре ошибки программистов, которые я осознал, только когда стал CTO

Нельзя так просто взять, и сказать, что тесты для MVP - говно. Или - наоборот, серебряная пуля.

Я могу привести примеры проектов, где тесты только тормозили замену логики работы фич, и примеры проектов, где потраченный на автотест час экономил 8 человеко-часов команды на реопен бага и перетесты.

Практики при работе с PHPUnit

Вставлю свои 5 копеек — работал на проекте, который предоставлял исключительно json-апи для фронта на ангуляре. И все апи покрывали функциональными тестами на codeception. И это было невероятно удобно, также с апи очень легко работал подход TDD

Не мокайте то, чем вы не владеете

Естественно то, что описано в статье — не серебряная пуля, и все может сильно отличаться от проекта к проекту.


Например — те же 80 полей могут оказаться полями одной сущности — и тогда они прекрасно мапятся на dto, и далее по коду используется уже мок этого самого объекта, вместо класса реквеста.


Плюс сложно представить код, в котором 80 полей из реквеста получаются вручную через get() 80 раз, скорее код будет немного другим

Не мокайте то, чем вы не владеете

По первому пункту полностью согласен.


По второму юнит тест подразумевает полное изолирование от внешней среды. Если передавать что-то еще, даже простые дата-объекты, то это уже не полная изоляция, и тест уже скорее интеграционный.

Разделение кода и текста: прототип

А как предпросматривать текст, который отображается в ответ на конкретные действия пользователя?

Ну вот например — «сохранено». Усложненный вариант: контроллер с формой, отдельный контроллер обработки формы, добавление сессионного сообщения, редирект обратно на форму.

Боль разработчика: «Никогда не давайте пользователям бесплатный тариф»

У меня вообще был веселый опыт с амазоном.
Хотел купить там что-то, зарегистрировался, купил. Попутно поставил галку на подписку амазон прайма, там фришиппинг и триал в месяц.

Через пару дней меня забанили с требовнием подтвердить, что я — это я и карта моя. Причем никакие выписки из банка на них не действовали, как в ответ одно и то же «выписка не нравится, давайте еще раз».

Проходит месяц, и они снимают платеж за амазон прайм. Ох, как у меня горело. То есть я мошенник с чужой кредиткой, но как бабки списать — так всегда пожалуйста. Аккаунт заблокирован, подписку не отменить. Поддержка футболит «вы мошенник с чужой кредиткой, идите отсюда». Месяца 3 или 4 убил на то, чтобы они наконец достали палец из носа и занялись делом.

Чем опасен ТГ-бот, позволяющий подменять Caller-ID

Я не силен в подкапотном пространстве телефонии, но неужели нельзя ограничить подмену caller id на уровне операторов? К примеру, получить id другого человека или компании можно только по заявлению самого человека (если вдруг что- не так — вот все документы, вот пользователь подмененого номера). А иначе — номер подставлять родной. Ну или подписывать, так сказать, каждый номер сертификатом=)

Вышел релиз GitLab 13.7 с проверяющими для мерж-реквестов и автоматическим откатом при сбое

Эхх, столько сделали, спасибо.
Но вы просто не представляете, сколько людей сказали бы вам спасибо, если бы можно было в настройках проекта указать ветку по-умолчанию для новых мерж-реквестов (в русской локализации — запросов на слияние :)).

P.S. предупреждая самый популярный ответ — настройка default branch не подходит вот почему

Отпусти меня, PHP

Отвечу только на последний абзац: хорошо, когда у тебя работа не состоит из ежедневного клепания сайтов «на скорость» (а это — львиная часть аутсорс-компаний)

Отпусти меня, PHP

Я не доказываю что PHP плохой, я люблю PHP. Я просто хотел подчеркнуть одну из проблем языка. Да, тот, кто хочет писать только на PHP этой проблемы и не заметит, но для тех любознательных, которые еще не определились с выбором, или планируют что-то менять это может стать серьезным препятствием

Отпусти меня, PHP

да, она родимая.

Отпусти меня, PHP

Не соглашусь. Скажите, какой процент людей, работающих на PHP многие годы углубленно знают про управление памятью, как работает процессор или почему для майнинга лучше подходит GPU? Это будут единицы, которые работали/работают на специфических проектах. PHP в повседневной работе абсолютно не требует этих знаний, оставляя это как «домашнюю работу», которую многие не делают.

Знаете, однажды к нам пришел на собеседование парень, который начинал с какого-то фреймворка, и все время на нем и работал. Так вот он знал только в теории, как без ORM получить данные из БД, а оптимизация запросов для него была темным лесом.

P.S. в большинстве случаев для того, чтобы понимать и разбираться в чем-то еще — необходимо иметь постоянные пет-проекты или хотяб просто задачи, отвлеченные от своей основной деятельности. Однако, как показывает практика, очень многие разработчики не делают ничего кроме тасок в JIRA.

Отпусти меня, PHP

Возможно я плохо расписал суть проблемы, у меня не так много опыта написания статей, но речь все таки о том, что PHP — слишком прост, и позволяет слишком многое.
С одной стороны — это как читать 10 лет бульварные романы, а затем попробовать открыть Кафку.
С другой — язык не учит сложным вещам, мы не задумываемся об очень многих процессах во время написания кода.

И исходя из этого при попытке перехода на язык «посильнее» приходится многие вещи начинать «с нуля».

Отпусти меня, PHP

Писали об этом давно на Хабре, сейчас уже не найду пост, но вот ссылка на драфт в RFC wiki.php.net/rfc/generics

Отпусти меня, PHP

Да, первый сайт был на ковчеге, а второй на h2m.ru уже с PHP, по-взрослому)

Улучшаем архитектуру: Инверсия и внедрение зависимостей, наследование и композиция

Само собой разумеется, просто решил не растягивать статью еще больше, и так получилось довольно много кода

Получение ссылок на аудио без VKApi

Попробуйте Тайский впн, очень многие песни с Пхукета недоступны, кстати.

Magento 2 REST API на примере простого модуля

Вообще magento отказались от прямой имплементации апишных интерфейсов моделями. Более гибкий подход с Data-объектами, наследованными, например, от \Magento\Framework\Api\AbstractExtensibleObject, это позволяет добавлять дополнительные данные в API, не изменяя код модуля.

Подробный пример реализации можно подсмотреть в модуле Magento_Customer

Информация

В рейтинге
493-й
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность