Pull to refresh
18
0

Пользователь

Send message

Нет – взломам серверов! Советы по проверке и защите

Reading time3 min
Views33K
Подозреваете, что Linux-сервер взломан? Уверены, что всё в порядке, но на всякий случай хотите повысить уровень безопасности? Если так – вот несколько простых советов, которые помогут проверить систему на предмет взлома и лучше её защитить.

image

Читать дальше →
Total votes 47: ↑36 and ↓11+25
Comments43

Пишем, собираем и запускаем HelloWorld для Android в блокноте. Java 8 и Android N

Reading time11 min
Views46K

Два с половиной года назад я опубликовал статью Пишем, собираем и запускаем HelloWorld для Android в блокноте. Она стала пользоваться огромной популярностью и набрала около 80 000 просмотров. С появлением новых инструментов, таких как Jack ToolChain, возникла необходимость переиздания и обновления статьи.

Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android-приложение вручную — без использования IDE. Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments22

HolyJS в Москве: первые доклады и CallForPapers

Reading time4 min
Views6K
Вселенная JavaScript прекрасна: язык растет и развивается огромными темпами, фреймворки плодятся (возможно, даже слишком:)), коммьюнити цветет и пахнет, в России появляются профессиональные конференции.



Если вы следите за событиями, то знаете, что в июне в Питере прошла первая в России масштабная профессиональная конференция по JavaScript – HolyJS. Все тогда прошло хорошо, а сама конференция 11 декабря приедет в Москву, об этом и поговорим.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments14

Руководство по работе с Redux

Reading time80 min
Views284K
Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Читать дальше →
Total votes 65: ↑59 and ↓6+53
Comments51

Как настроить расширяемую систему для регрессионного тестирования на телефонах: опыт мобильной Почты Mail.Ru

Reading time10 min
Views19K


Привет, Хабр! Сегодня я хочу рассказать, как мы построили с нуля гибкую и расширяемую систему для выполнения автотестов на Android-смартфонах. Сейчас у нас используется около 60 устройств для регрессионного тестирования мобильного приложения Почты Mail.Ru. В среднем они тестируют около 20 сборок приложения ежедневно. Для каждой сборки выполняется около 600 UI-тестов и более 3500 unit-тестов.

Автотесты доступны круглосуточно — они экономят очень много времени тестировщиков и позволяют нам выпускать качественное приложение. Без них мы бы тестировали каждую сборку 36 часов (с учетом ожидания) или примерно 13 часов без ожидания. Вместе со сборкой, актуализацией переводов, при рабочей загрузке агентов с автотестами тестирование в среднем занимает 1.5 часа, что ежедневно позволяет нам экономить недели работы тестировщиков.

Мы рассмотрим, как всё делать с самого начала тем, кто занимается написанием автотестов, а не инфраструктурой: начиная от покупки телефона, его перепрошивки и заканчивая созданием docker-контейнеров, внутри которых будет доступен телефон для автотестов.
Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments26

Android WebView: актуальные проблемы и их решение

Reading time13 min
Views177K
На прошедшей встрече AndroidDevs Meetup выступили несколько разработчиков из команды мессенджера ICQ. Мой доклад был посвящен Android WebView. Для всех, кто не смог приехать на встречу, публикую здесь статью по мотивам выступления. Пойду по верхам, крупными штрихами. Глубоких технических деталей и много кода давать не буду. Если вас заинтересуют подробности, по ссылке в конце поста можно скачать приложение, специально написанное в качестве иллюстрации, и все увидеть на примерах.

Что такое WebView?


WebView — это компонент платформы Android, который позволяет встраивать web-страницы в Android-приложения. По сути, это встраиваемый браузер. При помощи WebView примерно год назад мы решили создать ICQ Web API для интеграции web-приложений в наш мессенджер. Что представляет собой web-приложение? По сути, это HTML-страница, которая содержит JavaScript и работает внутри ICQ. Используя ICQ Web API, web-страницы через JavaScript могут отдавать ICQ разные команды, допустим, на отправку сообщений, открытие чата и т.п.


Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments2

Интерполяция: рисуем гладкие графики средствами PHP и GD

Reading time6 min
Views58K
Распространенной задачей для программиста является рисование графиков. Входными данными является массив точек (xi;yi). Как правило, мы знаем только некоторые значения — в определенных точках графика. Чтобы построить непрерывный график кривой необходимо прибегнуть к интерполяции или аппроксимации.



Интерполяция — построение кривой, проходящей через заданные точки.
Аппроксимация — приближение кривой к исходной, но не обязательно проходящей через заданные точки.

В этом топике я хочу продемонстрировать свою библиотеку для PHP, которая производит интерполяцию с помощью многочлена Лагранжа, C-сплайна и сплайна Акимы, а также аппроксимацию кривой Безье. Дополнительно в ней реализована отрисовка отрезка со сглаживанием (антиалиасингом).

Кратко рассмотрим методы интерполяция и аппроксимации.
Читать дальше →
Total votes 80: ↑77 and ↓3+74
Comments23

Как мы выходили в ТОП-3 украинского App Store

Reading time4 min
Views9.3K


Если вы iOS-разработчик, работаете в компании по разработке iOS-приложений или любым другим образом связаны с этой сферой, то знаете приблизительное количество скачек, необходимое для выхода в топ. Цифры разнятся от категории к категории, каждый использует собственную стратегию, поэтому любой опыт важен. Ниже я хочу поделиться нашим опытом. Надеюсь, он будет полезен читателям. Хочу предупредить, кейс нетипичный. Мы выходили в топ украинского App Store, а не российского. Тут вы не найдёте магических "тысяч скачек с нулевым бюджетом на маркетинг". У нас так не получилось, и бюджет был хоть и небольшой, но уж точно не нулевой.

Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments7

Использование стандарта ES2015 в рамках библиотеки Backbone.js

Reading time2 min
Views14K

В то время, как ребята из команд, работающих над Angular, React, мягко, но уверенно пересаживают разработчиков на ES2015, я хотел бы немного рассказать о возможностях использования нового стандарта спецификации с библиотекой Backbone.js. На сегодня основной подход к использованию ES2016 в браузерах один и не зависит от используемого фреймворка/библиотеки. И заключается он в следующем: пишем код на ES2015 и с помощью транспайлера (напр., Babel) получаем код (который и выполняется в браузере) на предыдущем стандарте ES5.


Но как модули, классы и прочие "фишки" из ES2015 использовать в рамках сущностей библиотеки Backbone.js? Об этом речь пойдет под катом.

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments98

5 достойных изучения проектов с открытым исходным кодом на React Native

Reading time2 min
Views41K
Изучение открытого исходного кода – это лучший способ научиться писать качественный код, особенно если речь идет о новом инструменте с не полностью сформировавшимися стандартами. Одним из таких инструментов является React Native. Он постоянно дорабатывается, функциональность его API расширяется с каждым релизом, а количество библиотек растет. В то же время большинство обучающих ресурсов по работе с React Native очень поверхностны и не идут дальше вступительных рекомендаций. Но даже несмотря на это, изучение исходного кода должно быть нормой для каждого разработчика.

Я хочу представить 5 проектов с открытым исходным кодом, которые я изучаю сам и советую остальным.

Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments7

Дайджест интересных материалов для мобильного разработчика #145 (14-20 марта)

Reading time4 min
Views14K
В новом дайджесте – локализация для азиатского рынка, альтернативная жизнь без Google Play, два отчета о разработчиках (Stack Overflow и Developer Economics), новые инструменты, дизайн и истории разработки.

Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments0

Web-приложения в режиме offline. ServiceWorker и CacheStorage

Reading time6 min
Views41K

О чём речь?


Всё чаще возникает задача научить frontend-приложение работать в автономном режиме. Это значит придать web-приложению свойство mobile- или desktop-программы — функционировать в отсутствии связи с Интернет, а также в случае отказа сервера.

Цель — оградить пользователя от проблем соединения на его устройстве. Как было бы обидно не сохранить созданные в google docs таблицы из-за потери wi-fi в ближайшем фастфуде!

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

Решение задачи заключается в следующем:
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments2

Кризис ожирения сайтов

Reading time30 min
Views123K
Примечание переводчика: визит под кат этого поста означает большие объёмы потреблённого трафика. И это иронично, если учесть поднятую тему. Но всё сразу встаёт на свои места, если помнить, что в оригинале это было выступление в прошлом ноябре в Сиднее длиной почти в час. Чтение поста занимает куда меньше времени. В форме видеозаписи (1280×720) речь занимает два гигабайта. Пост же занимает всего лишь 12 МиБ. Рекомендуется просмотр на широких мониторах.



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

Выступление совсем не об этом. Я хотел бы поговорить об этом общественном кризисе здоровья, этом ожирении сайтов. Отличные дизайнеры, которые задумываются о вебе как я или даже больше, почему-то делают страницы, которые становятся больше. Речь пойдёт о текстовых в своей основе сайтах, которые по каким-то непостижимым причинам с каждым годом становятся всё больше и больше.
Читать дальше →
Total votes 97: ↑93 and ↓4+89
Comments123

Тестирование JS. Кармический Webpack

Reading time5 min
Views36K
image

Привет!

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

В этой статье хочу поделиться опытом смешивания гремучей смеси webpack + jasmine + chai + karma.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments15

Amelisa. Оффлайн и реалтайм движок для React и Mongo

Reading time6 min
Views20K

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




Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments15

Камасутра Start-up-а. Чеклист из 5 поз, без которых 70% проектов разваливаются менее чем за год

Reading time5 min
Views19K


При запуске нового проекта, всегда есть очень много специфических моментов, от которых зависит его жизнеспособность. Если покопаться в Google по запросам «Как запустить стартап», «Проблемы старапов» или «Опыт запуска стартапа», можно найти кучу статей, описывающих гору проблем в начинающихся проектах. Не смотря на свою непохожесть, они все объединены одной общей историей: «детские болезни» и ошибки, которые приводят к феерическому «сексу» с внезапно взбесившимся проектом и кучей неприятностей в придачу. Посему, сегодня будет краткий экскурс в прикладную «сексологию стартапов» с максимально подробным разбором практических моментов.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments2

Опыт переезда для работы программистом в Берлин (часть 1)

Reading time7 min
Views76K
Добрый день.

Представляю на суд общественности материал о том, как я за четыре месяца получил визу, переехал в Германию и нашел там работу.

Считается, что для переезда в другую страну нужно сначала долго искать работу удаленно, потом, в случае успеха, ждать решения по визе, и лишь после паковать чемоданы. Я решил, что это далеко не оптимальный способ, поэтому пошел другим путем. Вместо того, чтобы искать работу удаленно, я получил так называемую «визу на поиск работы», въехал в Германию, нашел здесь работу и уже после подал документы на Blaue Karte. Во-первых, в этом случае документы не ездят из страны в страну, и время ожидания визы значительно уменьшается. Во-вторых, поиск работы на месте радикально повышает ваши шансы, и это тоже заметно ускоряет процесс.
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments156

Тестирование вёрстки на визуальные регрессии с помощью PhantomCSS

Reading time9 min
Views25K
Работа с чужим кодом — одна из распространенных и сложных проблем, с которыми мне приходилось сталкиваться в своей работе. Почти в каждом случае предыдущий разработчик писал код не так, как бы мне этого хотелось.

И такие ситуации возникают довольно часто. Не каждый клиент имеет потребность, желание или бюджет переписывать весь проект с нуля.

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

С другой стороны, мы могли просто переименовать файлы и включить их в один прекомпилированный css (без какого-либо рефакторинга). Но для улучшения кода было бы хорошо порефакторить стили. Эта работа более затратная, но в будущем себя бы окупила. И, что самое важное — это позволило бы нам работать быстрее, с большей уверенностью что мы что-то не сломаем.

Раньше я рассматривал такие изменения как большие риски. В конце концов, C в CSS это каскадирование, где порядок абсолютно важен. Реструктуризация нескольких стилей означает изменение порядка, что, естественно, приводит к большому риску что-то сломать.

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

На этот раз было решено построить визуально регрессионный набор тестов.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments1

Реакция на долголетие: как мы обновили фронтенд Lingualeo

Reading time4 min
Views15K
image

«Если вам не стыдно за первую версию своего продукта, то вы опоздали с выходом на рынок»

Эти слова оправдывают развитие фронтенда Lingualeo с самого начала, с 2010 года. В сложном многоплатформенном продукте с 5-летней историей код наслоился чуть толще, чем пласты почвы над археологической Трипольской культурой. И вот, этот день настал: мы решили разбежаться и прыгнуть как следует, обновив платформу web-клиента. Ниже мы расскажем, что сделали, чтобы приземлиться как можно дальше от точки отсчета.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments30

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity