• Как проходит перелицензирование программного обеспечения?

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

    В ютубе реализовано через Service Worker https://developer.mozilla.org/ru/docs/Web/API/Serv...
    Через pwa тоже можно
    Ответ написан
    Комментировать
  • Как читать данные с диска в защищенном режиме x86?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    BIOS потихоньку уходит в небытие, и надо уже читать UEFI

    ну а для своей OS из защищенного режима надо делать драйвера для стандартных накопителей (штук 10) - базовый драйвер для стандартов ATA/ATAPI, AHCI, NVMe; потом еще OHCI, UHCI, eHCI и xHCI для USB контроллеров и наконец USB mass storage).
    Также еще не забывать что сейчас многие любят в рейды, и все еще живы всякие SCSI, FDD, ленточные накопители и CD/DVD/BR...
    Ответ написан
    Комментировать
  • Можно ли узнать WAN IP Wi-Fi сетей поблизости?

    @romancelover
    программист C++ под Linux
    Можно узнать только MAC-адрес. IP-адрес передаётся в зашифрованной части кадра.
    MAC-адрес передаётся только в локальной сети, WAN IP по нему не определить.
    Даже если сеть без шифрования, или кадры удалось как-то расшифровать, у IP-пакетов в локальной сети в качестве адресов источника или назначения будут внутренние IP-адреса клиентов. WAN IP туда проставится уже после NAT, и пойдёт по тому интерфейсу, которым точка подключена к провайдеру.

    Хотя я нашёл способ, с помощью которого WAN IP всё же можно попытаться определить. Хотя это будет только IPv6 адрес самого роутера, а не клиентов за ним (тем более что подсеть для клиентов может отличаться от найденной).
    На многих роутерах (в частности Sercomm от МГТС), IPv6 адреса назначаются по EUI-64, по MAC-адресу. Допустим удалось выяснить MAC адрес на Wi-Fi, например, 94:4a:8c:00:11:22. На WAN будет адрес 94:4a:8c:00:11:23 - они часто назначаются подряд, и известна подсеть для IPv6 адресов у данного провайдера в данной местности, например, 2a00:1370:8030::/48.
    Тогда можно пропинговать адреса по маске 2a00:1370:8030:xxxx:964a:8cff:fe00:1123 (всего 16 бит, т.е. 65536 адресов). Если какой-то из них ответит - это искомый WAN IP. Если роутер дырявый, он может по этому адресу держать какой-то интерфейс управления.
    Ответ написан
    Комментировать
  • Как осуществляется межпроцессное взаимодействие на C++?

    maaGames
    @maaGames
    Погроммирую программы
    Вызов функции из чужого процесса это не совсем межпроцессорное взаимодействие. Выше уже написали про сокеты и прочее, но это всё для передачи данных, а вот чтобы вызвать функцию напрямую, как-то терзают сомнения. Всё-таки это совсем другое адрессное пространство и я не уверен, что можно получить адрес функции. Если же это озможно, то достаточно привести указатель к нужному типу, поправить стек, если требуется и вызвать её. Это работает в одном процессе (например, если из dll "воруешь" функцию основног приложения), а вот между процессами не уверен.
    Ответ написан
    2 комментария
  • Как осуществляется межпроцессное взаимодействие на C++?

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

    @none7
    В C++ никак. Любое взаимодействие с внешним(для программы) миром это привилегия ядра ОС. STL предоставляет весьма ограниченный набор обёрток над системным API и коммуникация между процессами не входит в этот набор. Традиционным способом коммуникации являются Pipe и Socket, но они просто переправляют массивы байтов. И если нужно соорудить RPC, то нужно сериализовать параметры и в таком виде отправлять. И эти обёртки так или иначе придётся писать самому, так как полноценной RTTI в C++ нет.
    Ответ написан
    Комментировать