Рубрика «исходный код»

Microsoft понадобилось 10 дней, чтобы удалить исходники Windows XP с принадлежащего им GitHub - 1
В исходниках Windows XP нашли секретную тему в стиле Mac

В сентябре вся индустрия всполошилась после новости об утечке исходных кодов Windows XP и Windows Server 2003. Новость оказалась не фейком. Исходные коды настоящие, и из них скомпилировали рабочие версии обеих ОС.

Напомним, что всё началось 24 сентября: на портале 4chan неизвестные выложили торрент на 42,9 ГБ с полными исходниками Windows XP и Windows Server 2003. Хотя сегодня под XP работает меньше 1% компьютеров в мире, а разработчик не обеспечивает никакой поддержки, утечка исходников всё равно вызвала лёгкую эйфорию среди программистов. Ведь мы много лет гадали, как реализованы те или иные функции или API, а теперь можно посмотреть на код своими глазами.

Так или иначе, Microsoft мгновенно начала войну. Уже на следующий день исходники стали удалять везде, где только можно.
Читать полностью »

Опубликован исходный код Command & Conquer: смотрим, что внутри - 1

Компания Electronic Arts открыла исходный код первой Command & Conquer, а также Command & Conqueror: Red Alert. Скачать его можно с GitHub.

Всё содержимое имеет лицензию GPL v3; кроме того, в исходном коде сохранены все комментарии. Отсутствует только changelog использовавшейся при разработке системы контроля версий. Похоже, всё просто недавно выложили на Git.

Я решил изучить, что же происходит внутри этого игрового движка. Не буду описывать каждую строку кода, но, по крайней мере, будет интересно взглянуть на то, какой была разработка на C++ в начале 1990-х.

Изучать мы будем только исходный код «Command & Conquer: Red Alert», потому что он похож на форк первой игры. В репозитории он находится в папке REDALERT.

Статистика

  1. 290 файлов заголовков C++
  2. 296 файлов реализации на C++
  3. 14 файлов ассемблера, содержащих инструкции ассемблера x86
  4. 222090 строк кода на C++

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

Почти все файлы имеют имена в верхнем регистре.

Кроме того, есть файл «RedAlert.vcxproj», поэтому можно предположить, что проект можно собрать в более новых версиях Visual Studio, но этого я не проверял.
Читать полностью »

Перевод четвёртой статьи из серии от Fabien Sanglard, в этот раз про порт Another World на IBM PC.

В течение трёх десятилетий IBM спокойно доминировала на рынке мэйнфреймов. Когда в 1979 году продажи микрокомпьютеров достигли 150 миллионов долларов, «Колосс Армонка» решил выпустить собственный. На фоне конкурентов, таких как Hewlett-Packard (HP), Texas Instruments (TI), Tandy и Data General, IBM сделала всё по-другому, чтобы выделиться.

Полигоны Another World: IBM PC - 1
Читать полностью »

Привет. Я здесь писал еще не очень много, но успел попробовать несколько форматов статей. Здесь были интервью с некоторыми IT специалистами из компании в которой я работаю, переводы, гайды… Что-то зашло, что-то нет. И вот, сегодня я решил попробовать новый для себя формат.

Лучшие комменты в исходном коде - 1

Читать полностью »

Тысячи забытых TODO в коде Kubernetes - 1
Фото Yancy Min на Unsplash

Kubernetes — большой проект. Не только потому, что очень востребован, но и с точки зрения исходного кода. На момент написания этой статьи насчитывалось более 86 000 коммитов, более 2000 участников, более 2000 открытых тикетов, более 1000 открытых пул-реквестов и 62 800 звёзд в репозитории на GitHub.

Утилита scc насчитала более 4,3 млн строк кода на Go (всего более 5,2 млн строк), из них более 3 млн строк реального кода и более 700 тыс. строк с комментариями, в общей сложности более 16 000 файлов, включая директорию vendor/.
Читать полностью »

Открыт исходный код приложений ProtonVPN - 1

Компания Proton Technologies, развивающая защищённый почтовый сервис и VPN, открыла исходные тексты клиентских программ ProtonVPN для Windows, macOS, Android и iOS, сообщает OpenNET. Код открыт под лицензией GPLv3.
Читать полностью »

Запускаем однофайловые программы в Java 11 без компилирования - 1

Пусть исходный файл HelloUniverse.java содержит определение класса и статичный метод main, который выводит в терминал одну строку текста:

public class HelloUniverse{
      public static void main(String[] args) { 
            System.out.println("Hello InfoQ Universe");
      }
}

Обычно для запуска этого класса требуется сначала скомпилировать его с помощью Java-компилятора (javac), который создаст файл HelloUniverse.class:

mohamed_taman$ javac HelloUniverse.java

Затем нужно с помощью команды виртуальной машины Java (интерпретатора) запустить получившийся файл:

mohamed_taman$ java HelloUniverse
Hello InfoQ Universe

Тогда сначала запустится виртуалка, которая загрузит класс и исполнит код.

А если вам нужно быстро проверить фрагмент кода? Или вы новичок в Java (в данном случае это ключевой момент) и хотите поэкспериментировать с языком? Описанные два этапа могут всё усложнить.

В Java SE 11 можно напрямую запускать одиночные исходные файлы без промежуточной компиляции.
Читать полностью »

Эта статья часть серии про порты игры Another World. В ней пойдёт речь про хитрости при работе с Amiga 500. Рекомендуется сначала прочитать предыдущую статью.

История Amiga начинается в середине 1982 года со звонка Ларри Каплана Джею Майнеру. Оба тогда работали в Atari в 70-х. Оба решили покинуть компанию. Каплан из-за отсутствия признания и Майнер из-за запрета руководства на использование крутого, но дорогого процессора Motorola 68000.

Покинув Атари, Каплан основал Activision. После того, как инвесторы обратились к нему с просьбой разработать новую игровую платформу, он связался с самыми блестящими людьми, которых он знал. Майнер взялся за аппаратную часть вопроса в только что образованной компании «Hi-Toro». Система получила кодовое название «Lorraine».

К концу 1983 прототип был собран. Устройство впечатлило посетителей Consumer Electronics Show (CES) в январе 1984 года, благодаря демке Boing Ball, в которой огромные спрайты перемещались с фреймрейтом 60 кадров в секунду. Устройство анонсировали в 1985 году под именем «Amiga from Commodore», позже переименовав в Amiga 1000.

Полигоны Another World: Amiga 500 - 1
Читать полностью »

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

Хорошим выбором для этого мог бы стать DOOM. Мегахит 1994 года от id Software был портирован на всё, что только можно. Игра спроектирована вокруг ядра, чётко разделённого на слои. Обычно легко найти и прочитать реализацию шести подсистем ввода-вывода.

Другим выбором могла бы стать Another World 1991 года от Эрика Шайи, в Северной Америке более известная под именем Out Of This World. Я бы сказал, что на самом деле её интереснее изучать, чем DOOM, из-за полигональной графики, подходящей для диких оптимизаций. В некоторых случаях хитрые трюки позволяли игре работать на оборудовании, созданном за пять лет до выхода игры.

Полигоны Another World - 1
Читать полностью »

Почему полезно изобретать колёса - 1

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

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

Но увы. Да, было очевидно, что подобный код встречался ему раньше. Он в общих чертах знал, как там все работает. Нам хватило бы наброска решения, который демонстрировал бы понимание концепта. Однако код, который кандидат писал на доске, был полной бессмыслицей. У него сложилось крайне туманное представление о том, что такое промисы в JavaScript и он не мог толком объяснить, зачем они нужны. Для джуниора это было бы еще простительно, но на позицию сениора уже не тянуло. Как бы этот разработчик сумел устранить баги в сложной цепочке с промисами и объяснить остальным, что именно он сделал?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js