• Как правильно распределять трафик на сервера?

    lightalex
    @lightalex Автор вопроса
    Night, два вопроса
    1) А что будет если один отвалится?
    2) Как они должны балансировать нагрузку между собой?
  • Как правильно распределять трафик на сервера?

    lightalex
    @lightalex Автор вопроса
    Вот вопрос то в том как сделать это гибкое распределение ресурсов. Просто в идеале вообще не допустить сбоя. То есть чтобы ни один пакет не потерялся.
    Вопрос в том - как этого добиться
  • Как правильно распределять трафик на сервера?

    lightalex
    @lightalex Автор вопроса
    Andrey Tsvetkov, а DNS при выборе учитывает завис сервер или нет? Также учитывается ли нагруженность сервера?
  • Как правильно распределять трафик на сервера?

    lightalex
    @lightalex Автор вопроса
    Andrey Tsvetkov, то есть, если говорить простым языком, то у нас есть допустим три сервера и на все три сервера приходит один и тот же пакет. Далее сервера решают кто из них будет обрабатывать пакет и в результате пакет уходит дальше только с одного сервера.
    Я правильно описал идею?
  • Как правильно распределять трафик на сервера?

    lightalex
    @lightalex Автор вопроса
    То есть по сути сервер один?
    Просто я думал что каким-то образом создается связка из нескольких серверов, которые страхуют друг друга
  • Как увеличить размер прокрутки страницы на javascript?

    lightalex
    @lightalex
    Сергей Гурджиян, такие вещи реализуются через перехват onscroll и ручное передвижение блока
    5a5744758769b283188049.png
    Так что вам не нужно менять дефолтный скролл
    Его надо ловить и блочить, а потом уже работать со страницей
  • Есть ли такое, готовое дополнение для Chrome, Opera, FF (взять XPATH и отправить в MySQL)?

    lightalex
    @lightalex
    Мой вам совет, напишите сами
    Расширения пишутся очень просто, если писать под Хром
    + расширение под Хром подходит под все перечисленные вами браузеры
    https://developer.chrome.com/extensions/
  • Как выполнить команду на сервере через php скрипт на другом сервере?

    lightalex
    @lightalex
    Bur Ov, во-первых проверьте правильно ли доходит до скрипта сама команда
    Во-вторых, уточните, вы по какому протоколу пытаетесь сделать запрос от скрипта к серверу?
  • Как правильно работать со скриптами в ajax-сайтах?

    lightalex
    @lightalex Автор вопроса
    Никита Полевой, огромное спасибо
    Вы сильно помогли этой ссылкой :)
    Я по большому за click переживал
    Обычные ванильные события удаляются вместе с удалением DOM объекта
    Я был не уверен что в картами такое прокатит
    А под "инклудить" я имел ввиду запускать скрипты относящиеся к запрашиваемому url
    Наверное не совсем корректно выразился...
    Еще раз спасибо за помощь :)
  • Как правильно работать со скриптами в ajax-сайтах?

    lightalex
    @lightalex Автор вопроса
    Никита Полевой, я затрудняюсь конкретнее сформулировать
    Скорее область памяти
    Я переживаю за то что, если я буду все время инклудить при ajax переходе со страницы на страницу кучу событий, то они будут накапливаться и негативно сказываться на быстродействии
    А удалять их все геморно
    По идее нужно делать какую-нибудь функцию "деструктор", где все будет подчищаться за скриптом
    Но это сложный вариант
    Может есть какой попроще?
  • Как отследить историю вкладки?

    lightalex
    @lightalex Автор вопроса
    KorniloFF, вооот
    Я пытаюсь выяснить есть ли какая-то лазейка, чтобы узнать с каких сайтов пользователь пришел
    Причем желательно несколько предыдущих страниц, а не только referrer
  • Как отследить историю вкладки?

    lightalex
    @lightalex Автор вопроса
    Боюсь это будет работать только с сайтом в котором будет наш скрипт :(
  • Как отследить историю вкладки?

    lightalex
    @lightalex Автор вопроса
    Никита Полевой, почему это?
    Иногда дает доступ
    Но не всегда, тут как браузер себя поведет
  • Как отследить историю вкладки?

    lightalex
    @lightalex Автор вопроса
    Никита Полевой, значит только предыдущую страницу как refer, так?
    Я тоже думаю что нельзя получить историю, но хочу на 100% убедиться
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    devalone, ок, спасибо за ваше мнение, я его услышал
    Просто как я уже говорил, в данном случае скорость достигается не асинхронностью
    Не там время экономится
    У класса свои методы, как работать быстрее
    Как я уже говорил, я не совсем по назначению использую данный класс в данном месте, поэтому и приходится применять вот такие костыли
    Когда я использую класс в нужном месте, нет смысла удерживать основной поток, так как он отправляет запрос, а дальше ему на него совершено наплевать. Задача основного потока просто вызывать метод
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    Александр Павлов, я там три точки поставил
    Подразумевается, что там будет произведен unlock
    Полный код выглядит как-то так:
    std::mutex locker;
    boost::thread t([&]() {
      locker.lock();
    });
    t.join();
    
    std::string info = "Hello world!";
    request->query("https://site.com/", [&]{
      std::cout << info;
      locker.unlock();
    });
    
    locker.lock();

    Основной поток будет существовать, пока callback не закончит свою работу. Конечно по хорошему нужно передавать переменные в callback, а не удерживать локальные переменные. Но в данном случае овчинка выделки не стоит :)
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    Александр Павлов, я прекрасно понимаю что я хочу сделать
    Ведь как вы уже наверное поняли, подразумевается что между двумя lock'ами произойдет unlock из вызванного потока
    Это просто для примера я написал два раза подряд lock, для демонстрации исключения
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    Александр Павлов, join'ом не получится
    Самый главный аргумент, что callback отправляется в отдельный поток, пока класс доделывает необходимые действия
    К тому же за один request->query может создаться несколько вложенных друг в друга потоков. И при этом callback может вообще не вызваться напрямую из текущего потока, так как класс может отправить запрос в очередь и тогда им займется вообще другой поток, который работает совершено независимо
    Короче говоря, не вариант
    А на счет применения блокировок... Почему я не могу их применить в данном случае? Раз где-то написано "применяется для синхронизации доступа к данным", это ведь не значит что нельзя с помощью блокировок синхронизировать потоки? Или имеются какие-то серьезные аргументы против?
    И кстати, я конечно не уверен, но вроде я все-таки пытаюсь как раз "синхронизировать доступ к данным". Даю потоку доступ к данным раньше, чем его получит оптимизатор памяти :)
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    devalone, я не зря сказал что там несколько потоков, один в другом
    Я знаю и про join, и про future&async
    Просто задача очень специфичная и требует именно такой реализации класса
    Тут идет ставка на скорость отправки запроса
    И там довольно сложный класс этим занимается
    Просто в данном куске кода я не совсем по назначению использую класс
    Фишка в том что таких мест 2-3, где не обязательно использовать возможности класса
    Но смысл ради эти 2-3 мест писать отдельный класс, когда данные куски кода вызываются крайне редко, а также там не требуется ни скорость, ни оптимизация? Бессмысленно, ведь можно костылить :)
    + мне было интересно выяснить что не так со вторым lock, что и определило создание вопроса на тостере
    P.S. на всякий случай уточню что программа пишется для личного использования, так что можно и немного грязи в коде допустить
  • Как правильно использовать блокировки?

    lightalex
    @lightalex Автор вопроса
    devalone, почему сразу бред?
    Просто костыль :)
    Я использую класс, который вызывает несколько потоков, один в другом
    И мне нужно дождаться пока все потоки совершат свою работу и только потом идти дальше по основной программе
    Там класс https запроса
    Код представляет из себя что-то типа этого:
    std::string info = "Hello world!";
    request->query("https://site.com/", [&]{
      std::cout << info;
    });

    И в результате info для callback'а становится недоступным, так как основной поток завершается и уничтожает все локальные переменные
    Можно конечно передавать нужные переменные в функцию callback'а, но это слишком геморно так как я использую много локальных переменных (это я для примера всего одну переменную написал)
    Так что легче просто удерживать основной поток, пока callback не завершит работу