• Как перенаправить tcp/udp трафик с доменов с одинаковым айпи?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Я вам подскажу: внутри TCP и UDP, если это не HTTP, нет имени домена. Вот совсем нет. Он используется в момент перевода доменного имени -> в IP-адрес, что бы потом создать коннект на этот IP-адрес. Он используется в HTTP-запросе, так исторически сложилось. Но в простом TCP и UDP его НЕТ, трафик приходит к вам БЕЗ доменного имени.

    Облом, желанное - не получится.
    Ответ написан
    5 комментариев
  • Как убрать потерю покетов?

    hint000
    @hint000
    у админа три руки
    Авторам предыдущих ответов и комментариев, mayton2019, Stalker_RED, Dimonchik, Drno,
    ребята, да что с вами сегодня, тяжелый день или не проснулись? :) Я знаю, что вы все можете лучше.

    Смотрим на вывод WinMTR на скриншоте.
    первый хоп - домашний роутер - потерь нет;
    второй хоп - шлюз провайдера (Казахстан) - потерь нет; собственно, на этом вопрос можно и закрыть, но нет;
    пятый хоп - IX Санкт-Петербург - потерь нет;
    десятый хоп - США;
    целевой хост - непонятно где, но диапазон адресов выделен Японии, значит считаем, что так и есть.
    Вообще, не кажется странным такой маршрут - из Казахстана через Питер и США в Японию?
    Ответ написан
    8 комментариев
  • Нужно ли подключать все необходимые заголовки если они подтягиваются из других заголовков?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    В контексте использования директивы #include есть два важных принципа.
    Важный из этих двух сейчас - это принцип Include What You Use.

    Суть сводится к тому, что файлы исходного кода формирующие модуль трансляции должны в правильном порядке подключать все заголовки, объявления которых используют. Транзитивные включения не считаются. Методология соответствия IWYU включает в себя и правило перечисления подключаемых заголовков - от общих к частным. Именно таким образом должна обеспечиваться оптимальная скорость формирования модуля трансляции.
    И с этим связано несколько проблем. Основные я опишу ниже.
    Наивное следование IWYU в сложных проектах.

    В обычном проекте считается что один файл исходного кода соответствует одному модулю трансляции. В более сложных проектах, где используется SCU/Unity Build, один модуль трансляции уже представлен несколькими файлами исходного кода. Но IWYU требует соблюдать правила только для модуля трансляции, а не для файлов исходного кода.
    Эта ситуация обозначает одну из проблем соответствия IWYU, которую не замечают многие разработчики, кто пользуется IWYU и SCU одновременно. Дублирование директив, нарушение порядка от общего к частному и доступность директив для всего нижележащего кода других файлов исходного кода сводит на нет весь принцип IWYU.
    Простейшей ошибкой наивного следования IWYU при использовании SCU является простой забытый инклуд, который присутствует в другом файле исходного кода, размещенном модуле трансляции выше по коду. SCU формируются динамически, на базе определенного алгоритма. Сегодня ошибки нет, а завтра исходный код попадет в другой модуль трансляции, где выше по коду уже не будет нужного инклуда и трансляция пойдет прахом. Особой пикантности данной ситуации добавляют разные сценарии SCU для разработчиков и систем CI. В этом случае ошибку с потерянным инкудом искать будут очень долго и не в одно лицо. Такие ситуации реально существовали у меня на работе. Особую пикантность такой ситуации добавляет и то, что на этой работе люди особо активно пропагандировали IWYU, говоря о безмерной пользе принципа вместе с использованием SCU.
    Решением же является понимание несовместимости использования SCU и IWYU в одном проекте.

    Излишне детальное следование IWYU.

    Принцип IWYU говорит включать только то, чем пользуешься. Что это означает в деталях?
    Когда заголовочный файл использует какое-то объявление, он должен сперва подключить соответствующий заголовок. Когда исходный код использует какое-то объявление, он должен сперва подключить соответствующий заголовок.
    Код не пишется в вакууме, код пишется в составе библиотек и систем, в рамках которых код связывается между собой. На более мелком уровне код пишется в составе подсистем и модулей, а подсистемы и модули уже формируют более глобальные системы и библиотеки. В рамках всех этих единиц агломерации кода сам код является тесно связанным между собой. Заголовки одной подсистемы редко не будут перекрестно включать друг друга потому что активно пользуются их объявлениями для реализации функционала подсистемы.
    Внешний же код, использующий функционал подсистемы, редко будет ограничиваться включением только одного заголовка, потому сами заголовки включают друг друга и через IWYU диктуют подобный подход своему пользователю.
    Это заставляет блоки включений раздуваться до невиданных масштабов в сотни строк одних только #include. Если проект использует #pragma once, то огромные блоки включений сказываются только на удобстве чтения, сводя удобство разбора инклудов к нулю. Но если проект использует только define-guard, то от огромных блоков инклудов начинает катастрофически страдать скорость сборки. В этот момент люди обычно вспоминают про SCU и с его помощью окончательно хоронят гибкость проекта в пучине ошибок совместного использования SCU и IWYU.
    А решением в данном случае является выделение для единиц агломерации кода своих собственных публичных заголовков, внутри которых в правильном порядке будут подключены все заголовки используемого кода.
    Этот простой шаг кратно сокращает списки инклудов в пользовательском коде, не противоречит IWYU и позволяет на более высоком уровне организовать публичный интерфейс модуля, подсистемы, системы или библиотеки.


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

    hint000
    @hint000
    у админа три руки
    Меня интересует способ решить проблему, используя только встроенные в систему (в основном речь идет о macOS) утилиты
    там есть dd?
    echo -ne "\x04\x05\x06" | dd of=filename bs=1 seek=`grep -aboP "\x01\x02\x03" filename | cut -d ":" -f 1 | head -c -1`

    Монструозненько получилось (неравный бой с выводом grep). :) Если заглянет xotkot, то придумает, как оптимизировать, у него чёрный пояс по таким вещам.
    Ответ написан
    Комментировать
  • Git что-то говорит, как убрать?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Гит не просто «что-то говорит», а конкретно сообщает что вы находитесь в состоянии незаконченного перебазирования и сообщает «как убрать».
    Вы должны либо продолжить и довести перебазирование до конца
    git rebase --continue
    Либо отменить процесс через
    git rebase --abort

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

    Если вы, не осознав что rebase ещё не закончился, продолжили добавлять новые коммиты, то тогда завершите rebase. А потом смотрите что получилось.
    Ответ написан
  • Может ли физ лицо создавать интернет-проекты?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Создавать сайт не запрещено, и на это не нужно никаких специальных разрешений, получения лицензий или ещё каких-то бессмысленных телодвижений. Это же не медицинская деятельность, производство продуктов питания, строительство или банковское дело.

    Квалификация данных как персональных очень разнообразна, в некоторых странах под них подапают IP-адреса, электронная почта, куки итд. Также сложно сказать, что именно решит судья в тех случаях, когда сайт будет ответчиком или иной стороной в судебном деле. В России так особенно сложно.

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

    Кроме того, в некоторых случаях политика конфиденциальности требуется не для соответствия законам, а по правилам тех или иных сайтов и сервисов. Например, для прохождения review приложения в Facebook у него обязательно должна быть опубликована политика конфиденциальности. Когда мне потребовалось пройти этот квест (по работе), я взял текст с сайта своей компании и немного отредактировал, даже гуглить примеры не потребовалось.
    Ответ написан
    Комментировать
  • Для чего изучать линукс?

    @Drno
    если нет задачи - незачем и изучать.
    а в целом - на линукс работает не менее 70% всего что ты видишь в интернете, сайты,сервисы,почта, конвертеры видео \ аудио итд итп...
    на линукс работают роутеры, прокси-серверы, VPN серверы... итд итп
    Ответ написан
    Комментировать
  • Для чего изучать линукс?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В рамках импорто-замещения РФ скоро откажется от Windows.
    Тогда специалисты по Linux будут восстребованы везде.

    Вот главный мотиватор. Хочешь иметь работу завтра - изучай Линуха сегодня.
    Ответ написан
    4 комментария
  • Клиенты vpn для windows?

    @Drno
    openVPN клиент. умеет запускаться как служба
    Ответ написан
    Комментировать
  • В каком конфигурационном файле настраиваются сетевые интерфейсы в Ubuntu, Debian, CentOS?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    По-разному. Где-то консервативный /etc/network/interfaces, где-то netplan, где-то networkmanager. Гуглите для конкретной версии дистрибутива.
    Ответ написан
    1 комментарий
  • Почему замена строк местами не работает на большом документе?

    wisgest
    @wisgest
    Не ИТ-специалист
    (Не очень понятно, в чём состоит «открытие файла на чтение»: по моему, просто присваивается значение одной переменной другой.)

    Вероятно, не хватает памяти для переменных окружения.
    Можно не запоминать все строки, а прочитать три первых, вывести их в нужном порядке, а затем выводить строки, не запоминая их, в новый файл и удалить старый.

    Первые три строки можно получить так:
    (
    set /p "s1="
    set /p "s2="
    set /p "s3="
    ) <input.txt

    Вывести содержимое файла, начиная с четвёртой строки можно, например, с помощью утилиты more:
    more +3 input.txt >>output.txt
    или
    more +3 <input.txt >>output.txt

    А в целом:
    (
    set /p "s1="
    set /p "s2="
    set /p "s3="
    echo !s3!
    echo !s2!
    echo !s1!
    more
    ) <input.txt >output.txt
    del input.txt
    ren output.txt input.txt

    В этом случае, возможно, вместо
    more
    для перехвата оставшихся строк будет лучше
    find /v ""
    Ответ написан
    3 комментария
  • Как перенаправить весь трафик с хоста на виртуалку pfsense на хосте, чтобы использовать pfsense как личный шлюз?

    @Strabbo
    Если они в одной сети, то на хосте в качестве шлюза по умолчанию пропишите айпи pfsense-а.
    Ответ написан
    2 комментария
  • Будет ли работать Интернет без света, если он идёт через распределительную коробку?

    @Drno
    Если приходит витая пара, то…
    Если провайдер аоставил на свои свитчи бесперебойники, и если Вы воткнете свой роутер в бесперебойник - то да, инет будет, при отключении дома от питания

    У меня в доме так происходит
    Ответ написан
    Комментировать
  • Будет ли работать Интернет без света, если он идёт через распределительную коробку?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Был бы ваш провайдер беспроводным - так бы работало. А так - нужно запитать Ваш роутер, свитч на техэтаже (чердаке) здания, свитч на чердаке здания, куда приходит аплинк от Вашего здания и т.д. вплоть до свитча на здании провайдера (такая очень обобщенная схема).
    Как видим, в схеме очень много узлов и отключение одного из них - это отвал всех, кто в структуре "ниже".
    Ответ написан
    Комментировать
  • Почему socket работает только в локальной сети? Как это исправить?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Дело в том, что пока ваши устройства в одной подсети (им выдал адреса один DHCP сервер, это обычно ваш роутер), вы, указав локальный IP другого устройства в сокете, можете создать соединение.
    Но если устройства в разных локальных сетях, между которыми не настоен никакой роутинг, то устройства не смогут видеть друг друга. Их адреса будут в разных адресных пространствах.
    Это как звонить внутри отеля по внутреннему номеру телефона. Если один из абонентов окажется в другом отеле, то, даже зная его внутренний номер, вы из первого отеля не дозвонитесь ему напрямую по короткому номеру. Придётся пользоваться шлюзом. Вот шлюз - это NAT.
    Тут дальше аналогия уже поплывёт, если ещё глубже пытаться её применять.
    Прочитайте что такое NAT, что такое белый IP, динамический и статический IP, что такое port-forwarding, сетевая модель OSI, что такое маска подсети и как устроен IP-адрес, как происходит маршрутизация.
    Это слишком много инфы, чтобы рассказывать вам об этом в ответе на один вопрос. Вам нужно изучать это самостоятельно.
    Ответ написан
    3 комментария
  • Как выводить числа на семисегментный дисплей в Microprocesor Simulator 5v32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    цифра три на левой части дисплея имеет код 9Е и чтобы вывести результат сложения 1 + 2 мне надо 3 как-то преобразовать в 9Е

    Типовое решение этой задачи -- через таблицу преобразования, где индекс -- это то, что нужно отобразить, а содержимое -- это то, что нужно записать в порт для отображения. Для вывода цифр от 0 до 9 и вашего дисплея таблица будет такой:
    0xfa, 0x0a, 0xb6, 0x9e, 0x4e, 0xdc, 0xfc, 0x8a, 0xfe, 0xde
    .
    Ответ написан
    1 комментарий
  • Как сохранить значения нескольких переменных в С++ 17?

    Adamos
    @Adamos
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int getInfo(const char* message) { 
        int value = 0;
        cout << message;
        cin >> value;
        return value;
    };
    int weightLoss(int normal_weight, int weight) { // здесь мы просто определяем на сколько нужно "похудеть"
        int result = normal_weight - weight;
        return result;
    };
    int main() {
        cout << "Это программа для опреределения, нужно ли вам похудеть." << endl;
        int normal_weight = getInfo("Введите оптимальный ваш вес в кг: ");
        int weight = getInfo("Введите нынешний вес в кг: ");
        if (weight > normal_weight) {
            int result = weightLoss(normal_weight, weight);
            cout << "Вам необходимо похудеть на " << result << " кг";
        };
    };
    Ответ написан
    Комментировать
  • Почему Doom портируют куда только можно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Doom - это была одна из первых игр где была реализована в полной мере техника BSP (Binary-Space-Partition). Это позволяло в реальном времени очень быстро сортировать и рендерить полигоны без привлечения Z-Buffer. (Рендеринг был чисто прогарммный. На то время еще не было ускорителей 3Д графики и видеокарточка умела только отображать память на экран. ) Игра не была по настоящему трехмерной. А только рализовывала 1 этаж. Рендерить надо было только пол и потолок. Для каждой точки где стоял персонаж. И наклонных горизонтальных поверхностей в ней не было как раз по этой причине. Ее называли 2.5-мерной игрой. Было также много идей оптимизации вычислений. Например вместо вещественных чисел - целые 32х битные с fixed point.

    В скобках замечу что это был 1993 год и на дворе было царство Intel 286/386. Это были машины с тактовой частотой меньше ваших телефонов (Pentium только только релизнулся и еще ни у кого не был). И трехмерный Doom был прорывом. На моем тогда еще 386SX от подтормаживал но играть было можно. И со звуком для SoundBlaster. И конечно это было лучше чем Wolfenstein.

    Аналогичное было реализовано в Duke Nukem 3d. Но Дюк был менее популярен ИМХО. Были и масса других 3д игр в жанке RPG но они были не такие динамичные. Походовые в основном.

    Вобщем сегодня если вы гейм-дев то вам желательно хотя-бы ознакомиться с техниками оптимизации которые были в Doom. Можно почитать и про Quake но это просто развитие идеи BSP деревьев для полного 3D с 5 или 6 степенями свободы. Еще можно почитать про реализацию игры Esctatica. Там не на полигонах а на шариках или эллипсах реализована игровая графика. Тоже интересно.

    UPD: Заменил MMORPG на RPG.
    Ответ написан
    6 комментариев
  • Как открыть папку в проводнике используя bat-файл?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну во-первых, "Рабочий стол" - это в реальности директория "Desktop".
    Во-вторых арнумент "" не нужен, указывайте директорию первым аргументом.
    В-третих
    "%SystemRoot%\explorer.exe" "C:\Users\vern1\Desktop"
    сработает, а вот по поводу специально-витуальной директории OneDrive - сильно сомневаюсь...
    Ответ написан
    1 комментарий