• Как научиться понимать как работает память на низком уровне?

    @res2001
    Developer, ex-admin
    Главное нужно помнить, что память - она плоская, т.е. представляйте ее просто набором байт следующих друг за другом. И не важно, какие структуры вы в плоской памяти городите, трехмерные или пяти - они все должны отображаться на плоскую память.
    Когда ОС загружает программу на выполнение она разделяет всю память, доступную процессу на 3 группы:
    1. область куда загружается код программы. Обычно эта память помечается ОС только для чтения. И если туда будет попытка записи, то это вызовет исключение в процессоре.
    2. Область стека. Адрес вершины стека записывается в регистр процессора. Когда в программе выделяются локальные переменные они помещаются именно в стек.
    Фактически для помещения переменной в стек не надо выделять память. Компилятор при сборке программы считает смещения относительно начала стека и обращение к локальным переменным происходит по указателю на начало стека + смещение.
    Со стеком интересная история: ОС выделяет под стек фиксированный размер памяти, но сам размер стека нигде не хранится (в явном виде не хранится, но его в можно узнать), хранится только указатель на начало. Поэтому всегда есть шанс переполнения стека. Например если сделать достаточно глубокую рекурсию.
    В современных ОС под стек выделяется достаточно большой объем памяти, поэтому переполнений как правило не происходит. Но иногда для программы требуется больший объем стека, тогда нужный размер указывается с помощью опций компилятора, этот размер зашивается в исполняемый файл и когда загрузчик ОС грузит программу он считывает размер стека и выделяет нужную область памяти.
    Если вы в своей программе столкнулись с переполнением стека, то не спешите выделять больший объем памяти для стека, возможно у вас программная ошибка из-за которой происходит переполнение.
    3. Куча. Там выделяется память для динамических переменных. Память выделяется ОС по запросу. Обычно в своей программе вы используете менеджер кучи стандартной библиотеки, который в свою очередь обращается за выделением памяти к ОС. Менеджер кучи из стандартной библиотеки можно поменять, есть бесплатные свободно распространяемые реализации. Или сделать свой или пользоваться вызовами ОС для выделения памяти.

    Как-то так.
    Ответ написан
    4 комментария
  • Format specifies type 'char *' but the argument has type 'char'?

    @res2001
    Developer, ex-admin
    В строке:
    printf("%s", hash);
    спецификатор шаблона %s обозначает строку, а строка в Си это "char *", а вы передаете ему в параметре простой char. Поменяйте спецификатор шаблона на %c.
    И учите матчасть! www.cplusplus.com/reference/cstdio/printf/?kw=printf
    Ответ написан
    3 комментария
  • Есть необходимость выявить причину отключения сервера, может кто поможет?

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

    @res2001
    Developer, ex-admin
    1.Напишите командный файл (bat или cmd) в котором будете запускать ваши программы. Запускать надо через start, иначе сценарий будет дожидаться окончания завершения запущенной программы.
    start /?
    2.Убивать процесс так же можно через командный файл.
    Для убивания процесса можете воспользоваться встроенной командой taskkill:
    taskkill /?
    Ответ написан
    Комментировать
  • Удаляются данные Excel файлы, что может быть?

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

    @res2001
    Developer, ex-admin
    В описании вызова system:
    "If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported."
    Т.е. возвращаемое функцией значение зависит от реализации, но обычно это должен быть код возврата вызываемой команды.
    Можете протестировать свою реализацию, вызывая с помощью система простейший батник:
    Содержимое батника:
    exit /b <код возврата>
    Ответ написан
    Комментировать
  • Как поставить линукс так что бы он был и виртуалкой и хостовой ос?

    @res2001
    Developer, ex-admin
    Никак. Либо хост либо виртуалка.

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

    Можно извратиться и в виртуальной машине поставить гипервизор и в нем поднять еще одну виртуалку - вложенные виртуалки. Некоторые гипервизоры позволяют такое. Но это, видимо не то что хочется.
    Ответ написан
    Комментировать
  • Как рекурсивно поменять расширение у файлов в Unix?

    @res2001
    Developer, ex-admin
    смотри find -exec
    Ответ написан
    Комментировать
  • Как школьнику получить учебную версию PhpStorm, PyCharm и остального?

    @res2001
    Developer, ex-admin
    Может сразу в JetBrains надо было писать, а не на тостер? Там то точно есть ответы на ваши вопросы.
    Ответ написан
    Комментировать
  • Как рассчитать сложность алгоритма?

    @res2001
    Developer, ex-admin
    Допустим при создании массива из 5 элементов можно добавить if и добавлять значение в начало или конец массива

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

    @res2001
    Developer, ex-admin
    Пользовался в свое время большой синей кнопкой: bigbluebutton.org
    Ответ написан
    Комментировать
  • Как настроить локаль в Си?

    @res2001
    Developer, ex-admin
    В винде конировка консоли по умолчанию - 866. Сделайте исходники в этой же кодировке и локаль такую же.
    Но вообще это ущербный вариант. Т.к. кодировку консоли можно менять из вне, то смысла привязываться к ней нет.
    Делал как-то небольшой консольный проект на чистом WinAPI, делал исходники в UTF-8, затем определяю какая установлена текущая кодировка консоли и перекодирую в нужную кодировку. Таким образом получается код не зависимый от текущей установленной кодировки. В WinAPI все нужные функции есть.
    В никсах, в принципе, все то же самое.
    Ответ написан
  • Как определить для какой операционной системы программа х32 или х64?

    @res2001
    Developer, ex-admin
    2. да
    1.Можно с помощью утилит, которыми можно посмотреть файлы формата PE (exe) - гуглить по "pe viewer". Если x64 программу запустить на x32 винде, то она не запуститься.
    Ответ написан
  • Как настроить домашнюю сеть с 2мя роутерами?

    @res2001
    Developer, ex-admin
    1. МГТС включайте в локальный порт асуса.
    2. На асусе:
    2.1. выключите DHCP, NAT, firewall и прочее, что дублирует функции МГТС.
    2.2. Если вы им раздаете WiFi то можете оставить.
    2.3. порт WAN останется не использованным.
    2.4. назначить IP адрес из диапазона адресов локальной сети МГТС.
    3.На МГТС:
    3.1. включить DHCP, NAT, Firewall и все что нужно.
    3.2. можно включить WiFi, если есть и если асус не закрывает всю квартиру, но имя точки доступа сделайте другое.

    Описанная выше схема даст вам: единую сеть для всех устройств с единым адресным пространством. Вся связь с внешним миром для всех устройств будет через МГТС и управляться там же (проброс портов, фильтрация трафика и т.п.). Вам будет абсолютно все равно в какое из устройств (асус или мгтс) вы будете подключать конечные устройства. Все устройства в сети будут видеть друг друга, без необходимости менять что либо на МГТС или асус. Возможно, у вас отпадет надобность в дополнительном 8 портовом хабе, т.к. в МГТСе и в асусе есть дополнительные незадействованные порты - можно будет в них воткнуть все, что воткнуто в хаб.
    Ответ написан
  • На чём писать свой браузер?

    @res2001
    Developer, ex-admin
    В Qt есть свой браузерный движок, его и используйте. Раз Qt, то лучше сразу на C++ делать, будет наиболее быстрый вариант. Но можно и на питоне или на чем-нибудь еще куда Qt портирован.
    Ответ написан
  • Как определить частоты играющих струн?

    @res2001
    Developer, ex-admin
    После БПФ получаете комплексный массив, где каждый элемент - амплитуда определенной частоты.
    Частота по сути - это индекс массива.
    Но в элементе может быть не одна частота - количество частот в элементе массива зависит от частоты дискретизации сигнала и от длины БПФ: freq_length = sampling_rate / fft_length;
    Если sampling_rate == fft_length, то в элементе массива единственная частота.
    freq_length - разрешение элемента массива по частоте.
    Анализировать можно только половину массива (см. про частоту Найквиста), остальные отсчеты - это сопряжение первой половины. Соответственно реально получить частоты до sampling_rate / 2 - 1.
    В вашем случае, видимо, нужно найти энергетический спектр: сложить квадраты действительной и мнимой частей всех частот. Найти максимумы - это и будут ваши частоты аккорда - лучше построить график и посмотреть визуально, что получится.
    Ответ написан
    6 комментариев
  • Какие варианты лучше подходят для того, что бы узнать чем забит трафик между узлами?

    @res2001
    Developer, ex-admin
    Посмотрите какие процессы работают на узлах и кто из них генерирует трафик: top
    Ответ написан
    Комментировать
  • Какие данные все-таки являются персональными?

    @res2001
    Developer, ex-admin
    Любые данные которые идут вместе с ФИО можно считать ПД, если к этому приложить еще паспортные данные, то можно и без ФИО. Уберите ФИО и паспорт - уже не ПД.
    Вместо паспорта может быть и другое удостоверение личности.
    Ответ написан
    Комментировать
  • Какой движок совместим с Visual Studio?

    @res2001
    Developer, ex-admin
    Да любой засинергирует со студией при желании, главное, чтоб он с виндой синергировал.
    Ответ написан
    Комментировать