Station Last update
IDEC.SHAOS.NET 13.01.2026 13:00
Таверна 11.11.2024 07:20
Ping 13.01.2026 13:00
dynamic | less 21.11.2023 22:00
ii.yester.link 28.09.2025 05:15
netsco.alwaysdata.net 13.01.2026 13:04

tgi.station


Об используемых технологиях

8 ноября 2021 г. 16:02Esenin Pavel (tgi,1)

 

Немного об используемых технологиях. Все данные, необходимые для работы, генерируются на лету. Никаких статических файлов нет. Станция работает на Django 3 + sqlite. ОС - Ubuntu 20.04 LTS (да, возможно, кто-то скажет, что это "не серверная ось" и все такое прочее - не собираюсь никому ничего доказывать). Все это хозяйство живет на VPS (4 Gb ram/60 GB hdd). На том же VPS имеются и другие проекты, но все сосуществуют мирно, да и ресурсы особо не едят.

Сообщения хранятся в базе как в кодированном виде (base64), так и открытым текстом. Сделано так для совмещения приятного с полезным: с одной стороны, станция может отдавать кодированные сообщения практически мгновенно и в любых количествах, т.к. они уже есть в готовом виде. С другой стороны, наличие тех же сообщений в открытом виде дает возможность быстрого доступа непосредственно к тексту сообщения и остальным его полям, что позволяет производить сортировку, делать различные выборки и аналитику. Конечно, можно было бы дополнительно задействовать и такие вещи как Elasticsearch, например, но такой необходимости пока не вижу. Может быть, когда количество сообщений в сети достигнет нескольких миллионов (ну вдруг), тогда может быть. Но не сейчас.

Хранение паролей организовано достаточно секьюрно - хеш + salt. Ничего не хранится в открытом виде. Но и, как следствие, восстановить забытый пароль невозможно - только задать новый. В приципе все готово для создания регистрации на станции. Сейчас можно это сделать вручную, а в будущем планируется вынести ее в веб-интерфейс. Не знаю насколько это будет востребовано, но если есть такая возможность - почему бы и не сделать.

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