Я же правильно понимаю, что клиент “Телега” нарушал законодательство, в том числе обходил блокировки Telegram со стороны РКН? Когда используешь обычный клиент Telegram, то трафик идёт через РКН, который его блокирует, дальше на сервера Telegram. А когда используешь клиент “Телеги”, то трафик идёт на сервера “Телеги”, а дальше в обход РКН до серверов Telegram?
С историей будут проблемы, хранить на мобильном клиенте не получится, она слишком быстро (2-3 года активной переписки) займёт всё свободное место. Нет варианта часть истории скидывать в архив?
Если вы используете тонкий сервер, который можно просто назвать relay-сервером, то как реализована подгрузка медиа-контента, чтобы ip-адреса не утекали? То есть, обычно сервер идёт за картинкой, скачивает и хранит у себя. Клиент никуда кроме сервера не ходит, поэтому он тянет картинку только со своего сервера. Не будет же клиент идти в обход сервера напрямую по адресу картинки, так как это утечка ip-адреса пользователя?
Да и relay-сервера видят ip-адреса пользователей. Можно выбрать relay-сервер, к которому подключаться, чтобы цепляться только к доверенным серверам?
Как сервера друг друга находят? Как работает маршрутизация, если Alice подключилась к relay1, а Bob к relay2, и Alice хочет отправить сообщение Bob-у?
Если злоумышленник скомпрометировал клиентскую машину, то ни Kerberos, ни OIDC, ни SAML2.0 не помогут, они не предусматривают защиту от подобного вида атак. Тем более наличие прав администратора. Можно залезть в кэш браузера пользователя и оттуда вытащить все токены.
TGT живёт очень долго, service ticket имеют сильно меньший срок жизни, есть возможность повесить 2FA на выдачу service ticket, чтобы пользователь во-первых видел, куда идёт доступ, а во-вторых имел возможность подтвердить или отклонить доступ.
В таком случае получим, что даже при компрометации TGT злоумышленник не сможет получить доступ к сервисам, пользователь будет видеть странные запросы на доступ, куда не заходит, и отклонять их.
приводит к ошибке на старте gradle: Cannot set the value of extension 'spotbugs' property 'reportLevel' of type com.github.spotbugs.snom.Confidence using an instance of type java.lang.Class
Ловим NPE в непредсказуемых местах из-за оператора !!, который любят ставить kotlin-разработчики. Или из-за библиотек на java, которые вернули внезапно null. А как вы выполняете проверку на null при переходе от nullable к nonnull?
Поддержка IDE?
И ооооооочень долгая компиляция kotlin-программы. В итоге переключение между ветками превращается в ад, когда успеваешь сходить заварить, чай, подождать когда он остынет, выпить, а компиляция ещё идёт. Именно поэтому так носятся с новым компилятором K2, одной из фич которой является более быстрая компиляция.
Виртуализация реализуется на нескольких уровнях. И каждый уровень имеет своё применение.
Виртуализация на уровне ОС - для ЦОД-ов и для поддержки других архитектур (например, надо запустить windows приложение на linux серверах и т. д.).
Виртуализация в рамках одной ОС (известна как контейнеризация) - для запуска отдельных сервисов. Это ещё на OpenVMS на железках DEC VAX делали. Потом появились Solaris Zones, FreeBSD Jail, на linux-ах это развилось в LXC, Docker, OCI/runC/containerd. И даже на linux-ах ушли от vendor lockin-а (kubernetes уже давно может запускать всё через CRI-O, где нет никакого docker-а).
Виртуализация на уровне отдельного приложение - тут flatpak, snap, bubblewrap, Citrix XenApp, которые позволяют запустить десктопное приложение в изолированной песочнице.
Виртуализация на уровне одного приложения - когда изоляция выполняется в рамках одного приложения для различных модулей. Из ярких представителей - это java application servers (WebSphere, WebLogic, Wildfly и другие).
Скорее наоборот, судя по остальным статьям, автор не один десяток лет жил в экосистеме IBM, поэтому все рассматривает исключтельно в сфере "В IBM сделали всё хорошо, а все остальные ещё доросли". Отсюда статьи подобного рода.
Я же правильно понимаю, что клиент “Телега” нарушал законодательство, в том числе обходил блокировки Telegram со стороны РКН? Когда используешь обычный клиент Telegram, то трафик идёт через РКН, который его блокирует, дальше на сервера Telegram. А когда используешь клиент “Телеги”, то трафик идёт на сервера “Телеги”, а дальше в обход РКН до серверов Telegram?
Battlefield тоже живет на амазоновских серверах.
Также нет доступа к серверам следующих игр:
Elite: Dangerous
Warhammer40k: DarkTide
… и ещё куча других игр
Но на них всем плевать.
Ждём плашку от НЛО про содержимое статьи, которое может вызывать противоречивые чувства.
Два вопроса:
зачем прикладывать код в виде картинок?
что случилось с картинками, как будто их пожали в 20 шакалов?
С историей будут проблемы, хранить на мобильном клиенте не получится, она слишком быстро (2-3 года активной переписки) займёт всё свободное место. Нет варианта часть истории скидывать в архив?
Если вы используете тонкий сервер, который можно просто назвать relay-сервером, то как реализована подгрузка медиа-контента, чтобы ip-адреса не утекали? То есть, обычно сервер идёт за картинкой, скачивает и хранит у себя. Клиент никуда кроме сервера не ходит, поэтому он тянет картинку только со своего сервера. Не будет же клиент идти в обход сервера напрямую по адресу картинки, так как это утечка ip-адреса пользователя?
Да и relay-сервера видят ip-адреса пользователей. Можно выбрать relay-сервер, к которому подключаться, чтобы цепляться только к доверенным серверам?
Как сервера друг друга находят? Как работает маршрутизация, если Alice подключилась к relay1, а Bob к relay2, и Alice хочет отправить сообщение Bob-у?
То есть переустановка - это потеря аккаунта, доступ к нему больше не вернуть, только создавать новый?
Как искать других пользователей?
И утеря аккаунта - утеря истории?
Как подтверждать пользователей, то есть подтвердить, что за данным UIN-ов нужный человек (например, чтобы его добавить в закрытую группу)?
Как бороться с ботами и спамом, когда в открытую группу заходит кто угодно и может постить что угодно (включая запрещённую информацию)?
Если нужна максимальная анонимность и полноценный peer-to-peer, то смотрели в сторону Tox и Briar?
Почему решили делать своё решение? И в чём ваш протокол лучше чем matrix и xmpp?
И вопросы:
где s2s спецификация?
не увидел поддержки нескольких устройств, она есть?
почему сделали свою аутентификацию, а не взяли OIDC?
не увидел ролевой модели в чатах (админ/модератор/пользователь), она присутствует?
почему в спеке поддержка только одного эфемерного ключа, а не нескольких?
Если злоумышленник скомпрометировал клиентскую машину, то ни Kerberos, ни OIDC, ни SAML2.0 не помогут, они не предусматривают защиту от подобного вида атак. Тем более наличие прав администратора. Можно залезть в кэш браузера пользователя и оттуда вытащить все токены.
TGT живёт очень долго, service ticket имеют сильно меньший срок жизни, есть возможность повесить 2FA на выдачу service ticket, чтобы пользователь во-первых видел, куда идёт доступ, а во-вторых имел возможность подтвердить или отклонить доступ.
В таком случае получим, что даже при компрометации TGT злоумышленник не сможет получить доступ к сервисам, пользователь будет видеть странные запросы на доступ, куда не заходит, и отклонять их.
В Kotlin data-классы:
В Java record-классы:
Совместимость ломается в непредсказуемых местах. Пример: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/972 - в плагине spotbugs есть два enum-а Effort и Confidence. Они лежат рядом, но после переписывания плагина на kotlin один enum недоступен, то есть вот такой конфиг:
приводит к ошибке на старте gradle:
Cannot set the value of extension 'spotbugs' property 'reportLevel' of type com.github.spotbugs.snom.Confidence using an instance of type java.lang.ClassПриходится изгаляться через костыли:
null-safety?
Ловим NPE в непредсказуемых местах из-за оператора
!!, который любят ставить kotlin-разработчики. Или из-за библиотек на java, которые вернули внезапно null. А как вы выполняете проверку на null при переходе от nullable к nonnull?Поддержка IDE?
И ооооооочень долгая компиляция kotlin-программы. В итоге переключение между ветками превращается в ад, когда успеваешь сходить заварить, чай, подождать когда он остынет, выпить, а компиляция ещё идёт. Именно поэтому так носятся с новым компилятором K2, одной из фич которой является более быстрая компиляция.
А на Хабре есть правило, чтобы перед публикацией статьи, автор должен прочитать минимум один раз то, что сгенерировала нейронка?
Уже очень давно сделали https://www.oversec.io/, который позволяет пересылать текст с шифрованием eye-to-eye.
Там своя закрытая лицензия https://gitriver.ru/license
Хабр утонул в низкокачественных нейрогаллюцинациях, которые авторы даже не читают перед публикацией.
Спасибо, это я знаю. Вопрос к автору статьи, зачем он предлагает в обучающем материале сделать Entity с помощью data-класса?
Расскажите, пожалуйста, почему не стоит Entity делать как data-классы?
Camunda:
Использует BPMN.
Сделана в классической клиент-серверной модели, где клиенты дёргают несколько серверов, выполняющих бизнес-процессы.
Ориентирована больше на условно не-IT специалистов, можно bpmn посмотреть в UI, ручками накидать процесс. Хотя кто этим занимается?
Temporal:
Не использует BPMN (никакого xml).
Построена на базе event-sourcing и горизонтального масштабирования (worker-ы можно добавлять в неограниченных количествах)
Больше ориентирована на разработчиков (вот вам grpc api, вот вам исходники - развлекайтесь), тут в основе код, а не диаграмма bpmn.
Виртуализация реализуется на нескольких уровнях. И каждый уровень имеет своё применение.
Виртуализация на уровне ОС - для ЦОД-ов и для поддержки других архитектур (например, надо запустить windows приложение на linux серверах и т. д.).
Виртуализация в рамках одной ОС (известна как контейнеризация) - для запуска отдельных сервисов. Это ещё на OpenVMS на железках DEC VAX делали. Потом появились Solaris Zones, FreeBSD Jail, на linux-ах это развилось в LXC, Docker, OCI/runC/containerd. И даже на linux-ах ушли от vendor lockin-а (kubernetes уже давно может запускать всё через CRI-O, где нет никакого docker-а).
Виртуализация на уровне отдельного приложение - тут flatpak, snap, bubblewrap, Citrix XenApp, которые позволяют запустить десктопное приложение в изолированной песочнице.
Виртуализация на уровне одного приложения - когда изоляция выполняется в рамках одного приложения для различных модулей. Из ярких представителей - это java application servers (WebSphere, WebLogic, Wildfly и другие).
Скорее наоборот, судя по остальным статьям, автор не один десяток лет жил в экосистеме IBM, поэтому все рассматривает исключтельно в сфере "В IBM сделали всё хорошо, а все остальные ещё доросли". Отсюда статьи подобного рода.