Что нужно делать, если вам понадобилось сделать мониторинг домашнего сервера? Использовать какое-то готовое решение? Нет! Нужно изобрести свой велосипед, так ведь интереснее. Но ещё при этом, на мой взгляд, проще и гибче. Свой код - он под полным контролем. Вот поэтому я решил не использовать ничего готового, а сделать свой мониторинг на Node.js. Но вы также можете его попробовать у себя. Ведь там нет ничего лишнего. Если какое-то важное событие произошло на сервере, то придёт сообщение в телеграм. А там уже можно зайти по ssh и посмотреть подробней. Ссылка на GitHub.
Блог
Около трёх лет назад я начал разрабатывать свой маленький веб-сервер на nodejs. Он просто отдавал статические файлы. Нужно это было для тестирования в своих проектах, и просто для опыта. Но потихоньку сервер обрастал возможностями. И совсем недавно я решил изменить основное предназначение и сделать из него сервер, который предназначен для того, чтобы дать сетевой доступ к папке, расположенной на локальной машине. Это очень удобно. Расшаренные на компьютере файлы можно скачать и с телефона и с другого компьютера в локальной сети или даже открыть доступ к файлам через интернет. Свою первоначальную функцию программа тоже не потеряла и может использоваться как веб-сервер для отдачи статических сайтов. В результате получилось неплохо. Я добавил иконки файлов и папок и понял, что пришло время мою работу опубликовать. Сделал npm-пакет web-shared-folder. Также исходный код можно посмотреть на GitHub. Можете попробовать сами. Запустить мой сервер проще, чем расшаривать папку по сети, например, средствами Windows. А Веб браузер есть на большинстве устройствах. Ещё если нужно, то доступ можно защитить паролем и раздавать по защищённому протоколу https.
На днях хотел сделать программку для помощи в распознавании текстов, но как это иногда бывает получилось другое. А именно, вышла простая программа для подготовки изображений для гравировки. Суть заключается в том, что исходное изображение преобразуется в двухцветное (чёрно-белое) с возможностью выбирать уровень яркости, при котором точка исходного изображения считается белой или чёрной. Кроме гравировки такое изображение позволяет, например, увидеть невидимые низкоконтрастные детали на исходном изображении, например отпечатки пальцев на отсканированной фотографии и т.п. В общем забавная вещь. И тут я решил вспомнить навыки веб программирования и сделал отдельное веб приложение!
Представьте, что вам нужно раздать мобильный интернет и у вас есть старый телефон. Он уже ни на что не годится, но в качестве модема вполне себе подойдёт. Но вот беда, если всё время держать телефон на зарядке, то вскоре у него вздуется батарея. Нужно было решение, для того чтобы поддерживать заряд телефона на заданном низком уровне. У меня было несколько идей на этот счёт. Прежде всего я попытался контролировать заряд путём скачивания специальной программы на телефон, затем путём измениения разных системных файлов (мой старый телефон рутован). Но ничего из этого не помогло. Были ноябрьские праздники, и я решил сделать систему, управляющую зарядом телефона из вне на основе Raspberry Pi. К тому же этот способ будет работать практически с любым, даже не рутованным телефоном.
Сразу скажу, что исходный код всех работ опубликован на GitHub.Несмотря на то, что я писал, что не буду говорить в своём блоге про свою основную работу, решил, что немного её не помешает. В результате разработал небольшой скрипт, который считает Российскую статистику по данным за 2019 год. Расчёты включают в себя среднее оставшееся время жизни, вероятность смерти и вероятность заболеть злокачественным новообразованием или умереть от него. Входными данными служат пол, текущий возраст и возраст до которого нужно провести расчёт.
Зачем это всё нужно? Обычно человеку сложно предположить правильно такую статистику. Например, можно переоценивать свои шансы заболеть раком и поэтому жить всё время в необоснованном страхе. С другой стороны информация о том, сколько в среднем живут люди и какова вероятность смерти должна помочь задуматься о своей жизни, не откладывать её на потом.Мой сайт, который вы сейчас читаете, построен при помощи генератора статических сайтов Jekyll. Очень много о статических сайтах и Jekyll в частности можно прочитать в Интернете. Пользуясь этой технологией, я увидел, что Jekyll не умеет из коробки минифицировать HTML разметку и JavaScript код. В разметке или коде, который пишет человек много лишних символов: отступы, ненужные пробелы, комментарии. Всё это не влияет на отображение страниц, однако занимает место и всегда передаётся клиентскому браузеру, растрачивая трафик пользователя и его время для загрузки страницы. Сегодня редко встретишь сайты, где не используется минификация кода. Под катом вы найдёте как я для себя, пусть не окончательно, но решил эту проблему при использовании Jekyll, при этом сохраняя поддержку с GitHub Pages.
Как-то мне позвонили из Ростелекома и предложили подключить IP TV. Ну что же, решил я, пусть жена с сыном смотрят в спальне мультики и согласился. И вот принесли мне заветную коробочку. Т.к. отдельного телевизора для неё у меня нет, то решил я значит подключить её к старому монитору, через переходник HDMI-VGA. Для звука у меня были старые компьютерные колонки. Решено - сделано. Всё прекрасно завелось с одним но: с пульта, который шёл в комплекте с приставкой, невозможно регулировать громкость звука. Как так то? Честно сказать никогда с таким не сталкивался. Особо я в причинах не разбирался, но вроде как пульт от Ростелекома прописывается в телевизоре, так что с пульта меняется громкость на самом телевизоре, а не на выходе из приставки. Удобно? Конечно, если подключить приставку к современному телевизору. А вот вставать с кровати и крутить крутилку на колонках каждый раз, когда нужно поменять громкость - неудобно. Решением этого вопроса и займёмся. Соберём отдельное устройство, которое будет регулировать громкость на наших колонках по сигналу с пульта.
Недавно прочитал интересную статью на хабре. В этой статье рассказывается про дизайн иконок для смартфонов, где вместо квадратных иконок со скруглёнными краями используется так называемый квадрокруг.
Если кратко, то использование таких кривых даёт более плавное скругление углов прямоугольника без резких переходов.
И вот я подумал, почему бы не использовать квадрокруги в своих 3D моделях? Модели я разрабатываю в OpenScad, обычно для печати их на 3D принтере. И часто в этом случае приходится применять скругление острых углов, например, при разработке корпусов для своих самоделок.Обновление от 04.04.2024.
Итак, что это такое? Пусть есть веб-страница с одной или несколькими изображениями и требуется увеличивать изображение, при клике на него. Что-то вроде галереи. При загрузке страницы сначала на ней будут отображаться маленькие картинки с низким разрешением, но если на какую-либо картинку кликнуть, то начнёт загружаться изображение с высоким разрешением и произойдёт анимация увеличения. Во время загрузки большой картинки будет отображаться иконка загрузки (вращающиеся стрелки). Это будет происходить только при первом клике. Если на странице картинок несколько, слева и справа от увеличенной картинки появятся стрелки для листания.
Исходный код можно скачать с Github, подробное описание как всё сделать под катом.Тут я выяснил, что купить выделенный сервер стоит очень дёшево. По крайней мере дешевле, чем купить выделенный белый IP у моего провайдера. Ну раз такое дело, то я решил отказаться от белого IP и дать доступ к своим домашним веб серверам (nextcloud и git сервер) при помощи выделенного сервера. К тому же теперь можно не зависеть от провайдера, а раздавать интернет для домашнего сервера хоть через телефон.
VPS (от англ. Virtual Private Server) виртуальный сервер, который создается средствами виртуализации на физическом сервере, который в свою очередь находится в дата-центре провайдера VPS. Таких провайдеров очень много. К VPS даётся доступ по SSH под root пользователем. Можно выбрать разные операционные системы. У меня Ubuntu 18.04.
Критерием выбора VPS была цена. Чем дешевле, тем лучше, так как у такого сервера в моём случае будет только одна задача: перенаправлять трафик пришедший на белый IP VPS по VPN туннелю на мой домашний Raspberry Pi компьютер.
Действительно, всего за 130 рублей в месяц у меня есть VPS с 512 МБ оперативной памяти и 10 ГБ места на HDD. Этого с лихвой хватит на перенаправление трафика. А учитывая, что мой провайдер просит 180 рублей просто за выделенный IP, то это очень выгодная покупка.
Теперь осталось настроить VPS.
Обновление от 22.04.2022
За время работы моего сервера возникали разные сбои. Например, Nextcloud обновлялся и новые версии уже плохо работали со старой конфигурацией nginx. Поэтому периодически в файлах конфигурации делались разные улучшения. Пришло время обновить nginx.conf и php.ini и в этом посте.
Наконец то установил Nextcloud на свой домашний сервер на raspberry pi. Я конечно лёгких путей не искал, решил собрать всё из исходников, вместо того, чтобы просто установить snap пакет. Зачем? Ну во-первых, у меня не было опыта работы с nginx, хотелось чему-то научиться, я думаю это пригодится для будущих проектов. Во-вторых, у меня не было опыта работы с postgresql. А это точно пригодится. К тому же у меня уже стоял на сервере postgresql - на нём крутится gogs. Доставить на существующую СУБД ещё один продукт мне кажется более целостным решением. Ну и ещё, я никогда не работал с php, на котором написан nextcloud. Но правда не знаю, где могут мне могут пригодиться полученные знания об устройстве php 😀. Попутно узнал что есть такая штука redis. Запомню, может это тоже в будущем понадобится.
В итоге всё работает. И пока всё нравится. Малинка справляется.
Под катом мои наброски о настройке. Там всё очень неподробно - это просто записи ключевых моментов, чтобы не забыть. Кто будет проделывать то же самое должен разобраться.Примерно года полтора назад у меня сломался робот-пылесос Xiaomi Roborock Sweep One. Я нашёл причину поломки, и даже написал про это на 4pda и Pikabu. И вот у меня появился мой личный блог. Ну что же, продублирую и здесь. Скажу сразу, пылесос работает, такой ошибки больше не возникало. Возможно это кому-то поможет справиться с этой проблемой.
Недавно требовалось по работе обрабатывать большие массивы данных из базы данных. Решил для этого использовать свои новые знания по JavaScript. Сначала всё начиналось как решение моей частной задачи. Но вскоре стало интересно сделать универсальный модуль, которым бы могли пользоваться другие люди. Это мой первый модуль для npm! Выпустил под лицензией MIT. Под катом приведена установка и описание работы с модулем.
Wix больше не доступен на территории РФ
Однажды мне захотелось сделать небольшое, но, как мне кажется, полезное веб приложение Ethereum events. Я его сделал, но встал вопрос о том, как поделиться им с другими людьми да и самому удобно пользоваться, т.е. нужен был хостинг веб сайта. Конечно, когда ты создаёшь большой проект, то вопрос где размещать свой сайт не стоит: вы скорей всего купите какой-нибудь VPS. Но для относительно простого сайта тратить деньги на хостинг обычно нет никакого желания.