Рубрика «ненормальное программирование» - 40

… или как выстрелить себе в ногу на Arduino

Когда в gcc 16-битные адреса, а памяти внезапно 256к - 1

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

Сейчас в нём установлена плата Arduino Mega с процессором ATmega2560, в котором целых 256 килобайт флеш-памяти. Предполагалось, что этого хватит очень надолго, ведь игры получаются простые (экран-то всего лишь 64x64 пикселя). В реальности мы столкнулись с некоторыми проблемами уже по достижении прошивкой размера примерно 128 килобайт.
Читать полностью »

Запускаем Mini AI Cup #3. Битва машин в тесных закрытых пространствах - 1

С 2012 года проводим ежегодное соревнование по программированию искусственного интеллекта Russian AI Cup. В этом году оно начнётся немного позже — не в ноябре, а в середине декабря. А для тех, кто хочет подготовиться или оценить свой уровень, регулярно проводим мини-соревнования Mini AI Cups. Задачи немного проще предлагаемых на RAIC, но ничуть не менее захватывающие.

И сегодня открываем регистрацию на Mini AI Cup #3 по мотивам Drive AHEAD.
Читать полностью »

Embox начинает восхождение на Эльбрус - 1Те кто следит за нашим проектом могли заметить, что в каталоге с архитектурами появилась папка e2k, содержащая реализацию поддержки отечественных процессоров с архитектурой Эльбрус. Серия статей о портировании Embox на отечественные платформы была бы неполной без рассказа об этой архитектуре.

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

Приступим.
Читать полностью »

Windows 95 портировали на Electron - 1

В последние годы операционная система Windows 95 стала эдаким эталоном для демонстрации необычных возможностей портирования: её уже запускали на умных часах Apple Watch и Android Wear и даже на консоли Xbox One. Сейчас разработчик Феликс Ризенберг из компании Slack вышел на новый уровень, выпустив Windows 95 в виде приложения Electron, которое можно скачать и запустить на macOS, Windows или Linux.
Читать полностью »

Всем привет! В этот раз я хочу написать о том, как мне удалось победить в соревновании Mini AI Cup 2. Как и в моей прошлой статье, деталей реализации практически не будет. В этот раз задача была менее объёмной, но всё же нюансов и мелочей, влияющих на поведение бота, было немало. В итоге даже после почти трёх недель активной работы над ботом всё ещё оставались идеи, как улучшать стратегию.

Mini ai cup 2 или почти AgarIO — что можно было сделать для победы - 1

Под катом много гифок и трафика.
Читать полностью »

Эмуляция литералов свойств с Java 8 Method Reference - 1

От переводчика: к переводу этой статьи меня подтолкнула обида от отсутствия оператора nameOf в языке Java. Для нетерпеливых — в конце статьи есть готовая реализация в исходниках и бинарниках.

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

Сродни литералам классов (например, Customer.class), литералы свойств позволили бы ссылаться на свойства классов-бинов типобезопасно. Это было бы полезно для дизайна API, где есть необходимость выполнять действия над свойствами или каким-то образом конфигурировать их.

От переводчика: Под катом разбираем как из подручных средств это реализовать.
Читать полностью »

image

Привет! В прошлой статье «бесконечный узор на основе простых чисел» я рассказал про алгоритм, который позволяет генерировать бесконечные красивые узоры, похожие то ли на инопланетные рисунки, то ли на нечто технологическое, подобно устройству микросхем. Однако, алгоритм для генерирования 2D узоров можно так же использовать и для создания мелодий. Подробнее под катом.
Читать полностью »

Привет! Сегодня я надеюсь показать вам немного магии. Моим хобби является придумывание всяких казалось бы невозможных штук на С++, что помогает мне в изучении всевозможных тонкостей языка ну или просто развлечься. Оператор in есть в нескольких языках, например Python, JS. Но в С++ его не завезли, но иногда хочется чтобы он был, так почему бы его не реализовать.

	std::unordered_map<std::string, std::string> some_map = 
	{
		{ "black", "white" },
		{ "cat", "dog" },
		{ "day", "night" }
	};

	if (auto res = "cat" in some_map)
	{
		res->second = "fish";
	}

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

image

Части первая, вторая, третья.

Остальная часть автомата

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

(Вам может быть интересно посмотреть на принципиальную схему автомата.)
Читать полностью »

Изначально я хотел назвать этот пост «игра в 0 строк HTML, JS и CSS», вдохновлённый этим постом, но это было бы слишком громко. Так или иначе, сильно ухудшив UX, я получил крестики-нолики, работающие исключительно силой DNS протокола.

Крестики-нолики на DNS - 1

Для неподготовленного пользователя выглядит, конечно, страшно, зато даже браузер не нужен для игры.
Читать полностью »


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