"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
БЭМ: новости проектов и последние релизы — Владимир ГриненкоYandex
В ставшем уже традиционным для наших встреч докладе о новостях мы обсудим, что нового появилось bem.info, в документации, в библиотеках блоков и инструментах, помогающих работать с БЭМ. Поговорим о планируемом переходе с CSSO и bem-tools на новые инструменты и о том, куда мы движемся дальше. Приветствуются вопросы и ваши рассказы о проектах, в которых вы используете стек БЭМ-технологий.
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Форум на полном БЭМ-стеке — Николай Ильченко, ЯндексYandex
В связи с закрытием Я.ру возникла потребность в простом решении, которое могло бы заменить этот сервис и легко внедриться в другие проекты на БЭМ. Для этого мы разработали bem-forum — форум на полном БЭМ-стеке, использующий GitHub Issues в качестве источника данных. Кроме того, форум на bem.info — это пример проекта с открытым исходным кодом, которым можно пользоваться в виде традиционного приложения на node.js и express.js. Обо всём этом и пойдёт речь в докладе.
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".Badoo Development
1. Общее устройство системы перевода в Badoo
2. Лексемы, интеграция с таск-трекером
3. Иерархия языков, интерфейс перевода
4. Выделение лексем из текста: парсер, знающий HTML
5. Интеграция с git: многоверсионная система хранения лексем
Владимир Гриненко — Библиотеки блоков bem-core и bem-componentsYandex
При разработке новых библиотек bem-core и bem-components мы переосмыслили свой подход и предыдущий опыт. Теперь разработка — это честный опенсорс с прозрачным планированием, где каждый может повлиять на результат. Мы сформулировали требования: тотальная автоматизация, Bleeding Edge, оптимизация, разные варианты поставки библиотеки, поддержка нескольких визуальных тем, бережность и кругозор. И определили технологии: анализаторы кода, юнит-тесты, модульность, шаблонизаторы, работа с CSS, зависимости и сборка. В докладе я подробно остановлюсь на каждом из этих вопросов.
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Доклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
БЭМ: новости проектов и последние релизы — Владимир ГриненкоYandex
В ставшем уже традиционным для наших встреч докладе о новостях мы обсудим, что нового появилось bem.info, в документации, в библиотеках блоков и инструментах, помогающих работать с БЭМ. Поговорим о планируемом переходе с CSSO и bem-tools на новые инструменты и о том, куда мы движемся дальше. Приветствуются вопросы и ваши рассказы о проектах, в которых вы используете стек БЭМ-технологий.
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Форум на полном БЭМ-стеке — Николай Ильченко, ЯндексYandex
В связи с закрытием Я.ру возникла потребность в простом решении, которое могло бы заменить этот сервис и легко внедриться в другие проекты на БЭМ. Для этого мы разработали bem-forum — форум на полном БЭМ-стеке, использующий GitHub Issues в качестве источника данных. Кроме того, форум на bem.info — это пример проекта с открытым исходным кодом, которым можно пользоваться в виде традиционного приложения на node.js и express.js. Обо всём этом и пойдёт речь в докладе.
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".Badoo Development
1. Общее устройство системы перевода в Badoo
2. Лексемы, интеграция с таск-трекером
3. Иерархия языков, интерфейс перевода
4. Выделение лексем из текста: парсер, знающий HTML
5. Интеграция с git: многоверсионная система хранения лексем
Владимир Гриненко — Библиотеки блоков bem-core и bem-componentsYandex
При разработке новых библиотек bem-core и bem-components мы переосмыслили свой подход и предыдущий опыт. Теперь разработка — это честный опенсорс с прозрачным планированием, где каждый может повлиять на результат. Мы сформулировали требования: тотальная автоматизация, Bleeding Edge, оптимизация, разные варианты поставки библиотеки, поддержка нескольких визуальных тем, бережность и кругозор. И определили технологии: анализаторы кода, юнит-тесты, модульность, шаблонизаторы, работа с CSS, зависимости и сборка. В докладе я подробно остановлюсь на каждом из этих вопросов.
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Доклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
В докладе мы рассмотрим создание переносимого дистрибутива Python для любых нужд и операционных систем (Windows & Linux). Познакомимся с существующими и альтернативными решениями. Сравним их достоинства и недостатки.
Докладчик: Григорий Кареев (Odin)
Видео: https://www.youtube.com/watch?v=fvBJG_IKvaQ
Артем Первухин "Язык программирования GO"
В докладе будет рассказано, чем сможет заинтересовать Python-разработчика язык программирования Go. Будут описаны базовые идиомы языка Go и даны ответы на следующие вопросы: Насколько применим к Go "Zen of Python"? Какая у этого языка область применения? В чём можно выиграть, использовав Go вместо Python?
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
Доклад с 4front meetup #8.
Видео здесь: https://youtu.be/-i9nNmCCFpA
В докладе речь идет о том как портировать Chrome Extension в Firefox Extension или сразу написать кросс-браузерное расширение с нуля.
2. Сайт на другом языке (языках)
На сайте только один язык?
Да
Нет
Нет
Да
Локализация → 1
Мультиязычный сайт → 3
Языковые версии сайта → 2
Контент на разных языках должен совпадать
3. Утилита Unix gettext()
Источники данных для утилиты gettext() - файлы .mo,
скомпилированные “языковые БД” особой структуры
То, из чего компилируютя файлы .mo - файлы .po
Локализация → 1
4. 1 -> язык
2 -> языка
11345 -> языков
языки
4 варианта
Особая проблема - мультиязычные формы
Работает утилита Unix ngettext()
Запись мультиязычной (plural) формы на
псевдоязыке в заголовке файла .po
Уникальна для каждого языка
5. Альтернатива gettext() - база данных
Вызов gettext()
в PHP
*nix вызывает
свою утилиту
gettext()
Обращение к
файлу .mo
Работа gettext() в файле .mo по
поиску словопары
Найдено?
отдаем то что
найдено
Да
отдаем оригинал
Нет
Загрузка страницы
Выгрузка из БД
всех словопар в
виде массива в
память
Массив словопар [ ]
Вызов gettext()
в PHP
хук gettext()
Повышение производительности: нет ни
обращения к файловой системе, ни
механизма поиска в файле .mo
6. Запись URL мультиязычных сайтов и языковых версий сайта
http://site.com/meetup-page/?lang=fi
http://site.com/lang/fi/meetup-page/
http://fi.site.com/meetup-page/
RewriteEngine on
RewriteCond %{HTTP_HOST} ^fi.site.com
RewriteRule ^(.*)$ http://site.com/lang/fi/$1 [L,NC,QSA]
Добавление правил в .
htaccess позволяет не
создавать никаких реальных
языковых субдоменов
7. Языковые версии сайта → 2
EN версия сайта в поддиректории
URL
http://doklad.wpru/en/
Почему такое возможно:
.htaccess WP при создании ЧПУ
(почти такой же .htaccess в Yii FW)
8. Мультиязычный сайт → 3 Принципы создания - всего два
Контент (ru)
Тот же контент
на другом языке
(fi)
Параллельный контент в БД
Переключение контента в зависимости от
URL, в котором содержится язык
Создание отдельно переводов
Запрос контента
Буфер, следящий за URL
В URL есть язык?
Да
Отдаем перевод
Нет
Отдаем оригинал
ф-я обертка над
любым контентом
_translate()
9. Плагин WPML
Это локализация по
принципу из БД
Основной плагин
WPML работает по принципу
создания параллельного
контента
10. Стили URL - нет
варианта с языковым
ключом
После инсталляции
плагина - возможность
добавить перевод
19. Трудность 1 - локализация
Первая попытка покорить мир
Заливка файлов .po ВСЕХ
официальных локализаций
WP
Приведение
псевдокода
файлов .po в PHP,
разбор словопар
Внесение
локализаций в БД
БД всех
официальных
локализаций WP,
которые есть в мире
Это создание PHP из псевдокода
для plural вариантов
При инсталляции плагина и/или
добавлении языков
локализации нужных языков вносятся в
БД установленного WP
20. Трудность 2
Автоматический перевод
_ocl() Запрос к системе
автоматического перевода
Сервис Сложность
работы
Платный Что можно
переводить
Перевод с тегами
HTML
Yandex Низкая Условно нет, есть неописанное
суточное ограничение на число
запросов
Сайт с малым
обновлением
контента
Да, но требует
правки
Google Средняя $20 за 2 миллиона знаков 2 млн. знаков - это
примерно 1400
страниц среднего
размера
Да, идеально
Bing Высокая $20 за 2 миллиона знаков -//- Да, идеально
21. Трудность 3
Тестирование плагина для разных версий WP
Общая БД, разные
версии WP имеют
разные префиксы
2.8.1
Файлы
проинсталлированных
версий WP
Папка с плагином -
символическая ссылка
3.0.1 Папка с плагином -
символическая ссылка
...
4.1.2 Папка с плагином -
символическая ссылка
...
Реальная папка, в которую
размещается плагин
URL: .../2.8.1/
URL: .../3.0.1/
URL: .../4.1.2/
WordPress
машина :)