Pull to refresh
29
0
Никита Гусаков @hell0w0rd

User

Send message

React v0.13 RC

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

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

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

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

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

Примеры под катом
Total votes 19: ↑17 and ↓2 +15
Comments 56

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

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

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

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

Reading time 2 min
Views 19K
На хабре уже было несколько статей о трейтах и о том, как их использовать. Но я пока не видел примеров использования с реальными фреймворками, на которых мы пишем каждый день. Я любитель Symfony2 стека и потому именно на нем я покажу, как можно использовать трейты с пользой.
Читать дальше →
Total votes 24: ↑14 and ↓10 +4
Comments 14

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

Reading time 2 min
Views 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 станет более мощным и гибким.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 9

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

Reading time 5 min
Views 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.
Примеры под катом
Total votes 10: ↑8 and ↓2 +6
Comments 11

Tell-Don’t-Ask

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вышла IOS 6.0.1

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

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

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity