Сообщество - ИТ-проекты пикабушников

ИТ-проекты пикабушников

798 постов 3 474 подписчика

Популярные теги в сообществе:

3

Сервис для общения: немного о результатах работы над интерфейсом

Серия Проект с сервисом для общения

Ранее писал о том как делал механику ответа на сообщения (свайп). Была проблема: любое свайпнутое сообщение сдвигало аватарку пользователя. Исправил этот момент:

Тут на видео видно как работает:

Но это не все успехи :)

Еще добавил в поле ввода отображение сообщения на которое пишется ответ. Вот первая попытка добавить:

А это последняя версия на сегодня. Вроде выглядит неплохо для ранней версии. Во всяком случае полагаю что располагать ответ на сообщение над полем ввода - это удобно и функционально:

Работает так: свайпаем любое сообщение (1) и в поле ввода оно появляется (2). Вроде все просто, у всех примерно так и сделано:

Заметил что сообщения у меня сделаны не лучшим образом: много места занимают отступы (3), медиа небольшого размера, текст сообщения (если есть) находится над медиа (1), зачем-то добавил скругления углов медиа (2) (ну и цвета очень пестрые, яркие):

Исправлял эти моменты сегодня, теперь медиа пытается занять всю ширину сообщений:

Тут нужно дату отправки бы отобразить под медиа

Тут нужно дату отправки бы отобразить под медиа

Если сообщение содержит ответ или заголовок, то медиа выглядит так:

Видите таймстемп съехах? Да-да, снова под нож пойдет, придется дорабатывать.

Конечно есть много недочетов и мелочей, но в целом дело движется :)


Читаю некоторые ответы под своими постами на тему разработки, интересные реакции на посты. Некоторые люди тут все же раздражают. Наверно они и ставят иконки рвотных масс, каках и тп 😂

Во-первых у кого-то навязчивое желание научить меня тому, что мне не следует писать сервис для общения 😂 Потому что сервисов очень много 😂 Ну что с того что много, я же учусь. Недавно паяльник за 300 руб разобрал и починил, давайте, сойдите с ума 😂😂😂 Могу рассказать как наушники за 50 руб починил, чтобы вообще до бешенства довести :)

А что мне делать по вашему мнению? Ходить баки пинать? Шататься по городу в поисках острых ощущений? Может путешествовать? А может алкогольчиком баловаться? А может зарабатывать тк время=деньги?

Давайте, начинайте учить кому и что в жизни делать. Все только сидят и ждут кто бы научил. В общем, советуйте свои советы себе сами 😂 А мы продолжим постепенно работать.

Возможно опубликую тут что-то интересное по работе, историй с работы у меня не то чтобы много, а очень много. Да еще и такие, что здоровенного кота с здоровенной лампой придется притащить 😂😂😂


Пока на этом все, буду дорабатывать таймстемпы и систему ответа на сообщения. Также доберусь до системы взаимодействия с сообщениями посредством контекстного меню.
Отправка и прием сообщений работают, нужно наконец уже добиться чтобы редактирование, удаление и прочий функционал тоже работал.

--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.

Показать полностью 8 2
0

Как мы с ИИ написали шуточного следователя для Telegram, который допрашивает по видео-кружкам

Привет, Пикабу! На выходных было скучно, и мы с ИИ-напарником решили собрать забавную штуку для вечеринок с друзьями — развлекательного Telegram-бота под названием «Вранометр».

Суть простая: один человек описывает «дело» (в чём он подозревает друга, например: «подозрение в тайном поедании последнего куска торта»), а второй должен записать видео-кружок, голосовое или текст со своим оправданием.

В этот момент за дело берется живой ИИ-следователь с характером угрюмого, но остроумного детектива (под капотом трудится модель Claude).

Как это устроено внутри?

Мы решили не просто генерировать случайные ответы, а прикрутить к боту реальный сбор цифровых улик (настолько, насколько это возможно в рамках Python):

1. Анализ лица (MediaPipe): Бот реально считывает видео-кружки. Он отслеживает частоту моргания, повороты головы, направление взгляда и движения рук.

2. Анализ голоса (Librosa): Скрипт замеряет темп речи, ищет подозрительные паузы между словами и улавливает микро-дрожь в тональности голоса.

3. Распознавание речи (Faster-Whisper): Бот переводит всё сказанное в текст прямо на сервере.

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

Поиграть и проверить код

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

Весь проект мы сделали полностью бесплатным, а код выложили в открытый доступ. Если вы программист или вам просто интересна архитектура таких ботов — заходите, изучайте и докручивайте промпты вместе с нами!

Код проекта открыт для всех на GitHub: https://github.com/vodya88/Vranometr

Будем рады вашим мыслям в комментариях. Как вам идея? Кого бы вы допросили в первую очередь — кота или вторую половинку?

Показать полностью
3

Пишу сервис для общения: интегрировал механику свайпов в проект

Серия Проект с сервисом для общения

Подозревал, что нельзя просто так взять и интегрировать разработанную ранее механику свайпов в свой проект. Да, угадал. Из-за моей неопытности и неполного понимания принципа работы Flutter, проблемы начали сыпаться как из рога изобилия. Вот что получилось:

Проблемы

- во-первых сливер с хэдерами (а это сообщения и даты) начали перехватывать свайпы и сообщения не получали информации о том, что их пытаются свайпнуть
- во-вторых мой сливер с хэдерами, который "типа работает как надо", оказалось что он не совсем работает. А если точнее, я не понял ранее за что отвечал код, обрабатывающий касания пальцев и удалил его. Ну вот понял зачем, лишним, как оказалось, он не был 😂 и без него сообщения вообще не получали информации о том, что их свайпают
- в-третьих, пришлось разбираться как переопределить области свайпов, чтобы палец свайпал нужное сообщение, а не соседнее или какое-то случайное
- в-четвертых аватраки перестали смещаться полем ввода

Помимо этого нашлась еще охапка проблем, но хватит уже о грустном 😂

Что нужно доработать

Аватарки, вернее их горизонтальное смещение. Оно уже неплохо реализовано (в видео видно), но нужно добить их. Сейчас каждое сообщение группы смещает аватарку, а нужно чтобы только "нужное" сообщение смещало ее:

Пишу сервис для общения: интегрировал механику свайпов в проект

Да вроде это и несложно сделать, нужно просто посмотреть где находится аватарка и решить нужно смещать ее или нет.

После того как добью свайпы перейду к полю ввода сообщения. Нужно будет добавить в поле ввода отображение свайпнутого сообщения (на которое пишется ответ).

--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.

Показать полностью 1
3

Пишу сервис для общения: реализую механику ответа на сообщения

Серия Проект с сервисом для общения

Начал работу над логикой взаимодействия с сообщениями. По этой причине приходится работать над интерфейсом меню, которое отображается при выборе действий с сообщением: отправить повторно, удалить, редактировать и тп. Без этого меню проблемно тестировать приложение.

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

На мой взгляд получилось удобно. Сейчас буду преносить этот код в финальный проект. Наверняка что-то не будет работать, как всегда что-то не учел 😂

Ранее обещал продемонстрировать как работает прием/отправка сообщений. Собственно вот видео, где видно что сообщения отправляются, доставляются. Статус "прочтено" отправляю в консоли через команду 'read' и номер сообщения:

Слева в видео пользователь 333 использует консоль, справа другой пользователь пишет через приложение.


Пользуясь случаем хотел бы поблагодарить своих подписчиков за поддержку и отдельно @KAPTABO3ABP за донат :) Спасибо, приятно, будем стараться развивать сервис дальше и делиться тут успехами.


В процессе работы над взаимодействием с сообщениями посматривал на то как механики реализованы в существующих мессенджерах. На первый взгляд одинаково, но на деле нет. Так, я случайно сломал интерфейс Telegram:

Пишу сервис для общения: реализую механику ответа на сообщения

Сообщения с которыми экспериментировал налачи пропадать, началась кровавая бойня из багов в окне переписки. Но если выйти из чата и войти, то косяки пропадают до момента пока не пытаешься их создать повторно.

Продолжаю работу над приложением, работаю над взаимодействием с сообщениями.

--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.

Показать полностью 1 1
7

Пишу сервис для общения: доработал отображение неотправленных сообщений

Серия Проект с сервисом для общения

На прошлой неделе доработал отображение неотправленных сообщений. Ранее неотправленные сообщения отображались с восклицательным знаком в кружке:

Но этот вариант мне не понравился по ряду причин:
1) иконка рисуется отдельно от сообщения
2) подозрительно напоминает другие мессенджеры 😂

Да, и баги нашел в системе отображения таймстемпов:

Система отображения таймстемпов в очередной раз пошла под нож... Исправил ошибки.

Первая попытка переделки конки-уведомления ошибки доставки выглядит так:

Недоставленное сообщение залито красным, а справа восклицательный знак.

Но этот вариант мне не понравился и переделал иконку с восклицательным знаком вот так:

Финальный вариант:

Цвета и иконки скорее всего будут доработаны позже, но сама идея останется такой: справа часть сообщения залита красным и по центру находится иконка восклицательного знака.

Обмен сообщениями реализовал, но о нем напишу чуть позже в следующем посте. Сделаю видео, где показано как работает отправка и доставка сообщений.

--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.

Показать полностью 10
3

Как я сделал читалку книг для себя: открывается на любом утюге, работает без интернета и хранит всю библиотеку

Всем привет! На создание этого проекта меня подтолкнула банальная проблема: я читаю очень много (в среднем по книге каждые 2-3 дня) и со временем начал путаться в авторах, сериях и том, что уже прочитано, а что нет. Существующие решения либо обрастали лишним функционалом, либо не давали нормального контроля над личной библиотекой.

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

Архитектура и стек: почему PWA и браузерные технологии?

Главное требование к читалке - полная независимость от платформы и доступность с любого устройства (ПК, смартфон, планшет, телевизор) без необходимости ставить отдельные нативные приложения под каждую ОС.

  • PWA (Progressive Web App): Приложение устанавливается в систему прямо из браузера и работает в отдельном окне.

  • Оффлайн-доступ: За кэширование статики и работу без подключения к сети отвечает Service Worker.

  • Хранилище данных: Все книги и файлы обрабатываются исключительно на стороне клиента.

Что под капотом: архитектура, оффлайн и хранение гигабайт в браузере

Когда я проектировал читалку, главным требованием было отказаться от хранения самих файлов книг на сервере в пользу Client-Side First архитектуры. Сервер не индексирует, не передает и не хранит ваши библиотеки.

  1. Service Worker и PWA: Приложение упаковано как прогрессивное веб-приложение. За кэширование статики и мгновенную загрузку интерфейса отвечает Service Worker. Интернетом для самого процесса чтения пользоваться не нужно вообще - закачал базу и можно читать хоть в автономном режиме.

  2. IndexedDB + OPFS (Origin Private File System): Забудьте про костыли с локальным хранилищем (localStorage с его убогим лимитом в 5 МБ). Для работы с файлами книг используется IndexedDB и современная файловая система браузера OPFS.

    • Математика проста: в Chromium-подобных браузерах лимит хранилища для одного домена составляет до 60% от свободного дискового пространства устройства. На современном смартфоне или ПК это десятки или сотни гигабайт. Учитывая, что средний файл .fb2 или .epub без иллюстраций весит около 1–2 мегабайт, в памяти браузера легко умещается полноценная библиотека из десятков тысяч книг.

  3. Гибридная синхронизация метаданных: Так как вся тяжелая база книг живет локально на устройстве пользователя, по сети гоняются исключительно легкие метаданные (текущая позиция чтения, настройки, оценки и статистика для облачного профиля - если пользователь решил авторизоваться). Сами файлы книг на сервер не отправляются вообще. Для передачи конкретной книги между устройствами используется генерация временных хэш-ссылок с позицией чтения.

Основной функционал

  1. OPDS-каталоги: «Из коробки» встроена поддержка легальных каталогов (например, Библиотека Мошкова), при этом пользователь может подключать любые сторонние OPDS-источники.

  2. Учет и статистика: Проект создавался в первую очередь ради структурирования прочитанного. Реализована сортировка по жанрам, авторам, сериям, выставление оценок и ведение детальной истории чтения.

  3. Синхронизация и шаринг: На текущем этапе реализована генерация уникальных ссылок с привязкой к конкретной позиции в тексте (через метаданные), что позволяет переносить прогресс или делиться книгой. В планах - полноценная фоновая автосинхронизация метаданных между девайсами.

  4. Интегрированная озвучка (TTS): Реализован режим чтения вслух с помощью встроенных в браузер речевых движков с сохранением позиции воспроизведения.

  5. Поддерживаемые форматы: Фокус сделан на .fb2 как на основной стандарт для текстовой русскоязычной литературы. В перспективе планируется расширение форматов (включая .epub).

Безопасность, приватность и серверная часть

Один из частых вопросов касается безопасности и хранения пользовательских данных.

  • Где лежат файлы книг? Серверная часть не хранит, не индексирует и не передает файлы пользовательских книг. Вся обработка и хранение текстовых файлов происходят изолированно в песочнице браузера на устройстве пользователя.

  • Зачем нужна авторизация? Регистрация полностью опциональна и используется исключительно для привязки облачного профиля, в котором хранятся легкие метаданные: настройки интерфейса, общий прогресс чтения и оценки. Читать книги с локального диска можно полностью без регистрации и создания аккаунтов.

Ссылки на проект

  • Потестировать демо-версию (доступна полностью готовая книга): libd.eu/share/...

  • Главная страница приложения: libd.eu

Проект развивается открыто и пишется под практические нужды. Буду рад конструктивной технической критике, идеям и пожеланиям в комментариях!

Показать полностью 3

Прошу протестировать игру

Настало время и я тоже примкнул к всеми презираемым вайбкодерам.

Дети подросли, уехали и я как-то поймал себя на мысли, что вечером особо и делать нечего. Раньше еще с коллективом собирались на пиво посидеть, но в последние года 3 и пиво особо не привлекает, сейчас пью его раз в 2 месяца и то, если есть впереди 2 свободных дня.

И тут подкатили большие языковые модели, очень интересные штуки. Когда-то немного изучал python и даже небольшие нейросети писал, но потом забросил, на работе был завал, потом другие дела. Сначала, конечно, ChatGPT, очень помогает писать служебные записки, акты, письма. А потом попробовал Claude, попробовал, вау, конечно, все, о чем раньше только мечтал, можно сделать.

И вот в итоге небольшая игра, точнее несколько игр в одном приложении, которые я выкатил на тестирование в Google play. Ничего особенного, обычные игры в тетрадке в клеточку, которые мы играли в школе - 5 в ряд, точки, лабиринт и змейка. Таких игр много для смартфонов, но я хочу собрать именно те игры, которые были популярны на перемене в школе или на скучном уроке. Пока эти четыре игры, потом добавлю, если будет интересно.

Прошу протестировать игру

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

Заранее всем спасибо.

Для участия, сначала нужно зарегистрироваться в Google группе через email, который у вас в Google play
https://groups.google.com/g/graphpapergames-testers

Затем установить по следующей ссылке:
https://play.google.com/store/apps/details?id=com.graphpaper...

А, да, чуть не забыл - приложение только для Андроид (пока)

Показать полностью 1
10

Пишу сервис для общения: настроил обновление статусов доставки сообщений до получателя

Серия Проект с сервисом для общения

Наконец настроил обновление статусов сообщений для получателя. Пока работал над статусами, понял, что по неопытности много чего не учел и пошел писать код нахрапом. То есть пока неоптимально некоторые моменты реализую. Потом, надеюсь, осознаю до конца все моменты и оптимизирую код.

Что забросил? Например Map (O1) заменил на списки и поиск элемента делаю через indexOf (O(n)). В геймдеве я бы очень быстро посадил производительность на 0, но а тут вроде как терпимо для самой сырой версии. Даже вроде и с O(n^2) работает 😂

Баги

Куда без них? Единственное утешает, что не только у меня. Открыл на днях Youtube на яблоке и вижу:

Уже не удивляет когда у мегакорпораций интерфейс временами работает криво. Расслабились наверно 😂


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

А вот тут видно обновленные статусы сообщений:

VisualCode, Flutter, СУБД, crone, всякие NATS и серверная часть - что-то эти ребята достаточно сильно грузят мне комп. Потому второго клиента запускаю в консоли и имитирую общение через нее:

Буду продолжать работу над обменом сообщениями, командами (удалить, редактировать и проч) и интерфейсом приложения. Да, не особо быстро движется дело, но что сделаешь, как есть. Фигак-фигак и в продакшен за 1 месяц не получается 😂, есть в жизни много других очень важных задач 😕

--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки сервиса.

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества