Pull to refresh
17
8.9
Send message

Алгоритмы сжатия данных без потерь, часть 2

Reading time9 min
Views102K
Часть 1

Техники сжатия данных


Для сжатия данных придумано множество техник. Большинство из них комбинируют несколько принципов сжатия для создания полноценного алгоритма. Даже хорошие принципы, будучи скомбинированы вместе, дают лучший результат. Большинство техник используют принцип энтропийного кодирования, но часто встречаются и другие – кодирование длин серий (Run-Length Encoding) и преобразование Барроуза-Уилера (Burrows-Wheeler Transform).
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments10

Визуализация алгоритмов стандартной библиотеки C++

Level of difficultyEasy
Reading time4 min
Views13K

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

Читать далее
Total votes 25: ↑24 and ↓1+26
Comments6

Релейный компьютер, телетайп и интересный алгоритм игры в крестики-нолики

Reading time10 min
Views7.4K

Крестики-нолики – классическая игра, которую наверное пытался написать каждый. При этом программы иногда получаются довольно запутанные, несмотря на простоту правил. Электромагнитные реле – классическая элементная база для компьютеров и калькуляторов. Они тёплые, ламповые и прикольно щёлкают. Если добавить к этому телетайп, то получится игровая консоль в стиле 1940х.

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

Как создать telegram бот на C# быстро?

Reading time6 min
Views154K

Как создать telegram bot на C# быстро?

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

Читать далее
Total votes 28: ↑20 and ↓8+16
Comments39

Kandinsky создаёт игры

Level of difficultyEasy
Reading time10 min
Views13K

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

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

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

Читать далее
Total votes 20: ↑17 and ↓3+23
Comments26

Arduino AY player с экраном и кнопками

Level of difficultyMedium
Reading time15 min
Views11K

Конструируем музыкальный плеер PSG-файлов на чипе AY-3-8910 с OLED-экраном, кнопками управления и дополнительной памятью, а также подключаем выходные и входные сдвиговые регистры и прочие устройства с интерфейсами I2C и SPI к Arduino.

Читать далее
Total votes 18: ↑17 and ↓1+25
Comments37

Движок для игры от первого лица в 265 строках Javascript

Level of difficultyHard
Reading time6 min
Views26K
image

Сегодня окунёмся в мир, который можно потрогать. В этой статье мы исследуем, как с нуля, быстро и без особо сложной математики написать движок для игры от первого лица. Для этого мы воспользуемся приёмом под названием «бросание лучей» (raycasting). Возможно, вы видели примеры такой техники в играх Daggerfall и Duke Nukem 3D, а из более свежего – в статьях из «ludum dare» от Нотча Перссона. Что ж, для Нотча это неплохо, но не для меня! Вот демка (управление стрелками и тачпадом) [источник].
Читать дальше →
Total votes 61: ↑60 and ↓1+76
Comments36

Разработка — всё? Действительно ли нас всех заменят роботы

Level of difficultyEasy
Reading time12 min
Views11K

Александр Пряхин, руководитель разработки юнита в Авито Работа, рассказал, так ли мрачно выглядит будущее для разработчиков «из плоти и крови» на фоне активного развития No Code, Low Code и нейросетей.

Читать далее
Total votes 17: ↑14 and ↓3+11
Comments24

Алгоритмы поиска подстроки на JavaScript

Level of difficultyMedium
Reading time5 min
Views11K

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

Как говорит Википедия «Поиск подстроки в строке — одна из простейших задач поиска информации», но это не совсем так, ниже я расскажу про разные алгоритмы решения и покажу примеры их реализации. Начнем!

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

Как игре Pitfall для Atari удалось поместить 255 комнат в картридж на 4КБ

Reading time10 min
Views7.7K
Игры для Atari 2600 разрабатывались в условиях сильных ограничений. Когда Уоррен Робинетт продвигал идею, которая в дальнейшем станет игрой Adventure (в ней нужно исследовать мир из множества комнат и подбирать предметы, которые помогают игроку в пути), ему отказали, потому что посчитали, что её невозможно реализовать. И это было логично. Консоль появилась в конце 70-х; до Робинетта никто ещё не создавал игру с несколькими экранами. Это была эпоха Space Invaders и Pac Man, когда весь игровой мир постоянно находился у игрока перед глазами, поэтому то, что выпущенная в 1980 году Adventure состояла из 30 комнат, было весьма впечатляюще.


Первый экран игры Adventure. Игрок управляет точкой (которую Робинетт называл «человеком»).

Разработчикам даже пришлось объяснять эту концепцию в руководстве к игре:

Каждая область, показанная на экране телевизора, будет иметь один или несколько барьеров или стен, через которые вы НЕ можете проходить. Также там есть один или несколько проёмов. Чтобы перейти из одной области в соседнюю, «выйдите» с экрана телевизора через один из проёмов, и на экране появится соседняя область.

Наличие нескольких комнат было довольно большой инновацией, а то, что в Adventure удалось реализовать целых 30 комнат, стало настоящей революцией. Однако в созданной Дэвидом Крэйном и выпущенной в 1983 году Pitfall! таких комнат было 255, и каждая из них была более сложной (с точки зрения графики), чем любая комната Adventure. В статье я расскажу, как этого удалось добиться.

Примечание: в игре Superman было несколько комнат и её выпустили до Adventure, но она создавалась на основе кода Adventure.


Типичный экран Pitfall!
Total votes 26: ↑26 and ↓0+26
Comments11

Tenebris: 7 кругов ада инди-разработки

Reading time6 min
Views4.4K

Друзья, меня зовут Пётр, и в этой статье я попробую рассказать о нашем уже трехлетнем опыте в разработке инди-игры  —  Tenebris: Terra Incognita. Через какие сложности мы прошли и чего добились.

Работа над игрой началась в мае 2019 года, про старт я написал ранее в первой статье. Сегодня мы имеем на руках Альфа-версию игры и работаем над сборкой для раннего доступа.

Спросите: почему так долго? 

Отвечу: потому, что это наша первая игра, мы не имеем инвестиций и работаем на энтузиазме, в свободное от работы время. 

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

Роутинг и policy-routing в Linux при помощи iproute2

Reading time6 min
Views264K
Речь в статье пойдет о роутинге сетевых пакетов в Linux. А конкретно – о типе роутинга под названием policy-routing (роутинг на основании политик). Этот тип роутинга позволяет маршрутизировать пакеты на основании ряда достаточно гибких правил, в отличие от классического механизма маршрутизации destination-routing (роутинг на основании адреса назначения). Policy-routing применяется в случае наличия нескольких сетевых интерфейсов и необходимости отправлять определенные пакеты на определенный интерфейс, причем пакеты определяются не по адресу назначения или не только по адресу назначения. Например, policy-routing может использоваться для: балансировки трафика между несколькими внешними каналами (аплинками), обеспечения доступа к серверу в случае нескольких аплинков, при необходимости отправлять пакеты с разных внутренних адресов через разные внешние интерфейсы, даже для отправки пакетов на разные TCP-порты через разные интерфейсы и т.д.
Для управления сетевыми интерфейсами, маршрутизацией и шейпированием в Linux служит пакет утилит iproute2.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments10

Дельта компрессия и квантизация объектов в C#

Reading time11 min
Views12K

Cтатья затрагивает тему сериализации данных, которые передаются по unreliable каналам.

В первую очередь это касается реалтайм игр, которые критичны к сетевым задержкам, имеют активное общение клиента и сервера, например, 10 - 60 раз в секунду и используют UDP протокол.

В статье вы узнаете, как с помощью дельта компрессии и квантизации можно уменьшить размер объектов и, тем самым, уменьшить размер сериализованных данных. Попутно мы познакомимся с библиотекой для битовой сериализации данных NetCode.

Читать далее
Total votes 34: ↑33 and ↓1+35
Comments18

Простой расчет контрольной суммы

Reading time12 min
Views222K
При передачи данных по линиям связи, используется контрольная сумма, рассчитанная по некоторому алгоритму. Алгоритм часто сложный, конечно, он обоснован математически, но очень уж неудобен при дефиците ресурсов, например при программировании микроконтроллеров.



Чтобы упростить алгоритм, без потери качества, нужно немного «битовой магии», что интересная тема сама по себе.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments26

Отрисовка в браузере большой анимации или как я ушел с mp4 к своему формату видео

Reading time17 min
Views54K

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

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

Information

Rating
699-th
Location
Россия
Registered
Activity

Specialization

Specialist
Middle