Как стать автором
Обновить
1
0
Евгений Крутень @ekruten

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

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

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

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

image

Читать дальше →

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

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


Это вторая статья цикла, посвященного разработке, управляемой моделями. Сегодня мы создадим метамодель, основанную на метаметамодели Ecore. Вскользь затронем моделирование данных, а именно Anchor, 6НФ и концептуальное моделирование.
Читать дальше →

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

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

Определение



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

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

Читать дальше →

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

Время на прочтение18 мин
Количество просмотров237K
Посмотрите на это фото.



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

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

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

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

Время на прочтение5 мин
Количество просмотров181K
image
Вы не задумывались, почему мы были (а может и остаёмся) самой читающей нацией? А почему так много учёных, математиков даже заграницей имеют до боли знакомые фамилии и имена? Почему не один громкий IT проект от WinAmp, через Google и множество других например к BitCoin не обошёлся без тех же фамилий?
Читать дальше →

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

Время на прочтение9 мин
Количество просмотров3.5K
Использование торрентов стало повсеместным. Пираты создали вокруг себя вполне устойчивую бизнес-модель, которая пока и не думает себя изживать. Конечно, правообладатели активно пытаются с этим бороться, но всеми этими судебными исками и штрафованием пользователей они вряд ли завоюют народную любовь, а ведь лояльность потребителей — одна из важнейших составляющих коммерческого успеха интеллектуальных творений.
Важно понимать одну простую вещь — на данный момент не существует стопроцентно надежных и гарантирующих успех способов защитить авторское право и препятствовать свободному распространению продукции. Как ни пугай народ, как ни договаривайся с провайдерами, какие только DRM не ставь — все равно даже неискушенный пользователь интернета сможет без труда найти в сети «защищенный» продукт.
image
Возможно, для правообладателей лучшим решением в этой непростой ситуации будет не поиск новых технических и юридических методов защиты своего драгоценного творчества, а сделать так, чтобы свободное распространение, из-за которого они сейчас теряют деньги, наоборот, создавало возможность зарабатывания денег. Другими словами, вспоминая знаменитое изречение Линкольна, лучший способ победить врага — это обратить его в друга.
Итак, в этом после я хотел перечислить, говоря формальным языком, все возможные альтернативные механизмы компенсации затрат на создание интеллектуальных продуктов, которые мне известны. В данном блоге уважаемые хабраюзеры множество раз обсуждали эту тему, но никто пока не брал на себя труд обобщить все доводы и факты. Я попробую взяться за это.
Читать дальше →

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

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



Читать дальше →

Дональд Кнут

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

Дональд Эрвин Кнут — американский учёный, почётный профессор Стэнфордского университета и нескольких других университетов в разных странах, преподаватель и идеолог программирования, автор 19 монографий (в том числе ряда классических книг по программированию) и более 160 статей, разработчик нескольких известных программных технологий. Автор всемирно известной серии книг, посвящённой основным алгоритмам и методам вычислительной математики, а также создатель настольных издательских систем TEX и METAFONT, предназначенных для набора и вёрстки книг, посвящённых технической тематике (в первую очередь — физико-математических).
Читать дальше →

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

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

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


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

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

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

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



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

Итак, если кратко, то владелец «такого ноута» при использовании изложенного алгоритма будет помнить несколько паролей, каждый из которых является ключом к своему «сейфу» (контейнеру файлов). Владелец определяет то, как распределить информацию среди контейнеров. Соответственно, он может создать несколько подставных контейнеров с заведомо ложной информацией. Итогом проиллюстрированных угроз может стать выдача пароля от одного из таких «сейфов». В случае, если злоумышленники хорошо знакомы с излагаемым алгоритмом, можно, например, выдать еще 1 или 2, и/или сказать, что больше контейнеров в этом архиве нет, а все остальное — случайная информация.
Подробное описание предлагаемого алгоритма

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

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

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

image
Читать дальше →

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

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

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

               
Читать дальше →

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

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

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


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

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

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


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →

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

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

Теория


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


Читать дальше →

Простое написание тестов — это не TDD!

Время на прочтение4 мин
Количество просмотров61K
Эта статья представляет собой хороший теоретический материал о TDD для тех, кто об этом ещё ничего не знает.


Читать дальше →

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

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

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

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

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

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

image

Но игроки будут покупать этот ленивое чудовище из-за того, что они помнят название. И до тех пор, пока дерьмо продолжает продаваться, у издателей и не будет причин менять свое поведение.
Читать дальше →

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

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


Читать дальше →

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

Время на прочтение3 мин
Количество просмотров16K
А ты оценил свой проект?
Довольно большое количество литературы посвящено такому вопросу как оценка программного обеспечения (по стоимости и/или времени разработки). Понятно, что дисциплина эта новая (по сравнению, к примеру, с металлургией). И понятно, что ошибки тут бывают довольно часто. В этом посте я приведу несколько историй из жизни, которые невозможно было учесть при составлении оценки и которые повлияли на увеличение сроков разработки.
Читать дальше →
1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность