Pull to refresh
-7
0
Соловьев Антон Владимирович @MisterN

User

Send message

Создание игры в стиле GameBoy в 13 КБ

Level of difficultyMedium
Reading time9 min
Views7K

В прошлом году я решил поучаствовать в гейм-джеме js13kgames. Это длящееся один месяц ежегодное соревнование по созданию с нуля игры на JavaScript, которая должна уместиться в 13 КБ (в zip). Места как будто не очень много, но с достаточным количеством креативности при таких ограничениях можно достичь многого. Просто взгляните на потрясающие примеры прошлых лет:


Хотя в прошлом году моя игра заняла не такое высокое место, я всё равно хотел бы поделиться своими открытиями, сделанными в процессе её разработки.

Мне захотелось сделать игру, напоминающую о ретроэпохе игр на портативных консолях с их уникальным квадратным экраном, низким разрешением и видом сверху вниз. Я решил реализовать быстрый геймплей в стиле action-RPG с простым, но увлекательным геймплеем, мотивирующим игрока продолжать игру. С музыкой всё было очевидно — звуковые эффекты должны быть похожими на звуки аркадных автоматов.

Поиграть в мою игру можно на странице Gravepassing сайта JS13KGames. Полный код выложен на GitHub.
Читать дальше →
Total votes 34: ↑32 and ↓2+45
Comments1

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

Level of difficultyMedium
Reading time17 min
Views74K
image

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!
Читать дальше →
Total votes 204: ↑202 and ↓2+246
Comments137

Фундаментальная нестыковка двух отличных теорий: гравитация и квантовая физика

Reading time8 min
Views25K
image

Иногда приходится встречать статьи, в которых прямо или косвенно заявляется – дескать, физика «кончилась», всё уже открыто и всё понятно. Ну или почти всё. На самом деле нет: мы, конечно, давно и довольно успешно пытаемся понять и разложить по полочкам нашу Вселенную, но притворяться, что нам уже практически всё понятно, нет никакого смысла. Вот вам простой пример: у нас есть две невероятно хорошо работающие теории, которые мы уже много лет успешно подтверждаем экспериментами, и мы ещё ни разу не видели ни одного экспериментального факта, нарушающего либо Общую теорию относительности (ОТО) Эйнштейна, либо Стандартную Модель (СМ) физики частиц.
Читать дальше →
Total votes 53: ↑50 and ↓3+61
Comments135

Эволюционирующие клеточные автоматы

Reading time22 min
Views37K


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

В статье присутствуют Gif (трафик!) и контрастные картинки. У эпилептиков может случиться эпилептический припадок.
Читать дальше →
Total votes 130: ↑129 and ↓1+128
Comments34

Реализация процессорной архитектуры из книги Чарльза Петцольда «Код. Тайный язык информатики»

Reading time6 min
Views8K

Наверное многие, из тех, кто увлекается изучением того, как работает компьютер на самом низком уровне читали такие книги как: Таненбаум "Архитектура компьютера" или Харрис, Харрис "Цифровая схемотехника и архитектура компьютера", которые безусловного являются объемлющими трудами и хорошими книгами для обучения. Но если вы не являетесь инженером, но всё равно хотите погрузиться в мир цифровых вычислений и более глубоко понять то, а как же работает компьютер. В этом вам сможет помочь книга Чальза Петцольда "Код. Тайный язык информатики", которая начинает свой рассказ от причин, по которым людям понадобился обмен информацией и её обработка , с какими проблемами при этом столкнулись и заканчивает рассказам об устройстве реальных операционных систем и процессоров и их архитектуру. При этом автором был отлично подобран уровень абстракции, которого он придерживался при написании. В каких-то моментах подробно описывая работу элементарных частей процессора, а в других рассказывая простыми словами о сложных вещах.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments1

deb-пакет на коленке

Reading time3 min
Views12K
Задача: создать пакет для Debian для выливки демона/сайта на сервер.
Я никогда ранее не работал с deb-пакетами — так что решение может быть не оптимальным. Но оно работает и достаточно просто в использовании.
Читать дальше →
Total votes 73: ↑63 and ↓10+53
Comments47

Знакомимся с defer

Reading time2 min
Views9.8K

В прошлой статье мы рассмотрели как создавать свои операторы RxJS. Сейчас я хочу поговорить о малоизвестном операторе создания — defer — и объяснить как можно использовать его для некоторых ситуаций

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Сеймур Крей и его машины

Reading time13 min
Views18K
28 сентября 1925 года в Чиппеуа Фоллс, штат Висконсин, родился Сеймур Роджер Крэй. Этот талантливый инженер и изобретатель создавал одни из лучших компьютеров своего времени. Ещё со школьных лет он интересуется радиотехникой и химией. После окончания школы, в 1943 году, служит в американской армии оператором радиостанции и занимается расшифровкой японских сообщений. После службы в армии Сеймур Крэй поступает в Университет Миннесоты, где в 1950 году получает бакалавра по электротехнике, а в 1951 году магистра по прикладной математике.



Сеймур Крэй (1925 — 1996 гг.)

ERA 1101 и UNIVAC 1103


В 1951 году он начинает работать в Engineering Research Associates (ERA), которая специализируется на создании криптографического оборудования для Военно-Морских Сил США. Чуть позже в 1952 году ее приобретает Remington Rand и присоединяет к подразделению UNIVAC Division.

Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments18

Ретроспектива технологических стартапов. Z3 — первый релейный компьютер

Reading time16 min
Views9.2K


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

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

Для чего всё это?
В первом стартапе я принял участие на следующий год после окончания института, хотя тогда мы ещё не знали этого модного слова. С тех пор, я в том или ином роде, имел отношение к немалому их количеству. Большинство просуществовали недолго, но случались и успешные. Попытки анализа показали что удачная стратегия стартапа меняется в зависимости от общественно-политической ситуации, в которой он зарождается. Чтобы выбрать лучшую стратегию для сегодняшнего, не будет лишним разобраться каким образом достигался успех в прошлом, а затем попытаться обобщить информацию и выбрать лучший вариант развития на сегодняшний день. Начать я решил с ретроспективы нескольких удачных технологических стартапов, которые показались мне наиболее характерными для своего времени.
Как создавался первый компьютер
Total votes 29: ↑29 and ↓0+29
Comments57

О стартапе-ловушке, или Роберт Мартин хочет нам навредить

Reading time3 min
Views33K
Я почувствовал, что устои мироздания потрясены, когда сотни хабраюзеров начали яростно спорить по поводу заметки Роберта Мартина о стартапе-ловушке.

Хотите знать, как я обычно участвую в таких спорах?

— Так какие же тесты пишешь ты сам?
— Мнэ-э…

— Когда же ты пишешь тесты?
— Мнэ-э…

— Ты вообще тесты пишешь?
— Мнэ-э…

Окей, конечно, я пишу тесты, я просто не участвую в таких спорах. Времена, когда нас всех заставили принять таблетку TDD, провели черту между теми программистами, которые полюбили тесты всем сердцем, и теми, кто на самом деле не очень-то любит писать тесты. И ввязываться в спор между двумя этими лагерями — отличный повод потерять пару часов впустую, вместо того чтобы делать свою работу.

Но как раз сейчас у меня, кажется, есть эта парочка часов.
Читать дальше →
Total votes 87: ↑73 and ↓14+59
Comments37

Реализация сортировки в V8 от Google

Reading time6 min
Views39K
image
Привет, Хабр.

Мир javascript развивается с невероятной скоростью: новые стандарты языка, новые фреймворки, и в браузере, и на сервере и в десктопных приложениях и так далее… Но иногда хочется вместо изучения новой супер-фичи погрузиться в какую-то более базовую тему. И погрузиться глубоко, до самых исходников.

И в этот момент под моим пристальным взглядом оказалась незаметная строчка «native code», которая так или иначе появляется перед глазами любого JS разработчика в консоли Chrome или Node.js:

[].sort.toString();
"function sort() { [native code] }"

Итак, кому интересно, какая реализация сортировки скрывается в V8 за надписью [native code] — добро пожаловать под кат.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments8

Визуализация алгоритмов сортировки

Reading time28 min
Views19K

Приветствую всех, уважаемые читали! Меня зовут Сергей Семенов, я frontend-разработчик в компании Домклик. Эта статья посвящена созданию интерактивного приложения для визуализации алгоритмов сортировки. Надеюсь, многим из вас тема покажется интересной. Уверен, что вы успешно пройдёте через все этапы разработки и пополните свою копилку пет-проектов.

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments5

Краткий и бодрый обзор архитектуры компиляторов

Reading time19 min
Views35K

Большинство компиляторов имеют следующую архитектуру:



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

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

Статья ни в коем случае не посвящена современным производственным компиляторам с миллионами строк кода — нет, это краткий курс «компиляторы для чайников», помогающий разобраться, что такое компилятор.
Читать дальше →
Total votes 68: ↑63 and ↓5+58
Comments38

Компьютер на логических микросхемах: исполнение инструкций

Reading time9 min
Views10K

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

Читать далее
Total votes 79: ↑79 and ↓0+79
Comments30

Почему 20-летний CRT-монитор лучше современного 4K LCD-дисплея?

Reading time7 min
Views102K
Предположим, у вас имеется $1000 и вы собираетесь всё это спустить на игровой монитор. За эти деньги можно купить новейший 4K-дисплей с микроскопическими пикселями, обладающий широким динамическим диапазоном и отличающийся высокой частотой обновления экрана. Или можно раскошелиться на изогнутый QHD-монитор, такой широкий, что во время игры на нём придётся задействовать периферическое зрение.

Есть и ещё один вариант. Можно рискнуть, отправиться на eBay и потратить похожую сумму на CRT-монитор, выпущенный два десятка лет назад.



Последний вариант, на первый взгляд, может показаться противоречащим здравому смыслу. Но, на самом деле, не всё так просто. В кругах любителей компьютерных игр есть люди, которые уверены в том, что мониторы с электронно-лучевой трубкой отлично подходят для игр. Такие мониторы, по мнению этих людей, быстрее реагируют на действия игрока, а изображение на них смазывается меньше, чем на LCD-дисплеях. Этих людей совершенно не пугает то, что старые мониторы, в сравнении с новыми, имеют более низкое разрешение, меньшие размеры экранов, то, что они занимают очень много места на рабочем столе. Спор приверженцев CRT и LCD идёт уже много лет. Но недавно к этой теме было привлечено внимание проекта Digital Foundry, выпустившего видео о сильных сторонах CRT-мониторов.
Читать дальше →
Total votes 51: ↑38 and ↓13+43
Comments383

Реализация алгоритма A*

Reading time30 min
Views81K


Эта статья является продолжением моего введения в алгоритм A*. В ней я показал, как реализуются поиск в ширину, алгоритм Дейкстры, жадный поиск по наилучшему первому совпадению и A*. Я стремился как можно больше упростить объяснение.

Поиск по графам — это семейство схожих алгоритмов. Существует множество вариаций алгоритов и их реализаций. Относитесь к коду этой статьи как к отправной точке, а не окончательной версии алгоритма, подходящей ко всем ситуациям.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments4

О реализации структуры данных Map в V8

Reading time9 min
Views15K

В стандарте ECMAScript 2015, известном как ES6, появилось много новых JavaScript-коллекций, таких, как Map, Set, WeakMap и WeakSet. Они, судя по всему, стали отличным дополнением к стандартным возможностям JavaScript. Они получили широкое применение в различных библиотеках, в приложениях, в ядре Node.js. Сегодня мы поговорим о коллекции Map, попытаемся разобраться с особенностями её реализации в V8 и сделаем некоторые практические выводы, основанные на полученных знаниях.

Стандарт ES6 не содержит чёткого указания на подход, который должен быть использован для реализации поддержки структуры данных Map. В нём лишь даны некоторые подсказки по возможным способам её реализации. Там же приведены сведения об ожидаемых от Map показателях производительности:

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

Как видно, спецификация даёт тем, кто создаёт JS-движки, большую свободу. Но при этом здесь нет определённых указаний, касающихся конкретного подхода, используемого для реализации Map, его производительности, характеристик потребления памяти. Если в критически важной части вашего приложения используются структуры данных Map, и если вы записываете в такие структуры данных большие объёмы информации, то основательные знания о реализации Map, определённо, принесут вам большую пользу.
Читать дальше →
Total votes 30: ↑29 and ↓1+41
Comments1

Queue Implementation in JavaScript / Algorithm and Data Structure

Reading time4 min
Views8.1K
What do you imagine when you hear the word "Queue"? If you are not familiar with Programming you maybe think about the queue in shop or hospital. But if you are a programmer you associate it 99% with Data Structures and Algorithms. Whoever you are, today we will discuss how to implement Queue Data Structure in JavaScript and what are its differences with a simple Array. Let's get started!


Read more →
Total votes 5: ↑0 and ↓5-5
Comments0

Основы реактивного программирования с использованием RxJS. Часть 3. Higher Order Observables

Reading time8 min
Views37K


В данной статье мы рассмотрим, как можно в одном потоке обрабатывать другой, для чего это нужно, и как нам в этом помогут операторы Higher Order Observables (дальше HOO).

Серия статей «Основы реактивного программирования с использованием RxJS»:



При работе с потоками часто возникает ситуация, когда необходимо в качестве значения одному потоку передать результаты работы другого. Например, мы хотим выполнить ajax запрос и его ответ обработать в текущем потоке, или запустить несколько параллельных запросов, реализовать pooling. Думаю, многие привыкли решать подобные задачи, используя такой механизм как promise. Но можно ли решать их используя RxJS? Конечно, и все куда проще чем вы думаете!
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments6

Графика в терминале

Reading time3 min
Views30K
Эта история началась, когда я узнал о существовании bpytop. Меня поразила детализация графиков и я начал разбираться как это сделано. Оказалось, что для вывода графиков использовались символы алфавита Брайля, представляющие из себя комбинацию из 8 точек: 2 точки в ширину и 4 точки в высоту. Поискав готовые решения, использующие этот подход, я нашел на реддите анонс такого проекта. В первом же комментарии анонса я прочитал:
Это конечно круто, но почему люди просто не переоткроют для себя ReGIS (векторную графику в терминале) и sixel (пиксельную графику в терминале).
До этого момента я ничего не знал про sixel. Копнув глубже я выяснил, что в теории sixel должен поддерживаться xterm-ом. Я запустил xterm на своей ubuntu 20.04 в режиме эмуляции vt340

xterm -xrm "XTerm*decTerminalID: vt340" -xrm "XTerm*numColorRegisters: 256"

выполнил вот такую команду (convert это команда из пакета imagemagick)

clear && convert <(curl -s https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png) sixel:-

и увидел вот это:

image
Вау, работает!
Читать дальше →
Total votes 115: ↑115 and ↓0+115
Comments51

Information

Rating
Does not participate
Location
Оренбург, Оренбургская обл., Россия
Registered
Activity