Top Banner
unilog или история о публикации в open source
44

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

Jul 21, 2015

Download

Technology

Platonov Sergey
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Данил Ильиных и Владимир Иванов, «Велогосипед»

unilogили история о публикации в open source

Page 2: Данил Ильиных и Владимир Иванов, «Велогосипед»

О себе

Пишу на C++ уже 12 летИз них 9 мне за это платят

В 2GIS уже 5,5 лет

Page 3: Данил Ильиных и Владимир Иванов, «Велогосипед»

Введение

Всё написано до нас

Page 4: Данил Ильиных и Владимир Иванов, «Велогосипед»

Введение

Всё написано до насОсобенно на C++

Page 5: Данил Ильиных и Владимир Иванов, «Велогосипед»

Введение

Всё написано до насОсобенно на C++

Ложь!

Page 6: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек

Page 7: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира

Page 8: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира

○ CAS-операции (1970; 2008 Qt 4.4)○ Asynchronous I/O (2000-2002; 2005 libevent, 2008 boost::asio)○ inotify (2007)○ OpenCL (2008)○ Metal (2014)

Page 9: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций

Page 10: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций

○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON

Page 11: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

90% open source библиотек — плохие!

Page 12: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

90% open source библиотек — плохие!● неопытные разработчики● нет поддержки

Page 13: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций

○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON○ 90% open source библиотек

Page 14: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций

○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON○ 90% open source библиотек○ C++

Page 15: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом

Page 16: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом

○ код больше никому не нужен (часто верно)○ код == деньги (как правило, неверно)○ нет ресурсов на доведение до ума

Page 17: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом● отсутствие продвижения

Page 18: Данил Ильиных и Владимир Иванов, «Велогосипед»

Результат

Большое количество велосипедов

Page 19: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему

Page 20: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода

Page 21: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода● договориться с начальством

Page 22: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников

Page 23: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub

Page 24: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub● заняться продвижением

Page 25: Данил Ильиных и Владимир Иванов, «Велогосипед»

Решение

● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub● заняться продвижением● работать с сообществом

Page 26: Данил Ильиных и Владимир Иванов, «Велогосипед»

Проблема

Слишком много библиотек логирования

Page 27: Данил Ильиных и Владимир Иванов, «Велогосипед»

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

Page 28: Данил Ильиных и Владимир Иванов, «Велогосипед»

Результат

Единая библиотека логирования

Page 29: Данил Ильиных и Владимир Иванов, «Велогосипед»

Подготовка к open source

Отличный способ командообразования!

Page 30: Данил Ильиных и Владимир Иванов, «Велогосипед»

Хостинг

github.com/2gis/uniassert — уже доступнаgithub.com/2gis/unilog — скоро!

Page 31: Данил Ильиных и Владимир Иванов, «Велогосипед»

Продвижение

Прямо сейчас!

Page 32: Данил Ильиных и Владимир Иванов, «Велогосипед»

uniassertUNI_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_FUNCTIONUNI_UNUSED(var);

Page 33: Данил Ильиных и Владимир Иванов, «Велогосипед»

unilogUNILOG(Info) << “Variable value is “ << var << “ (some other text)”;

Page 34: Данил Ильиных и Владимир Иванов, «Велогосипед»

unilogvoid InitializeLogger(

// Info, Verbose, Warning, Error, FatalSeverityLevel min_severity,const ILogMessageSinkPtr sink);

Page 35: Данил Ильиных и Владимир Иванов, «Велогосипед»

unilogstruct ILogMessageSink{

virtual void Transmit(const LightweightMessage &message) = 0;};

Page 36: Данил Ильиных и Владимир Иванов, «Велогосипед»

unilogUNI_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

Page 37: Данил Ильиных и Владимир Иванов, «Велогосипед»

Работа с сообществом

Ждём предложений!

Page 38: Данил Ильиных и Владимир Иванов, «Велогосипед»

Работа с сообществом

Ждём предложений и pull request’ов!

Page 39: Данил Ильиных и Владимир Иванов, «Велогосипед»

Выводы

● делитесь кодом

Page 40: Данил Ильиных и Владимир Иванов, «Велогосипед»

Выводы

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

Page 41: Данил Ильиных и Владимир Иванов, «Велогосипед»

Выводы

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

Page 42: Данил Ильиных и Владимир Иванов, «Велогосипед»

Выводы

● делитесь кодом● продвигайте свои решения● работайте с сообществом● используйте библиотеки uniassert и unilog

Page 43: Данил Ильиных и Владимир Иванов, «Велогосипед»

Что дальше?

Другие библиотеки