Pull to refresh

Comments 6

Где-то полтора года назад решил сделать самопальный примитивный умный дом. Это, наверное как todo-листы у людей, которые дорвались до mqtt. Плюс захотелось немного поделать что-то отличное от работы, без микросервисов и прочего, а реально компактный монолит (расписание, приём топиков из mqtt с блокировками расписания, сбор данных из внешнего мира, API + экспорт метрик + веб-интерфейс - всё в одном процессе, просто в разных asyncio.Task), пусть и на питоне. Сейчас что-то распухло до 50мб потребление памяти, но было бы время, мне кажется получилось бы до 25 ужаться. Где-то с 0.0.4 версии ушёл в хардкод и пока его не причешу, не заребейзю всё по человечески - не буду публиковать. Беда в том, что с этого момента прошло полгода, а фич я в свой проект добавил эгегей. Да и он особо никому не нужен, лол.

К слову, монолит там неудобен и как раз поэтому: "пока не доведу до ума..." )

Лучше 100500 "микросервисов", каждый из которых решает 1 задачу, но именно так как нужно.

Иначе придется писать альтернативу тому же HomeAss, как минимум не хуже.

Мне удобно, проблемы будут если надо будет масштабироваться. А мне не надо, производительности хватает со стократным запасом. Это же умный дом, он в одном домохозяйстве крутится, у него полтора пользователя, которые предпочитают его вообще не трогать, пока работает. А учитывая то, что масштабирование/резервирование не требуется, можно извлекать выгоду из того, что состояние системы не распределено, персистентность не требуется, следовательно его можно тупо держать в памяти одного процесса и прекрасно обходиться без системы очередей (если не считать таким mqtt-брокер) и баз данных.

Единственная моя проблема (что нужно довести до ума) в том, что я не знаю как правильно организовать сборку проекта с фронтендом, который хочу распространять целиком через pypi (чтобы pip install, конфиг поправил, системд юнит включил и работает). Бандлить в питоний пакет собранный JS стрёмно, а как без сборки вебпаком использовать сторонние библиотеки (я использую jsonrpc, хотя мог бы болт забить и на это) - не знаю. Может надо дистрибьюцию на докер-образ переводить, но это кажется совсем уж шизой, ради 40 строк на JS и 600 на питоне (где 200 - тесты).

Не понимаю как из выбора монолитной архитектуры следует требование писать home assistant или лучше, к слову.

Человеку, которому будут полезны и новы приведённые советы, в принципе рановато садиться за пет-проект.

Лично я все свои пет-проекты начинал делать по причине того, что столкнулся с энной проблемой, и не нашёл ни одной готовой реализации для её решения. Это к тому, что если идею для пет-проекта приходится выдумывать или где-то находить - пет-проект почти наверняка получится бесполезным всем, потому что он бесполезен в первую очередь для своего создателя.

Создал более 10 pet проектов и теперь хочу поделиться с вами опытом.

Но, почему-то, не пет-проектами.

Выбор будущего проекта

Вообще-то, я бы начал статью не так. Мол, ребята, мы живем сейчас в «благословенном» капитализме. Чтобы выжить, нужно продать себя подороже. Фирмы берут на работу только готовых специалистов, с опытом работы. Но где его взять «наивному чукотскому юноше»? Выход один – пет-проект.

Раньше, в ВУЗах, были дипломные проекты, которые готовились на преддипломной практике, обычно в последнем семестре учебы. Например, я проходил преддипломную практику в «Керосинке», т.е., Институте «Нефти и газа» АН СССР (от мехмата МГУ). Там я писал дипломный проект по оптимальному извлечении нефти из безнапорных скважин. После защиты диплома, мне предложили поступить в аспирантуру Академии Наук. Но, пришлось отказаться, потому, что это был уже 1990-й год, когда «золотые годы» «Пересройки» (которые длились всего пару месяцев) подходили к концу. Уехал домой, где меня охотно взяли в крутую научно-производственную фирму.

К сожалению, сейчас другие времена (и нравы!), поэтому нужна другая стратегия. К своему пет-проекту надо готовиться со школы. Хорошо, когда рядом есть наставник, который подскажет по какому пути пойти, какой технологии себя посвятить. Иначе, надо плотно работать с техническим Интернетом, чтобы определить современные тенденции и закономерности развития.

Конечно, нужно учитывать собственные интересы. Если ориентироваться на Россию (что очень рекомендую), то здесь в ближайшие годы принципиально важными будут – военная наука, ИИ, оборона и безопасность. Как на инфраструктурном уровне, так и цифровом. Если много и долго учиться нет особого желания, то можно пойти на контрактную службу.

Ваш пет-проект должен понравиться потенциальному работодателю, поэтому нужно хорошо изучить его интересы и сферу деятельности. И развиваться самому в этом направлении.

Однако, звезд с неба хватать не обязательно. Очень хорошее направление, на мой взгляд, это «модульное программирование». При этом, сами модули можно брать из готовых проектов на Гитхабе и адаптировать их в своей проект. Для примера можете посмотреть мою статью «Модульное программирование в C++. Статические и динамические плагины» ( https://habr.com/ru/articles/566864/ ). Не обязательно использовать именно эту концепцию (MDI интерфейс с плагинами). Например, для проекта «МедиаТекст» (не опубликован, но скриншот – http://scholium.webservis.ru/Pics/MediaText.png ) использовался SDI интерфейс с внешними модулями. Один из них реализует просмотр видео и медиа-контента, другой эмулирует примитивный файловый менеджер, третий – пользовательскую панель управления, а четвертый стандартный редактор текста «RichEdit». Большая часть кода для этих модулей найдена на Гитхабе и CodeProject. Собрал всё вместе, получился индивидуальный проект.

Можно делать и более оригинальную сборку модулей, например, перегрузку видов в главном окне приложения. Таковым для меня является пет-проект «Новая компьютерная программа для запоминания иностранных слов и фраз» ( https://habr.com/ru/articles/848836/ ). Из внешних модулей там работа со звуком и графикой плюс механизм переключения видов и движок базы данных SQLite. Из своего – идея работы с интерактивным звуком и иностранными фразами (например, при реализации собственного режима «Видео»). А также, идея разработки обучающих уроков на базе озвученных текстов в оригинальных видео (а процессе разработки).

Чем хорош последний пет-проект, так это тем, что, при создании обучающего курса (на базе существующих материалов Ютуба) можно будет рассмотреть вопрос о донатах. И заодно самому выучить иностранный язык.

Здесь уместно вставить любимую фразу американцев: «Хочешь разбогатеть – думай!»

Sign up to leave a comment.

Articles