Хочу рассказать о своем первом опыте в геймдеве. Сразу стоит оговориться, что статья будет чисто технической, поскольку моей целью было всего лишь получение навыков разработки графических приложений, использующих Direct3D, без привлечения высокоуровневых средств разработки игр типа Unity. Соответственно, никаких разговоров о внедрении, монетизации и раскрутке игры также не будет. Статья ориентирована на новичков в программировании приложений Direct3D, а также просто на людей, интересующихся ключевыми механизмами работы подобных приложений. Также в конце привожу список литературы по геймдеву, тщательно отобранный мной из более чем ста книг по программированию игр и компьютерной графики.
Maxim Tkachenko @BenderRRread-only
User
Не используйте MediaPlayer и MediaMetadataRetriever в Android
2 min
24KКак показывает мой скромный опыт, родные MediaPlayer, MediaMetadataRetriever, а так же другие классы, которые так или иначе основываются на них (VideoView, ThumbnailUtils, к примеру), являются крайне ненадежными в использовании. Возможно, проблема в том, что они реализованы нативно, и меняются от версии к версии, но факт остается фактом — их поведение на разных устройствах предсказать невозможно, причем это даже не зависит от мощности железа.
+3
Пишем расширения c Roslyn к 2015 студии (часть 2)
6 min
7.1KTutorial
… Эта статья является продолжением первой части о написании расширений к студии с Roslyn.
Тут я буду описывать что делать, если мы хотим сгенерировать/поменять какой-нибудь код. Для генерации кода мы будем статические методы класса SyntaxFactory. Некоторые методы требуют указать ключевое слово/тип выражения/тип токена, для этого есть перечисление — SyntaxKind, который содержит все это вместе.
Хорошо, давайте для примера сгенерируем код, содержащий число 10. Это делается просто.
Я не шутил, когда говорил, что чтобы создать код проще всего распарсить строку. Благо, SyntaxFactory предоставляет кучу методов для этого (ParseSyntaxTree, ParseToken, ParseName, ParseTypeName, ParseExpression, ParseStatement, ParseCompilationUnit, Parse*List).
Но это не путь настоящего самурая.
Тут я буду описывать что делать, если мы хотим сгенерировать/поменять какой-нибудь код. Для генерации кода мы будем статические методы класса SyntaxFactory. Некоторые методы требуют указать ключевое слово/тип выражения/тип токена, для этого есть перечисление — SyntaxKind, который содержит все это вместе.
Хорошо, давайте для примера сгенерируем код, содержащий число 10. Это делается просто.
SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal(10))
Я не шутил, когда говорил, что чтобы создать код проще всего распарсить строку. Благо, SyntaxFactory предоставляет кучу методов для этого (ParseSyntaxTree, ParseToken, ParseName, ParseTypeName, ParseExpression, ParseStatement, ParseCompilationUnit, Parse*List).
Но это не путь настоящего самурая.
+27
Получение изображения нужного размера без OutOfMemoryError + автоповорот согласно EXIF orientation
10 min
22KTutorial
Recovery Mode
Многие уже наверняка сталкивались с проблемой OutOfMemoryError и находили достаточно толковый мануал Displaying Bitmaps Efficiently. Но если вы еще не успели изобрести свой велосипед на основе мануала, предлагаю свое готовое решение с объяснениями, которое умеет получать изображения:
- В формате Bitmap и byte[]
- Уменьшенное с сохранением пропорций
- Уменьшенное с вырезанием (crop) до заданного размера width x height
- Оптимизированное для 2g
- Всегда в правильной ориентации (учитывая EXIF orientation)
Пример использования
ImageManager im = new ImageManager(ctx, 100, 100);
Bitmap bm = im.setIsScale(true)
.setIsResize(true)
.setIsCrop(true)
.getFromFile(myUri.toString());
+8
Итоги года для Android-разработчиков
3 min
27KПодходит к концу 2014 год, и прежде чем отправиться на длительные новогодние праздники, наш Android-техлид Алексей Журавлев подвел итог уходящего года с точки зрения Android-разработки.

Android L
Самую ожидаемую версию операционной системы теперь можно установить на мобильное устройство.
Основные изменения:
Стоит отметить, что на сегодняшний день, пока только владельцы Nexus устройств имеют возможность получить обновление. Для большинства пользователей официальных прошивок пока нет.

Android L
Самую ожидаемую версию операционной системы теперь можно установить на мобильное устройство.
Основные изменения:
- ART вместо Dalvik: Google полностью отказался от Dalvik подхода c JIT компилятором в пользу компиляции приложений при установке, тем самым увеличив производительность приложений. Более подробно про ART тут.
Правда, как показывает практика, некоторые приложения с использованием Native библиотек перестали корректно работать. - Material Design: полностью обновленный подход к формированию дизайна.
- Battery Saver: теперь при слабом заряде батареи, устройство можно перевести в режим экономии. Достигается путем понижения частоты процессора.
- Notification: новый подход к системе нотификаций. Подробнее.
- Keyboard: новая клавиатура в стиле material design.
- Еще некоторые изменения.
Стоит отметить, что на сегодняшний день, пока только владельцы Nexus устройств имеют возможность получить обновление. Для большинства пользователей официальных прошивок пока нет.
+27
Urban Airship закрывает бесплатную лицензию
2 min
6.8KСовсем скоро — 31 декабря, Новый год. Но вместе с этим и закроектся бесплатная Developer Edition в системе рассылки Push-уведомлений Urban Airship. Компания предлагает либо купить платную подписку, либо уйти к другим push-провайдерам.
Давайте посмотрим, какие у нас есть варианты.

Давайте посмотрим, какие у нас есть варианты.

+1
Некоторые возможности использования Intent'ов
6 min
68K
Введение
Объекты типа Intent могут быть использованы для общения между отдельными частями Android приложения, либо между различными приложениями системы. Мощь механизма интентов заключается в том, что с его помощью можно обращаться к любому установленному в системе приложению. Это позволяет повторно использовать некоторые компоненты и значительно сократить время на разработку.
В этой статье я покажу некоторые возможности использования класса Intent для обращения к системным приложениям.
+70
.NET Server Core, кросс-платформенная разработка, Visual Studio 2015 и другие анонсы Microsoft Connect()
6 min
86K
Сегодня в Нью Йорке проходит конференция Microsoft Connect(), на которой анонсированы новые продукты и технологии. Выпущена предварительная версия Visual Studio 2015, специальная бесплатная редакция Visual Studio Community 2013, Visual Studio 2013 update 4, открывается исходный код .NET Server Core, выпущена предварительная версия .NET 2015, обновлены инструменты кросс-платформенной разработки на базе Apache Cordova, в Visual Studio появился эмулятор ОС Android. Это действительно новый этап в развитии инструментов разработки Microsoft, и мы рады рассказать о деталях.
+98
Введение в Size Classes в Xcode 6
6 min
62KПривет всем! Сегодня хотелось бы сделать небольшое введение в такую штуку, как Size Classes. Она появилась недавно вместе с Xcode 6, документации по ней от самой Apple совсем немного.
Итак, для чего же предназначена Size Classes? Все мы знаем, что на подходе уже iPhone 6 двумя (как минимум) разными размерами дисплея (4,7 и 5,5), после чего разработчикам еще больше придется заморачиваться с версткой UI для них + само собой расширения iPad«ов. В итоге количество всех поддерживаемых экранов будет около 7 (маленький привет Android). Герой сегодняшнего дня — Size Classes — как раз и предназначен для того, что бы помочь решить данную проблему.
Итак, для чего же предназначена Size Classes? Все мы знаем, что на подходе уже iPhone 6 двумя (как минимум) разными размерами дисплея (4,7 и 5,5), после чего разработчикам еще больше придется заморачиваться с версткой UI для них + само собой расширения iPad«ов. В итоге количество всех поддерживаемых экранов будет около 7 (маленький привет Android). Герой сегодняшнего дня — Size Classes — как раз и предназначен для того, что бы помочь решить данную проблему.
+17
Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»
3 min
67KTutorial

Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.
О чём?
В учебнике подробно рассматриваются, объясняются и анализируются наиболее часто используемые структуры данных и алгоритмы. Изложение идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом. В качестве языка программирования выбран Python, а для тех, кто с ним плохо знаком, в первой главе есть большой раздел с его концентрированным описанием.
Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.
Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».
Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
+48
Фантастические сериалы — обзор от фаната
8 min
82KМне наступили на больную мозоль, сделав некий обзорный пост по нескольким фантастическим сериалам.
А так как субботним вечером делать особенно нечего, давайте-ка я сделаю свой, более полный.
Да, будут спойлеры, имейте в виду.
Да, и очень много картинок! Трафик!
Начнём со Stargate
Целое семейство сериалов, начавшихся с одноимённого фильма.
Это во-первых, конечно,
Stargate SG-1
10/10

А так как субботним вечером делать особенно нечего, давайте-ка я сделаю свой, более полный.
Да, будут спойлеры, имейте в виду.
Да, и очень много картинок! Трафик!
Начнём со Stargate
Целое семейство сериалов, начавшихся с одноимённого фильма.
Это во-первых, конечно,
Stargate SG-1
10/10

+26
Вконтакте wall.post посредством C#
6 min
45KВ рамках одного нашего проекта в Brights появилась необходимость реализовать автоматическую публикацию обновлений на стену сообщества Вконтакте. Подобная задача, думаю, встречается довольно часто. Подкатом предлагаю готовый пример реализации на языке C#.
+3
Создание приложения для Windows Phone 7 от начала до конца. Часть 1
4 min
41KTranslation
Эта статья и прилагаемое к ней приложение-пример поможет вам начать создавать полноценные приложения для Windows Phone 7. Вы узнаете об общих вопросах разработки на примере создания простого приложения для отслеживания количества топлива, потребляемого вашим автомобилем. В этой статье описываются вещи, которые вы должны знать, прежде чем приступить к созданию приложений для Windows Phone.
Вы также узнаете, как выполнять следующие задачи (ниже указаны ссылки на другие части):
Вы также узнаете, как выполнять следующие задачи (ниже указаны ссылки на другие части):
- Следование рекомендациям по проектированию интерфейса
- Определение вашего приложения, начиная с идеи
- Создание нового проекта Windows Phone
- Создание страниц
- Навигация между страницами
- Разметка страницы
- Использование элементов управления для создания пользовательского интерфейса
- Добавление изображений и иконок
- Создание согласованного внешнего вида
- Отображение данных
- Создание классов данных
- Использование классов доступа к данным
- Сохранение и загрузка данных
- Восстановление приложения после дезактивации
- Валидация вводимых данных
- Доступ к фотографиям на Windows Phone
+28
DropBox теперь поддерживает скриншоты
1 min
52K
Необходимо обновить клиент до версии 2.4.0. для того, чтобы в настройках появилась опция скриншотов.
Теперь по нажатию printscreen, alt+printscreen, ctrl+alt+printscreen, ctrl+printscreen будет выполнен скриншот и сохранён в папку DropBox. Комбинации с ctrl позволят сразу скопировать в буфер ссылку на скриншот.
На Маке работает с маковскими хоткеями для скриншотов.
upd: Как подсказывает хабраюзер Firz, данная функция уже присутствует в версии 2.3.31
+51
Покупаем на taobao.com
6 min
81KЯ оставил в России много настольных игр, везти их с собой во Вьетнам смысла не видел. Надеялся, что можно будет что-то купить на месте. Облом-с, тут про настольные игры мало чего слышали, никаких магазинчиков специализированных нет. Выход был найден — рядом Китай, с огромным ассортиментом и относительно небольшими ценами. Сейчас я вам расскажу, на примере закупки настольных игр, как можно покупать что-то в Китае.
taobao.com — это китайский ebay, или что-то на него похожее. Большое количество разных магазинов, предоставляющих разного вида товары. Если я все правильно понял — сам taobao это как аггрегатор таких магазинов. Можно найти огромное количество разных товаров: игрушки, техника, одежда, и т.д. и т.п. Разброс цен большой, как всегда для Китая, от очень и очень низких, до обычных европейских. Качество соответственное.
taobao.com — это китайский ebay, или что-то на него похожее. Большое количество разных магазинов, предоставляющих разного вида товары. Если я все правильно понял — сам taobao это как аггрегатор таких магазинов. Можно найти огромное количество разных товаров: игрушки, техника, одежда, и т.д. и т.п. Разброс цен большой, как всегда для Китая, от очень и очень низких, до обычных европейских. Качество соответственное.
+25
Квантовая механика для всех, даром, и пусть никто не уйдёт обиженным: часть первая
10 min
223KЗдравствуйте! Я хотел бы представить вашему вниманию отличное введение в квантовую механику, написанное Элиезером Юдковским; быть может, он известен вам по своему сайту lesswrong.com, посвящённому рационализму, предрассудкам, когнитивным парадоксам и ещё многим интересным вещам.
+99
Pantech Burst — андроидфон по приятной цене
4 min
94K
Покупать китайского товарища совсем не хотелось, решил изучить рынки Европы и США на предмет такого устройства, т.к. часто «у них» можно найти выдающиеся аппараты практически за копейки. Два года назад хитом был Orange San Francisco (ZTE Blade) ценой в £99, но для сегодняшнего времени конечно он уже прилично устарел. Чем же его можно заменить?
Вашему вниманию хочу представить достойную замену на место старичка — Pantech Burst ценой примерно в $120!
+18
Правила, которым должен удовлетворять проект для публикации на Кикстартере
5 min
37KRecovery Mode
Рекомендации по созданию проекта
Итак у Вас в голове родился Гениальный проект, но нет средств для его финансирования. Где взять деньги на осуществление своей мечты? В последнее время всё большую популярность получает способ сбора средств за счёт “народного” финанасирования. Лидером в сборе средств посредством крауфандинга сегодня является конечно
Кикстартер — платформа для финансирования разнообразных креативных проектов, от традиционного искусства до сложных современных технологичных устройств. Однако далеко не все проекты допускаются к сбору средств на этой площадке, так что прежде чем начинать готовить свой проект для размещения уточните имеет ли она шансы на то, чтобы быть допущенным к участию в программе. Каким правилам должен удовлетворять сам проект, что запрещено, каким правил нужно придерживаться в процессе публикации и продвижения проекта? На все эти вопросы я постарался дать ответ в данной статье.

Итак у Вас в голове родился Гениальный проект, но нет средств для его финансирования. Где взять деньги на осуществление своей мечты? В последнее время всё большую популярность получает способ сбора средств за счёт “народного” финанасирования. Лидером в сборе средств посредством крауфандинга сегодня является конечно
Кикстартер — платформа для финансирования разнообразных креативных проектов, от традиционного искусства до сложных современных технологичных устройств. Однако далеко не все проекты допускаются к сбору средств на этой площадке, так что прежде чем начинать готовить свой проект для размещения уточните имеет ли она шансы на то, чтобы быть допущенным к участию в программе. Каким правилам должен удовлетворять сам проект, что запрещено, каким правил нужно придерживаться в процессе публикации и продвижения проекта? На все эти вопросы я постарался дать ответ в данной статье.

+3
Расширение возможностей экрана блокировки в Android 4.2.x
2 min
151KМногие владельцы планшетов линейки Nexus или других моделей под управлением Android 4.2.x, заметили что разработчики Google довольно мало внимания уделили экрану блокировки. В данном посте хочу рассказать про один очень полезный инструмент, который позволит использовать экран блокировки более эффективно. Речь пойдет о DashClock Widget (GooglePlay).

Кому интересно — прошу под кат.

Кому интересно — прошу под кат.
+43
Web-страницы внутри презентаций Microsoft PowerPoint
2 min
38K
Задача
Встроить web-страницу в слайд PowerPoint, чтобы докладчик мог, не прерывая презентацию, продемонстрировать сайт, показать видео, встроить PDF-документ или устроить интерактивное голосование среди слушателей.
+10
Information
- Rating
- Does not participate
- Location
- Днепр, Днепропетровская обл., Украина
- Date of birth
- Registered
- Activity