• Чего нам ждать от Blizzard? Прошлое, настоящее и будущее серии Diablo
    +1

    О какой игре речь?

  • LibreOffice: страшный сон бухгалтера
    0

    Пользуясь случаем, хочу спросить у разработчиков анализатора. Почему в последней сборке PVS под Linux пропали исходники к plog-converter из архива *.tgz?

  • Amazon сдался и повысил зарплаты сотрудникам
    +1
    Эта надпись использовалась немцами времён второй мировой войны на входе в концлагерях.
  • Приведение типов. Наглядное отличие static_cast от dynamic_cast
    0

    Читайте внимательнее.
    "Для того, чтобы такая проверка была возможна, следует добавить к классам виртуальность (dynamic_cast использует таблицы виртуальных функций, чтобы делать проверку)."

  • Position-independent code (PIC) в разделяемых библиотеках
    0

    Отвечу сам же. Инструкция call использует относительный адрес, а не абсолютный, как я считал выше. В случае вызова static функции линкеру нет смысла делать релокацию, т.к. функция внутренняя и ее расположение известно по смещению. Если же функция не static, то линкер создаст для нее релокацию, причины лежат в LD_PRELOAD и в глобальном переопределении внешних символов динамическим линкером.

  • Position-independent code (PIC) в разделяемых библиотеках
    0

    Не могли бы подробнее пояснить, почему в таком случае не требуется got и plt. Я не вижу разницы между static и рассмотренной в статье функцией. Для call ведь по-прежнему требуется абсолютный адрес, а его без got в случае pic не получить.

  • Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку
    0

    Имелось в виду, где происходит монтирование файловой системы виртуалки для загрузки собранного драйвера, какие средства под Windows для этого используются, как собственно запускается образ ВМ (qemu?) Возможно ли это использовать в отрыве от edk2.

  • Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку
    0

    Спасибо, все очень доступно! Планируете описать процесс деплоя драйвера в виртуалку более подробно? Интересуюсь с целью встраивания данного подхода в CI.

  • Перехватываем запуск любого приложения в Windows и пытаемся ничего не сломать
    +1

    Спасибо! Было интересно почитать.

  • Полиморфизм и указатели на функции
    0

    К слову это не пузырек, а сортировка выбором.

  • gdb-дуэль — списки, деревья и хэш таблицы против командной строки
    0

    Да, find'ом пробовал, но он спотыкается на первом же inaccessible адресе. Думал, есть какое-то средство из коробки для такого действия. На данный момент я вижу только такой способ: получать список замапленных регионов и искать find'ом в каждом из них.

  • gdb-дуэль — списки, деревья и хэш таблицы против командной строки
    0

    Подскажите касательно gdb. Как с помощью него можно найти все адреса, содержащие некоторый magic. Удобно для поиска тэгированных объектов в дампах. В windbg это делается, например, так "s -d 0 L?-1 0xdeadbeef".

  • История одного бага: выравнивание данных на x86
    0
    for (size_t i = 5; i < size / 4; i++) {
            sum += q[i];
    


    Предполагается, что размер заголовка всегда кратен 4?

    А по поводу использования инструкций sse.
    Недавно у себя при сборке проекта clang'ом 3.8 под x86 также на это наступили.
    clang в случае зануления через memset активно использует sse.
    Временно решили проблему, используя опцию -mstackrealign
  • Скриншотим игры — the hard way
    +1
    На вскидку, преимущество только в использовании стандартного документированного API для инжекта вместо закладки на то, что адрес kernel32.dll будет тот же самый.
  • Простая в использовании обертка над LoadLibrary() и GetProcAddress()
    0
    К сожалению не так удобно.
    Фактически в данном режиме в месте вызова импортируемой функции будет вызываться хелпер-функция __delayLoadHelper или __delayLoadHelper2 (зависит от версии ms studio). Их реализация содержится в библиотеке delayimp.lib (потребуется с ней слинковаться), ее код лежит здесь — vc/include/delayhlp.cpp.
    По нему видно, что данный хелпер осуществляет вызов LoadLibrary/GetProcAddress (это делается только один раз).
    В случае неудачи — не найден модуль или не найдена фунция — будет брошено исключение посредством RaiseException.
    Соответственно его можно перехватить и определить причину ошибки.
  • Простая в использовании обертка над LoadLibrary() и GetProcAddress()
    +1
    Справедливости ради, стоит отметить, что кроме двух упомянутых в статье способов работы с dll, есть еще один, так называемый delay load режим. По сути это нечто среднее между load-time и run-time режимами.
  • Ограничение памяти, доступной программе
    +1
    Отдельная куча в win подразумевает протаскивания своего аллокатора на ее базе по всей программе. Задумка автора была как раз ограничить память без модификации исходного кода. В win я бы посмотрел для этого в сторону объекта job.
  • Как могла бы выглядеть поддержка JSON в современном С++
    0
    > Для линейно-упорядоченных контейнеров порядок элементов будет сохранён, для ассоциативных, понятное дело — нет.

    Поправьте меня, если не так. Но для ассоциативных контейнеров set и map порядок следования элементов все же детерминирован и определяется согласно используемому отношению эквивалентности.
  • Hotpatch. Патчим память ядра Windows
    0
    Скажите, а за счет чего достигается потокобезопасность при переписывании mod edi, edi на короткий джамп?
  • Реализация словаря в Python 2.7
    +1
    Огромное спасибо за детальное разъяснение!
    В принципе вы все это описали в самой статье, но я при первом прочтении упустил ряд деталей, а дьявол кроется в мелочах :)
  • Реализация словаря в Python 2.7
    0
    а каким образом пустые ячейки здесь помогут? Здесь скорее все будет зависеть от алгоритма пробирования и от конкоетных данных. В любом случае повторное заполнение словаря теми же данными в том же порядке должно выполняться дольше.
  • Реализация словаря в Python 2.7
    +1
    Понятно.
    Т.о. однажды переведя (2/3)N — 1 ячеек словаря в состояние пустая, мы получим линейное время вставки до перестройки хэш-таблицы.
  • Реализация словаря в Python 2.7
    0
    «Пустая» ячейка всё-таки влияет на процесс, так как позволяет продолжить пробирование. Если бы при пробировании мы бы попали в удалённую ячейку, но её состояние не было бы помечено как «пустая», то поиск бы закончился, хотя на следующих шагах пробирования могла быть найдена искомая ячейка.

    именно так, под «не влияет» я имел в виду не приводит к остановке пробирования.

    Процедура поиска ячейки для вставки элемента в словарь остановится только когда будет найдена «неиспользованная» ячейка.

    А чем в этом случае не подходит «пустая» ячейка? Почему только «неиспользованная»?
  • Реализация словаря в Python 2.7
    +1
    Спасибо.
    Я похоже разобрался, поправьте, если не так.
    При разрешении коллизий методом открытой адресации (в отличие от цепочек, где все элементы с одним хэшем расположены в связанном списке) пришлось ввести понятия неиспользованной и пустой ячеек.
    Это необходимо для корректной остановки процедуры поиска элемента — останавливаться только, когда элемент найден или попалась неиспользованная ячейка в процессе пробирования (пустая ячейка никак не влияет на процесс)…
    В то же время процедура вставки элемента в словарь должна останавливаться, когда найдется либо неиспользованная либо пустая ячейка.
  • Реализация словаря в Python 2.7
    +1
    Спасибо за статью!

    По ходу прочтения возник такой вопрос.
    Правильно ли я понял, что сложность поиска элемента, который заведомо отсутствует в словаре (никогда не добавлялся или был удален), всегда будет линейна от размера таблицы?
  • Введение в анализ сложности алгоритмов (часть 2)
    0
    Не хотелось бы выглядеть занудой, но сумма членов прогрессии все же будет n(n+1)/2
  • Делаем простое удержание курсора в окне Warcraft 3
    0
    какая возня имеется в виду?
  • Делаем простое удержание курсора в окне Warcraft 3
    0
    Спасибо.
    Добавлю чуть позже в солюшен отдельный проект для реализации low-level hook версии.
    Что касается мелочей, то вы правы, следует причесать код.
  • Делаем простое удержание курсора в окне Warcraft 3
    +1
    А он собственно именно так и сделан.
  • Расширяем контекстное меню кнопки «Пуск» в Windows 8.1
    +3
    Спасибо за наводку на API Monitor.