Search
Write a publication
Pull to refresh
46
0
Артур Терменжи @ara89

User

Send message

Генерация версии android приложения из ревизии subversion и git

Reading time6 min
Views3.9K
Когда пользователи сталкиваются с проблемами — всегда хочется точно знать какой именно версией ПО они пользуются. При использовании системы контроля версий и автоматической нумерации версий ПО, такую информацию можно предоставить пользователям, а в случае необходимости просто попросить продиктовать строку.

О том, как можно пронумеровать свой android проект написано здесь и здесь. В обоих статьях рассмотрен пример получения версии проекта с помощью 'svn info', причём в первой статье автор жалуется на отсутствие SvnAnt, а во второй статье автор замечает проблему, связанную с использованием 'svn info'. Проблема связана с тем, что 'svn info' выдаёт неточные сведения о ревизии рабочей копии.

Далее рассмотрен пример решения этой проблемы достаточно простым способом.
UPD: добавлен скрипт для git.
Читать дальше →

Линейная алгебра для разработчиков игр

Reading time19 min
Views797K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →

Инструменты функционального тестирования — Monkey и MonkeyRunner

Reading time4 min
Views50K
В заметке пойдет речь о двух инструментах функционального тестирования android-приложений, которые поставляются вместе с Android SDK, но не очень известны. Несмотря на очень схожие названия, предназначены они для несколько различных целей, и отличаются от других известных инструментов, например, от Robotium'а. Кому интересно — прошу под кат.
Читать дальше →

Использование паттерна mediator для переключения между activity

Reading time3 min
Views7.8K


В простейшем случае для запуска Activity в Android нужно создать Intent c указанием класса вызываемого activity и Bundle из параметров. И всё хорошо, пока у нас в приложении пара экранов. Сложности начинаются тогда, когда количество экранов в нашем приложении будет исчисляться десятками. В данной статье я бы хотел предложить относительно несложный способ организации работы с большим количеством Activity.
Читать дальше →

Минимальная Arduino своими руками

Reading time4 min
Views379K
Arduino — это хорошо, когда хочется быстро реализовать идею, не заморачиваясь мелочами. Но когда идея проверена, лишняя функциональность начинает просто мешать.
Собирая робота на гусеничном шасси, я столкнулся с тем, что бутерброд из Arduino + MotorShield + Sensor Shield плюс ко всему аккумулятор и прочие компоненты обросли проводами и стали с трудом помещаться на не самом крошечном шасси. Городить еще кучу шилдов, чтобы избавиться от лишних проводов не хотелось.
Появилась идея избавиться от всего, что в Arduino не требуется в готовом девайсе. Попутно хотелось снизить стоимость робота.
Многих интересующихся электроникой отпугивает еще и стоимость Arduino в магазинах. С ebay и китайских магазинов посылка идет долго, изобретательский пыл успевает остыть, поэтому приобретение откладывается «на потом», «когда сын подрастет». Поэтому я решил собрать Arduino-совместимую плату из деталей, которые всегда можно купить в городе.
В итоге я получил Arduino-совместимую плату, стоимостью в 210 рублей на макетной плате и в ~270 рублей в готовом для наращивания функционала виде.
Minimalist Arduino
«Minimalist Arduino»
С нуля до полной готовности собирается с дешевым 40Вт паяльником за 1 выходной без каких-то особых навыков.
Читать дальше →

Еще один способ синхронизации потоков

Reading time4 min
Views3.4K
В этом топике рассматривается еще один способ синхронизации потоков с использованием Intent, BroadcastReceiver и Handler. Метод этот может показаться очень громоздким, но тем не менее вполне удобным, особенно если в приложении используется достаточно много ассинхронных потоков. Например, если реализуется сервис, который общается с вебсервисом в фоновом режиме. Еще один пример – приложение, которое портируется сразу на несколько платформ и большую часть кода работы с API можно совместно использовать и в Android, и в J2ME, и в Windows Phone 7.

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

Functional thinking: Thinking functionally, Часть 2

Reading time9 min
Views5.7K

В первой части серии я начал обсуждение некоторых особенностей функционального программирования, показывая проявления этих идей в Java и других, более функциональных языках. В этой статье я продолжу свой обзор, обращая внимание на функции — объекты первого класса, оптимизации и замыкания. Но основная тема этой статьи — контроль: когда вы его хотите, когда он вам необходим и когда надо просто забить.
Читать дальше →

Functional thinking: Thinking functionally, Часть 1

Reading time12 min
Views15K
Давайте на мгновение представим, что Вы — дровосек. И благодаря своему лучшему топору в округе, вы являетесь самым продуктивным дровосеком в лагере. Но однажды появляется некто, начинающий расхваливать достоинства новой парадигмы в рубке леса — бензопилы. В силу убедительности продавца, Вы покупаете бензопилу, но не знаете как она работает. Прилагая неимоверные усилия, пробуете вырвать или раскачать дерево, применяя на практике свою новую парадигму. И быстренько делая вывод, что эта самая новомодная бензопила — ерунда, возвращаетесь к привычному делу — рубить лес топором. А затем кто-то приходит и показывает как заводить бензопилу.

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

Итак, добро пожаловать в Functional thinking. Эта серия исследует предмет функционального программирования, но не несет исключительной направленности описать функциональные языки. Как я покажу дальше, написание кода в функциональном стиле касается дизайна, компромиссов, разных повторно используемых кусков кода и служит основой для иных догадок. Насколько это окажется возможным, я попытаюсь показать концепции функционального программирования в Java (или близких к Java языках) и перейду к другим языкам, чтобы осветить возможности, отсутствующие на данный момент в Java. Я не полезу сразу в дебри, рассказывая о довольно необычных вещах, таких как монады (monads). Напротив, я постепенно проведу Вас через новый путь мышления.

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

Asus Eee Pad Transformer — как разобрать планшет и из чего он состоит

Reading time1 min
Views57K
image

Как и обещали, представляем разбор очередного планшета, победителя в голосовании среди активных хабразрителей — Asus Eee Pad Transformer. Нам удалось раздобыть его в полной комплектации, а именно — с клавиатурой!

Смотрим видеоразбор под катом.
Читать дальше →

Как подружить SQLite андроида с языком, отличным от английского

Reading time4 min
Views16K

Здравствуй, дорогой читатель!
В этой статье я хочу затронуть проблему хранения кириллических данных в SQLite, попробовать разобраться с Android NDK, и вообще зажить прекрасной жизнью! Однако, с этого момента, считаю важными первые два пункта. О них и поговорим.

Известная проблема SQLite состоит в том, что он не любит никаких символов, кроме латинских, поэтому выполняется такое [1]:
SELECT "ы" LIKE "Ы";
0
SELECT "s" LIKE "S";
1


Такая проблема актуальна для наших широт, и может быть решена пользовательскими функциями.
Но Android не поддерживает функций, поэтому создаются костыли.

Давайте попытаемся обойти костыли и расширить наши возможности

Основы Contacts API в Android

Reading time6 min
Views32K
Совсем недавно мне нужно было сделать приложение в котором была необходима поддержка функционала работы с пользовательскими контактами на базовом уровне и, как наверное любой начинающий Android разработчик, я прибывал в небольшом ступоре после поверхностного изучения нового Contacts API. Во время работы я нашел совсем не много информации на эту тему (кроме самой документации конечно), а на русском языке, как мне показалось, она и вовсе отсутствует. Поэтому я и решил написать эту статью и поделиться своим опытом с другими. В ней я постараюсь охватить только основы работы с контактами в Android, не затрагивая более глубокие вопросы и вопросы синхронизации, которые по моему заслуживают отдельной статьи.
Читать дальше →

Новые Arduino: апаратный USB в контроллере, ARM-архитектура и WiFi

Reading time2 min
Views32K
На хабре (да и не только) интререс к Arduino довольно странный — в коментах много полярных мнений, от «хочу», «круто», «заказал себе», до «голый ATMega — то-же но дешевле», «годится только для моргания светодиодом» и «за те-же деньги можно купить полноценный 32-разрядный ARM». И более странно, что никто не упомянул о новых железках, которые будут (или не будут) интересны авторам обоих полярных мнений.
Читать дальше →

Делаем простейший сборщик ошибок для Android

Reading time3 min
Views28K
При разработке приложения неизбежно приходится сталкиваться с ошибками в коде и/или окружении. И очень печально когда подобные ошибки встречаются не на тестовом телефоне/эмуляторе а у живых пользователей. Еще печальнее если это не ваш друг бета-тестер и толком никто не может объяснить что и где свалилось.

Обычно при внезапном падении приложения Android предлагает отправить отчет об ошибке, где будет и подробный стэк-трейс и информация о версии вашего приложения. К сожалению пользователи не всегда нажимают кнопку «отправить отчет» а для дебаг-приложений или приложений не из маркета такая функциональность и вовсе недоступна.

Что же делать? На помощь приедет возможность языка Java обрабатывать исключения (Exceptions), в том числе и непойманные (unhandled).

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

Flurry Analytics. Как держать руку на пульсе приложения

Reading time3 min
Views39K
Около года назад, после первого знакомства с Flurry у меня прямо вырвалось — она же рвет Google Analytics как Тузик грелку тряпку какую-то материю. И обещался написать об этом повесть. Еще до знакомства с Flurry, для своего первого приложения пришлось использовать именно гугловую аналитику, стабильную но в бета-версии. С того момента все повзрослели но я так и остался с Flurry. Пост о том, какой от нее прок и как ее готовить. А готовить ее как два пальца яйца о сковородку.
Читать дальше →

17 простых советов для повышения продуктивности

Reading time3 min
Views33K
Эти советы — не очередная компиляция из книг и блогов, посвященных продуктивности. Каждый совет основан на моём личном опыте. На каждый совет я мог бы дать гарантию, если бы гарантия на советы была возможна в принципе.

Вступление окончено, переходим к советам!
Читать дальше →

Полный обзор ASUS EEE Pad Transformer

Reading time10 min
Views238K
Планшетный компьютер, не принеся в нашу жизнь ничего кардинально нового, сумел совершить революцию иного типа – не технологическую, а ментальную. Много ли в жизни устройств так отчаянно требовали купить себя, при этом так скромно умалчивая о своих возможностях? А много ли девайсов нам так сильно нравились заочно, хотя найти оправдание внезапно проснувшимся чувствам получалось далеко не у всех. Кажется, будто сначала возникла популярность, а лишь затем люди стали делиться друг с другом обнаруженными фишками, и только тогда узнали, что серфить в инете, играть в таймкиллеры, общаться с друзьями или смотреть видео, положив ноги на спинку дивана, бывает действительно удобно.



Но в тысячный раз отправляя злую птицу в деревянную стену, вы лишаете девайс ореола привлекательности. Окей, у вас уже есть планшетный компьютер, но может ли второе, третье, …цатое поколение устройств вернуть утраченный интерес? Прямоугольник, квадрат, алюминий, пластик, стекло – фактически, устройства разных производителей все как один похожи друг на друга (на радость патентным троллям). Со временем они становятся производительнее, тоньше, вместительней, но… это всё. Маркетинговая магия, наделяющая компьютеры новыми чехлами и ультразащитными сверхстёклами, больше не работает – устройство перестаёт удовлетворять потребности пользователя.
Компания ASUS, как ни странно это прозвучит, никогда не стремилась к прямой конкуренции с другими производителями. Создать новый рынок, выявить незанятую нишу, определить, что ещё может потребоваться людям в повседневной жизни – вот основные принципы развития продуктов компании. Поэтому, представляя на рынок свои планшетные компьютеры, ASUS не пошла на поводу у модных веяний и анонсировала четыре радикально различающихся устройства: самый мощный планшет, планшет-«трансформер», планшет-слайдер и планшет-блокнот (а теперь и с 3D). Сегодня на обзоре у лаборатории Trendclub планшетный компьютер компании ASUS, с виду не отличимый от серийного нетбука. Осторожно! Много траффика.
Читать дальше →

Титаны. Стив Джобс (перевод)

Reading time1 min
Views1.7K
Несколько недель назад американский телеканал CNBC продемонстрировал фильм из своего документального цикла «Титаны», посвященный главе компании Apple Стиву Джобсу. Эти фильмы рассказывают о жизни выдающихся людей, изменивших мир. И конечно же, этот список был бы неполным, если бы в нем не было создателя Mac, iPod, iPhone, iPad и множества других полезных вещей. Русская озвучка подготовлена сайтом — AppleInsider.ru



Еще 2 части под катом.
Читать дальше →

Скромное руководство по прохождению интервью: часть 2

Reading time5 min
Views20K
Во второй части поста будут рассматриваться “Алгоритмы и концепции”, если вы не читали предыдущий пост или хотите “вспомнить” список тем, то загляните сюда.

Алгоритмы и концепции

Сортировка и поиск

Понимание/знание известных алгоритмов сортировки очень важно, поскольку многие решения связанные с сортировкой или поиском, мягко говоря, требуют владения этими алгоритмами. Хороший способ показать свои знания перед интервьюером, когда дана здача на сортировку – это «пробежать» по известным алгоритмам и увидеть/выяснить какой из них лучше всего подходит для решения данной задачи. Вы получите и решение и то, что интервьюер будет довольным вашими «разными» способов решения одной и той же задачи.
Читать дальше →

Скромное руководство по прохождению интервью: часть 1

Reading time5 min
Views30K
Пост подготовлен с целью помочь программистам при подготовке к собеседованиям по программированию. Здесь рассматриваются все основные темы, которые, как минимум, желательно знать перед собеседованием. Использован собственный опыт, опыт и рассказы коллег, специализированная литература.
Некоторые рассмотренные здесь темы могут вообще не пригодиться некоторым программистам, а могут и быть обязательными, решать вам. Мой совет – старайтесь как можно больше изучать темы/разделы/аспекты указанные здесь.
И так, в качестве обязательных знаний:
  • Структуры данных
  • Алгоритмы и «концепции»
  • Язык программирования

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

Пишем живые обои с часами

Reading time4 min
Views25K
ClockНедавно я решил разобраться, как делать живые обои для андроида, а разбираться лучше всего на хорошем примере — таком, который потом пригодится. Я всегда хотел удобные часы. Для андроида уже существует достаточное количество подобных обоев, но обычно они рисуют большие часы в каком-нибудь фиксированном углу экрана и перекрываются виджетами, которых у меня немало. Мне хотелось, чтобы часы были разбросаны по всему экрану, тогда вероятность увидеть их будет выше.
Как сделать такое читайте дальше

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity