Pull to refresh
19

Студент 1 курса

7,9
Rating
2
Subscribers
Habr CareerHabr Career
Send message

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

На бекенде всё тоже не очень, потыкал пару запросов, смог получить список всех сообщений и пользователей. К счастью, INSERT и UPDATE не работают.

Плюс в некоторых местах возможны инъекции JS-кода

Скрытый текст

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

upd: также логика проверки "можно ли зарегать email" выполняется тоже на клиенте ._.

"без бэкенда на Node.js"

Но используется Supabase (готовая авторизация, БД, реалтайм на сокетах, хранилище и пр). Автор статьи, походу, просто обклеил это всё фронтендом, понастраивал политики в базе и выдал продукт.

Если Supabase уйдёт из РФ, уберёт self-hosted или что-то ещё, то вся "российская соцсеть" превратится в тыкву.

"одной из самых сложных задач для программиста: realtime‑функционал, авторизация"

Опять же, всё это реализовано в Supabase. А realtime там реализуется в пару строк, насколько я знаю.

"личные сообщения с E2E‑шифрованием (ECDH P‑256 + AES‑GCM);"

E2E в браузере небезопасен, если сервер скомпрометируют, то можно подменить JS-файлик так, чтобы он отправил приватные ключи куда надо

данные хранятся только на российской инфраструктуре;

Но используются Cloudflare Workers

Без Next.js и бэкенда на Node.js: вся бизнес-логика реализована в PostgreSQL через RPC-функции и RLS-политики.

Засовывать всю бизнес-логику соцсети (СОЦСЕТИ, напоминаю!) в процедуры pgSQL - выстрел себе в ногу. Непонятно, как это тестировать и версионировать. Ну, и масштабировать. Если каким-то чудом наберётся тысяч 5 активных юзеров, то это всё ляжет, а поднять второй инстанс для балансировки будет стоить уже не 999 рублей.

Миграция 40 (ban_rls_server_side). Раньше проверка бана выполнялась на фронтенде.

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

Нейросеть для определения неприемлемого контента работает прямо в браузере пользователя через TensorFlow.js + NSFWJS. Картинка проверяется до загрузки на сервер — так сервер вообще не получает NSFW‑контент. [...] минимизирует юридические риски.

То же самое. Иллюзия безопасности. Снова нарушется базовое правило, что клиенту доверять нельзя. За раз можно написать скриптик, который задолбит этот Supabase (минуя браузер и волшебный Tensorflow.js) и зальёт гигибайты порнухи, расчленёнки и прочего. Юридические риски минимизируются прям конкретно.

Приватный ключ шифруется паролем пользователя через PBKDF2 → AES‑GCM и хранится в БД в зашифрованном виде. Так ключ доступен с любого устройства, но сервер его не знает.

То есть сервер сам раздаёт публичные ключи? Сервер тогда может провести MitM, подсунет юзеру свой чужой ключ. Без верификации ключа вне сервиса (как в сигнале, вроде), это "шифрование" от владельца сервера или товарища майора не спасёт.

EXIF-стриппинг при загрузке любого фото

Парадоск. Если сообщения зашифрованы E2E, то как сервер очищает EXIF-данные? То есть сервер либо видит фото, либо это происходит на клиенте, но в чём тогда смысл очистки, если всё равно можно будет отправить данные, если захочется?

Также зашёл на сайт, немного удивился. У соцсети только 99 юзеров, а уже прикрутили онлайн-кассу, тарифы (150 руб/мес, 1000 руб/год), реферальную систему и split-cost подписки.

Агора — открытая российская социальная сеть для общения, обмена идеями и создания сообществ

А где ссылка на исходный код, если открытая? Или что тогда подразумевается под "открытая", если не Open Source?

А ещё заметил, что в комментах куча хвалебных од от свежих аккаунтов

Сейчас 2026 гол, а мы до сих пор восхищаемся кодом из 1999-го. Собственно, и правильно делаем. Код сейчас пишут быстро, а не эффективно, а там где Сойер подбирал размер переменной в один байт, сейчас будут тащить ещё один фреймворк, чтобы отрисовать кнопочку

Каждый день один закон лучшее другого.

Когда уже в открытую скажут, что лоббируют интересы частных контор?

Странно. Значит остаётся либо второй телефон, либо кастомная прошивка типа GrapheneOS

Или использовать Shelter. Я недавно проверил, приложения в другом профиле не видят интерфейса tun0, у них прямой доступ

Это требует C++26, а мой проект вполне работает на C++ 20 (ну, если не обращать внимания на std::expected из C++23)

Предполагаете, что и на VPS ограничат международный трафик? Это ж ещё бредовее. Хотя учитывая тенденции, думаю, это вопрос времени.

Тогда уже помогут только сети типа Иггдрасиля и I2P :(

С 15 ГБ международного трафика это самое бредовое. И это легко обойти, просто засунут весь такой трафик в ВПН внутри страны ._.

Проблема не в самом ИИ, а в том, что за статьёй по факту ничего не стоит. Вместо того, чтобы просить нейронку "напиши статью, вот код", можно было написать личный опыт при разработке, аля на какие грабли наступил. Я не проф писатель статей, но именно это я примерно и ожидал, когда увидел статью в ленте, как читатель.

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

У тебя крутой возраст и проект для старта в C++, но не стоит это тратить на какой-то промпт-инжиниринг для Хабра

Скрытый текст

Я думал, что у меня шиза, но чекеры типа gptzero и gigacheck действительно показывают, что писал ИИ.

должна одинаково хорошо чувствовать себя в разных окружениях: от KDE и GNOME до Windows

В коде есть GnomeSetter и KdeSetter, упоминается несуществующий LinuxFallbackSetter. Поддержки Windows нет.

WallpaperFactory::create
/* soon

	#ifdef _WIN32
		return std::make_unique<WindowsSetter>();	
	#elif defined(__APPLE__)		
		return std::make_unique<MacosSetter>();
*/

	#ifdef RWAL_USE_KDE
        return std::make_unique<KdeSetter>();
    #elif defined(RWAL_USE_GNOME)
        return std::make_unique<GnomeSetter>();
    #elif defined(RWAL_USE_FALLBACK)
        return std::make_unique<LinuxFallbackSetter>();
    #else
        return nullptr; 
    #endif

Изначально я пробовал использовать Docker для изоляции окружения, но для системной утилиты, которой нужен доступ к D-Bus хоста, это создавало лишние накладные расходы. В итоге я перешел на «чистый» CMake.

Как связаны Docker и CMake?

И статья выглядит очень похожей на ИИ-генерацию, учитвая, что био профиля, README (и прочие .md файлы в репозитории) явно сгенерированы нейронкой

Dart вполне себе компилируется в машинный код

Я плохо понял вопрос, но постараюсь объяснить.

Компилятор видит код скрипта во время компиляции, затем через constexpr вычисления происходит лексический анализ (текст проверяется на корректность превращается в токены), затем парсинг с синтаксическим анализом (поток токенов превращается в дерево), затем это дерево обходится, генерируя байт-код.

Если в скрипте есть синтаксическая ошибка или несовпадение типов, основной C++ проект просто не скомпилируется.

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

Виртуальная машина выполняется уже только в runtime. Но думаю, что можно её реализовать и в compile time

Если честно, я не понимаю, почему modern C++ это минус. И почему следует писать на старых стандартах.

Вся идея статьи как раз в перекладывании компиляции на этап компиляции (бадум-тс!)

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

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

Думаю, что на других языках делать это было бы намного приятнее, но у меня был интерес "раздвинуть границы" плюсов =D

1

Information

Rating
896-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity