Как стать автором
Обновить
161
3.6
Дмитрий @Newbilius

Программист мобильных приложений

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

Ускорение загрузки Windows for fun and profit

Время на прочтение4 мин
Количество просмотров808K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста

Заблуждения программистов относительно времени

Время на прочтение3 мин
Количество просмотров90K
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

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

Long Polling для Android

Время на прочтение6 мин
Количество просмотров20K
Прочитав статью, стал внедрять в web проекты Long Polling. На nginx крутится серверная часть, на javascript клиенты слушают каналы. Прежде всего это было очень полезно для личных сообщений на сайте.
Потом в поддержку web проектов стали разрабатываться приложения под Android. Встал вопрос: как реализовать многопользовательский проект, в котором равнозначно участвовали бы как браузерные клиенты, так и мобильные приложения. Так как Long Polling уже был внедрён в браузерные версии, решено было написать java модуль и для Android.
Читать дальше →

Контур.Эльба под Android. Записки разработчика

Время на прочтение7 мин
Количество просмотров20K
В конце прошлого года я присоединился к команде веб-сервиса Эльба, и мы приступили к разработке «электронного бухгалтера» для Android.

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

Статья будет полезна:
  • андроид-разработчикам;
  • руководителям разработки веб-сервисов, которые подумывают выходить на мобильный рынок;
  • предпринимателям, которые уже давно ищут способ «запихнуть свой бизнес в телефон».

Масса технических и не очень подробностей, а также целый мегабайт скриншотов.

«65К методов хватит всем» или как бороться с лимитом DEX методов в Android

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

Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

И вы в ступоре, вы неспособны создать DEX файл для APK. Вы не имеете ни малейшего представления о том, что это и как это исправить. И что бы вы не делали, оно будет приводить вас к самому логичному состоянию: ПАНИКА.
Что же произошло?

Мультитест мультиварок: что купить IT-шнику, если хочется плова и борща

Время на прочтение33 мин
Количество просмотров167K
Нам неоднократно поступали предложения о тестировании мультиварок, но до определенного времени мы от них отказывались — ну что такого можно рассказать о мультиварке. Однако, предложения продолжали поступать, и примерно после 5-6 письма редакция Box Overview задумалась, и решили сделать не просто тест одной мультиварки, а глобальное тест-сравнение 8 мультиварок нижнего ценового сегмента от разных брендов.

image

В нашем тесте участвуют 8 мультиварок от компаний Vitek (VT-4209), Kitfort (KT-201), Scarlett (SL-MC411S01), Polaris (PMC 0527D), Rolsen (RMC-5500D), Redmond (RMC-250), Philips (HD2173) и Panasonic (SR-MHS181).

Мы не будем рассказывать вам о дизайне — его можно посмотреть на фотографиях, не будем уточнять наличие контейнера для сбора конденсата — в него он попадает лишь в редких случаях, мы не будем говорить о «эффекте русской печи» и прочей маркетинговой шелухе, которую так любят продавцы.
Мы расскажем о более интересных вещах — об удобстве управления, о качестве рецептов из комплекта, о физической и химической стороне процесса приготовления, о типах антипригарных покрытий, о реальном, а не маркетинговом функционале и о том, что у мультиварок внутри.
Под катом много картинок, фотографий плова и борща, физический и химический ликбез и geek-porn

Индексирование контента приложений Android теперь доступно для всех разработчиков

Время на прочтение2 мин
Количество просмотров11K
Уровень подготовки веб-мастера: любой

У вас есть не только сайт, но и приложение Android? Теперь вы можете подключить одно к другому, чтобы пользователи смартфонов и планшетов могли легко находить контент приложения прямо в результатах поиска Google.

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



Сотни разработчиков приложений уже пользуются индексированием приложений. Среди них уже и первые разработчики из России, как, например, Афиша. На конференции Google I/O мы представили множество новых функций, упрощающих размещение ссылок на сайт в приложении, связь страниц сайта с приложением настройки, отслеживание эффективности и возможных ошибок.
Читать дальше →

Continuous Integration для Android

Время на прочтение7 мин
Количество просмотров18K
После реализации пары проектов под Android, стало понятно, что, несмотря на их небольшие размеры и кажущуюся простоту, без автоматизированных сборок и тестирования не обойтись. Родилось желание получить следующие возможности:
  • unit тестирование,
  • интеграционное тестирование,
  • тестирование интерфейса,
  • тестирование этих типов тестов на различных версиях Android и конфигурациях девайсов,
  • рассылка по email в случае сломанного билда;
  • таже не помешает автоматическая сборка релизов.
Читать дальше

Автоматизация приемочного тестирования Android приложений с помощью Calabash

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

Источник изображения
В данной статье я хочу ознакомить вас с еще одним фреймворком для автоматизации тестирования мобильных приложений, а именно с Calabash – кроссплатформенным решением для приемочного тестирования Android и iOS приложений. Статья рассчитана на новичков, которые тестируют или хотели бы тестировать Android приложения.
Подробности

Маленькие хитрости Java

Время на прочтение4 мин
Количество просмотров270K
Я уже достаточно много лет занимаюсь разработкой на java и повидал довольно много чужого кода. Как это не странно, но постоянно от одного проекта к другому я вижу одни и те же проблемы. Этот топик — попытка ликбеза в наиболее часто используемых конструкциях языка. Часть описанного — это довольно банальные вещи, тем не менее, как показывает мой опыт, все эти банальности до сих пор актуальны. Надеюсь, статья пригодится многим java программистам. Итак, поехали:

new vs valueOf

//медленно
Integer i = new Integer(100);
Long l = new Long(100);
String s = new String("A");

//быстро
Integer i = Integer.valueOf(100);
Long l = 100L;//это тоже самое что Long.valueOf(100L);
String s = "A";


Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах оболочках примитивных типов, кроме случаев, когда вам нужно конкретно выделить память под новое значение. Это связано с тем, что все они, кроме чисел с плавающей точкой, от Byte до Long имеют кеш. По умолчанию этот кеш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кеша. Значение из кеша достается в 3.5 раза быстрее чем при использовании конструктора + экономия памяти. Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной. В случае, если ваше приложение очень часто использует целые типы, можно увеличить кеш для Integer через системное свойство «java.lang.Integer.IntegerCache.high», а так же через параметр виртуальной машины -XX:AutoBoxCacheMax=<size>.
Читать дальше →

Аннотации в JAVA: обзор синтаксиса и создание собственных

Время на прочтение4 мин
Количество просмотров261K
Статья ориентирована больше на новичков, или тех, кто еще не работал с данным механизмом в языке. Я постараюсь рассказать, что это такое, зачем они нужны, и как можно самому создавать удобные для себя аннотации.

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

300 спартанцев «Горбушки»: как Madrobots спасла секретная skype-биржа

Время на прочтение6 мин
Количество просмотров44K
ПАМЯТИ СРЕДНЕГО КЛАССА

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

Виктор Пелевин Поколение «П»

В чем наш секрет успеха?

Мы никогда не упускаем случая сесть в лужу, а потом начинаем энергично разгребать дерьмо руками.

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

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

Вы будете смеяться. Нет, вы будете плакать. Потому что через год история повторилась.



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

Использование async и await в C# — лучшие практики

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

Ключевые слова async и await, введённые в C# 5.0, значительно упрощают асинхронное программирование. Они также скрывают за собой некоторые сложности, которые, если вы потеряете бдительность, могут добавить проблем в ваш код. Описанные ниже практики пригодятся вам, если вы создаёте асинхронный код для .NET приложений.
Читать дальше →

Анимация фрагментов в Android

Время на прочтение8 мин
Количество просмотров62K
Всем доброго времени суток. Этот пост хочу посвятить теме фрагментов для Android. На Хабре есть уже переводы и некоторые статьи, которые упоминают о том, как начать работать с фрагментами под Android. Например, статья Fragments API в Android 3.0. В ней находится описание того, что такое фрагменты и в какой версии Android они доступны, поэтому те, кто ещё не добрался до неё могут при желании ознакомиться, я же не буду пересказывать этого в своём посте. Поэтому сразу перейду к делу.
Читать дальше →

Android In-app purchasing: платное отключение рекламы в своём приложении

Время на прочтение6 мин
Количество просмотров41K
Много раз уже просили написать статью о том, как в приложении реализовать платное отключение рекламы. По In-app уже были статьи на хабре. Правда, они старую версию API рассматривали. В принципе, новая версия не особо то и отличается от старой. Была похожая статья, но там больше именно про отображение рекламы рассказывалось, а второй части статьи мы так и не увидели. Как оказалось, многим до сих пор интересен этот вопрос, решил написать как это реализовать в своём приложении.
Читать дальше →

Widgets. Custom fonts

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

Разработка виджета немного отличается от разработки activity, и вот это «немного» иногда ставит палки в колеса. Подробно расписывать разработку виджета я не буду, на Хабре уже есть несколько замечательных постов на эту тему (например, Hello World widget для Android или вообще такая вот шпаргалка, Создание Виджета), остановлюсь лишь на особенностях.
Читать дальше →

Продвинутая JavaScript отладка при помощи console.table()

Время на прочтение2 мин
Количество просмотров43K
Вчера узнал об одной изящной возможности отладки в «Инструментах разработчика Chrome». На конференции "Web Developer Conference Compact" Маркус Росс (Marcus Ross — @zahlenhelfer) рассказывал о различных инструментах отладки, реализованных в Chrome, об одном из который я хочу рассказать.
Читать дальше →

Конвертируем HTML в PDF при помощи Dompdf

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

PDF — формат, ставший уже стандартом. Он был изначально создан Adobe для представления текста и изображений в документе с фиксированной структурой. Давно не редкость для веб-приложений, поддерживающих скачку данных, таких как счета или отчеты, отдавать их в PDF формате. Так что в этой статье мы пройдем простую генерацию PDF документов используя PHP.

Dompdf — это отличная библиотека, способная генерировать PDF из HTML-разметки и CSS-стилей (в большинстве случаев это стили, совместимые с CSS 2.1 с поддержкой некоторых свойств CSS3). Мы можем определить, как наше содержимое должно выглядеть, используя эти знакомые технологии, и после легко конвертировать его в фиксированный документ. Также эта библиотека имеет и другие полезные и интересные функции.
Читать дальше →

Работа с сетью в Android: трафик, безопасность и батарейка

Время на прочтение8 мин
Количество просмотров84K
На сегодняшний день в Google Play насчитывается более 800 тысяч приложений. Многие из них реализованы на основе клиент-серверного общения. При разработке таких приложений нужно учесть три основных момента, о которых пойдет речь в этой статье.

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

Evercookie — самые устойчивые куки

Время на прочтение1 мин
Количество просмотров74K
Samy Mamkar разработал систему, которая позволяет хранить куки в 8 местах, автоматически восстанавливая друг друга, и даже добиться того, чтобы куки, поставленное в одном браузере, действовало и в другом.

Удалить это куки практически невозможно! (Все возможно, конечно, но слишком много мороки)

Куки хранятся в:
  • HTTP Cookies;
  • Local Shared Objects (Flash);
  • Сохранение куки в значениях RGB автосгенерированных и форсированно кэшированных PNG с использованием HTML5 canvas;
  • Сохранение куки в Web History;
  • HTML5 Session Storage;
  • HTML5 Local Storage;
  • HTML5 Global Storage;
  • HTML5 Database Storage через SQLite.

При удалении из одного из этих мест кука автоматически восстанавливается из оставшихся. Работает даже если пользователь сменит браузер (через Local Shared Objects из Flash).

Описание (на английском) и демо: http://samy.pl/evercookie/.
Попробуйте удалить куки, почистить систему и зайти назад.



Как пользоваться?
Читать дальше →

Информация

В рейтинге
973-й
Откуда
Екатеринбург, Свердловская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность