Search
Write a publication
Pull to refresh
0
0
Send message

Анализ памяти для Android приложений

Reading time5 min
Views42K
В Dalvik есть сборщик мусора, но это не значит, что можно игнорировать управление памятью. Даже наоборот — нужно быть особенно внимательным при использовании памяти, которая, как известно, на мобильных устройствах ограничена. В этой статье будут рассмотрены инструменты, которые значительно помогают следить за тем, как приложение использует память.
Читать дальше →

50 подкастов на тему технологий и управления проектами

Reading time3 min
Views28K


Мы подготовили адаптированную подборку из 50 подкастов (на русском и английском), призванных поспособствовать развитию вашего стартапа или карьеры. В нашем списке вы найдете передачи о продуктивной работе, наиболее частых ошибках начинающих предпринимателей, историях успеха и многом другом.
Читать дальше →

Говорящая панда или что можно сделать с FFmpeg и OpenCV на Android

Reading time46 min
Views33K
Эта публикация о том, как можно в Windows скомпилировать библиотеку для обработки видео и аудио FFmpeg под Android в Eclipse с помощью NDK. Вы узнаете, как связать FFmpeg с библиотекой для обработки изображений OpenCV и как это всё можно использовать в Java-коде Android приложения. Всё это будет рассказано в контексте процесса создания Android приложения, основной функционал которого как раз и завязан на использовании этих библиотек и их взаимодействии. Итак, заинтересованных прошу под кат.
Читать дальше →

Запуск GWT Super Dev Mode для удаленного сервера

Reading time5 min
Views16K
Наше JEE приложение сделало скачок версии GWT с 1.7 сразу до 2.6.1. Когда-то были небольшие танцы с бубном для того, чтобы в среде разработки IntelliJ Idea настроить возможность отладки клиентской части. Отладка заключается в возможности ставить точки останова (breakpoint-ы) в Java-коде, но попадать в них из браузерного JavaScript-а, сгенерированного GWT из Java-кода. После обновления версии GWT старая конфигурация запуска отладки работать перестала, и мне пришлось познакомиться с GWT Super Dev Mode (SDM). После этого «знакомства» я понял, что выше упомянутые «танцы» были на самом деле предельно простой и понятной настройкой, по крайней мере, в сравнении с SDM. Надеюсь, кому-то эта статья очень поможет сэкономить пару-тройку дней блужданий по форумам и избавит от нескольких новых седых волос. В статье я расскажу про опыт запуска режима SDM в следующем окружении: IntelliJ Idea 14, JBoss EAP 6, GWT 2.6.1 с применением в проекте GWT RPC, браузер Chrome. Несмотря на то, что при релизе Idea 14 сообщили о доработках касательно отладки в GWT, думаю, что для версии 13 всё нижеописанное также применимо. Используемый сервер приложений также вряд ли как-то влияет на настройку SDM. Насчет версий GWT: для 2.6.0 применимо почти один-в-один, то же касается и 2.7.0 (сам не проверял, вычитал в Сети по ходу проведения исследований).
Читать дальше →

Борьба с утечками памяти в Android. Часть 1

Reading time6 min
Views49K
Этой статьей мы открываем цикл статей на Хабре о нашей разработке под Android.
Согласно докладу компании Crittercism от 2012 года, OutOfMemoryError — вторая по распространенности причина «крашей» мобильных приложений.
Честно говоря, и в Badoo эта ошибка была в топе всех крашей (что неудивительно при том объеме фотографий, которые просматривают наши пользователи). Борьба с OutOfMemory — занятие кропотливое. Мы взяли в руки Allocation Tracker и начали играться с приложением. Наблюдая за данными зарезервированной памяти, мы выявили несколько сценариев, при которых выделение памяти росло с подозрительной стремительностью, забывая при этом уменьшаться. Вооружившись несколькими дампами памяти после этих сценариев, мы проанализировали их в MAT (http://www.eclipse.org/mat/).
Результат был занимательный и позволил нам в течение нескольких недель снизить количество крашей в разы. Что-то было специфично для нашего кода, но также выявились типичные проблемы, присущие большинству Android приложений.
Сегодня поговорим о конкретном случае утечки памяти. О нем многие знают, но часто закрывают на это глаза (а зря).
Читать дальше →

Почему вам НЕ стоит использовать AngularJs

Reading time12 min
Views248K
Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
Читать дальше →

Разработка приложений на языке Scala

Reading time4 min
Views19K
В этом небольшом посте я постараюсь рассказать с чего начать разрабатывать приложения для Android на языке Scala с помощью SBT и IntelliJ Idea, а так же плюсы и минусы этого подхода. Все будет довольно просто, стоит только запастись терпением. Весь процесс описывается для unix like систем, на Windows не проверялось, но если очень хочется, то можно попробовать провернуть то же самое через cygwin. Итак…

Существующие решения


При беглом гуглении можно наткнуться на эти три (раз, два, три) замечательные статьи, которые в красках поэтапно описывают долгий и тернистый путь к просветлению, а именно как поднять SBT проект для Android в Idea. Этот метод устарел, потому как в статье описывается процесс для SBT 0.7.4, а так же многие ненужные шаги, которые только отталкивают от дальнейшего изучения материала. Не смотря на это, я рекомендую их к прочтению, чтобы иметь базовое представление с чем вы имеете дело.

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

Инструменты


  • ItelliJ Idea community edition с поддержкой Android — самая дружественная к Scala IDE на сегодняшний день (есть еще ensime, но это из другой оперы).
  • JDK 6 для linux/mac os. Путь до JDK необходимо прописать в глобальной переменной JAVA_HOME (можно в ~/.bashrc).
  • Android SDK для linux/mac os. Путь до SDK должен быть также задан через глобальную переменную ANDROID_SDK_HOME, но, внимание, для видимости всей системой, поэтому прописывать переменную нужно строго в /etc/environment. Может потребоваться перезагрузка.
  • Simple Build Tool (SBT) 0.10.1 — инструмент для генерации и сборки Scala проектов. Недавно проект сменил имя на XSBT и переехал на github, что весьма удобно.
  • Android плагин для SBT — для ознакомления, потому как данный плагин ставится автоматически.
  • giter8 (g8) — утилита для генерации проектов из шаблонов, опубликованных на github.
  • Мой шаблон g8 для генерации Idea проектов.
  • Настроенный Android Emulator или напрямую подключенный андроид смартфон с включенной USB отладкой.


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

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

Reading time7 min
Views52K
Настало время переходить на Lollipop, друзья. Как бы смешно это не звучало.

image

Буквально вчера мы в Surfingbird обновили дизайн приложения и сегодня, по свежим следам, хотелось бы поделиться впечатлениями от перехода на material design.
Читать дальше →

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Views89K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

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

AngularJS 1.x – перевод курса от CodeSchool

Reading time12 min
Views75K
Данная публикация является переводом оригинального курса CoodSchool с небольшими дополнениями, которые показались мне уместными в данном контексте. Публикация рассчитана на тех, кто только начинает знакомится с Angular.

Введение


AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
Читать дальше →

Pull request'ы на GitHub или Как мне внести изменения в чужой проект

Reading time6 min
Views523K
По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
Читать дальше, но теперь уже обо всём по порядку

Ingress. Мир не таков, каким кажется

Reading time1 min
Views271K


Знакомьтесь, Ingress — новая игра от Google. Место действия — альтернативная реальность. Недавний проект Niantic, кстати, был вирусной рекламой сего действа.

Вам предстоит занять одну из сторон — сражаться за власть («Просвещенные»), или за повстанцев («Сопротивление»).

Установленное на андроид-девайс приложение будет проводить вас по местам скопления «Экзотической материи» (реальные географические координаты, которые надо будет посетить).


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

Советы изучающим иностранный язык самостоятельно

Reading time2 min
Views12K
Эти советы основаны исключительно на моем опыте, прежде всего, изучения грамматики и запоминая слов.

  1. Учитывайте отсутствие внешней мотивации. Это другой опыт, отличающийся от того, когда с вас кто-то спрашивает. Не знаю можно ли к этому как-то подготовиться, в любом случае, не сбрасывайте этот фактор со счетов.
  2. Занимайтесь по системе, ничего не придумывайте сами. Я учу слова с помощью карточек. Раньше я просто выписывал незнакомые слова из словаря, соответственно к одному слову было несколько значений, слова были из разных тематик. Затем я стал запоминать слова по методике Павла Литвинова «3000 английских слов. Техника запоминания» (книга не дорогая, 70 рублей). Там нет ничего сложного, слова сгруппированы по тематикам, к каждому слову одно значение, однако производительность выросла в 2 раза. Раньше я мог запомнить 20-25 слов в день, сейчас более 50.

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

Английский за четыре недели

Reading time3 min
Views9.6K
В конце девяностых я работал в Промстройбанке, который под откос финансового кризиса пошел одним из первых. Понятно, что без работы было совсем грустно, особенно после кризиса неслабого, и поэтому когда мне предложили прийти на собеседование в контору, где нужен был английский, я согласился без раздумий, хотя знал на английском ровно три слова — факю и йелоу субмарин (спасибо битлам). Другими словами — я вообще, никак, не мог говорить по–английски. Совсем. Понимать — тем более. Но согласился, поблагодарил за приглашение и смело пошёл.
Читать дальше →

Меняем меню: расширения волнового клиента

Reading time4 min
Views491



Как известно, в Google Wave можно использовать два типа расширений (extensions) — гаджеты и роботы. Напомню: 
Гаджет — небольшая программка, которая выполняется на стороне клиента, принадлежит определенной волне и позволяет ее участникам взаимодействовать между собой, поскольку они все могут менять статус гаджета и одновременно видят эти изменения. Наглядный пример — гаджет голосования. Вы проголосовали «за» или «против», гаджет учел ваш голос и изменил таблицу результатов. Все участники волны, в которую внедрен данный гаджет, увидели это изменение.
Робот — исполняется на стороне сервера. Можно даже сказать «на стороне серверов», поскольку сейчас роботы размещаются «в облаках», на серверах Google AppEngine. Робот — равноправный участник волны. Так же, как люди, он имеет доступ к содержанию волны, может его изменять, добавлять или удалять участников данной волны, а также создавать новые «блипы» (реплики в обсуждении) и новые волны.

Возникает вопрос, а как добавлять роботов или гаджеты в волну? Поскольку роботы — это полноценные участники волны, то их можно добавлять точно так же, как и людей. Заносите адрес робота в свою адресную книгу, а потом оттуда по мере необходимости подключаете робота к нужной волне. Гаджет вставляется с помощью специального пункта в меню «Debug» (мы сейчас говорим о волновом клиенте, который используется в «песочнице» Google Wave Sandbox — wavesandbox.com).

Однако со временем понимаешь, что этот процесс нужно сделать более гибким. Часто приходится подключать сразу несколько роботов к волне. Или нужно вставить какой-то собственный гаджет, которого нет в общедоступной библиотеке (или, как правильно, «гаджетнице»? :). Для решения этих вопросов мы имеем в данное время простой механизм расширения интерфейса волнового клиента. С его помощью мы можем добавлять дополнительные кнопки в меню редактирования блипа и в меню создания новой волны. Вот как это выглядит.
Читать дальше →

Google Gears — ускоряем ваш сайт

Reading time8 min
Views1.9K
Google Gearsоткрытое программное обеспечение от Google (бета, лицензия BSD), позволяющее использование веб-приложений с помощью браузеров Mozilla Firefox и Internet Explorer под GNU/Linux, Mac OS и Microsoft Windows в режиме оффлайн.

Специальный плагин заставляет браузер работать с локальным кешем страниц (на основе SQLite), периодически синхронизируя кеш с онлайн источником.

Google gears представляет собой AJAX-API и работает только с веб-сайтами, специально поддерживающими этот сервис. (Источник)

Так вот, почитав немного документацию, я решил интегрировать такую вещь в один сайт. Итак начнем.

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

История одного Google Chrome расширения

Reading time18 min
Views68K
В один прекрасный день, за пару часов до конца работы, мне приходит задача: «Нужно написать приложение для браузера, которое должно по клику пользователя отправлять данные со страницы на сайт клиента. Что за приложение и какой браузер — полностью на ваш выбор...».

Немного поразмыслив я пришел к варианту google chrome extension:

  • Crome использует Blink движок (до апреля 2013 года использовался WebKit), Blink является форком WebKit (а это Safari), так же не забываем новую Opera'у (хотя я все еще использую старую с bookmarks'ами). Таким образом, написав расширения для chrome, мы с минимальными переделками (а то и без них) сможем его портировать на еще 2 браузера
  • Нет опыта работы с API Google Chrome
  • Google все-таки компания добра :)


Когда мысли немного улеглись, первое что я сделал — это ввел в поиске харба "расширение Google Chrome". Увидев обширный вариант статей по данной теме, я со спокойной душой ушел домой полностью уверенный в том, что завтра с утра прочитав их, к концу рабочего дня дело будет 'в шляпе' (как же я тогда ошибался). Прочитав парочку их них я имел общее представление о том как это работает, но этого оказалось мало для воплащения моих идей. Что ж, приступим…
Читать дальше →

GWT, Java 8 и Future

Reading time6 min
Views21K
Добрый день.
Думаю, многие из вас знают о выходе Java 8, и о том, какие нововведения она несет. К сожалению, последняя версия GWT(2.6.0) на данный момент до сих пор не поддерживает лямбды и default-методы в интерфейсах. Поскольку фреймворк GWT довольно востребован, многим приходится часто сталкиваться с разработкой именно на нем, мне не терпелось попробовать писать на GWT с использованием вновь добавленных в язык фич.
Читать дальше →

Знакомимся с элементами управления библиотеки WinJS

Reading time5 min
Views15K


Всем привет!

Сегодня мы с вами будем говорить об элементах управления библиотеки WinJS, об основных вещах, которые нужно знать при создании приложений с ее помощью.
Читать дальше →

Перетягивание «Верблюда» или интеграция средствами Camel. Часть 1

Reading time11 min
Views30K

История одного проекта.



Вам когда-нибудь снились верблюды? Вот и мне тоже нет. Но, когда работаешь с Camel-ом уже третий год, начинают сниться не только верблюды.
В общем, буду делиться опытом, писать о верблюдах и учить вас их готовить. Это серия статей в трёх частях: первая часть будет для тех, кому интересны истории и муки творчества; вторая — больше техническая, о паттернах интеграции, их применении и третья часть — об ошибках и отладке.
Если вам нужно объединить ваши сервисы, здесь вы узнаете, чем хорош Camel. Если вы хотите научиться использовать что-нибудь новенькое, здесь мы начнём с азов. Если вам нравятся истории и оригинальные фишки, которые есть в каждой команде, то читайте дальше.
Читать дальше →

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Backend Developer, Application Developer
Senior
Git
SQL
OOP
Java
Docker
Spring Boot
Java EE
Intellij IDEA
Hibernate
Java Spring Framework