Публикации

вчера в 16:54

Почему 0x00400000 является базовым адресом по умолчанию для EXE перевод

Базовым адресом по умолчанию для DLL является 0x10000000, но для исполняемых файлов это 0x00400000. Почему именно такое особое значение для EXE? Что такого особенного в 4 мегабайтах?

Это имеет отношение к размеру адресного пространства, отображаемого одной таблицей страниц в архитектуре x86, и такую конструкцию выбрали в 1987 году.

Единственным техническим требованием для базового адреса EXE является кратность 64 КБ. Но некоторые варианты базового адреса лучше, чем другие.

Цель выбора базового адреса состоит в минимизации вероятности, что модули будут перемещены. Это означает, что следует предотвратить столкновение 1) с другими объектами, которые уже в адресном пространстве (что и вызовет перемещение); 2) а также с объектами, которые могут появиться в адресном пространстве позже (форсируя их перемещение). Для исполняемых файлов избегать конфликта с объектами, которые могут появиться позже, означает уход из района адресного пространства, который может быть заполнен библиотеками DLL. Поскольку сама операционная система помещает файлы DLL в старшие адреса и базовым адресом по умолчанию для несистемных DLL является 0x10000000, то базовый адрес для EXE должен быть где-то младше 0x10000000, и чем младше, тем больше места останется до того, как вы начнёте конфликтовать с библиотеками. Но насколько низко нужно заходить?
27815
137
alizar 1369,4
вчера в 21:51

ФБР против шифрования на смартфонах

Как известно, в последних версиях мобильных операционных систем Android 5.0 и iOS 8 внедрено шифрование данных по умолчанию. Чтобы изъять информацию, теперь требуется физический доступ к телефону и знание пароля.

ФБР крайне недовольно тем, как поступили разработчики из компаний Apple и Google. Более того, Бюро считает такую позицию этих компаний антиобщественной. Директор ФБР Джеймс Коуми (James B Comey) пытается склонить общественное мнение на свою сторону. Феерическое выступление Коуми состоялось 16 октября в Брукингском институте (Вашингтон), одном из ведущих экспертно-аналитических центров в США, который специализируется на общественных науках, муниципальном управлении, внешней политике и мировой экономике (стенограмма).

Внедрение криптографии в iOS и Android стало главной темой выступления директора ФБР. Он опять повторил главные тезисы своей позиции.

Технологии стали инструментом в руках очень опасных людей, говорит Коуми. К сожалению, законы отстают от технологического прогресса, поэтому правоохранительные органы не всегда способны получить необходимые улики, чтобы преследовать преступников и предотвращать терроризм. «У нас есть юридическое право перехватывать и прослушивать коммуникации и получать информацию по судебному ордеру, но часто отсутствует техническая возможность делать это».
35499
54
alizar 1369,4
сегодня в 11:24

Caesar III: game loop

Если бы меня спросили, какая часть технической реализации игры «Цезарь» мне интересна больше других, я бы вспомнил о расчете одного «дня» городской жизни. Отдельные компоненты математической модели города тоже интересны в реализации, но эти «шестеренки» будут крутиться только в сборе. Большая часть игры проходит внутри «игрового цикла», в котором проводятся вычисления параметров компонентов, выполняются перемещения игровых объектов, создаются новые события и объекты. Если вам интересно узнать, как была устроена симуляция города в одной из лучших игр 1998 года — добро пожаловать под кат. Описания, псевдокод и схемы помогут вам лучше узнать об используемых алгоритмах.


6534
62
dalerank 112,3
вчера в 19:06

Закон Бенфорда и распределения под него попадающие


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


Здесь N – основание системы счисления, должно быть больше 2, далее будем рассматривать 10.
Для строгих математиков это правило формулируется так: существуют такие случайные величины, для которых распределение вероятностей дробной части логарифма по любому основанию большему 1 сходится к равномерному на отрезке [0; 1] распределению. Далее я постараюсь писать как можно популярнее и подробнее, укажу примеры, ограничения, применение и случайные величины, для которых закон применим.
12532
108
paunch 50,4
вчера в 14:59

Страсти вокруг systemd и его использования по умолчанию в Debian

Группа «давних Unix-админов» открыла сайт debianfork.org. Они призывают сообщество рассмотреть альтернативу форка Debian, потому что этот дистрибутив собирается переходить на демон systemd.

Systemd — демон инициализации других демонов в Linux, который используется вместо SystemV Init (sysvinit). Его особенность — интенсивное распараллеливание запуска служб в процессе загрузки, что позволяет существенно ускорить старт операционной системы. Вероятно, скоро его начнут использовать по умолчанию в Debian.

Это очередной этап давней дискуссии вокруг systemd. Некоторые считают, что он нарушает философию Unix. Более месяца назад (та же?) группа активистов запустила проект BoycottSystemd.org, призывая бойкотировать systemd и дистрибутивы Linux, которые используют этот демон.
27778
58
alizar 1369,4
сегодня в 01:38

Несколько интересностей и полезностей для веб-разработчика #31

Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Исходники Reddit


Gravit


image

Замечательный графический редактор с открытым исходным кодом. Есть приложения под Mac, Linux, Windows, а также браузерная версия. В Gravit на данный момент реализован базовый функционал: слои, шейпы, пентул и множество различных функций для манипуляций с объектами. Но данный проект по большему счету ориентирован именно на веб-дизайн. Правильнее всего сказать, что Gravit — это смесь графического редактора в типичном представлении с визуальным редактором для разработки сайтов. Именно эта идея и ее реализация в формате open source делает продукт уникальным.
12677
215
сегодня в 11:51

Методы расширения в С++ перевод tutorial

Несколько дней назад Бьёрн Страуструп опубликовал предложение N4174 комитету по стандартизации С++ названное "Call syntax: x.f(y) vs. f(x,y)". Вот вкратце его суть: объявить выражение x.f(y) (вызов для объекта х метода f с аргументом y) эквивалентным выражению f(x,y) (вызов функции f с аргументами x и y). Т.е.

x.f(y) означает:
  1. Попробовать вызвать x.f(y): если класс объекта х содержит метод f, который может принять аргумент y — используем этот метод.
  2. Если пункт №1 не удался — проверяем, существует ли функция f, которая может принять аргументы x и y. Если это так — используем её.
  3. Если не найдено ни того, ни другого — генерируем ошибку.

f(x,y) означает ровно то же самое:
  1. Попробовать вызвать x.f(y): если класс объекта х содержит метод f, который может принять аргумент y — используем этот метод.
  2. Если пункт №1 не удался — проверяем, существует ли функция f, которая может принять аргументы x и y. Если это так — используем её.
  3. Если не найдено ни того, ни другого — генерируем ошибку.

Таким образом мы получаем возможность писать методы расширения, о которых мечтали многие С++ программисты. Я считаю это предложение одним из самых важных в эволюции языка С++.
3419
26
tangro 418,2
вчера в 21:59

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №130 (12 — 19 октября 2014)

Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


18926
168
alexzfort 257,4
сегодня в 04:34

«Пурпурный» I2P — окно в мир C++ приложений

I2P*
Известно, что официальный I2P написан Java, что само по себе отталкивает потенциальных пользователей, тем самым снижая полулярность сети, чем могла бы быть. Кроме того Java приложения достаточно требовательны к ресурсам, потому запуск I2P на слабых устройствах сопряжен с трудностями, а порой и невозможен. Также выяснилось что Java в Африке не та же самая Java, и поддержка стойкой криптографии зависит от страны, из-за чего пришлось отложить массовый переход на ECDSA.
Поэтому реализация I2P на C++ всегда была актуальной задачей. Из множества попыток «пурпурный I2P» (Purple I2P) на настоящий момент является наиболее успешной и пригодной для практического использования. Название обусловлено цветом рубашки на иконке I2P, чтобы отличать от официального I2P, где цвет — красный и обозначает семейство приложений, использующих данную реализацию I2P. i2pd же представляет собой I2P маршрутизатор общего назначения.

5800
34
orignal 26,6
вчера в 17:01

Обзор наиболее интересных материалов по анализу данных и машинному обучению №18 (13 — 19 октября 2014)


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