Задать вопрос
  • Как запустить 5000 потоков параллельно с GET запросами?

    @danSamara
    У вас IO-bound задача, а это значит:
    1. Вам нужно асинхронное решение, которое позволит избавится от времени ожидание IO операций в основном цикле программы.
    2. Необходимо знать максимальное время обработки ответа (назовём его response_processing_time).
    3. Необходимо знать минимальное время запроса (timeout) - время, в течении которого удалённый сервер не оборвёт связь (пусть будет request_time_out).

    Последние два параметра связаны: response_processing_time > request_time_out * количество_запросов. То есть, если вы обрабатываете ответ сервера за 1мс или, другими словами обрабатываете 1000 запросов в секунду, это значит, что для тысячи запросов время соединения не должно быть меньше секунды. Для 5000 одновременных запросов - 5 секунд соответственно.
    Это ограничение фундаментально и обойти его не получиться - можно только оптимизировать: или железом - задействовать дополнительные ядра процессора и/или программно - уменьшением времени обработки запроса.
    Очевидно, что эти расчёты верны только для постоянного потока запросов, если у вас возможны паузы между запросами, то их надо вносить как поправочные коэффициенты.

    Касательно сути вопроса - на чём лучше делать, я бы рекомендовал Go - идеальный язык для всяких сетевых штук, можно сказать, это его родная стихия. Тем более, что задача простая и её реализация не должна занять много времени даже для человека, который никогда с GoLang дела не имел.
    Ответ написан
    Комментировать
  • В go нету встроенного reverse метода для массива?

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

    Поясняю, го это строго статически типизированный язык, в отличие от джаваскрипта, который является динамически типизированным. Поэтому чтобы сделать такую функцию, пришлось бы писать ее реализацию для всех возможных типов, а это невозможно. Да, можно покрыть все типы стандартной библиотеки, но это не покроет типы, которые сам пользователь может создать.
    Поэтому будет такая штука как дженерики (обобщения), это когда можешь написать функцию, которая работает со слайсом любого типа. И ей важно будет только то, что это слайс, она сможет переместить там элементы, не заглядывая в их тип.
    Ответ написан
    2 комментария
  • Удалённая работа Front-end разработчиком в 17 лет. Что нужно уметь и возможно ли устроиться?

    @AVKor
    Возможно ли в 17 устроиться на удалёнку

    Нет.
    Ответ написан
    Комментировать
  • Какой язык выучить для дальнейшего?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    renpy тебе позволяет использовать питон для написания новеллы. Но на этом всё. Больше плюсов нет, только проблемы. Питон - скриптовый язык, что тянет за собой кучу проблем, например, нормальную дистрибьюцию софта другим людям.
    Так что изучай C# и Unity
    Ответ написан
    6 комментариев
  • Что делать, если зарубежный работодатель кинет на зарплату (работа в сфере IT)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Я вас расстрою, но это риск, который просто придётся принять. Для ИПшника шанс выиграть суд у западной компании, не имеющей представительства в РФ, исчезающе мал.
    Ответ написан
    Комментировать
  • Как заставить программу использовать CPU только по мере небходимости?

    hint000
    @hint000
    у админа три руки
    Как он, например, узнаёт, нажата ли кнопка? Для этого надо выполнять цикл как можно чаще
    Как вы узнаёте утром, что надо просыпаться и идти на работу или в школу? Для этого надо всю ночь смотреть на часы как можно чаще. :)
    А можно просто "сказать" будильнику (или родственникам), чтобы разбудили в нужное время. Вот так и программа доверяет операционной системе "разбудить" её, когда кто-то нажмёт на кнопку. А пока никто не нажал, программа спит и не тратит ресурсы.
    Операционная система в любом случае знает обо всех нажатиях кнопок и обо всех движениях мыши, она решает, какой программе передать эти нажатия или движения, т.е. какую программу нужно разбудить сейчас. Как только программа обработает событие, она снова уснёт, если больше нечего обрабатывать.
    Ответ написан
    Комментировать
  • Как спарсить наклейки на предмете стим?

    Vindicar
    @Vindicar
    RTFM!
    Так же, как и всегда. Стим кучу инфы подгружает фоновым запросом.
    В инструментах разработчика в браузере смотришь XHR-запросы, которые делает страница.
    Ищешь запрос, которые содержит инфу о предметах.
    Разбираешься с его параметрами и содержимым, экспериментируешь. Скорее всего в параметрах будут какие-то ID инвентаря и указатель на то, сколько предметов пропускать (пагинация). Содержимое вроде у них JSON, который тривиально парсится одноименным модулем питона.
    А потом просто делаешь этот запрос, меняя параметры.
    Ответ написан
    1 комментарий
  • Мой код выглядит плохо или отлично?

    osvex
    @osvex
    Ответ написан
    Комментировать
  • Как сделать такую grid сетку?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Если именно такую, то делите столбики и строки вот так, и размещайте в ячейках картинки

    61b35b91ad434971757283.png
    Ответ написан
    Комментировать
  • Сервис по мониторингу рынка вакансий?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, работные сайты, типа hh.ru, имеющие эту информацию из первых рук, продают её за деньги и активно препятствуют парсингу. Во-вторых, как вам уже написали в комментариях, солидная часть нанимателей избегает оглашать вилку. В-третьих, во многих компаниях запрет на разглашение зарплаты прописан в NDA.
    Ответ написан
    9 комментариев
  • Какие обязанности в команде у джуна .Net?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    когда джуна пускают к нормальным задачам

    Когда тимлид считает, что джун к этому готов.

    и пускают ли вовсе?

    Зависит от компании.

    Стоит ли уйти в другую компанию, где область задач и опыт будут нормальными?

    Через годик, чтобы появилась возможность выбирать.
    Ответ написан
    8 комментариев
  • Как выполнить go run main.go при рестарте ubuntu?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    "Чтобы сервер запускался сразу при включении системы" вам не нужно выполнять go run main.go. go run -- это тестовые компиляция и запуск при эскизировании. Вам нужно сделать нормальный бинарник вашего сервера go build -o myserver main.go или go install. Полученный бинарник при включении системы можно запускать стандартными средствами -- юнитом systemd, записью cron или, самое простое, поместив команду в profile
    myserver &
    Ответ написан
    1 комментарий
  • Разрешения 755 для всех файлов и каталогов сайта это безопасно?

    @alekcena
    Нелинейный наставник
    Вам дают пистолет с предохранителем, чтобы вы не поранились.
    Вы его болгаркой отпиливаете. Тк как не понимаете зачем он нужен.
    Ответ написан
    Комментировать
  • Как запустить 5000 потоков параллельно с GET запросами?

    Vamp
    @Vamp
    Распараллелить выполнение в самом воркере с помощью ReactPHP или лучше GuzzleAsync. В таком случае не придется держать 5000 воркеров именно

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

    2. "Правильно ли" это вообще делать с помощью PHP или это все таки задача уже других языков которые умеют в параллельное выполнение, корутины? Go, NodeJs?

    У вас нагрузка в основном IO bound, так что не имет значения какой язык выбрать. Главное чтобы он поддерживал IO multiplexing (который поддерживается в PHP через вышеупомянутый curl_multi_exec).

    3. Может уже есть готовые решения в виде библиотек на PHP? Искал, но не нашел

    Guzzle
    Ответ написан
    3 комментария
  • Синтаксис find_element в Selenium 4?

    ScriptKiddo
    @ScriptKiddo
    https://www.selenium.dev/documentation/getting_sta...

    До

    driver.findElementsByClassName("className");
    driver.findElementsByCssSelector(".className");
    driver.findElementsById("elementId");
    driver.findElementsByLinkText("linkText");
    driver.findElementsByName("elementName");
    driver.findElementsByPartialLinkText("partialText");
    driver.findElementsByTagName("elementTagName");
    driver.findElementsByXPath("xPath");

    После

    driver.findElements(By.className("className"));
    driver.findElements(By.cssSelector(".className"));
    driver.findElements(By.id("elementId"));
    driver.findElements(By.linkText("linkText"));
    driver.findElements(By.name("elementName"));
    driver.findElements(By.partialLinkText("partialText"));
    driver.findElements(By.tagName("elementTagName"));
    driver.findElements(By.xpath("xPath"));


    Пример на Java, в Python аналогично

    By находится здесь

    from selenium.webdriver.common.by import By
    driver.find_element(By.XPATH, xpath)
    Ответ написан
    2 комментария
  • Как быстро и надежно закрывать задачи по сайту не нанимая программиста?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Я пишу со стороны программиста. У меня есть ряд старых клиентов, которые иногда просыпаются и просят что-то доделать. Стараюсь найти для них время и помочь.

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

    Тут есть один момент - разработчику обычно несложно взять подработку 5-10 часов в неделю. Но не стоит ждать, что человек всё бросит и всю неделю будет фулл-тайм колбасить ваши задачи. Если вы хотите, чтобы сделали большой объём быстро, тогда придётся каждый раз нанимать по новой. А если сможете разбить объём на маленькие части, которые можно делать, не отрываясь от основной работы, то вам должно быть по силам нанять такого человека.
    Ответ написан
    1 комментарий
  • Уместны ли каверзные вопросы на собеседовании?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Странный вопрос.
    На собеседовании все уместно. Ты же не забывай, что собеседование это не ЕГЕ.
    Это диалог двух сторон. Если кандидату не понравился вопрос, он может встать и уйти.
    Если он не знает ответ, он может что-то насочинять, и если ты грамотный специалист ты увидишь что он тут отгадывает или точно знает.

    У меня для собеседований есть небольшой опросник, в котором чуть ли не каждый второй вопрос идет с небольшим подвохом, и по полноте ответов я понимаю насколько глубоко кандидат шарит. Но мне не всегда необходимо найти того, кто ответит на все 100% вопросов развернуто.
    Я просто оцениваю что кандидат знает, а с чем сталкивался настолько регулярно что прям помнит наизусть детали без мануала.

    Поэтому и вопросы, которые могут касаться глубоких нюансов задавать можно не каждому подряд, а когда хочешь уточнить насколько глубока кроличья нора. Поставь перед сложным вопросом один попроще в эту тему и смотри имеет ли смысл задавать более сложный. Ну и глобально стоит оценивать, насколько правильный ответ на эту тему важен - бывает что просто не приходилось с таким сталкиваться и разбираться, но при случае там реально сразу гуглится ответ, и знать такое наизусть не обязательно
    Ответ написан
    2 комментария
  • Почему Thunderbird не логинит почту a.k.a. почему он не получает ответа от smtp.yandex.ru?

    5f02f4a25a7ca777967885.png
    Возможно, что у Вас стоит ограничение в настройках самой почты на сервере Яндекса. Так было у меня
    Ответ написан
    Комментировать
  • Можно ли реализовать авторизацию без cookies?

    DevMan
    @DevMan
    можно.
    только нужно ли.
    Ответ написан
    Комментировать
  • Как редактировать иерархию файлов?

    Если речь про .net Core, то никак (на счёт .net fw почти уверен, что аналогично)
    Все зависимости кладутся в ту же папку, куда и исполняемый файл.
    Если бесит большое количество файлов библиотек в папке с екзешником - используй single file app:
    https://docs.microsoft.com/en-us/dotnet/core/deplo...
    Ответ написан
    Комментировать