Как стать автором
Обновить
0
0

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

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

OAuth: описание протокола простым и понятным языком

Время на прочтение16 мин
Количество просмотров190K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Всего голосов 134: ↑124 и ↓10+114
Комментарии34

История игры про детство, которую мы обсуждали всей толпой на Хабре 28 октября 2013 — и да, она вышла

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


Привет!

Я обещал рассказать эту историю, и я рассказываю.

Вот в этом посте на 125 тысяч человек два года назад мы обсуждали игру про детство, точнее, про события, которые определили ваше развитие. Мы хотели выпустить коробку через пару месяцев, но она немного задержалась. А дальше был целый детектив.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии32

Как понять, что происходит на сервере

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


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


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

Блокировка дубликатов Symfony Сommand

Время на прочтение3 мин
Количество просмотров5.3K
image

Сегодня хочу предложить вашему вниманию частный случай для решения «неудобств», связанных с периодичным запуском процессов в том случае, если предыдущий еще не завершился. Иначе говоря — блокировка запущенных процессов в symfony/console. Но все было бы слишком банально, если бы не необходимость блокировки среди группы серверов, а не на отдельно взятом.

Дано: Один и тот же процесс, который запускается на N серверов.
Задача: Сделать так, чтобы в единицу времени был запущен только один.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии28

Как протестировать наследство без боли и страха

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

Вы получили или пришли на проект, которому d+дцать лет? PHP код был написан в перерывах между охотой на мамонтов и поэтому слегка не читаем? Вам предстоит это как минимум сапортить, как максимум — рефакторить или переписывать?

Если у вас после этих вопросов не участилось дыхание или пульс — проходите мимо, эта статья для тех, кто уже бывал жертвой таких издевательств или предчувствует такой поворот судьбы.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии18

Stacker: Nginx, DB(Mysql, Pgsql, Redis), PHP7+xDebug за 5 минут

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

Вводная


Устали от LAMPов, MAMPов, ручной настройки, конфликтов? Хотите получить полностью настроенное и готовое к работе окружение для web разработки с Nginx, DB(Mysql, Pgsql, Redis), PHP7 на борту и с настроенным xDebug и все это за 5 минут? Stacker идет на помощь!
Всего голосов 27: ↑24 и ↓3+21
Комментарии35

Некоторые тонкости использования Service Workers

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


Предисловие


Сервис-воркеры (Service Workers, да простят меня читатели) сегодня являются полезным дополнением к основной функциональности сайта: тут и работа в оффлайне, и фоновая синхронизация данных, и модные пуш-уведомления.

Однако большое количество статей про сервис-воркеры выглядят достаточно сжато и описывают простые примеры. Я попробую обратить внимание на некоторые особенности работы сервис-воркеров, так что требуются какие-то базовые знания. Отправной точкой может быть эта статья (перевод) или чуть более подробная статья.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии7

Jasmine vs. Mocha, Chai и Sinon

Время на прочтение6 мин
Количество просмотров37K
Тестирование в JS становится все более распространенной практикой. Но с чего начать? Существует множество фреймворков которые предоставляют API для написания JS тестов.

Данная статья — это краткий обзор различий между двумя популярными фреймворками для тестирования JS: Jasmine 2 и Mocha. Мы также обсудим наиболее полулярные библиотеки Chai и Sinon которые часто используются в связке с Jasmine и Mocha.

1. API (application programming interface)


API в Jasmine и Mocha очень схожи. Они оба поддерживают написание тестов используя BDD (Behavior Driven Development) подход. Вы можете спросить: «что такое BDD»? Если кратко, это подход к написанию тестов, который предоставляет возможность описания функциональности на разговорном языке.

describe('calculator', function() {
  describe('add()', function() {
    it('should add 2 numbers together', function() {
      // assertions here
    });
  });
});

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

Вводим текст красиво

Время на прочтение8 мин
Количество просмотров53K
Сырые, но важные данные вроде номеров телефонов или кредиток — это именно то, что пользователи чаще всего вводят в наших приложениях. И с этим есть огромная проблема. Перепроверять 16 цифр своего Мастеркарда или 11 цифр номера телефона — это сущий ад для любого юзера. Решать эту проблему, естественно, приходится разработчикам, от лица которых я и пишу этот пост.

Поскольку современный Андроид не предоставляет инструментов для автоматического форматирования произвольного текста, эту задачу каждый решает своими костылями силами. Сначала в наших проектах эта задача решалась по месту: возникла необходимость — напиши свой TextWatcher и форматируй как надо. Но мы быстро поняли, что так делать не стоит — количество локальных костылей и специфических багов росло экспоненциально. Кроме того, задача весьма общая, так что и решать её надо системно.

Для начала хотелось следующего:

  1. Указал маску вроде +7 (___) ___-__-__
  2. Повесил её на EditText
  3. ...
  4. PROFIT

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

Начав работать над этим направлением, мы осознали, что создание полноценного языка описания формата — это сродни написанию своего RegEx-движка, что, честно говоря, в наши планы не входило. В итоге мы пришли к варианту, когда такой язык при необходимости можно добавить в любой момент (даже в клиентском коде) или пользоваться простеньким DSL, доступным из коробки (что в нашей практике решило 90% задач).

Посмотрев на то, что получилось, мы решили, что это круто, и надо бы поделиться с сообществом. Так у нас и родилась библиотека для Android-разработки Decoro. И сейчас я покажу пару фокусов из её арсенала.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии27

JavaScript и SEO в 2016 году

Время на прочтение3 мин
Количество просмотров24K
Вы все еще отдаете поисковикам HTML-версию своего SPA приложения? 2016 год на дворе, времена изменились.


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

Принцип цикады и почему он важен для веб-дизайнеров

Время на прочтение6 мин
Количество просмотров228K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Всего голосов 696: ↑682 и ↓14+668
Комментарии119

Symfony 2: Полезные библиотеки и бандлы

Время на прочтение9 мин
Количество просмотров54K
Уже около полугода для разработки веб-проектов используем Symfony 2. Накопился список полезных библиотек и бандлов, не входящих в состав symfony-standard, но значительно экономящих время и избавляющих от изобретения велосипеда.



Обзор больше теоретический и включает следующие разделы:
  • Админгенераторы
  • Пользователи
  • Импорт/экспорт xls
  • API и OAuth 2.0
  • Меню/навигация
  • Мультимедиа
  • Формы
  • Поиск
  • Пагинация
  • Файловая система
  • HTTP клиент

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

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии16

Видео докладов с DevConf 2016

Время на прочтение1 мин
Количество просмотров17K
17-го июня в инновационном центре “Сколково” прошла очередная ежегодная конференция DevConf, а Badoo в очередной раз снимали видео выступлений. Программа была богата на именитых спикеров и интересные доклады, поэтому сделать подборку из самых «вкусных» выступлений было крайне сложно. Но мы, как минимум, постарались…

Познавательного вам просмотра!

«Развитие ветки PHP-7», Дмитрий Стогов, Zend Technologies




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

Видео докладов с Docker митапа

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

18-го июня мы провели Docker митап, а сегодня публикуем видео докладов.

Познавательного вам просмотра!
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии17

Руководство по работе с Redux

Время на прочтение80 мин
Количество просмотров283K
Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Читать дальше →
Всего голосов 65: ↑59 и ↓6+53
Комментарии51

DUMP-2016: видео всех докладов в одном посте. Бесплатно. Без СМС

Время на прочтение9 мин
Количество просмотров22K
8 апреля в Екатеринбурге прошла конференция DUMP. Под катом — видео 60-и докладов про frontend, serverside, devops, mobile, дизайн, управление разработкой и тестирование, плюс все презентации и фотографии с прошедшей конференции. А вот короткий отчетный ролик про DUMP-2016.


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

Шрифт Яндекса — Yandex Sans

Время на прочтение10 мин
Количество просмотров118K
image

23 апреля 2016 на Я.Субботнике для дизайнеров мы анонсировали наш собственный шрифт Yandex Sans. Мы работали над ним два с половиной года и очень счастливы наконец поделиться результатом. В этом посте я расскажу о том, зачем мы всё это задумали, как происходила работа, что получилось в результате и что будет дальше. Пост написан по мотивам нашего рассказа на Субботнике.
Читать дальше →
Всего голосов 83: ↑65 и ↓18+47
Комментарии66

Текстовый туториал по react-router, а так же react-router + redux. На русском

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

Всем добрый день. Немного с задержкой, но все же выходит третий мини-учебник. На этот раз разобран react-router. А так же две главы посвещены интеграции react-router + redux.


В процессе интеграции rr+redux я не использовал react-router-redux и redux-router. Как указано в самой книге, из-за активного развития библиотек, мне хотелось бы «научить вас рыбачить», а не просто «дать рыбу».


Также, приведенный способ по интеграции основан на личном опыте, плюс ответах разработчика redux (его твиттер) на SO, и изучении различных репозиториев. Он не является «единственно верным». Пожалуйста, укажите ссылки на ваши репозитории, либо предложите свои варианты в комментариях.


Поехали!


book_screen

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

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность