• Softether vpn server исчезает инет почему?

    @res2001
    Developer, ex-admin
    Видимо, ВПН сервер становится шлюзом по умолчанию при подключении к ВПН и весь трафик начинает идти через ВПН сервер. Если ВПН сервер не предназначен для этого (не настроен) или если он "тормозит", то может возникнуть впечатление, что интернет не работает.
    Нужен ли вам режим "шлюза по умолчанию" или нет - зависит от того для чего вам ВПН.
    Этот режим, как правило, можно отключить, но это не обязательно то что вам нужно.
    Проверить наличие этого режима можно в настройках ВПН сервера или клиента, или сравнить маршрут по умолчанию до и после подключения к ВПН стандартными средствами ОС.
    Ответ написан
    1 комментарий
  • Подводные камни удаленной работы на организацию в другом регионе РФ (с оформлением в штат)?

    @res2001
    Developer, ex-admin
    Одно время работал на компанию, находящуюся на другом конце страны, разница во времени 8 часов. Все нормально. Когда надо было пообщаться с офисом приходилось предпринимать дополнительные действия - встать рано или наоборот. При приеме это все обсуждалось, график работы зафиксирован в договоре.
    С трудовой проблем не было - отправил почтой первым классом. У меня то же были опасения на счет трудовой и я перед отправкой сделал нотариально заверенную копию, не пригодилась. Потом оформил электронную трудовую, что и вам рекомендую (это должен делать работодатель, вам надо только написать заявление).
    Почта, кстати, работает нормально. Заказные письма ходят достаточно быстро, ни разу косяков не было. Первый класс - чуть дороже и чуть быстрей, но не критично. Только надо определится с оптимальным временем посещения этого заведения, т.к. в часы пик там обычно много народу. У меня до сих пор оптимально 12-16.

    Трудовой договор и прочие документы можно отправлять обычным заказным письмом.
    Хорошо иметь дома принтер (подойдет черно-белый), т.к. регулярно надо будет что-то печатать/подписывать/пересылать, не часто, но 3-4 раза в год точно.

    В другом месте работы меня позвали на 2 недели на стажировку, так что все документы привез сам. Перед стажировкой все собеседования уже прошли и решение о приеме уже было принято. Стажировка по факту не особо была нужна, но было полезно в том плане, что познакомился с коллективом и с начальством лично, ну и плюс все оформление прошло на месте. Контора оплатила проживание и билеты.

    Еще один момент - если в вашем регионе или в регионе работодателя действуют полярки и/или северные коэффициенты (надбавки к окладу), то на этом надо заострить внимание, т.к. от региона к региону коэффициенты разные. Вы должны получать эти надбавки согласно месту вашей работы - в трудовом договоре должно быть указано, что вы работает по месту нахождения (жительства) и ваш регион. Работодатели порой сами не особо этот момент просекают, потом пытаются задним числом исправлять. Сам ходил по этим граблям. В Москве этих надбавок нет, но в регионе работодателя они могут быть.
    Ответ написан
    Комментировать
  • Как проверить ping до игрового сервера?

    @res2001
    Developer, ex-admin
    Пинг - это команда:
    ping <IP адрес сервера>
    ping использует протокол ICMP для запросов и ответов. ICMP может быть заблокирован фаерволом на хостах в интернете, так что успешное прохождение не гарантируется.
    Ответ написан
  • Какая книга по c++ на данный момент актуальна, годна?

    @res2001
    Developer, ex-admin
    Если учить с нуля, то сгодится любая толстая книга по языку более-менее современного издания. Смотрите, что бы в ней был учтен хотя бы стандарт С++11 или С++14. Не пытайтесь найти учебник с самым последним стандартом - их нет. Например, Прата или Лафоре последних изданий сгодятся вполне. Тот же Лоспинозо, судя по содержанию, наверное то же подойдет.
    Дальше уже надо будет углубляться в зависимости от сферы деятельности и интересов.
    Углубленно именно по языку в разных направлениях на русском могу порекомендовать:
    1. Майерс "Эффективный и современный С++. 42 рекомендации ..." - толково о нововведениях в С++11/14.
    2. Уильямс "C++. Практика многопоточного программирования"
    3. Гантерот "Оптимизация программ на C++" - рассказывает про устройство STL, что и в каких случаях лучше применять с замерами производительности и т.п.
    Все 3 книги не для новичков, требуют уже нормального понимания базовых принципов и некоторой практики.
    Ответ написан
    Комментировать
  • Как заменить символ во всех файлах?

    @res2001
    Developer, ex-admin
    Для обхода файлов по маске используете цикл for. Из переменной цикла с помощью модификаторов получаете имя файла. С помощью операции замены подстроки в команде set делаете замену в имени файла. С помощью ren задаете файлу новое имя.
    Для справки:
    for /?
    set /?
    ren /?
    setlocal /?

    Модификаторы для переменной цикла описаны в справке по for.
    В теле цикла вам придется изменять переменные и тут же использовать новые значения. По умолчанию в батниках это не работает. Чтоб работало надо в самом начале дать команду
    setlocal ENABLEDELAYEDEXPANSION
    Затем для обращение к переменной в нутри цикла использовать восклицательные знаки, а не знаки процента, например так: !var!. Это приведет к отложенной подстановке переменных в команду. Переменная цикла всегда работает с процентами %%i
    Ответ написан
    Комментировать
  • Как закрепить ярлык на панели задач через gpo?

    @res2001
    Developer, ex-admin
    Ответ написан
    Комментировать
  • Где найти полное руководство пользователя по Линуксу?

    @res2001
    Developer, ex-admin
    Дистрибутив Linux - это такой конструктор из нескольких достаточно глобальных вещей, которые могут меняться от дистрибутива к дистрибутиву, но их не так много и количество комбинаций не то что бы сильно велико. Но т.к. это конструктор, то общей "всебъемлющей" документации нет (кроме страниц ман, по понятным причинам) - в этот конструктор входит ПО, которое делают разные люди, часто никак не связанные с теми кто выпускает конкретный дистрибутив.
    То что объединяет все дистрибутивы - это ядро линукс и набор "стандартных" утилит. По утилитам подойдут любые книжки по администрированию линукс. Про ядро то же можно что-нибудь найти, если вы программист.

    То что отличает дистрибутивы один от другого:
    1. пакетный менеджер: отвечает за установку и обновление софта, а так же за обновление всей ОС
    2. системный менеджер: чаще всего сейчас это systemd, но есть и альтернативы, он отвечает за старт ОС, за запуск служб и т.п.
    3. GUI - графических оболочек довольно много, хотя часто ноги растут из гнома или кед, каждый дистрибутив пытается добавить что-то свое отличительно в GUI оболочку, чтоб его можно было узнавать на фоне других. Но именно этот аспект ОС по большому счету не сильно важен - управлять ОС, в т.ч. и GUI можно из командной строки. Сейчас в GUI уже есть довольно много инструментов для управления ОС, но далеко не все.

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

    Так что изучать нужно конкретный пакетный менеджер, конкретный системный менеджер, конкретную графическую оболочку, которые используются в конкретном дистрибутиве по документации на их сайтах. А так же стандартный набор утилит и стандартные правила работы Linux, которые едины для всех дистрибутивов и по ним есть книги.
    Ответ написан
    Комментировать
  • Две сессии на win 10, возможно?

    @res2001
    Developer, ex-admin
    RDPWrapper позволяет такое делать, ищите на гитхабе. Но это нарушение лицензии.
    Ответ написан
  • Почему протокол UDP считается привитым от DDOS-атак?

    @res2001
    Developer, ex-admin
    Кто вам сказал, что больше 0xFFFF TCP соединений нельзя принять? Видимо вы сделали этот не правильный вывод исходя из того, что номер порта - двухбайтовое целое? Но в случае принимающей стороны будет использоваться один и тот же порт (который открыт для прослушивания) для всех принятых соединений.
    ко мне делают запросы каждый комп. с интернетом во всем мире одновременно

    Хочу напомнить, что, например, Ethernet - последовательный канал. В один момент времени по нему может передаваться только один пакет данных, все остальные либо встанут в очередь где-то на промежуточном маршрутизаторе, либо будут отброшены, когда очередь переполнится. То же самое касается и оптических линий и прочего. Так что из всего мира только первый счастливчик прорвется, остальные будут курить в сторонке пока ваш комп принимает первый пакет.

    Сам по себе UDP, как писали предыдущие отвечающие, не предполагает подтверждения получения пакета, поэтому он и работает быстрее - меньше накладных расходов. Видимо из-за этого и кем-то считается, что он не подвержен DDoS. Но! Многие приложения, работающие через UDP строят поверх UDP свой собственный протокол, который может гарантировать доставку даже поверх UDP. Например OpenVPN. В этом случае DDoS вполне сработает.
    Вообще DDoS атака направлена на то, что принимающий сервис не сможет обработать корректный запрос. Это может произойти по нескольким причинам:
    1. принимающий сервис умер из-за большого количества запросов или настолько загружен, что начал пропускать запросы.
    2. канал связи забит левым трафиком и нормальные запросы не могут прорваться. При этом сам сервис может чувствовать себя прекрасно - трафик в канале может быть произвольный, не обязательно направленный именно на этот сервис.
    Оба варианта - успех DDoS атаки. При этом второму варианту пофигу какой протокол использует сервис и есть ли у него гарантия доставки. Важно то, что сервис не получит корректного трафика, что то же будет успехом DDoS.
    Ответ написан
  • C - как сделать замену подстроки в строке (руками)?

    @res2001
    Developer, ex-admin
    1. Не правильно вычисляете размер будущей строки в первом случае. В первом случае результирующая строка будет меньше оригинальной, у вас же получается больше.
    2. Не выделяете место под завершающий нулевой символ. Вообще завершающий ноль вы полностью игнорируете. Без него у вас в итоге получится не строка, а массив символов. Раз уж вы делаете все в ручную, то и завершающий ноль надо проставлять руками.
    3. Согласен с Wataru на счет startsof и трех циклов.
    4. Я бы сначала искал вхождение строки замены и только если оно найдено производил бы необходимые действия, в т.ч. и выделение памяти под новую строку. У вас же сейчас предполагается, что подстрока замены всегда найдется, что в общем случае не верно.
    5. Что будете возвращать, если замены не будет? Будете просто выделять память под новую строку и возвращать новую строку аналогичную оригинальной? Или будете возвращать указатель оригинальной строки? Но тогда будет мешать квалификатор const для str1. А кроме того, если возвращать указатель на оригинальную строку, то что должен делать вызывающий код со старой строкой? Т.е. если замена была, то вы возвращаете новую строку и в вызывающем коде старую строку можно удалить. А если строка не найдена, то старую строку удалить нельзя, т.к. вы вернули указатель на нее же. В общем надо еще продумать как возвращать результат. Я бы на самом деле возвращал признак была замена или нет (или количество замен), а результирующий указатель надо возвращать в дополнительном параметре. Если замен нет, то либо указатель не возвращается, либо возвращается указатель на str1.
    6. в качестве оптимизации:
    for (int i = 0; i < strlength(str1); i++)
    Вызываете на каждой итерации strlength.
    Ответ написан
    1 комментарий
  • Разбиение локалки на подсети?

    @res2001
    Developer, ex-admin
    Петр, В целом вы правы, это работает так как вы описали. Добавлю, что маска не обязана содержать только 0 и 255 - в ней могут быть любые числа, где в двоичном представлении старшие биты заполнены единицами, а младшие нулями (0 и 255 - частные случаи - все нули и все единицы), чем меньше единиц в маске - тем шире диапазон, каждая дополнительная единица в маске уменьшает доступный диапазон адресов в 2 раза.

    Но Если у вас в реальности 10 (20, 30, <200) компов, то нет смысла увеличивать маску. Проще при той же маске, отдать какой-то диапазон адресов роутерам, другой диапазон серверам, третий - пользовательским компам. Все диапазоны - чисто формальные у вас в голове для простоты эксплуатации - сеть все равно остается одной с единым широковещательным доменом.

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

    @res2001
    Developer, ex-admin
    Для вывода окна с сообщением раньше была команда msg. Но сейчас я ее не обнаружил у себя в Вин10. Возможно ее нет в домашней версии, а в Pro есть.

    Про отключение устройств - у микрософт есть утилита командной строки devcon. Но она не входит в комплект по умолчанию, она есть в составе какого-то SDK у микрософт, гуглите. Эта утилита не показывает окон - все свои действия она выполняет в командной строке, все действия, которые она должна совершить задаются параметрами утилиты.

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

    Итог: ваши хотелки на bat/cmd штатными средствами не реализовать.
    Либо вы используете сторонние утилиты, либо используете другой инструмент - думаю, в том же powershell это все можно сделать. Так же в винде из коробки доступны VBScript и JScript их то же можно копнуть.
    Ответ написан
    Комментировать
  • Как соеденить две линии интернета?

    @res2001
    Developer, ex-admin
    Проще всего использовать роутер, который умеет использовать одновременно 2 внешних линии. Чаще всего в простых роутерах с поддержкой резервирования канала одна линий рабочая, вторая резервная, т.е. не используется. Вам же нужно использовать одновременно обе линии, так что роутер нужен соответствующий. Конкретную модель не подскажу.

    Подобный маршрутизатор можно собрать и самому, если очень хочется. Собирал такое в свое время на FreeBSD с использованием принципов policy based routing в тамошнем фаерволе ipfw и множественных таблиц маршрутизации. По моему, аналогичную штуку можно реализовать и на Linux, но тут я не в курсе. Дело это не легкое, требует серьезного погружения в тему и знаний работы IP протокола, принципов маршрутизации, используемого фаервола.
    Видимо нечто подобное реализовано по ссылке в ответе ValdikSS
    На винде сделать это из коробки нельзя. Возможно есть какое-то стороннее ПО для этого.
    Ответ написан
    Комментировать
  • Почему программа требует константу?

    @res2001
    Developer, ex-admin
    Наверное стоит обратится к учебнику по Си почему именно так.
    Изначально автоматические массивы в Си имели фиксированный размер, т.е. размер надо задавать константой.
    Отличие константы от обычной переменной - компилятор в процессе компиляции знает значение константы, а значение переменной нет. В процессе компиляции компилятор может сгенерировать команды для выделения памяти под массив.

    Начиная с С99 (это такой стандарт Си от 1999 года) появились VLA (Variable Length Array). Синтаксис такой же как и у обычных массивов, но они могут иметь изменяемый размер, т.е. размер можно задавать обычной переменной.
    Использование VLA влечет дополнительные расходы времени выполнения, поэтому многие принципиально не используют эту возможность (например ядро Linux). И это вполне оправданно еще и потому, что память под VLA массивы выделяется на стеке, пространство стека ограничено, а вы с дуру можете там выделить слишком большой массив, что вызовет переполнение стека.

    Большинство компиляторов поддерживают VLA, но судя по ошибке, вы используете микрософтовский компилятор. Микрософт никогда не славилась поддержкой стандартов Си. VLA в ее компилятор не завезли до сих пор.
    Ответ написан
    Комментировать
  • Запуск OpenVPN клиента и сервера на одной машине. Как?

    @res2001
    Developer, ex-admin
    Проблема, видимо, в том, что при подключении ВПН клиента шлюзом по умолчанию становится ВПН-сервер, к которому подключается ВПН клиент. Нужно убрать это поведение (опция push "redirect-gateway def1" в конфиге ВПН сервера 10.36.0.1).
    В целом, не вижу проблем, что бы клиент и сервер работали параллельно на одном компе, если они оба не будут трогать настройки шлюза по умолчанию. Скорее всего для правильной маршрутизации трафика придется добавлять статические маршруты или прописывать правила фаервола, перенаправляющие определенный трафик в нужный интерфейс.
    Ответ написан
  • Как добавить lib файл в g++?

    @res2001
    Developer, ex-admin
    Файлы *.lib - это для микрософтовского компилятора.
    gcc нужны либо *.dll (для динамических библиотек), либо *.a (для статических).
    Ответ написан
    1 комментарий
  • Какой подход использовать в многопоточном программировании на Си?

    @res2001
    Developer, ex-admin
    Макросы это просто один из инструментов, который предоставляет язык. Использовать его или не использовать ваше дело, многопоточность тут не при делах.
    Один и тот же код может моментально стать не потокобезопасным, как только появляются не защищенные разделяемые между потоками данные, которые использует код. При этом сам код может не поменяться, просто вы решили добавить поток и использовать в нем те же данные. Данные сразу же становятся разделяемыми и нужно их использование защищать везде, где они раньше использовались "беззащитными", будь то обычный код или код в макросах.
    Ответ написан
    Комментировать
  • Нет интернета хотя подключен к wifi ;(?

    @res2001
    Developer, ex-admin
    Linux_nub, Можете протестировать вашу сеть WiFi с помощью другого устройства. Если другие устройства подключаются и работают с вашим WiFi нормально, в т.ч. и с вашего раб.места и при изменении места расположения устройства (удаление/приближение к WiFi роутеру), то скорее всего проблема все таки в WiFi адаптере.

    Может ли проблема быть не в адаптере??

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

    Через какую кнопку?

    Если проблема не в адаптере, то, возможно, у вас где-то между роутером и вашим раб.местом сильные помехи. Когда подходите ближе, уровень сигнала увеличивается и помехи меньше влияют (или просто вы выходите из зоны помех).
    Самое простое решение - найти что может так сильно фонить и выключить эти помехи. Но это не всегда возможно.
    Еще более-менее простой вариант - кинуть кабель до раб.места.
    Другой вариант - подвинуть роутер ближе к вашему раб.месту или перенести раб.место к роутеру.
    Направленные антенны в рамках одного помещения не рассматриваю, в этом случае вариант с кабелем предпочтительней.

    Кроме помех, может быть повреждена антенна WiFi адаптера (это равносильно не исправности WiFi адаптера), что может приводить к низкому уровню сигнала (или его отсутствию) даже без помех при удалении от роутера. В этом случае вариант с тестированием поможет выявить подобную проблему. Не забудьте протестировать на разных дистанциях от точки доступа (WiFi роутера). При отсутствии сильных помех в помещении WiFi нормально работает в радиусе 15-25 м. Может и дальше, но там уже сильно зависит от конкретных условий (стены, помехи и т.п.).
    Ответ написан
    Комментировать
  • Как изменить атрибуты в объекте C++ через ввод?

    @res2001
    Developer, ex-admin
    Ошибка, очевидно, тут: cin >> mark;
    У вас mark - это указатель (а не строка). При этом указатель никуда не указывает (не инициализирован). Следовательно память под чтение не выделена. Куда по вашему должна попадать прочитанная информация?
    Напомню, что указатель это целое беззнаковое число (размером в 4 или 8 байт в зависимости от платформы, могут быть и другие варианты, но это больше экзотика), которое интерпертируется как адрес в памяти. Если в указателе мусор (как сейчас), то запись по этому указателю вызовет SEGFAULT при выполнении программы, вам повезло - компилятор сам заметил эту ошибку, с SEGFAULTом разбираться обычно труднее.

    Но и это еще не все.
    В следующей строке вы создаете временный объект Car с помощью вызова конструктора, после выхода из Input этот объект сразу уничтожается.

    Вам нужно:
    1. выделить память под marka. Лучше всего использовать не char*, а std::string, тогда память будет выделяться автоматически.
    2. читать ввод не в mark, а в marka. То же самое и для других двух переменных класса.
    Ответ написан
    1 комментарий
  • Как ускорить работу скрипта?

    @res2001
    Developer, ex-admin
    Один из файлов (меньший) сразу читайте весь (блоками, об этом ниже) и каждую строку помещайте в std::unordered_set<std::string>.
    Второй файл - построчно проверяете находится ли строка в set.

    Читать файлы лучше не строками, а большими блоками (4Кб или больше). Наибольшее время занимают именно операции чтения файла. Читая файл большими блоками вы сокращаете количество операций чтения. Дальше работаете с блоком - вручную делите его на строки и т.д. Не забываете, что блок не обязан заканчиваться и начинаться ровно в конце или начале строки.

    Если еще более оптимизировать, то std::unordered_set<std::string> лучше заменить на std::unordered_set<const char*> или std::unordered_set<std::string_view>.
    Смысл в том, что std::string под каждую строку будет выделять динамическую память - выделение памяти само по себе медленная операции (конечно быстрее, чем чтение файла, но тем не менее), а тут вы сначала прочитаете кусок файла в большой блок который будет выделен в динамической памяти, а затем под каждую строку из этого блока будете еще раз выделять память. Поэтому лучше при чтении большими блоками первого файла выделять блок динамически и сразу прям внутри блока делить его на строки (т.е. добавлять символ '\0' в конце каждой строки) и указатель на начало каждой строки добавлять в set (или делать из него std::string_view и уже его добавлять в set).
    Естественно выделенные блоки первого файла вам придется учитывать вручную (например хранить указатели на блоки в векторе) и после освобождения setа освобождать каждый блок (а не каждую строку).
    Для второго файла будет достаточно одного блока.
    Ответ написан
    Комментировать