Задать вопрос
  • В чем смысл работы побитово с десятичными цислами?

    @res2001
    Developer, ex-admin
    Используют доступ к битам, обычно, для хранения и проверки некоторого набора флагов. Т.е. каждый бит некоторой переменной является флагом, если бит равен 1 - флаг выставлен, если 0 - сброшен.
    Результат функции getbits можно интерпретировать как логический признак - выставлен определенный флаг или нет. В этом случае вызов getbits можно спрятать за макросами, которые будут подставлять соответствующие параметры в getbits в зависимости от того какой флаг проверяется.
    То же самое можно решить и структурой с битовыми полями, в этом случае компилятор возьмет на себя всю работу с битами. Результат при этом будет примерно тем же, что и в случае ручного манипулирования битами.
    Ответ написан
    Комментировать
  • Как фиксануть правило фаервола?

    @res2001
    Developer, ex-admin
    Если правило при "Любом адресе" отрабатывает, а при установленных конкретных адресах - нет, при прочих неизменных параметрах, значит вы устанавливаете не правильные адреса.
    Ответ написан
  • Может ли библиотека на С++ хранить состояние при подключении к основному проекту на C#?

    @res2001
    Developer, ex-admin
    Может.

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

    Если вы эти массивы передаете в библиотеку из внешней программы (а не сама библиотека их получает), то и держите их у себя до конца работы. В библиотеку достаточно передавать указатели на них (ссылки), при этом никакой кучи ресурсов затрачено не будет.
    Ответ написан
    Комментировать
  • Кто знает примеры внешней автоматизации стандартных виндовых диалогов File Open/File Save из C#?

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

    С "непредсказуемыми сбоями" нужно разбираться. В чем причина сбоя, как он проявляется ... ?
    Ответ написан
    33 комментария
  • Браузер для каждого сайта использует свой порт отправления(т.е. 1 сайт 1 порт). Верно? Если да то по какому алгориму выбирается номер порта?

    @res2001
    Developer, ex-admin
    1.Часто браузер для одного сайта открывает не одно соединение, а сразу пачку и качает ресурсы параллельно. Порты в этом случае для каждого соединения разные. Кроме того на одной странице могут быть ссылки ведущие на разные сайты, для них браузер открывает новые соединения.
    2.Как было сказано порт выбирает ОС. При открытии сокета браузер указывает, что нужен "любой локальный порт". Считайте, что ОС выбирает первый свободный порт из динамического диапазона. На самом деле сложнее, конечно, но конкретный алгоритм обычно не важен.
    3.В общем случае шлюз с NAT подменяет и адрес и порт, поэтому сервер увидит не адрес и порт отправителя, а адрес и порт шлюза. Все это происходит прозрачно для сервера и для клиента. Клиент думает, что он общается на прямую с сервером, а сервер думает, что клиент - это шлюз с NAT и не подозревает, что по пути пакета реальный адрес/порт клиента был подменен NATом.
    Ответ написан
    Комментировать
  • Где найти примеры создания модуля для питон 3 из C++?

    @res2001
    Developer, ex-admin
    У Бизли в "Python. Подробный справочник" есть введение по написанию модулей, для старта подойдет.
    Дальше - родная документация.
    Ответ написан
    Комментировать
  • Как составить bat-файл для резервного копирования?

    @res2001
    Developer, ex-admin
    Это делается практически одной командой, примерно как ответил dmfun
    Подбираете подходящий архиватор командной строки, изучаете его параметры, тренируетесь на "кошечках", потом получившуюся команду вставляете в батник, а запуск батника в шедулер.
    Могут возникнуть затруднения только с формированием имени файла. Можно воспользоваться переменными %DATE% и %TIME%.
    Содержимое переменных меняется автоматически при каждом обращении.
    Посмотреть текущие значения можно так:
    echo %DATE [%TIME%]

    Из %TIME% скорее всего придется вручную выдергивать числовые значения часов/минут/секунд, это можно сделать либо с помощью выделения подстроки (см. set /?), либо обработав переменную в for (см. for /?).
    Ответ написан
    Комментировать
  • Какой библиотекой для создания сигналов вы используете в JS, или есть ли более удобные варианты на других языках?

    @res2001
    Developer, ex-admin
    python - numpy, scipy
    matlab
    В С/С++ зависит от того, что вам надо от библиотеки. Возможно будет достаточно fftw или аналогов.
    Ответ написан
    2 комментария
  • Си. Как удалить символы стоящие перед знаком *?

    @res2001
    Developer, ex-admin
    Удалить нельзя. Можно только остаток строки после звездочки скопировать/перенести на место звездочки.
    Т.к. память будет перекрываться, то нужно использовать функцию memmove, memcpy в этом плане не безопасна.
    Ответ написан
    6 комментариев
  • Найти самое часто встречающееся слово в тексте. Ввод слов в динамический массив. Как сделать без map?

    @res2001
    Developer, ex-admin
    Используйте хэш-таблицу, например khash из состава klib, там же есть и другие структуры. Библиотека написана на Си.
    Ответ написан
    Комментировать
  • Системный журнал Windows 10. Это возможно?

    @res2001
    Developer, ex-admin
    Тут несколько моментов:
    1.Если вредоносная программа работает с правами локального админа или системы то может, конечно.
    2.Через интерфейс винды системные журналы можно только очистить. Есть ли возможность в API выполнять удаление отдельных события я не в курсе. Если есть, то вирусы это могут делать, если нет ... то тоже могут :-), но уже гораздо сложнее.
    Ответ написан
    Комментировать
  • Соединение между двумя компьютерами через сокет?

    @res2001
    Developer, ex-admin
    Видимо NAT мешает. В подобном случае NAT всем мешает.
    Нужно либо настраивать NAT на шлюзе (проброс портов), либо обмениваться трафиком через сервер, а не напрямую.
    Если приложение "для внутреннего использования" или для узкого круга лиц, то обычно нет проблемы настроить NAT, если же предполагается массовое распространение, то это не вариант и нужно искать обходные пути.
    Для UDP протокола есть вариант использовать внешний STUN сервер. Для TCP, по моему, этот вариант не работает.
    Ответ написан
  • Что посоветуете в качестве удаленного доступа на VNC?

    @res2001
    Developer, ex-admin
    Почему VNC на винде? Есть же удаленный рабочий стол встроенный, гораздо круче VNC. Клиенты есть хоть на смартфон, в винде, конечно, клиент встроенный.
    Ответ написан
  • Как лучше сохранить данные?

    @res2001
    Developer, ex-admin
    Можно и в одном файле.

    В файл пишете блоки определенного размера (например 2-4 Мб). В блок пишете:
    1.байт флагов записи (флаг удаления записи или признак конца блока)
    2.ID записи фиксированного размера
    3.длину последующей строки фиксированного размера
    4.строку данных
    так до конца блока, в конце блока в п.1 выставляете признак конца блока и смещение следующего блока фиксированного размера.
    Можно сделать так, что бы блок забивался до отказа, а остатки последней записи, которая не влезла в блок переносить в другой блок, можно оставлять пустые куски блоков. Кроме того этот механизм будет необходим, если 1 запись может быть размером больше 1 блока.

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

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

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

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

    PS: не стоит изобретать велосипед, возьмите готовую СУБД.
    Ответ написан
    Комментировать
  • Как настроить Windows server 2003 для размещения сайта?

    @res2001
    Developer, ex-admin
    Почему 2003 сервер - это же старье. В 2015 закончилась официальная расширенная поддержка. Нужно срочно уходить с него.

    PS: Залейте на сервер этот каталог с установочного образа. Образ можно взять у микрософта (триал).
    Ответ написан
    Комментировать
  • Можно ли сделать резервацию или ограничение использования ОЗУ?

    @res2001
    Developer, ex-admin
    Если софтина 32битная, то больше 4 Г памяти она потребить не сможет. При этом физической памяти может быть больше. У 64битного софта ограничение по памяти гораздо больше.
    Как вариант - запускать софт в виртуальной машине, которой выделено ограниченное количество памяти.
    Пожалуйтесь разработчику, пусть исправляет баги.
    Ответ написан
    4 комментария
  • Время программы 2,062 надо 2 сек, как сделать?

    @res2001
    Developer, ex-admin
    Можно немного сэкономить, если прочитать сразу весь файл в буфер, а в массив загонять через std::stringstream или вообще руками. Аналогично и с записью - сначала преобразуете в текстовый буфер, затем оптом пишете в файл одной операцией. Файл при этом открывайте как бинарный.
    Возможно, если применить другой алгоритм сортировки то же будет увеличение производительности. В стандартной библиотеке далеко не самый быстрый алгоритм.
    Ответ написан
    Комментировать
  • Start xxx.bat: как сделать, чтобы не вываливалось в командную строку?

    @res2001
    Developer, ex-admin
    Как вариант поставить после pause команду exit, то же будет закрывать консоль. Тогда в старте можно не указывать cmd /c
    Ответ написан
    Комментировать
  • C++ - как посчитать количество строк из файла, которые начинаются и заканчиваются на один и тот же символ?

    @res2001
    Developer, ex-admin
    Отладчик вам поможет!
    Ответ написан
    Комментировать