Как стать автором
Обновить
0
Алексей Протасов @Flammenmenschread⁠-⁠only

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

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

Пожалуйста, перестаньте рекомендовать Git Flow

Время на прочтение6 мин
Количество просмотров202K
Прим. перев.: Новая статья с критикой полюбившейся многим Git Flow получила столь заметное внимание, что даже оригинальный автор модели обновил публикацию 10-летней давности, актуализировав свой взгляд на её применение сегодня. Публикуем перевод как самой критики, так и официальной реакции.



Git-flow — это методология ветвления и слияния, сильно популяризированная заметкой 2010 года под названием «A Successful Git branching model» (была переведена на хабре как «Удачная модель ветвления для Git» — прим. перев.).

За последние десять лет бесчисленное множество команд пали жертвой этого громкого названия и оказались — не побоюсь этого слова — откровенно облапошены. В своей заметке автор утверждает, что они успешно внедрили эту модель в проекты, но умышленно не раскрывает подробности проектов, которые привели к этой «успешности».

И это главная ошибка тех, кто верит данной публикации. Общеизвестен факт, что не все стратегии работают во всех ситуациях, со всеми людьми, во всех контекстах. И я утверждаю, что та же логика применима и к этой модели ветвления.

На этом можно заканчивать, так? Ну, не совсем. Наверняка некоторые из вас скептически отнеслись к моей цепочке рассуждений, поэтому давайте копнем поглубже и попытаемся понять, почему модель ветвления Git-flow должна поджариться на медленном огне.
Читать дальше →
Всего голосов 78: ↑69 и ↓9+80
Комментарии177

Типизированный DSL в TypeScript из JSX

Время на прочтение5 мин
Количество просмотров6.2K


У TypeScript есть встроенная поддержка JSX синтаксиса и компилятор TypeScript'а предоставляет годные инструменты по настройке процесса компиляции JSX. По сути, это создает возможность писать типизированный DSL используя JSX. В этой статье речь пойдет именно про это — как написать DSL из г с помощью JSX. Заинтересовавшихся прошу под кат.

Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии2

Введение в программирование шейдеров для верстальщиков

Время на прочтение18 мин
Количество просмотров32K


WebGL существует уже давно, про шейдеры написано немало статей, есть серии уроков. Но в основной массе они слишком сложные для верстальщика. Даже лучше сказать, что они охватывают большие объемы информации, которые скорее нужны разработчику игрового движка, чем верстальщику. Там сразу начинают с построения сложной сцены, камера, свет… На обычном сайте для создания пары эффектов с фотографиями все эти знания избыточны. В результате люди делают очень сложные архитектурные конструкции и пишут длинные-длинные шейдеры ради очень простых по сути действий.


Все это побудило создать введение в те аспекты работы с шейдерами, которые наиболее вероятно пригодятся в работе именно верстальщику для создания различных 2d-эффектов с картинками на сайте. Конечно с поправкой на то, что сами по себе в дизайне интерфейсов они у нас применяются относительно редко. Мы сделаем стартовый шаблон на чистом JS без сторонних библиотек и рассмотрим идеи создания некоторых популярных эффектов, основанных на сдвиге пикселей, которые сложно сделать на SVG, но при этом они легко реализуются с помощью шейдеров.

Всего голосов 42: ↑41 и ↓1+40
Комментарии8

Как сделать поиск пользователей по GitHub используя React + RxJS 6 + Recompose

Время на прочтение8 мин
Количество просмотров9K

Картинка для привлечения внимания


Эта статья рассчитана на людей имеющих опыт работы с React и RxJS. Я всего лишь делюсь шаблонами, которые я посчитал полезными для создания такого UI.

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии8

React медленный, React быстрый: оптимизация React-приложения на практике

Время на прочтение14 мин
Количество просмотров65K

Всем привет! Хочу поделиться своим переводом статьи React is Slow, React is Fast: Optimizing React Apps in Practice автора François Zaninotto. Надеюсь, это кому-то будет полезным.


Краткое содержание:


  1. Измерение производительности React
  2. Почему ты обновился?
  3. Оптимизация через разбиение на компоненты
  4. shouldComponentUpdate
  5. Recompose
  6. Redux
  7. Reselect
  8. Остерегайтесь объектных литералов в JSX
  9. Заключение

React может быть медленным. Я хочу сказать, что любое React приложение среднего размера может оказаться медленным. Но прежде, чем искать ему замену, вы должны знать, что и любое среднее приложение на Angular или Ember может также оказаться медленным.


Хорошая новость в том, что если вы действительно заботитесь о производительности, то сделать React приложение очень быстрым довольно легко. Об этом — далее в статье.

Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии59

Типичное использование Observable объектов в Angular 4

Время на прочтение5 мин
Количество просмотров78K

Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.



Подписка на параметр роутера и мапинг на другой Observable


Задача: При открытии страницы example.com/#/users/42, по userId получить данные пользователя.


Решение: При инициализации компоненты UserDetailsComponent мы подписываемся на параметры роутера. То есть если userId будет меняться — будер срабатывать наша подписка. Используя полученный userId, мы из сервиса userService получаем Observable с данными пользователя.


// UserDetailsComponent

ngOnInit() {
  this.route.params
    .pluck('userId') // получаем userId из параметров
    .switchMap(userId => this.userService.getData(userId))
    .subscribe(user => this.user = user);
}

Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии12

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров728K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Всего голосов 212: ↑212 и ↓0+212
Комментарии352

Дайджест свежих материалов из мира фронтенда за последнюю неделю №265 (29 мая — 4 июня 2017)

Время на прочтение4 мин
Количество просмотров20K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии2

Статья, на которую можно ссылаться: что такое блокчейн

Время на прочтение9 мин
Количество просмотров82K
В 2017 году блокчейн стал предметом научного интереса, когда в Торонто открылся первый институт исследований блокчейна. Около 30 ведущих экспертов приступили к разработке различных проектов, связанных с этой технологией.



Блокчейн — это надёжный способ хранения данных о сделках, контрактах, транзакциях, обо всём, что необходимо записать и проверить. Сегодня блокчейн проник практически во все сферы жизнедеятельности, готов в корне изменить финансовую систему государства и в разы упростить работу среднего и крупного бизнеса. Блокчейн не секретная технология: в сети огромное количество статей о том, как он устроен и по какому принципу работает. Мы собрали самые интересные и нужные факты в одну статью, на которую можно давать ссылку, когда вас спросят: «Что же такое блокчейн?»
Читать дальше →
Всего голосов 68: ↑53 и ↓15+38
Комментарии23

Лямбда-исчисление на JavaScript

Время на прочтение8 мин
Количество просмотров60K
Привет! В этой статье я хочу в очередной раз взглянуть на лямбда-исчисление. Теоретическую сторону вопроса на хабре обсуждали уже множество раз, поэтому взглянем на то, как лямбда-исчисление может выглядеть на практике, например, на языке JavaScript (чтобы примеры можно было выполнять прямо в браузере).

Итак, основная идея: всё есть функция. Поэтому мы ограничим себя очень узким кругом возможностей языка: любое выражение будет либо анонимной функцией с одним аргументом (x => expr), либо вызовом функции (f (x)). То есть весь код будет выглядеть похожим образом:

id = x => x
double = f => x => f (f (x))

Поскольку результатом работы функций будут другие функции, нам понадобится способ интерпретировать результат. Это единственное место, в котором пригодятся нетривиальные возможности JavaScript.
Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии53

Дайджест свежих материалов из мира фронтенда за последнюю неделю №259 (17 — 24 апреля 2017)

Время на прочтение4 мин
Количество просмотров16K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии4

История о том, как мы перевели проект в почти четверть миллиона строк на TypeScript и остались в живых

Время на прочтение10 мин
Количество просмотров32K
В 2016-м статически типизированный JavaScript оказался крайне востребованным. Теми или иными средствами, позволявшими устранить недостатки динамической природы JS, воспользовались многие компании. Нас тоже привлекла перспектива задействовать огромный потенциал статической типизации в своих разработках.


Выбирая инструменты, мы предварительно остановились на TypeScript и Flow. Хотя проекты эти и различаются, направлены они на решение одной и той же задачи. А именно, позволяя контролировать типы данных, они обеспечивают более совершенную, в сравнении с чистым JS, организацию кода, улучшают возможности рефакторинга, позволяют программистам работать быстрее и увереннее.
Читать дальше →
Всего голосов 48: ↑42 и ↓6+36
Комментарии53

Дайджест свежих материалов из мира фронтенда за последнюю неделю №252 (27 — 5 марта 2017)

Время на прочтение4 мин
Количество просмотров21K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии4

Дайджест свежих материалов из мира фронтенда за последнюю неделю №249 (6 — 12 февраля 2017)

Время на прочтение3 мин
Количество просмотров18K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии5

Дайджест свежих материалов из мира фронтенда за последнюю неделю №250 (13 — 19 февраля 2017)

Время на прочтение4 мин
Количество просмотров20K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.


Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии1

Дайджест свежих материалов из мира фронтенда за последнюю неделю №247 (23 — 29 января 2017)

Время на прочтение4 мин
Количество просмотров22K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии5

Другой взгляд на разработку приложений для Smart TV

Время на прочтение4 мин
Количество просмотров8.5K

Несмотря на то, что Smart TV появились на рынке СНГ и стали набирать популярность достаточно давно (~2010) — технологии/подходы разработки приложений для них сильно отстают во времени, порой обвивая приятными воспоминаниями из 7х или ранее годов.


Мне бы хотелось поделиться результатами моего исследования области разработки приложений для SmartTV, подчеркнуть некоторые недостатки и конечно же рассказать о найденных решениях и просто прикольных штуках.


Что такое приложения для Smart TV ?


В "приложение для Smart TV" я вкладываю определение как web приложения, специальным таким образом подогнанное под телевизор. По большому счету, отличий не так и много, по большей части это несовместимость/отсутствие некоторого API на различных устройствах, к тому же не стоит забывать, что телевизор не компьютер и его ресурсы более ограничены.


Ключевые (как по мне) отличия:


  • Ограниченные ресурсы.
  • Специальная навигация.
  • Местами неожиданное поведение на различных устройствах.
  • Немного запутанные способы тестирования.
  • Неожиданные варианты деплоймента и обновления приложения.

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


Но я хочу рассказать именно о первых двух.


Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии4

Дайджест свежих материалов из мира фронтенда за последнюю неделю №246 (16 — 22 января 2017)

Время на прочтение3 мин
Количество просмотров20K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии0

Дайджест свежих материалов из мира фронтенда за последнюю неделю №245 (9 — 15 января 2017)

Время на прочтение4 мин
Количество просмотров17K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии1

JSX — подробности

Время на прочтение9 мин
Количество просмотров140K

React. Продвинутые руководства. Часть Первая


Этой публикацией я открываю серию переводов раздела "Продвинутые руководства" (Advanced Guides) официальной документации библиотеки React.js.


JSX — подробности


Фундаментально, JSX является синтаксическим сахаром для функции React.createElement(component, props, ...children).


Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии11
1
23 ...

Информация

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