Читать дальше →
Сергей @jauseg
User
Полезные книги для программиста в геймдеве
2 min
102KПривет, Хабр!
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.
Существует мнение, что про геймдев внятной литературы почти нет, все знания надо получать практическим путем. С моей точки зрения, в этом мнении есть зерно истины, тем не менее, я не могу полностью с ним согласиться.
Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.
Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.
А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.
Существует мнение, что про геймдев внятной литературы почти нет, все знания надо получать практическим путем. С моей точки зрения, в этом мнении есть зерно истины, тем не менее, я не могу полностью с ним согласиться.
Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.
Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.
А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.
+57
Две красивые задачи по алгоритмам
4 min
69KTutorial
На этой неделе я начал читать бакалаврам Академического университета базовый курс по алгоритмам. Начинал я совсем с основ, и чтобы тем, кто с базовыми алгоритмами уже знаком, было чем заняться, я в начале пары сформулировал две, наверное, самые свои любимые задачки по алгоритмам. Давайте и с вами ими поделюсь. Решение одной из них даже под катом подробно расскажу. Но не отказывайте себе в удовольствии и не заглядывайте сразу под кат, а попытайтесь решить задачи самостоятельно. Обещаю, что у обеих задач есть достаточно простые решения, не подразумевающие никаких специальных знаний по алгоритмам. Это, конечно, не означает, что эти решения просто найти, но после пары один из студентов подошёл и рассказал правильное решение первой задачи. =) Если же вам интересно посмотреть на начало курса или порешать больше разных задач — приходите к нам на (бесплатный) онлайн-курс, который начнётся 15 сентября.
Сразу поясню. В условии не говорится, что каждое число от 1 до n встречается в массиве, поэтому повторяющихся элементов там может быть сколько угодно (если бы все числа входили по разу, а одно — дважды, то задача была бы гораздо проще). Ограничение на использование дополнительной памяти означает, что нельзя заводить дополнительный массив линейной длины, но можно заводить переменные.
Локальным минимумом матрицы называется элемент, который меньше всех своих четырёх соседей (или трёх, если этот элемент лежит на границе; или двух, если это угловой элемент). Обратите внимание, что от нас требуется линейное по n время, хотя в матрице квадратичное по n число элементов. Поэтому мы предполагаем, что матрица уже считана в память. И нам нужно найти в ней локальный минимум, обратившись лишь к линейному количеству её ячеек.
Под катом — решение первой задачи. Ещё раз призываю вас заглядывать под кат только после того, как порешаете задачу. По второй задаче могу какую-нибудь подсказку сказать.
Задача 1. Дан массив A длины (n+1), содержащий натуральные числа от 1 до n. Найти любой повторяющийся элемент за время O(n), не изменяя массив и не используя дополнительной памяти.
Сразу поясню. В условии не говорится, что каждое число от 1 до n встречается в массиве, поэтому повторяющихся элементов там может быть сколько угодно (если бы все числа входили по разу, а одно — дважды, то задача была бы гораздо проще). Ограничение на использование дополнительной памяти означает, что нельзя заводить дополнительный массив линейной длины, но можно заводить переменные.
Задача 2. Дана матрица nxn, содержащая попарно различные натуральные числа. Требуется найти в ней локальный минимум за время O(n).
Локальным минимумом матрицы называется элемент, который меньше всех своих четырёх соседей (или трёх, если этот элемент лежит на границе; или двух, если это угловой элемент). Обратите внимание, что от нас требуется линейное по n время, хотя в матрице квадратичное по n число элементов. Поэтому мы предполагаем, что матрица уже считана в память. И нам нужно найти в ней локальный минимум, обратившись лишь к линейному количеству её ячеек.
Под катом — решение первой задачи. Ещё раз призываю вас заглядывать под кат только после того, как порешаете задачу. По второй задаче могу какую-нибудь подсказку сказать.
+50
Откровенные фото Дженнифер Лоуренс и еще десятков знаменитостей утекли через iCloud
2 min
931K
Пока речь не идет о какой-то глобальной уязвимости в сервисе, возможно, девушки стали жертвами целевых атак и каждый аккаунт был скомпрометирован отдельно, а информация накапливалась в течение продолжительного времени.
Пресс-секретарь Дженнифер Лоуренс сделал заявление, подтверждающее, что фотографии являются подлинными:

+160
Видеопост: сверхзвуковой теннисный шарик, автомат Калашникова и колибри
3 min
36KВсех с пятницей! У нас накопилась вторая подборка различных удивительных видеороликов. Если пропустили первую, то рекомендуем ознакомиться. Сегодня у нас, в основном, подобрались видео о тех или иных проявлениях физических сил и свойств. И, конечно, наука и техника тоже не остались обделёнными.
Не знаем, как вы, а мы обалдели дважды. Первый раз, когда шарик (шарик для пинг-понга!) пробил ракетку, второй раз — когда он её вообще сломал к чёртовой матери. И это несмотря на ничтожную массу.
Высокоскоростная съёмка столкновения шарика и ракетки для настольного тенниса. Шарик имеет сверхзвуковую скорость
Не знаем, как вы, а мы обалдели дважды. Первый раз, когда шарик (шарик для пинг-понга!) пробил ракетку, второй раз — когда он её вообще сломал к чёртовой матери. И это несмотря на ничтожную массу.
+14
Лабораторные по многопоточности в Java: Parallel Copy
4 min
26KTutorial
Хорошие лабораторные по многопоточности (простые, понятные, нетривиальные и полезные в народном хозяйстве) — большая редкость. Предлагаю Вам одно условие и четыре лабораторные работы по элементарной многопоточности на Java.
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Это реализация однопоточного побайтового копировальщика из InputStream в OutputStream. Копирование происходит в потоке вызвавшем метод copy(...)
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Условия
Это реализация однопоточного побайтового копировальщика из InputStream в OutputStream. Копирование происходит в потоке вызвавшем метод copy(...)
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyUtil {
public static void copy(InputStream src, OutputStream dst)throws IOException{
try (InputStream src0 = src; OutputStream dst0 = dst) {
int b;
while ((b = src.read()) != -1) {
dst.write(b);
}
}
}
}
+4
Реализация облачного бэкапа данных на основе Android Backup Service
3 min
17KВ данной статье хочется затронуть такую важную тему для Android разработчика, как облачный бэкап данных на примере использования Android Backup Service. Данный сервис позволяет бесплатно хранить данные приложения на удалённом облачном хранилище. Согласно документации, он позволяет восстанавливать данные при переустановке приложения, обновлении девайса и при заводском сбросе настроек. Всё, что требуется от пользователя, это то, чтобы у него стояли галочки в «Резервирование данных» и «Автовосстановление» в Настройки/Восстановление и сброс.
+12
Защита подъезда методом организации разумного видеонаблюдения без консьержа
13 min
261K
Вот только двери легко открываются при малейшей ошибке их производства, многие домофоны подвержены ключам-«вездеходам», консьержки часто спят и ничего не делают, а видеонаблюдение за которым никто не наблюдает превращается в бесполезную трату денег. В результате, почти все попытки улучшить общественную ситуацию зарезаются соседями методом слонёнка: «а нафига они нам нужны».
Однако, если включить мозги и подумать, на самом деле можно весьма небольшими вложениями получить очень эффективный результат.
+290
Революция дата-байндинга с Object.Observe()
17 min
38KTranslation
Введение
Грядет революция. Появилось новое дополнение к JavaScript, которое изменит всё, что вы когда-либо знали о дата-байндинге. Помимо этого, изменится и подход ваших MVC библиотек к наблюдениям за редактированием и обновлением моделей. Вы готовы?
Хорошо, хорошо. Не будем тянуть. Я рад вам представить Object.observe(), который появился в бета версии Chrome 36. [ТОЛПА ЛИКУЕТ]
Object.observe() является частью следующего ECMAScript стандарта. Он позволяет асинхронно отслеживать изменения JavaScript объектов… без использования каких-либо сторонних библиотек, он позволяет наблюдателю отслеживать изменения состояния объекта во времени.
+49
Отборочный раунд Russian Code Cup 2014: итоги и разбор задач
8 min
8K
В прошедшее воскресенье состоялся отборочный раунд Russian Code Cup 2014. В нем участвовало 802 программиста, показавшие лучшие результаты в четырех квалификациях. В этом этапе участникам предстояло за 3 часа решить шесть задач, что на один час и на одну задачу больше, чем в квалификационных раундах. Да и задачи были существенно сложнее, чем предыдущие. За время соревнования из 802-х только 444 участника смогли решить хотя бы одну задачу. Всего было отправлено 3271 решения, из них правильных 1402.
+21
Steam In-Home Streaming — или уберите свой игровой компьютер на балкон
5 min
130K21 мая, Valve объявили что Steam In-Home Streaming (далее — стриминг) выходит из статуса закрытого бета-тестирования и готов к использованию.
Я очень ждал релиза данной технологии так как она позволяет реализовать давнюю мечту — убрать шумящий игровой компьютер подальше от ушей. Но участвовать в бета-тесте было лень, так что я ограничивался просмотром видеообзоров с нелестными отзывами.
До этого я, ради интереса, пробовал играть с помощью разных программ, но максимум, на что они годились — неспешные квесты, так как качество динамичного изображения, лаг, да и вообще поддержка устройств ввода были никудышными. Была надежда что Microsoft RemoteFX позволит использовать видеокарту даже нескольким людям (для multiseat) но у него с поддержкой игр все плохо, к тому же проблемы с мышью (которые, правда, решаются пробросом USB).
Так что так или иначе, рабочих решений для удаленной игры в динамичные игры я так и не нашел и вся надежда была на Steam.
Я очень ждал релиза данной технологии так как она позволяет реализовать давнюю мечту — убрать шумящий игровой компьютер подальше от ушей. Но участвовать в бета-тесте было лень, так что я ограничивался просмотром видеообзоров с нелестными отзывами.
До этого я, ради интереса, пробовал играть с помощью разных программ, но максимум, на что они годились — неспешные квесты, так как качество динамичного изображения, лаг, да и вообще поддержка устройств ввода были никудышными. Была надежда что Microsoft RemoteFX позволит использовать видеокарту даже нескольким людям (для multiseat) но у него с поддержкой игр все плохо, к тому же проблемы с мышью (которые, правда, решаются пробросом USB).
Так что так или иначе, рабочих решений для удаленной игры в динамичные игры я так и не нашел и вся надежда была на Steam.
+58
Семь самых интересных задач RCC за все годы по мнению Андрея Станкевича
14 min
12KВ преддверии первого квалификационного раунда Russian Code Cup, который состоится 19 апреля, мы решили рассказать вам о семи самых интересных задач RCC за всю историю чемпионата по мнению Андрея Станкевича — доцента кафедры компьютерных технологий ИТМО, лауреата Премии Президента Российской Федерации в области образования, лауреата премии ACM-ICPC Founder’s Award, лауреата специальной премии корпорации IBM за успехи в тренерской работе.
Напоминаем, для того чтобы принять участие в Russian Code Cup, нужно зарегистрироваться на сайте http://russiancodecup.ru/ (регистрация будет открыта до начала третьего квалификационного раунда).

Напоминаем, для того чтобы принять участие в Russian Code Cup, нужно зарегистрироваться на сайте http://russiancodecup.ru/ (регистрация будет открыта до начала третьего квалификационного раунда).

+45
Организация многозадачности в ядре ОС
22 min
81K
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.
+92
8 ловушек программирования
13 min
224K
Эта статья содержит те ловушки программирования, в которые я попадал сам, продолжаю попадать и возможно никогда не прекращу, а также те, в которых я находил своих товарищей.
Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
+236
Terms of Service, Privacy Policy и License Agreement: ликбез для мобильного инди-разработчика
13 min
22KМы познакомились с Владиславом Архиповым во время питерской конференции WNCONF, где он выступал с докладом. В его выступлении особое внимание уделялось важной для нас теме трактовки gambling для social casino. В ходе разговора, в котором участвовали и другие коллеги, выяснилось, что юридическим моментам в своей работе инди-девелоперы уделяют очень мало внимания, создавая необходимые документы по остаточному принципу. Мы решили восполнить этот пробел и провести вместе с практикующим юристом небольшой “ликбез”.
+20
LPC1102 и тёплый ламповый индикатор
6 min
75K
Написать этот текст меня заставила статья – «Freescale уменьшила размеры самого маленького в мире микроконтроллера на архитектуре ARM». За три дня до публикации этой статьи я закончил свой маленький проект, в котором был использован контроллер NXP LPC1102, — это прямой конкурент описанного в статье Freescale KL02 и возможно нового KL03. Далее будет сравнение двух микроконтроллеров от NXP (Филипс) и Freescale (Моторола), и мой проект на LPC1102.
+89
Интеграция Android Studio, Gradle и NDK
5 min
47KTranslation
В свете недавних изменений (начиная с релиза 0.7.3 от 27 декабря 2013) новая система сборки под Android становится очень интересной в том числе и для тех, кто использует NDK. Теперь стало действительно просто интегрировать нативные библиотеки в вашу сборку и генерировать APK для различных архитектур, корректно обращаясь с кодами версий.
+27
События C# по-человечески
6 min
500KTutorial

Невозможно, просто взять и вникнуть в этот глубокий смысл, изучая События (event) в просторах базового и, на первый взгляд, бесконечного C#.
Когда я изучал События (не в рамках .NET!), потратил много сил, чтобы, наконец-то, разобраться, как они устроены и должны конструироваться. Поэтому, я решил опубликовать свою методику понимания структуры пользовательского события, коим представляется ключевое слово event в С#.
Не буду цитировать и без того замученную MSDN, а постараюсь объяснить понятно и доступно.
+25
Box2d: анатомия коллизий
10 min
38KTutorial
Translation
Что такое коллизии?
В Box2D принято считать, что друг с другом сталкиваются тела, однако на самом деле при расчете коллизий используются фикстуры (fixtures, переводы слова существуют, но я не уверен, есть ли среди них устоявшийся). Объекты могут сталкиваться разными способами, поэтому библиотека предоставляет большое количество уточняющей информации, которая может быть использована в игровой логике. Например, вы можете захотеть узнать следующее:
- Когда столкновение начинается и заканчивается
- Точку соприкосновения фикстур
- Вектор нормали к линии контакта фикстур
- Какая энергия была приложена и результат коллизии
Обычно столкновение происходит очень быстро, однако в этой статье мы попытаемся взять одну конкретную коллизию и замедлить ее, чтобы успеть рассмотреть детали происходящего и информацию, которую можно извлечь из события.
+48
The Human Brain Project: откуда мы знаем, как устроен мозг?
6 min
55K
На Хабрахабре в самом начале 2013 года после объявления о старте европейского мега-проекта по изучению человеческого мозга с бюджетом более миллиарда евро, рассчитанного на 10 лет, была опубликована соответствующая заметка. В конце же минувшего года проект был официально запущен, и выделены первые средства, но до сих пор не было написано ни единого слова о том, какой научный базис лежит в основе предстоящего титанического труда, сравнимого по значимости и масштабу с расшифровкой генома человека и пилотируемой миссией на Марс.
В конце поста Вы сможете так же задать вопросы человеку, непосредственно работающему в команде The Blue Brain Project, ответы на которые выйдут отдельным постом.
+78
Information
- Rating
- Does not participate
- Location
- Тула, Тульская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Software Developer, Mobile Application Developer