Как стать автором
Обновить
-7
0
Соловьев Антон Владимирович @MisterN

Пользователь

Отправить сообщение

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

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.9K

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


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

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

Поиграть в мою игру можно на странице Gravepassing сайта JS13KGames. Полный код выложен на GitHub.
Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии1

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

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров68K
image

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

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

Время на прочтение8 мин
Количество просмотров24K
image

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

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

Время на прочтение22 мин
Количество просмотров37K


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

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

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

Время на прочтение6 мин
Количество просмотров7.9K

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

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии1

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

Время на прочтение3 мин
Количество просмотров12K
Задача: создать пакет для Debian для выливки демона/сайта на сервер.
Я никогда ранее не работал с deb-пакетами — так что решение может быть не оптимальным. Но оно работает и достаточно просто в использовании.
Читать дальше →
Всего голосов 73: ↑63 и ↓10+53
Комментарии47

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

Время на прочтение2 мин
Количество просмотров9.3K

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

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

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

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



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

ERA 1101 и UNIVAC 1103


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

Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии18

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

Время на прочтение16 мин
Количество просмотров8.9K


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

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

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

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

Время на прочтение3 мин
Количество просмотров33K
Я почувствовал, что устои мироздания потрясены, когда сотни хабраюзеров начали яростно спорить по поводу заметки Роберта Мартина о стартапе-ловушке.

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

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

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

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

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

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

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

Время на прочтение6 мин
Количество просмотров39K
image
Привет, Хабр.

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

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

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

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

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

Время на прочтение28 мин
Количество просмотров18K

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

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии5

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

Время на прочтение19 мин
Количество просмотров34K

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



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

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

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

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

Время на прочтение9 мин
Количество просмотров10K

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

Читать далее
Всего голосов 79: ↑79 и ↓0+79
Комментарии30

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

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

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



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

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

Время на прочтение30 мин
Количество просмотров79K


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

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

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

Время на прочтение9 мин
Количество просмотров14K

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

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

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

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

Queue Implementation in JavaScript / Algorithm and Data Structure

Время на прочтение4 мин
Количество просмотров7.9K
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 →
Всего голосов 5: ↑0 и ↓5-5
Комментарии0

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

Время на прочтение8 мин
Количество просмотров35K


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

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



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

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

Время на прочтение3 мин
Количество просмотров29K
Эта история началась, когда я узнал о существовании 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
Вау, работает!
Читать дальше →
Всего голосов 115: ↑115 и ↓0+115
Комментарии51

Информация

В рейтинге
Не участвует
Откуда
Оренбург, Оренбургская обл., Россия
Зарегистрирован
Активность