• Способы реализации p2p обмена сообщениями. Каким образом blockchain может быть использован в создании мессенджера?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Совсем отказаться от серверов или чего то что будет говорить где какой клиент крайне сложно. Мы живем в мире где куча НАТов и серых ip адресов с динамикой.
    По факту Вам надо решить следующие проблемы:
    1) Реализовать "пробивалку" NATов. Способов много и нужно учитывать максимальное их количество. Это и UPnP, и возможность пробития порта через соседа который это может сделать и соединение с другим клиентом и уже через него выходить в общую сеть обмена.
    2) Нужен некий механизм доверия между клиентами т.к. никакого центрального сервера авторизации не будет. Тут способов тоже много и чаще всего применяется шифрование по некоторому ключу который генерируется у каждого клиента к каждому клиенту, после чего хранится локально. Даже если некий клиент прикинется другим клиентом с его ключем то ничего не выйдет. Сообщения дойдут но прочитать их он уже не сможет без индивидуальных ключей к каждому клиенту которые злоумышленник узнать уже не сможет никак.
    3) Понадобится некая реализация системы для сообщения IP адреса и порта клиентов друг другу. Тут уже варианты абсолютно разные со своими плюсами и минусами. Самый простой это некоторый сервер который только знает ip:port:идентификатор_клиента, с ним все и работают(естественно ничего более этот сервер не делает и сообщения и данные ходят между клиентами напрямую).
    Другой вариант это все тот же сервер который дает и знает ip:port:идентификатор_клиента но отличительно то что он динамический и создается у лучшего клиента(лучший выбирается по неким критериям типа хороший инет, выделенный ip, отсутсвие ната и т.д.). Т.е. сервер все также остался но переехал к самим клиентам и мало того их стало много. Этот способ и есть DHT и из него вырастает следующая проблема.
    4) Т.к. теперь у тебя полностью децентрализованная сеть на основе DHT или своего велосипеда который тоже повторяет DHT выросла проблема в том что клиенты могут оказаться в разных сетях с этими DHT и вообще не знать друг о друге. Тут понадобится реализация некоего механизма что бы DHT сервера искали и знали друг о друге. Как это будет реализованно тоже огромный геморойный вопрос, можно сделать еще один слой в виде DHT над DHT, можно сделать некоторые центральные сервера, можно пойти путем жесткого бродкаста между DHT узлами и т.д.

    Полноценно настоящая децентрализованная сеть возможно только в мире где у каждой железки в сети свой уникальный статичный IP и полностью отсутсвуют фаирволы а сама сеть построена без шлюзов и без деления на подсети. Но как понятно такого никогда не было и не будет но возможно внутри маленькой локальной сети.
    Чуть не забыл, такой p2p чат уже существует в виде Tox. Отдельно существуют подобные чаты в виде плагинов в битторрент клиенте Vuze-.
    Ответ написан
    3 комментария
  • Как наименее велосипедно реализовать "систему клиентских хуков" в yii2?

    qonand
    @qonand
    Software Engineer
    реализуйте на беке интерпретатор для определения шорткодов и замены их на необходимые Вам данные
    Ответ написан
    2 комментария
  • Можно ли сделать, чтобы position у div'а был fixed по Y, но absolute по X?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Был уже такой вопрос.
    Один из вариантов:
    codepen.io/iiil/pen/wHgfG
    Ответ написан
    Комментировать
  • Организация массовой рассылки — Linux + Exim/Postfix + Веб интерфейс

    @Andrey_Zentavr
    1) Честно говоря опенсорсных менеджеров списков рассылки вменяемых я так и не нашел.
    Из интересных платных — есть InterSpire Email Marketing Software (http://www.interspire.com/emailmarketer/ ) или ActiveCampaign Email Marketing (http://www.activecampaign.com/onsite/). Лично мне второе нравится больше.

    2) Вести рассылку поочерёдно — плохая идея, потому как IP время от времени набирает репутацию. Чем больше репутация — тем больше входящих писем/сек приймет удалённый сервер. Если шлёте спам (или купили/украли/етц списки — то в спам попадёте рано или поздно — как правило сразу).

    3) Для массовых рассылок все ваши IP долны имень обратную DNS запись (PTR Record, Backresolve)
    4) Все ваши IP должны быть зарегистрированы через Feedback Loop с массовыми провайдерами эл. почты
    5) Вы должны использовать SPF/SenderID записи для Вашего домена и не менять Ваш домен
    6) У вас должен быть всегда читаемым Ваш адрес abuse@ваш_домен.ру
    7) Вы должны использовать DKIM/Domainkeys цифровые подписи для всех Ваших исходящих писем
    8)… и желательно DMARC для мониторинга всего этого
    9) Вы должны предоставлять пользователю возможность отписаться от Ваших рассылок в 1 клик (как правило, используется List-Unsubscribe: заголовок с mailto:// или http:// — https:// ссылками). Кликнул на ссылку — сражу же без вопросов отписался.
    10) У вас должны быть прозрачная и доступная Privacy Policy
    11) Для массовых рассылок вы не должны использовать анонимайзеры в Whois для Вашего домена. т.е. любой, сделав whois ваш_домен.ру должен увидеть актуальный адрес, имя влядельца, телефон и емейл владельца домена. Если такого нет — репутация у вас будет не очень и залетите в спам

    … ну это так — краткий список.

    P.S.: Могу помочь за определённое вознаграждение настроить систему.
    Ответ написан
    Комментировать