Отчасти вы правы, на самом деле нет большой разницы для дебага, file_put_contents(logfile) или file_get_contents в телегу, в первом случае смотришь в файл, во втором - в чат.
С точки зрения производительности: написать в файл быстрее чем отправить запрос на другой сервер.
С точки зрения размера лога: телеграм сообщение имеет ограниченную длину.
С точки зрения «сломать прод» - в телеге есть ограничение на количество запросов в секунду, и если его превысить - телега вернет ошибку.
С точки зрения «замедлить прод»: на сервере может быть вайтлист разрешенных исходящих соединений, и тогда каждый такой вызов будет ждать 30 секунд (или как настроено) прежде чем отвалиться.
Как видите - будет гораздо больше изменений, нежели «размер файла и дата модификации»
Вы в школе на математике на задачах вида "У Коли и Пети было два яблока, Коля отдал одно яблоко Пете, сколько у Коли яблок" тоже сокрушались, что Коля теперь несчастный с единственным яблоком, когда его дружбан жирует с тремя? =)
Я не говорю, что тестами нужно покрывать все. Но неужто у вас никогда не было сложных алгоритмов, которые гораздо быстрее протестировать программно, нежели руками?
Нельзя так просто взять, и сказать, что тесты для MVP - говно. Или - наоборот, серебряная пуля.
Я могу привести примеры проектов, где тесты только тормозили замену логики работы фич, и примеры проектов, где потраченный на автотест час экономил 8 человеко-часов команды на реопен бага и перетесты.
Вставлю свои 5 копеек — работал на проекте, который предоставлял исключительно json-апи для фронта на ангуляре. И все апи покрывали функциональными тестами на codeception. И это было невероятно удобно, также с апи очень легко работал подход TDD
Естественно то, что описано в статье — не серебряная пуля, и все может сильно отличаться от проекта к проекту.
Например — те же 80 полей могут оказаться полями одной сущности — и тогда они прекрасно мапятся на dto, и далее по коду используется уже мок этого самого объекта, вместо класса реквеста.
Плюс сложно представить код, в котором 80 полей из реквеста получаются вручную через get() 80 раз, скорее код будет немного другим
По второму юнит тест подразумевает полное изолирование от внешней среды. Если передавать что-то еще, даже простые дата-объекты, то это уже не полная изоляция, и тест уже скорее интеграционный.
А как предпросматривать текст, который отображается в ответ на конкретные действия пользователя?
Ну вот например — «сохранено». Усложненный вариант: контроллер с формой, отдельный контроллер обработки формы, добавление сессионного сообщения, редирект обратно на форму.
У меня вообще был веселый опыт с амазоном.
Хотел купить там что-то, зарегистрировался, купил. Попутно поставил галку на подписку амазон прайма, там фришиппинг и триал в месяц.
Через пару дней меня забанили с требовнием подтвердить, что я — это я и карта моя. Причем никакие выписки из банка на них не действовали, как в ответ одно и то же «выписка не нравится, давайте еще раз».
Проходит месяц, и они снимают платеж за амазон прайм. Ох, как у меня горело. То есть я мошенник с чужой кредиткой, но как бабки списать — так всегда пожалуйста. Аккаунт заблокирован, подписку не отменить. Поддержка футболит «вы мошенник с чужой кредиткой, идите отсюда». Месяца 3 или 4 убил на то, чтобы они наконец достали палец из носа и занялись делом.
Я не силен в подкапотном пространстве телефонии, но неужели нельзя ограничить подмену caller id на уровне операторов? К примеру, получить id другого человека или компании можно только по заявлению самого человека (если вдруг что- не так — вот все документы, вот пользователь подмененого номера). А иначе — номер подставлять родной. Ну или подписывать, так сказать, каждый номер сертификатом=)
Эхх, столько сделали, спасибо.
Но вы просто не представляете, сколько людей сказали бы вам спасибо, если бы можно было в настройках проекта указать ветку по-умолчанию для новых мерж-реквестов (в русской локализации — запросов на слияние :)).
P.S. предупреждая самый популярный ответ — настройка default branch не подходит вот почему
Отвечу только на последний абзац: хорошо, когда у тебя работа не состоит из ежедневного клепания сайтов «на скорость» (а это — львиная часть аутсорс-компаний)
Я не доказываю что PHP плохой, я люблю PHP. Я просто хотел подчеркнуть одну из проблем языка. Да, тот, кто хочет писать только на PHP этой проблемы и не заметит, но для тех любознательных, которые еще не определились с выбором, или планируют что-то менять это может стать серьезным препятствием
Исповедь ничтожества
Да
Исповедь ничтожества
Спасибо, добавил
Исповедь ничтожества
Да, наоборот, вы правы. Но по сути же, если я не ошибаюсь, будет одно и то же, просто зеркально относительно диагонали между х и у.
Telegram для кодера — быстро ищем, что с кодом
Окей, давайте поразмышляем.
Отчасти вы правы, на самом деле нет большой разницы для дебага, file_put_contents(logfile) или file_get_contents в телегу, в первом случае смотришь в файл, во втором - в чат.
С точки зрения производительности: написать в файл быстрее чем отправить запрос на другой сервер.
С точки зрения размера лога: телеграм сообщение имеет ограниченную длину.
С точки зрения «сломать прод» - в телеге есть ограничение на количество запросов в секунду, и если его превысить - телега вернет ошибку.
С точки зрения «замедлить прод»: на сервере может быть вайтлист разрешенных исходящих соединений, и тогда каждый такой вызов будет ждать 30 секунд (или как настроено) прежде чем отвалиться.
Как видите - будет гораздо больше изменений, нежели «размер файла и дата модификации»
Разбор тестового задания в Тиньков [SQL]
Потому что результатом выполнения этого запроса будет одно число, месяцы вы там не увидите
Коля и его истории про фулфилмент
Вы в школе на математике на задачах вида "У Коли и Пети было два яблока, Коля отдал одно яблоко Пете, сколько у Коли яблок" тоже сокрушались, что Коля теперь несчастный с единственным яблоком, когда его дружбан жирует с тремя? =)
Основные тренды в мошенничестве за 2021 год
Я может сейчас ляпну глупость, но разве не «а ведь можно было просто проверять, прошла ли транзакция»?
Обычно в платежных системах, если денег на карте нет, то и заказ не совершается
Четыре ошибки программистов, которые я осознал, только когда стал CTO
Я не говорю, что тестами нужно покрывать все. Но неужто у вас никогда не было сложных алгоритмов, которые гораздо быстрее протестировать программно, нежели руками?
Четыре ошибки программистов, которые я осознал, только когда стал CTO
Нельзя так просто взять, и сказать, что тесты для MVP - говно. Или - наоборот, серебряная пуля.
Я могу привести примеры проектов, где тесты только тормозили замену логики работы фич, и примеры проектов, где потраченный на автотест час экономил 8 человеко-часов команды на реопен бага и перетесты.
Практики при работе с PHPUnit
Вставлю свои 5 копеек — работал на проекте, который предоставлял исключительно json-апи для фронта на ангуляре. И все апи покрывали функциональными тестами на codeception. И это было невероятно удобно, также с апи очень легко работал подход TDD
Не мокайте то, чем вы не владеете
Естественно то, что описано в статье — не серебряная пуля, и все может сильно отличаться от проекта к проекту.
Например — те же 80 полей могут оказаться полями одной сущности — и тогда они прекрасно мапятся на dto, и далее по коду используется уже мок этого самого объекта, вместо класса реквеста.
Плюс сложно представить код, в котором 80 полей из реквеста получаются вручную через get() 80 раз, скорее код будет немного другим
Не мокайте то, чем вы не владеете
По первому пункту полностью согласен.
По второму юнит тест подразумевает полное изолирование от внешней среды. Если передавать что-то еще, даже простые дата-объекты, то это уже не полная изоляция, и тест уже скорее интеграционный.
Разделение кода и текста: прототип
Ну вот например — «сохранено». Усложненный вариант: контроллер с формой, отдельный контроллер обработки формы, добавление сессионного сообщения, редирект обратно на форму.
Боль разработчика: «Никогда не давайте пользователям бесплатный тариф»
Хотел купить там что-то, зарегистрировался, купил. Попутно поставил галку на подписку амазон прайма, там фришиппинг и триал в месяц.
Через пару дней меня забанили с требовнием подтвердить, что я — это я и карта моя. Причем никакие выписки из банка на них не действовали, как в ответ одно и то же «выписка не нравится, давайте еще раз».
Проходит месяц, и они снимают платеж за амазон прайм. Ох, как у меня горело. То есть я мошенник с чужой кредиткой, но как бабки списать — так всегда пожалуйста. Аккаунт заблокирован, подписку не отменить. Поддержка футболит «вы мошенник с чужой кредиткой, идите отсюда». Месяца 3 или 4 убил на то, чтобы они наконец достали палец из носа и занялись делом.
Чем опасен ТГ-бот, позволяющий подменять Caller-ID
Вышел релиз GitLab 13.7 с проверяющими для мерж-реквестов и автоматическим откатом при сбое
Вышел релиз GitLab 13.7 с проверяющими для мерж-реквестов и автоматическим откатом при сбое
Но вы просто не представляете, сколько людей сказали бы вам спасибо, если бы можно было в настройках проекта указать ветку по-умолчанию для новых мерж-реквестов (в русской локализации — запросов на слияние :)).
P.S. предупреждая самый популярный ответ — настройка default branch не подходит вот почему
Отпусти меня, PHP
Отвечу только на последний абзац: хорошо, когда у тебя работа не состоит из ежедневного клепания сайтов «на скорость» (а это — львиная часть аутсорс-компаний)
Отпусти меня, PHP
Я не доказываю что PHP плохой, я люблю PHP. Я просто хотел подчеркнуть одну из проблем языка. Да, тот, кто хочет писать только на PHP этой проблемы и не заметит, но для тех любознательных, которые еще не определились с выбором, или планируют что-то менять это может стать серьезным препятствием
Отпусти меня, PHP