Стол из изогнутого дерева (или фанеры) — оно, конечно, выглядит понтово, но в домашних условиях такое сделать нелегко.
А не хотите сделать простые соединения из отдельных частей, а потом скруглить углы фрезером? Оно намного проще и не намного хуже будет смотреться.
таки, вы не совсем правы.
можно совсем без рёбер, можно сделать просто небольшую окантовку.
я в свободное от работы время очень люблю работать с деревяшками, делаю себе мебель для мастерской.
вот стол полностью из фанеры толщиной 18 мм, самодельный. При нагрузках до 50 кг ничего нигде не гнётся.
как не рассыпется?
если в коде подключается какой-либо драйвер или мейлер (мы точно не знаем, с чем именно будет работать код, а только знаем, что это нечто должно реализовывать некоторую логику, методы), то в нормальном коде обязательно проверяется if ($object instanceof Interface).
если потом интерфейс убрать, то всё рассыпется
Может быть, переводчик оставит свой комментарий, с какой целью он это перевёл?
Я просто никак не пойму сакрального смысла — зачем начинать использовать какой-то инструмент, чтобы усиленно «отвязываться» от тех преимуществ, которые он даёт
По-моему, всё это несколько избыточно.
Если это бандл для Symfony, то использовать его без Symfony-приложения очень затруднительно.
А значит, люди, которые будут его использовать, уже имеют проект с ядром Symfony и тесты будут запускать в контексте своего приложения.
Если же нужно покрыть тестами специфический функционал, который должен работать сам по себе, то обычно делают разделяют классы или вовсе делают две репы: сама либа, которая, например резервирует номера, и бандл-обвязку для неё.
И, соответственно, в репе либы пишем тесты, которые тестируют функционал либы, а в репе бандла тестируем, как работает обвязка, если это необходимо.
Как-то было дело, когда спамом совсем достали, нашёл программу для автодозвона черз ip-телефонию и поставил номера спамеров на автодозвон с ожиданием несколько секунд.
Там ещё была возможность записать голосовое сообщение, но я всё ленился попробовать.
Почитал немного на эту тему.
Вот да, вопрос законности меня только смущает немного)
А так, насколько я понимаю, всего лишь поднимается Asterisk, берётся несколько sip-аккаунтов, желательно, с невозможностью определить callerID (такие есть) или с разными callerID от звонка к звонку, и пускается дозвон с ротацией сип-операторов (чтобы меньше грузить каждого и чтобы сложнее было заблокировать звонок).
А дальше возможны варианты: можно просто звонить и сбрасывать, когда берут трубку — тогда это будет фактически бесплатно, а можно записать голосовое сообщение о том, что спамить нехорошо, но тут уже будут капать деньги за время «разговора».
Спасибо. В целом с мнением автора я не согласен — как и многим тут, мне кажется, что окружение лучше писать в .gitignore.
Но иногда хочется заигнорить какие-то свои тестовые/экспериментальные контроллеры, вьюхи, тесты или ещё что-нибудь, которые удалять пока рано, в общий gitignore пихать смысла нет, а видеть их болтающимися в текущих незакоммиченных изменениях не хочется.
Я не гуру, и мой опыт в написании тестов очень небольшой. Но я сделал для себя вывод, что бОльшую ценность имеют функциональные (приёмочные) тесты, а не модульные.
То есть, мы тестируем не отдельные функции, а пишем, например, что:
1. страница по такому урлу должна вернуть код 200;
2. на ней должна быть форма;
3. форма при заполнении невалидными данными должна вернуть ошибку (и какую);
4. форма при заполнении валидными данными должна быть обработана, должен произойти редирект и на новой странице должны быть определённые данные.
Согласитесь, код может меняться, а внешнее поведение меняется намного реже.
А модульными тестами я предпочитаю покрывать уже более или менее стабильный код, который сильно меняться не будет.
Я как будто живу в параллельной вселенной. Работаю разработчиком в командах лет 8 уже. Опыт, за копеечным исключением, только с русскими разработчиками. И НИКОГДА не слышал, чтобы программист отказывался решать задачу.
Либо задача несложная — тогда программист просто берёт и делает. Либо решение неочевидно и программисты вместе начинают предлагать варианты по её решению. Находится опитмальный, дальше, опять же, программист берёт и делает.
Да, иногда бывает, что задача занудная и неинтересная. Тогда программист может делать её 3 дня вместо одного. Но никогда не скажет, что это невозможно.
Если бы я сказал, что задачу выполнить не возможно (именно в таком ключе как в статье, без сверхобъективных причин), то на следующий день сам бы уволился из-за профнепригодности.
Да много с кем общался… Магазины разные, в том числе немецкие, производители мото-аксессуаров, Hetzner.
Но надо сказать, что и у наших менеджеров жта проблема присутствует. У многих.
Для меня момент про high context не совсем понятен. Возможно, они в таком стиле пишут, но читать внимательно такой же стиль они не умеют. Часто в переписке с европейцами встречаюсь с тем, что если в моём письме два или три вопроса или предложения, то я получу реакцию только на первый, а остальной текст просто будет проигнорирован, как будто его и не было.
Знаете, мне сначала тоже так казалось.
А потом я увидел за этим непередаваемую красоту и обаяние. В СФ2 программист обладает полной свободой.
Можно написать всё в одном контроллере, и оно, конечно, будет работать.
Но когда используешь Symfony way, приложение получается гибким и масштабируемым засчёт слабых связей.
Вы можете на лету менять поведение, заменяя одни объекты другими, можете легко изменять стандартное поведение классов фреймворка на своё, написав пару строчек в конфиге.
А не хотите сделать простые соединения из отдельных частей, а потом скруглить углы фрезером? Оно намного проще и не намного хуже будет смотреться.
можно совсем без рёбер, можно сделать просто небольшую окантовку.
я в свободное от работы время очень люблю работать с деревяшками, делаю себе мебель для мастерской.
вот стол полностью из фанеры толщиной 18 мм, самодельный. При нагрузках до 50 кг ничего нигде не гнётся.
если в коде подключается какой-либо драйвер или мейлер (мы точно не знаем, с чем именно будет работать код, а только знаем, что это нечто должно реализовывать некоторую логику, методы), то в нормальном коде обязательно проверяется if ($object instanceof Interface).
если потом интерфейс убрать, то всё рассыпется
Я просто никак не пойму сакрального смысла — зачем начинать использовать какой-то инструмент, чтобы усиленно «отвязываться» от тех преимуществ, которые он даёт
Если это бандл для Symfony, то использовать его без Symfony-приложения очень затруднительно.
А значит, люди, которые будут его использовать, уже имеют проект с ядром Symfony и тесты будут запускать в контексте своего приложения.
Если же нужно покрыть тестами специфический функционал, который должен работать сам по себе, то обычно делают разделяют классы или вовсе делают две репы: сама либа, которая, например резервирует номера, и бандл-обвязку для неё.
И, соответственно, в репе либы пишем тесты, которые тестируют функционал либы, а в репе бандла тестируем, как работает обвязка, если это необходимо.
Там ещё была возможность записать голосовое сообщение, но я всё ленился попробовать.
Вот да, вопрос законности меня только смущает немного)
А так, насколько я понимаю, всего лишь поднимается Asterisk, берётся несколько sip-аккаунтов, желательно, с невозможностью определить callerID (такие есть) или с разными callerID от звонка к звонку, и пускается дозвон с ротацией сип-операторов (чтобы меньше грузить каждого и чтобы сложнее было заблокировать звонок).
А дальше возможны варианты: можно просто звонить и сбрасывать, когда берут трубку — тогда это будет фактически бесплатно, а можно записать голосовое сообщение о том, что спамить нехорошо, но тут уже будут капать деньги за время «разговора».
По последнему пункту — у меня такие редкость.
а есть готовые сервисы? или хотя бы куда копать?
Но иногда хочется заигнорить какие-то свои тестовые/экспериментальные контроллеры, вьюхи, тесты или ещё что-нибудь, которые удалять пока рано, в общий gitignore пихать смысла нет, а видеть их болтающимися в текущих незакоммиченных изменениях не хочется.
То есть, мы тестируем не отдельные функции, а пишем, например, что:
1. страница по такому урлу должна вернуть код 200;
2. на ней должна быть форма;
3. форма при заполнении невалидными данными должна вернуть ошибку (и какую);
4. форма при заполнении валидными данными должна быть обработана, должен произойти редирект и на новой странице должны быть определённые данные.
Согласитесь, код может меняться, а внешнее поведение меняется намного реже.
А модульными тестами я предпочитаю покрывать уже более или менее стабильный код, который сильно меняться не будет.
Либо задача несложная — тогда программист просто берёт и делает. Либо решение неочевидно и программисты вместе начинают предлагать варианты по её решению. Находится опитмальный, дальше, опять же, программист берёт и делает.
Да, иногда бывает, что задача занудная и неинтересная. Тогда программист может делать её 3 дня вместо одного. Но никогда не скажет, что это невозможно.
Если бы я сказал, что задачу выполнить не возможно (именно в таком ключе как в статье, без сверхобъективных причин), то на следующий день сам бы уволился из-за профнепригодности.
Но надо сказать, что и у наших менеджеров жта проблема присутствует. У многих.
Пишите ещё.
Здоровья вам и плюсов в карму побольше :)
А потом я увидел за этим непередаваемую красоту и обаяние. В СФ2 программист обладает полной свободой.
Можно написать всё в одном контроллере, и оно, конечно, будет работать.
Но когда используешь Symfony way, приложение получается гибким и масштабируемым засчёт слабых связей.
Вы можете на лету менять поведение, заменяя одни объекты другими, можете легко изменять стандартное поведение классов фреймворка на своё, написав пару строчек в конфиге.