Как стать автором
Обновить
6
-1

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

О возникновении спиралей в циклическом клеточном автомате

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

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


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


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



Как видно из рисунка выше, клеточный автомат проходит три этапа:

1. Случайное поле.
2. Цветные области.
3. Спирали, также известные как демоны.

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


Выберем несколько (например 12) случайных ячеек и рассмотрим изменение их состояний во времени.
Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 6

Пиши на C как джентльмен

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

«Code Monkey like Fritos
Code Monkey like Tab and Mountain Dew
Code Monkey very simple man
With big warm fuzzy secret heart:
Code Monkey like you
Code Monkey like you»

— Jonathan Coulton — Code Monkey


Я думаю, многим знакома эта шикарная песня Jonathan Coulton'а, и эта жизненная ситуация, когда «Rob say Code Monkey very diligent», но «his output stink» и «his code not 'functional' or 'elegant'».

Язык Си, подаривший нам столько полезного софта, потихоньку был вытеснен из десктопа и энтерпрайза такими высокоуровневыми гигантами как Java и C# и занял нишу системного программирования. И все бы хорошо, но системщики — очень отбитые своеобразные ребята. Задачи, которые порой возникают перед ними даже своей формулировкой способны вогнать в ужас простых смертных. Собственно говоря, так же, как и некоторые решения.

Сегодня мы поговорим о некоторых полезных практиках, которые я вынес из глубин системного программирования на Си. Поехали.
Читать дальше →
Всего голосов 58: ↑49 и ↓9 +40
Комментарии 171

13 лет плохого кода в играх

Время на прочтение 14 мин
Количество просмотров 36K
Одиноким пятничным вечером в поисках вдохновения вы решаете припомнить свои былые победы на программистском фронте. Архив со старого жесткого диска неторопливо открывается и вот перед вами разворачивается код славных далеких времен…

О нет. Это совсем не то, что вы ожидали увидеть. Правда, что ли, все было настолько плохо? Почему вам никто не сказал? Как можно было до такого докатиться? Такое количество операторов go-to в одной-единственной функции – это вообще законно? Вы поспешно закрываете проект. На секунду вас одолевает искушение удалить файл, и всё содержимое жёсткого диска заодно.



Ниже вы найдете коллекцию уроков, поучительных примеров и предостережений, которые я вынес из собственного путешествия в прошлое. Все имена приводятся без изменений, чтобы обличить виновных.
Читать дальше →
Всего голосов 39: ↑31 и ↓8 +23
Комментарии 41

Теория близости: главное правило дизайна, которое помогает перейти от субъективных ощущений к конкретике

Время на прочтение 3 мин
Количество просмотров 70K
Впервые о теории близости я прочитал в 2007 году. Она была сформулирована так: «объекты, расположенные близко друг к другу, воспринимаются связанно». Тогда я подумал: «спасибо, Кэп! Я как-то и сам догадался, что букву “М” нужно вешать ближе к мужскому туалету, а не к женскому». Тогда я не осознал, что это одно из главных правил дизайна, которое помогает подбирать расстояния между элементами, размеры полей, расположение кнопок, размер логотипов и многое другое. А главное, теория позволяет быстро понять, хороший перед вами дизайн или нет, даже если вы не дизайнер.
image
Читать дальше →
Всего голосов 64: ↑60 и ↓4 +56
Комментарии 23

Что почитать программисту на досуге

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

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

Читать дальше →
Всего голосов 35: ↑32 и ↓3 +29
Комментарии 24

7 стратегий, который помогут вам избавиться от прокрастинации

Время на прочтение 6 мин
Количество просмотров 45K
Я сильно подозреваю, что вы тянете время, чтобы не браться за какое-нибудь важное дело даже в данный момент, читая эту статью. Получается какой-то парадокс, но не беда. Это даже хорошо. Здесь вы познакомитесь с простыми стратегиями, которые в будущем сможете применять для эффективной борьбы с прокрастинацией.



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

Что придет на замену X Window System?

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

Одним из знаменательных Linux событий прошлого года стал выход 25-й Федоры с графическим окружением Gnome 3.22 на базе дисплейного сервера Wayland, который призван заменить X Window System. Но зачем вообще после стольких лет возникла такая необходимость?




В последнее время экипаж МКС пересел с Windows на Linux.
— Хьюстон, у нас проблемы. Нас сносит на Юпитер.
— Вы что, опять возились с xorg.conf?
— Да. Хьюстон, за три последних дня у нас почему-то выросли бороды.

Далее, речь о том, почему Linux необходима новая графическая среда, хотя бы в 2017 г, а отдельным постом я расскажу про Wayland и Mir.

Читать дальше →
Всего голосов 95: ↑92 и ↓3 +89
Комментарии 215

Графическое описание владения и заимствования в Rust

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

Ниже представлено графическое описание перемещения, копирования и заимствования в языке программирования Rust. В основном, эти понятия специфичны только для Rust, являясь общим камнем преткновения для многих новичков.



Чтобы избежать путаницы, я попытался свести текст к минимуму. Данная заметка не является заменой различных учебных руководств, и лишь сделана для тех, кто считает, что визуально информация воспринимается легче. Если вы только начали изучать Rust и считаете данные графики полезными, то я бы порекомендовал вам отмечать свой код похожими схемами для лучшего закрепления понятий.


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

Отрисовка векторной графики — триангуляция, растеризация, сглаживание и новые варианты развития событий

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

В далёком 2013м году вышла игра Tiny Thief, которая наделала много шуму в среде мобильной Flash (AIR) разработки из-за отказа от растровой графики в билдах, включая атласы анимации и прочего — всё что было в сборке хранилось в векторном формате прямиком из Flash редактора.
Это позволило использовать огромное количество уникального контента и сохранить размер установочного файла до ~70 мегабайт (*.apk-файл из Google Play). Совсем недавно снова возник интерес к теме отрисовки векторной графики на мобильных устройствах (и вообще к теме отрисовки вектора с аппаратной поддержкой), и меня удивило отсутствие информации "начального" уровня по этой теме. Это обзорно-справочная статья по возможным способам отрисовки вектора и уже существующим решениям, а так же о том, как подобные вещи можно сделать самостоятельно.


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

Засуньте этот инфостиль себе в текст: 22 заповеди сильного редактора

Время на прочтение 9 мин
Количество просмотров 47K
Не так давно я прочёл книгу «Пиши, сокращай» (авторы — Максим Ильяхов и Люда Сарычева) — современные популяризаторы инфостиля. Крутые чуваки, и книга тоже крутая.

Периодически в книге встречаются фразы в жирной оранжевой рамке — это основные идеи авторов. Фразы как бы закрепляют ранее описанные советы. Очень ценный ресурс.

Я быстро забываю прочитанное, поэтому выписал весь текст из оранжевых рамок в таблицу. Теперь, когда нужно писать статью, использую таблицу как руководство. Вот из чего она состоит.
Читать дальше →
Всего голосов 55: ↑48 и ↓7 +41
Комментарии 32

Интересные особенности Python, о которых вы могли не догадываться

Время на прочтение 4 мин
Количество просмотров 33K
Приветствую тебя %username%. Прочитав статью о способах обхода sudo, решил тоже попробовать описать нечто подобное, но для языка Python. Спасибо root-me за такие задачки. Решая их, можно многое узнать о работе того или иного механизма. Прошу строго не судить, это моё первое творение.
Начнём!
Читать дальше →
Всего голосов 62: ↑52 и ↓10 +42
Комментарии 27

Самые худшие технологические прогнозы за последние 150 лет

Время на прочтение 4 мин
Количество просмотров 29K
Существует давняя традиция. Под новый год учёные, инженеры, бизнесмены, да все, кому не лень, пытаются предсказать будущее. Блокчейн – это серьёзная технология, или очередное модное словечко? Убьют ли боты в 2017-м мобильные приложения? Перестанет ли в этом году погружение в виртуальную реальность вызывать морскую болезнь?


Телеграф убивает живое общение
Читать дальше →
Всего голосов 54: ↑47 и ↓7 +40
Комментарии 85

Не доверяйте SUDO, она может вас подвести

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

Всем доброго времени суток, в этой статье постараюсь описать некоторые способы обхода ограничений на исполнение команд в ОС Linux, советы по использованию которых можно часто встретить на различных форумах. Демонстрация будет проведена на примере задания Restricted shells с сайта Root-Me. Итак, начнём.
Читать дальше →
Всего голосов 99: ↑94 и ↓5 +89
Комментарии 8

Альтернативные аллокаторы памяти

Время на прочтение 13 мин
Количество просмотров 88K
Написал Стивен Тови в 2:29 утра по программированию (шутка юмора Google Translate)
Вступление от себя: эта заметка, прорекламированная Алёной C++, предназначена в основном разработчикам игр для консолей, но будет, наверное, полезна и всем, кому приходится сталкиваться с экстремальным аллоцированием динамической памяти. Возможно, любители посравнивать управление памятью в C++ и Java тоже найдут над чем задуматься.

Оригинал с небезынтересной дискуссией в комментариях: altdevblogaday.org/2011/02/12/alternatives-to-malloc-and-new


Обязательная вступительная басня

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

Сейчас объясню, почему...
Всего голосов 75: ↑72 и ↓3 +69
Комментарии 59

Классические алгоритмы генерации лабиринтов. Часть 2: погружение в случайность

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


Предисловие


Первая часть

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

В этой части мы поговорим о том, что же такое случайная и псевдослучайная генерации, какие алгоритмы могут дать нам равновероятно ничем не похожие друг на друга лабиринты и в чем их минусы. Героями нашего сегодняшнего приключения станут алгоритм Уилсона и алгоритм Олдоса-Бродера для создания случайного остовного дерева (Uniform Spanning Tree). ОСТОРОЖНО ТРАФИК.
Читать дальше →
Всего голосов 47: ↑47 и ↓0 +47
Комментарии 25

Сквозь стены: преодоление преград

Время на прочтение 2 мин
Количество просмотров 5.8K
Виртуальная реальность привносит новые требования к игровому дизайну, накладывает собственные ограничения, одно из них — это тот факт, что пользователя (пока) нельзя остановить перед виртуальной стеной.

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

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

image
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 3

Разработка качественных VR-проектов

Время на прочтение 4 мин
Количество просмотров 17K
Совсем недавно мы стали одним из соучредителей компании, которая занимается разработкой виртуальной и дополненной реальности. В связи с этим в ближайшее время представим вам цикл переводных статей нашего front-end разработчика, Любови Ложкиной, о качественной разработке VR-проектов.

Поехали...


Данная статья является вводной к циклу материалов про качественную разработку VR-проектов. Со временем она будет дополнена ссылками на дальнейшие материалы.

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

Полная свобода — все начинают с нуля.

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

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

В этой серии статей мы хотим рассмотреть самые важные особенности VR-разработки, которые выведут твой проект на новый уровень качества.

1 — Взгляд в виртуальный мир


image
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 2

«Работает — не трогай»: Старый код и компьютеры, которые до сих пор функционируют

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

Согласно исследованию, проведенному правительственными структурами США, Секретная служба до сих пор пользуется компьютерной системой, созданной в 80-х годах прошлого века. Подобные «старые» решения также стоят на вооружении многих стран мира и применяются для управления баллистическими комплексами, системами подлодок и самолетов.

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

Читать дальше →
Всего голосов 47: ↑45 и ↓2 +43
Комментарии 44

Матрица с идеями для стартапов

Время на прочтение 2 мин
Количество просмотров 48K
Буквально на днях Эрик Стромберг, бывший совладелец книжного сервиса Oyster, чуть более года назад проданного Google, рассказал о матрице, которая поможет вам найти идею для нового стартапа. Сама задумка создания подобной матрицы многим показалась чрезвычайно интересной. Пост Эрика, размещенный в его блоге на Medium, спровоцировал обширную дискуссию и вызвал интерес у мировых СМИ. Тем, кто еще не слышал об этой концепции, мы предлагаем ознакомиться с переводом резонансной публикации.


Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 37

7 начальных уровней, которые должны изучить все разработчики игр

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

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

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

Первые уровни сложны. Поэтому мы попросили нескольких разработчиков привести примеры игр, в которых они сделаны правильно. Семь выбранных ими игр сохраняют равновесие между помощью игрокам в обучении игре и задании атмосферы для нескольких часов сюжета.
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 24

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность