Search
Write a publication
Pull to refresh
1
0

Разработчик

Send message
Для таких клиентов у нас есть решения по подписке, что то типо платишь подписку за скрапер раз в месяц и не заморачиваешься с тем что надо кому то звонить\писать что бы это пофиксили(так как мы сами следим за скраперами), но цена на такое дело начинается от $30 и не каждый на это решается. Ну а вообще конечно до клиента лучше сразу донести то что любые изменения после принятия работы стоят денег, даже если это «5 минут делов».
Очень странный такой бизнес, где стоит сложная система — которая зависит от одного ненадёжного источника. Наверное в таком случае нужно иметь возможность парсить как и сырые данные так и отрендеренную страницу. Вообще такое часто случается что разработчики сайтов внезапно меняют разметку и парсер нужно допиливать под реалии. У нас есть клиент у которого скрапятся 200+ магазинов, и вот раз в месяц 20%+ меняют селекторы или js библиотеки(которые меняют селекторы на страницах) и это приходится фиксить. Причем изменения могут быть минимальны, и создается впечатление что они это делают от того что им нечем занятся.
Всякие pdf и картинки лучше всего парсить с помощью машин лёрнинга, но натренировать сеть конечно очень непросто, ну и вообще это довольно сложная задача.
Упоминая такие технологии все забывают что какая бы технология для рендеринга данных не использовалась — это только рендер — данные в любом случае приезжают от сервера в формате который можно преобразовать в текстовый и отпарсить. Всё зависит только от суммы в $ которую придётся потратить на преобразование данных.
WebAssembly будем дезассемблировать=))
Челендж от Cloudflare,у нас например, решается в автоматическом режиме. Но есть провайдеры обход защиты которых действительно сложный. К примеру Distil Networks. В целом я согласен с автором по поводу того, что лучшая защита нервов и машинного времени это публичное API. Что касается юридической стороны то автоматический сбор данных которые доступны без аутентификации — вообще не должен быть наказуем, т.к они публично доступны. Другое дело их использование.
это точно? что то я сомневаюсь, компилятор ничего не знает о переменных что будут в рантайме, как он может сразу под конечную строку выделить память?
а буффер быстрее конкатенации…
Американцы хорошие менеджеры, они знаю как управлять. Но если компания совершает какое то достижение, еще не факт что его сделали американские айти специалисты. Там может быть абсолютно разношёрстная команда. Но заслуг компании это конечно не умаляет.
Или подменить, например для нашего аппа это необходимо что бы заблочить весь js-код и отменить загрузку js- файлов, кроме тех что мы сами добавим, но у нас не расширение а app. Страница на которой подменяются хэдеры лежит в webview и от аппа изолирована.
В Visual Studio Code есть отличный плагин для Golang-а, который делает вышеописанное, разве что индусокод не помечает желтым. Но вещи которые не дадут коду скомпилироваться указывает. Переехал на Code с LiteIDEб и доволен.
Не понимаю как это может мне помешать открыть следующий линк и так дальше. Все что происходит на клиентской стороне можно отловить и хакнуть.
P/s если не хотите что бы вас нещадно скрапили, сделайте фид и забудьте о подобных проблемах. Ибо если его нет вас все равно будут скрапить.
А по мне было бы не плохо писать на родном языке, особенно когда только учишься т.к. не только учишь конструкции языка но и англ, если конечно еще его не знаешь. Но в целом, имхо, русский более годится для художественных произведений чем для ЯП.
В данном случае речь идет о сугубо статическом коде.

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

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

Для абсолютного любого можно использовать reflect, осторожно конечно. Но это костыль наверное.Для конечного кол-ва типов Вы можете это сделать реализуя интерфейс, но как я уже говорил — это требует большего количества кода. Т.к каждый тип должен реализовывать этот интерфейс.

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

    private void More ...grow(int minCapacity) {
         // overflow-conscious code
          int oldCapacity = elementData.length;
          int newCapacity = oldCapacity + (oldCapacity >> 1);
          if (newCapacity - minCapacity < 0)
             newCapacity = minCapacity;
          if (newCapacity - MAX_ARRAY_SIZE > 0)
             newCapacity = hugeCapacity(minCapacity);
          // minCapacity is usually close to size, so this is a win:
          elementData = Arrays.copyOf(elementData, newCapacity);
     }


это к вопросу о том что под катом.
Но вообще как бы разговор не о том, а о том чего же Вам не хватает в конструкции type T1 []T2.
Здравствуй, инкапсуляция. Не важно, что внутри, важен внешний интерфейс.


А как же вот это для Java
И получили потенциально новый объект. Вот именно этим от привычного List и отличается.

т.е
List<int> list
list.push(1)

не создает новый обьект?
мне кажется это остается под катом. а внутри происходит то же самое.
Слайсы в Go имеют конечную длину, и что бы добавить туда элемент нужно создать новый слайс длинной на 1 или несколько элементов больше.
то нет, любых вообще, существующих в программе.

Ок. Тогда вернемся к поведению которое требуется. В Go slice или array может выступать в роли списка. И хранить в себе определенный тип T. Теперь я хочу уловить, чем это принципиально отличается от конструкции типа:
List<someClass> list = new List<someClass>
?
А при чем тут сортировка вообще?


Разве в той же java
List<int> 

не умеет .sort()?
1

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Registered
Activity