Архив за 15 апреля 2013 - 6

Работа с API различных порталов — одна из самых распространенных задач, возникающих при разработке под Android. Казалось бы, ничего сложного — асинхронно посылать HTTP-запросы и отображать ответы, но дьявол, как всегда, кроется в деталях.
Написание простого приложения для работы с RESTful API под Android
Основные антипаттерны:

  • Отправка запроса прямо из кода Activity в основном треде — тут без комментариев, т.к. это приводит к заморозке UI, вследствие чего система может предложить убить приложением;
  • Отправка запроса из кода Activity при помощи AsyncTask — плохо, т.к. если пользователь, к примеру, повернет экран, Activity пересоздастся и запрос придется выполнять заново, что приводит увеличению времени ожидания и количества потребляемого трафика;
  • Отсутствие кэширования — после каждого действия пользователя ему придется ждать полной загрузки данных.

Читать полностью »

Создание и хранение резервных копий базы данных

Регулярные бекапы — это верный способ сохранить свои важные данные. Произойти может все, что угодно: от пожара в дата центре до просто неаккуратно написанного и запущенного скрипта в вашей базе данных. К этому нужно быть готовым. Хоть вероятность этого достаточно мала, но потери, которые можно понести, огромны. Поэтому вес этого узла в дереве решений будет значителен, а следовательно, нужно позаботиться о бекапах как можно скорее.
В этой статье мы расскажем, как организован сбор и хранение бекапов в нашей системе.

Читать полностью »

В пятницу в iTunes Store запустился Instabank - мобильное приложение, позиционирующее себя как "банк для любящих красоту iPhone и удобство Facebook". Чтобы начать пользоваться Instabank, нужно скачать приложение для iPhone, зарегистрироваться в нем через Facebook и оставить заявление на выпуск карты. Пока в приложении работают только уведомления об операциях и лента событий, где в роли событий - приход и расход в "социальном" дизайне.

Новый проект: социально мимимишный Instabank

Читать полностью »

Computer programs are the most complex things that humans make. It is also the nature of software to be extensively modified over its productive life. If we can read and understand it, then we can hope to modify and improve it.

© Douglas Crockford, автор спецификации JSON

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

Есть много способов превращения JSON в Objective-C обьекты, однако многие из них имеют свои недостатки, которые мешают с ними работать. Есть известный и любимый многими RestKit, однако он, к сожалению, эффективно работает только при наличии идеального REST API. Шаг в сторону — и вы будете забивать гвозди микроскопом, не понимая, зачем нужно писать такие сложные конструкции для достаточно простых вещей. Есть решение от разработчиков GitHub — Mantle, однако с ним вы будете вынуждены наследоваться от базового класса Mantle и постоянно использовать NSValueTransformer — не самую популярную технологию в iOS/Mac OS разработке.

Я хочу рассказать о фреймворке, который недавно нашелся на просторах GitHub, и который позволяет достаточно просто и красиво преобразовывать JSON в Objective-C обьекты — EasyMapping.

Если заинтересовались, добро пожаловать под кат!
Читать полностью »

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

Проигрыватели iPod, которые успели побывать в роли основного источника дохода Apple, уходят со сцены

Читать полностью »

в 10:43, , рубрики: php, Песочница, метки:

Для справки:
Tokenizer (лексер) предоставляет интерфейс для анализа кода. Таким образом, можно писать утилиты без необходимости работы с языковой спецификацией.
Tokenizer, начиная с версии php >= 4.3 включен в сборку php по-умолчанию.

Какие задачи можно решать с помощью tokenizr'а?
Да самые разные, связанные с анализом и модификацией кода.

Удаление комментариев из кода

Самый простой пример приведен на php.net — по удалению комментариев:
Читать полностью »

Как запустить программу без операционной системы: часть 3: Графика

В этой части попробуем сделать “невозможное”: научимся использовать графический дисплей без операционной системы. На самом деле это задача не из легких, особенно в случае работы в 32-х битном защищенном режиме, и особенно если хочется использовать приличное разрешение экрана а не 320x200x8. Но все по порядку: раз хотим графику – значит нужно работать с видеокартой.

Современные графические карты – это практически полноценные компьютеры по мощности не уступающие основному: тут и декодирование MPEG2 в качестве 1080p, поддержка 3D графики и шейдеров, технологии вроде CUDA, и многое другое. Это все выглядит весьма сложно. С другой стороны видеокарты – это всего лишь очередной PCI девайс, такой же, как и остальные. Это устройство мы даже “нашли” в предыдущей статье с номером класса устройства 0x03 (class_name=graphics adapter). Как и с любым, устройством с видеокартой можно работать при помощи портов ввода-вывода или MMIO областей памяти, а сама видеокарта может использовать DMA и прерывания для взаимодействия с основным процессором. Если посмотреть на диапазон портов ввода-вывода, доступных у видео карт, то мы увидим, что всего ей выделяется менее 50-ти байт – не так уж и много с учетом огромной функциональности, которой обладают современные видеокарты.
Читать полностью »

Вступление

Приветствую, коллеги!

Достаточно часто при разработке мультимедийных Андроид-приложений (далее просто “приложений”) мы сталкиваемся с задачей создания собственных компонентов, не предусмотренных в системе. Это могут быть всяческие ручки-переключатели, визуализаторы спектра и т. п. Некоторые из них могут быть получены простой заменой графического ресурса, поворотом канвы на 90 градусов и т. п. Но, иногда, все же приходится делать что-то свое “с нуля”.
В этой статье я собираюсь рассказать о создании компонента — простой клавиатуры фортепиано, при помощи наследования от класса View и реализации всех внутренностей “самостоятельно”. Почему в кавычках — увидите дальше.

В серии статей я постараюсь осветить такие вопросы, как:

  1. отрисовка компонента
  2. добавление скроллинга с использованием стандартных скроллбаров
  3. взаимодействие, использование селекторов для клавиш
  4. Сохранение состояние компонента при повороте экрана
  5. добавление подсветки при оверскролле
  6. передача параметры в XML
  7. pinch zoom

Первая статья будет о первых трёх пунктах.

Если Вам интересны эти темы, добро пожаловать под кат.
Читать полностью »

Компания Toshiba анонсировала выпуск микроконтроллера TMPM372 со встроенным блоком векторных вычислений. Важной особенностью этого изделия является малое число выходов и широкий шаг выводов, что приводит к снижению затрат на монтаж изделия. Серийный выпуск новинки на ядре ARM Cortex-M3, пополнившей серию TX03, производитель обещает начать в мае текущего года.

Серийный выпуск микроконтроллеров Toshiba TMPM372 начнется в мае 2013 года

Читать полностью »

Google изменит внешний вид поисковой выдачи для Европы, «даст фору» конкурентным сервисам

Уже около трех лет чиновники Европейского Союза анализируют работу поискового сервиса Google и его влияние на работу конкурентных сервисов (Yelp, UrbanSpoon, TripAdvisor). Если помните, компании-владельцы тематических поисковых сервисов (билеты, рестораны и кафе и прочие) подали объединенный иск против Google, жалуясь на невозможность конкурировать с поисковым гигантом. Корпорация, после ряда судебных разбирательств и работы с чиновниками ЕС, пошла навстречу, и вскоре будет представлена новая версия поисковой выдачи, так сказать, европейской.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js