LINUX.ORG.RU

Сообщалка: программа для общения в команде

 , , , ,


0

3

Так как меня не устраивали существующие мессенджеры для локальной сети, я написал свой. Если у кого-то ещё сходные требования, можете пользоваться.

Что умеет Сообщалка:

  • общий список всех сообщений от всех собеседников;
  • отбор сообщений по собеседнику или группе собеседников (группы добавляются и редактируются администратором);
  • отправка сообщений собеседнику или группе;
  • поиск по регулярному выражению;
  • просмотр сообщений за указанную дату или несколько дней перед датой;
  • позволяет отметить факт ознакомления с сообщением одним щелчком;
  • позволяет вставлять в сообщение изображения в любое место (как принято в письмах и как нет в мессенджерах);
  • позволяет цитировать сообщения (в том числе несколько в одном сообщении) и по щелчку переходить к процитированному;
  • позволяет редактировать отправленное сегодня сообщение и хранит историю;
  • серверная часть хранит сообщения в каталоге в виде читаемых файлов, изображения в одном экземпляре;
  • полностью переносима в рамках Windows/Linux/MacOS, работает на любой архитектуре процессора;
  • не имеет внешних зависимостей, кроме языка программирования Racket.

Что не умеет и вряд ли будет:

  • шифрование канала: если надо, можно ставить stunnel;
  • много пользователей: интерфейс на данный момент не предполагает прокрутку списка пользователей, но за счёт этого все данные на сервере в памяти и работает очень быстро;
  • вложение файлов: я считаю, что если файл нужен, то его надо выкладывать на файловый сервер и давать ссылку, а не превращать средство общения в хранилище файлов;
  • видео и аудио: если надо позвонить, логичнее кинуть ссылку на jitsi или что в команде принято.

>>> Исходники

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 7)

Что не умеет и вряд ли будет: шифрование канала

Ну это странно странно в современно мире.

Windows/Linux/MacOS

Нету Android.. тоже странно

В ридми нету скриншотов!

// Связано ли это с тем что программа написана на Рэкете? :)

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 2)
Ответ на: комментарий от Bad_ptr

Ну это странно странно в современно мире. … Связано ли это с тем что программа написана на Рэкете? :)

Нет. Это связано с тем, что она предназначена для локальной (или соединённой через VPN) сети.

Технических ограничений нет (SSL языком поддерживается).

monk ★★★★★
() автор топика
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Нету Android.. тоже странно

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

monk ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

Если вдруг превратится в тыкву VPN поверх SSL (типа stunnel), то одновременно превратится в тыкву и любое шифрование.

monk ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

В ридми нету скриншотов!

А как их туда вставить? Вставка изображения не работает.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

гипертекстовой версии

Это правильно. Но тоже хотелось бы чтобы был https, а не только http.

Если вдруг превратится в тыкву VPN поверх SSL

VPN у всех разный и в разных уголках этого мира могут разные VPNы не работать. А у кого-то вообще может не оказаться привычного «сетапа» под рукой, а на связь выйти нужно.

А как их[скриншоты] туда вставить? Вставка изображения не работает.

На гитхабе вставлялись так:

[![описание](screenshots/screen.jpg)](screenshots/screen.jpg)

Вставил сюда.

спасибо

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Это правильно. Но тоже хотелось бы чтобы был https, а не только http.

Там, скорее всего, придётся. Современные браузеры на сотовых очень http не любят.

VPN у всех разный и в разных уголках этого мира могут разные VPNы не работать.

Так я про то же: как из дома подключиться к сети на работе, должен определять пользователь, а не запущенное приложение.

описание

В исходники лишние файлы кидать? Некрасиво.

monk ★★★★★
() автор топика

позволяет редактировать отправленное сегодня сообщение и хранит историю;

А если не сегодня? Это настраивается?

вложение файлов: я считаю, что если файл нужен, то его надо выкладывать на файловый сервер и давать ссылку, а не превращать средство общения в хранилище файлов;

Это можно интегрировать в IM. Т.е. IM сам загружает файл на файловый сервер. Так сделано например в MS Teams.

но за счёт этого все данные на сервере в памяти и работает очень быстро;

А сколько памяти потребляет клиент?

И как там с экспортом истории на клиенте?

MirandaUser2 ★★
()
Ответ на: комментарий от Aceler

Да, нарушение правил ведения бизнеса в… :)

Bad_ptr ★★★★★
()

Вот оно - звериное лицо опенсорса в видении программиста !

Я думал, что хуже, нежели междумордие либры - уже и представить нельзя.

Я - ошибался! :)

DrRulez ★★★★★
()

Прикольно. До сих пор не решился запостить сюда свое чудовище на TCL/Tk, начинавшееся похожим образом, но теперь поддерживающее коммуникацию через I2P. В сравнении с сим есть недостатки, но есть и преимущества. Один из недостатков - для sodium, portaudio и opus (голосовые сообщения, а не что подумали ; звонки очень плохо сделанные есть, но бажно и крч не совсем) использованы сишные обертки, то есть оно не чистый TCL.

Racket радует, намучился с бестиповостью в TCL и захотелось что-то похожее, но без нее, и так понял наконец, о чем Лисп. Учу. Вчера заработал eval в сишном интерпретаторе. В 30 лет сцк.

lealxe
()

А от чего ажиотаж-то такой не пойму? Ну делает чел свои эксперименты… ещё и аж в новости попало.

normann ★★★
()

я написал свой

у меня тоже нет чувства прекрасного

#!1
предоставлять создать-мигание остановить-мигание оповестить-о-новом-сообщении нужно-ли-оповещать?
используется класс
  рисование/картинка
  рисование/изображение
  базовая/поток
  базовая/путь
  базовая/файл
  операционная-система
  с-префиксом данные: «../данные»

мигание = ложь

иконка-для-окна картинка =
  растр = объект изображение%
    ширина 36
    высота 36
  холст = растр{холст}
  холст{нарисовать-изображение картинка 0 0}
  растр{внутренний}

иконка-обычная = иконка-для-окна $ переработка #:высота 36
иконка-мигающая = иконка-для-окна $ переработка #:высота 36 #:цвет 'жёлтый

наху зачем так жить?

gagarin0
()
Последнее исправление: gagarin0 (всего исправлений: 1)
Ответ на: комментарий от gagarin0

мигание = ложь

Ну вот интересно кстати, стоит ли булины называть ложь/истина. Ведь в большинстве программ они используются имея смысл скорее вкл/выкл или да/нет

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Ложь и истина строго дуальны, одно состояние исключает другое. А вот с вкл/выкл так не работает, лампа может быть включена, а может выключена, а может барахлить, может перегореть или инициализироваться, когда цепь замкнута, а полного свечения ещё нет, разные есть варианты.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Ложь и истина строго дуальны

Ой да ладно, а как же «троичная логика» тогда что на пустом месте возникла?

Bad_ptr ★★★★★
()
Ответ на: комментарий от gagarin0

Это для job security. Чтоб только автор мог код поддерживать :-)

А если серьезно, то прототип в принципе можно писать на чем угодно. Потом при необходимости переписать на более распространенный ЯП.

MirandaUser2 ★★
()

Интерфейс, стиль, иконка - моё почтение.

Напоминает мои потуги с Visual Basic 6 в каком-нибудь лохматом 2000-ом - между уроками, гулянием и StarCraft.

skyman ★★★★★
()
Ответ на: комментарий от MirandaUser2

Так сделано например в MS Teams.

Нашёл кого в пример ставить :)

pihter ★★★★★
()

день добрый!
у самого периодически поднимается... подобный вопрос (но до дела пока не доходит).
бегло, в мыслях набрасывается прим. след. ход мыслей:
1. если надо мини/быстро/под себя/с кодом и возможными доработками по ходу дела -> fpc/lazarus.
2. если надо чуть более профессионально - pidgin & local server.
3. ну вообще супер/пупер с танцовщицами и кабинетами - это надо засесть надолго и изучать вопрос, прорабатывать «тему», рыться в инете, смотреть/ставить/отлаживать что есть итд.

почему выбрали такой «особенный» яп?

п.с. (вашу разработку еще не смотрел, т.к. не созрел до 3го пункта. со временем доберусь, пока в закладки :о)

sunjob ★★★★★
()
Ответ на: комментарий от MirandaUser2

А если не сегодня? Это настраивается?

В исходниках. Мне надо было, чтобы старые сообщения не редактировались, но случайно отправленную опечатку можно было исправить.

Это можно интегрировать в IM. Т.е. IM сам загружает файл на файловый сервер.

Можно. Также, как и запуск видеозвонков. Решил, что излишне.

А сколько памяти потребляет клиент?

По данным top RES 378МБ, VIRT 1144.

И как там с экспортом истории на клиенте?

Можно просто поставить большое количество дней просмотра и скопировать через Ctrl-C. А зачем? Если резервную копию, то логичнее на сервере. Импорт этой истории ведь никуда не сделать.

monk ★★★★★
() автор топика
Ответ на: комментарий от sunjob

Добрый!

почему выбрали такой «особенный» яп?

  1. если надо мини/быстро/под себя/с кодом и возможными доработками по ходу дела -> fpc/lazarus.
  2. если надо чуть более профессионально - pidgin & local server.
  1. Архитектуры: x86_64, i586, aarch64
  2. И как в него трамбовать поиск по дням и регулярным выражениям? Это основная причина, почему пришлось писать своё.

Racket даёт полную переносимость на Linux и при этом можно компилировать на Windows в обычный бинарный файл, который можно просто копировать между компьютерами. Адина (русскоязычный Racket) даёт возможность пользователям дорабатывать клиент (у меня вокруг 1Сники, а не паскалисты).

monk ★★★★★
() автор топика
Последнее исправление: monk (всего исправлений: 2)
Ответ на: комментарий от pihter

гипертекстовой

Векторной

Слово «хэтэтэпэшной» совсем некрасивое. Поэтому HTTP-server на русский перевожу как «гипертекстовый сервер».

monk ★★★★★
() автор топика
Ответ на: комментарий от MirandaUser2

Это можно интегрировать в IM. Т.е. IM сам загружает файл на файловый сервер.

А как определять, когда этот файл удалять? А если этот файл получатель потом ещё раз перешлёт, то на сервере их уже два будет? А если пользователь многогигабайтный архив отправить, он тоже на сервер надолго ляжет? Или как в почте ставить ограничение на 10 мегабайт?

Поэтому у меня в итоге отдельно сообщалка и отдельно сетевое хранилище файлов.

monk ★★★★★
() автор топика

интерфейс на данный момент не предполагает прокрутку списка пользователей,

Ахахаха. АХАХАХАХАХА!

sn4il
()

Так как меня не устраивали существующие мессенджеры для локальной сети, я написал свой.

Устраивает?

unC0Rr ★★★★★
()
Ответ на: комментарий от monk

лазарь поддерживает очень много архитектур.
Platform_list 1
Platform_list 2

на счет поиска - не уверен, но в пидгине оч.много плагинов (не помню уже, 100 лет не юзал, но и не помню, что были какие-то проблемы с поиском. надо собрать, посмотреть :о)

p.s. современная Delphi, по моему, еще более навороченная!:о) и в плане «архитектур» и в плане «вообще»

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 7)
Ответ на: комментарий от pihter

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

monk ★★★★★
() автор топика
Ответ на: комментарий от unC0Rr

Да. Я же весь список написал, чего мне не хватало. Сейчас не хватает только странички для мобилок (нормальный интерфейс там не сделать, но чтобы хоть читать можно было и текстовые сообщения отправлять).

monk ★★★★★
() автор топика

Лиспы продолжают опережать свое время.

thesis ★★★★★
()
Ответ на: комментарий от IvanRia

Настолько же, насколько в протоколе HTTP. Любая защита от товарища майора прикручивается снаружи.

monk ★★★★★
() автор топика
Ответ на: комментарий от sn4il

Ахахаха. АХАХАХАХАХА!

В рабочей команде должно быть 7-9 человек. Если больше, затраты на согласование превышают затраты на получение результата. Без прокрутки на типичном мониторе влезает два-три десятка кнопок.

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

monk ★★★★★
() автор топика
Ответ на: комментарий от sunjob

лазарь поддерживает очень много архитектур.

Я в дистрибутивах глянул. И посмотрел, что на Эльбрусе нету. Ладно, наличие в целевых платформах JVM позволяет его тоже считать универсально переносимым.

А в нём можно сделать бинарник для Windows с графическим интерфейсом, который бы запускался с флэшки? А то Haskell мне предложил MSYS2 на несколько гигабайт ради GTK создать.

на счет поиска - не уверен, но в пидгине оч.много плагинов

Так поддержка от сервера нужна.

monk ★★★★★
() автор топика
Ответ на: комментарий от IvanRia

Есть же xmpp

Есть. Очень сложный. В сообщалке сейчас общее количество кода в несколько раз меньше, чем надо для его разбора.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Очень сложный.

сложность сейчас нивелируется использованием LLM

gagarin0
()
Ответ на: комментарий от monk

А в нём можно сделать бинарник для Windows с графическим интерфейсом, который бы запускался с флэшки?

ну... я пишу для себя унивесральные тулзы под win/lin, ни каких проблем с запуском ни там ни там.
ответ: видимо ДА! :о)

Так поддержка от сервера нужна.

XMPP/ЖАББЕР - не поддерживает такую возможность? (я не в курсе)
ответ ии

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от monk

Ясно, ну ладно, пусть живет и здравствует ваш проект ))

IvanRia
()
Ответ на: комментарий от monk

А в нём можно сделать бинарник для Windows с графическим интерфейсом, который бы запускался с флэшки?

множество опций, недавно с подобной задачей справился rust, при этом бинарники собирались внутри докера для osx,linux,win

gagarin0
()
Ответ на: комментарий от Bad_ptr

В троичной логике всё то же самое: есть явные логические состояния, каждое исключает друг друга, у каждого своё имя.

ugoday ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.