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

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

  • Upload
    devday

  • View
    213

  • Download
    8

Embed Size (px)

Citation preview

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: «Велогосипед», Данил Ильиных

Что дальше?

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