Бесплатные снипеты на заказ

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
if ("str" != "str2") кавычки убери
 
  • Спасибо
Реакции: Evgeny76

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
Здравствуйте, друзья! Помогите разобраться. Задача в следующем:
Нужно из папки взять рандомный файл, загрузить его на сервер и удалить после загрузки. Вопрос в том, как реализовать, чтобы это работало в многопотоке? Прошу вас взглянуть на код и подсказать, будет ли он корректно работать в многопотоке, не будут ли потоки одновременно брать один и тот же файл.
Код:
Object FolderLock = new Object();
lock (FolderLock) {
    string[] files = Directory.GetFiles(project.Variables["path"].Value);
    string Lfile = files[new Random().Next(0, files.Count())];
    //код загрузки на сервер
   
    //Удаляем файл
    File.Delete(Lfile);
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Здравствуйте, друзья! Помогите разобраться. Задача в следующем:
Нужно из папки взять рандомный файл, загрузить его на сервер и удалить после загрузки. Вопрос в том, как реализовать, чтобы это работало в многопотоке? Прошу вас взглянуть на код и подсказать, будет ли он корректно работать в многопотоке, не будут ли потоки одновременно брать один и тот же файл.
Код:
Object FolderLock = new Object();
lock (FolderLock) {
    string[] files = Directory.GetFiles(project.Variables["path"].Value);
    string Lfile = files[new Random().Next(0, files.Count())];
    //код загрузки на сервер
  
    //Удаляем файл
    File.Delete(Lfile);
}
Не будет. Объект для лока должен быть общим для всех потоков. Для этого его надо объявлять в общем коде и он должен быть статическим. Изначально в общем коде уже есть такой объект, можно пользоваться им, можно взять как пример. И чтобы уменьшить очередь, я бы советовал брать файл и тут же перемещать его в другую папку. После этого лок можно закрывать и работать с файлом не опасаясь, что его подхватит другой поток + давая сразу возможность работать другим потоком не ожидая, пока файл загрузится
 
  • Спасибо
Реакции: Fantomass

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
Изначально в общем коде уже есть такой объект
Вы имеете ввиду этот?
Код:
public static object SyncObject = new object();
И правильным будет такой вот код?
Код:
lock (SyncObject) {
    string[] files = Directory.GetFiles(project.Variables["path"].Value);
    string Lfile = files[new Random().Next(0, files.Count())];
    //код загрузки на сервер
   
    //Удаляем файл
    File.Delete(Lfile);
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Вы имеете ввиду этот?
Код:
public static object SyncObject = new object();
И правильным будет такой вот код?
Код:
lock (SyncObject) {
    string[] files = Directory.GetFiles(project.Variables["path"].Value);
    string Lfile = files[new Random().Next(0, files.Count())];
    //код загрузки на сервер
  
    //Удаляем файл
    File.Delete(Lfile);
}
Это та строка кода, о которой я говорил. Но если просто писать SyncObject, то будет использоваться объект не из общего кода, а зенновский объект, который распространяется на все проекты. Чтобы использовать конкретно объект из общего кода нужно прописать название класса перед ним и его через точку. У меня это CommonCode.SyncObject
 
  • Спасибо
Реакции: Fantomass

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
Это та строка кода, о которой я говорил. Но если просто писать SyncObject, то будет использоваться объект не из общего кода, а зенновский объект, который распространяется на все проекты. Чтобы использовать конкретно объект из общего кода нужно прописать название класса перед ним и его через точку. У меня это CommonCode.SyncObject
Спасибо большое, разобрался с этим. Остался непонятным один момент. На форуме находил еще несколько вариантов блокировки, такие как, например:
Код:
lock (SyncObjects.TableSyncer) {
}
//и
lock (SyncObjects.ListSyncer) {
}
Этот код используется только для блокировки таблиц и списков, а код который мы обсуждали выше - это универсальное решение, которое блокирует фрагмент кода в фигурных скобках?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Спасибо большое, разобрался с этим. Остался непонятным один момент. На форуме находил еще несколько вариантов блокировки, такие как, например:
Код:
lock (SyncObjects.TableSyncer) {
}
//и
lock (SyncObjects.ListSyncer) {
}
Этот код используется только для блокировки таблиц и списков, а код который мы обсуждали выше - это универсальное решение, которое блокирует фрагмент кода в фигурных скобках?
их привязка к спискам и таблицам чисто формальная. Т.е. они используются в кубиках работы со списками и таблицами, поэтому их предпочтительно использовать и в сниппетах на подобных операциях. Но их механика не отлична от любого другого локера
 
  • Спасибо
Реакции: Fantomass

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Привет. Подскажите пожалуйста, как в этой части кода, брать данные из переменных.
Color pixelColor = myBitmap.GetPixel(10, 0);
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113
Привет. Подскажите пожалуйста, как в этой части кода, брать данные из переменных.
Color pixelColor = myBitmap.GetPixel(10, 0);

Пробуйте так:

C#:
int x = int.Parse(project.Variables["x"].Value);
int y = int.Parse(project.Variables["y"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);
 
  • Спасибо
Реакции: juk88

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Пробуйте так:

C#:
int x = int.Parse(project.Variables["x"].Value);
int y = int.Parse(project.Variables["y"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);
Щас попробую. Я так пробовал:
Color pixelColor = myBitmap.GetPixel(Convert.ToInt32(project.Variables["pix1"].Value, Convert.ToInt32(project.Variables["pix2"]).Value;
Это конечно наверно не правильно?
 

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Пробуйте так:

C#:
int x = int.Parse(project.Variables["x"].Value);
int y = int.Parse(project.Variables["y"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);
Ваш код, работает без ошибок. Но вместо цвета пикселя, пишет в переменную: Ок.
А как получить цвет?
 

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Пробуйте так:

C#:
int x = int.Parse(project.Variables["x"].Value);
int y = int.Parse(project.Variables["y"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);
Весь код, получился такой:

Bitmap myBitmap = new Bitmap(project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "1.jpg");
int x = int.Parse(project.Variables["pix1"].Value);
int y = int.Parse(project.Variables["pix2"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);

И результат сохраняется в переменную Pixel

Как получить цвет пикселя в неё?
 

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Всё. Дотумкал. Спасибо.
Весь код получился:

Bitmap myBitmap = new Bitmap(project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "1.jpg");
int x = int.Parse(project.Variables["pix1"].Value);
int y = int.Parse(project.Variables["pix2"].Value);
Color pixelColor = myBitmap.GetPixel(x, y);
return string.Format(@"{0},{1},{2}", pixelColor.R, pixelColor.G, pixelColor.B); // Возвращает цвет пикселя в формате RBG
 

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
  • Спасибо
Реакции: juk88

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Спасибо. А как после окрашивания, сохранить результат в тот-же файл? Если сохранять в другой, то всё работает. А, если пытаюсь в тот-же, то не хочет. Выдаёт ошибку.
 

juk88

Client
Регистрация
30.05.2018
Сообщения
90
Благодарностей
12
Баллы
8
Вот полный код:


Bitmap myBitmap = new Bitmap(project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "1.jpg");
int x = int.Parse(project.Variables["pix1"].Value);
int y = int.Parse(project.Variables["pix2"].Value);
myBitmap.SetPixel(x, y, Color.White);
myBitmap.Dispose();
myBitmap.Save(project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "1.jpg");
 

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
Всем здравствуйте.
Подскажите, как пожаловаться на неправильно разгаданную капчу anti-captcha?
 

VladCh

Client
Регистрация
12.03.2018
Сообщения
3
Благодарностей
0
Баллы
1
Всем привет!!! Подскажите, возможно ли менять число потоков из программы (из кубика)
 

Ikigai

Client
Регистрация
13.12.2016
Сообщения
276
Благодарностей
27
Баллы
28
Ребята хелп. Нужен сниппет для Get запроса

У меня старая версия зенки 5.11.3 . Кубик там не отрабатывает =((
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
164
Баллы
43

vrb-by

Client
Регистрация
27.02.2016
Сообщения
128
Благодарностей
8
Баллы
18
Помогите вставить в список не только результат по регулярке из DOM но и плюс значение из пременной "текст" через ";"
Есть сгенерированный из стандартного кубика код:
Код:
Tab tab = instance.ActiveTab;
if (tab.IsBusy) tab.WaitDownloading();
string text = tab.DomText;

var regex = new System.Text.RegularExpressions.Regex("регулярка которая находит все IP");
// Поиск всех совпадений
var matchCollection = regex.Matches(text);
for(var i = 0; i < matchCollection.Count; i++)
{
    if (matchCollection[i].Success)
        project.Lists["IP"].Add(matchCollection[i].Value);
}
Понимаю, что работать нужно с этой строкой
Код:
project.Lists["IP"].Add(matchCollection[i].Value);
но знаний не хватает...если конечно добавление значения из переменной в список вообще возможно:
Код:
project.Lists["IP"].Add(matchCollection[i].Value);project.Variables["text"].Value;
что бы в итоге получить в списке: 192.100.1.2;текст
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Помогите вставить в список не только результат по регулярке из DOM но и плюс значение из пременной "текст" через ";"
Есть сгенерированный из стандартного кубика код:
Код:
Tab tab = instance.ActiveTab;
if (tab.IsBusy) tab.WaitDownloading();
string text = tab.DomText;

var regex = new System.Text.RegularExpressions.Regex("регулярка которая находит все IP");
// Поиск всех совпадений
var matchCollection = regex.Matches(text);
for(var i = 0; i < matchCollection.Count; i++)
{
    if (matchCollection[i].Success)
        project.Lists["IP"].Add(matchCollection[i].Value);
}
Понимаю, что работать нужно с этой строкой
Код:
project.Lists["IP"].Add(matchCollection[i].Value);
но знаний не хватает...если конечно добавление значения из переменной в список вообще возможно:
Код:
project.Lists["IP"].Add(matchCollection[i].Value);project.Variables["text"].Value;
что бы в итоге получить в списке: 192.100.1.2;текст
Код:
project.Lists["IP"].Add(matchCollection[i].Value+";"+project.Variables["text"].Value);
 
  • Спасибо
Реакции: vrb-by

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
.
 
Последнее редактирование:

vrb-by

Client
Регистрация
27.02.2016
Сообщения
128
Благодарностей
8
Баллы
18
Код:
project.Lists["IP"].Add(matchCollection[i].Value+";"+project.Variables["text"].Value);
Первый раз с конвертировать в С# работаю...
Подскажите пожалуйста:
кубик Взять DOM -> конвертировать в С# -> вставляю из буфера в кубик "свой код". Пытаюсь выполнить ничего не меняя . Ошибка:
Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 4; Cтолбец: 89]
Что делаю не так?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Первый раз с конвертировать в С# работаю...
Подскажите пожалуйста:
кубик Взять DOM -> конвертировать в С# -> вставляю из буфера в кубик "свой код". Пытаюсь выполнить ничего не меняя . Ошибка:
Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 4; Cтолбец: 89]
Что делаю не так?
либо конвертация была некорректной, либо в проекте есть другой кубик c#, в котором есть ошибка. Даблклик по ошибке лога выведет на проблемный кубик. В ошибке лога указан номер проблемной строки
 
  • Спасибо
Реакции: vrb-by

vrb-by

Client
Регистрация
27.02.2016
Сообщения
128
Благодарностей
8
Баллы
18
либо конвертация была некорректной, либо в проекте есть другой кубик c#, в котором есть ошибка. Даблклик по ошибке лога выведет на проблемный кубик. В ошибке лога указан номер проблемной строки
кубика всего два...
 

doc

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

vrb-by

Client
Регистрация
27.02.2016
Сообщения
128
Благодарностей
8
Баллы
18
я не экстрасенс)
Вставляю такой код:
Код:
Tab tab = instance.ActiveTab;
if (tab.IsBusy) tab.WaitDownloading();
string text = tab.DomText;
var regex = new System.Text.RegularExpressions.Regex(@"(?<=<a\ class="res-small__title"\ href=")https://.*?(?=")");
// Поиск всех совпадений
var matchCollection = regex.Matches(text);
for(var i = 0; i < matchCollection.Count; i++)
{
    if (matchCollection[i].Success)
        project.Lists["URL"].Add(matchCollection[i].Value);
}
Что не так конвертируется?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
ну тебе ведь подчёркивает красным
 

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