• Мутационное тестирование
    +2
    Из вашего комментария не совсем понял, хорошо это или плохо?

    Но а целом да, не упоминал специально.
  • Мутационное тестирование
    +1
    А сколько у вас занимает МТ для вашего проекта?
    Могли бы добавить в билд с опцией `--min-covered-msi`.

    Данный показатель позволит не снижать качество существующих и новых тестов. Но если писать новые не будете, билд падать не будет.
  • Мутационное тестирование
    +2
    Вы немного заблуждаетесь.
    Я не описал этот момент в статье, но у мутационного тестирования есть свои методики увеличения скорости работы.

    Самая основная, это запуск *только тех тестов, которые покрывают мутируемую строку*.

    Это означает, что для Мутации X вам потребуется запуск не 500 тестов, а только Y из них (1,2, 5 — сколько получится). Более того, следующий шаг, это запуск сначала самых быстрых тестов, из тех что покрывают строку.

    В целом, это кардинально снижает время, затраченное на мутационное тестирование.

    Не знаю, может стоит написать Часть 2 про разные методики улучшения производительности, и как МТ устроено внутри?
  • Мутационное тестирование
    +1
    Скажите, пробовали ли вы Infection там, где пробовали Humbug? Интересна разница на «живых примерах».

    Буду благодарен за любые полезные комментарии по этому поводу.
  • Мутационное тестирование
    +1
    Вы удивитесь, попробуя даже для вашего pet-project мутационное тестирование.
    Тут дело не в крутости и сложности исходного кода, а в эффективности юнит тестов. А они то бывают плохими даже для простого кода.
  • Мутационное тестирование
    0
    Насколько я понял, чтобы использовать Infection, код должен быть написан в соответствии с типизацией php7?


    Нет, это не обязательно. Просто строгая типизация уменьшает количество сгенерированных мутантов (как в примере про return type).

    А так любой код может быть мутирован, с тайпхинтами или нет.
  • Мутационное тестирование
    0
    Хорошая идея, подумаю о добавлении этой фичи :)
    Пока это невозможно, т.к. надо хранить где-то значения.
  • Мутационное тестирование
    +1
    Из того что я знаю: у нас на работе ребята на митапе рассказывали, что используют на многих новых проектах, причем выставляя на билдах уровень в 100%. Но там Ruby и МФ — Mutant, возможно, он позволяет регистрировать false-positives и упомянутые в статье идентичный мутации.

    Из опенсорса, @Ocramius использует в некоторых библиотеках МТ.
  • Мутационное тестирование
    +3
    За вас она ничего не определяет, она пытается понизить модификатор доступа метода, и, если при этом тесты не падают, значит есть вероятность, что метод зря имеет такой уровень доступа. Такую мутацию надо проанализировать и либо дописать тест, либо сделать соответствующие изменения в коде.

    Как говорят умные люди, любой `public` или `protected`метод — это ваш ребенок. Как только вы его написали, вы обязаны следить за ним и за его Backward Compatibility. Особенно, это касается Open Source библиотек, классы которых вы можете наследовать.

    Пример из реального проекта: в базовом классе был `protected` метод, который переопределялся в дочерних классах. В результате рефакторинга иерархия классов изменилась, и из базового класса данный метод был удален, оставшись только в одном дочернем. Но модификатор доступа изменить забыли, т.е. он остался `protected`. Мутационное тестирование находит такие проблемы.
  • Symfony: Webpack Encore — плагин для управления ресурсами
    +1
    я именно про Encore и говорю, поддержка TypeScript была вмержена 5 дней назад
  • Symfony: Webpack Encore — плагин для управления ресурсами
    0
    Стоит отметить, что релизнута была поддержка TypeScript, что делает этот интсрумент еще более интересным.
  • PHP-Дайджест № 105 – интересные новости, материалы и инструменты (13 – 26 марта 2017)
    +2
    Еще краудфандинговая компания есть у автора PHPStan — https://www.patreon.com/phpstan
  • Объединяем Code Coverage от PHPUnit и phpspec
    0
    Кем не воспринимается? Значит ли это, что тесты должны быть в любой библиотеке, просто «шоб було»?


    Не воспринимается разработчиками. Если я вижу выбор среди нескольких бандлов/модулей, не последнее место будет занимать критерий выбора по наличию test suite.

    Да что тут говорить, когда делаешь PR тебя в большинстве случаях попросят добавить и тесты, хотябы как самый свежий пример — изменение в этом плане политики в репозитории Yii фреймворка.

    А кто будет гарантировать качество самих тестов? Всегда ли это решение разумно и обосновано?


    Мне кажется, вы придираетесь к словами. Когда вы пишите тесты, вы часто находите ошибки в своем коде (если пишите их после написания кода). Либо тесты помогают вам изначально выстроить более лучшую архитектуру ваших классов, если вы пишите тесты до написания кода. Естественно могут быть ошибки и в тестах, это очевидно.

    Еще раз подчеркну, тесты гарантируют вам что после рефакторинга ваш код работает так, как вы это задумывали до него. Меньше траты времени на поддержку -> меньше багов -> более стабильный код
  • Объединяем Code Coverage от PHPUnit и phpspec
    0
    добавил в статью еще альтернативный вариант
  • Изменение в PHP 7, ломающее при обновлении с пятой версии некоторые сервера на Ubuntu
    0
    по степени владения языком


    надеюсь вы про PHP ;)
  • Как использовать именованные конструкторы в PHP
    0
    Обязательно пишите!
  • How to ReactJS
    +8
    Было бы интересно, так что собирайтесь быстрее
  • Гексагональная архитектура
    0
    Выглядит интересно. Может быть есть сопровождающий пост к этому репозиторию?
  • 19 советов по повседневной работе с Git
    0
    Спасибо за `git up`, просто и полезно
  • IDE от JetBrains теперь доступны только в аренду
    0
    gorohoroh Скажите пожалуйста, а коснутся ли перемены EAP (Early Access Program) версий ваших продуктов, в частности PHPStorm?
  • Skype повернулся лицом к людям?
    +1
    Нужно обязательно, желательно на Github.
  • Тестирование модулей RequireJS в Symfony2
    0
    Спасибо за статью. А как вы эти тесты запускаете, например, на CI сервере? PhantomJS?
  • Особенности разработки API на Symfony2
    0
    Сделайте кастомную выгрузку коллекции, чтобы там было 3-4 связи и это было скажем на хотябы на 100K записей. А также выводились данные о пагинации.


    Ну вы же не 100К записей выводите. У нас есть пример с многомиллионной таблицей — все работает. Сами связи и степень их вложенности ведь запросто контролируются аннотациями, более того можно что-нибудь сложное выбирать в POST_SERIALIZE джоином, если много запросов не устраивает.

    Про пагинацию в предыдущем комментарии ответил, нет ничего сложного и «очень медленного».

    > www.techempower.com/benchmarks — Искать Spring и Symfony2. На самом деле так и есть.

    Хотелось бы реальный пример, ну да ладно.

    PS никто не холиварит, здоровый интерес :)
  • Особенности разработки API на Symfony2
    0
    JMSSerializer переусложнен и очень медленный. Даже опытные разработчики могли потерять часы, чтобы что-то подправить в API сгенерированном этим сервисом.

    Приведите, пожалуйста, конкретный пример. К слову, с такой же ситуацией я и сам недавно столкнулся, но количество времени, которое JMSSerializer сэкономил, ставит на нет некоторые недочеты и сложности.

    Если нужно сделать что-то сложное, например поиск, это вообще ад.

    А причем serializer к поиску? Если и необходимо дополнительные данные вывести (количество всех записей, текущая страница/сдвиг и т.д.) — ну добавили объект-обертку ResultSet к результирующей коллекции и полет нормальный

    Джуниора вообще подпускать к этому бандлу нереально.

    Тут сложно не согласиться.

    Но… java работает примерно от 10 до 200 раз быстрее.

    До 200 раз? Приведите, пожалуйста, пример
  • Чего ждать, когда ждешь ребенка: PHP 7, часть 1
    0
    RFC на добавлении этой функции почти прошло голосование, но на автора настолько повлияли споры об этом, что он решил покинуть PHP-разработку, а также снял RFC с голосования.


    Стоит отметить, что автором была вот эта девушка, один из самых активных контрибьюторов PHP.
  • PHP-Дайджест № 60 – интересные новости, материалы и инструменты (30 марта – 13 апреля 2015)
    0
    Поделитесь ссылкой или статьей, где он не различает?
  • Ionic framework. Обзор экосистемы
    +1
    На мой взгляд любая информацию будет однозначно полезна, будь это пост для начинающих или продвинутых :) Возможно, tutorial привлечет больше внимания со стороны тех, кто не пользовался фреймворком никогда.
  • Ionic framework. Обзор экосистемы
    +1
    Не подумал о таком пункте, но уже поздно добавлять.
    Про пуш уведомления — тема тянет на отдельный пост, если делать с примером реализации. Можно и перевод оформить, есть много классных статей уже.

    А статью о разработке конечно пишите. Я вообще удивлен, почему так мало информации на хабре про Ionic. Не то что мало, её просто нет.
  • Ionic framework. Обзор экосистемы
    +2
    Всё зависит от приложения и девайса. На моём Nexus 5 несложное приложение на Ionic летает, и реально разницы между нативными приложениями нет. Однако есть интересное приложение Vice Versa , также написанное на Ionic, и вот там уже заметны лаги. Всё относительно :)
  • SummaryJS, выпуск 3
    0
    У некоторых, например, ноутбук при чтении статьи, либо Mac с MagicMouse, и надо дополнительно нажимать еще Cmd+Click, чтобы открыть в новой вкладке.
    А вообще, реально есть такие люди еще :)
  • Symfony2. Универсальный инструмент для быстрого приготовления табличных списков в административной панели
    0
    Для любителей Symfony и не любителей SonataAdminBundle есть еще такая альтернатива github.com/javiereguiluz/EasyAdminBundle от небезызвестного Javier Eguiluz
  • Нетрадиционный обзор AngularJS
    +2
    оффтоп

    не нашел ни одного хорошего примера бесконечного списка, уже на 1000-1500 позиций большинство начинает безбожно тормозить


    Посмотрите как это реализовано в Ionicframework ionicframework.com/blog/collection-repeat/
  • Несколько интересностей и полезностей для веб-разработчика #36
    +5
    Лучшее от Codrops за 2014 год

    Есть на что посмотреть! спасибо за наводку
  • Учебник AngularJS: Всеобъемлющее руководство, часть 1
    0
    В статьях с меткой «перевод» ссылка на оригинал находится в конце статьи, рядом с именем Автора поста на хабре.
  • PHP 7 получит в два раза более эффективный Hashtable
    +3
    Можете привести пример где в минорном релизе ломается совместимость?

    P.S. И таки да — Юникод. Говорим про 7-ку, даже не про 6-ку. Какой там год на дворе к ее выходу будет?..


    Год будет предположительно 2015, подробнее тут wiki.php.net/rfc/php7timeline
    6й версии не будет, об этом много написано, после 5-й будет 7-я ;)
  • Лучшее из мира PHP за 2014 год + конкурс от компании JetBrains! PHP‑Дайджест № 53
    0
    Christophe Coevoet (@stof70)

    twitter.com/Stof70
    github.com/stof

    О количестве проектов, которые он поддерживает и в которые контрибьютит — ходят легенды. Большниство его знает как Symfony core develop.
  • Оптимизация модулей RequireJS в Symfony2
    0
    Первая проблема частична решается путём переноса jquery в локальный файл. Остается такая проблема
    Error: No define call for /js/0d5e2b3.js для файла requirejs.min.js
    По ссылке requirejs.org/docs/errors.html#nodefine ни одна причина не подходит на мой взгляд. При этом dev режим работает отлично
  • Оптимизация модулей RequireJS в Symfony2
    0
    Есть 2 вопроса по вашей конфигурации:

    1. При такой конфигурации (используя filter="?requirejs") в получившемся минифицированном файле у меня в prod режиме падает ошибка: ReferenceError: jQuery is not defined
    Зависимость от jquery везде указана, вот конфиг:
    конфиг
    hearsay_require_js:
        require_js_src: //cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.min.js
        initialize_template: HearsayRequireJSBundle::initialize.html.twig
        base_url: js
        base_dir: %kernel.root_dir%/scripts
        optimizer:
            path: %kernel.root_dir%/scripts/r.js
            hide_unoptimized_assets: false
        paths:
            # RequireJS plugins
            text: %kernel.root_dir%/scripts/requirejs/plugins/text
    
            # Application scripts
            app: @AppBundle/Resources/public/js/app
            user: @AppBundle/Resources/public/js
            platform: @AppBundle/Resources/public/js
    
            # Other libs and plugins
            underscore: %kernel.root_dir%/scripts/underscore
            chosen: %kernel.root_dir%/scripts/jquery/plugins/chosen/chosen.jquery.min
    
            # Externals
            jquery:
                location: //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min
                external: true
            bootstrap:
                location: //maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min
                external: true
        options:
            locale: %locale%
            enforceDefine: true
            i18n:
                locale: %locale%
        shim:
            bootstrap:
                deps: [jquery]
                exports: jQuery
            underscore:
                exports: _
            chosen:
                deps: [jquery]
                exports: 'jQuery.fn.chosen'
    



    2. Не менее важный вопрос: а как вы подключаете в шаблонах файлы, которые нужны только на этой странице? Конкретно код интересует.
    Я попробовал подключить через
    {% block javascripts %}
    <script>
            require(['user/login/helper'], function (LoginHelper) {
                LoginHelper.init();
            });
        </script>
    {% endblock%}
    


    но при этом они уже не минифицируются, а загружаются отдельным http запросом.

  • Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket
    0
    Интерфейс действительно совсем не очевидный.
    Я правильно понял, что версию и все настройки надо сохранять в shippable.yml и закомитить в проект? А то после старта сразу разные (три) версии PHP, начали билдиться.

    На счет цен согласен, $12 в год — это смешно.
  • Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket
    +1
    Это самое последнее, что я бы советовал. Попробую объяснить:
    1. SaaS стоит денег, если только на свой сервер ставить
    2. Когда я смотрел PHPCI в последний раз, то там невозможно было запустить, например, версию PHPUnit ту, которая установлена у вас в vendor папке через composer. То есть тесты можно было запустить только через глобальный PHPUnit установленный на сервере, что совершенно, на мой взгляд, неприемлемо. Даже создавал issue в их репозитории, но разработчики дали понять что ничего с этим делать не будут.
    3. github.com/Block8/PHPCI/graphs/contributors посмотрите на график, мне кажется проект «затухает». Хотя здесь gitter.im/Block8/PHPCI какие-то энтузиасты пытаются/будут пытаться его поддерживать.