Pull to refresh
1
0
Евгений Крутень @ekruten

User

Send message

Архитектура сервера онлайн-игры на примере Skyforge

Reading time 12 min
Views 190K
Привет, Хабр! Я Андрей Фролов, ведущий программист, работаю в Mail.Ru над Next-Gen MMORPG Skyforge. Вы могли читать мою статью про архитектуру баз данных в онлайн-играх. Сегодня я буду раскрывать секреты, касающиеся устройства сервера Skyforge. Постараюсь рассказать максимально подробно, с примерами, а также объясню, почему было принято то или иное архитектурное решение. По нашему серверу без преувеличения можно написать целую книгу, поэтому для того, чтобы уложиться в статью, мне придется пройтись только по основным моментам.

image

Читать дальше →
Total votes 141: ↑127 and ↓14 +113
Comments 179

Разработка метамодели с помощью Eclipse Modeling Framework (и немного про моделирование данных)

Reading time 11 min
Views 29K


Это вторая статья цикла, посвященного разработке, управляемой моделями. Сегодня мы создадим метамодель, основанную на метаметамодели Ecore. Вскользь затронем моделирование данных, а именно Anchor, 6НФ и концептуальное моделирование.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 12

Задача RMQ – 2. Дерево отрезков

Reading time 4 min
Views 51K
В первой части нашей темы мы рассмотрели решение задачи static RMQ за (O(nlogn), O(1)). Теперь мы разберёмся со структурой данных, называемой дерево отрезков, или интервалов (в англоязычной литературе – segment tree или interval tree). С помощью неё можно решать dynamic RMQ за (O(n), O(logn)).

Определение



Введём понятие дерева отрезков. Для удобства дополним длину массива до степени двойки. В добавленные элементы массива допишем бесконечности (за бесконечностью стоит понимать, например, число, больше которого в данных ничего не появится). Итак, дерево отрезков это двоичное дерево, в каждой вершине которого написано значение заданной функции на некотором отрезке. Функция в нашем случае – это минимум.

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

Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 16

Чтобы распознавать картинки, не нужно распознавать картинки

Reading time 18 min
Views 236K
Посмотрите на это фото.



Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?

Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
Осторожно, тяжелые гифки
Total votes 263: ↑258 and ↓5 +253
Comments 104

Рождённые в СССР

Reading time 5 min
Views 181K
image
Вы не задумывались, почему мы были (а может и остаёмся) самой читающей нацией? А почему так много учёных, математиков даже заграницей имеют до боли знакомые фамилии и имена? Почему не один громкий IT проект от WinAmp, через Google и множество других например к BitCoin не обошёлся без тех же фамилий?
Читать дальше →
Total votes 294: ↑175 and ↓119 +56
Comments 546

Учимся жить без копирайта

Reading time 9 min
Views 3.5K
Использование торрентов стало повсеместным. Пираты создали вокруг себя вполне устойчивую бизнес-модель, которая пока и не думает себя изживать. Конечно, правообладатели активно пытаются с этим бороться, но всеми этими судебными исками и штрафованием пользователей они вряд ли завоюют народную любовь, а ведь лояльность потребителей — одна из важнейших составляющих коммерческого успеха интеллектуальных творений.
Важно понимать одну простую вещь — на данный момент не существует стопроцентно надежных и гарантирующих успех способов защитить авторское право и препятствовать свободному распространению продукции. Как ни пугай народ, как ни договаривайся с провайдерами, какие только DRM не ставь — все равно даже неискушенный пользователь интернета сможет без труда найти в сети «защищенный» продукт.
image
Возможно, для правообладателей лучшим решением в этой непростой ситуации будет не поиск новых технических и юридических методов защиты своего драгоценного творчества, а сделать так, чтобы свободное распространение, из-за которого они сейчас теряют деньги, наоборот, создавало возможность зарабатывания денег. Другими словами, вспоминая знаменитое изречение Линкольна, лучший способ победить врага — это обратить его в друга.
Итак, в этом после я хотел перечислить, говоря формальным языком, все возможные альтернативные механизмы компенсации затрат на создание интеллектуальных продуктов, которые мне известны. В данном блоге уважаемые хабраюзеры множество раз обсуждали эту тему, но никто пока не брал на себя труд обобщить все доводы и факты. Я попробую взяться за это.
Читать дальше →
Total votes 139: ↑98 and ↓41 +57
Comments 410

Минутка истории, или какие компьютеры СССР делал

Reading time 5 min
Views 9.6K
Компьютеры настолько плотно вошли в нашу жизнь, что теперь нельзя её представить без них. Настольные, ноутбуки, КПК, смартфоны, различные гаджеты, будь то плеер или переносной фотобанк. Помимо встречающихся нам каждый день различный устройств есть также компьютеры служебные. О том, откуда возникли и как развивались, от ЭНИАК до современных компьютеров, с безумно мощными процессорами и потрясающими операционными системами, знают многие. Но то, какие в СССР, в это время разрабатывались вычислительные комплексы, предназначенные для решения промышленных и военных задач, мало где освещено. Вот о них и пойдет речь



Читать дальше →
Total votes 118: ↑104 and ↓14 +90
Comments 64

Дональд Кнут

Reading time 8 min
Views 48K
image

Дональд Эрвин Кнут — американский учёный, почётный профессор Стэнфордского университета и нескольких других университетов в разных странах, преподаватель и идеолог программирования, автор 19 монографий (в том числе ряда классических книг по программированию) и более 160 статей, разработчик нескольких известных программных технологий. Автор всемирно известной серии книг, посвящённой основным алгоритмам и методам вычислительной математики, а также создатель настольных издательских систем TEX и METAFONT, предназначенных для набора и вёрстки книг, посвящённых технической тематике (в первую очередь — физико-математических).
Читать дальше →
Total votes 156: ↑152 and ↓4 +148
Comments 49

Magic Tester. Как неподготовленный человек замечает ошибки, и как научить тому же робота

Reading time 11 min
Views 26K
Привет! Меня зовут Илья Кацев, и я представляю небольшое исследовательское подразделение в отделе тестирования в Яндексе. Вы уже могли читать о нашем экспериментальном проекте Роботестер — роботе, который умеет проделывать за тестировщика заметную часть рутинной работы.

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


Есть такой тезис, сторонником которого я лично являюсь, — любую ошибку, которую может заметить неподготовленный пользователь, может обнаружить и робот. Именно это мы и попытались проверить. Но тут возникает вопрос: что именно человек считает ошибкой?

Искусственный интеллект пока никто не изобрёл (хотя Хокинг, например, считает, что это к лучшему), но кое-каких успехов нам удалось добиться. В этом посте я расскажу о том, как мы формулировали опыт, которым обладают тестировщики-люди и постарались научить ему наших роботов, и что из этого вышло.
Как человек понимает, когда что-то не так?
Total votes 68: ↑66 and ↓2 +64
Comments 37

Проработанная идея алгоритма двусмысленного шифрования

Reading time 5 min
Views 28K
Весьма красочно иллюстрирует размышления на тему шифрования изображение с xkcd.com.



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

Итак, если кратко, то владелец «такого ноута» при использовании изложенного алгоритма будет помнить несколько паролей, каждый из которых является ключом к своему «сейфу» (контейнеру файлов). Владелец определяет то, как распределить информацию среди контейнеров. Соответственно, он может создать несколько подставных контейнеров с заведомо ложной информацией. Итогом проиллюстрированных угроз может стать выдача пароля от одного из таких «сейфов». В случае, если злоумышленники хорошо знакомы с излагаемым алгоритмом, можно, например, выдать еще 1 или 2, и/или сказать, что больше контейнеров в этом архиве нет, а все остальное — случайная информация.
Подробное описание предлагаемого алгоритма
Total votes 41: ↑35 and ↓6 +29
Comments 42

Интерактивная обучалка ветвлению в Git

Reading time 1 min
Views 79K
Некий Питер Коттл (Peter Cottle) сделал интерактивную обучалку по основам ветвления в Git. Есть несколько простых обучающих уровней, где нужно сделать пару коммитов, а затем merge или rebase, есть и сложные уровни, над которыми придется подумать. Можно также сохранять уровни и делиться ими с друзьями.

Хотя сам автор утверждает, что приложение еще сырое, я советую всем, кто интересуется гитом, взглянуть на эту прикольную штуку.

image
Читать дальше →
Total votes 162: ↑156 and ↓6 +150
Comments 38

Распознавание коридоров в тексте

Reading time 2 min
Views 27K
Коридор (river) — совпадение пробелов по вертикали или наклонной линии в трёх и более смежных строках, один из дефектов вёрстки. Дефект устраняется довольно легко, но сложность заключается в его автоматическом обнаружении.

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

               
Читать дальше →
Total votes 83: ↑75 and ↓8 +67
Comments 48

Введение в Байесовские методы

Reading time 6 min
Views 175K

В качестве введения


В настоящее время Байесовские методы получили достаточно широкое распространение и активно используются в самых различных областях знаний. Однако, к сожалению, не так много людей имеют представление о том, что же это такое и зачем это нужно. Одной из причин является отсутствие большого количества литературы на русском языке. Поэтому здесь попытаюсь изложить их принципы настолько просто, насколько смогу, начав с самых азов (прошу прощения, если кому-то это покажется слишком простым).
Подробности
Total votes 78: ↑70 and ↓8 +62
Comments 37

Фильтр Калмана

Reading time 10 min
Views 414K


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →
Total votes 178: ↑173 and ↓5 +168
Comments 84

Git Rebase: руководство по использованию

Reading time 8 min
Views 790K
Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

Теория


Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


Читать дальше →
Total votes 122: ↑121 and ↓1 +120
Comments 169

Инструкция начинающего разработчика игр

Reading time 12 min
Views 221K
Голая бабаВ данной инструкции я попытался осветить основные моменты разработки игр. Инструкция будет полезна для людей, собирающихся заняться разработкой игр в роли лидера (главного разработчика и организатора).

Хочу отметить, что игры бывают разные – большие и маленькие, сложные и лёгкие, и поэтому для каждой игры эта инструкция верна в какой-то своей определённой степени. Охватить всё не удалось, но передать общие моменты, думаю, получилось.
Читать дальше →
Total votes 142: ↑104 and ↓38 +66
Comments 138

Хотите узнать почему крупные издатели делают отстойные приложения? Посмотрите в зеркало

Reading time 3 min
Views 40K
Версия для iOS классического файтинга Marvel vs. Capcom 2, выпущенная 25 апреля, находится довольно высоко в чартах продаж App Store. И это символ полного беспорядка в игровом мире.

Marvel vs. Capcom 2, в которой встречаются персонажи Street Fighter и супергерои Marvel, имеет графику низкого разрешения и непотребный фреймрейт. Но ее главная проблема в управлении: игра использует экранный виртуальный джойстик и кнопки, воспроизводящие аркадный автомат с оригинальной игрой. В ней нет ни одного точного удара, из которых складывалось великолепие оригинальной игры. Вы просто мажете пальцами по экрану в надежде, что случится что-то хорошее.

image

Но игроки будут покупать этот ленивое чудовище из-за того, что они помнят название. И до тех пор, пока дерьмо продолжает продаваться, у издателей и не будет причин менять свое поведение.
Читать дальше →
Total votes 76: ↑64 and ↓12 +52
Comments 42

Самостоятельное изучение схемотехники. Синтез автоматов на триггерах. Часть 1

Reading time 3 min
Views 30K
Здравствуйте.
В продолжение тематики самостоятельного изучения схемотехники предлагаю вашему вниманию статью, связанную с синтезом автоматов на триггерах.
А начинается все так:


Читать дальше →
Total votes 109: ↑94 and ↓15 +79
Comments 33

Откуда возникают ошибки в оценке сроков программных проектов (по мотивам собственного опыта)?

Reading time 3 min
Views 16K
А ты оценил свой проект?
Довольно большое количество литературы посвящено такому вопросу как оценка программного обеспечения (по стоимости и/или времени разработки). Понятно, что дисциплина эта новая (по сравнению, к примеру, с металлургией). И понятно, что ошибки тут бывают довольно часто. В этом посте я приведу несколько историй из жизни, которые невозможно было учесть при составлении оценки и которые повлияли на увеличение сроков разработки.
Читать дальше →
Total votes 65: ↑46 and ↓19 +27
Comments 62
1

Information

Rating
Does not participate
Location
Омск, Омская обл., Россия
Date of birth
Registered
Activity