Как стать автором
Обновить
29
0
Никита Гусаков @hell0w0rd

Пользователь

Отправить сообщение

React v0.13 RC

Время на прочтение 3 мин
Количество просмотров 10K
За выходные мы выпустили первый (и надеемся последний) пре-релиз React v0.13!

Мы уже немного говорили о грядущих изменениях. Основное — это конечно же поддержка ES6 классов. Подробнее в нашем анонсе беты. Мы очень взволнованы этим событием! Себастьян также написал сегодня утром о некоторых изменениях с ReactElement. Мы надеемся, что изменения, над которыми мы работатли, улучшат производительность и ощущения от разработки.
Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 2

Flow — статический анализ типов в JS от Facebook

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

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

Примеры под катом
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 56

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

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

Под катом я выписал основные тезисы, большинство из них подробно аргументируется внутри книги, в некоторых «шокирующих» местах помимо тезиса есть небольшое объяснение.
Читать дальше →
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 47

Используем трейты с пользой

Время на прочтение 2 мин
Количество просмотров 19K
На хабре уже было несколько статей о трейтах и о том, как их использовать. Но я пока не видел примеров использования с реальными фреймворками, на которых мы пишем каждый день. Я любитель Symfony2 стека и потому именно на нем я покажу, как можно использовать трейты с пользой.
Читать дальше →
Всего голосов 24: ↑14 и ↓10 +4
Комментарии 14

Переосмысление Zephir

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



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

Новое в Symfony 2.4: компонент ExpressionLanguage

Время на прочтение 5 мин
Количество просмотров 5.9K
В 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.
Примеры под катом
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 11

Tell-Don’t-Ask

Время на прочтение 2 мин
Количество просмотров 17K
Tell-Don’t-Ask является принципом, который помогает вспомнить, что объектно-ориентированное программирование предназначено для связки данных и функций для их обработки. Он напоминает нам, что вместо того, чтобы спрашивать данные у объекта, мы должны сказать объекту что с ними делать. Для этого все поведение объекта надо заключить в его методы.
image
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 11

Получаем доступ к приватным свойствам объектов в PHP без рефлексии

Время на прочтение 3 мин
Количество просмотров 24K
Несколько недель назад я работал над проблемой в ProxyManager. Проблема была проста: ReflectionClass и ReflectionProperty очень, очень, и ооочень медленные!
Причиной этого исследования является моя попытка оптимизировать "hydrator" для работы с большими объемами данных без накладных расходов на инициализацию.
Читать дальше →
Всего голосов 56: ↑36 и ↓20 +16
Комментарии 34

Обратная совместимость для неудачников

Время на прочтение 3 мин
Количество просмотров 12K
Вы верно прочли. Если целью вашего проекта является сохранение обратной совместимости — вы неудачник. Множество популярных проектов от PHP до Microsoft Windows заявляют об обратной совместимости между версиями. И да, я хочу сказать, что это не правильно.
Читать дальше →
Всего голосов 62: ↑24 и ↓38 -14
Комментарии 33

Яндекс обновился. Яндекс острова

Время на прочтение 1 мин
Количество просмотров 33K
На конфренеции Yac/m представили обновленную версию поисковой выдачи. Это крупное изменение, которое готовилось в течении года и наконец было представлено. В яндексе это называют релевантностью интерфейса, если вам нужно записаться на прием ко врачу, купить билет в кино, или помочь другу починить компьютер — все это станет доступным прямо в выдаче, без необходимости ходить по ссылкам.
image
Читать дальше →
Всего голосов 43: ↑36 и ↓7 +29
Комментарии 42

Boris — небольшой, но надежный REPL для php

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

Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.
Читать дальше →
Всего голосов 39: ↑31 и ↓8 +23
Комментарии 12

GitHub Pages переезжают на github.io

Время на прочтение 2 мин
Количество просмотров 27K
Начиная с сегодняшнего дня все сайты GitHub Pages переходят на новый домен: github.io. Это мера безопасности нацеленна на предотвращение CSRF атак на главный сервер — github.com. Если ваш сайт настроен, как «yoursite.com» вместо «yoursite.github.com» — изменения вас никак не затронут.
Если ваш сайт раньше располагался на домене «username.github.com», последующие запросы будут редиректиться на новый домен: «username.github.io».
C этого момента все сайты, размещенные на субдоменах github.com могут и должны расцениваться как официальные продукты GitHub.
Читать дальше →
Всего голосов 35: ↑31 и ↓4 +27
Комментарии 12

Прикручиваем Doctrine 2 ORM к Silex

Время на прочтение 3 мин
Количество просмотров 16K
Недавно узнал о великолепном микро-фреймворке Silex, и примерно столь же недавно о модели ORM. Туториал будет полезен тем, кто хочет связать одно с другим.
Читать дальше →
Всего голосов 16: ↑9 и ↓7 +2
Комментарии 11

Ссылки в интерфейсах

Время на прочтение 1 мин
Количество просмотров 10K
Существует мнение, что ссылки в интерфейсе должны быть подчеркнуты. Бывает подобное не вписывается в дизайн, заказчику не нравится, или сам дизайнер считает, что ссылки нужно выделять как-то по другому. Вопрос — как:
Всего голосов 18: ↑9 и ↓9 0
Комментарии 29

Вышла IOS 6.0.1

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

Более подробная информация о системе безопасности этого обновления.
Всего голосов 24: ↑9 и ↓15 -6
Комментарии 8

Roundabout — фреймворк для создания карусели на основе JQuery

Время на прочтение 3 мин
Количество просмотров 8.2K
Совсем недавно я начал изучать JavaScript, затем JQuery, и теперь потихоньку перехожу к плагинам и фреймворкам построенным на основе вышеупомянутых технологий. Параллельно с изучением JS верстаю небольшие сайты-визитки, и вот у меня возникла необходимость сделать “карусель” из картинок. Оказалось, есть уже готовые решения, и об одном из них я хочу вам рассказать. Данная статья является выдержками с оригинального сайта фреймворка RounAbout.
Читать дальше →
Всего голосов 17: ↑10 и ↓7 +3
Комментарии 5

Информация

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