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

запускаете в PM, ZP или в диспетчере задач?
 
Ошибка случается на предыдущем шаге, когда вы переопределяете 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, который здесь никак не ждёшь, ну и дальше понеслась.
 
  • Оценить
Реакции: Асталис
Очень развернуто, напишу что да почему:
Сразу обратится к переменной нельзя потому что мне нужна регулярка которая четко определяет какой фрагмент ссылки будем брать. В финальной стадии проекта будет свыше 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 и списки в папках, разные моменты и они в проекте учтены и работают как надо но удаляется весь контент как я многократно писал выше.
 

Вложения

  • 1.jpg
    1.jpg
    115,2 KB · Просмотры: 852
Последнее редактирование:
Асталис, речь шла о выложенном тестовом проекте, мы же не знаем что там у вас в продакшн-коде. По поводу того, что по маске регулярки ещё ни разу не было сбоя - повеселили :) Дело случая, да и только; при первом же пошаговом запуске вашего тестового проекта я получил пустую var URL после работы регулярки, именно после этого и вылезла проблема со списком файлов в директории. Естественно иначе бы я просто не наткнулся на эту ветку развития логики проекта. Если в продакшене код другой, например с проверкой IsNull - ну и отлично. Если нет, то проще "утопить" все рабочие файлы проекта, кроме xmlz, на уровень глубже. У вас 300+ сайтов, читай итераций, на одном запуске проекта баг да вылезет.

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

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

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


зы: пути файлов лезут из за НЕ-очистки Spisok2
 
Вот видео о том что проект работает чудесно и последствия после прохождения цикла (пустой файл с контентом и не обнуленный spisok2)

 
Приложите шаблон
 
Вот он, весь до последнего винтика. Что бы воспроизвести все проблемы, цикл надо оставить больше чем 1-2 прохода.
 

Вложения

  • test.rar
    test.rar
    172,3 KB · Просмотры: 340
направления слэша поменяй
2015-09-15_093750.png
 
  • Оценить
Реакции: Асталис
Это не помогло, файлы затираются полностью вместо одной строки, исчезнут все. Да что ж такое с этой херней я не могу уже.
 
Без изменений. После нескольких проходов снова будет постить путями к файлам и любой файл к какому рандом обратится проект, будет неминуемо уничтожен вместо взятия одной строки с удалением.....
 
Есть кое что: 99.9% проблем описанных во всей этой уже "великой" и смешной истории, создаёт единственный семпл:


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

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



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

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

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

untitled-1-png.9577

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


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

Вложения

  • Untitled-1.png
    Untitled-1.png
    30,3 KB · Просмотры: 962
  • Оценить
Реакции: Асталис
SURR, я ж написал что проблемы разрешил, проект теперь отрабатывает все 50-60 циклов но есть ряд новых ошибок про которые я уже не хочу даже заморачиватсья и готов проплатить весь проект кто за это возьмется, всё обсудим.

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


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

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

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

Вложения

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

64711
 
  • Оценить
Реакции: EvgenWeb

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