Проект с сервисом для общения
62 поста
62 поста
12 постов
39 постов
1 пост
5 постов
Возникла ситуация, дано: повреждение стоп обоих ног (точное описание зачитывать не буду, чтобы не пугать). Документ из МСЭ (условно больница) у меня на руках и казалось бы «с больницами вопрос закрыт».
В документе стоит синяя печать и электронная подпись врача. Принёс документ в госорганизацию А и в ней запросили подпись врача от руки, электронная почему-то их не устроила. Хорошо… никогда такого не было и вот опять.
На мой взгляд просто увольняли бы ответственных за такие фокусы и чудес у нас было бы меньше. Но сейчас не об этом, а о том как все прошло.
Пришел на днях в ГБ МСЭ #Х без записи. В документе указано, что документ выдан именно в ней (ну адрес её сверху стоит). Нужно было получить ту самую подпись врача от руки. Поднимаюсь на этаж, а там почти пусто. И к нужному мне врачу сидит одна бабушка. Врач отошел, она его ждёт. Сел рядом, завязался разговор. Говорю бабушке: «да мне всего лишь поставить подпись» и показываю документ 😂
Подходит врач и бабуля говорит: проходите, у вас же быстро это будет. Видать прониклась, посмотрев на бумажку 😢
Захожу в кабинет, во-первых пришел врач мужчина. А электронную подпись ставила женщина. Оказалось, что врач-женщина работает в другой ГБ МСЭ и из неё ставит электронные подписи. А синие печати, наверно, по месту проставляют. Пока мы выясняли кто в итоге будет мне ставить подпись, прошло 10 минут.
В общем, вот так «мне всего лишь поставить подпись» превратилось в 10 мин выяснений. Тратить время врача, бабушки и свое на выяснение не стал. Чувствую там и 30 и 40 мин а может и час бы ушел на поиски этого врача. А ещё доверие бабушки бы разрушил, ведь зашёл всего лишь подпись поставить.
Получил новый адрес врача у главного по больнице (теперь 1000% нужно ехать в МСЭ на ул. Приорова 36), поехал на следующий день тк в этот уже не успевал. Приезжаю, а там этого врача тоже нет! И ещё удивляются чего это я приехал к ним, когда нужный мне врач находится на ул. Докукина д. 11 стр. 2.
Пока до ул. Докукина 11 не добрался, но надеюсь что это последний адрес и по кругу они меня не пустят.
То что я к ним на ногах пришёл со степенью инвалидности 3 согласно документу (будем подавать на 1, 2 точно поставят) их почему-то не удивляет, а вот пришел не по тому адресу… Вот это да, вот именно это странно конечно 🤔 В общем, что я понял, неходячий из-за них будет бегать, незрячий у них прозреет, глухой услышит. И вишенка на торте - немой заговорит, а то и запоет как Магомаев.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.
Планировал за вечер доделать систему ответов. Но не справился. Работал над системой ответов и внезапно всплыл неприятный момент:
1) История сообщений грузятся динамически пачками по Х сообщений. Каждое соообщение может ссылаться на какое-то сообщение из истории переписки.
2) Сообщение на которое ссылается текущее сообщение может не быть загружено. В этом случае его нужно подгрузить. Иначе приложение будет думать, что сообщение удалено:
И тут самый сок. За что я не люблю Flutter/мобильную разработку - это за то, что нельзя просто взять и загрузить то, что недостает:
Начались пляски с бубном на тему того как же оптимальней подгрузить эти недостающие сообщения. Перепробовал разные методы, самый оптимальный (на мой взгляд) - загружать допсообщения в момент, когда грузятся основные сообщения.
Ничего умнее и оптимальнее придумать не смог. Другие вариант подгрузки приводят к ожиданиям из-за обращения к БД в следующем кадре; А еще они приводят к хитровымудренным схемам перестройки интерфейска, что мне совсем не понравилось (работы там и без этого хватает).
Ранее писал что буду переделывать систему вывода таймстемпов т.к. в ней были выявлены ошибки. Переделал:



Таймстемпы теперь всегда в правом нижнем углу
Также состояние доставки перенес в самый правый угол сообщения.
Сейчас сообщения-ответы на сообщения отправляются, приходят и нормально выводятся. Проблем не должно быть.
Далее берусь за работу над контекстым меню сообщений (это когда жмешь на сообщение и возникает меню с вариантами действий). Вот его нужно добить и можно будет редактировать сообщения :)
После контекстного меню буду думать над загрузкой медиа на сервер (для обмена файлами). По идее серверная часть уже реализована, нужно бы научить приложение загружать медиа на сервер и обрабатывать ошибки загрузки :)
Вроде интерфейс получается. Вспомнил первые наброски интерфейса:
Примерно так он выглядит сейчас:
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
Ранее писал о том как делал механику ответа на сообщения (свайп). Была проблема: любое свайпнутое сообщение сдвигало аватарку пользователя. Исправил этот момент:
Тут на видео видно как работает:
Но это не все успехи :)
Еще добавил в поле ввода отображение сообщения на которое пишется ответ. Вот первая попытка добавить:
А это последняя версия на сегодня. Вроде выглядит неплохо для ранней версии. Во всяком случае полагаю что располагать ответ на сообщение над полем ввода - это удобно и функционально:
Работает так: свайпаем любое сообщение (1) и в поле ввода оно появляется (2). Вроде все просто, у всех примерно так и сделано:
Заметил что сообщения у меня сделаны не лучшим образом: много места занимают отступы (3), медиа небольшого размера, текст сообщения (если есть) находится над медиа (1), зачем-то добавил скругления углов медиа (2) (ну и цвета очень пестрые, яркие):
Исправлял эти моменты сегодня, теперь медиа пытается занять всю ширину сообщений:
Если сообщение содержит ответ или заголовок, то медиа выглядит так:
Видите таймстемп съехах? Да-да, снова под нож пойдет, придется дорабатывать.
Конечно есть много недочетов и мелочей, но в целом дело движется :)
Читаю некоторые ответы под своими постами на тему разработки, интересные реакции на посты. Некоторые люди тут все же раздражают. Наверно они и ставят иконки рвотных масс, каках и тп 😂
Во-первых у кого-то навязчивое желание научить меня тому, что мне не следует писать сервис для общения 😂 Потому что сервисов очень много 😂 Ну что с того что много, я же учусь. Недавно паяльник за 300 руб разобрал и починил, давайте, сойдите с ума 😂😂😂 Могу рассказать как наушники за 50 руб починил, чтобы вообще до бешенства довести :)
А что мне делать по вашему мнению? Ходить баки пинать? Шататься по городу в поисках острых ощущений? Может путешествовать? А может алкогольчиком баловаться? А может зарабатывать тк время=деньги?
Давайте, начинайте учить кому и что в жизни делать. Все только сидят и ждут кто бы научил. В общем, советуйте свои советы себе сами 😂 А мы продолжим постепенно работать.
Возможно опубликую тут что-то интересное по работе, историй с работы у меня не то чтобы много, а очень много. Да еще и такие, что здоровенного кота с здоровенной лампой придется притащить 😂😂😂
Пока на этом все, буду дорабатывать таймстемпы и систему ответа на сообщения. Также доберусь до системы взаимодействия с сообщениями посредством контекстного меню.
Отправка и прием сообщений работают, нужно наконец уже добиться чтобы редактирование, удаление и прочий функционал тоже работал.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
Подозревал, что нельзя просто так взять и интегрировать разработанную ранее механику свайпов в свой проект. Да, угадал. Из-за моей неопытности и неполного понимания принципа работы Flutter, проблемы начали сыпаться как из рога изобилия. Вот что получилось:
Проблемы
- во-первых сливер с хэдерами (а это сообщения и даты) начали перехватывать свайпы и сообщения не получали информации о том, что их пытаются свайпнуть
- во-вторых мой сливер с хэдерами, который "типа работает как надо", оказалось что он не совсем работает. А если точнее, я не понял ранее за что отвечал код, обрабатывающий касания пальцев и удалил его. Ну вот понял зачем, лишним, как оказалось, он не был 😂 и без него сообщения вообще не получали информации о том, что их свайпают
- в-третьих, пришлось разбираться как переопределить области свайпов, чтобы палец свайпал нужное сообщение, а не соседнее или какое-то случайное
- в-четвертых аватраки перестали смещаться полем ввода
Помимо этого нашлась еще охапка проблем, но хватит уже о грустном 😂
Что нужно доработать
Аватарки, вернее их горизонтальное смещение. Оно уже неплохо реализовано (в видео видно), но нужно добить их. Сейчас каждое сообщение группы смещает аватарку, а нужно чтобы только "нужное" сообщение смещало ее:
Да вроде это и несложно сделать, нужно просто посмотреть где находится аватарка и решить нужно смещать ее или нет.
После того как добью свайпы перейду к полю ввода сообщения. Нужно будет добавить в поле ввода отображение свайпнутого сообщения (на которое пишется ответ).
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
Начал работу над логикой взаимодействия с сообщениями. По этой причине приходится работать над интерфейсом меню, которое отображается при выборе действий с сообщением: отправить повторно, удалить, редактировать и тп. Без этого меню проблемно тестировать приложение.
Сообщения отправляются / приходят, отображается статус прочтения и все на этом.
Сегодня вечером успел собрать такую простенькую механику свайпов сообщений и вызова функци, если свайп завершился успешно. В данном случае свайп означает отправку ответа на свайпнутое сообщение:
На мой взгляд получилось удобно. Сейчас буду преносить этот код в финальный проект. Наверняка что-то не будет работать, как всегда что-то не учел 😂
Ранее обещал продемонстрировать как работает прием/отправка сообщений. Собственно вот видео, где видно что сообщения отправляются, доставляются. Статус "прочтено" отправляю в консоли через команду 'read' и номер сообщения:
Слева в видео пользователь 333 использует консоль, справа другой пользователь пишет через приложение.
Пользуясь случаем хотел бы поблагодарить своих подписчиков за поддержку и отдельно @KAPTABO3ABP за донат :) Спасибо, приятно, будем стараться развивать сервис дальше и делиться тут успехами.
В процессе работы над взаимодействием с сообщениями посматривал на то как механики реализованы в существующих мессенджерах. На первый взгляд одинаково, но на деле нет. Так, я случайно сломал интерфейс Telegram:
Сообщения с которыми экспериментировал налачи пропадать, началась кровавая бойня из багов в окне переписки. Но если выйти из чата и войти, то косяки пропадают до момента пока не пытаешься их создать повторно.
Продолжаю работу над приложением, работаю над взаимодействием с сообщениями.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
В течение года общаюсь с сестрой. Она занимает должность правой руки / заместителя гендира одной фирмы, которая частично IT. Да, частично.
И вот в течение всего времени сестра общается со мной по проектам, которые их фирма развивает. Иногда предлагает перейти к ним. Но чаще рассказывает в общем виде о проекте и интересуется техдеталями. Рассказывает, что их фирму постоянно "кидают".
Я, в свою очередь, как технический специалист часто вижу большие несостыковки. Ну например, чтобы хоть немного было понятно о чем речь (очень утрированно), последняя их задумка в общем и отдаленном виде звучит примерно так: соберем свою ИИ (нейросеть/языковую модель), которая будет не хуже ChatGPT, DeepSeek и Claude Opus. Ну и когда приходят такие задачи, меня терзают смутные сомнения насчет того какой гений с каким бюджетом и в какие сроки это будет реализовывать 😂
Конечно сестре отвечаю честно, что я не специалист и во-первых по моему крайне скромному субъективному мнению найти такого специалиста - это задача уровня "миссия невыполнима × 9999999999".
Во-вторых для обучения нужны данные, очень много данных. Прямо ну крайне очень много и мне даже неизвестно сколько. А еще более неприятный момент, данные должны быть не просто набранные отовсюду, откуда только возможно, а специально подготовленные "правильные" данные. В общем, целый институт образования масштаба страны нужно открыть для обучения новой языковой модели/ИИ.
Ну и в-третьих, с учетом того, что найти специалиста невозможно и стоит это условно Х, собрать систему обучения будет стоить Y за время T, то на реализацию всего мероприятия уйдет денег Д. Пусть непредвиденные расходы и непредвиденное время и все непредвиденное включено в эти X, Y, T, и Д. И тут я открыто и честно говорю, что я просто не компетентен давать оценку и скорее всего, на основе моего субьективного и скромного мнения, успех этой затеи не то чтобы сомнительный 😂 он равен нулю. Даже потолок по деньгам не могу озвучить...
С учетом того, что все параметры вообще неизвестны, то надеяться что удастся собрать такое "комбо" гораздо больше на ставках в спорте чем тут 😂😂😂 И советую им хорошо подумать над тем, что они пытаются выполнить невыполнимые задачи.
Знаете что сестра ответила? Ответила: ты такие слова боссу не говори. Он ругался с последним человеком, кто начал убеждать его что это невозможно. Прямо взбесился 😂
Он верит в идею, все этим горят. А еще он нашел очень умных ребят, которые обещают все сделать.
Спрашиваю кто в этом отряде самоубийц эти умные ребята? Может, они хотя бы стояли рядом со станком, когда делали текущие модели? Или это непосредственные разработчики того, что уже есть на рынке? А вдруг (наверняка же я что-то не понимаю и деньги просто так вваливать в ничто никто не будет)?
Ответ: Вася работавший в Европе в условном Скайпе, Джон из майкрософт, занимался развитием какого-то направления (например IE), Ричард - разработчик Zoom.
Как бы даже если бы они в одно лицо каждый сделали Скайп, IE и Zoom, по моему скромному опыту, во-первых это никак не связано с той сферой в которую их зовут, во-вторых что-то я не понимаю что вообще происходит 😂 (как они вообще согласились на этот проект?!).
Эти ребята, кстати, языковую модель так и не сделали, но ЗП, конечно, получали.
Гуляю сегодня с работы и в голову пришло понимание. Раньше как-то не задумывался над этим. А вот шел и думал как же так, как их все кидают и почему их кидают. Судьба, рок, карма, что у них не так? Родовое проклятье может 😂
А ведь все очень четко идет, так как должно быть. Как оно вообще может иначе работать? Они находят невменяемых исполнителей и ставят им невыполнимые задачи. С честными и вменяемыми они ругаются 😂 Все просто, что в итоге они хотят получить? 😂 Возможно им стоило бы дать совет научиться рефлексировать над своими действиями, но кто я такой чтобы раздавать людям советы. Жизнь сама их научит.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
На прошлой неделе доработал отображение неотправленных сообщений. Ранее неотправленные сообщения отображались с восклицательным знаком в кружке:
Но этот вариант мне не понравился по ряду причин:
1) иконка рисуется отдельно от сообщения
2) подозрительно напоминает другие мессенджеры 😂
Да, и баги нашел в системе отображения таймстемпов:





Система отображения таймстемпов в очередной раз пошла под нож... Исправил ошибки.
Первая попытка переделки конки-уведомления ошибки доставки выглядит так:
Недоставленное сообщение залито красным, а справа восклицательный знак.
Но этот вариант мне не понравился и переделал иконку с восклицательным знаком вот так:



Финальный вариант:
Цвета и иконки скорее всего будут доработаны позже, но сама идея останется такой: справа часть сообщения залита красным и по центру находится иконка восклицательного знака.
Обмен сообщениями реализовал, но о нем напишу чуть позже в следующем посте. Сделаю видео, где показано как работает отправка и доставка сообщений.
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.
Наконец настроил обновление статусов сообщений для получателя. Пока работал над статусами, понял, что по неопытности много чего не учел и пошел писать код нахрапом. То есть пока неоптимально некоторые моменты реализую. Потом, надеюсь, осознаю до конца все моменты и оптимизирую код.
Что забросил? Например Map (O1) заменил на списки и поиск элемента делаю через indexOf (O(n)). В геймдеве я бы очень быстро посадил производительность на 0, но а тут вроде как терпимо для самой сырой версии. Даже вроде и с O(n^2) работает 😂
Баги
Куда без них? Единственное утешает, что не только у меня. Открыл на днях Youtube на яблоке и вижу:
Уже не удивляет когда у мегакорпораций интерфейс временами работает криво. Расслабились наверно 😂
Написал код отображения таймстемпа в сообщениях и думал что больше никогда к нему не вернусь 😂 Слишком уж мудреная там логика получилась. Ага, на этой неделе занимался правками багов в таймстемпе. То дата не там встанет, то статус куда-то улетает 😂 Исправил. Красными стрелками показал баг таймстемпа, а зелеными исправления:
А вот тут видно обновленные статусы сообщений:
VisualCode, Flutter, СУБД, crone, всякие NATS и серверная часть - что-то эти ребята достаточно сильно грузят мне комп. Потому второго клиента запускаю в консоли и имитирую общение через нее:
Буду продолжать работу над обменом сообщениями, командами (удалить, редактировать и проч) и интерфейсом приложения. Да, не особо быстро движется дело, но что сделаешь, как есть. Фигак-фигак и в продакшен за 1 месяц не получается 😂, есть в жизни много других очень важных задач 😕
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.