Исходник Софт Mordor RP Bot

Статус
В этой теме нельзя размещать новые ответы.

#Rin

Известный
Автор темы
Всефорумный модератор
1,214
1,043
Бот для получения IP адреса и информации об устройстве игрока по его нику на мобильном SA-MP сервере Mordor RP. База содержит информацию о 379 453 никнеймах и актуальна на 28.11.2020.
Использование: Прислать никнейм игрока. В случае если записей несколько: никнейм игрока и номер записи.
Ссылка: t.me/MordorRpBot
Апрель 6-го, 2023: Бот проработал более 2-ух лет и может быть остановлен в любое время (данные все равно довольно старые), юзернейм могу отдать владельцам сервера (желательно с копеечкой).

1607400620147.png

За ссылку на базу спасибо: @Aniki. За относительно недавнюю веселуху на сервере еще и @randazzo, @memir.

Изначально логи хранились в текстовых файлах в крайне неудобном формате и занимали физический около 9,78 ГБ, а быстрый поиск по ним было не реализовать.
Было принято решение написать свою быструю на поиск и чтение базу данных специально для этих логов. После преобразования база стала весить всего лишь 1,34 ГБ.
В качестве языка программирования использовался Golang.

# Проблемы:
1. Логи занимали слишком много места из-за кучи маленьких файлов и их не бинарной природы.
2. Поиск по ним происходил очень долго, если его вообще ждать.

# Структура нашей базы:
first_index.bin: Содержит никнейм игрока и смещение до second_index.bin. Благодаря одинаковому размеру всех элементов, можно быстро переходить к любому элементу. А из-за того что ники отсортированы, становится возможным использовать бинарный поиск позволяющий искать ник с минимальным количеством итераций.

second_index.bin: Так как один никнейм может содержать несколько данных, данный файл содержит количество этих данных и смещений до них в data.bin, позволяет быстро найти все связанные с ником данные.

data.bin: Содержит сами данные.

Больше подробностей искать в исходном коде.

# Преобразование логов в нашу базу:
Преобразование происходило в четыре этапа:
1. Парсинг логов из папок/файлов и их запись как есть в базу. На данный момент база не позволяет производить бинарный поиск и нахождение всех данных связанных с ником.
2. Оптимизация первого и второго индекса. Размер базы будет немного уменьшен.
3. Сортировка никнеймов в первом индексе. Уже можно применить быстрый поиск.
4. Сортировка второго индекса. Данные отсортированы по дате/времени.

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

Исходный код вместе с базой данных: *ТыК*

GitHub: https://github.com/RinatNamazov/MordorLogs
 
Последнее редактирование:

Kenzooo?

Известный
45
16
Заходить и издеваться над школьниками говоря их телефон и местожительства очень прикольно)))) 👍 👍
 

winten

Потрачен
409
184
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если чел заходил только с компа обходом, то его там нет(
 

Kayo

Потрачен
126
9
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я мб скоро залью, только там проблема, кикает при спавне. Обойти это можно нопнув спавн, перебираться пикапы до тех пор пока ты не окажешься в инте, после выходишь, но у тебя скин сиджея, сильно палится, поэтому попробую пофиксить
Пробывал, не мог найти инту с пикапом
 
Статус
В этой теме нельзя размещать новые ответы.