Недавно передо мной была поставлена задача: вытащить некую информацию из файлов MS-office (.xls, .doc) для ее последующей обработки. По факту, нужно было вытащить текст, содержащийся в документе.
«Правильный» html парсинг

Первый раз я запустил Eclipse еще весной, почитал книжки на английском, поставил SDK, немного поигрался и забросил. В начале зимы я купил себе первый смартфон на базе Android, но вновь вернутся к разработке меня подтолкнул недавний пост, в котором говорилось, что можно обойтись и знанием C#, с которым в отличии от Java я знаком. Мне было достаточно одного вечера, чтобы понять, что за связку Visual Studio и Monodroid я больше не сяду, позже я прочитал этот пост, где полностью согласился с автором.
После небольшого вступления перейду к теме топика. Довольно большое количество приложений под мобильные устройства взаимодействуют с сайтами и не секрет, что порой нужно получить какую-то информацию со страницы — это может быть курс валют или что-нибудь другое, и нет никакого желания делать это посредством браузера.
Большинство разработчиков, получают html код страницы и перегоняют его в xml, что является неправильным подходом, так как html является «правильным» xml не всегда, вроде на хабре писали, что для браузера не обязателен тег html (современный браузер и без него должен отобразить страницу) или просто будут ошибки, тогда на помощь приходят библиотеки. Из них я выбрал HtmlCleaner.
Под катом я расскажу, как подключить эту библиотеку, а также напишем простой парсер stackoverflow.com.
Поверхностный обзор javascript-enabled BaaS платформ
Из песочницы
Будучи начинающим javascript разработчиком, я заинтересовался темой межплатформенной разработки мобильных приложений. В этой области, в настоящее время, балом правят Cordova (phonegap) www.phonegap.com, Appcelerator Titanium www.appcelerator.com, Mosync www.mosync.com.
Рано или поздно, после выпуска первых мини-приложений, основанных на этих системах, разработчику захочется создать что-нибудь Большое и Светлое, и хотелось бы, чтоб в этом новом приложении/сервисе были пользователи (c аватарами и проч.), push-notifications, user-generated-content и т.д… Но при этом, не хотелось бы тратить время и деньги на написание своей серверной инфраструктуры, а хотелось бы воспользоваться чем-нибудь недорогим, вплоть до бесплатного, и простым в освоении (и ещё чтоб «в облаке»!).
Как раз подобного рода тяжести и взяли на себя многочисленные Backend-as-a-Service (не путать с другими aaS). Я хочу кратко пробежаться по некоторым игрокам на этом рынке. Подчеркну, что меня в первую очередь интересовали те платформы, которые можно было бы легко и безопасно использовать с мобильным javascript (Phonegap/Titanium). Если платформа просто предоставляет REST API, этого мало, т.к. вопрос безопасности требует наличия некоторого специального ограничительного функционала: AccessControlList/permissions/masterKeys/etc. И вообще, желательно отдельный javascript SDK.
(Так как это «поверхностный обзор», я не буду подробно писать кому и зачем нужен BaaS и почему вместо всего этого не использовать старый-добрый PHP/MySQL на VPS или новый-добрый node.js в облаке)
Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:
Рано или поздно, после выпуска первых мини-приложений, основанных на этих системах, разработчику захочется создать что-нибудь Большое и Светлое, и хотелось бы, чтоб в этом новом приложении/сервисе были пользователи (c аватарами и проч.), push-notifications, user-generated-content и т.д… Но при этом, не хотелось бы тратить время и деньги на написание своей серверной инфраструктуры, а хотелось бы воспользоваться чем-нибудь недорогим, вплоть до бесплатного, и простым в освоении (и ещё чтоб «в облаке»!).
Как раз подобного рода тяжести и взяли на себя многочисленные Backend-as-a-Service (не путать с другими aaS). Я хочу кратко пробежаться по некоторым игрокам на этом рынке. Подчеркну, что меня в первую очередь интересовали те платформы, которые можно было бы легко и безопасно использовать с мобильным javascript (Phonegap/Titanium). Если платформа просто предоставляет REST API, этого мало, т.к. вопрос безопасности требует наличия некоторого специального ограничительного функционала: AccessControlList/permissions/masterKeys/etc. И вообще, желательно отдельный javascript SDK.
(Так как это «поверхностный обзор», я не буду подробно писать кому и зачем нужен BaaS и почему вместо всего этого не использовать старый-добрый PHP/MySQL на VPS или новый-добрый node.js в облаке)
Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:
Facebook купил бэкенд Parse для сторонних мобильных приложений

Facebook сегодня официально превратилcя в поставщика платных облачных услуг для разработчиков мобильных приложений. Социальная сеть купила предположительно за $85 млн стартап Parse, который разрабатывает облачный бэкенд для мобильных приложений (mBaaS: mobile-backend-as-a-service). О сделке официально объявлено сегодня и в блоге Parse, и на Facebook.
URL.js или дружим JavaScript с обработкой ссылок
Из песочницы

Доброго времени суток, уважаемые хабравчане!
Возникла передо мной сегодня задача генерации GET-параметров и всего URL в целом, на стороне клиента, прям вот щас, без возможности «поговорить» с сервером. Сразу оговорюсь, про этот пост я узнал вот прям перед написанием данной статьи ибо сначала закончил писать, а потом уже прибег к поиску, да и пост тот — не со всем про то же самое, что у меня.
Итак, к делу.
Задача и проблемы
Проблемы — те же что и в посте, который я привел выше:
- Невозможность использовать
window.location
для «приготовления» URL; - Нельзя работать сразу с несколькими
window.location
в силу политики безопасности браузеров; - Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )
Задачи которые я поставил перед собой:
- Удобный синтаксис
- Возможность как читать части URL так и изменять их
- Работа с GET-параметрами
- Кроссбраузерность и универсальность
Писал я на чистейшем JavaScript, причем без использования
prototype.__defineGetter__
или prototype.__defineSetter__
в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.
Приступим!
Простой лидерборд на Unity3D с facebook-ом
Из песочницы
После участия в Ludum Dare 31 у нас появилась игра, в которой можно соревноваться с друзьями и мы решили добавить к ней лидерборд, с авторизацией через Facebook. Какие сложности могут возникнуть и как сделать подобный в своей игре читайте под катом.


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

Раньше я работал над созданием мобильных игр как гейм-дизайнер или продюсер, но сам еще никогда профессионально не писал код. Несколько месяцев назад мне захотелось это исправить и сделать игру своими руками. Так, спустя два месяца работы, силами трех человек в App Store и Google Play появились «Котики». В своей истории я хочу поделиться приобретенным опытом и рассказать о средствах разработки, которые позволили нам быстро сделать эту игру.
Руководство по миграции сервера Parse для разработчиков
Блог компании Microsoft Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Microsoft Azure
Перевод
Tutorial
Если вы использовали услуги хостинга Parse в качестве бэкенда для своих мобильных приложений, то сейчас вероятно настал идеальный момент попробовать Azure App Service. В связи с последними новостями, ребята из Parse предложили пути миграции существующих бэкендов с Parse на другие площадки. Мы рассчитываем, что когда вы станете искать такую альтернативную площадку, то попробуете и Azure.

Как предлагается в руководстве по миграции, вы можете мигрировать бэкенд Parse вашего приложения на другой хост, на котором развернут сервер с Parse API размещенный на базе Express. Azure App Service предлагает замечательную альтернативу для хостинга вашей реализации сервера Parse. В конце концов, Node.js-бэкенд предлагаемый в Mobile App в сервисе Azure App Service – это тоже Express. Для того чтобы еще сильнее упростить первые шаги, команда Azure App Service предложила готовый процесс развертывания, который сильно упрощает для вас запуск первого сервера Parse в App Service.
Перед тем как начать, вам стоит почитать руководство по миграции Parse, для того чтобы понять что поддерживается, а что нет в новом сервере Parse. Одной из основных функций, которые отсутствуют в сервере Parse являются пуш-уведомления, но служба Azure Notification Hubs предложит вам готовую альтернативу.
Когда миграция будет завершена, вы можете продолжить использовать клиентские Parse SDK в своих приложениях для доступа к данным (конечно, клиенты должны будут обновлены для использования новых версий SDK и использовать новое расположение сервиса.).

Легкий путь миграции
Как предлагается в руководстве по миграции, вы можете мигрировать бэкенд Parse вашего приложения на другой хост, на котором развернут сервер с Parse API размещенный на базе Express. Azure App Service предлагает замечательную альтернативу для хостинга вашей реализации сервера Parse. В конце концов, Node.js-бэкенд предлагаемый в Mobile App в сервисе Azure App Service – это тоже Express. Для того чтобы еще сильнее упростить первые шаги, команда Azure App Service предложила готовый процесс развертывания, который сильно упрощает для вас запуск первого сервера Parse в App Service.
Перед тем как начать, вам стоит почитать руководство по миграции Parse, для того чтобы понять что поддерживается, а что нет в новом сервере Parse. Одной из основных функций, которые отсутствуют в сервере Parse являются пуш-уведомления, но служба Azure Notification Hubs предложит вам готовую альтернативу.
Когда миграция будет завершена, вы можете продолжить использовать клиентские Parse SDK в своих приложениях для доступа к данным (конечно, клиенты должны будут обновлены для использования новых версий SDK и использовать новое расположение сервиса.).
Альтернативы сервису parse.com
Разработка веб-сайтов *Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
Перевод
Как известно, в следующем январе сервис Parse будет закрыт. Большинство разработчиков ищут альтернативу для этого сервиса. В одном из проектов guthub собралось достаточно много альтернатив, со ссылками и описанием. Перед вами — перевод этой страницы.
Провайдеры, предоставляющие информацию в реальном времени, помечены (*).
AnyPresence MBaaS (Mobile backend as a service). Упрощает процесс создания мобильных приложений предприятия, работающих на разных устройствах, не ущемляя гибкость средств, доступных разработчику. Легок в использовании даже для неопытных пользователей. Опытные разработчики получают доступ к исходникам всех компонентов.
ApiOmat позволяет процессам предприятия работать как мобильным приложениям. Мобилизует сложные бизнес-структуры и процессы путём объединения существующих IT-систем с мобильными приложениями и устройствами. Его можно устанавливать прямо в дата-центре компании, что позволит работникам выполнять свою работу через приложения вне зависимости от их местонахождения.
Appcelerator Arrow (*) Состоит из двух основных компонентов, Builder и Cloud. Arrow Builder позволяет быстро создавать API, модели данных и соединители данных как через мастер настройки, так и через написание кода. Arrow Cloud – это эластичный облачный сервис, где выполняются API и происходит анализ их использования, плюс обеспечивается работа двух десятков смежных сервисов (гео, хранение фотографий и т.п.) с использованием ArrowDB
Appery.io Интегрированные сервисы MBaaS – чтобы разработчики могли сконцентрироваться на приложениях, не отвлекаясь на инфраструктуру.
Часть 1: универсальные сервисы
Провайдеры, предоставляющие информацию в реальном времени, помечены (*).
AnyPresence MBaaS (Mobile backend as a service). Упрощает процесс создания мобильных приложений предприятия, работающих на разных устройствах, не ущемляя гибкость средств, доступных разработчику. Легок в использовании даже для неопытных пользователей. Опытные разработчики получают доступ к исходникам всех компонентов.
ApiOmat позволяет процессам предприятия работать как мобильным приложениям. Мобилизует сложные бизнес-структуры и процессы путём объединения существующих IT-систем с мобильными приложениями и устройствами. Его можно устанавливать прямо в дата-центре компании, что позволит работникам выполнять свою работу через приложения вне зависимости от их местонахождения.
Appcelerator Arrow (*) Состоит из двух основных компонентов, Builder и Cloud. Arrow Builder позволяет быстро создавать API, модели данных и соединители данных как через мастер настройки, так и через написание кода. Arrow Cloud – это эластичный облачный сервис, где выполняются API и происходит анализ их использования, плюс обеспечивается работа двух десятков смежных сервисов (гео, хранение фотографий и т.п.) с использованием ArrowDB
Appery.io Интегрированные сервисы MBaaS – чтобы разработчики могли сконцентрироваться на приложениях, не отвлекаясь на инфраструктуру.
Почему Facebook не стала поддерживать Parse?

Закрытие Parse стало одним из неприятных сюрпризов этого года. На момент своей работы Parse оставался одним из самых популярных mBaaS-сервисов (mobile Backend-as-a-Service). Журналисты издания VentureBeat решили разобрать причины отказа Facebook от продолжения поддержки платформы для пользователей сервиса.
Обзор новорождённой платформы Scorocode
Блог компании Scorocode Программирование *Разработка под iOS *Разработка мобильных приложений *Разработка под Android *

BaaS-платформы (Backend as a Service) сделали разработку и сопровождение backend'а для мобильных и веб-приложений достаточно простыми и предсказуемыми процессами. Одним из флагманов движения BaaS стала компания Parse, но в 2016 году она заявила о прекращении обслуживания клиентов с 2017 года.
В связи с закрытием их сервиса и отсутствием русскоязычных облачных BaaS, мы решили создать собственный аналог — Scorocode. Об этом под катом.
Куда переехать с Parse Push?
Блог компании Meduza: dev Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
Сервис Parse, позволявший, в числе прочего, легко запрограммировать отправку пуш-уведомлений, закрывается 28 января; осталось 8 дней. Самое время переехать
(это шутка, на самом деле нужно было переехать уже давно).
Мы знаем два хороших сервиса на замену:

Мы знаем два хороших сервиса на замену:
Как разобрать URL в JavaScript?
Перевод

Доброго времени суток, друзья!
Представляю Вашему вниманию перевод заметки «How to Parse URL in JavaScript: hostname, pathname, query, hash» автора Dmitri Pavlutin.
Унифицированный указатель ресурса или, сокращенно, URL — это ссылка на веб-ресурс (веб-страницу, изображение, файл). URL определяет местонахождения ресурса и способ его получения — протокол (http, ftp, mailto).
Например, вот URL данной статьи:
https://dmitripavlutin.com/parse-url-javascript
Часто возникает необходимость получить определенные элементы URL. Это может быть название хоста (hostname,
dmitripavlutin.com
) или путь (pathname, /parse-url-javascript
). Удобным способом получить отдельные компоненты URL является конструктор
URL()
. В этой статье мы поговорим о структуре и основных компонентах URL.