unilog
или история о публикации в open source
О себе
Пишу на C++ уже 12 лет
Из них 9 мне за это платят
В 2GIS уже 5,5 лет
Введение
Всё написано до нас
Введение
Всё написано до нас
Особенно на C++
Введение
Всё написано до нас
Особенно на C++
Ложь!
Проблема
Нет нужных библиотек
Проблема
Нет нужных библиотек
● изменчивость мира
Проблема
Нет нужных библиотек
● изменчивость мира
○ CAS-операции (1970; 2008 Qt 4.4)
○ Asynchronous I/O (2000-2002; 2005 libevent, 2008 boost::asio)
○ inotify (2007)
○ OpenCL (2008)
○ Metal (2014)
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
○ OpenSSL
○ crypto
○ любая библиотека на C++ для работы с JSON
Проблема
90% open source библиотек — плохие!
Проблема
90% open source библиотек — плохие!
● неопытные разработчики
● нет поддержки
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
○ OpenSSL
○ crypto
○ любая библиотека на C++ для работы с JSON
○ 90% open source библиотек
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
○ OpenSSL
○ crypto
○ любая библиотека на C++ для работы с JSON
○ 90% open source библиотек
○ C++
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
● нежелание делиться кодом
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
● нежелание делиться кодом
○ код больше никому не нужен (часто верно)
○ код == деньги (как правило, неверно)
○ нет ресурсов на доведение до ума
Проблема
Нет нужных библиотек
● изменчивость мира
● использование плохих реализаций
● нежелание делиться кодом
● отсутствие продвижения
Результат
Большое количество велосипедов
Решение
● принять проблему
Решение
● принять проблему
● выбрать интересную часть кода
Решение
● принять проблему
● выбрать интересную часть кода
● договориться с начальством
Решение
● принять проблему
● выбрать интересную часть кода
● договориться с начальством
● найти единомышленников
Решение
● принять проблему
● выбрать интересную часть кода
● договориться с начальством
● найти единомышленников
● выложить на GitHub
Решение
● принять проблему
● выбрать интересную часть кода
● договориться с начальством
● найти единомышленников
● выложить на GitHub
● заняться продвижением
Решение
● принять проблему
● выбрать интересную часть кода
● договориться с начальством
● найти единомышленников
● выложить на GitHub
● заняться продвижением
● работать с сообществом
Проблема
Слишком много библиотек логирования
Требования
● возможность настройки уровня логирования
● обработка событий в течение всего времени работы
● работа как в отладочной, так и в релизной сборках
● возможность переопределения направления вывода
● как можно более простая работа с библиотекой
Результат
Единая библиотека логирования
Подготовка к open source
Отличный способ командообразования!
Хостинг
github.com/2gis/uniassert — уже доступна
github.com/2gis/unilog — скоро!
Продвижение
Прямо сейчас!
uniassert
UNI_ASSERT(expr);
UNI_VERIFY(expr);
UNI_ENSURE_THROW(condition[, exception_type], message);
UNI_ENSURE_RETURN(condition[, return_code]);
UNI_THROW_IF(condition[, exception_type], message);
UNI_RETURN_IF(expr[, return_code]);
UNI_FUNCTION
UNI_UNUSED(var);
unilog
UNILOG(Info) << “Variable value is “ << var << “ (some other text)”;
unilog
void InitializeLogger(
// Info, Verbose, Warning, Error, Fatal
SeverityLevel min_severity,
const ILogMessageSinkPtr sink);
unilog
struct ILogMessageSink
{
virtual void Transmit(const LightweightMessage &message) = 0;
};
unilog
UNI_ENSURE_LOG_THROW(expr[, exception_type], error_message, severity, log_message);
UNI_ENSURE_LOG_THROW(expr, error_message, severity);
UNI_ENSURE_LOG_RETURN(expr[, return_code], severity, log_message);
*_ELOG_*
*_WLOG_*
*_THROW_IF
*_RETURN_IF
Работа с сообществом
Ждём предложений!
Работа с сообществом
Ждём предложений и pull request’ов!
Выводы
● делитесь кодом
Выводы
● делитесь кодом
● продвигайте свои решения
Выводы
● делитесь кодом
● продвигайте свои решения
● работайте с сообществом
Выводы
● делитесь кодом
● продвигайте свои решения
● работайте с сообществом
● используйте библиотеки uniassert и unilog
Что дальше?
Другие библиотеки
Спасибо!
woodroof@gmail.com
@_woodroof

More Related Content

PDF
Данил Ильиных и Владимир Иванов, «Велогосипед»
PDF
Rust - GDG DevFest Siberia 2016
PPTX
Shytikov on git Magic
PPTX
Continuous Integration for C++ engineers
PPTX
Continuous Integration для C++ разработчика
PDF
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
PPTX
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
Данил Ильиных и Владимир Иванов, «Велогосипед»
Rust - GDG DevFest Siberia 2016
Shytikov on git Magic
Continuous Integration for C++ engineers
Continuous Integration для C++ разработчика
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
Rust - GDG DevFest 2016 Nizhny Novgorod

What's hot (20)

PDF
Введение в язык программирования Go
PDF
PDF
Павел Пушкарев — «Развертывание верстки»
PDF
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
PDF
Как ВКонтакте использует Go
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Применение языка Go в инфраструктурных проектах
PDF
My talk at Highload++ 2015
ODP
My talk on Docker, Youcon 2015
PDF
Готовим код 
в мир открытых исходников
PDF
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
PDF
Kirill A Korinskiy Rit2010 No Sql Storage
PPTX
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
PDF
Women Techmakers Novosibirsk, первый митап
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
My talk on HBase ops engineering at TBD Jun 2016
PPTX
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
PDF
Go в автобусе
PDF
Containers in real world презентация
Введение в язык программирования Go
Павел Пушкарев — «Развертывание верстки»
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Как ВКонтакте использует Go
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Применение языка Go в инфраструктурных проектах
My talk at Highload++ 2015
My talk on Docker, Youcon 2015
Готовим код 
в мир открытых исходников
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Kirill A Korinskiy Rit2010 No Sql Storage
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Women Techmakers Novosibirsk, первый митап
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
My talk on HBase ops engineering at TBD Jun 2016
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
Go в автобусе
Containers in real world презентация
Ad

Viewers also liked (20)

ODP
Article25
PDF
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
PDF
«Открытая веб картография», Илья Таратухин
PDF
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PDF
Используем неизменяемые данные и создаем качественный код — Игорь Кудрин, 2ГИС
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
PDF
Автоматизация UI тестирования под Windows и Windows Phone
PPTX
«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС
PDF
Изоморфный JavaScript — будущее уже здесь
PDF
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
PDF
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
PDF
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
PDF
«Тестируем мобильное приложение в суровых реалиях Интернета» – Андрей Усов, 2ГИС
PDF
Cергей Коржнев, 2ГИС
PDF
Knockoutjs на примере 2ГИС-Онлайн
PPTX
«Девиации и патологии в отношениях с руководителями и подчинёнными» — Степан ...
PDF
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
PDF
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
PDF
Суперсилы Chrome developer tools
Article25
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
«Открытая веб картография», Илья Таратухин
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
Используем неизменяемые данные и создаем качественный код — Игорь Кудрин, 2ГИС
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
Автоматизация UI тестирования под Windows и Windows Phone
«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС
Изоморфный JavaScript — будущее уже здесь
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Тестируем мобильное приложение в суровых реалиях Интернета» – Андрей Усов, 2ГИС
Cергей Коржнев, 2ГИС
Knockoutjs на примере 2ГИС-Онлайн
«Девиации и патологии в отношениях с руководителями и подчинёнными» — Степан ...
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
Суперсилы Chrome developer tools
Ad

Similar to «Велогосипед», Данил Ильиных (20)

PDF
How to port JavaScript library to Android and iOS
PPTX
Gitlab devconf
PPTX
Docker в работе: взгляд на использование в Badoo через год
PPTX
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
PDF
Фламп на спидах или ка релизить каждый день
PDF
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Kranonit s16 (python). sergey burma
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PDF
Tech Talks @NSU: Проходим тест Джоэла
PDF
Проходим тест Джоэла
PDF
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
PPTX
Creating Open Source Projects
PDF
Как разраба
PDF
CodeFest 2011. Макаров А. — Как разрабатывается Yii
PDF
О пользе Open Source
PPTX
Как мы делаем Banki.ru
PDF
Go для python-программистов
How to port JavaScript library to Android and iOS
Gitlab devconf
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на использование в Badoo через год
Фламп на спидах или ка релизить каждый день
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Kranonit s16 (python). sergey burma
Иван Крутов - Автоматизация сборки Java-проекта
Tech Talks @NSU: Проходим тест Джоэла
Проходим тест Джоэла
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Creating Open Source Projects
Как разраба
CodeFest 2011. Макаров А. — Как разрабатывается Yii
О пользе Open Source
Как мы делаем Banki.ru
Go для python-программистов

More from DevDay (20)

PDF
«Bdd и реактивщина в 2ГИС», Евгений Тютюев
PDF
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
PDF
«Я спросил у сервера...», Илья Пастушков
PDF
Фреймворк Slot, Good Parts, Александр Бирюков
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
Devops-практики в разработке решений для бизнеса, Максим Пашук
PDF
Inversion of Control в деталях, Дмитрий Кожевников
PDF
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
PDF
«Процесс создания продукта», Максим Берёзкин
PDF
«Вывод продукта на новых территориях», Елизавета Алексеенко
PDF
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
PDF
Лабиринт на Arduino, Вадим Ипполитов
PDF
«Хоба-хоба и в продакшн», Женя Пономарёв
PDF
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
PDF
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
PDF
«Тестируем веб приложения», Павел Сташевский
PDF
Матвей Мальков «Ещё один поиск контактов на Android»
PDF
Олег Годовых «Страх и ненависть в Event Bus»
PDF
Распределенные приложения и Azure Service Bus
PDF
Frontend
«Bdd и реактивщина в 2ГИС», Евгений Тютюев
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
«Я спросил у сервера...», Илья Пастушков
Фреймворк Slot, Good Parts, Александр Бирюков
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Devops-практики в разработке решений для бизнеса, Максим Пашук
Inversion of Control в деталях, Дмитрий Кожевников
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
«Процесс создания продукта», Максим Берёзкин
«Вывод продукта на новых территориях», Елизавета Алексеенко
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
Лабиринт на Arduino, Вадим Ипполитов
«Хоба-хоба и в продакшн», Женя Пономарёв
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
«Тестируем веб приложения», Павел Сташевский
Матвей Мальков «Ещё один поиск контактов на Android»
Олег Годовых «Страх и ненависть в Event Bus»
Распределенные приложения и Azure Service Bus
Frontend

«Велогосипед», Данил Ильиных