Search
Write a publication
Pull to refresh
1
0
Send message

Анализ кода демо Second Reality

Reading time11 min
Views7.9K

23 июля 2013 года был опубликован исходный код демо Second Reality (1993 год). Как и многим, мне не терпелось взглянуть на внутренности демо, которое так вдохновляло нас на протяжении всех этих лет.

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

  • Командная работа.
  • Обфускация.

Как обычно, свои заметки я сформировал статью: надеюсь, кому-нибудь это сэкономит несколько часов, и, возможно, вдохновит остальных читать больше исходного кода и становиться более опытными инженерами.

Часть 1: введение


Демо


Прежде чем приступать к коду, дам ссылку на захват легендарного демо в HD-видео (Майкла Хата). Сегодня это единственный способ полноценно оценить демо без графических глитчей (даже DOSBox не может правильно его запускать).

Динамическая типизация — это не инструмент для разработки. Это чепуха (паршивая)

Reading time5 min
Views88K


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

Я разбираюсь в типах и проектировании удобного и надежного АПИ. Но для доброй половины разрабов эти вещи ничего не значат. Потому что они используют динамическую типизацию, и понятия не имеют, какие проблемы и зачем я решаю.

Большую часть жизни я просто махал на них рукой и проходил мимо. Эти глупцы не понимают очевидных вещей, и я не нанимался разъяснять каждому js-нику, почему его код — это не разработка, а игрушечное прототипирование. Но время идёт, а количество идиотов вокруг и не думает уменьшаться, вместо того, чтобы всей своей фронтенд индустрией переехать наконец на статический тайпскрипт, эти ослы начинают использовать всякие кложуры, писать тонны тестов, и идти на все мыслимые ухищрения — лишь бы не разбираться в типах.
Читать дальше →

Древности: ZX Spectrum и древний игрожур

Reading time8 min
Views9.3K
Короткая, но яркая эпоха ZX Spectrum в моей жизни началась в 1993 году и закончилась в 1995-м, с появлением дома IBM PC. Самособранный АТМ Турбо со временем обзавелся звуковой микросхемой, двумя пятидюймовыми приводами для дискет, шикарной герконовой клавиатурой и корпусом от компьютера «Партнёр 01-01». Были собраны два десятка кассет с программами и играми, кое-что потом было перенесено на диски, и почти все потеряно за следующие двадцать пять лет. Но что-то осталось. В позапрошлом году я рассказывал про уцелевшие сборники на кассетах. Сегодня речь пойдет о литературе.

Книг и брошюр по спектруму тоже было куплено немало. Сейчас для по сути пользовательских задач это не требуется — вся информация есть в интернете. В начале девяностых интернет заменяли печатные издания. «Книги» — это громко сказано, зачастую это были тонкие тетрадки, сшитые из плохой бумаги, с машинописным шрифтом и строками на латинице от руки, но обязательно — с ламинированной обложкой. К ним обращались, когда надоедало «просто играть в игры», и хотелось либо понять, во что играешь, либо каким-то образом модифицировать игровой процесс. В крайнем случае — если играть совсем надоело — заняться программированием.

Одна из двух сохранившихся у меня книг тех времен — «Описание 500 игровых программ ZX Spectrum». Туда попали не лучшие игры, а просто те, до которых дотянулась рука автора. Она решала простую задачу: после того, как вы переписали пару кассет с софтом у знакомых, надо понять, как это вообще работает, и какие кнопки нажимать. Самостоятельно это сделать получалось не всегда. Был такой элемент интриги: то ли ты что-то не понял, то ли без джойстика игра не работает. То ли с твоим клоном «Спектрума» не совместима, то ли переписалась плохо. Я приведу несколько цитат из этой книги, а заодно покажу, как рецензировались игры «у них», на Западе, с развитой фанатской прессой.

Робот-попрошайка на ROS и нейросетках

Reading time17 min
Views7.7K
Обычно к таким поделкам возникает два вопроса: «как?» и «для чего?» Первому вопросу посвящена сама публикация, а на второй я отвечу сразу:

Этот проект я затеял для того, чтобы освоить робототехнику, начиная с Raspberry Pi и камеры. Как известно, один из лучших способов чему-нибудь научиться — это придумать себе техзадание и попытаться его выполнить, по ходу получая необходимые навыки.

На тот момент у меня еще не было светлых идей в области робототехники, поэтому я решил сделать исключительно фановый проект — робота-попрошайку. В итоге получился автономный робот на Raspberry Pi и ROS, использующий Movidius Neural Cumpute Stick для обнаружения лиц. Он бродит по помещению, ищет людей, и трясет перед ними банкой. Вот как выглядит этот робот:


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

Игрострой: порог входа в индустрию, специальности и возможный доход

Reading time4 min
Views26K
image

Разработчик игр — одна из наиболее востребованных в IT-профессий. Во-первых, потому, что это интересная работа, во-вторых, хорошо оплачиваемая, и в-третьих… ну, геймдевелопер может показать результат своего труда, и его в большинстве случаев смогут оценить даже непосвященные.

Геймдевелоперы разрабатывают игры для самых разных игровых платформ, включая ПК, консоли, смартфоны, VR-шлемы, умные часы и т.п. Кстати, несмотря на то, что термин «геймдевелопер» давно устоялся, существуют его разночтения. В некоторых случаях так называют исключительно «игровых программистов». Мы же чуть расширим горизонт, включив сюда как программистов, так и гейм дизайнеров и артистов. Разбираться в этом сложном вопросе помогал Илья Афанасьев, декан Факультета Разработки игр GeekBrains.
Читать дальше →

Про-джуниоры, или полмиллиона «потерянных» разработчиков

Reading time8 min
Views41K

Об исследовании


Введение


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

про числа
Если числовое значение не подкреплено ссылкой на источник, значит оно является средним арифметическим экспертных оценок, полученных от респондентов в ходе интервью

Возможно, по причине относительной малочисленности этой группы специалистов, ни специфика их опыта переобучения, ни особенности трудоустройства и найма, до сих пор не являлись предметом содержательного обсуждения или исследования. Однако, отсутствие явного интереса к про-джуниорам трудней объяснить, как только мы переходим от относительных величин к абсолютным: даже 0.2% от 24 млн — это почти половина от общего количества разработчиков в Чехии, а 2% или 480 тысяч девелоперов — это уже значительно больше количества разработчиков в России.

Полгода назад я начал работать над исследованием в рамках выпускной работы, чтобы понять из чего складывается профессиональный опыт про-джуниоров. Ниже, я бы хотел поделиться основными сюжетными линиями, которые были выделены в ходе серии интервью с про-джуниорами, рекрутерами и HR-ами.
Читать дальше →

Часть 2: Mодули и AppStore. ESPboy — гаджет для ретро игр и экспериментов с IoT

Reading time7 min
Views7.3K

Со времени публикации первой статьи об сконструированном мной девайсе ESPboy на микроконтроллере ESP8266 прошло довольно много времени.



Купить ESPboy2 можно на www.tindie.com или собрать самостоятельно.



Однако за это время удалось кое что сделать:


  1. Довести сам девайс до стадии производства
  2. Собрать модули расширения, написать под них софт и отладить
  3. Сделать онлайн каталог приложений с быстрой загрузкой их по WiFi по аналогии с Apple iStore и Google play market
  4. Портировать библиотеку для раработки игр с Arduboy и скомпилировать несколько десятков Arduboy игр под ESPboy
  5. Разработать порядком новых ретро игрушек на Little Game Engine
Читать дальше →

C++ быстрее и безопаснее Rust, Yandex сделала замеры

Reading time15 min
Views132K

Спойлер: C++ не быстрее и не медленнее и вообще смысл не в этом. Эта статья является продолжением славных традиций развенчания мифов крупных российских компаний о языке Rust. Предыдущая была "Go быстрее Rust, Mail.Ru Group сделала замеры".


Недавно я пытался заманить коллегу, сишника из соседнего отдела, на Тёмную сторону Rust. Но мой разговор с коллегой не задался. Потому что, цитата:


В 2019 году я был на конференции C++ CoreHard, слушал доклад Антона antoshkka Полухина о незаменимом C++. По словам Антона, Rust еще молодой, не очень быстрый и вообще не такой безопасный.

Антон Полухин является представителем России в ISO на международных заседаниях рабочей группы по стандартизации C++, автором нескольких принятых предложений к стандарту языка C++. Антон действительно крутой и авторитетный человек в вопросах по C++. Но доклад содержит несколько серьёзных фактических ошибок в отношении Rust. Давайте их разберём.

Ранние годы ФОРТа

Reading time17 min
Views7.7K
image

КДПВ взята отсюда

Введение


ФОРТ – простой и естественный компьютерный язык. Он получил заметное распространение там, где необходима высокая эффективность. В 60-х годах он прошел путь развития от университетов через бизнес к лабораториям. Это — история о том, как простой интерпретатор расширил свои возможности и смог стать полноценным языком программирования и операционной системой.
Лонгрид внутри

Разработка прошивки для аналоговой видеокамеры EVR-Y2022F

Reading time26 min
Views5.8K
В предыдущей статье было очень подробно рассмотрено устройство аналоговой видеокамеры с целью создания собственной прошивки. Как уже было сказано, камера имеет микроконтроллер неизвестного происхождения. Он гораздо богаче, чем привычные мне AVR: у него два напряжения питания 3.3В и 1.8В, а также, у него есть функция DSP. К такому выводу я пришёл, когда задумался про реализацию алгоритма автофокусировки. Тем не менее, я не предпочитал сложные МК типа STM32 и прочие, хотя бы потому, что я с ними вообще никогда не работал. Мной однозначно было принято решение, что для реализации своей прошивки я буду применять один из МК AVR. Поэтому уже на этом этапе я начал осознавать, что с реализацией функции автофокусировки будет не очень легко справиться, а точнее – невозможно.
Читать дальше →

Алгоритмы рандома

Reading time5 min
Views83K
В этой статье вы увидите самые разнообразные велосипеды алгоритмы для генерации случайных чисел.

Про что статья


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

Svelte, исчезающий фреймворк, который уже не исчезнет

Reading time19 min
Views28K
Когда на днях в наш уютный чатик @sveltejs в телеграм запостили ссылку на очередную «разоблачающую» статью про Svelte, я очень обрадовался, предвосхищая интересный технический батл или хотя бы увлекательное чтиво чужого практического опыта. Кроме того, что это всегда интересно и полезно, определенное стечение обстоятельств — плановый отпуск и карантин — заставляют меня скучать дома, а подобная статья могла бы несколько разнообразить мой день. Каково же было мое разочарование, вы даже представить себе не можете… но давайте по делу.


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

Процедурная гидрология: динамическая симуляция рек и озёр

Reading time15 min
Views8.8K
Примечание: полный исходный код проекта выложен на Github [здесь]. В репозитории также содержится подробная информация о том, как читать и использовать код.

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

Я исследовал уже существующие методики процедурной генерации рек и озёр, но найденные результаты меня не устроили.

Основной задачей многих методов является создание систем рек (очень красивых) при помощи различных алгоритмов (иногда на основании заранее созданной карты высот или обратной задачи), но им недостаёт сильной реалистичной связи между рельефом и гидрологией.

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

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

В своём методе я стремлюсь одновременно и к простоте, и к реализму ценой небольшого повышения сложности базовой системы эрозии. Рекомендую прочитать мою предыдущю статью об этой системе [здесь, перевод на Хабре], потому что новая модель строится на её основе.

Как демо Memories умещается в 256 байт

Reading time17 min
Views14K

Введение


Привет! Меня зовут «HellMood», а эта статья посвящена небольшой программе для MS DOS под названием «Memories». Эта программа имеет размер 256 байт, она выиграла в категории «PC 256 byte» соревнований демосцены «Revision» 2020 года, а также получила приз зрительских симпатий. Видео вывода программы можно посмотреть здесь, а видео с реакцией онлайн-аудитории и модераторов — здесь. Скачать релиз и оставить комментарии можно здесь. В этой статье будет представлен глубокий анализ программы, рассказано об исторических отсылках и этапах разработки. Статья выложена в sizecoding wiki. Она не только позволит вам понять внутреннее устройство «Memories», но и поможет самим создать нечто похожее. Изучите её! Если вы новичок в sizecoding-е (написании программ в рамках нужного размера) или в ассемблере x86, то рекомендуется начинать с основ этой wiki. Принципы понять легко, но с подробностями реализации разобраться бывает не так просто.

Краткий обзор


В этой статье мы будем говорить об отправленной на конкурс версии для DosBox (256 байт). В архиве также содержатся версии для FreeDos и Windows XP DOS, которые на момент написания поста работали не на всех компьютерах. Эти альтернативные версии были включены в архив как proof of concept, чтобы показать, что программа не только работает в эмуляторе. В категории «PC 256 bytes» соревнований «Revision» 2020 года можно было указать в качестве платформы «FreeDos» или «DosBox» (последняя в конкретной конфигурации). Как доказывают альтернативные версии, на самом деле можно модифицировать версию для DosBox так, чтобы она работала во FreeDos, MS DOS, WinXP и Win98, но статья будет не об этом.
Читать дальше →

Конец хайпа: Что ждёт язык Scala дальше

Reading time13 min
Views25K


Вокруг языка Scala всегда было много хайпа и неоднозначных суждений.


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


В ответ на это один из очень активных членов сообщества (Li Haoyi) описал своё видение дальнейшего пути языка Scala.


Статья у него получилась интересной, посему решил перевести её.

Перевод

Современный самолёт by design защищён от биологической угрозы (COVID-19) лучше, чем вы думаете

Reading time14 min
Views37K
Рейсов осталось очень мало, но они пока есть. Мало их из-за COVID-19. В основном — из-за закрытия пассажирских перевозок и сопутствующих карантинных мер. Но я бы хотел поговорить о том, насколько страшна угроза «подхватить» вирус, находясь внутри самолета. Вдруг вам по тем или иным причинам нужно лететь? А внутри — тесное закрытое пространство, и кажется, что там довольно опасно.

Я опишу специфику семейства Airbus 319/320/321, наверное, одного из самых распространенных узкофюзеляжных самолетов в мире, которые я пилотирую много лет. Я не специалист по Boeing и другим типам самолетов, но предполагаю, что различия в работе описываемых систем минимальны. Кроме того, я не являюсь техническим специалистом, обслуживающим данные самолеты, поэтому уж будьте любезны простить мои возможные небольшие огрехи в описании технической части.

Самое главное:


Схема вентиляции пассажирского салона Airbus A318/319/320/321

Пассажирская кабина самолета «нарезана» системой кондиционирования салона на много-много слоёв, разделенных по рядам и состоящих из отдельных воздушных потоков. Визуально это одно пространство, но благодаря данной системе — крайне маловероятно, что вы сможете заразиться, кроме как от ближайшего соседа. Плюс в полете воздух в салоне полностью обновляется раз в 3 минуты и перед тем, как вернуться обратно, пропускается через салонные HEPA-фильтры.

А теперь, давайте я расскажу вам детали.

Парсите, а не валидируйте

Reading time16 min
Views30K

Еще в декабре мне попалась одна совершенно замечательная статья на английском, посвящённая использованию системы типов языка для более широкого класса задач, для повышения надежности приложений и простоты рефакторинга. К сожалению, в тот момент я был слишком занят написанием статей по ФП, которые крайне важно было написать, пока свежи воспоминания. Но теперь, когда с этой задачей я справился, наконец дошли руки перевести эту замечательную заметку. Оригинальный язык примеров — Хаскель, но я решил переписать их на раст, для более широкого охвата аудитории. Однако язык тут совершенно неважен, советы этой статьи я применяю в ежедневной разработке на вполне себе "приземлённых" C# и TypeScript, так что если вы просто стараетесь писать надёжный и поддерживаемый код, то, вне зависимости от языка, статья вам будет в тему.


Благодарю за вычитку и помощь в переводе Hirrolot, funkill и andreevlex


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

SARS нерукотворный? Генеалогия уханьского коронавируса

Reading time73 min
Views293K

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

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

И вот тут, в погоне за доводами против рукотворности вируса, меня и заразил вирус сомнений. В чём, собственно, причина сомнений? В том, что чем глубже погружаешься в деятельность коронавирусологов за последние 15–20 лет, тем лучше понимаешь, что создание ровно таких химер как CoV2 у них было обыденным делом. А CoV2 — это очевидная химера, основанная на летучемышином штамме RaTG13, у которого в шиповидном белке место связывания с рецептором (RBM) заменено с летучемышиного на панголиний, и вдобавок врезан особый участок из 4-х аминокислот, создавший furin cleavage site, который, как ранее выяснили вирусологи, значительно расширяет «репертуар» вируса в плане того, в чьи клетки он может проникать. Скорее всего, именно благодаря этому новому фуриновому сайту, новый мутант и сумел перескочить с исходных носителей на людей.

С учётом тех высот, которых сегодня достигла генная инженерия, синтетически собрать CoV2 по вышеописанной методике не составило бы труда даже начинающему специалисту. Ведь вирусологи, включая руководителя коронавирусного направления в Уханьском институте вирусологии Ши Чжэнли, такими вещами уже неоднократно занимались — как заменой RBM у одного вида вируса на RBM из другого

Строим города по клику мыши с Houdini и Python

Reading time3 min
Views15K


В разработке игр постоянно создаются и применяются пайплайны, алгоритмы и небольшие процессы, которые экономят кучу времени и сил. Часто эти решения — простые, но изящные.

Эта статья как раз про подобное. Автор придумал метод постройки виртуальных городов, который в перспективе хочет превратить в полноценный инструмент левел-дизайнера.
Читать дальше →

Самая короткая программа вывода десятичного числа

Reading time7 min
Views16K
В 1984-ом году вышла культовая книга Стивена Леви “Хакеры: герои компьютерной революции”. Существует любительский русский перевод, но он далёк от идеала. Я было взялся исправлять неточности в нём, положив рядом английский оригинал (кстати, и он не без греха), да забросил после второй главы. Так или иначе, хочу обратить ваше внимание на фрагмент (можно прочитать его в виде отдельной статьи), посвящённый подпрограмме печати числа в десятичной системе. Насколько можно уменьшить такую программу? Каков предел?
Читать дальше →

Information

Rating
Does not participate
Location
Херсон, Херсонская обл., Украина
Registered
Activity