«Велогосипед», Данил Ильиных
-
Upload
devday -
Category
Engineering
-
view
213 -
download
8
Transcript of «Велогосипед», Данил Ильиных
![Page 1: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/1.jpg)
unilogили история о публикации в open source
![Page 2: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/2.jpg)
О себе
Пишу на C++ уже 12 летИз них 9 мне за это платят
В 2GIS уже 5,5 лет
![Page 3: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/3.jpg)
Введение
Всё написано до нас
![Page 4: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/4.jpg)
Введение
Всё написано до насОсобенно на C++
![Page 5: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/5.jpg)
Введение
Всё написано до насОсобенно на C++
Ложь!
![Page 6: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/6.jpg)
Проблема
Нет нужных библиотек
![Page 7: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/7.jpg)
Проблема
Нет нужных библиотек● изменчивость мира
![Page 8: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/8.jpg)
Проблема
Нет нужных библиотек● изменчивость мира
○ CAS-операции (1970; 2008 Qt 4.4)○ Asynchronous I/O (2000-2002; 2005 libevent, 2008 boost::asio)○ inotify (2007)○ OpenCL (2008)○ Metal (2014)
![Page 9: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/9.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций
![Page 10: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/10.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций
○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON
![Page 11: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/11.jpg)
Проблема
90% open source библиотек — плохие!
![Page 12: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/12.jpg)
Проблема
90% open source библиотек — плохие!● неопытные разработчики● нет поддержки
![Page 13: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/13.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций
○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON○ 90% open source библиотек
![Page 14: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/14.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций
○ OpenSSL○ crypto○ любая библиотека на C++ для работы с JSON○ 90% open source библиотек○ C++
![Page 15: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/15.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом
![Page 16: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/16.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом
○ код больше никому не нужен (часто верно)○ код == деньги (как правило, неверно)○ нет ресурсов на доведение до ума
![Page 17: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/17.jpg)
Проблема
Нет нужных библиотек● изменчивость мира● использование плохих реализаций● нежелание делиться кодом● отсутствие продвижения
![Page 18: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/18.jpg)
Результат
Большое количество велосипедов
![Page 19: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/19.jpg)
Решение
● принять проблему
![Page 20: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/20.jpg)
Решение
● принять проблему● выбрать интересную часть кода
![Page 21: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/21.jpg)
Решение
● принять проблему● выбрать интересную часть кода● договориться с начальством
![Page 22: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/22.jpg)
Решение
● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников
![Page 23: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/23.jpg)
Решение
● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub
![Page 24: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/24.jpg)
Решение
● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub● заняться продвижением
![Page 25: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/25.jpg)
Решение
● принять проблему● выбрать интересную часть кода● договориться с начальством● найти единомышленников● выложить на GitHub● заняться продвижением● работать с сообществом
![Page 26: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/26.jpg)
Проблема
Слишком много библиотек логирования
![Page 27: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/27.jpg)
Требования● возможность настройки уровня логирования● обработка событий в течение всего времени работы● работа как в отладочной, так и в релизной сборках● возможность переопределения направления вывода● как можно более простая работа с библиотекой
![Page 28: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/28.jpg)
Результат
Единая библиотека логирования
![Page 29: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/29.jpg)
Подготовка к open source
Отличный способ командообразования!
![Page 30: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/30.jpg)
Хостинг
github.com/2gis/uniassert — уже доступнаgithub.com/2gis/unilog — скоро!
![Page 31: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/31.jpg)
Продвижение
Прямо сейчас!
![Page 32: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/32.jpg)
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: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/33.jpg)
unilogUNILOG(Info) << “Variable value is “ << var << “ (some other text)”;
![Page 34: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/34.jpg)
unilogvoid InitializeLogger(
// Info, Verbose, Warning, Error, FatalSeverityLevel min_severity,const ILogMessageSinkPtr sink);
![Page 35: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/35.jpg)
unilogstruct ILogMessageSink{
virtual void Transmit(const LightweightMessage &message) = 0;};
![Page 36: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/36.jpg)
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: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/37.jpg)
Работа с сообществом
Ждём предложений!
![Page 38: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/38.jpg)
Работа с сообществом
Ждём предложений и pull request’ов!
![Page 39: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/39.jpg)
Выводы
● делитесь кодом
![Page 40: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/40.jpg)
Выводы
● делитесь кодом● продвигайте свои решения
![Page 41: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/41.jpg)
Выводы
● делитесь кодом● продвигайте свои решения● работайте с сообществом
![Page 42: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/42.jpg)
Выводы
● делитесь кодом● продвигайте свои решения● работайте с сообществом● используйте библиотеки uniassert и unilog
![Page 43: «Велогосипед», Данил Ильиных](https://reader034.fdocument.pub/reader034/viewer/2022042818/55b35074bb61eb56148b468f/html5/thumbnails/43.jpg)
Что дальше?
Другие библиотеки