Проверить существование в ресурсе, удаление по значению
-
1.Суть - блок, с помощью которого можно проверить, есть ли заданная строка в ресурсе или нет.
Зачем - очень удобно будет использоваться для блеклистов.Сейчас что бы сделать такое, нужно перед первой проверкой загнать ресурс в список и сделать проверку на существования. При больших блеклистах и большому количеству потоков это сильно нагружает ОЗУ.
Хотелось бы иметь функцию, которая бы проверяла без перегона в список.2.Добавить возможность удалять ресурс заданному значению, а не просто текущий
-
брать из ресурса с удаление, если удалять не надо дописывать в ресурс.
-
@ruzne said in Проверить существование в ресурсе, удаление по значению:
если удалять не надо дописывать в ресурс
... и брать по второму кругу.
-
Предлагал уже такую идею много умных людей нашлись :D зачем такое предлагать ни кому не нужно можно в список записать или использовать базу и т.д.
-
@GamiD
Базу из за одного блеклиста прикручивать - бред.
В список - затратно по оперативе
-
@DrPrime Я тоже самое говорил очень удобно было бы если сделать проверку на существование в ресурсе или извлечь все подходящие данные по регулярке из ресурса
-
@DrPrime said in Проверить существование в ресурсе, удаление по значению:
@GamiD
Базу из за одного блеклиста прикручивать - бред.а что бы и не базу, я честно смотрел видео и эти от некоторых пользователей и от разработчиков, так прямо такой пример с базой данных и как их там группами был.
@Antonio said in Проверить существование в ресурсе, удаление по значению:
... и брать по второму кругу.
через промежуточный ресурс или список, все быстрее.
@GamiD said in Проверить существование в ресурсе, удаление по значению:
@DrPrime Я тоже самое говорил очень удобно было бы если сделать проверку на существование в ресурсе или извлечь все подходящие данные по регулярке из ресурса
а будет ли быстрее в итоге чем через список? всм, чтобы проверить есть ли елемент в ресурсе/списке его(ресурс/список) нужно полностью читать хранить. и регулярка - строка, не строка - не регулярка.
-
@ruzne так он уже храниться в списке, просто ты его не видишь
-
@DrPrime э, тоесть если я имею ресурс он же файл, использую ресурс, то весь файл в списке? вот это поворот. а ресурс база данных тоже список?
-
@ruzne да
-
-
@DrPrime, не, ресур - это не скрытый список точно. @ruzne прав, там скорее построчная работа с файлом. В оперативку массив не грузится. Я так понимаю, что прога Penguin для работы с ключевыми словами также работает. Т.е. если у тебя в ресурсе большой файл с кучей строк, то это дело будет довольно долго обрабатываться в любом случае. И без многопотока, видимо.
-
@Antonio не я то так понял что все так может и оказаться, ведь нужно както хранить информацию о том какие строки в файле использованы, допустим если с файла берется каждая строка по одному разу, ну ладно если по проядку, можно смещение запоминать и этого достаточно будет, а если поставить мешать строки? ну всм, еще раз, как знать какие строки уже были использованы а какие нет?
-
@ruzne, можно хранить список с номерами использованных строк.
-
@Antonio еще пофантазируем, может массив обектов
{ Смещение от начала файла: Длинна строки: Колличество использований: чето еще: }
-
@ruzne @Antonio
Файл читается полностью при старте и хранится в памяти.
Могу предположить что все хранится одним списком, а так же для каждого хранится количество удач и неудач, а так же данные, сколько потоков используют конкретную строку
-
@DrPrime, ты пробовал в ресурс положить файл, который больше, чем у тебя оперативки?
-
@Antonio
Да. Бас вылетает.
Проведите експеримент
Создайте русурс, с галочкой чтение.
Включите запись скрипта.
Посмотрите сколько оперативы занимает бас и воркер
Потом в ресурсе снимиье галочку чтение, и поставьте галочку запись.
Повторите замеры
-
@DrPrime да я действительно это и получил попарсив файл на 30+ гигов, только, на сколько я увидел файл грузится не весь сразу а последовательно, начало фала у меня удачно распарсено, позже вместо результатов идут пустые строки и так до падения
perl рулит, 8 строк крайне тупого кода, грызут 30 Гигобайт и не чирикают.
-
@DrPrime Улучшено старое апи для работы с ресурсами.
RMap("ИМЯ РЕСУРСА") возвращает объект, который имеет несколько полезных методов://Возвращает количество элементов в ресурсе. length()
//Получает элемент по индексу. at(index)
//Изменяет элемент ресурса с заданным индексом. set(index, value)
//Поиск элемента, возвращает найденный индекс или -1. indexOf(value)
//Удалить элемент по индексу. remove(index)
//Добавить новый элемент в ресурс. insert(value)
//Синхронизировать ресурс, для файла - поместить все элементы ресурса в файл. sync()
//Получить несколько разных случайных элемента из ресурса. Работает очень быстро. random(size)
//Вернуть список, который содержит все элементы из ресурса. toList()
//Подгрузить ресурс из файла. reload()
Простой пример использования, вывести все элементы ресурса:
var lines = RMap("lines") for(var i = 0;i<lines.length();i++) log(lines.at(i))
Проверить, существует ли строка в ресурсе:
var index = lines.indexOf("account1") if(index >= 0) log("Строка существует") else log("Строка не существует")
Удалить элемент ресурса по значению
var index = lines.indexOf("account1") lines.remove(index)
Удалить элемент ресурса по значению и записать изменения в файл.
var index = lines.indexOf("account1") lines.remove(index) lines.sync()
Новое апи будет доступно в следующем билде.
Модуль ресурсы тоже будет обновлен, но вместе с интерактивной документацией.
-
билд вышел ?