Задать вопрос
  • Динамическое выделение памяти для массива, в чем ошибка?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    1) Realloc принимает размер ожидаемой памяти, ты суёшь ему просто 2.
    2) После этого ты пишешь в какую-то рандомную память.
    3) Ты в функцию передаешь одинарный указатель. Чтобы это работало и указатель менялся, надо передавать двойной. То есть, после выхода из функции, если у тебя был реаллок, в твоём буфере всё равно мусор.
    4) Перевыделять каждый раз второй буфер не нужно.
    5) копировать из одного буфера в другой не нужно. Достаточно буферы свопнуть(поменять местами через третью переменную).
    Ответ написан
    7 комментариев
  • Использование прерываний в ОС Windows?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Для этого нужно написать драйвер режима ядра.
    Ответ написан
    Комментировать
  • Как установить драйвера x86 на Windows 7 x64?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Драйвер это программа предоставляющая доступ конкретной операционной системе к конкретному оборудованию.
    Пишут драйвер для операционной системы, учитывая все ее особенности и требования.
    Другая система - другой драйвер.

    Можно ли как то обмануть систему?
    Конечно можно - ставите принудительно драйвер и все.
    Система будет пытаться давать команды драйверу, он их не будет понимать, и устройство не будет работать.

    Система, в которой она используется на данный момент имеющиеся 4 Гб ОЗУ кушает на ура
    Ну я очень сомневаюсь что система столько кушает, особенно если речь идет о win7 x32.
    Память у вас кушает прикладной софт, а не система.
    Ответ написан
    9 комментариев
  • Зачем нужен указатель на void?

    @Mercury13
    Программист на «си с крестами» и не только
    void* используется как указатель на сырые байтовые данные, не имеющие конкретного типа.
    Обычно это используется…
    1. В чтении-записи в файлы и на устройства, когда мы можем писать туда абсолютно любые типы.
    2. В «многоликих» функциях, которые могут принимать данные разных типов (malloc/calloc, часть функций WinAPI и ODBC).
    3. Как дескриптор — указатель, который запрещается разыменовывать. В Си для этого также часто используют указатель на недоопределённый тип, в Паскале с другими правилами эквивалентности типов — на пустой record. Но только пока не появится очередная многоликая функция вроде CloseHandle.
    4. Для обеспечения т.н. замыкания — передачи callback’у контекста, откуда была вызвана функция, вызвавшая callback.
    BOOL WINAPI EnumWindows(
      _In_ WNDENUMPROC lpEnumFunc,
      _In_ LPARAM      lParam
    );
    
    BOOL CALLBACK EnumWindowsProc(
      _In_ HWND   hwnd,
      _In_ LPARAM lParam
    );

    Вот этот LPARAM, который обычно определяется как какой-то указатель, и есть замыкание. Функция EnumWindows обещает передать его в функцию lpEnumFunc без изменений.
    (В Си++ для этого также используют виртуальные интерфейсы, но такой метод, сами понимаете, языкозависим и не годится для межъязыкового API.)

    Что происходит на стороне функции? Одно из двух (считаем, функция написана на ЯВУ).
    1. Либо вызывается некая функция устройства, которая говорит: «записать 100 байт», и дальше уже работает железо.
    2. Либо мы преобразуем void* в нужный нам тип и работаем с ним.

    Типы указателям дают по трём причинам.
    1. Вы забыли про операцию «разыменовать указатель». Чтобы его разыменовать, он должен иметь тип!
    2. Чтобы не ошибаться и не переприсвоить несовместимые указатели.
    3. Для полиморфизма — в Си++, давая delete x, мы даже можем не хранить, сколько байтов в блоке, поскольку мы знаем длину типа. (Есть ещё и виртуальные классы, но это другой вопрос.)
    Ответ написан
    Комментировать
  • Разграничение API приложения и тяжелых вычислений?

    2 варианта:
    1. вычисления вынести на отдельный сервер
    2. любым способом "затормозить" вычисления, чтобы они не мешали остальному. Если это Ваш сервер, то виртуализация поможет


    Выигрыш, думаю, в отдельном сервере очевиден
    Ответ написан
    Комментировать
  • Где и как вы храните SSH и PGP ключи?

    ruToken, eToken, *token и прочие смарт-карты или HSM.
    Ответ написан
    7 комментариев
  • Несколько раз в сутки зависают все сайты на сервере. Помогает только init 6. В чем может быть проблема?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    переустанавливайте сервер с нуля
    если вы не знаете как и откуда попал вирус, смысла искать неисправности в работе апача нет, ваша система уже полностью скомпрометирована
    Ответ написан
    6 комментариев
  • Как поддерживается безопасность при выполнении команд через ssh?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Когда мы пытаемся выполнить команду (впринципе без разницы какую, пускай будет ls -la) (пункт 4)
    делаются ли какие-то дополнительные проверки на сервере с точки зрения безопасности?

    Нет. Пользователь зашедший по ssh ничем не отличается от обычного локального пользователя.

    Может кто-то подскажет какой алгоритм выполнения команды на удаленной машине? (При условии что мы уже подключились к серверу).

    Достаточно посмотреть в вывод команды pstree:
    ├─sshd(700)─┬─sshd(8208)───sshd(8214,jcmvbkbc)───bash(8215)───ssh(8231)
    │           └─sshd(8232)───sshd(8238,jcmvbkbc)───bash(8239)───pstree(8244)

    чтобы понять, что после подключения по ssh, sshd (демон ssh, процесс 8238) запускает login-shell (процесс 8239), который показывает приглашение ввода ($). Когда в нём набирается команда pstree (процесс 8244), шелл просто запускает эту команду.
    Ответ написан
    6 комментариев
  • Есть ли техническая возможность у власти полностью "выключить" интернет в РФ?

    Jump
    @Jump
    Системный администратор со стажем.
    Есть ли техническая возможность у власти полностью «выключить» интернет в РФ?
    Разумеется.
    Как минимум есть чисто физическая- отрезать кабель.
    А можно и файервол поставить.
    В общем такая возможность есть у властей любой страны.

    В связи с текущей истерией борьбы с "терроризмом" в РФ активно начала продвигаться идея полного запрета интернетов.
    Наоборот, у нас вроде не пошли по пути полного запрета, наблюдаются только точечные блокировки.
    В основном будут блокировать самые опасные вещи - соцсети, и прочие сми.

    Анохин предлагает ограничить доступ в соцсети до трех часов в день
    Ну депутаты предлагать могут что угодно, это же не специалисты, и не всегда адекватные люди.

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

    доступ в социальные сети будет закрыт для лиц младше 18 лет
    Да это давно уже надо было сделать.
    Ответ написан
  • Как защищится от sql инекции без ооп в php?

    UnluckySerivelha
    @UnluckySerivelha
    PDO и подготовленные выражения, подробнее - https://habr.com/post/148701/
    Ответ написан
    Комментировать
  • Актуальна ли сейчас литература Рихтера (Win32 приложения)?

    Andrey2008
    @Andrey2008
    DevRel в PVS-Studio
    Смело читайте. Отличная книга.
    Ответ написан
    Комментировать
  • Собрать библиотеку Shared Object с помощью makefile под linux?

    dll под Линукс собрать неполучится.
    Можно собрать лишь so (Shared Object) библиотеку.
    gernotklingler.com/blog/creating-using-shared-libr...

    И это ну очень легко гуглится
    Ответ написан
    2 комментария
  • Почему sizeof ( somefunc ) == 1?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    https://msdn.microsoft.com/ru-ru/library/4s7x1k91.aspx
    Оператор sizeof никогда не создает результат 0, даже для пустого класса.
    Оператор sizeof не может использоваться со следующими операндами:
    Функции. (Однако оператор sizeof можно применять к указателям на функции.)
    Ответ написан
    6 комментариев
  • Почему не обрабатывается переменная времени в batch-файле?

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

    mashletov
    @mashletov
    Math.random()
    Второе: productList, orderList, userList
    Или же: products, orders, users

    Вообще, это не относится к программированию — насколько я знаю, по-английски правильно item list, но list of items.
    Ответ написан
    11 комментариев
  • Как выставить правильно приоритет интерфейса в Win 10 (интернет+локалка)?

    fzfx
    @fzfx
    18,5 дм
    на вашем месте я бы избавился в настройках локальной сети от шлюза по умолчанию. указывать его для сети, которая не обеспечивает доступ в интернет - прямой путь именно к вашей проблеме.
    Ответ написан
    Комментировать
  • Как коректно переобразовать тип wchar_t в string?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Тип WCHAR зависит от настроек проекта и может быть как псевдонимом char, так и wchar_t. Широкое использование этого типа во всем проекте не рекомендуется, т.к. повсеместно вносит неопределенность.

    Для хранения Unicode строк (у тебя же 2017 студия и c++17 по умолчанию) уже давно существует сразу несколько типов строк: std::wstring, std::u16string и std::u32string.

    Тип std::wstring хранит символы типа wchar_t, который, в зависимости от настроек компилятора, может занимать 2 или 4 бйта. Это делает тип std::wstring столь же неоднозначным, как и WCHAR. Поэтому и были созданы типы со строгим размером символа: std::u16string и std::u32string. Сейчас рекомендуется пользоваться ими вместе с std::string.

    Сам твой вопрос заключается не в преобразовании типа, т.к. это легко сделать с помощью std::transform и лямбды, а в преобразовании однобайтовой (std::string) кодировки в Unicode и обратно.

    Для этого в стандартной библиотеке уже тоже есть всё нужное.
    Пример кода
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::string& source_string, std::basic_string<TCharType, TCharTraits, TStringAllocator>& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.from_bytes( source_string );
    }
    
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::basic_string<TCharType, TCharTraits, TStringAllocator>& source_string, std::string& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.to_bytes( source_string );
    }


    А помимо стандартной библиотеки все нужное есть еще и в WinAPI, и в C Run-Time Library.
    Ответ написан
    2 комментария
  • На чём поднимать гостевой Wi-fi с идентификацией, чтобы исполнить постановление №758?

    Griboks
    @Griboks
    Берём любой роутер+сервер с базой данных. Роутер выставляем в режим тупой пересылки пакетов эфир<->ethernet<->сервер. И, соответственно, на сервере, уже как было написано 100500 раз где только можно, ставим фильтр пакетов (через iptables и прочие прелести linux) вида: есть запись в бд - маршрутизация в интернет, нет - локальный сайт аля captive portal (на этом же сервере запущен) + локальный тот же радиус сервер. Таким образом, все мозги переносятся на программный уровень, и уже не надо тратить какие-то безумные бесполезные деньги на железки.

    Ну и самый верный метод - использовать ретранслятор вместо предоставления доступа посетителям на подобие операторского wi-fi, что бы просто переложить всю ответственность на того, кто дарует вам интернет.
    Ответ написан
    Комментировать
  • Невозможно преобразовать double в void*?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    template <typename T>
    void print(const T& obj) {
        std::cout << obj;
    }
    Ответ написан
    Комментировать
  • Как устроены базы данных?

    То, что вы ищете, называется физической моделью базы данных. Можете так и гуглить, в том числе добавляя слово "реляционной".

    Вот в этой книжке (перевод: "Системы баз данных. Полный курс") открываете раздел Database System Implementation и первые два позраздела - Secondary Storage Management и Index Structures и вперёд.
    Ответ написан
    Комментировать