Как стать автором
Обновить
7
-0.5

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

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

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

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

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


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


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



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

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

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


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

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

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

«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 мин
Количество просмотров71K
Впервые о теории близости я прочитал в 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.9K
Виртуальная реальность привносит новые требования к игровому дизайну, накладывает собственные ограничения, одно из них — это тот факт, что пользователя (пока) нельзя остановить перед виртуальной стеной.

Не нужно быть терминатором для того, чтобы пройти через виртуальную 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

Информация

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