Форум сайта python.su
IskatelНе, блоки разделяются по той информации, которая берётся прямо из строки поиска. Если ты знаешь, что искомая строка не длиннее 300 байт, то ты читаешь, например, по 1024 байта из файла. Когда прочитал, ищешь в этих 1024 байтах эту строку. Либо ты её находишь, либо её там нет. Если её там нет, ты должен прочитать новые 1024 байта, добавить к ним слева 299 байт из конца предыдущего блока и в получившемся блоке искать строку опять. Вот оно так и выглядит, что из файла ты читаешь по 1024 байта, а ищешь ты совсем не в этом, а в том, что подготовил. То есть вот эта череда блоков по 1024 байта переводится в череду блоков (1024, 299 + 1024, 299 + 1024, …). То есть читаешь ты одно, а ищешь ты в другом.
Вы же предлагаете пилить под каждый конкретный случай.
Отредактировано py.user.next (Дек. 20, 2016 02:28:02)
Офлайн
А если взять буфер размером в два размера искомого выражения и сдвигать наполовину, т.е. вторую половину буфера копируем в первую, и заполняем из файла?
Офлайн
PooHНе, оно, во-первых, слишком маленькое для чтения, из файла нужно читать большими кусками, так как с диска читает системный вызов, а часто его вызывать нельзя. То есть даже если ищешь 100 байт, читать надо килобайты, чтобы это было быстро и оптимально по трате ресурсов системы. А во-вторых, эта идея с двойным буфером приведёт к повторному поиску в том, в чём уже был выполнен поиск.
А если взять буфер размером в два размера искомого выражения и сдвигать наполовину
Отредактировано py.user.next (Дек. 20, 2016 15:02:18)
Офлайн
py.user.next
И вот ты применишь регулярку “.*” и что она найдёт?
py.user.next
А если тебе 100 надо или 500? Вот твоя программа становится неприменима.
py.user.next
Но ты же говоришь “я ищу по регулярке”. Если ты ищешь по регулярке, то вот эта длина 300 задаётся прямо в регулярке через фигурные скобки. И эта длина может быть задана любой, а может быть не задана вообще. Вот этих вещей ты не видишь. То есть ты не понимаешь, что регулярка не может быть ограничена. Регулярка - это регулярка, они точно определены. А вот это типа “да у меня будет ограниченная регулярка” - это такая туфта. Ты говоришь “а я сделаю 300”, но это у тебя от незнания, потому что сегодня ты ищёшь 300, а завтра тебе же надо будет искать 500 и ты что будешь делать? Правильно, ты будешь писать новую программу. А почему? А потому что вот эту программу ты хреново написал. Это ограничение в 300 байт нафиг не нужно изначально. Я тебе даже больше скажу, сегодня тебе надо 300, а завтра надо будет 100 - и ты вот эту программу, которая даже больше перерабатывать может, не сможешь применить под эти изменившиеся условия, потому что зашил туда эту специфичную длину 300.
Отредактировано Iskatel (Дек. 20, 2016 20:45:42)
Офлайн
IskatelНе дебил, а просто не знаешь - это две большие разницы. Например, вот ты спрашиваешь про большие файлы в 32-битной системе. Тебе говорят “слушай, дружок, а какое отношение битность системы имеет к размеру файла?”, а ты просто катаешь вату и думаешь “а что же я спросил, действительно?”. Вот ты говоришь “я ищу по регулярке”, тебя спрашивают “а какое отношение количество байт имеет к регулярке? они же бесконечные” и тут ты опять вату катаешь, жуёшь что-то невнятное. То есть выходит, что ты не знаешь, что такое 32-битная система, но говоришь, что это имеет значение, ты не знаешь, что такое регулярное выражение и говоришь нам, что оно у тебя ограничено. То есть у тебя какой-то свой мирок сформировался и ты думаешь, что это реальная теория. Так вот, открой соотвествующие документы, принятые во всём мире, и прочитай их, чтобы не нести всякую херню, в которой ты ничего не смыслишь.
Я же не дибил, я применяю регулярку, которая ищет то, что мне нужно. А нужное не больше 300 байт.
IskatelОчень сомнительно, что ты сможешь написать это всё с переменной, если даже без переменной не можешь написать, иначе о чём мы тут уже третью страницу разговариваем, если ты можешь взять и написать, что задумал? Наверное, мы тут и разговариваем, потому что ты нихрена написать не можешь.
Это еще почему? Переменную over в исходном коде подправить и норм.
IskatelНет, дебилизм - это болезнь, дебил - не тот, кто не знает, а тот, кто не знает и узнать не может просто умственно.
Вам не кажется, что уже как второй раз ВЫ переходите на личности, и считаете меня дибилом?
IskatelТвоя давала, да я не брал.
Жена не дала?… Снова?
IskatelТебе говорят, что как программист ты - ноль. У тебя просто стандартное сисадминское когнитивное искажение “если я хороший сисадмин, то и программист я неплохой уж точно”. Это очень частое явление, когда сисадмин приходит и понты кидает, а написать ничего не может, потому что для этого надо знать в программировании. Программирование и сисадминство - это две большие области, которые никак не пересекаются. Я вот Cisco не знаю и знать не хочу, это не моя тема, а кто-то там получает сертификаты (платит за них), потом меряется ими и их на работу берут в крупные компании на тысячи и десятки тысяч компов. Но для нас они лохи, потому что их предел - программа на сто-тысячу строк, написанная через жопу.
Не ожидал такого отношения на форуме, где люди обычно помогают друг другу, тем боле от человека, обвешенного фентифлюшками типа рейтинга и т.п.
Отредактировано py.user.next (Дек. 21, 2016 02:14:53)
Офлайн