June 22, 2023

Вадим, проект линукс и переиспользование идеи

Расскажи, как ты пришел к pet-проекту? Зачем стоит, по твоему мнению, тратить время на pet-проекты?

На самом деле, мне сложно рассказать про какой-то один pet-проект. И сейчас я расскажу почему.

Что такое pet-проекты для IT-специалиста (программиста, сис. админа и т.д.)? В моем понимании, сторонние или pet-проекты — это в первую очередь проекты, которые облегчают тебе жизнь, помогают в чем-то или позволяют попрактиковаться, реализовать или проверить свои идеи, которые можно потом внедрить на основной работе. А кто-то просто таким образом отдыхает.

Это могут быть какие-то простые скрипты или программы, сайты-визитки, на которых ты можешь себя показать, а кто-то тихонько пишет собственную систему умного дома (привет, Антон Дегтярев! 😊). В целом, проекты бывают разные и обычно они как-бы окружают хорошего IT-специалиста, позволяют развиваться и решать его задачи. Очень редко они появляются сами по себе, а если и появляются, то быстро забрасываются, т.к. от таких выдуманных из головы проектов обычно мало практической пользы.

Как и у всех «нормальных айтишников», у меня было много различных pet-проектов. Все они решали какие-то мои задачи в определенный момент времени моей жизни. Это мог быть репозиторий редких пакетов (программ) для Arch Linux, собственная простенькая «система мониторинга» или даже система налогообложения на сайте клана в одной из online-игр. Некоторые проекты даже помогали мне устроиться на работу, когда я рассказывал про них на собеседовании. Поэтому, я считаю, что хотя бы иногда очень важно позаниматься какими-то pet-проектами, переключиться, пробовать что-то новое. Авось, твоя идея взлетит, и ты станешь миллионером? 😊

Где искать pet-проекты? И как ты нашел/начал свой?

Обычно я не искал pet-проекты, они находили меня сами. 😊 Я сталкивался с какой-то проблемой и пытался ее решать. Но в целом, если есть цель найти какой-то pet-проект, а не придумывать его самостоятельно, то можно просто присоединиться к какому-нибудь opensource-проекту и помогать в его развитии.

Расскажи про него? Какие основные шаги/этапы ты прошел для его создания и жизни?

Могу рассказать про пару самых интересных.

Репозиторий редких пакетов для Arch Linux. Примерно с 2007 года я использовал Linux в качестве основной операционной системы на моих компьютерах и ноутбуках. В какой-то момент времени я познакомился с таким замечательным дистрибутивом, как Arch Linux. Он поражал своей простотой, самым быстрым пакетным менеджером, возможностью тонкой настройки практически всего. Плюс, Arch Linux довольно низкоуровневый дистрибутив, но не настолько, как Gentoo, который в то время надо было компилировать 2 дня, прежде чем появлялась возможность пользоваться хотя бы консолью, а потом столько же собирать рабочее окружение, какой-нибудь KDE. Arch Linux позволял соблюдать баланс между компиляцией и уже собранными программами, разворачивался за 15 минут из «бинарников», а потом если тебе чего-то не хватало, ты мог бы это собрать самостоятельно. В основные репозитории Arch Linux входило обычно все, что нужно для работы системы, но практически всегда возникала необходимость в программах, которых не было в основных репозиториях, их нужно было собирать. Для этого в Arch Linux существовал так называемый AUR – Arch User Repository, в который практически любой желающий мог добавить так называемый PKGBUILD – сценарий сборки программы и исходные коды своих программ. Там было практически все, что тебе не хватает.

У меня всегда был набор каких-то программ, которые я использовал из AUR и которые необходимо было собирать. Обычно на это уходило довольно много времени. И тут я подумал: «А что, если мне сделать репозиторий, в котором уже все эти программы будут собраны, и я смогу их довольно легко устанавливать?» Так я и сделал. Совместно с моим братом Антоном (который тоже работает с нами 😊) и еще одним моим товарищем, мы написали скрипты для сборки пакетов, для отслеживания обновлений, для удаления старых версий и т.д. Проделана была огромная работа. Ниже прикладываю скриншот анонса репозитория из моего блога, который (блог) каким-то чудом еще сохранился.

Собирали все на своих компьютерах, потом выкладывали в репозиторий, арендовали какой-то VPS-сервер, делились с миром нашими трудами. В дальнейшем Антон написал сайт для репозитория, где мы писали различные новости. Количество программ, которые мы собирали исчислялось сотнями. Количество пользователей репозиторием также росло. Мы даже выкладывали туда собственные программы, которые мы сами разрабатывали.

В какой-то момент времени данный проект начал отнимать слишком много времени, а мой товарищ, который мне помогал со сборкой пакетов, «отвалился». Проект пришлось закрыть. Было жалко и обидно. Но, оглядываясь назад, могу сказать, что это был очень ценный опыт. По сути, данный проект помог проложить нам дорогу в IT. Антон развивался как программист, а я как системный администратор и смог из обычного «эникейщика» вырасти дальше. Смешно, но факт: на одном из собеседований я рассказал про этот проект и меня сразу взяли на работу, практически не задавая вопросов и не гоняя по теории. А дальше пошло-поехало… и вот я с вами. 😊 Прошли уже годы, больше 10 лет, а я все еще вспоминаю про этот проект с теплотой.

Gnuplot и проекты на его основе.

Выделю пару pet-проектов, которые были основаны на Gnuplot в отдельный пункт, т.к. каждый из них – это «реинкарнация» предыдущего. Почему стоит упомянуть про это? Потому что это история про то, как идея, пронесенная через годы, может превратиться из маленького скрипта в полноценную систему мониторинга. Возможно, то, что будет написано ниже, в наше время будет выглядеть смешно, но в то время было довольно много сложностей, и технологии были развиты не так сильно. Zabbix был версии 1.8, а Elasticsearch только зарождался. Поэтому прошу не относиться к этим проектам слишком серьезно. 😊

На одном из предыдущих мест работы я работал специалистом по мониторингу. На данной должности периодически возникала необходимость в анализе логов Nginx, нужно было анализировать с какого IP-адреса сколько обращений было, строить топ-50 и отправлять аналитикам. Делалось это обычно однострочником на bash или Perl (в то время он еще не был мертв 😊), что было не очень удобно. Нужно было, во-первых, запомнить этот однострочник, а он был довольно сложным, а во-вторых, аналитикам такие топы было не очень удобно анализировать. И тут я наткнулся на программу Gnuplot – она позволяет рисовать различные графики и диаграммы. Довольно быстро я написал скрипт, который анализировал логи, строил красивую диаграмму и сразу же отправлял ее на почту аналитикам. Для аналитиков это было прям событие, было много вопросов, как рисовали график, как анализировали и т.д. Потом этим скриптом пользовался уже весь отдел, графики кидались начальству. Было очень приятно.

Уже на следующем месте работы я вспомнил про этот скрипт, и он обрел новую жизнь. Я подружил Gnuplot с Sysstat – это такая утилита в Linux, которая может собирать различную статистику по производительности системы (CPU, RAM, диски и т.д.). В итоге это превратилось все в довольно примитивную, но полезную систему мониторинга, которую я довольно долго использовал на своем личном сайте.

Рисовала она такие милые графики. Все данные сохранялись в базу данных, и их потом можно было анализировать. В целом, если вам интересны подробности, то вы можете ознакомиться с ней в моей статье на Хабре: https://habr.com/ru/articles/252201

С какими трудностями при работе над дополнительными проектами вне работы ты столкнулся?

Основные трудности при работе над сторонними проектами вне работы – это отсутствие свободного времени. 😊 Идей в голове очень много, но, чтобы их реализовать, необходимо пропорционально столько же много свободного времени. Поэтому в последнее время у меня нет серьезных pet-проектов. Но очень хотелось бы реализовать некоторые идеи.

Также, при работе со сторонними проектами очень часто не хватает обратной связи, так как ты в основном разрабатываешь их для себя и не всегда показываешь их кому-то еще. Либо обратная связь может быть негативная и «выбивать землю из-под ног». Возникает желание бросить проект. Как с этим бороться я не знаю, таких проектов у меня десятки. 😊

Какие основные советы ты мог бы дать тем, кто смотрит в сторону pet-проекта?

Основной совет – не бойтесь заниматься сторонними проектами. Выбирайте такие проекты, которые помогают решать какие-то ваши задачи, автоматизируют вашу работу, помогают освоить вам какие-то новые навыки и технологии. Это очень полезно для вашего саморазвития. Как по мне, саморазвитие – это самое главное для IT-специалиста, чтобы оставаться конкурентноспособным на рынке. Технологии очень быстро развиваются и все моментально меняется, а основная работа очень часто загоняет нас в рамки определенных технологий, возможно даже сильно устаревших. Pet-проекты позволяют выйти за эти рамки.

← Вернуться к дайджесту