Wednesday, September 22, 2021

Осенняя критика events4friends

Вступление

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

В этом посте оставлю открытые вопросы.


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

Обычно мероприятия сообщества размещается в одном городе. Но онлайн-мероприятие не ограничивается географией: могут принять участие пользователь со всего мира. Поэтому:

  • можно отображать онлайн-анонсы на всех досках, что в итоге приведет к дублированию информации;
  • можно отображать онлайн-анонсы на доске, которую укажет организатор, тогда потенциальные участники из других сообществ (чатов) о нем не узнают.

Сейчас работает второй вариант.


Как быть с географией сообщества?

Сейчас на доске два сообщества, которые находятся в разных городах:

  • «events4friends» располагается в Калиниграде;
  • «Trava education» располагается в Санкт-Петербурге.

Например, организатор «events4friends» проводит выездное мероприятие в Санкт-Петербурге? Нужно ли как-то оповещать дружественные сообщества о том, что в их городе пройдет выездное мероприятие? Если да, то как?


Что делать с названиями сообществ?

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

«Trava education» и «events4friends» не только проводят свои мероприятия, но  и агрегируют мероприятия других сообществ (волейболистов, любителей английского языка и другие). В общем, вопрос принадлежности мероприятия сообществу открыт.

Как предусмотреть интересы всех сообществ?


Что показывать на карте?

Технически карта готова. А практически ТЗ не проработано. Есть масса параметров отображения и вопросов:

  • к какому времени привязать отображение на карте? В течении часа, дня, недели?
  • к какому месту привязать отображение на карте? Рядом в радиусе 1 км, 5 км, в черте города (какого?), вообще все?
  • к какому сообществу привязать отображение на карте? 
  • в одной точке могут проходить одновременно несколько мероприятий, как их отобразить?
  • как отобразить онлайн мероприятие? 🙂

Реализация карты начнется с отображения на карте в описании конкретного мероприятия, дальше станет понятнее.

И главное, выяснить, нужна ли пользователям карта в принципе?


Куда развивать идею и софт?

Принципиальная позиция в заключается в том, что разработка софта для сообществ является строго социальной деятельностью. Об этом написан пост «Где деньги?».

Отсутствие инвестиций и грантов освобождают разработчиков от каких-либо обязательств. Предварительно есть два хороших варианта:

  • развивать софт в стороны образовательного примера программного продукта;
  • не развивать софт и пока что делать ничего.
Есть еще идеи?


Итого

Все вопросы непростые. Требуют времени и глубоких знаний в разных областях. Будем обсуждать коллективно.

Thursday, August 19, 2021

Где деньги/монетизация в events4friends?

Вступление

Часто, когда люди узнают про events4friends, возникает вопрос «Где деньги?» или «Почему бы не монетизировать?». В данном посте дам ответ на этот вопрос.


Почему нет?

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

В исходном коде events4friends использованы сторонние библиотеки. Благодаря тому, что проект некоммерческий, библиотеки разрешено использовать бесплатно.

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

Пользователи продукта имеют уникальную возможность попробовать на вкус интернет без рекламы.

Цена ошибки разработки никогда не была такой низкой - всего 0 рублей.

Награда за труд программистов - высокая лояльность и доверие пользователей. Коммерческим проектам редко удается добиться таких результатов.


Объяснение взрослым языком

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

Организаторы и многие участники сообщества events4friends - образованные люди и что-то знают о трансформациях в современном обществе. Идея events4friends развивалась с мыслью о том, что не все можно купить за деньги. Соответственно, events4friends купить нельзя. 


Бесплатно

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

Исходники тут:
https://github.com/VadimCpp



Sunday, May 23, 2021

Земский съезд

Перед началом

На Youtube канале Екатерины Михайловны состоялся Земский собор: фандрайзинговый стрим. Идея зажгла ум и мы с организаторами обсудили вопрос: стоит ли представить нашу идею на съезде или нет? Организаторы дали утвердительный ответ и началась работа. 

Каждый раз я тщательно подбирал слова, коротко и ясно формулировал идею. Каждый раз необходимо было говорить, кем я являюсь (Вадим Канинский, программист) и почему вообще пишу. Трудно объяснить, что «я увидел стрим и решил написать». А что, так можно было?

На первом этапе я написал в инстаграм Юлии Галяминой и вконтакте Екатерине Дунцовой. Меня отправили презентовать к Илье. Важно было установить доверие. Это было непросто, ведь я написал из интернета. Мы лично встретились в Москве и я рассказал ему о нашем сообществе и идее.

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

Договорились.


Подготовка

На протяжении трех недель я размышлял над презентацией идеи на родине Иммануила Канта и хорошо подготовился к выступлению. 

За это время со мной связалась Александра Поливанова и сообщила: «у вас будет 5-7 минут на презу и 3 на вопросы». Принял. 


Срыв съезда

Перед началом съезда я написал Юлии Галяминой и Александре Поливановой с предложением провести съезд онлайн. Я размышлял о том, что делегатам необходимо выполнить задачи съезда, поэтому уместно собраться онлайн и выполнить задачи. Александра ответила: «спасибо, подумаем!)»

Пока я наслаждался красотами Великого Новгорода и готовился к презентации, произошел срыв съезда. Об этом написано во всех новостях 22 мая 2021 года.


Продолжаем

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

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

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


Онлайн

В воскресенье утром мне стало ясно, что мое выступление не состоится. Я занимался своими обычными делами, изучал город и наблюдал онлайн трансляцию в Youtube.

После земского съезда я лично пригласил всех делегатов на вечернюю прогулку, которым вчера разослал информацию. Так же я пригласил Александру Поливанову и она отказалась. Моим личным героем вечера стал делегат, который согласился и не пришел: после ожидания в 50 минут я отменил встречу.


Рефлексия

Внимательный читатель сам увидит, что «первый блин комом». Я же в этом разделе оставлю свои мысли программиста.

Большинство людей недооценивают важность онлайна и ИТ-грамотности. Не понимаю, как можно быть депутатом и жить в интернете с никнеймом «whats the hell» (что в переводе означает «какого черта»). Не понимаю, как можно «ставить котиков на аватарки» и не следить за своим цифровым контентом, когда ты — официальное лицо и представляешь народ.

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


Благодарности

Благодарю организаторов съезда за то, что усердно работал над проработкой идеи и далеко продвинулся. Спасибо вам большое за то, что мы не вместе 🤗

Также благодарю всех родных и близких, кто меня поддерживал в этом деле.


Транспарентность

Этот пост будет проиндексирован поисковыми системами и со временем поднимется в поисковой выдаче. Через N лет будет интересно его перечитывать и вспоминать, как это было и что с тех пор изменилось.

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


Комментарии

Делегаты не изъявили желание оставить какой-либо комментарий, поэтому завершу свой пост видео-комментарием Екатерины Михайловны об этом событии: S04E37 Земский съезд в Великом Новгороде



Tuesday, May 11, 2021

Реализация мультисообществ

В мае 2021 года требуется реализовать возможность сосуществования нескольких сообществ на сайте, в мобильном приложении и в боте Telegram. Этот пост будет содержать план работ и результат.


Таблица сообществ

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

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


Выбор сообщества

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

Выбор пользователя сохраняется в куках или в локальном хранилище мобильного устройства. Во время второго визита пользователя открывается страница выбранного сообщества. 

Необходимо реализовать экран выбора сообществ. На сайте есть экран "Сообщества" — его необходимо доработать. В мобильном приложении необходимо реализовать новый экран.


Изменения в анонсах

У каждого анонса мероприятия появится привязка к сообществу. Необходимо обновить сущность "Анонс". При создании анонса необходимо указывать индикатор сообщества. Старые мероприятий по умолчанию отображаются в первом сообществе.


Изменения в услугах

У каждой услуги также появится привязка к сообществу. Необходимо обновить сущность "Услуга". При создании услуги необходимо указывать индикатор сообщества. Старые услуги по умолчанию отображаются в первом сообществе.


Отображение анонсов и услуг

В пути URL необходимо указывать название сообщества для правильной навигации. Продумать и описать в документации все варианты роутов (ссылок). Для старых роутов по умолчанию показывать данные первого сообщества.


Обновление закрепа

Закреп — это закрепленное сообщение в чате Telegram. Когда организатор вносит изменения на сайте, бот по необходимости обновляет в чате закрепленное сообщение.

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


Замечания

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


upd 28.08.2021

Результат

Мультисообщества реализованы. Планировалось сделать за 20 дней, сделано за 3 месяца и 20 дней. 

Далее -- новый дизайн и карта мероприятий.

 

Wednesday, April 28, 2021

Нативная интеграция (отключена)

После реализации поиска ключевых фраз настало время реализовать нативную интеграцию. Есть несколько нюансов.


Исключения

Нативную интеграцию не нужно показывать в чатах HTML Академии и GDG Kaliningrad. Так же нативную интеграцию не нужно показывать при интеграции с мобильным приложением Мафия и с персональным сайтом.

Соответсвенно во всех случаях выше отключить поиск ключевых фраз.


Первая нативная интеграция

Для таких фраз:

  • я жирная
  • я жирный
  • я толстая
  • я толстый
  • надо похудеть
  • хочу похудеть

Необходимо выдавать такую фразу ответом на сообщение:

«Приглашаем стать стройнее с проектом преображение39.рф»


Открытые вопросы

Бот обрабатывает от 50 до 100 тысяч сообщений в сутки. Для каждого сообщения происходит:

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


Upd

Нативная интеграция отключена 30 июня 2023.
30.06.2023

Thursday, April 15, 2021

Закрытие проекта hrchatv2

Введение

Ранее уже были закрыты сайт коттеджного поселка, сайт TheEliteGames, украинский цензор-бот и другие проекты. Сейчас пришло время закрыть hrchatv2.

Что предстоит сделать:

  • удалить сайт с хостинга;
  • удалить сайт из Cloudflare;
  • удалить домен;
  • архивировать исходники на github;
  • удалить функционал из телеграм-бота gdgCensorBot;
  • передать чат HR специалистам;
  • удалить ссылки на сайт из всех постов блога;
  • перенести проект в список завершенных.


Как удалить?

Прежде всего во всех постах данного блога удалены ссылки на чат и на сайт. «Битые» ссылки — это нехорошо.

Удалить сайт с Cloudflare. Удалить сайт с HTS: попросить службу поддержки удалить перенесенный домен, удалить файлы с хостинга, удалить FTP логин. Удалить документацию сайта с Google Disk. 

Удалить исходники локально. В репозитории указать информации о том, что проект закрыт и убрать ссылки. Отключить github actions и удалить из репозитория secrets. Заархивировать исходники на github.

Попросить службу поддержки active.domains удалить домен. 

Удалить функционал из телеграм-бота gdgCensorBot;


Пысы

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

Thursday, April 8, 2021

Поиск ключевых фраз

Для добавления нативной интеграции необходимо реализовать алгоритм фильтрации сообщений.

Пример фраз, которые годятся для нативной интеграции:


Поиск ключевых фраз

Требования к алгоритму:

  1. Необходимо игнорировать регистр. Фразы идентичны:
    • «я жирная»;
    • «Я жирная»;
    • «Я ЖИРНАЯ».
  2. Между ключевыми словами могут быть разные разделители и разное их количество.  Необходимо учитывать разные разделители. Пример:
    • «я жирная»;
    • «я - жирная»;
    • «я — жирная»;
    • «я      жирная».
  3. Между ключевыми словами могут быть разные усиливающие слова. Алгоритм должен это понимать:
    • «я очень жирная»
    • «я нереально жирная»
    • «я в последнее время конкретно разжирела». 
  4. Нет смысла обрабатывать сообщения, размер которых меньше пяти символов:
    • «ок»;
    • «неа»;
    • «норм».
  5. Возможна ситуация, когда ключевые слова присутствуют в сообщении, но сообщение не является целевым. Пример:
    • «я держусь, а вот подруга — жирная»;
    • «я не хочу ходить в офис, но мне очень нравится работать».
  6. В объемном тексте с большей вероятностью встретится несколько ключевых слов. Искать необходимо только первое совпадение, остальные ключевые — игнорировать. В современности люди пишут короткие сообщения, а объемный текст скорее всего является копией и не представляет интереса. Подразумевается, что сознательное игнорирование дополнительных ключевых слов не является проблемой и не ведет к потере ключевых фраз.

Исходя из пунктов выше видно, что невозможно написать идеальный алгоритм. В пунктах 3 и 5 всегда будет противоречие. 

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


Отображение результата

Вторая задача — отобразить найденное сообщение в удобном для пользователя виде. Предусмотреть минимальное количество текста.

Требования к алгоритму:

  1. Предварить каждую фразу строкой:
    • «🤖 Cовпадение:»
  2. Выделить ключевое слово жирным. Пример: 
    • «🤖 Cовпадение:
      Нам худеть надо к лету😂»
    • «🤖 Cовпадение:
      Да какая гайка, мне нужно пожрать))»
  3. Обрезать длинное сообщение. Иногда текст сообщения очень большой. Ограничить текст сообщения пятьюдесятью символами справа и слева. Пример:
    • «🤖 Cовпадение:
      ...олго молча в трубку. Потом резко выпалила.
      – Я сейчас приеду. И сбросила вызов.
      Через несколько минут, девушка уже стояла в палате и утешала...»
    • «🤖 Cовпадение:
      ...ты покорила меня своим позитивом, добротней, бескорыстной помощью и мудростью💝 спасибо тебе за тебя  😘😘😘 желаю всего прекрасного и что б все твои мечты обязательно сбывались...»
  4. Отключить предпросмотр ссылок.