Как стать автором
Обновить
-1
0

Пользователь

Отправить сообщение

Я к этому вопросу пришёл с другой стороны, мне надо было кликать мышью по месту на экране, где найдено изображение тега.

Вообщем надо кешировать параметры клика. Запоминаешь, что такой то тег находится в соответствующем прямоугольнике экрана с соответствующим разрешением. И сначала делается упрощенный поиск по этим координатам. А если не нашёл, тогда уже полный алгоритм поиска.

А теперь представьте, что один и тот же код за 3 года был продан 500 клиентам и у каждого из них свои доработки

Хотите вставит кусок кода отмотав 100 клиентов назад без чистой архитектуры? :)

Но в то же время, если фрилансер зарабатывает 100к в месяц, то чистый код ему действительно не нужен.

У меня есть некая программа и я ищу как фрилансер аналогичные заказы. В каждом новом заказе я беру предыдущий код и дорабатываю его для нового клиента.

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

Да, для этого существую слои от каузала до физического мира. Хотя и термин сознания применяется тут неверно.

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

Не знаю о чем Вы говорили, я говорил о Selenium, что он использует Dev Tools. В отличии от того, что утверждается в статье обычным Selenium можно парсить Ozon через chrominium браузер с контролем его через debug port без использования хакерских библиотек типа Selenium Stealth.

предлагаю зайти с помощью Selenium сюда https://www.browserscan.net/ru/bot-detection.
Как это засекается не знаю, но факт осатется фактом

а точнее?

Как в System.Text.Json сделать json объект произвольной структуры не создавая класса, и как прочитать такой json {"data": [{"test1":1},{"test2":"2"}]} ?

Вопрос заработной платы это один из вопросов организации труда. Если сделать нормальную организацию где у одного начальника по 6 менеджеров, он и менеджеры адекватны и готовы пойти на небольшие уступки с каждой из сторон. Где денежная мотивация не является единственной. То эти все вопросы решаемы. А если нет, то заработная плата тут десятый вопрос, просто с нее обычно начинается.

Затем, что System.Text.Json не умеет создавать Json произвольной формы и при развитии такого проекта возникнут проблемы. Тебе для создания такого json потребуется делать класс и уже его сериализовывать. А в Netonsoft.Json можно написать так:
var json = new JObject
{
["error"] = e.Message.TrimEnd('.'),
["code"] = code,
["HResult"] = e.HResult,
["content"] = content
};
return json.ToString();

И конечно пока System.Text.Json не научится формировать и читать такие запросы {"data": [{"test1":1},{"test2":"2"}]} сложно воспринимать ее как полноценный json.

Кто они? Как cloudflare засекает selenium? Там проверяются переменные с помощью js, которые selenium оставляет в среде. Проверяется useragent, headers. Если норм, то потом делается рукопожатие браузера. Рукопожатие вроде бы содержится в самом движке chromium браузера. А он то знает управляют им или нет.

Сложноватый путь. Я парсил озон обычной библиотекой selenium, через debug port. Браузер запускается чистый, единственно cloudflare засекает использование chrome devtool. Но это обходится отключением драйвера от браузера на время проверки. А вот PerumetrX капча - вот это жесть...

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

Дальше смотрим. Духа у ИИ нет, отражать ему нечего. Будхических способностей нет, каузальной судьбы нет, ментальной матрицы нет, астральных чувств нет, эфирного здоровья нет. Есть только физический план.

Т.о. пытаются сравнить физический калькулятор с астральным умом, что бессмысленно у них разные возможности и цели.

Я в своей практике вообще только Xpath использую, а все остальное для понимания как рефакторить чужой код. Использую Xpath для того чтобы использовать одну обертку на все действия:)

Почему единый стиль селекторов, потому что сайт к этому располагает, если там есть id и name, то они есть почти для всех задач. Если сделано классами, то опять же любая задача решается через querySelector, а все остальное - это xpath.

Но моя практика специфична, я почти всегда работаю с сайтами где стоят защиты от парсинга.
А как это централизованое использование селекторов по п. 2? Вы их в массив enum вносите?

Методику сравнения в студию.

На сколько я понял разработчикам кидались мелкие задачи, и на их основе делались выводы по затраченному времени. Проблема в чем, такая специфика задач на фрилансе, на фрилансе работают на готовом коде. Т.е человек спец в той области в которой берет задачу и она не занимает много времени. Для анализа работы этих ребят методика не подходит !!!

В корпоративном секторе есть специфика: командная работа, большие проекты, долгие проекты. Как я понял специфика корпоративного сектора не учитывалась, т.е. не исследовалось читабельность кода, работа со старыми версиями кода, работа в команде. Соответственно для этого сектора исследование тоже не подходит. Что хотели узнать исследователи не понятно?!?!

Как исследование это представляет интерес, но для практического применения его недостаточно.

Моё мнение что при использовании селекторов они должны быть сделаны в едином стиле.

Либо во всех местах id и name, либо css, либо везде xpath.

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

А если парсить, то selenium используется в связке с angelsharp или agilitypack, дерево dom анализируется один раз для страницы, что ускоряет парсинг на порядок и опять же скорость и ресурсоемкость упирается в количество окон и отслеживание последнего нужного тега на странице, а не в поиск селектора.

По-моему это подход питонщика. Действительно зачем уметь делать алгоритмы, если есть библиотека, нужно ее подключить и в ней уже есть нужный нам алгоритм :)

Но если мы говорим о других языках, то есть нюансы. Во-первых, этот подход абсолютно правильный для питонщика, потому, что питонщика берут как раз для таких задач, где алгоритмы не нужны.

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

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

В-четвертых, я сам пишу на с# парсеры, спарсить данные не сложно, основное время занимает обход защит и корректировка парсеров при изменениях сайта. Для обхода защит мне нужны алгоритмы, поскольку защиты сделаны именно так, чтобы стандартные библиотеки не работали. А для того чтобы не править парсер при каждом чихе мне нужно использовать xpath и regx технологии. И я бы сказал, что написать хороший xpath выражение на динамически меняющейся странице типа google или yandex, не проще, чем какой нибудь весёлый алгоритм бинарного поиска или т.п. И сложный regx не проще. А ещё бывают задачи по парсингу пару миллионов страниц с отсеивание их на дубликаты и тут надо экономить каждый такт.

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

Я бы ещё выделил специалистов по парсингу. Чем то похоже на security tester, но его задача пробивать защиты сайтов по более узкому диапазону. Квалификационные требования в целом ниже, но опыт нужен именно в парсинге.

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

Единственное разбирать чужой код из сахара проблема.

Допустим мне бы в голову не могло прийти что такое вообще возможно на c#: (a, b) = (b, a). Это обмен значений между переменными, кто не в курсе.

1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность