• React v0.13 RC

    • Translation
    За выходные мы выпустили первый (и надеемся последний) пре-релиз React v0.13!

    Мы уже немного говорили о грядущих изменениях. Основное — это конечно же поддержка ES6 классов. Подробнее в нашем анонсе беты. Мы очень взволнованы этим событием! Себастьян также написал сегодня утром о некоторых изменениях с ReactElement. Мы надеемся, что изменения, над которыми мы работатли, улучшат производительность и ощущения от разработки.
    Читать дальше →
    • +24
    • 10.1k
    • 2
  • Flow — статический анализ типов в JS от Facebook

      Flow — это статический анализатор кода и набор синтаксических конструкций, для прямого указания типа переменной.
      Flow умеет вычислять тип переменной, без внесения изменений в код (в отличии от TypeScript) что позволяет начать использовать его уже сейчас в любом проекте. Также есть возможность самостоятельно указывать типы в стиле TypeScript.

      Есть 3 режима:
      1. Не проверять ничего, по умолчанию
      2. Проверка без использования аннотаций (с коментарием-аннотацией, как в React)
      3. Строгое указание типа переменной (с внесением изменения непосредственно в код)

      Примеры под катом
    • Официальный гайд по лучшим практикам в Symfony

      • Tutorial
      Fabien Potencier, ментейнер Symfony несколько дней назад представил черновую версию гайда лучшх практик, для разработки приложений с использованием Symfony, как фреймворка (напомню, что также это набор независимых компонентов).
      Мы знаем, как сложно отучиться от старых привычек и некоторые советы шокируют вас, но следуя им вы сможете разрабатывать приложения быстрее, сделать их менее сложными и в то же время более качественными.
      В любом случае стоит помнить, что это всего лишь рекомендации и ваша команда не обязана им следовать. Вы можете продолжать использовать свои подходы, Symfony достаточно гибок для любых нужд и это никогда не изменится.

      Под катом я выписал основные тезисы, большинство из них подробно аргументируется внутри книги, в некоторых «шокирующих» местах помимо тезиса есть небольшое объяснение.
      Читать дальше →
    • Используем трейты с пользой

        На хабре уже было несколько статей о трейтах и о том, как их использовать. Но я пока не видел примеров использования с реальными фреймворками, на которых мы пишем каждый день. Я любитель Symfony2 стека и потому именно на нем я покажу, как можно использовать трейты с пользой.
        Читать дальше →
      • Переосмысление Zephir

        • Translation
        После нескольких месяцев работы над Zephir мы очень довольны прогрессом. В течение нескольких месяцев мы выпустим бета-версию и сможем использовать все ее возможности. Проект собрал более 1000 коммитов и все еще многое нужно сделать. Проект позволил нам провести больше исследований в области computer science и это было очень интересно для нас.
        Кроме того, хоть мы и не уверенны, на счет того, что произойдет с PHP в будущем, так или иначе — мы создаем инструмент, который позволяет использовать еще одну возможность PHP (расширения на C), которая раньше была доступна только опытным C программистам.
        Также в Zephir мы реализовали фичи, о которых многие мечтали, но по тем или иным причинам их нет в PHP сейчас:



        Мы верим, что все это поможет нам улучшить фреймворк и может помочь вам в создании собственных инструментов новым способом. Не всем нужны эти фичи и не все с ними согласны, но так или иначе мы надеемся, что однажды они таки окажутся в PHP. Что бы не произошло, мы надеемся что PHP продолжит развиваться несмотря на пройденный путь.
        Zephir изначально задуман, как высокоуровневый язык, создающий абстракцию над низкоуровневыми деталями ядра PHP. Он генерирует код на C, который в последствии может быть скомпилирован популярными компиляторами такими как gcc/clang/vc.
        Так как Zephir высокоуровневый язык, он может работать, как мета-язык, а не просто DSL.
        После некоторого обдумывания, я создал этот топик, чтобы обсудить с вами новую идею.
        Если мы переделаем Zephir так, чтобы он мог генерировать и PHP и C код, тогда Zephir станет более мощным и гибким.
        Читать дальше →
        • +28
        • 8.1k
        • 9
      • Новое в Symfony 2.4: компонент ExpressionLanguage

        • Translation
        В Symfony 2.4 появится новый компонент — ExpressionLanguage. Компонент является движком для компиляции и исполнения «выражений».
        Этот язык является урезанной версией твига. Выражения укладываются в одну строку и обычно возвращают булево значения, но не ограничиваются этим.
        В отличии от твига, ExpressionLanguage работает в двух режимах:
        • Компиляция: выражение компилируется в PHP код для последующего исполнения (код не зависит от среды выполнения)
        • Исполнение: выражение исполняется без предварительной компиляции

        Чтобы было возможно компилировать выражения в PHP код, не нуждающийся в модификации во время выполнения, оператор . должен быть явным и означать лишь одно возможное поведение: foo.bar — для свойств объекта, foo['bar'] для доступа к массиву, foo.getBar() для вызова методов.
        Использование компонента просто на сколько это возможно:
        use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
        
        $language = new ExpressionLanguage();
        
        echo $language->evaluate('1 + 1');
        // echo 2
        
        echo $language->compile('1 + 2');
        // echo "(1 + 2)"
        

        Язык выражений поддерживает все то же что и твиг: математические операторы, строки, числа, массивы, хеши, булевы переменные… Выражения могут рассматриваться как очень ограниченная PHP-песочница, в которой невозможны внешние воздействия, все переменные должны быть объявлены заранее до компиляции или исполнения выражения.
        $language->evaluate('a.b', array('a' => new stdClass()));
        
        $language->compile('a.b', array('a'));
        

        Последнее, но не по значению — вы можете легко расширить язык с помощью функций. Они работают точно также как их аналоги в твиге (для подробного ознакомления посмотрите метод register())
        Как на счет примеров использования? Мы встроили компонент во множество других компонентов, используемых в Symfony.
        Примеры под катом
      • Tell-Don’t-Ask

        • Translation
        • Tutorial
        Tell-Don’t-Ask является принципом, который помогает вспомнить, что объектно-ориентированное программирование предназначено для связки данных и функций для их обработки. Он напоминает нам, что вместо того, чтобы спрашивать данные у объекта, мы должны сказать объекту что с ними делать. Для этого все поведение объекта надо заключить в его методы.
        image
        Читать дальше →
        • +5
        • 12.2k
        • 9
      • Получаем доступ к приватным свойствам объектов в PHP без рефлексии

        • Translation
        Несколько недель назад я работал над проблемой в ProxyManager. Проблема была проста: ReflectionClass и ReflectionProperty очень, очень, и ооочень медленные!
        Причиной этого исследования является моя попытка оптимизировать "hydrator" для работы с большими объемами данных без накладных расходов на инициализацию.
        Читать дальше →
      • Обратная совместимость для неудачников

        • Translation
        Вы верно прочли. Если целью вашего проекта является сохранение обратной совместимости — вы неудачник. Множество популярных проектов от PHP до Microsoft Windows заявляют об обратной совместимости между версиями. И да, я хочу сказать, что это не правильно.
        Читать дальше →
      • Яндекс обновился. Яндекс острова

          На конфренеции Yac/m представили обновленную версию поисковой выдачи. Это крупное изменение, которое готовилось в течении года и наконец было представлено. В яндексе это называют релевантностью интерфейса, если вам нужно записаться на прием ко врачу, купить билет в кино, или помочь другу починить компьютер — все это станет доступным прямо в выдаче, без необходимости ходить по ссылкам.
          image
          Читать дальше →
        • Boris — небольшой, но надежный REPL для php

          • Tutorial
          REPL есть у python, ruby, clojure. REPL — read-eval-print loop. Если описать на псевдокоде что такое REPL — это будет выглядеть как-то так:
          while(true){
              echo eval($input->get());
          }
          

          Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.
          Читать дальше →
        • GitHub Pages переезжают на github.io

            Начиная с сегодняшнего дня все сайты GitHub Pages переходят на новый домен: github.io. Это мера безопасности нацеленна на предотвращение CSRF атак на главный сервер — github.com. Если ваш сайт настроен, как «yoursite.com» вместо «yoursite.github.com» — изменения вас никак не затронут.
            Если ваш сайт раньше располагался на домене «username.github.com», последующие запросы будут редиректиться на новый домен: «username.github.io».
            C этого момента все сайты, размещенные на субдоменах github.com могут и должны расцениваться как официальные продукты GitHub.
            Читать дальше →
          • Ссылки в интерфейсах

              Существует мнение, что ссылки в интерфейсе должны быть подчеркнуты. Бывает подобное не вписывается в дизайн, заказчику не нравится, или сам дизайнер считает, что ссылки нужно выделять как-то по другому. Вопрос — как:
            • Вышла IOS 6.0.1

                Буквально только что вышла IOS 6.0.1. Вот список изменений:
                • Исправлена ошибка, препятствовавшая установке устройством iPhone 5 обновлений ПО беспроводным способом.
                • Исправлена ошибка, которая могла приводить к отображению горизонтальных линий поверх клавиатуры.
                • Устранена проблема, которая могла приводить к отказам в работе вспышки камеры.
                • Повышен уровень надежности работы iPhone 5 и iPod touch (5-го поколения) при подключении к зашифрованным сетям Wi-Fi WPA2.
                • Устранена проблема, в некоторых случаях препятствовавшая использованию устройством iPhone сотовых сетей.
                • Представлен единый переключатель «Сотовые данные» для iTunes Match.
                • Исправлена ошибка с защитой паролем, которая в отдельных случаях могла приводить к предоставлению доступа к информации карт Passbook с заблокированного экрана.
                • Исправлена ошибка, влиявшая на функциональность собраний Exchange.

                Более подробная информация о системе безопасности этого обновления.
                • –6
                • 13.1k
                • 8
              • Roundabout — фреймворк для создания карусели на основе JQuery

                Совсем недавно я начал изучать JavaScript, затем JQuery, и теперь потихоньку перехожу к плагинам и фреймворкам построенным на основе вышеупомянутых технологий. Параллельно с изучением JS верстаю небольшие сайты-визитки, и вот у меня возникла необходимость сделать “карусель” из картинок. Оказалось, есть уже готовые решения, и об одном из них я хочу вам рассказать. Данная статья является выдержками с оригинального сайта фреймворка RounAbout.
                Читать дальше →