[SOLVED] Поместить рандом файл в переменную

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
запускаете в PM, ZP или в диспетчере задач?
 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Ошибка случается на предыдущем шаге, когда вы переопределяете spisok2 (пытаетесь заново привязать список к файлу). В этом месте просто мозгодробящая логика проекта. Вы ожидаете что после перепривязки spisok2 будет ссылаться на любой другой список, но не на него. А когда рандом выбирает в предыдущем блоке именно строку со ссылкой на физический файл spisok2.txt тут же случается краш. В URL переменной в этот момент находится значение и программа пытается обратиться по недопустимому адресу, например {-Project.Directory-}yandex.ru/Spisok2.txt


Ещё возможен краш по следующему сценарию (прямо со старта):
1. берёте строку из links.txt
2. строку в var links
3. переходим в созданной вкладке по url = var links
4. берём url из вкладки (зачем? почему сразу не обратиться к переменной?)
5. парсим url регуляркой, результат в var url
вот тут возможен результат, когда по маске регулярки не будет вообще никакого результата, и появляется вероятность воспроизведения бага:
6. получаем список файлов, ищем в поддиректориях в т.ч., а т.к. var url на этом шаге у нас пустая, то поиск будет в самой папке проекта, а там у нас лежит в том числе "test.xmlz"
7. полученный список файлов кладём в spisok1.txt
8. берём строку из spisok1.txt и если рандом благоволит, то выпадает \\папка_проекта\test.xmlz, который здесь никак не ждёшь, ну и дальше понеслась.
 
  • Спасибо
Реакции: Асталис
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Очень развернуто, напишу что да почему:
Сразу обратится к переменной нельзя потому что мне нужна регулярка которая четко определяет какой фрагмент ссылки будем брать. В финальной стадии проекта будет свыше 300 сайтов, эта регулярка задает в процессе к какому файлу (название домена строго) ей обратится, и test.xml ну ни как не будет выбран никаким рандомом.

Получается так:

1 берется домен из линкс
2 кладем в вар линкс
3 "Взять URL" срабатывает регулярка для этого домена и передается в переменную "URL"
4 в итоге получается так "{-Project.Directory-}{-Variable.url-}"
5 безошибочно выбрана рандом нужная папка в директории проекта.


"вот тут возможен результат, когда по маске регулярки не будет вообще никакого результата, и появляется вероятность воспроизведения бага:" - это исключено, ни разу сбоя с этим не произошло ещё.
По поводу работы со Spisok1 Spisok2, создано по аналогии этого поста:

http://zennolab.com/discussion/threads/pomestit-random-fajl-v-peremennuju.21337/#post-141346


Я надеюсь Вы не забыли что в каждой папке проекта, находиться по несколько тхт файлов с контентом для постинга? Spisok1 Spisok2 и списки в папках, разные моменты и они в проекте учтены и работают как надо но удаляется весь контент как я многократно писал выше.
 

Вложения

  • 115,2 КБ Просмотры: 750
Последнее редактирование:

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Асталис, речь шла о выложенном тестовом проекте, мы же не знаем что там у вас в продакшн-коде. По поводу того, что по маске регулярки ещё ни разу не было сбоя - повеселили :-) Дело случая, да и только; при первом же пошаговом запуске вашего тестового проекта я получил пустую var URL после работы регулярки, именно после этого и вылезла проблема со списком файлов в директории. Естественно иначе бы я просто не наткнулся на эту ветку развития логики проекта. Если в продакшене код другой, например с проверкой IsNull - ну и отлично. Если нет, то проще "утопить" все рабочие файлы проекта, кроме xmlz, на уровень глубже. У вас 300+ сайтов, читай итераций, на одном запуске проекта баг да вылезет.

По поводу работы со списками не совсем понял вашу мысль. Проблема же была в выбрасываемом исключении, когда программа пытается обратиться к списку по невалидному индексу, а не в потере контента. Бага в системном классе Рандом просто исключена, отрицательное значение выдаёт только перегруженный метод. Так что ей просто больше неоткуда взяться, кроме как из предыдущего блока с переопределением spisok2.
 
  • Спасибо
Реакции: Асталис

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Перечитал оригинальный пост, теперь увидел проблему с затиранием контента путями файлов. Как-то на этот пункт не обратил сначала внимания.
 
  • Спасибо
Реакции: Асталис

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Ну и добавлю)) Попробуйте переписать прежде всего для себя тестовый проект. Проименуйте все переменные согласно тому, что они должны содержать, а не просто вариабл0, вариабл1 и т.д. Аналогично поступить со списками. При простом взгляде на имя переменной/списка должно быть сразу понятно что в ней находится. Файлы с контентом для постинга тоже проименовать согласно группировке по папкам, а не просто 1, 2, 3... Чтобы из переменной содержащей путь к контенту уже можно было установить верное ли значение сейчас в неё записано. Только так можно будет отследить сбой логики, понять откуда лезут пути файлов. Сейчас очень сложно удержать все эти однотипные вещи во внимании чтобы разобраться.
Если в продакшене будет всего три папки по три списка контента в каждой, то имеет смысл подключать их сразу в проект, чтобы обращаться к ним напрямую, а не как сейчас, перекладывая из переменной в переменную.
Возможно вообще стоит логику выбора контента переписать в сниппет, там сразу будет видно где ошибки, понадобятся всего три метода DirectoryRandomFile Method, DirectorySubItem Method, FileGetLine Method, плюс Directory Property.
 
  • Спасибо
Реакции: Асталис и rostonix
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Шаблон то он как бэ, рабочий полностью и с последним билдом баги исчезли почти все.
Прохождение одного цикла вообще без нареканий срабатывает но потом в ручную править придется файлы с контентом и удалять Spisok2 что бы запустить новый цикл.

Можно более детально описать именно тот момент почему после цикла, выбранный с контентом файл, будет полностью пустым?

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


зы: пути файлов лезут из за НЕ-очистки Spisok2
 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Вот видео о том что проект работает чудесно и последствия после прохождения цикла (пустой файл с контентом и не обнуленный spisok2)

 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Люди, хелп :bc:
 
  • Спасибо
Реакции: LightWood

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Приложите шаблон
 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Вот он, весь до последнего винтика. Что бы воспроизвести все проблемы, цикл надо оставить больше чем 1-2 прохода.
 

Вложения

  • 172,3 КБ Просмотры: 249

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
направления слэша поменяй
2015-09-15_093750.png
 
  • Спасибо
Реакции: Асталис
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Это не помогло, файлы затираются полностью вместо одной строки, исчезнут все. Да что ж такое с этой херней я не могу уже.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Без изменений. После нескольких проходов снова будет постить путями к файлам и любой файл к какому рандом обратится проект, будет неминуемо уничтожен вместо взятия одной строки с удалением.....
 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Есть кое что: 99.9% проблем описанных во всей этой уже "великой" и смешной истории, создаёт единственный семпл:


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

Но вот трабл, я ни как не могу понять где я так просчитался. Схема работает но обнуляет не те вещи. Господа, теперь когда проблема установлена, не могли бы вы посмотреть почему сбивается логика и трёт не те файлы? :bm:
 
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Сам себе не поможешь, никто не поможет. Исправил.



Появилась правда куча других багов, заебло кароче. Отбой.

Если кто захочет написать проект по ТЗ, пишите в ЛС
 

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Теперь мне понятно почему Spisok2 остаётся не обнулённым. Семпл вместо него, обнуляет целиком один из рандомных файлов с контентом.

Но вот трабл, я ни как не могу понять где я так просчитался. Схема работает но обнуляет не те вещи.

Вы уверены что правильно понимаете что именно делает этот блок кода? В частности выделенный семпл.


Ошибка случается на предыдущем шаге, когда вы переопределяете spisok2 (пытаетесь заново привязать список к файлу). В этом месте просто мозгодробящая логика проекта. Вы ожидаете что после перепривязки spisok2 будет ссылаться на любой другой список, но не на него.
 

Вложения

  • Спасибо
Реакции: Асталис
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
SURR, я ж написал что проблемы разрешил, проект теперь отрабатывает все 50-60 циклов но есть ряд новых ошибок про которые я уже не хочу даже заморачиватсья и готов проплатить весь проект кто за это возьмется, всё обсудим.

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

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Асталис, я же вам писал, что вы переопределяете spisok2. Всё в том семпле завязано на переменную, что там в неё ранее пишется? Это на первой итерации цикла она пустая, а после первого прохода уже принимает значение. Вот и получается что внутрипроектный spisok2 может ссылаться вовсе не на test\spisok2.txt.
Соответственно когда вы его в конце итерации пытаетесь обнулить, то и обнуляется переопределённый spisok2, а вовсе не test\spisok2.txt. В этом и есть всё неудобство логики, выносящее мозг.


Распишите тестовый проект, накидаем к нему сниппетов на шарпе, потом в свой продакшн-проект их воткнёте в нужных местах.

<не интересующие действия>
1. выбираем рандомную папку папку по маске регулярного выражения применённого ранее (из папки проекта?)
2. выбираем из выбранной папки рандомный текстовый файл
3. читаем в этом файле рандомную строку (дальше что? удаляем строку или оставляем?)
<совершаем некоторые действия с полученной строкой (постинг и т.д.)>
4. итерация завершается?
повторяем многократно до каких пор? пока во всех файлах не будет пусто или пока не кончится список сайтов?

Открыл ваш проект, смотрю, сразу вопросы:
на каждой итерации вы заново получаете список файлов в нужной папке. Я так понимаю итераций будет 300+ (вы писали о трёхстах сайтах). Можно ли в таком случае определить заранее списки файлов для каждой из папок, и не включать эту операцию в цикл? Или количество файлов в папках будет меняться динамически во время выполнения проекта (например удаляться какие-либо файлы из папок с контентом)?
 
Последнее редактирование:
  • Спасибо
Реакции: Асталис
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Ого, ничего себе как всё детально o_O
Спасибо SURR, я на досуге всё распишу и отвечу на все вопросы в вашем посте :dz:
 

surr

Новичок
Регистрация
09.10.2014
Сообщения
15
Благодарностей
14
Баллы
3
Перекинул проблемную логику в сниппеты, пробуйте, должно работать как задумано изначально.
Если будут вопросы/уточнения отредактируем как потребуется. Заскочу завтра, примерно в то же время.
 

Вложения

  • Спасибо
Реакции: Асталис
Регистрация
18.01.2014
Сообщения
149
Благодарностей
13
Баллы
18
Всё работает идеально, вот так да, круто очень :dk:
В пилотной версии 300+ сайтов будет определятся исключительно по домену и там будет одна форма ввода логина и пароля (уже реализовано) там уже нет никаких проверок по тексту на сайте.
Данный тестовый проект создан для того что бы понять как работают списки и всё что мы проделали в этом топике, вопросы конечно остались так как я в С# не силен но теперь вижу что всё решаемо:bt:
Мне нужно будет создавать/удалять нужные/не нужные папки с контентом периодически в ручную разве что.
 

EvgenWeb

Client
Регистрация
30.10.2019
Сообщения
180
Благодарностей
9
Баллы
18

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
Не нашел возможности в настройках профиля загрузить переменную со списком profile профилей, требует указать путь.
Либо копированием макроса переменной через иконку справа от переменной (в св. действия или в блоке Переменные). Либо вот так попробуйте:

64711
 
  • Спасибо
Реакции: EvgenWeb

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)