Удалось выкроить время и вернуться к проекту. Доработал исчезновение дат, которые перекрывают сообщения. Тут можно видеть как даты исчезают и появляются:
Но даты, на самом деле, были доработаны давно. На днях исправлял ошибки (или по-заморски "баги") с анимациями:
1) Обработал разные ситуации промотки к сообщению. Теперь анимаци промотки остановится, если во время промотки к сообщению нажать на экран. 2) Доработал контекстное меню: убрал плашку с эмоджи для сообщений, которые не были отправлены. Учел отсутствие этой плашки при позиционировании контекстного меню. 3) Встретился со старым знакомым, пару лет его не видел 🙂 Показал приложение на телефоне (без серверной части, то есть по сути нерабочее), он потыкался и ему стало интересно помочь с обратной связью. На данный момент набралось более 250 человек, которым данный проект кажется интересным 🙂
Тут скрины разного позиционирования контекстного меню (с плашкой выбора эмоджи и без):
1/3
В процессе работы над отправкой эмоджи, пришлось вернуться к серверной части и поправить код обработки эмоджи. Исправил ситуацию, которая положила бы сервер полностью 😂 Да-да, глянул незамыленным глазом и заметил 😂
Сейчас работаю над механизмом отправки эмоджи. Если быть точнее, унифицирую/дорабатываю систему отправки событий на сервер. А эмоджи будет частным случаем работы данной системы доставки и синхронизации событий.
Пока вроде бы это все новости о сервисе для общения.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.
Всем привет! Меня зовут Вадим, я делаю свой сервис для ведения заметок — КакДела. Хочу поделиться ходом развития сервиса
Папкам добавлен вариант отображения в виде канбан доски. Теперь можно вести проекты прямо в КакДела
Каждая карточка на доске это обычная заметка, поэтому папкой можно продолжать пользоваться как виде доски, так и в виде классической полнофункциональной папки, не ломая структуру хранения заметок и других папок внутри
Каждая папка, даже вложенная в другую папку, может быть отдельной доской со своим набором карточек. «Карточкой» становится каждая заметка в корне папки
Как понимаете, я и сам этим пользуюсь. Так у меня есть пространство «КакДела» с документацией по проекту, и папка «роадмап» (карта развития) с планами по проекту. Роадмап у меня представлен как раз в виде доски: каждая заметка в папке отдельная фича с детали внутри заметки, а на доске по каждой задаче виде статус и приоритет
Ранее писал уже про разработку, решил создать серию, в основном наверное для того, чтобы была история.
Немного изменил архитектуру, по замечаниям пользователей. Теперь схемы создаются независимо друг от друга, но можно использовать данные из одной схемы в другой. Конкретное замечание было о том, что надо было выделить работу человека, занимающегося сопроводительной документацией, от птошника.
Схема для сопроводительной документации примерно такая:
А птошник работает в примерно такой:
В рабочем интерфейсе это выглядит так:
Справочник Сертификаты, раздел Сопроводиловка
Приемка ТМЦ в разделе Трубы
В этом релизе добавлены:
объединения полей для отображения (например наименование + свойство)
импорт из excel (с возможностью изменения уже имеющихся данных)
Для нежелающих разворачивать БД у себя для тестирования - логин "Пика бушка" (без кавычек, с пробелом), пароль "4e3w2q1" (без кавычек). Можно проверить работоспособность и оценить функционал. В тестовой БД данные чистятся периодически, созданные схемы можно сохранять как файл JSON.
(Использование для ПТО приведено как пример, потому что моя давняя деятельность была в сфере ПТО, и первый пользователь - из давних сохраненных контактов именно в этой сфере)
Всем привет! Продолжаю развивать сервис для ведения заметок и дневников kakdela.me
Собираю обратную связь по работе сервиса, потому что у самого глаз уже замылился конкретно. Начинает казаться, что я занимаюсь ерундой (или не казаться). В общем, стало понятно, что без взглядов и советов со стороны я не справлюсь. А Пикабу для такого мероприятия идеальное место!
Заранее большое спасибо за уделенное время! Обнял, заранее попросив разрешения
Ранее я уже собирал обратную связь в другой соцсети, и мне дали много дельных советов. Так в продукте изменилось:
Лимит заметок увеличен до 1000 (есть планы снять лимиты вообще);
Добавлены ИИ-функции, но пока с вашим ключом API нейросетей (OpenAI, Polza ai, OpenRouter);
Улучшена работа редактора на смартфонах (это был ад, но всё удалось);
Добавлена поддержка папок и тегов, по тегам можно искать;
Переработан импорт заметок. Поддерживается импорт папки из Obsidian;
Исправлена проблема загрузки с подключенным VPN (осуждаем!). Пришлось потратиться на CDN, но на текущих объемах это не дорого. Зато реально быстрее стало грузиться.
Также в работе Android-приложение (вообще это просто TWA, потому что в kotlin я не умею) и ряд функций для командной работы. Это тоже по результатам обратной связи
Дисклеймер для профи: Ребята, сеньоры и гуру серверов, вы и так всё это умеете с закрытыми глазами и наверняка собрали бы всё на TrueNAS, ECC-памяти и отдельной стойке. Не судите строго — этот пост для таких же любопытных энтузиастов и новичков как я, которые хотят оживить старое железо с полки и не наступить на мои грабли. А вот за ваш опыт и дельные подсказки в комментах — заранее жму руку!
Валялась без дела старая Raspberry Pi 3, нашлись два жестких диска по 3 ТБ. Все думал как сделать себе и родственникам облачное хранилище, хранилише бэкапов и архивов фото и не потратить миллион, так и пришел к идее своего облака.
Сетап:
raspberry pi 3b (покупалась еще очень давно для klipper)
hdd какие есть - у меня были по 3 тб
докупил док станцию для жестких дисков только
Планировалось классическое приключение Рика и Морти: «Вошли и вышли, приключение на 20 минут!». Ага, конечно...
Делюсь честным опытом, граблями и готовым рецептом — берите, пользуйтесь и экономьте свои нервы.
Задача была поставлена мной так: поддержка smart для дисков, алерты, мониторинг, бэкапы по расписанию, удобный web-интерфейс который можно прокинуть во внешнюю сеть.
Проблемы:
1.Самая частая ошибка новичка — воткнуть 3.5″ жесткие диски напрямую в USB-порты «малинки» через дешевый usb-sata адаптер. Спойлер: ничего не заработает, а плата может уйти в защиту. RPi 3 выдает смешные 1.2 А на все 4 порта суммарно, а большим винтам для раскрутки шпинделей жизненно необходимы 12 Вольт.
Как сделал я: взял внешнюю дешевую USB-док-станцию на два диска с собственным блоком питания от розетки на 12 В (фото этого чудо-сетапа прикрепил). Малинка видит диски по USB, а питаются они сами.
На заднем фото видна даже моя клавиатура, уже делился фото ранее
Ложка дегтя по скорости: У третьей малинки сетевой чип (100 Мбит/с) и порты USB 2.0 сидят на одной шине. Физический потолок передачи данных — примерно 11–12 МБ/с. Фильмы в 4K по сети с нее смотреть тяжело, но для бэкапа архива фоток, документов и семейных архивов — за глаза.
2. Nextcloud? Поберегите нервные клетки
Первая мысль любого гуглящего: «Хочу домашний Google Диск - накачу Nextcloud!».
Не торопитесь разгоняться. У Raspberry Pi 3 всего 1 ГБ оперативки. Nextcloud со своей архитектурой и кучей дополнительных функций просто расплавит бедную плату, забьет память и положит всё намертво. Есть конечно NextcloudPI и я его даже поднял в первой итерации, но количество лишних функций и нагрузка на малинку меня переубедили.
Рабочая и легкая связка:
- OpenMediaVault (OMV): надежная база для управления дисками, форматирования и RAID через удобную веб-панель. По сути ОС для NAS, есть и SMART, и уведомления и все остальное.
- Filebrowser в Docker: легковесный веб-интерфейс на Go для получения интерфейса как в dropbox, google drive и подобных. Потребляет смешные 30 МБ оперативки, летает, умеет делиться ссылками и показывает превью фоток не хуже Google Drive.
Оказывается, у Raspberry Pi нет батарейки часов (RTC). Время сбилось на годы назад, и Linux на полном серьезе заявил: «Я не буду качать обновления, эти SSL-сертификаты подписаны в будущем!».
Решение: перед любыми командами принудительно синхронизируем время через интернет:
sudo timedatectl set-ntp true
Грабли №2: «Кончилось место» на пустой флешке
Качаю пакеты дальше — вылетает No space left on device. Смотрю на MicroSD — свободно 50 гигов.
Виновником оказался плагин folder2ram, призванный «беречь ресурс флешки». Он откусил кусок от и без того крошечной оперативной памяти под временный буфер. Буфер моментально лопнул от первого же увесистого пакета.
Решение: на устройствах с 1 ГБ ОЗУ такие «оптимизации» только вредят. Возвращаем запись логов на диск и наглухо выключаем службу:
sudo folder2ram -unmountall
sudo systemctl disable --now folder2ram
Грабли №3: OMV убивает сеть при установке и обновлении системы , а консоль сходит с ума
Установщик OMV очень любит хозяйничать в сетевых конфигах: он просто снес настройки сети, и плата мгновенно отвалилась от Wi-Fi/Ethernet и закрыла SSH.
Потащил плату к телевизору, воткнул проводную клавиатуру и наткнулся на сюрприз: Debian включил фонетический транслит. Жмешь P — печатает k, жмешь A — вылезает f. Вот тут я прикурил...
Угадывать пароль root вслепую на ТВ — то еще шоу «Поле чудес».
Решение: ставьте OMV официальным скриптом строго с волшебным ключом -n (он переводится как: «Пожалуйста, не трогай сетевые настройки, гад»):
Когда всё взлетело, вылез финальный баг: диски в док-станции наотрез отказались засыпать. В комнате тишина, а два винта бодро вибрируют и молотят пластинами. В настройках OMV ползунки сна выставлены, но реакции ноль.
Полез под капот, и вскрылись две засады:
В легкой системе банально не было утилиты управления дисками hdparm. OMV бодро отчитывался «настройки применены», а команды улетали в никуда.
Встроенный демон SMART опрашивал температуру дисков каждые 10 минут и постоянно будил их.
Как вылечил:
Доставил утилиту:
sudo apt install hdparm -y
Принудительно отправил диски спать при бездействии больше 10 минут (параметр 120 = 120 * 5 секунд):
sudo hdparm -S 120 /dev/sda
sudo hdparm -S 120 /dev/sdb
А в панели OMV просто отключил слишком частый опрос SMART для спящих дисков. Наступила долгожданная тишина.
5. Доступ отовсюду и бэкапы
Как захожу с телефона/ноутбука: Никаких белых IP и проброса портов роутера. Поставил NetBird (быстрая Mesh-сеть поверх WireGuard). Теперь домашнее облако открывается из любой точки интернета или с мобильного интернета так, будто я сижу дома в своей локалке. Либо можно прокинуть в cloudflare tunnel, либо поднять свой wg-тоннель в домашнюю сеть.
Бэкап: Настроил ночной rsync по расписанию: всё, что падает на диск А, ночью автоматически дублируется на диск Б. Если один винт решит отправиться в вальхаллу, файлы останутся целы.
Итог
Реальные затраты на проект составили 2 199 рублей на покупку двухдисковой док-станции (остальное найдено на антресолях). На выходе получилась бесшумная, холодная и абсолютно автономная файлопомойка.
Следующим шагом планирую связать свое облако по сети с другим своим сервером на proxmox, на котором разверну Immich: пусть ПК берет на себя распознавание лиц и поиск по фото с помощью нейросетей, а сами гигабайты архива спокойно лежат на этих HDD.
Если тема вам зашла и вы хотите, чтобы я детальнее рассказал (например, готовый конфиг Docker Compose под Filebrowser, скрипт rsync-бэкапов или связку с NetBird без белого IP) — напишите об этом в комментариях!
А за закулисьем моих железных разработок, 3D-печатью, кодом и свежими граблями заглядывайте в мой Telegram-канал Engineering Hobby — там все рассказываю как есть и по мере готовности. 🛠️
💬 Вопрос к знатокам в комментариях:
- как бы вы докрутили этот сетап в условиях жесткого дефицита ресурсов?
- кто-то пробовал ставить CasaOS или ZimaOS на 1 ГБ ОЗУ и как оно там себя чувствует?
Добавил контекстное меню в сервис для общения 🙂 В первую очередь хотелось бы поблагодарить спонсора контекстного меню, а если точнее, то этого разработчика: Dexterfury. Его проект был взят в качестве основы: https://github.com/dexterfury/flutter_chat_reactions
1/4
Болванка с гитхаба немного доработана: переделаны анимации, доработаны кнопки, немного изменена механика взаимодействия с сообщениями и вот что получилось:
Думаю получилось неплохо, пока кажется "работает удобно" 🙂
Кстати, исправил выделение сообщений. Ранее при клике на сообщение на который был дан ответ оно выделялось вот такой серой полосой:
Полосу убрал, сейчас сам "бабл" вспыхивает и меняет цвет (на видео выше видно).
Контекстное меню и выбор действий с сообщениями добавил. Осталось (😂, да, осталось) нужно подключить сетевое взаимодействие. Напомню, севрер уже все поддерживает, нужно чтобы клиент корректно отправлял команды на сервер и обрабатывал его ответы. Буду работать над этим 🙂
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.
Наконец добил механику прокрутки к заданному сообщению. Система несложная, но не было времени основательно сесть и придумать как прокручивать историю переписки.
проблемы с визуализацией сообщений (они пропадают в процессе прокрутки)
сломалась механика дат истории переписки (даты не прилипают к верхней части экрана)
сломалась анимация аватарок (тут они перестали корректно реагировать на поле ввода).
Сделано было так: в памяти создается второй массив сообщений и с ним производится поисковая работа параллельно работе интерфейса. Если скролить нужно недалеко, то по производительности терпимо. Если далеко - появляются тормоза.
В целом идея жизнеспособная, скорее всего ее и довел бы до ума, но нашел более простое решение: загружаю пачку сообщений и ищу среди них нужное, если его нет - прокручиваю эту пачку и сразу же загружаю другую пачку. Если сообщение находится, то прокручиваю к найденному сообщению. Теперь все работает, даже под дебагом с логами не тормозит:
Также добавил простенькую анимацию: найденное сообщение подсвечивается
Теперь буду добавлять систему взаимодействия с сообщениями посредством контекстного меню: кликаешь на сообщение и появляется окошко с выбором действий: редактировать, удалить, поставить эмоджи и тп.
Надеюсь сильно не застряну с контекстным меню 😅
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.