Ангелина Сидорцова — Острова. Фронтенд по кусочкамYandex
Доклад о том, как мы разбили разработку фронтенда Островов на независимо-зависимые библиотеки и получили нужный результат: автономное обновление, оптимизированный код для разных платформ, независимую разработку блоков. Рассказывается, каким образом мы поделили работу между своими и внешними разработчиками, как распределили код по платформам и сделали общий код для разных платформ.
Ангелина Сидорцова — Острова. Фронтенд по кусочкамYandex
Доклад о том, как мы разбили разработку фронтенда Островов на независимо-зависимые библиотеки и получили нужный результат: автономное обновление, оптимизированный код для разных платформ, независимую разработку блоков. Рассказывается, каким образом мы поделили работу между своими и внешними разработчиками, как распределили код по платформам и сделали общий код для разных платформ.
Поговорим, как и зачем функционально тестировать хайлоад, получать от тестов больше, чем «прошёл/не прошёл», а их количество превратить в качество продукта.
Фреймворк Slot, Good Parts, Александр БирюковDevDay
Расскажу о ключевых особенностях продукта: о какой изоморфности идёт речь, как мы управляем состоянием SinglePage-приложения и какой профит для SEO извлекли, с примерами кода. Посмотрим как быстро начать свой проект на Slot.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Devops-практики в разработке решений для бизнеса, Максим ПашукDevDay
Обычно разработчик успокаивается как только написан код, решающий задачи бизнеса. На самом деле есть ещё целый ряд вопросов, которые также необходимо решать.
Как донести изменения разработчика до тестирования в согласованном виде (база данных, приложение, конфиги)? Как донести эти же изменения до production и ничего не потерять по дороге? Что делать если продукт — распределённая многокомпонентная система, работающая в отказоустойчивом кластере? Тогда ситуация требует тесной совместной работы разработчиков и администраторов, а это, как известно, люди немного с разных планет.
Я расскажу на примере конкретного проекта на .NET стеке, как мы построили мост дружбы. Как свели воедино систему сборки, развёртывания и автоматизации, используя библиотеку psake и достигли взаимопонимания.
Inversion of Control в деталях, Дмитрий КожевниковDevDay
Казалось бы всё сказано об инверсии управления, особенно в .NET. Но нетривиальные квесты вокруг дизайна, построенного на DI, продолжают возникать из проекта в проект. Предлагаю поговорить немного о прописных истинах, а потом перейти к более любопытным вещам и болезненным вопросам.
Чем плох ServiceLocator? Почему IoC-контейнер — это фреймворк, а не библиотека? Как быть с множественными реализациями? Convention over configuration?
Отдельно поговорим об архитектуре enterprise решений в свете возможностей IoC-контейнеров.
Год от года многие программисты решают одни и те же задачи, но не всегда среди огромного многообразия решений можно найти что-то подходящее. Вот и мы не смогли найти ни одной библиотеки логирования для C++, которая удовлетворяла бы всем нашим требованиям. Теперь у нас есть свой велосипед, и мы расскажем, чем он лучше других.
Манипулятор на Ti Stellaris Launchpad, Лёша РоманенкоDevDay
За последние несколько десятков лет робототехника стала очень доступной. Настолько, что можно собрать робота и запрограммировать его даже в домашних условиях, имея подходящий инструментарий. С чего начать? Как попробовать? Именно об этом мы и поговорим на докладе на примере контроллера TI Stellaris Launchpad (аналог Arduino), управляемого с Android-смартфона.
Все мы привыкли писать программы, результаты работы которых можно увидеть и услышать. Хотите, чтобы их можно было ещё и потрогать? На примере создания электронной игры «Лабиринт» вы увидите, как не имея знаний и опыта сделать первый шаг в мир hardware.
Расскажу про первый продукт 2ГИС, который не совсем про организации – 2GIS Dialer. О трудностях создания, и почему их не нужно бояться. Делая что-то новое, вы обязательно с ними столкнетесь:
— Команда будет меняться.
— Конкуренты будут поджимать и опережать.
— Промо-кампании не будут стрелять.
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев DevDay
С чего начинается проектирование и дизайн новых продуктов — со сценариев. Продуктовые сценарии работы — ключевой элемент в пазле проектирования новых взаимодействий. В докладе покажу какое место сценарии занимают в 2ГИСе, почему они важны и какие сценарии бывают.
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...DevDay
В своем докладе я расскажу о постановке цели и подготовительном этапе при проведении продуктовых исследований. Мы рассмотрим наиболее популярные виды исследований. Специфику исследований на локальном и междунароных рынках. Прикладную ценность результатов исследований. И это всё на примерах продуктов компании 2ГИС.
Матвей Мальков «Ещё один поиск контактов на Android»DevDay
Многие дайлеры не умеют делать поиск по Т9 клавиатуре. Те, что умеют, в большинстве своем делают поиск только по имени/фамилии контакта или по началу номера, а кто-то только с использованием английского алфавита. В 2GIS Dialer нам хотелось искать все контакты по имени, фамилии, телефону (любому из списка и с любого символа), а так же по должности и месту работу (опционально: e-mail и вебсайт, адрес и группы контактов). Кроме того, нам хотелось, чтобы пользователь на любом языке мог найти свои контакты. И в завершение необходимо было, чтобы весь этот поиск работал быстро. О том, как мы добились прогресса в этом деле я и расскажу.
Поговорим, как и зачем функционально тестировать хайлоад, получать от тестов больше, чем «прошёл/не прошёл», а их количество превратить в качество продукта.
Фреймворк Slot, Good Parts, Александр БирюковDevDay
Расскажу о ключевых особенностях продукта: о какой изоморфности идёт речь, как мы управляем состоянием SinglePage-приложения и какой профит для SEO извлекли, с примерами кода. Посмотрим как быстро начать свой проект на Slot.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Devops-практики в разработке решений для бизнеса, Максим ПашукDevDay
Обычно разработчик успокаивается как только написан код, решающий задачи бизнеса. На самом деле есть ещё целый ряд вопросов, которые также необходимо решать.
Как донести изменения разработчика до тестирования в согласованном виде (база данных, приложение, конфиги)? Как донести эти же изменения до production и ничего не потерять по дороге? Что делать если продукт — распределённая многокомпонентная система, работающая в отказоустойчивом кластере? Тогда ситуация требует тесной совместной работы разработчиков и администраторов, а это, как известно, люди немного с разных планет.
Я расскажу на примере конкретного проекта на .NET стеке, как мы построили мост дружбы. Как свели воедино систему сборки, развёртывания и автоматизации, используя библиотеку psake и достигли взаимопонимания.
Inversion of Control в деталях, Дмитрий КожевниковDevDay
Казалось бы всё сказано об инверсии управления, особенно в .NET. Но нетривиальные квесты вокруг дизайна, построенного на DI, продолжают возникать из проекта в проект. Предлагаю поговорить немного о прописных истинах, а потом перейти к более любопытным вещам и болезненным вопросам.
Чем плох ServiceLocator? Почему IoC-контейнер — это фреймворк, а не библиотека? Как быть с множественными реализациями? Convention over configuration?
Отдельно поговорим об архитектуре enterprise решений в свете возможностей IoC-контейнеров.
Год от года многие программисты решают одни и те же задачи, но не всегда среди огромного многообразия решений можно найти что-то подходящее. Вот и мы не смогли найти ни одной библиотеки логирования для C++, которая удовлетворяла бы всем нашим требованиям. Теперь у нас есть свой велосипед, и мы расскажем, чем он лучше других.
Манипулятор на Ti Stellaris Launchpad, Лёша РоманенкоDevDay
За последние несколько десятков лет робототехника стала очень доступной. Настолько, что можно собрать робота и запрограммировать его даже в домашних условиях, имея подходящий инструментарий. С чего начать? Как попробовать? Именно об этом мы и поговорим на докладе на примере контроллера TI Stellaris Launchpad (аналог Arduino), управляемого с Android-смартфона.
Все мы привыкли писать программы, результаты работы которых можно увидеть и услышать. Хотите, чтобы их можно было ещё и потрогать? На примере создания электронной игры «Лабиринт» вы увидите, как не имея знаний и опыта сделать первый шаг в мир hardware.
Расскажу про первый продукт 2ГИС, который не совсем про организации – 2GIS Dialer. О трудностях создания, и почему их не нужно бояться. Делая что-то новое, вы обязательно с ними столкнетесь:
— Команда будет меняться.
— Конкуренты будут поджимать и опережать.
— Промо-кампании не будут стрелять.
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев DevDay
С чего начинается проектирование и дизайн новых продуктов — со сценариев. Продуктовые сценарии работы — ключевой элемент в пазле проектирования новых взаимодействий. В докладе покажу какое место сценарии занимают в 2ГИСе, почему они важны и какие сценарии бывают.
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...DevDay
В своем докладе я расскажу о постановке цели и подготовительном этапе при проведении продуктовых исследований. Мы рассмотрим наиболее популярные виды исследований. Специфику исследований на локальном и междунароных рынках. Прикладную ценность результатов исследований. И это всё на примерах продуктов компании 2ГИС.
Матвей Мальков «Ещё один поиск контактов на Android»DevDay
Многие дайлеры не умеют делать поиск по Т9 клавиатуре. Те, что умеют, в большинстве своем делают поиск только по имени/фамилии контакта или по началу номера, а кто-то только с использованием английского алфавита. В 2GIS Dialer нам хотелось искать все контакты по имени, фамилии, телефону (любому из списка и с любого символа), а так же по должности и месту работу (опционально: e-mail и вебсайт, адрес и группы контактов). Кроме того, нам хотелось, чтобы пользователь на любом языке мог найти свои контакты. И в завершение необходимо было, чтобы весь этот поиск работал быстро. О том, как мы добились прогресса в этом деле я и расскажу.
Матвей Мальков «Ещё один поиск контактов на Android»
Межнодовое взаимодействие. Тонкости работы с Mnesia в кластере.
1. МЕЖНОДОВОЕ ВЗАИМОДЕЙСТВИЕ.
ХРАНЕНИЕ ДАННЫХ В Erlang.
ТОНКОСТИ РАБОТЫ С MNESIA В КЛАСТЕРЕ.
Февраль 2013 www.eltex.nsk.ru
Рябков Антон
инженер-программист
anton.ryabkov@gmail.com
5. Межнодовое взаимодействие
• Необходимые условия для межнодового
взаимодействия:
– каждая из нод может доступиться до соседней ноды по
имени хоста;
– cookie должны совпадать, или одна из нод должна
знать cookie другой ноды;
– ноды должны быть связаны (connected) между собой
• Межнодовое взаимодействие осуществляется через
посылку сообщений между процессами разных нод
• В качестве транспорта выступает протокол TCP по
одному из сетевых интерфейсов
7. Состояние Erlang – процесса
Мое мысли,
только я имею к
ним доступ
• Наибольшая
скорость доступа
• Эксклюзивный
доступ
• Ограниченный
размер
8. ETS – Erlang Term Storage
– key – value
хранилище в памяти;
– типы хранилища:
set, order_set, bag,
duplicate_bag;
– отсутствует
транзакционность;
– отсутствует
репликация;
– не переживает
падение owner-
процесса
private
private
Именованные
ETS
9. DETS – Disk ETS
Книга поможет
освежить
воспоминания…
и не мне одному
– key – value хранилище
на диске;
– могут быть доступны
для нескольких
процессов;
– отсутствует
транзакционность;
– репликация на диск;
– требует явной операции
открытия/закрытия;
10. Mnesia
• поддерживаемые типы хранилища: RAM-
only, disc-only, disc and RAM;
• транзакционность;
• реплицирование данных на ноды кластера;
• индексированные поля;
• изменение структуры данных «на лету»;
• гибкий механизм запросов;
• нативная поддержка в Erlang, не требует
сериализации данных
11. Mnesia schema
• состоит из описаний таблиц (имена, типы
таблиц, тип хранилища, вид репликаций и
т.п.);
• позволяет добавлять/изменять/удалять
таблицы «на лету»;
• позволяет изменять состав mnesia-кластера
на лету
14. Пример запуска второй ноды
1. mnesia:start().
2. case mnesia:wait_for_tables([painting], 20000) of
3. {timeout, RemainingTabs} ->
4. % Насильно загружаем данные с диска
5. mnesia:force_load_table([painting]);
6. ok ->
7. synced
8. end.
15. Запросы в mnesia
1. -record(paint, {sid, artist, title, year}).
2. MatchHead = #paint{artist = “Tolstoy”, title = ‘$1’,
3. year = ‘$2’ _ = ‘_’},
4. Guard = {‘>’, '$2', 1900},
5. Result = ‘$1’,
6. mnesia:select(paining,[{MatchHead, [Guard], [Result]}]).
7. qlc:q([T || #paint{artist = A, title = T, year = Y}
8. <- mnesia:table(paining), A = “Tolstoy”, Y > 1900]).
16. Пример переконфигурирования
таблицы
1. -record(paint2, {sid, artist_name, title, cost}).
2. Transformer =
3. fun(#paint{sid = S, artist = A, title = T}) ->
4. #paint2{sid = S, artist_name = A,
5. title = T, cost = 0}
6. end,
7. mnesia:del_table_index(painting, artist),
8. {atomic, ok} = mnesia:transform_table(painting,
9. Transformer,
10. record_info(fields, paint2),
11. paint2),
12.{atomic, ok} = mnesia:add_table_index(artist_name).
18. Итог
mnesia:start().
mnesia:start().
• Если вам необходимо быстрое key-value
хранилище…
• иметь разделяемый доступ из разных
процессов в рамках одной ноды…
• объемом данных не превышающих 2GB…
• без необходимости сохранять данные между
перезапусками системы…
• выбирайте ETS!
• Если вам необходимо сохранять данные
между перезапусками системы – DETS ваш
выбор.