Как-то на собеседовании мне задали вопрос: какая реализация списка выполнит вставку в середину быстрее: ArrayList или LinkedList? С первого взгляда вопрос простой — нужно посчитать алгоритмическую сложность каждого варианта и сравнить их.
Светлов Александр @Mehalich
Пользователь
Модель человеческого процессора
4 min
12KРазработка человеко-машинных интерфейсов должна строиться на научных знаниях. Необходимо знать количественные и качественные сравнительные оценки разных интерфейсов, поведение и рассуждения пользователей в конкретных ситуациях.
Наукой, которая дает ответы на эти вопросы, является когнитивная психология. Когнитивная психология изучает модели познавательных процессов человеческой психики и включает в себя такие разделы, как внимание, память, распознавание образов, способы представления информации, логическое мышление и определяет способности к принятию решений. Ключевой частью когнитивной психологии является разработка моделей человеческого поведения. И одним из наиболее полезных достижений в этом направлении является то, что называется «Модель Человеческого Процессора».

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

+6
Реализация волнового алгоритма нахождения кратчайшего пути к динамически движущимся объектам в unity3d на C# в 2d игре
9 min
94KВ данной статье я хочу показать как реализовать волновой алгоритм и мою модификацию его для работы с динамическими объектами в unity3d.
Данный метод подходит для 2д игр. А его модификация для нахождения пути к движущимся объектам. Область применения очень обширная и затрагивает множество игровых жанров и ситуаций, например:
В интернете достаточно много статьей по работе с алгоритмами нахождения кратчайшего пути, но при этом все равно постоянно создают темы на форумах, задают вопросы “как найти путь до объекта”. Я выделил несколько причин почему эта статья имеет право на существование:
Область применения
Данный метод подходит для 2д игр. А его модификация для нахождения пути к движущимся объектам. Область применения очень обширная и затрагивает множество игровых жанров и ситуаций, например:
- Игры жанра ТД. Где игровые локации удобно представлять в виде матрицы проходимости, к примеру 0 — участок по которому можно перемещаться, -1 — область недоступная для перемещения, -2 — ловушка и т.д.;
- Стратегические игры, особенно пошаговые. Например бои в серии игр “Герои Меча и Магии”;
- Платформеры;
- Шашки, шахматы, змейка и другие.
Обоснование написания статьи
В интернете достаточно много статьей по работе с алгоритмами нахождения кратчайшего пути, но при этом все равно постоянно создают темы на форумах, задают вопросы “как найти путь до объекта”. Я выделил несколько причин почему эта статья имеет право на существование:
- Для unity3d реализовано много алгоритмов нахождения кратчайших путей в виде ассетов, то есть готовых решений. Но иногда стоит не брать готовое решение, а написать свое, оптимальное конкретно к вашему случаю. Тем более если в игре много объектов, то плохая реализация алгоритма может сильно повлиять на производительность. И тем более производительность пострадает если этих объектов много и они меняют свое местоположение;
- Стандартный вариант волнового алгоритма — не самый оптимальный вариант для динамических объектов, поэтому я хочу показать его модификацию, которую разработал во время работы над своей стратегической игрой;
- В интернете нету хороших, простых, статей на тему реализации волнового алгоритма в unity3d.
+10
Calque — калькулятор, который удобнее, чем консоль браузера
1 min
54KПриветствую.
Существует приложение для iOS — Tydlig, которое буквально переосмысливает калькулятор, и делает его потрясающе удобным. Попользовавшись один раз этим приложением, остаешься его любителем.
Однако для бытового использования на десктопе ничего удобнее, чем консоль браузера, по моему мнению, нет. В консоли можно использовать переменные, функции, работать с выражениями как с текстом — выделять, копировать и вставлять. Это удобно, и многие годы консоль верно заменяла мне калькулятор даже для самых простых операций.
Ввиду специфики работы, проводить различные вычисления приходится часто, и со временем появилось ощущение, что в консоли чего-то не хватает. Не хватает того самого динамического обновления значений, как в Tydlig.
Поиск чего-то похожего на Tydlig ничего не дал, и было принято решение писать свое приложение.
Что из этой затеи получилось:

Существует приложение для iOS — Tydlig, которое буквально переосмысливает калькулятор, и делает его потрясающе удобным. Попользовавшись один раз этим приложением, остаешься его любителем.
Однако для бытового использования на десктопе ничего удобнее, чем консоль браузера, по моему мнению, нет. В консоли можно использовать переменные, функции, работать с выражениями как с текстом — выделять, копировать и вставлять. Это удобно, и многие годы консоль верно заменяла мне калькулятор даже для самых простых операций.
Ввиду специфики работы, проводить различные вычисления приходится часто, и со временем появилось ощущение, что в консоли чего-то не хватает. Не хватает того самого динамического обновления значений, как в Tydlig.
Поиск чего-то похожего на Tydlig ничего не дал, и было принято решение писать свое приложение.
Что из этой затеи получилось:

+105
Исследование игровых сеттингов
13 min
54K
Год назад нам понадобилось определить, какой игровой сеттинг лучше подходит для мобильной стратегии. Взять ли нам фэнтези, или какие-то научно-фантастические сеттинги? Может быть, это должен был быть сеттинг Skyforge? Однозначного ответа не было. Поэтому мы решили провести исследование аудитории портала Мини-игры Mail.Ru. Это, к слову, один из крупнейших в России порталов, посвященных именно играм, с ежемесячной многомиллионной аудиторией. Читайте далее, чтобы узнать, какие сеттинги наиболее востребованы пользователями мобильных игр.
+23
Ритм игрового процесса – зачем нужна база
6 min
27K
Самое интересное в игре, как правило, связано с напряжением. С другой стороны, постоянно находиться в напряжении нельзя, поэтому требуется «отпускать» игрока и давать ему расслабиться.
Механика базы работает чертовски просто:
- В игре создаётся некое место, где игроку приятно и безопасно проводить время.
- После периода напряжения игрок отправляется в это место.
- Закончить в этот момент сложно. Кто будет отказываться от приятного «отдыха»? Нет, из игры не выходят перед приятной частью.
- Далее мы стараемся без перехода выводить игрока в следующий цикл, требующий напряжения – так, чтобы игрок не успел понять, как там оказался.
В итоге получается механика, когда игрок просто не может остановиться перед следующим сложным этапом, потому что вместо выбора и рефлексии он уже там.
+32
Психотипы Бартла и балансировка аудитории
16 min
138KНесколько десятилетий назад профессор Университета Эссекса Ричард Алан Бартл придумал модель сегментации игроков по психологическим типам. Сегодня её используют разработчики игр во всем мире, в том числе и в Mail.Ru Group. Например, психотипы Бартла применяются в социальных сетях для оптимизации каталога игр под каждого пользователя. Так что же придумал этот замечательный человек?
30 лет назад Бартл написал одну из первых многопользовательских игр — MUD (Multi-User Dungeon), по имени которой теперь называют целый жанр. Фактически, это прародитель всех современных ММО. Вот такая замечательная консольная текстовая игра:

То, на что опирается Бартл, — это программный код игры, распечатанный для защиты научной работы.
30 лет назад Бартл написал одну из первых многопользовательских игр — MUD (Multi-User Dungeon), по имени которой теперь называют целый жанр. Фактически, это прародитель всех современных ММО. Вот такая замечательная консольная текстовая игра:

То, на что опирается Бартл, — это программный код игры, распечатанный для защиты научной работы.
+24
Формирование музыкальных предпочтений у нейронной сети — эксперимент по созданию умного плеера
7 min
37KДанная статья посвящена работе по исследованию возможности обучить простейшую (относительно) нейронную сеть «слушать» музыку и отличать «хорошую» по мнению слушателя от «плохой».
Научить нейронную сеть отличать «плохую» музыку от «хорошей» или показать, что нейронная сеть на это неспособна (данная конкретная ее реализация).

Цель
Научить нейронную сеть отличать «плохую» музыку от «хорошей» или показать, что нейронная сеть на это неспособна (данная конкретная ее реализация).

+46
Простой и недорогой 3-х осевой фрезерный станок с ЧПУ. Часть 2
4 min
18KСегодня в фокусе нашего внимания конструктор 3D фрезерного станка.
В предыдущей публикации мы остановились на вопросе настройки слайсера Skeinforge.
Собственно с этого места поподробнее. Итак, нажимаем кнопку «Настройка»
В предыдущей публикации мы остановились на вопросе настройки слайсера Skeinforge.
Собственно с этого места поподробнее. Итак, нажимаем кнопку «Настройка»
+8
Структуры данных. Неформальный гайд
6 min
170KTranslation

Конечно, можно быть успешным программистом и без сакрального знания структур данных, однако они совершенно незаменимы в некоторых приложениях. Например, когда нужно вычислить кратчайший путь между двумя точками на карте, или найти имя в телефонной книжке, содержащей, скажем, миллион записей. Не говоря уже о том, что структуры данных постоянно используются в спортивном программировании. Рассмотрим некоторые из них более подробно.
+75
Пишем расширения для игры Balanced Annihilation на базе движка Spring Engine
4 min
7.2KСтатья предназначается для всех любителей старой-доброй Total Annihilation и ее открытой реализации в виде SpringRTS + Balanced Annihilation.
Несмотря на то, что виджет Air Screen Keeper оказался, по большому счету, бесполезной затеей, на его примере ввиду небольшого размера можно отразить основные идеи построения расширений к играм на основе движка Spring.
Итак, суть виджета (т.е. расширения) — сообщить игроку в той или иной форме о том, что т.н. воздушный экран, состоящий из множества самолетов, выполняющих команду «патруль», атакован врагом с земли. Обычно такие атаки в разгаре битвы (8 на 8 игроков) не очень заметны и можно легко прохлопать, как противник таким образом уничтожит до 70% самолетов, если отвлечься на что-то сиюминутное.
Поэтому в качестве заметного сообщения будем использовать маркер на карте, видимый только игроку, и будем ставить его в месте, где был атакован наш самолет. Кроме того, чтобы не заполонить маркерами все на свете, будем выставлять их с задержкой в несколько секунд.
К сожалению, отсутствует видео, где это можно было бы посмотреть вживую. Вместо этого приведу пример более сложного виджета, управляющего конструкторами для автоматической застройки шахт по добыче металла в пределах периметра базы игрока. Кстати, последний вычисляется автоматически благодаря алгоритму, описанному в замечательной статье о построении минимальных выпуклых оболочек.
Несмотря на то, что виджет Air Screen Keeper оказался, по большому счету, бесполезной затеей, на его примере ввиду небольшого размера можно отразить основные идеи построения расширений к играм на основе движка Spring.
Итак, суть виджета (т.е. расширения) — сообщить игроку в той или иной форме о том, что т.н. воздушный экран, состоящий из множества самолетов, выполняющих команду «патруль», атакован врагом с земли. Обычно такие атаки в разгаре битвы (8 на 8 игроков) не очень заметны и можно легко прохлопать, как противник таким образом уничтожит до 70% самолетов, если отвлечься на что-то сиюминутное.
Поэтому в качестве заметного сообщения будем использовать маркер на карте, видимый только игроку, и будем ставить его в месте, где был атакован наш самолет. Кроме того, чтобы не заполонить маркерами все на свете, будем выставлять их с задержкой в несколько секунд.
К сожалению, отсутствует видео, где это можно было бы посмотреть вживую. Вместо этого приведу пример более сложного виджета, управляющего конструкторами для автоматической застройки шахт по добыче металла в пределах периметра базы игрока. Кстати, последний вычисляется автоматически благодаря алгоритму, описанному в замечательной статье о построении минимальных выпуклых оболочек.
+10
Кормушка для аквариумных рыб на базе Arduino
4 min
20KХотел поделиться своей разработкой кормушки для аквариумных рыб.
Лето — сезон отпусков. Побоялся что три недели на море приведут к голодной смерти обитателей аквариума, а поскольку тёща поехала со мной, то доверить дело кормёжки рыб оказалось некому.
Немного подумав над проблемой решил с помощью Arduino UNO, которая оказалась под рукой, сделать автоматическую кормушку. Благо небольшой опыт автоматизации уже был. А поскольку впрок был закуплен Ethernet Shield, то возникла мысль о жутком извращении: управлении кормёжкой через компьютерную сеть. Дело в том, что дома у меня стоит постоянно включенный компьютер исполняющий обязанности домашнего сервера. Он подключен к бесперебойнику и потому высоки шансы что даже при кратковременных переключениях питающей сети, компьютер встретит нас жужжанием своих вентиляторов, а за одно и снизойдёт до управления этой самой кормушкой.
Дело в том, что в примерах из среды разработки Arduino IDE для Ethernet Shield был найден вэб-сервер, некоторая переделка которого позволила выдавать состояние всех аналоговых контактов в формате JSON.
Лето — сезон отпусков. Побоялся что три недели на море приведут к голодной смерти обитателей аквариума, а поскольку тёща поехала со мной, то доверить дело кормёжки рыб оказалось некому.
Немного подумав над проблемой решил с помощью Arduino UNO, которая оказалась под рукой, сделать автоматическую кормушку. Благо небольшой опыт автоматизации уже был. А поскольку впрок был закуплен Ethernet Shield, то возникла мысль о жутком извращении: управлении кормёжкой через компьютерную сеть. Дело в том, что дома у меня стоит постоянно включенный компьютер исполняющий обязанности домашнего сервера. Он подключен к бесперебойнику и потому высоки шансы что даже при кратковременных переключениях питающей сети, компьютер встретит нас жужжанием своих вентиляторов, а за одно и снизойдёт до управления этой самой кормушкой.
Дело в том, что в примерах из среды разработки Arduino IDE для Ethernet Shield был найден вэб-сервер, некоторая переделка которого позволила выдавать состояние всех аналоговых контактов в формате JSON.
+11
Изготовление матриц для литья силикона
6 min
86KRecovery Mode
На гиктаймс уже писали о литье пластмасс в силиконовые формы, но в этот раз мы будем лить силикон в пластмассу.

Краткая предыстория. Стала перед нами задача: изготовить энное количество резиновых кнопок от ключей автомобиля по образцу. Пробовали мы их печатать на 3D принтере из резинового филамента, но качество не устроило. Тогда-то и пришла мысль реверсировать технологию литья в силикон. Что из этого вышло, читайте под катом.

Краткая предыстория. Стала перед нами задача: изготовить энное количество резиновых кнопок от ключей автомобиля по образцу. Пробовали мы их печатать на 3D принтере из резинового филамента, но качество не устроило. Тогда-то и пришла мысль реверсировать технологию литья в силикон. Что из этого вышло, читайте под катом.
+67
Магия тензорной алгебры: Часть 11 — Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
6 min
15KСодержание
- Что такое тензор и для чего он нужен?
- Векторные и тензорные операции. Ранги тензоров
- Криволинейные координаты
- Динамика точки в тензорном изложении
- Действия над тензорами и некоторые другие теоретические вопросы
- Кинематика свободного твердого тела. Природа угловой скорости
- Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
- О свертках тензора Леви-Чивиты
- Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
- Получаем вектор угловой скорости. Работаем над недочетами
- Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
- Параметры Родрига-Гамильтона в кинематике твердого тела
- СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
- Нестандартное введение в динамику твердого тела
- Движение несвободного твердого тела
- Свойства тензора инерции твердого тела
- Зарисовка о гайке Джанибекова
- Математическое моделирование эффекта Джанибекова
Введение
Сегодня мы завершим построение тензорных соотношений, описывающих кинематику свободного твердого тела. Так получилось, что на протяжении достаточно большого количества статей мы заново построили часть основополагающего курса теоретической механики. Данные построения, несмотря на некоторую абстрактность, полезны и с методической точки зрения, и с точки зрения того, что применительно к механике, тензорный подход, как скальпель, вскрывает истинную природу привычных нам понятий, таких как законы движения материальных тел, скорость их точек, угловая скорость, угловое ускорение. Вот об угловом ускорении сегодня и пойдет речь.
Мы всё глубже увязаем в математической матрице...

+25
Теорема Пифагора навсегда
2 min
16KСейчас лето, а скоро наступит 1 сентября и миллионы детей пойдут в школу грызть гранит науки, получать знания и навыки. Мы тоже решили уделить образовательной части немного времени и визуализировать теорему Пифагора с помощью 3D технологий. Чтобы тот, кто сложит этот пазл или хотя бы увидит, как он складывается, навсегда запомнил одну из основных теорем евклидовой геометрии.


+10
Почему Gradle?
7 min
103KTranslation
Если вы еще не знаете, что такое Gradle, то о нём можно почитать в предыдущих двух обзорах:
Не так давно c Maven на Gradle была переведена сборка Hibernate Core. На что информационное сообщество отреагировало неоднозначно. Я хочу представить вашему вниманию перевод статьи, посвященной миграции сборки Hibernate. В статье раскрываются причины принятия такого решения, описываются преимущества Gradle и проблемы с Maven2. Дальнейшее повествование ведётся от лица Steve Ebersole.
Не так давно c Maven на Gradle была переведена сборка Hibernate Core. На что информационное сообщество отреагировало неоднозначно. Я хочу представить вашему вниманию перевод статьи, посвященной миграции сборки Hibernate. В статье раскрываются причины принятия такого решения, описываются преимущества Gradle и проблемы с Maven2. Дальнейшее повествование ведётся от лица Steve Ebersole.
+1
Образовательные видео на YouTube обошли по популярности развлекательные
2 min
16KНе так давно видеосервис YouTube отпраздновал свое 10-летие. На данный момент аудитория ресурса составляет более миллиарда уникальных пользователей в месяц. Однако у большинства людей YouTube ассоциируется с котиками и смешными падениями. На самом же деле статистика показывает совершенно другую картину. Оказывается, наиболее популярными и просматриваемыми на YouTube являются образовательные каналы и видео.
+24
Светить всегда, светить везде. Часть 2
4 min
11K
Текущая версия платы процессорного модуля
Подоспела вторая часть материала про самопально-велосипедную систему управления освещением. Напомню, я решил строить сеть RS-485, в которой находятся управляющие и исполнительные устройства, а мастером является компьютер, на котором крутится реализующая логику программа. Прежде чем перейти к описанию логики системы, расскажу о доработках и сдвигах парадигмы в плане железа, возникших в результате обсуждения и тестирования прототипов из первой части.
+13
Качественный квадрокоптер за 30$? Посмотрим на SYMA X13
3 min
27KRecovery Mode
Компания Syma уже не раз радовала нас своей продукцией. Легендарный Syma X5, который познакомил с миром квадрокоптеров десятки тысяч людей. Так же вы можете помнить о крохотном Syma X12, о котором уже хорошо отзывались на GeekTimes. А на прошлой неделе мы рассказывали о Syma X5SW, который так же порадовал нас своими характеристиками. Поэтому, когда в наших руках появился Syma X13, мы ожидали увидеть ещё один качественный продукт от Syma.


+15
Принцип разделения ответственности и ORM
5 min
25KTranslation
Я бы хотел обсудить принцип разделения ответственности (Separation of Concerns, SoC) в контексте ORM, а также посмотреть почему этот принцип так важен. Также мы рассмотрим примеры нарушения границ ответственности между доменной логикой и логикой сохранения данных.
+12
Information
- Rating
- Does not participate
- Location
- Таллин, Эстония, Эстония
- Date of birth
- Registered
- Activity