Дальше много текста, фотографий, разборок. Ну все как обычно
User
Будущее веб браузеров и экосистема устройств пользователя
3 min
10KМне всегда было странно видеть, как различные устройства одного и того же человека взаимодействуют между собой. По сути мы всё ещё находимся на том же уровне, когда пересылали друг-другу файлы по Bluetooth. Радует, что эта проблема начала как-то решаться в последнее время, например, возможно вы помните презентацию WebOs от Palm (HP) и функцию Touch To Share, там был момент, когда одно устройство касалось другого и веб страница как будто перетекала между ними, в этом видеоролике более наглядно.
В последней презентации Apple, где они представили новую iOS 8, была показана технология Continuity, позволяющая приложениям видеть другие устройства пользователя и обмениваться с ними информацией. Вы писали что-то в почтовом клиенте на телефоне, устали — можете продолжить с того же места без сохранения в черновики.
Всё это очень здорово, но практически никак не облегчает жизнь обычным веб разработчикам. Есть ли какое-то решение?
В последней презентации Apple, где они представили новую iOS 8, была показана технология Continuity, позволяющая приложениям видеть другие устройства пользователя и обмениваться с ними информацией. Вы писали что-то в почтовом клиенте на телефоне, устали — можете продолжить с того же места без сохранения в черновики.
Всё это очень здорово, но практически никак не облегчает жизнь обычным веб разработчикам. Есть ли какое-то решение?
+19
Реверс-инжиниринг прошивки китайского Android-планшета
11 min
70K
У китайцев особенное представление о копирайте — у них он просто не действует. В то же время свои наработки они защищают различными техническими средствами, почему-то «забывая» делиться ими со своими клиентами. Казалось бы, ситуация безвыходная: поступила партия китайских планшетов, и встала задача прошить их таким образом, чтобы контент заказчика не стирался при сбросе настроек, при этом имеется стоковая прошивка в неизвестном bin-формате, но отсутствует SDK. Что же делать, как собрать кастомную прошивку? Выход один — применить реверс-инжиниринг.
+59
Реактивное программирование под Android
10 min
90KОтказоустойчивость, отзывчивость, ориентированность на события и масштабируемость — четыре принципа нынче популярного реактивного программирования. Именно следуя им создаётся backend больших систем с одновременной поддержкой десятков тысяч соединений.
Отзывчивость, простота, гибкость и расширяемость кода — принципы, которые можно закрепить за реактивным UI.
Наверняка, если совместить реактивные backend и UI, то можно получить качественный продукт. Именно его мы и попытались сделать, разрабатывая 2GIS Dialer — звонилки, которая работает через API и при этом должна оставаться быстрой и удобной.

Отзывчивость, простота, гибкость и расширяемость кода — принципы, которые можно закрепить за реактивным UI.
Наверняка, если совместить реактивные backend и UI, то можно получить качественный продукт. Именно его мы и попытались сделать, разрабатывая 2GIS Dialer — звонилки, которая работает через API и при этом должна оставаться быстрой и удобной.

+46
Разработка кросс-браузерных расширений
5 min
10KВ своей прошлой статье, я упомянул о выпуске браузерного расширения для Google Chrome, который способен повысить эффективность поиска, за счет предоставления релевантной информации из статей понравившихся вам в социальных сетях.
На сегодня мы поддерживаем 3 главных браузера Chrome, Firefox и Safari, причем, не смотря на разницу платформ, все собираются из одной кодовой базы. Я расскажу, как это было сделано и как упростить себе жизнь разрабатывая браузерные расширения.
На сегодня мы поддерживаем 3 главных браузера Chrome, Firefox и Safari, причем, не смотря на разницу платформ, все собираются из одной кодовой базы. Я расскажу, как это было сделано и как упростить себе жизнь разрабатывая браузерные расширения.
+21
Swift хакатон по мотивам WWDC 2014 от CocoaHeads Moscow
2 min
6K
На всемирной конференции разработчиков (WWDC 2014), проходившей в этом месяце, компания Apple порадовала самым крупным обновлением SDK с момента его релиза в 2007 году. Представлено более 4000 новых API, в том числе Extensions, CloudKit, Adaptive View Controllers, новые фреймворки HomeKit, HeathKit, Metal, а также собственный язык Swift. Такое разнообразие технологий даёт отличный повод Cocoa разработчикам собраться вместе и поработать над чем-то действительно новым.
+24
Ввод паролей при сборке проектов с помощью gradle
3 min
6.1KTranslation
При сборке проектов для Android Gradle позволяет указать некоторые параметры, позволяющие собрать и подписать пакет, готовый для загрузки в Google Play. Однако, вряд ли стоит загружать некоторые данные, такие как пароль от приватного ключа в публичный репозиторий. В статье, перевод которой ниже, автор рассматривает способы ввода приватной информации, такой как пароли, во время сборки проекта.
Gradle позволяет получить доступ к консоли с помощью метода System.console(). Консоль предоставляет метод для чтения паролей, поэтому для ввода пароля можно использовать:
Теперь можно использовать пароль в любом месте скрипта сборки, и все готово… ой, тогда это будет слишком короткий пост, поэтому теперь поговорим о проблемах.
Gradle позволяет получить доступ к консоли с помощью метода System.console(). Консоль предоставляет метод для чтения паролей, поэтому для ввода пароля можно использовать:
def password = System.console().readPassword("\nPlease enter key passphrase: ")
Теперь можно использовать пароль в любом месте скрипта сборки, и все готово… ой, тогда это будет слишком короткий пост, поэтому теперь поговорим о проблемах.
+18
«Сверхзвуковая» загрузка фотографий в Облако с помощью собственного NSInputStream
10 min
16K
Максимально быстрая загрузка фотографий и видео с устройства на сервер была нашим основным приоритетом при разработке мобильного приложения Облако Mail.Ru для iOS. Кроме того, с самой первой версии приложения мы предоставили пользователям возможность включить автоматическую загрузку на сервер всего содержимого системной галереи. Это очень удобно для тех, кто волнуется о возможной потере телефона, однако, как вы понимаете, увеличивает объем передаваемых данных в разы.
Итак, мы поставили перед собой задачу сделать загрузку фото и видео из мобильного приложения Облака Mail.Ru не просто хорошей, а близкой к идеальной. Результатом стала наша библиотека POSInputStreamLibrary, которая реализует потоковую загрузку в сеть фото и видео из системной галереи iOS. Благодаря ее тесной интеграции с фреймворками ALAssetLibrary и CFNetwork загрузка в приложении происходит очень быстро и не требует ни байта свободного места на устройстве. О реализации собственного наследника класса NSInputStream из iOS Developer Library я расскажу в этом посте.
+45
Подробно о задачах Gradle
24 min
127KTutorial

Перевод второй главы свободно распространяемой книги Building and Testing with Gradle
Задача (task) является основным компонентом процесса сборки в файле билда Gradle. Задачи представляют собой именованные наборы инструкций билда, которые Gradle запускает выполняя сборку приложения. При сравнении с другими билд-системами, задачи могут показаться знакомой абстракцией. Однако Gradle предоставляет более развитую модель, в отличие от той, которая вам уже может быть знакома. По сравнению с традиционными возможностями объявления операций билда, связанных зависимостями, задачи Gradle являются полнофункциональными объектами, которыми вы при желании можете управлять программно.
Рассмотрим какими способами можно определить задачу, два ключевых подхода к определению задач и программный интерфейс, который мы можем использовать для гибкой настройки.
+25
Конференции Рунета 2014 года
6 min
12KВ наступившем году Mail.Ru Group продолжит поддержку и участие в ряде конференций, так или иначе связанных с информационными технологиями. В основном это тематические конференции для разработчиков. Почти все из них мы так или иначе уже поддерживали в 2013 году, и мы считаем, что стоит рассказать о них поподробнее широкой общественности. Возможно, кто-то из вас найдёт для себя что-то новое и полезное для себя среди нашего обзора конференций Рунета-2014.


+28
Анализ памяти для Android приложений
5 min
42KTranslation
В Dalvik есть сборщик мусора, но это не значит, что можно игнорировать управление памятью. Даже наоборот — нужно быть особенно внимательным при использовании памяти, которая, как известно, на мобильных устройствах ограничена. В этой статье будут рассмотрены инструменты, которые значительно помогают следить за тем, как приложение использует память.
+58
Более 162.000 сайтов на WordPress использовались для масштабной DDOS-атаки
3 min
41KTranslation

Любой WordPress сайт с включенным Pingback (который, между прочим, включен по умолчанию), может использоваться в DDOS-атаке на другие сайты [В конце статьи ссылка на онлайн-сервис для проверки вашего сайта на участие в уже известных атаках – прим. переводчика].
Заметьте, XMLRPC используется для pingbacks, trackbacks, удаленного доступа с мобильных устройств и для многого другого, от чего вы, скорее всего, не захотели бы отказаться. Но как мы увидим, его можно использовать не только в благих целях.
История
Эта история произошла с популярным WordPress сайтом, который ушел в оффлайн из-за многочасовой DDOS-атаки. Когда атака усилилась, хостер отключил их сайт, и они приняли решение обратиться к нам за помощью.
После того, как DNS были перенесены, мы, наконец, увидели, что происходит: это была мощная распределенная HTTP-flood Layer 7 атака, выполняющая сотни запросов в секунду к их серверу. Так выглядели эти запросы:
74.86.132.186 - - [09/Mar/2014:11:05:27 -0400] "GET /?4137049=6431829 HTTP/1.0" 403 0 "-" "WordPress/3.8; http://www.mtbgearreview.com"
121.127.254.2 - - [09/Mar/2014:11:05:27 -0400] "GET /?4758117=5073922 HTTP/1.0" 403 0 "-" "WordPress/3.4.2; http://www.kschunvmo.com"
217.160.253.21 - - [09/Mar/2014:11:05:27 -0400] "GET /?7190851=6824134 HTTP/1.0" 403 0 "-" "WordPress/3.8.1; http://www.intoxzone.fr"
193.197.34.216 - - [09/Mar/2014:11:05:27 -0400] "GET /?3162504=9747583 HTTP/1.0" 403 0 "-" "WordPress/2.9.2; http://www.verwaltungmodern.de"
..
Вы, возможно, заметили, что у всех запросов есть случайный параметр ("?4137049=643182" и др.), благодаря которому запросы обходят кэш и требуют каждый раз полной перезагрузки страницы. Все это очень быстро убивает сервер.
Но самое интересное, что запросы поступают от других ничем ни примечательных WordPress сайтов. Да, другие WordPress сайты посылают множество запросов со случайным параметром и уводят жертву в оффлайн.
+34
Кроссплатформенное приложение на Qt: Предисловие
2 min
26KQt — по-настоящему замечательная библиотека, позволяющая перенести программу на другую операционную систему простой перекомпиляцией. И если разработчик не использовал чего-нибудь ОС-специфичного, она таки будет выглядеть и работать почти как родная. После разработки основного функционала, при которой различия минимальны, наступает стадия полировки и доводки — об этом и будет рассказывать настоящий цикл статей.


+19
Использование Audio API для создания вокодера
14 min
21KTutorial

Так как итоговый код получился довольно-таки большим, то в статье будет рассмотрены наиболее важные и интересные с точки зрения Audio API фрагменты. Итоговый результат вы конечно же сможете посмотреть на демке.
+34
Еще один шаг к идеальным закладкам
2 min
58KПривет всем! На хабре я уже более 5 лет и успел заметить множество стартапов которые были анонсированы здесь и успели дорасти до серьезных коммерческих проектов.
Мне всегда хотелось повторить их путь и следствием этого стал запуск Raindrop.io и публикации анонса.

Ваш последовавший отклик и интерес очень вдохновили меня, а замечания и идеи определили дальнейший путь развития проекта.
О том каким он стал и чего добился я хочу рассказать в этом посте.
Мне всегда хотелось повторить их путь и следствием этого стал запуск Raindrop.io и публикации анонса.

Ваш последовавший отклик и интерес очень вдохновили меня, а замечания и идеи определили дальнейший путь развития проекта.
О том каким он стал и чего добился я хочу рассказать в этом посте.
+61
Гибкая cms для смелых проектов
14 min
18KВ этой статье мы расскажем о невероятно гибкой системе управления сайтом – Boolive, сочетающей в себе мощь и простоту.


+19
С любовью к дизайнерам: внедряем веб-формы в мобильное приложение
5 min
12KПри разработке мобильного приложения для проекта, которому приходится работать с большим количеством внешних систем, неизбежно возникают ситуации, в которых приходится проявлять находчивость и смекалку. Особенно часто такие ситуации возникают при попытках реализовать программно полет мысли дизайнера с учетом технических особенностей таких систем. О том, как мы решаем такие задачи при работе над мобильным приложением Денег Mail.Ru, мы расскажем в этой статье.



+25
Автоматизация тестирования Android приложений с помощью UIAutomator
11 min
62K
Источник фото
Тестирование — это очень важный процесс во время разработки приложений. В случае Android, тестирование приложения следует производить на большом количестве устройств, в связи с тем, что многие из них имеют значительные различия по характеристикам (разрешение экрана, версия Android и т.д.). Процесс тестирования приложения вручную на большом количестве устройств может быть трудоемок, утомителен и подвержен ошибкам. Более эффективный и надежный подход состоит в автоматизации тестирования пользовательского интерфейса. С помощью UIAutomator можно разработать тест-скрипт, который будет работать на множестве Android устройств
с одинаковой точностью и воспроизводимостью.
+17
Есть вероятность глюков в Chrome/Chromium 31, Opera 18: селекторы вроде nth-last-child могут отрабатывать некорректно
2 min
8.7K
В issues хрома за последние несколько дней появилось несколько issue, в которых описывается примерно следующий сценарий: используется тяжелый css3 селектор, в результате чего идет некорректное обращение. В том числе может некорректно работать селектор к нескольким объектам через запятую (#a, #b, #c etc.), однозначно некорректно работает nth-last-child. Гарантированно выявлен баг с ним.
Проблема, судя по всему, находится в механизме css-запросов, так как document.querySelector также некорректно адресуется. Что самое неприятное — jQuery так же опирается на нативные функции (если они существуют). Таким образом, сложные jQuery-запросы также перестали отрабатывать корректно.
Если в ваших проектах используется nth-last-child, подробности бага под катом
+29
Google выпустил HTML5-редактор для веб-дизайна
1 min
131KКомпания Google выложила в свободный доступ программу Google Web Designer (бета): HTML-редактор кода со встроенным графическим редактором для создания рекламных баннеров.


+69