• Есть ли в природе обширная книга по front end разработке?

    @Nuserwin
    Привет, друзья,
    Ваши уже прошло три года с хвостиком. Технологии ещё сильнее развились, появились новые и Frontend разработчик уже на просто верстальщик, а комбайн по выпуску, как говорят: "UX/UI".
    Так что, если есть читающие, знающие не по наслышке ситуацию с Frontend-разработкой, прошу поделиться, что сейчас актуально, а что безвозвратно устарело.
    Спасибо всем за интересный и актуальный, в том числе и для меня, трэд, а особенно Анне Бакуровой, за книгу для улучшения памяти.
    Ответ написан
    Комментировать
  • Какие могут быть способы определения автоматизации Selenium?

    kshnkvn
    @kshnkvn Автор вопроса
    yay ✌️ t.me/kshnkvn
    Перепробовал кучу разных вариантов, вот что из них может сработать для кого-то (не для меня):
    1. Очень сомнительно, но некоторые люди пишут, что для них это работало:
    Изменение название переменной документа js, используемой Selenium - $cdc_. Для этого достаточно открыть файл chromedriver.exe в любом шестнадцатеричном редакторе (я использовал HxD) изменить её название на любое другое. Это не сработало для меня, но сам chromedriver работает нормально после этого. Так-же я пробовал изменить все переменные где есть слова driver, но это была плохая идея - chromedriver перестал запускать. Без изменения исходников тут точно не обойтись, но я не уверен что это может сработать.
    2. Это более действующий вариант, который даёт хоть какой-то результат. На этой странице можно определить используется chromedriver, или нет и при запуске этой страницы через selenium действительно отображается, что используется webdriver. Добавление следующего куска кода помогло обойти эту идентификацию:
    options.add_experimental_option("excludeSwitches", ['enable-automation'])

    Но это всё-равно не помогло мне.
    Так-же нашел очень сомнительное и вероятнее всего просто нерабочее решение:
    Запуск js-кода, который меняет состояние переменных navigator, включая navigator.webdriver.
    Так он запускается:
    driver.execute_script("var s=window.document.createElement('script'); s.src='javascript.js';window.document.head.appendChild(s);")

    Сам js-код
    // overwrite the 'languages' property to use a custom getter
    const setProperty = () => {
        Object.defineProperty(navigator, "languages", {
            get: function() {
                return ["en-US", "en", "es"];
            }
        });
    
        // Overwrite the 'plugins' property to use a custom getter.
        Object.defineProperty(navigator, 'plugins', {
            get: () => [1, 2, 3, 4, 5],
        });
    
        // Pass the Webdriver test
        Object.defineProperty(navigator, 'webdriver', {
          get: () => false,
        });
        callback();
    };
    setProperty();

    Ерунда в том, что в Chrome вообще отсутствует переменная navigator.webdriver, в этом можно убедиться вводом navigator в консоли браузера, её там нет. Зато эта переменная есть в Firefox, но этот код её не меняет, т.е. он просто ничего не делает, значение переменной Firefox navigator.webdriver всегда равно true при запуске через selenium. В обычном (ручном) режиме она false.

    UPD. Не знаю, как проглядел, но в конечном итоге всё уперлось в проверку reCAPTCHA v3. Эта проверка проходится практически всегда при следующих условиях:
    1. Не используется User-Agent.
    2. Не используется прокси.
    3. Не отключаются уведомления.
    4. Не блокируются запросы на разрешения.
    4. Используется вот этот параметр:
    options.add_experimental_option("excludeSwitches", ['enable-automation'])

    Но при таких параметрах зарегистрировать более одного раза с одного IP не представляется возможным. Как я и указывал в своём вопросе - прокси использовал совершенно разные - от паблик до микро-серверов google cloud, так что дело не в "качестве" прокси а сугубо в факте его использования.
    Ответ написан
    Комментировать
  • Какие могут быть способы определения автоматизации Selenium?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    подпишусь

    не подскажут - сейчас это коммерческая инфа

    ну из того что можно рассказать - поменьше headless ))
    но - все гораздо сложнее
    Ответ написан
    2 комментария
  • Как puppeteer заставить работать через socks5 прокси?

    Поставьте локальный прокси, который не будет требовать авторизации и пробрасывать на родительский, например в 3proxy конфигурация что-нибудь типа

    auth iponly
    fakeresolve
    internal 127.0.0.1

    allow *
    parent socks5+ proxyhost 8080 user password
    socks -p1080

    и используйте в браузере 127.0.0.1 1080.
    P.S. но вообще в браузерах лучше использовать http/https прокси, в них хендшейк короче.
    Ответ написан
    2 комментария
  • Существуют ли заочные курсы или стажировка по анализу данных на русском языке?

    @lPolar
    data scientist
    ИМХО, тут есть несколько аспектов:
    1. Как написал brainick , математический бэкграунд и английский в data science практически обязателен.
    Причин этому несколько: отсутствие хорошей литературы на русском языке (как по теории, так и по программированию), обилие английских терминов (lift/top/cross-validation и прочие), значение которых в переводной литературе порой объяснятся весьма туманно.
    2. Если говорить о конкретной литературе, которую стоит почитать, я бы выделил несколько уровней:
    Уровень 0
    1. Бизнес-аналитика - Паклин, Орешков (самое базовое и обзорное введение)
    2. Статистика/Тервер ( по мне, хороши книги Айвазяна/Мхитаряна)
    3. SQL - в обязательном порядке. Мне в свое время помогла книга "SQL для простых смертных"
    4. Изучаем Python - М. Лутц (наиболее полная книга по языку, все что нужно для data science здесь точно есть)
    5. Программируем коллективный разум (к слову сказать, вот в этой книге отличный перевод)
    Уровень 1
    1. Математические основы машинного обучения и прогнозирования - Вьюгин (книга сложная, без подготовки по учебникам НМУ на тему анализа и линейной алгебры лучше не подходить)
    2. Python for Data Analysis (pandas во всей красе, тут нечего добавить)
    3. Примеры и статьи по построению моделей в sklearn - на хабре в последнее время часто мелькают статьи на эту тему, там все достаточно хорошо расписано.
    Уровень 2
    1. Hadoop и иже с ним ("Hadoop в действии", "Programming Pig")
    2. Apache Spark - достаточно почитать описание Python API.
    Тут есть еще один момент - не стоит слишком привязываться к одному языку и фреймворку.
    Одна из неприятных проблем python+pandas+sklearn заключается в том, что эта связка слабо масштабируется - при 2-3-4 гб данных становится сложно разместить их в оперативной памяти. Я знаю про chunk-reading+partial_fit, но точность таких моделей оставляет желать лучшего.
    С другой стороны, если обрабатывать эти данные в pyspark, то теряется все удобство pandas.DataFrame и так далее. Отрасль data science быстро развивается и обрастает новыми технологиями, так что нужно все время держать руку на пульсе.
    UPD: в spark 1.3 появились DataFrame.
    Ответ написан
    4 комментария
  • Почему ClickHouse использует только одно ядро?

    SkryabinD
    @SkryabinD Автор вопроса
    Программирование, управление проектами.
    Сам спросил, сам разобрался. Дело было в локальной настройке сервера, в настройках GRUB во время тестов прописывали опцию isolcpus=0-30, которая запрещала системе использовать эти ядра, в результате системе оставалось только одно, 31-е ядро. Убрал опцию, и теперь clickhouse использует все ядра.
    Ответ написан
    Комментировать
  • С чего лучше начинать VisualBasic или C#?

    Nipheris
    @Nipheris Куратор тега C#
    Да какой VB, о чём вы) Его, при большом желании, можно поучить как второй/третий, если хотите устроиться в конкретную фирму или на конкретную позицию, но учить его первым.. Новый код на нём просто не пишут, это язык легаси. Да, VB в чём-то может и хорош для обучения, но нет, не тратьте сейчас на него время.

    Тут сам C# конкурирует с прочими популярными языками за место под солнцем (пусть и весьма успешно), а вы про Visual Basic :).
    Ответ написан
    Комментировать
  • С чего лучше начинать VisualBasic или C#?

    ibeetle
    @ibeetle
    Танцы с бубнами:)
    C#
    Ответ написан
    Комментировать
  • С чего лучше начинать VisualBasic или C#?

    lam0x86
    @lam0x86
    VisualBasic (тот, что .NET) почти ничем не отличается от C#, кроме синтаксиса. Есть даже конвертеры из одного языка в другой - пишете программу на VB, получаете на выходе C# (и наоборот). Но я не советую начинать с VB, так как это фактически мёртвый язык, несмотря на то, что в самом авторитетном рейтинге популярности языков программирования он выше C#. Причина тому - США. Там до сих пор активно нанимают VB-разработчиков, которым приходится поддерживать устаревший код. Особенно это касается банковского сектора. Платят за VB больше, но копаться в легаси - то ещё удовольствие.
    В общем, учитывая, что оба языка - детища Microsoft, и что сама компания активно продвигает C#, лучше сразу начинать с него.
    Ответ написан
    Комментировать
  • Что думаете о перспективах .NET и С#?

    @chibitko
    в данном случае, это всё равно, что спросить "Что думаете о перспективах Microsoft?"
    Ответ написан
    Комментировать
  • Как в RabbitMQ, или без него, настроить классическую очередь?

    tumbler
    @tumbler
    бекенд-разработчик на python
    из очереди берутся отчёты и отправляются серверу №1 для проверки и записи

    Ага, вот это место, в котором решается, оффлайн сервер№1 или онлайн.

    Потому что сервер №1 принимает всё последовательно

    А это главное требование.

    Вариант номер 1.
    Одна общая очередь, один воркер. Если сервер №1 оффлайн, воркер просто останавливает свою работу до тех пор, пока сервер не вернется. Для текущего сообщения надо выполнить amqp reject, тогда оно вернется в начало очереди.
    Порядок сообщений соблюден, но есть единая точка отказа, она же бутылочное горлышко производительности (впрочем, зависит от скорости обработки отчетов)

    Вариант №2.
    Одна общая очередь, много воркеров. Схема та же, сервер оффлайн - остановка обработки. Онлайн - возобновление. Узкое место по производительности и точка отказа исчезают, но два последовательных отчета от одного компьютера могут попасть одновременно на соседние воркеры, т.е. требование про "последовательно" может не выполняться.

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

    Как-то так. Сходу придумать, как заставить несколько воркеров обрабатывать одну очередь с сохранением порядка сообщений я не придумал.
    Ответ написан
    4 комментария
  • Выбрать СУБД между MySQL, PostgreSQL, MariaDB и MSSQL?

    afiskon
    @afiskon
    Тут есть про MySQL, MariaDB и PostgreSQL. Надеюсь, хотя бы частично ответит на ваш вопрос eax.me/postgresql-vs-mysql/
    Ответ написан
    Комментировать
  • Стек технологий для разработки корпоративного приложения с desktop клиентом?

    @d-stream
    Готовые решения - не подаю, но...
    Можно и в сторону трехзвенности посмотреть.
    Только вот WinForms - однозначно в трэш. Смотреть в сторону WPF.

    При должной организации архитектуры - получится конструкция, которая позволит "боковичком" встраивать и web-клиента (это может потребоваться в том или ином варианте интеграции с внешними сервисами/сайтом/мобильными клиентами)
    Ответ написан
    4 комментария
  • Разумен ли self-hosting ASP.NET Web API приложения в службе Windows? Кто-нибудь использовал такое в проде?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Есть мысли перейти на селфхостинг, однако есть опасения, что мировой опыт отвергает такой подход


    мопед не мой
    но:

    Сначала мы пошли по простому пути: прикрутили IIS, создали ASP.NET-приложение с фреймворком ASP.NET Web API и начали пилить бизнес-логику. Быстро стало понятно, что вся эта конструкция не держит больше 500-700 запросов в секунду. Как бы мы ни заклинали IIS, ни подкручивали 100500 параметров, проблема не решалась. И совсем доставало, что залезть внутрь IIS нет возможности, а значит полного контроля над ситуацией нам не добиться. IIS — пресловутый черный ящик, в котором тяжело что-то кардинально изменить.

    Тогда мы попробовали сервер проекта Katana (реализация OWIN-инфраструктуры от Microsoft). Katana — проект с открытым исходным кодом, поэтому можно было увидеть внутренности. К тому же, у Web API есть поддержка OWIN, а значит, сильно менять код не придется. Katana предоставляет возможность работать как с IIS, так и с их простым сервером, написанным на основе .NET-овского HttpListener. Именно его мы и взяли. Результат порадовал: теперь сервер держал около 2000 запросов в секунду, а ASP.NET приложение трансформировалось в Windows-сервис.

    Однако нагрузка на сервера увеличивалась, пилились новые фичи. Становилось понятно, что и этот вариант нас тоже не устраивает. Тогда мы пошли на кардинальные меры: от всей Катаны остался только HttpListener с небольшой обвязкой для асинхронности, от Web API не осталось ничего, то есть приложение стало полностью заточено под HTTP-запросы для биддера. В результате сервер стал способен обрабатывать до 9000 запросов в секунду. Вывод прост: вся OWIN- и Web API-обвязка оказывает критическое влияние на высокопроизводительные приложения. Хотите быстрее — пишите проще и неуниверсально. (Это не говорит о том, что внутри приложения должен быть ядерный говнокод. У нас всё модульно, вполне расширяемо: DI, паттерны и всё такое)


    источник - https://habr.com/company/targetix/blog/261745/
    Ответ написан
    1 комментарий
  • Как кликнуть по элементу в selenium webdriver c#?

    EreminD
    @EreminD
    Кое-что умею
    UPD:
    Browser.FindElement(By.CssSelector("span.rating > span:last-child")).Click();
    Ответ написан
  • Написание ботов для сайтов с AJAX, с помощью Selenium или PhantomJS. Как отслеживать изменения, вносимые в DOM уже JSом (либо сами AJAX-запросы)?

    alekciy
    @alekciy
    Вёбных дел мастер
    1) А зачем для такого выкосоуровнего инструмента отслеживать такую низкоуровневость как изменение DOM? Максимум что нужно это XPath для вытаскивания данных и wait() для ожидания появления данных вычисляемых через JS или подтягиваемых через AJAX.
    2) На сколько я помню ни каких. Банально даже статуст HTTP ответа получить нельзя.

    Нужно просто понимать, что Selenium и webdriver в частности писались для тестирования, а не написания ботов. То, что он используется и для ботов, просто побочный эффект. Поэтому что-то как ни крути придется допиливать руками. В контексте PhantomJS к примеру дописать для него JS скрипты (как вариант, стоит ознакомиться к CasperJS в котором какой-то набор JS уже написан) которые дополнят недостающий функционал.
    Ответ написан
    1 комментарий
  • Multipart/related/mixed/alternative когда какой Content-Type лучше вставлять в письмо?

    NeX
    @NeX
    habrahabr.ru/post/17531/
    mixed — используется, когда в рамках одного почтового сообщения имеется несколько независимых друг от друга, и равнозначных частей. Самый простой пример такого письма — сообщение с вложением.
    alternative — используется, когда в одном почтовом сообщении содержится несколько частей, содержащих одну и ту же информацию, предназначенную для отображения на различном клиентском ПО — например текстовая и HTML версия одного и того же письма.
    related — используется, когда в одном почтовом сообщении содержится несколько частей, формирующих один итоговый документ. Яркий пример — HTML письмо с картинками. Запомните, по стандарту только в этом случае должны работать ссылки на Contend-id элементов (вида ).
    Ответ написан
    1 комментарий
  • В чем преимущество C# перед Visual Basic NET

    @bald2b
    C# — официально флагманский язык платформы .Net. Поэтому гарантированно доступны все новые возможности платформы, первыми внедряются улучшения. VB.Net мне кажется тащат чтобы не утерять ветеранов, писавших еще на VB6. Возможно когда сочтут что аудитория сдуваются поступят как с J# и Visual FoxPro — выбросят на мороз прекратят развитие.
    Ответ написан
    Комментировать