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

Мобильный разработчик

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

LeakCanary — помощник в поиске утечек памяти

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

Никому не нравятся креши с OutOfMemoryError


Работая над Square Register, мы рисуем подпись клиента используя битмап-кеш. Поскольку этот битмап размером с экран устройства, у нас было очень много OutOfMemory крешей во время создания его.

image

Мы пробовали несколько подходов ни один из которых не решил проблему:
  • Использовали Bitmap.Config.ALPHA_8
  • Ловили OutOfMemoryError, вызывали сборку мусора и пробовали снова (подглядели в GCUtils),
  • Мы не рассматривали вариант с размещением битмапов вне кучи Java. К счастью Fresco еще не существовало,


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии7

Как я в облака ходил

Время на прочтение4 мин
Количество просмотров31K
Понадобилось не так давно в целях развертывания сервиса для тестирования получить в свое распоряжение виртуальную машину в облаке. Желательно бесплатно. И надолго.

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

В статье речь пойдет о том, как получить в свое распоряжение виртуальную машину (или несколько) от таких провайдеров как Google, Microsoft, HP и в перспективе другие. Будет также небольшое сравнение.
Читать дальше →
Всего голосов 15: ↑7 и ↓8-1
Комментарии10

Выбор облачного хостинга: с чего начинать?

Время на прочтение4 мин
Количество просмотров8.9K
Уважаемые Хабражители, после экспериментов с самарским коворкингом и другими проектами, мы наконец решили начать писать что-нибудь для Хабра по основному виду нашей деятельности, то есть хостингу, серверам и связанным с этим технологиям. Для начала хотелось бы написать о популярных ныне среди разработчиков облачных ресурсах и сравнить основных игроков на этом рынке.

Вступление


Слово “облачный” хорошо известно всем владельцам сайтов. Облачные технологи предоставляются как сервис — есть доступ к ресурсам (оперативной памяти, процессору, устройствам хранения информации и т. д.), без указания, где конкретно в какой момент ресурсы эти ресурсы находятся.



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

В случае, если есть необходимость выбора облачного провайдера, ниже предлагается список, с которого можно начать знакомство. Все они годятся в т.ч. для хостинга сайтов.
Читать дальше →
Всего голосов 17: ↑9 и ↓8+1
Комментарии5

Лекции Техносферы. 1 семестр. Алгоритмы интеллектуальной обработки больших объемов данных

Время на прочтение3 мин
Количество просмотров48K
Продолжаем публиковать материалы наших образовательных проектов. В этот раз предлагаем ознакомиться с лекциями Техносферы по курсу «Алгоритмы интеллектуальной обработки больших объемов данных». Цель курса — изучение студентами как классических, так и современных подходов к решению задач Data Mining, основанных на алгоритмах машинного обучения. Преподаватели курса: Николай Анохин (@anokhinn), Владимир Гулин (@vgulin) и Павел Нестеров (@mephistopheies).



Объемы данных, ежедневно генерируемые сервисами крупной интернет-компании, поистине огромны. Цель динамично развивающейся в последние годы дисциплины Data Mining состоит в разработке подходов, позволяющих эффективно обрабатывать такие данные для извлечения полезной для бизнеса информации. Эта информация может быть использована при создании рекомендательных и поисковых систем, оптимизации рекламных сервисов или при принятии ключевых бизнес-решений.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии15

Сравнение библиотек глубокого обучения на примере задачи классификации рукописных цифр

Время на прочтение21 мин
Количество просмотров53K
Кручинин Дмитрий, Долотов Евгений, Кустикова Валентина, Дружков Павел, Корняков Кирилл

Введение


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

Глубокое обучение (deep learning) рассматривает методы моделирования высокоуровневых абстракций в данных с помощью множества последовательных нелинейных трансформаций, которые, как правило, представляются в виде искусственных нейронных сетей. На сегодняшний день нейросети успешно используются для решения таких задач, как прогнозирование, распознавание образов, сжатие данных и ряда других.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии20

Как продвигать мобильные приложения ДО релиза. Часть 1

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

Глава 1. Вступление


Благодаря моей истории «Как я создавал мобильный файтинг», я приобрел стойкую зависимость: ежедневно, разомкнув глаза, беру в руки телефон и первым делом открываю заветную иконку хабры.

Все чаще наблюдаю, как некоторые авторы под видом полезного материала стараются пропихнуть свой продукт или поднять денег с читателей. Если я могу изменить сложившуюся тенденцию, то почему бы не попробовать?

Хочется процитировать: “Когда человек занимается альтруистической деятельностью, отдача приходит в качестве сильнейшей эмоции ощущения смысла”. Меня вдохновляет и заряжает энергией размещение публикаций. Это дает мне сил на достижения другого порядка. Поэтому я стараюсь генерировать контент, который каждому читателю может дать исключительную пользу.
Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии16

4 преимущества Unity3D, а также полезный инструмент для ускорения процесса разработки приложений

Время на прочтение5 мин
Количество просмотров31K
Мы продолжаем серию интервью с нашими специалистами. В этот раз на вопросы отвечал Андрей Рылач – Senior Unity3D-разработчик XIMAD, Inc. Андрей рассказал о преимуществах Unity и раскрыл способ ускорения процесса разработки мобильных приложений.

Читать дальше →
Всего голосов 13: ↑7 и ↓6+1
Комментарии26

Мотосигнализация на базе Arduino UNO c акселерометром MMA7361

Время на прочтение2 мин
Количество просмотров38K
Привет всем хабраюзерам. Представляю вашему вниманию мой первый проект на Arduino под названием «Мотосигнализация на базе Arduino UNO в паре c акселерометром MMA7361».

Принцип работы таков: Arduino опрашивает акселерометр, считывает данные по осям X, Y, Z и если есть отклонения от значений, которые были при включении сигнализации больше допустимой величины — включается сирена. Т.е. никаких данных вносить не нужно, не важно, под каким углом вы оставили свой мотоцикл, хоть на бок его положили — после включения сигнализации у осей X, Y, Z появляются текущие координаты и если в момент опроса текущие координаты хотя бы по одной оси отличаются от предыдущих на величину больше установленной нами (для этого используется потенциометр) — срабатывает сигнализация. Другими словами, если ваш мотоцикл трогают, наклоняют, пытаются перемещать, в общем, создают движение — включается сирена.

image image
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии36

Создание игры на ваших глазах — часть 2: Шейдеры для стилизации картинки под ЭЛТ/LCD

Время на прочтение6 мин
Количество просмотров76K
Поговорим на этот раз о технологии. В этой статье я расскажу и покажу, как в Unity создать шейдер для стилизации графики под старые ЭЛТ. Такой шейдер подойдет для пиксель-арта и для стилизации картинки под древнюю технику. Злоупотреблять им не стоит, но иногда использовать к месту — можно. (Специально уточню — я не предлагаю использовать такой эффект постоянно. Но, например, в заставках — он может прийтись к месту).



И сразу оговорюсь — я не владею глубинным пониманием шейдеров, а от читателя жду и того меньшего. Так что буду писать из расчета, что вы про шейдеры не знаете ничего, или почти ничего. И да, я попытаюсь вам пояснить самые базы работы шейдеров, так что если вы ничего о них не знаете — welcome!

Читать дальше →
Всего голосов 112: ↑103 и ↓9+94
Комментарии32

Средства, которые позволили нам ускорить разработку игры

Время на прочтение7 мин
Количество просмотров35K
Вид на Котиков из редактора Unity

Раньше я работал над созданием мобильных игр как гейм-дизайнер или продюсер, но сам еще никогда профессионально не писал код. Несколько месяцев назад мне захотелось это исправить и сделать игру своими руками. Так, спустя два месяца работы, силами трех человек в App Store и Google Play появились «Котики». В своей истории я хочу поделиться приобретенным опытом и рассказать о средствах разработки, которые позволили нам быстро сделать эту игру.
Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии30

Практическое программирование искуственного интеллекта

Время на прочтение2 мин
Количество просмотров28K
Подъем, овощи!

Все, кто еще не, срочно идем и регистрируемся на курс CS188.1x — «Artificial Intelligence». Курс стартовал 6.2.2015 и уже доступны материалы второй недели (первая проходится за три часа — она вводная). Оправдание принимается только одно — «не понимаю по-английски». В этом случае идешь и начинаешь учить английский!
Читать дальше →
Всего голосов 46: ↑26 и ↓20+6
Комментарии19

Внедряем материальный дизайн

Время на прочтение7 мин
Количество просмотров52K
Настало время переходить на Lollipop, друзья. Как бы смешно это не звучало.

image

Буквально вчера мы в Surfingbird обновили дизайн приложения и сегодня, по свежим следам, хотелось бы поделиться впечатлениями от перехода на material design.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии33

Защита игр и мобильных приложений от взлома для чайников (Unity, C#, Mono)

Время на прочтение8 мин
Количество просмотров72K
Всем снова здравствуйте! Дошли руки написать крутую статью на весьма важную тему для разработчиков игр. Итак, поговорим о защите ваших драгоценных игр и приложений, которые вы пилите на Unity в надежде заработать на буханку хлеба, от взлома злобными школьниками. Почему школьниками? Потому что надежной на 100% защиты априори быть не может. И кто захочет, все равно взломает. Вопрос лишь в том, сколько времени и сил он на это потратит. И как любят шутить безопасники — терморектальный криптоанализ никто не отменял.

Итак, в статье я постараюсь максимально доступно рассказать о 3 аспектах (и конечно, предложу реализацию):
  • защита данных приложения (сейвов)
  • защита памяти приложения
  • защита внутриигровых покупок (Google Play)

image
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии34

Unreal Engine 4 для развития своих способностей

Время на прочтение6 мин
Количество просмотров169K
Доброго времени суток, Хабр!

В этой статье я бы хотел поговорить с вами о недавно вышедшем Unreal Engine 4, который на данный момент набирает все большую популярность среди разработчиков игр. И хотя статья о UE4, однако она совсем не про игростой, хоть и связана с ним.



Я бы хотел обратить ваше внимание на другую сторону Unreal Engine 4, которая будет несомненно полезна тем, кто собирается выбрать свой путь в жизни и обучаться разработке. Речь об образовательных способностях данного движка.

Саму статью я бы хотел разделить на две основные части: Программирование с логикой и Дизайн с творчеством. Но прежде скажу пару слов о себе, что бы вы понимали, почему именно этот движок и что меня натолкнуло на эту статью.
Итак, приступим.
Читать дальше →
Всего голосов 42: ↑35 и ↓7+28
Комментарии28

Процедурная генерация текстур планет на основе алгоритма Diamond-Square, часть 1

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

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

1) Этот генератор не претендует на реалистичность, и писал я его для того, чтобы сгенерировать уникальные текстуры для сотни маленьких шариков, которые занимают 10% экрана и к тому же прикрыты облаками.
2) Чисто технический момент: я пишу на C# под Unity3d, так что думать о том, как выводить в изображение с приемлимой скоростью вам придется самим, для каждого языка и платформы свои способы.

Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии21

Объемные планеты в 2D через шейдер

Время на прочтение7 мин
Количество просмотров58K
А помните, как вы просили меня про шейдеры написать? Помните? Нет? А вот я помню и даже написал. Милости просим, поговорим о прекрасном.

Сегодня я поведу речь о том, как я делал объемные вращающиеся планеты для нашей игры blast-off. Тоесть они, конечно, совершенно плоские, всего пара треугольников, но выглядят как объемные.



Заинтересовало? Прошу под кат. Картинок прилично.
Читать дальше →
Всего голосов 77: ↑75 и ↓2+73
Комментарии39

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2+194
Комментарии120

Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Более традиционный подход: Функции потерь

Время на прочтение4 мин
Количество просмотров14K
Мы публикуем перевод последней из существующих частей «книги». Обязательно будем следить за блогом автора и продолжим публикации этого материала, как только они появятся.

Содержание:
Глава 1: Схемы реальных значений
Часть 1:
   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:
         Стратегия №2: Числовой градиент

Часть 3:
         Стратегия №3: Аналитический градиент

Часть 4:
      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:
         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:
      Становимся мастером обратного распространения ошибки


Глава 2: Машинное обучение
Часть 7:
      Бинарная классификация

Часть 8:
      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:
      Обобщаем SVM до нейронной сети

Часть 10:
      Более традиционный подход: Функции потерь



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

По мере того, как я составляю эти математические формулы, я бы хотел начать относиться более внимательно к тому, как мы называем наши переменные и параметры. Я бы хотел, чтобы эти уравнения выглядели так же, как вы могли видеть их в книгах или других уроках, поэтому я начну использовать более стандартные наименования.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Играем с Евклидом

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


Отличное интерактивное пособие для школьников, ну а для окончивших школу технарей — возможность ненадолго вернуться в детство.

Помните эти задачи «при помощи циркуля и линейки постройте...»? Вот здесь можно поупражняться в таких построениях.

20 уровней построены по принципу «от простого к сложному». Предыдущие достижения (к примеру, умение строить равносторонний треугольник) на следующих уровнях доступны уже в виде инструментов.

Прошёл всё, правда на последнем уровне пришлось немного повозиться с касательными к окружностям.
Всего голосов 107: ↑99 и ↓8+91
Комментарии51

Разработка одной игры — полезный опыт, немного денег и куча ошибок, Ч1

Время на прочтение8 мин
Количество просмотров51K
Сегодня довольно много программистов думают о том, чтобы создать мобильное приложения, заработать свой первый миллион, сыскать славу успешного разработчика и продолжать работать над своими интересными и многообещающими проектами. Многие не только думают, но и принимают попытки, успешные и не очень. Так вот я не исключение и об одной такой попытке, приобретенном опыте и небольшом финансовом профите я и хочу рассказать.
Читать дальше →
Всего голосов 72: ↑64 и ↓8+56
Комментарии16

Информация

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