Как стать автором
Обновить
105
0
Артём Рипатти @ripatti

Математик-программист

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

Клеточные автоматы в браузере

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

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

Клеточные автоматы имеют различные формы, виды и размерности. Наверно, самым знаменитым клеточным автоматом является конвеевская игра «Жизнь» (Conway's Game of Life, GOL). Она состоит из двухмерной сетки, в которой каждая клетка содержит двоичное значение (живая или мёртвая). Сопутствующие правила на основании состояния соседних клеток определяют, должна ли клетка быть мёртвой или живой. Правила гласят, что живая клетка умирает от одиночества, если вокруг неё меньше 2 живых клеток. Если живы больше трёх соседних клеток, она погибает от перенаселённости. Другими словами, клетка «выживает», если вокруг неё ровно 2 или 3 живых соседних клеток. Чтобы мёртвая клетка ожила, у неё должно быть ровно 3 живых соседних клеток, в противном случае она остаётся мёртвой. Пример автомата GoL, итеративно проходящий несколько состояний, показан ниже.

Game of Life

Ещё один знаменитый вариант клеточного автомата одномерен; он называется элементарным клеточным автоматом (Elementary Cellular Automaton, ECA). Именно его мы реализуем в этом посте.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Как запускается сервер

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

Запуск сервера — длинная и сложная последовательность действий, зависящая от аппаратной составляющей, настроек и используемого программного обеспечения. Многие, даже опытные и квалифицированные системные администраторы, плохо себе представляют, что именно происходит в процессе запуска сервера, поэтому мы решили разобрать этот процесс детально.
Читать дальше →
Всего голосов 85: ↑74 и ↓11+63
Комментарии76

Побег из гнезда успеха или Проблемы больших компаний

Время на прочтение9 мин
Количество просмотров59K
Привет, Хабр! Говорят, чистосердечное признание смягчает наказание. Каюсь — большая часть статьи будет откровенным копипастом чужого текста. Прошу модераторов не судить строго и считать огромной цитатой. Потому что лучше не скажешь. Потому что я, вы, ты, читатель, — все мы там были или можем быть. В больших межгалактических корпорациях компаниях, которые заманивают офисами, всевозможными плюшками из рога изобилия, самокатами в коридорах и прочими релакс-капсулами, но редко говорят, что будет взамен. А взамен будут бесконечные совещания, легаси, инерция и… мать его, одинокое ощущение себя маленьким винтиком какой-то адовой машины. Начну со своей истории — в одном абзаце. А потом — просто откровенная бомба — текст, каждое слово которого крепко отозвалось во мне, вроде суровом дядьке.


Читать дальше →
Всего голосов 200: ↑193 и ↓7+186
Комментарии55

Двойная бюстгалтерия* глазами программиста

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


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

Статья не академическая, а отражает сугубо мой упрощенный взгляд, и для тех кто уже осилил академические статьи — будет неинтересной. Тех же кому интересно понять такой простой и мощный инструмент как «двойная запись» — прошу под кат.
Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии266

«Магическая константа» 0x5f3759df

Время на прочтение9 мин
Количество просмотров120K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →
Всего голосов 212: ↑210 и ↓2+208
Комментарии188

Unity: сжимая сжатое

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

Результат: информация о цвете занимает 1/64 от исходной площади при достаточно высоком качестве результата. Тестовое изображение взято с этого сайта.

Текстуры практически всегда являются наиболее значимым потребителем места как на диске, так и в оперативной памяти. Сжатие текстур в один из поддерживаемых форматов относительно помогает в решении этой проблемы, но что делать, если даже в этом случае текстур очень много, а хочется еще больше?
Что же делать?
Всего голосов 70: ↑69 и ↓1+68
Комментарии69

Инструменты Intel для оптимизации приложений и задача о течениях в пористых средах

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

Оптимизации, которые влияют на скорость вычислений при использовании любого числа потоков, сводятся к учёту в коде особенностей процессорных архитектур, наборов инструкций, к поиску наиболее рациональных способов работы с разными видами памяти. Помощь в подобной оптимизации способен оказать, например, подход к исследованию производительности методом «сверху вниз» с использованием низкоуровневых данных о системных событиях, которые преобразуются в доступные для анализа и практического применения высокоуровневые показатели.



Здесь мы рассмотрим методику оптимизации вычислений, связанных с моделированием течений многофазных жидкостей в пористых средах по методике, предложенной в этой работе. Речь идёт о численном методе решения дифференциальных уравнений гиперболического типа в частных производных.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии11

Особенности национальных конструкторов (в картинках). Часть 1

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


В детстве мы особо не задумывались, где появились детальки к любимому конструктору — если только это не было предметом особой гордости. Но вот мы выросли. Мы все еще любим конструкторы и ради интереса выяснили, как они повлияли на становление технаря в отдельно взятом ИТ-проекте.

А что если взять мировой масштаб? Давайте посмотрим на знаменитые и не очень конструкторы из разных стран и попробуем понять, как они могли повлиять на местную интернет-отрасль. Так как нам ближе тема конструкторов сайтов — в блоке о интернет-проектах поговорим о них.
Читать дальше →
Всего голосов 46: ↑33 и ↓13+20
Комментарии54

Особенности национальных конструкторов (в картинках). Часть 2

Время на прочтение6 мин
Количество просмотров24K
Конструкторы различных стран носят “национальный отпечаток” — когда по сугубо маркетинговым, а когда по историческим причинам. При этом культура, искусство или достижения одной страны часто служат вдохновением, а то и прочной основой для коммерческого продукта из другой части света. Это был краткий пересказ первого выпуска с конструкторами Японии, России и еще трех стран.

Переходим ко второй:



Возьмем еще пять стран с разных континентов и посмотрим, что там с обычными и цифровыми конструкторами, — в попытке установить, а могли 600 одинаковых деталей повлиять на локальное становление технаря?
От Дании до Аргентины
Всего голосов 32: ↑30 и ↓2+28
Комментарии39

Оптимизация кода: процессор

Время на прочтение18 мин
Количество просмотров113K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
Читать дальше →
Всего голосов 107: ↑102 и ↓5+97
Комментарии142

Обстоятельно о подсчёте единичных битов

Время на прочтение16 мин
Количество просмотров96K
Я хотел бы подарить сообществу Хабра статью, в которой стараюсь дать достаточно полное описание подходов к алгоритмам подсчёта единичных битов в переменных размером от 8 до 64 битов. Эти алгоритмы относятся к разделу так называемой «битовой магии» или «битовой алхимии», которая завораживает своей красотой и неочевидностью многих программистов. Я хочу показать, что в основах этой алхимии нет ничего сложного, и вы даже сможете разработать собственные методы подсчёта единичных битов, познакомившись с фундаментальными приёмами, составляющими подобные алгоритмы.

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

Как «одушевить» продукт? Леттеринг

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


Смотря фильмы про будущее мы очень часто видим такую картину: одинаковые, словно клонированные, люди в одинаковой одежде. Их окружают одинаковые автомобили и дома на одинаковых улицах. Люди трудятся на благо огромных корпораций, осуществляя монотонные телодвижения перед компьютерами или перекладывая бумажки с места на место. Все вокруг бездушное и унылое, преобладают голубые, серые и белые оттенки с небольшими вставками ярких цветов для ключевых героев фильма. Наверняка это сделано для придания большей ироничности сюжету фильма. И, конечно, я отдаю себе отчет в том, что это утопия и в обозримом будущем такого не случится. Но одно я знаю точно. Я и подавляющее большинство людей никогда бы не захотели жить в таком мире.

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

Существует много способов «одушевить» продукт: придумать зверюшку-символ, использовать образы людей, фотографии, иллюстрации. Я расскажу вам о леттеринге. Осторожно — много картинок!
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии5

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

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

Господа! Я рад сообщить, что наконец-то все желающие могут загрузить бесплатный учебник на более чем 1600 страниц, над переводом которого работало более полусотни человек из ведущих университетов, институтов и компаний России, Украины, США и Великобритании. Это был реально народный проект и пример международной кооперации.

Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера», второе издание, 2012, сводит вместе миры программного обеспечения и аппаратуры, являясь одновременно введением и в разработку микросхем, и в низкоуровневое программирование для студентов младших курсов. Этот учебник превосходит более ранний вводный учебник «Архитектура компьютера и проектирование компьютерных систем» от Дэвида Паттерсона и Джона Хеннесси, причем соавтор предыдущего учебника Дэвид Паттерсон сам рекомендовал учебник от Харрисов как более продвинутый. Следуя новому учебнику, студенты строят реализацию подмножества архитектуры MIPS, используя платы с ПЛИС / FPGA, после чего сравнивают эту реализацию с индустриальными микроконтроллерами Microchip PIC32. Таким образом вводится вместе схемотехника, языки описания аппаратуры Verilog и VHDL, архитектура компьютера, микроархитектура (организация процессорного конвейера) и программирование на ассемблере — в общем все, что находится между физикой и высокоуровневым программированием.

Как загрузить? К сожалению, не одним кликом. Сначало надо зарегистрироваться в пользовательском коммьюнити Imagination Technologies, потом зарегистрироваться в образовательных программах на том же сайте, после чего наконец скачать:
Читать дальше →
Всего голосов 117: ↑114 и ↓3+111
Комментарии66

400 потрясающих бесплатных сервисов

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

Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные веб-сайты

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly: Конструктор веб-сайтов.
  • Layers: Создание сайтов на WordPress (new).
  • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
  • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
Читать дальше →
Всего голосов 108: ↑89 и ↓19+70
Комментарии38

Как накормить мозг программиста… или feed your brain

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

Введение


Из всех наслаждений, отпущенных человеку в жизни,
самое изысканное — шевелить мозгами.
(Борис Акунин)


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

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

В данной публикации мы рассмотрим, как правильно питаться для жизнеобеспечения мозга и как его разогнать ноотропами (в случае аврала необходимости).
Читать дальше →
Всего голосов 213: ↑163 и ↓50+113
Комментарии145

Сборка 4-мерного кубика Рубика

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

Поэтому сперва я расскажу о том, как я себе представляю четырёхмерную головоломку.


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

История юриста, который играл в Dota2, или как Valve обхитрили Blizzard

Время на прочтение5 мин
Количество просмотров22K
Однажды, поздно вечером, играя в игру Dota2, я заинтересовался почему компания Blizzard отдала права на создание этой игры в пользу корпорации Valve, а главное — зачем?

Углубившись в суть вопроса, я осознал какие непростительные ошибки допустила компания Blizzard, и какие хитрые оказались менеджеры и юристы Valve.

Сам я юрист (практикую право в сфере IT) и обладаю некой профессиональной экспертизой в сфере авторских прав.

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

С аниме дорога летит незаметно или что посмотреть по дороге в отпуск

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


Август — закат лета и последняя возможность вырваться в отпуск (кстати, в августе особенно хороша Карелия). Самое время определяться с видом отдыха — в отеле, палатке или на даче — и собирать вещи, загружать полезные приложения, покупать всякие гаджеты. И чтобы не скучать в дороге, нужно озаботиться каким-то развлечением и пищей для ума. Например, взять с собой интересную книгу. Но иногда хочется отдохнуть от чтения и дать отдых мозгам. Обычно здесь рука тянется запустить очередной сериал или полнометражку, но всё же не торопитесь: на кинематографе свет клином не сошёлся. Есть ещё один жанр, который может подарить не меньше удовольствия — аниме.

Поклонникам не надо объяснять, что это такое. Но если вы сейчас скривились и вспомнили «Сейлор Мун» и «Покемона», то не торопитесь осуждать: аниме столь же разнообразно, как и кинематограф. В этом жанре есть как очень глубокие и серьёзные полнометражные фильмы, и сериалы, так и совершенно бестолковые и проходные поделки. Просто по ТВ почти невозможно посмотреть хорошее и качественное аниме, поэтому у многих сформировалось предубеждение относительно японской мультипликации. И всё же мы рекомендуем поближе познакомиться с этим жанром по пути в жаркие страны, в горы или в деревню.
Читать дальше →
Всего голосов 86: ↑61 и ↓25+36
Комментарии291

AI для «Дурака»

Время на прочтение11 мин
Количество просмотров36K
Знал бы прикуп — жил бы в Сочи.

       Народная мудрость. 

Под игрока — с семака, под вистующего — с тузующего.

       Ещё одна народная мудрость. 


Похоже, в этом посте всё смешалось. "Дурак" в заголовке, преферансные поговорки в эпиграфе и КДПВ, не имеющая отношения ни к тому ни к другому. Впрочем, само понятие "джокера", к предмету сегодняшнего разговора, отношение имеет самое непосредственное.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии7

Алгоритм Quickhull для нахождения выпуклой оболочки

Время на прочтение20 мин
Количество просмотров24K
Как гласит определение, выпуклая оболочка некоторого множества — это наименьшее выпуклое множество , содержащее в себе множество . Выпуклой оболочкой конечного множества попарно различных точек является многогранник.
Для реализации одномерного случая алгоритма Quickhull годится функция std::minmax_element. В сети можно найти множество реализаций алгоритма Quickhull для плоского случая. Однако, для случая произвольной размерности сходу находится лишь одна тяжёловесная реализация с сайта qhull.org.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии12

Информация

В рейтинге
Не участвует
Откуда
Уфа, Башкортостан(Башкирия), Россия
Зарегистрирован
Активность