Search
Write a publication
Pull to refresh
46
0
Send message

Лучшие компьютерные игры всех времен и народов по версии хабрасообщества 2013 года

Reading time2 min
Views324K


Данный пост − попытка определить лучшие компьютерные игры всех времен и народов. Конечно, по версии нашего хабрасообщества. Ну и, разумеется, с годами предпочтения меняются, поэтому версия 2013 года.

Правила простые: в комментариях первого уровня хабраюзер пишет название любимой игры. Разрешается добавить небольшую картинку (высотой до 100 пикселей). Разрешается сделать небольшое описание, строчки на две, лучше со ссылкой на ресурс, где игра хорошо описана. В комментарий второго уровня к играм просьба добавлять интересные факты об игре, что должно прибавить плюсов.

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

Давайте установим срок, до которого продлиться наше обсуждение и голосование. Пусть это будет ночь с 12 на 13 марта. Думаю, что пяти с лишним полных дней будет вполне достаточно.

Мы построим свой музей компьютерных игр, Юзернейм!
Читать дальше →

Создание Warcraft (часть 2)

Reading time10 min
Views77K
От переводчика

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

Под хабракатом — о том, что именно, помимо любви к Dune 2 подтолкнуло на создание Warcraft; почему в Warcraft такая яркая графика; какие здания не попали в Warcraft 1; откуда растут ноги у героев в Warcraft III и еще несколько интересностей, включая заднюю обложку коробки первого издания и несколько скринов для того, чтобы пустить слезу ностальгии.

Традиционно буду рад замечаниям, исправлениям. И спасибо всем, кто писал по этому поводу в прошлый раз!

Читать дальше →

Создание Warcraft (часть 1)

Reading time10 min
Views86K
Введение (от переводчика)


Так вышло, что одна из моих самых любимых игр — Warcraft II.
Каждый раз, когда эта игра где-то упоминается, или кто-то про неё вспоминает, я обычно очень радуюсь. Перед Warcraft II, разумеется, был просто Warcraft.

Патрик, автор статьиИ вот недавно случилось интересное — Патрик Вайат (Patrick Wyatt), один из тех людей, кто стоял у истоков Blizzard, и человек, который затеял разработку Warcraft начал цикл воспоминаний о тех временах. Первая статья, которую я вам предлагаю прочитать ниже — о начале разработки Warcraft. О том, откуда появилась идея; о том, какая сеть была организована у ребят в офисе, пока они грезили о мультиплеере; о EMS и тонкостях эстетики программирования под DOS; о команде проекта и так далее.

Я, увы, совсем не специалист в разработке под DOS, поэтому если читатели укажут мне на неточности в переводе, связанные с техническими деталями — буду рад и тут же исправлюсь.

Это касается, понятное дело, и любых других неточностей, опечаток, пунктуации и стилистики.




image Давным давно, в начале времен, когда игры для PC писались под операционной системой DOS, я начал работать над игрой под названием Warcraft.

Читать дальше →

Как начать и не бросить писать ОС

Reading time7 min
Views78K
Очередной велосипедЧитая Хабр в течении последних двух лет, я видел только несколько попыток разработки ОС (если конкретно: от пользователей pehat и iley (отложено на неопределённый срок) и Igor1024 (не заброшено, но пока больше походит на описание работы защищённого режима x86-совместимых процессоров, что бесспорно тоже необходимо знать для написания ОС под x86); и описание готовой системы от alman (правда не с нуля, хотя в этом нет ничего плохого, может даже наоборот)). Мне почему-то думается, что почти все системные (да и часть прикладных) программисты хотя бы раз, но задумывались о написании собственной операционной системы. В связи с чем, 3 ОС от многочисленного сообщества данного ресурса кажется смешным числом. Видимо, большинство задумывающихся о собственной ОС так никуда дальше идеи и не идёт, малая часть останавливается после написания загрузчика, немногие пишут куски ядра, и только безнадёжно упёртые создают что-то отдалённо напоминающее ОС (если сравнивать с чем-то вроде Windows/Linux). Причин для этого можно найти много, но главной на мой взгляд является то, что люди бросают разработку (некоторые даже не успев начать) из-за небольшого количества описаний самого процесса написания и отладки ОС, который довольно сильно отличается от того, что происходит при разработке прикладного ПО.

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

Читать дальше →

Пример использования недокументированной функции Windows

Reading time3 min
Views16K
Большая часть программ от Sysinternals использует недокументированные функции. Мне хватило этого факта, чтобы заинтересоваться этой темой. Интересно, как крутые дядьки используют неописанные функции в своих не менее крутых программах.

Предполагаем, что мы в нужной степени ленивые программисты, знаем С, в ладах с WinAPI и с архитектурой современной ОС Windows и у нас есть Ida Pro, хе-хе. Хотим красиво, быстро и эффективно выполнить задачу, не изобретая велосипед (и чтоб ещё сильно не перенапрячь руки и голову).
Читать дальше →

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

Reading time6 min
Views53K

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


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

Почему с нормальным распределением не все нормально

Reading time7 min
Views53K
image

Нормальное распределение (распределение Гаусса) всегда играло центральную роль в теории вероятностей, так как возникает очень часто как результат воздействия множества факторов, вклад любого одного из которых ничтожен. Центральная предельная теорема (ЦПТ), находит применение фактически во всех прикладных науках, делая аппарат статистики универсальным. Однако, весьма часты случаи, когда ее применение невозможно, а исследователи пытаются всячески организовать подгонку результатов под гауссиану. Вот про альтернативный подход в случае влияния на распределение множества факторов я сейчас и расскажу.
Читать дальше →

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

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

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

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

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

Алгоритмы LZW, LZ77 и LZ78

Reading time8 min
Views160K

Хочется продолжить свою предыдущую тему об алгоритмах сжатия. В этот раз я расскажу об алгоритме LZW и немного об его родственниках алгоритмах LZ77 и LZ78.

Алгоритм LZW


Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь.
Читать дальше →

Таблица виртуальных методов и техника безопасности

Reading time10 min
Views44K
Техника безопасностиВ качестве небольшой разминки перед статьёй хотелось бы, чтобы читатель задал себе следующий вопрос: нужно ли фотографу для получения качественных снимков знать, как работает фотоаппарат? Ну, по крайней мере, должен ли он знать понятие «диафрагма»? «Отношение сигнал-шум»? «Глубина резкости»? Практика подсказывает, что даже со знанием таких сложных слов снимки могут получиться у наиболее «рукастых» не особо лучше снятых на мобильник через 0.3-МПикс-дупло. И наоборот, по-настоящему хорошие снимки могут получаться благодаря исключительно опыту и наитию при полном незнании матчасти (хотя это, скорее, исключения из правил, но всё же). Однако вряд ли со мной кто-то будет спорить, что профессионалам, которые хотят выжать из своей техники всё (а не только количество мегапикселей на квадратный миллиметр матрицы), эти знания нужны в обязательном порядке, поскольку в противном случае ему и называться профессионалом-то нельзя. И верно это не только для отрасли цифровой фотографии, но и для практически любой другой.

Верно это и для программирования, а для программирования на языке С++ – вдвойне. В этой статье будет описано важное понятие языка, известное как «Виртуальный табличный указатель», что присутствует почти во всех сложных классах, и то, каким образом его можно случайно повредить. Это может, в свою очередь, вести к едва поддающимся отладке ошибкам. Сначала напомню, что это вообще такое, а затем и поделюсь своими соображениями по поводу того, как и что может там сломаться.
Читать дальше →

Брутфорсим EFI с Arduino

Reading time23 min
Views105K
Приветствую Хабравчан!

Думаю, данной темой не многих удивишь — достаточно набрать в поисковике фразу arduino bruteforce и сразу станет понятно, насколько распространен перебор паролей при помощи платформы Arduino. Я же хочу рассказать о том, как это быстро организовать с наименьшим наборов компонентов, без разводки/травления плат и пайки. Сразу оговорюсь, что описанные мною действия носят ознакомительный характер и никому не причинили вреда, ни морального, ни физического… разве что мошенникам.


Читать дальше →

Разрешите вас отадминить?

Reading time8 min
Views74K


Главным врагом хакеров (не будем спорить об изначальном значении этого слова — сейчас мы будем этим термином обозначать тех, кто занимается созданием/распространением вредоносных программ) являются антивирусы, которые с той или иной степенью успешности обнаруживают их поделки и удаляют. Одним из способов предотвращения обнаружения незаконной деятельности и используемых для этого утилит является попытка «заставить» легальное ПО служить своим целям. Например, зачем что-то скачивать из интернета самому, рискуя попасть в немилость у фаервола или эвристика (не говоря о сигнатурах), если можно запустить wget с параметрами? Зачем городить свою отправку корреспонденции, если есть blat? Зачем долго и упорно делать утилиту удаленной слежки за компьютером, когда есть бесплатные программы удаленного администрирования?
Читать дальше →

ZeroNights 2014 — hackquest

Reading time1 min
Views12K
image

ZeroNights — это конференция по практической информационной безопасности, которую мы проводим в этом году уже в четвертый раз! Мы не раз о ней рассказывали, а многие хабрахабровцы принимали в ней участие.

И есть у нас традиция — перед самой конференцией проводить хакквест, предлагая участникам различные задания (поломать веб, отреверсить, проанализировать, написать эксплойт для бинарщины — в общем практика). За победу мы даем приглашение на конференцию и с прошлого года вносим в «зал славы». Правила таковы:

  • Квест идёт 7 дней, стартует 1 октября в 20:00 и заканчивается 8 октября в 20:00 (по Москве);
  • Каждый день — одно задание. Длительность каждого задания — 24 часа;
  • Всего заданий — 7;
  • Кто первый решает задание — получает инвайт (всего инвайтов: 7);
  • В некоторых ситуациях мы можем попросить участника рассказать как было решено задание (не стоит пытаться нас обмануть, мы за честные и равные соревнования!)

Читать дальше →

Универсальная метасистема на C++

Reading time8 min
Views16K
Привет, Хабрхабр!

Хочу поделиться своим опытом разработки метасистемы для C++ и встраивания различных скриптовых языков.
Сравнительно недавно начал писать свой игровой движок. Разумеется, как и в любом хорошем движке встал вопрос о встраивании скриптового языка, а лучше даже нескольких. Безусловно, для встраивания конкретного языка уже есть достаточно инструментов (например, luabind для Lua, boost.python для Python), и свой велосипед изобретать не хотелось.
Читать дальше →

Создание прокси-dll для запуска DirectDraw игр в окне

Reading time5 min
Views20K
В продолжение темы расширения функциональности готовых программ хотелось бы рассказать об ещё одном способе изменения логики работы уже скомпилированной программы, который не требует делать изменений в самом исполняемом файле. Это может пригодиться при распространении вашей модификации в США, где прямое вмешательство в исполняемый файл строго осуждается. Речь пойдёт о создании крошечной прокси-dll (всего ≈4 килобайта) для подмены используемой приложением библиотеки на примере ddraw.dll.
Читать дальше →

Отличия сетевых вызовов Windows и Linux

Reading time4 min
Views22K
image
Во многом совместимые на уровне исходных кодов модели сокетов от Berkeley и Microsoft, на практике оказываются не такими уж кросплатформенными.

Рассмотрим некоторые хитрые различия в их реализации, которые обнаружились при написании кросплатформенного RPC для перенаправления сетевых вызовов некоторого процесса в одной ОС на другую ОС.
Читать дальше →

Wi-Fi Mesh сети для самых маленьких

Reading time4 min
Views320K


Недавним постом мы выяснили, что довольно большая часть от аудитории хабра не знает о том, что такое Mesh сети, постараемся это исправить.

Сегодня мы поговорим о:
  • Что такое Mesh Wi-Fi
  • Полноценная Mesh Wi-Fi сеть
  • Зачем такие сети нужны
  • Какие проблемы решает эта технология
  • Плюсы и минусы Mesh сетей
  • Какие технологии и протоколы используются
  • Сравнительная таблица Mesh протоколов
  • Mesh сети и органы власти

Читать дальше →

Обзор новых возможностей С++14: Часть 1

Reading time10 min
Views141K
В апреле в Бристоле прошла встреча комитета С++, на которой были рассмотрены первые предложения по внесению изменений в новый стандарт С++14. Все рассматриваемые в этой статье изменения были одобрены на этой встрече и уже занимают свое почетное место в последней версии черновика нового стандарта (N3690 от 15 мая 2013).

Краткий перечень:
  • Автоматическое определение типа возвращаемого значения для обычных функций
  • Обобщенная инициализация захваченных переменных лямбд с поддержкой захвата-по-перемещению
  • Обобщенные (полиморфные) лямбда-выражения
  • Упрощенные ограничения на создание constexpr функций
  • Шаблоны переменных
  • exchange
  • make_unique
  • Обособленные строки
  • Пользовательские литералы для типов стандартной библиотеки
  • optional
  • shared_mutex и shared_lock
  • dynarray

Читать дальше →

Драйвер — это просто

Reading time7 min
Views102K
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Читать дальше →

Расставим точки над структурами C/C++

Reading time4 min
Views282K
Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: во-первых я не Господи, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки…


Читать дальше →

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Registered
Activity