Задать вопрос
  • Почему у меня всегда разная скорость скачивания?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Проблема в том, что скорость, которую декларирует провайдер - это скорость последней мили, от провайдера к вам. А как там сложатся дела в интернете - провайдер гарантировать не может.

    Стим использует ряд трюков для ускорения закачки (тот же LEDBAT и многопоточное скачивание), у него мощные датацентры и CDN - отсюда и возможность выжать из вашей последней мили всю скорость.
    Ответ написан
    4 комментария
  • Суть макросов в с++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Макроссы часто используют для условного включения каких-то функций на этапе компиляции. Например, отладочного логирования. Тогда в зависимости от ключей компиляции можно получить релизный исполняемый файл вообще без этого ненужного кода.

    Еще макросы можно использовать для гарантирования инлайнинга кода. Если есть что-то часто повторяющееся, например, это же самое логирование, то можно сделать макросы и избегать дополнительных накладных расходов на вызовы функций.
    Ответ написан
    3 комментария
  • Как запретить пользоваталям в сети использовать VPN? как блокировать соединения?

    @nApoBo3
    Совсем DPI.
    Усложнить, заблокировать все исходящие соединения кроме HTTP/HTTPS/MAIL.
    Еще усложнить HTTP и HTTPS пускать через прокси.
    Дополнительно групповыми политиками запретить запуск VPN клиентов.

    Ну и самое главное. Должно быть распоряжение запрещающее использование таких средств в компании с соответствующей санкцией, дальше анализ трафика по пользователям и применение данного распоряжения.
    Ответ написан
    1 комментарий
  • Не подписывает документы. В чем проблема?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    В сертификате "Калуга астрал" видимо указан OCSP - сервис для онлайн-проверки статуса сертификатов. Пока данный сервис не будет онлайн/доступен, этим сертификатом ничего нельзя будет подписать, потому что он не может проверить статус отзыва.
    Загрузка CRL на компьютер ничего не решает - должен работать именно онлайн проверятор.
    Ответ написан
    Комментировать
  • Как пробросить все порты роутера?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    DMZ или режим моста, если такой имеется.
    Ответ написан
    1 комментарий
  • Почему провайдеры не могут заблокировать VPN?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Почему не могут-то? Могут. Просто такой команды пока не было. Погуглите, как с этим в Китае, например (с работой VPN). Или Вы думаете, тот факт, что Shadowsocks - китайская разработка - случайность? :)
    Ну и кроме того, не всякий VPN - это обход блокировок. В энтерпрайзе - это обычная технология обьединения филиалов с головным офисом и предоставления удаленного доступа сотрудникам.

    Предложил изменение вопроса - убрал тег "Шифрование"
    Ответ написан
    Комментировать
  • Как проверить работоспособность плашки ОЗУ?

    @kisaa
    Memtest86
    https://www.memtest86.com/

    Скачать, записать на флэшку, загрузиться, запустить, оставить на ночь.
    Ответ написан
    1 комментарий
  • Проверить первые 2 байта?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Окройте файл в ifstream в бинарном режиме и читайте 2 байта через read.

    Или используйте fread. Читайте 2 байта в буфер длинной 2.
    Ответ написан
    Комментировать
  • Какие есть книги по машинному коду?

    AMD64 Architecture Programmer’s Manual
    Intel 64 and IA-32 Architectures Software Developer Manual
    Ответ написан
    Комментировать
  • Почему вставка элементов занимает такое время?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Классический массив - это непрерывная область памяти, заполненная данными в порядке возрастания индексов. Чтобы вставить элемент в массив необходимо перенести часть уже имеющихся элементов, освободив место под вставляемый. При вставке в случайное место матожидание количества переносимых элементов будет n/2, соответственно сложность алгоритма оценивается в O(n). Добавление элемента в конец массива имеет сложность O(1), если нам известен текущий размер и мы не выходим за пределы памяти, выделенной для хранения массива. Если памяти недостаточно, то придётся выделить новый блок, перенести туда весь массив и освободить старый блок памяти. Эта процедура тоже занимает O(n).

    Вставка в список зависит от того, есть ли у нас указатель на то место, куда надо вставить новый элемент. Если нет, то сначала необходимо выполнить поиск, который оценивается в O(n). Сама вставка, при этом, не требует перемещения других элементов и всегда выполняется за O(1).
    Ответ написан
    Комментировать
  • Это нормальные результаты трассировки?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Трассировка - это ICMP. Обработка ICMP, или во всяком случае обработка ping и отправка pong - это задача с низшим приоритетом для любого узла за редчайшим исключением. Потому даже 100% потерь ни о чём не говорят. TCP или UDP пинг был бы более информативен, но с ними есть определённые сложности - при отсутствии специального ПО на целевом узле результаты будут весьма приблизительными.

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

    egor_nullptr
    @egor_nullptr
    Если вы успели закоммитить свои изменения, то найдите этот коммит при помощи git reflog и переключитесь на него при помощи git checkout.
    Ответ написан
    2 комментария
  • Как убрать OEM программы при переустановке Windows?

    Adler_lug
    @Adler_lug
    Просто установите ту же самую редакцию Winodws, что у вас была предустановлена и лицензию сохраните и от мусора избавитесь.
    Ответ написан
    8 комментариев
  • Как вставить определенное слово в строку в необходимом мне месте?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Не так почти в каждой строчке.

    Во-первых, зачем вам структура из четырех строк? Зачем вам массив из нее на 1000 элементов.

    Вот это вообще что за хрень?
    for (i; i < 1; i++) {

    Вас этот цикл из одной итерации нисколько не напрягает?

    Далее, в задании четко сказано
    Разработать функцию, которая вставляет в предложение заданное слово. Новое слово должно стать в предложении n-м (n задается как третий параметр функции)


    Т.е. вам надо взять одну функцию, и вызвать ее 3 раза с передавая туда то 1, то 2, то 5, а не писать 3 Poshuk'а.

    Далее, во всех ваших функциях вы обращаетесь к list[] по разным индексам, но у вас только один первый элемент массива вводится (опять, нахрена вам целый массив структур, если в задаче дано ровно 3 строки и одно слово?!)

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

    Чтобы сдвигать символы в строке вам надо сначала найти ее длину, потом с длина+k циклом пройтись назад до крайнего сдвигаемого индекса и присваивать текущему символу значение символа по индексу i-k.
    Ответ написан
    Комментировать
  • Что лучше выбрать Partitioning или вынос данных в другую базу (таблицу)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, человек выстрелил себе в ногу, но ищет почему-то партитуру Маленькой ночной серенады Моцарта.
    Казалось бы, при чем здесь партиционирование, если проблема в том, что в БД хранятся файлы?

    Ну вот как можно быть настолько слепым, и не видеть реальной проблемы, а уноситься фантазиями в какие-то совершенно голубые дали, вообще никак не связанные с реальностью?

    Партиционирование применяется, когда в БД много строк.
    А физический размер БД не имеет значения.

    Надо во-первых, выкинуть файлы из БД
    А во-вторых, решать только реальные проблемы, а не "что-то у меня база растолстела"
    Ответ написан
    2 комментария
  • Почему в СТЕКЕ разрешается выделять достаточно мало памяти?

    Adamos
    @Adamos
    Большинство ресурсов выделяется динамически? Но ведь это намного дороже, чем в стеке.

    О дороговизне выделения памяти необходимо помнить, если это происходит часто: в цикле, в постоянно вызываемых функциях и т.п. Вряд ли вы области на многомегабайт выделяете миллионы раз в секунду. А если вы время от времени хапаете памяти мегабайтами и потом сравнительно долго работаете с ней - собственно затраты на ее выделение пренебрежимо малы.
    Ответ написан
    Комментировать
  • Почему в СТЕКЕ разрешается выделять достаточно мало памяти?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Да, большинство ресурсов выделяется динамически.

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

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

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

    Edit: да, если вам нужно больше стека, можно сделать так, чтобы программа получала больше стека. В С++ это делается параметром линкера.
    Ответ написан
    Комментировать
  • Удалённая работа в зарубежной компании — какие есть подводные камни?

    gdt
    @gdt
    Программист
    Работаю удалённо, получаю в валюте, всё ок. Если компания грамотная - то даже в текущей ситуации (пока что) все проблемы можно решить. Проблемы с получением валюты есть только у тех банков, которые попали под санкции, в других банках всё работает. Конечно, на работу людей из РФ сейчас стали принимать гораздо меньше из-за рисков (понятно каких я надеюсь), но в целом всё ещё предлагают - с начала марта 2-3 предложения получил, из которых одно достойное (не хуже, чем у меня сейчас).
    Как говорится, стучите - и вам откроют, дорогу осилит идущий и тд и тп. Не слушайте никого, во всем мире полно как идиотов, так и вполне адекватных людей, которые будут к вам относится нормально вне зависимости от национальность.

    Как происходит перевод оклада.
    Чаще всего оформиться в штат в зарубежную компанию сложно, поэтому открывается ИП, и заключается контракт на услуги консультанта. В банке создаете валютную сделку, туда прикрепляете контракт (как основание для получения денег). Затем раз в учетный период (месяц) вы выставляете счет своей компании, в котором прописываете сумму, оговорённую в контракте, этот счёт отправляете в компанию и в банк. Компания отправляет деньги, они идут обычно несколько дней, когда доходят - вы получаете уведомление от банка, что на ваш транзитный счёт упала валюта. Тут начинается валютный контроль - специально обученные люди смотрят ваш контракт, инвойс (счёт) и перевод, если всё совпадает - получаете свою валюту (с новыми правилами 80% сразу превращаются в рубли). Не совпадает - пишут чего не хватает, компания делает доп документы, отправляете в банк, всё получается.

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

    P. S. По упрощенке ИП платит 6% налога + 1% на сумму свыше 300000р (есть ещё другие обязательные взносы, но они идут в вычет, если всё вовремя платить, так что всё равно выходит 6%). В РФ в ФОТ штатских сотрудников отчисления занимают больше 30%.
    Ответ написан
    2 комментария
  • Безопасен ли общий IP для VPN?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Очередное супер-пупер VPN-приложение, которое неизвестно кто админит? Чувак, есть немалая вероятность того, что этот VPN админится спецслужбами той или иной страны - может быть не напрямую, а "на кривую", но инфа все равно сливается вся.
    Единственный надежный VPN - свой
    Ответ написан
    Комментировать
  • Лаконичный код, для нуба на Python =/ _main_, _name_?

    Vindicar
    @Vindicar
    RTFM!
    Это несложно, на самом деле.
    Когда ты делаешь import module_name, Питон ищет либо файл module_name.py, либо пакет module_name. Про пакеты пока говорить не будем. Если такой файл нашелся, и он ещё не был импортирован, то он выполняется в контексте импортирующего скрипта. При этом получается объект-модуль, и ссылка на него помещается в переменную module_name в импортирующем скрипте.
    Пример:
    # a.py
    def somefunc():
        print('Hi!')
    
    print('a is executed')
    
    # b.py
    import a  # >>> a is executed
    a.somefunc()  # >>> Hi!

    Имя, под которым импортируется модуль, помещается в переменную __name__. Изменим код так:
    # a.py
    def somefunc():
        print('Hi!')
    
    print(__name__, 'is executed')
    
    # b.py
    import a  # >>> a is executed
    a.somefunc()  # >>> Hi!
    print('And I am', __name__)  # >>> And I am __main__

    Таким образом, мы видим, что для исполняемого скрипта переменная __name__ содержит строку "__main__", а импортируемые скрипты увидят в ней только своё имя. Причем неважно, если ты переименуешь модуль:
    # a.py
    def somefunc():
        print('Hi!')
    
    print(__name__, 'is executed')
    
    # b.py
    # импортируем модуль и переименовываем его
    import a as d  # >>> a is executed
    d.somefunc()  # >>> Hi!
    print('And I am', __name__)  # >>> And I am __main__

    Именно эта особенность и позволяет писать код, который выполнится только если питон-скрипт выполняется непосредственно.
    # a.py
    # Этот код выполнится в любом случае
    def somefunc():
        print('Hi!')
    
    if __name__ == '__main__':
        # этот код выполнится только если a выполняется непосредственно
        print(__name__, 'is executed') # Всегда выведет __main__ is executed
    else:
        # а этот код выполнится только если a импортируется в другой модуль
        print('Imported as', __name__)
    # b.py
    import a  # >>> Imported as a
    a.somefunc()  # >>> Hi!
    print('And I am', __name__)  # >>> And I am __main__
    Ответ написан
    1 комментарий