Взять с начала списка и положить в конец списка

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Мистика..
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
C#:
if (proxyList.Count == 0)
{
    var id = Guid.Parse(project.TaskId);
    ZennoPoster.SetTries(id, 0);
    throw new Exception("[Локальный список прокси пуст!]");
}
Я начал подобный кусок вставлять во все сниппеты по работе с расходуемыми списками
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
C#:
if (proxyList.Count == 0)
{
    var id = Guid.Parse(project.TaskId);
    ZennoPoster.SetTries(id, 0);
    throw new Exception("[Локальный список прокси пуст!]");
}
Я начал подобный кусок вставлять во все сниппеты по работе с расходуемыми списками
Какая его функция?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Какая его функция?
обрубать все попытки, если в списке (в данном случае) нет прокси. Для себя в принципе не особо важно, но для клиентов.Очень уж они чувствительны к ошибкам. Прокси не загрузят, миллион попыток поставят - в логе миллион ошибок. Паника, тревога, попытки суицида)

Потом разработчику начинают мозг выносить. Пугающая ошибочная масса отнимает дар чтения. Подавляющее большинство даже не будет смотреть туда, опасаясь за своё здоровье и здоровье своих близких)

А так максимум несколько строк ошибок
 
  • Спасибо
Реакции: Mikhail B.

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Еще бы придумать с соксами что нибудь, есть идеи?
Я начал просто socks5:// вписывать в сам список.
Добавь в начало кода строку
C#:
string protocol = project.Variables["Protocol"].Value; // из переменной, в переменной значение socks5:// или http:// (пустая переменная = http://)
// или можно явно указать
string protocol = "socks5://";
и замени
var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", proxy);
на
var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", protocol + proxy);
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Добавь в начало кода строку
C#:
string protocol = project.Variables["Protocol"].Value; // из переменной, в переменной значение socks5:// или http:// (пустая переменная = http://)
// или можно явно указать
string protocol = "socks5://";
и замени
var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", proxy);
на
var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", protocol + proxy);
Если выбираем 1 строку, то 3 надо закоментировать? и наоборот)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Если из переменной будешь брать значение протокола, то остальные строки вообще удали.
Я хочу универсальный сделать, что бы на выбор было.
Главное что бы эта конструкция заработала в итоге
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Если из переменной будешь брать значение протокола, то остальные строки вообще удали.
теоретически протокол должен быть тут instance.SetProxy(proxy);

P.S. А все дошло)))
Вот так должно быть))

instance.SetProxy(protocol + proxy);
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
теоретически протокол должен быть тут instance.SetProxy(proxy);
Да, кстати, эту строку тоже надо заменить на
instance.SetProxy(protocol + proxy);
Я хочу универсальный сделать, что бы на выбор было.
Главное что бы эта конструкция заработала в итоге
Из переменной - это и будет универсально. И там уже, если нужно, можешь и во входные настройки добавить опцию выбора протокола.
 
  • Спасибо
Реакции: samsonnn

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Да, кстати, эту строку тоже надо заменить на
instance.SetProxy(protocol + proxy);

Из переменной - это и будет универсально. И там уже, если нужно, можешь и во входные настройки добавить опцию выбора протокола.
Скоро тема будет, пока отвлекся по работе.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Да, кстати, эту строку тоже надо заменить на
instance.SetProxy(protocol + proxy);

Из переменной - это и будет универсально. И там уже, если нужно, можешь и во входные настройки добавить опцию выбора протокола.
Ниче не напутал?

C#:
IZennoList proxyList = project.Lists["Proxy"];
int count = 10; // количество неудачных проверок подряд
//int count = proxyList.Count; // если строки берутся с удалением БЕЗ записи в конец списка (проверяем до талого, так сказать)
string protocol = project.Variables["Protocol"].Value; // из переменной, в переменной значение socks5:// или http:// (пустая переменная = http://)
lock (SyncObjects.ListSyncer) {
  for (int i = 0; i < count; i++) {
  if (proxyList.Count == 0) break;
  string proxy = proxyList[0];
  proxyList.RemoveAt(0);
   
  var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", proxy);
  if (content.Contains(Regex.Match(proxy, @"(\d{1,3}\.){3}\d{1,3}").Value)) {
  proxyList.Add(proxy); // записываем живую проксю в конец списка
  instance.SetProxy(protocol + proxy);
  return proxy;
  }
//  proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее закомментировать!)
  }
  throw new Exception("Ошибка!");
}
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: GreenWay

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

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