Как стать автором
Обновить
164
0
Андрей Ребров @mythmaker

Технический директор

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

Подробнее о Sikuli в автоматизации тестирования

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

Вступление


Sikuli — это API позволяющая писать на Jython сценарии автоматизации опираясь на визуальную составляющую любой программы/сайта и т.д. Особенно приятна для автоматизации Flash.
О Sikuli написано мало статей и большинство из них обзорные. Ещё меньше русскоязычного хелпа, и ещё меньше примеров кода. И отсутствие последнего пожалуй самое трагичное для тестировщика ПО который столкнулся в работе с необходимостью автоматизировать какой либо флэш. Как раз это и подтолкнуло меня написать более ёмкую статью по Sikuli и описать несколько подробнее некоторые особенности использования.

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

Нечестное преимущество — Интервью с Сергеем Белоусовым

Время на прочтение10 мин
Количество просмотров22K
ИТ-стартап без венчурного финансирования практически обречен. Чтобы привлечь деньги, нужны валидная идея, четкое видение настоящего и будущего, мотивированная команда и продуманный механизм выхода инвестора из проекта.



Сергей Белоусов: «Мы инвестируем в компании не больше 5 млн долларов. Это не значит, что бизнес, которому нужно больше денег, плохой. К нам не раз приходили люди с просьбами вложить 10 или 100 млн долларов, но мы отказывали. Иногда зря»

Для российского ИТ-рынка Сергей Белоусов — личность легендарная. Его очень краткая биография выглядит так: бизнесом начал заниматься еще студентом Московского физико-технического института, после выпуска с партнером организовал производство телевизоров, основал компанию Rolsen. Далее было сотрудничество с американской софтверной компанией Solomon, создание в Сингапуре SWsoft, позже превратившейся во всемирно известные Parallels, Acronis и Acumatica.

— Есть много различных моделей предпринимательства, я занимаюсь самой мучительной — создаю множество средних бизнесов, — признается Белоусов. — В фильме «Социальная сеть» звучала мысль: лучше поймать одного марлина, чем много форелей. Мне, к сожалению, приходится ловить много форелей. За свою карьеру я основал пару десятков компаний, и самые крупные из них — Rolsen, Acronis и Parallels — по выручке далеко не Facebook.

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

Hibernate Cache. Практика

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

Миграционные скрипты

Пожалуй, одной из наиболее частых проблем при работе с кешем в моем приложении является необходимость накатывать миграционные скрипты на работающий сервер. Ведь если эти скрипты запускаются не через фабрику сессий работающего сервера, то кеш этой фабрики никак не узнает об изменениях, которые делаются в базу. Следовательно, получаем проблему несовместимости данных. Для решения этой проблемы есть несколько путей:
  1. Рестарт сервера — самый простой и, обычно, самый не приемлемый способ;
  2. Очистка кеша через определенные механизмы — пожалуй самый оптимальный по простоте и надежности метод. Этот метод можно вынести, например в JMX, на веб страничку или другой интерфейс и вызывать при необходимости. Гибкость метода в том, что пишется это один раз, а используется сколько угодно и где угодно. В случае, если Ваш провайдер кеша — EHCache и класс провайдер — SingletonEhCacheProvider, то Ваш код может выглядеть так:
    public String dumpKeys() {
        String regions[] = CacheManager.getInstance().getCacheNames();
        StringBuilder allkeys = new StringBuilder();
        String newLine = System.getProperty("line.separator");
        for (String region : regions) {
            Ehcache cache = CacheManager.getInstance().getEhcache(region);
            allkeys.append(toSomeReadableString(cache.getKeys()));
            allkeys.append(newLine);
        }
        return allkeys.toString();
    }
    

    Естественно что этот код должен выполняться в том же процессе что и хибернейт, статистику которого Вы хотите отследить. Подробней можно прочитать тут. Того же можно добиться используя фабрику сессий.
  3. Запуск миграционных скриптов, используя фабрику сессий работающего сервера. Это похоже на второй метод, с той лишь разницей, что мы не очищаем кеш, а пропускаем все миграционные скрипты через существующую фабрику. Таким образом все необходимые кеши обновляться сами. Этот метод рационально использовать в случае если кеш большой и дешевле его обновлять нежели создавать по новой;

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

PhantomJS + JSCoverage + QUnit или консольные JS юнит-тесты с подсчетом покрытия

Время на прочтение4 мин
Количество просмотров6.1K
Поговорим о случае, когда нужно автоматизировать запуск тестов и сбор статистики покрытия, к примеру, для гипотетической клиентской JS библиотеки. Задача не совсем тривиальна, поскольку для нормальной работы библиотеки требуется полноценный браузер — библиотека является визуальной оберткой над стандартными компонентами формы. Библиотека должна быть написана так, чтобы все взаимодействие с ее объектами можно было производить с помощью методов, которые они предоставляют, а не только через непосредственные манипуляции с DOM (т.е. любое действие юзера может быть запущено не только событием, допустим, клика по чему-то, но и руками через метод). Но тем не менее, надо этот DOM иметь, чтобы результаты работы методов помимо изменения внутреннего состояния объектов также отображались и в DOM. В целом напоминает приложения на Sencha (ExtJS).

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

Как Google тестирует ПО

Время на прочтение9 мин
Количество просмотров40K
Прослушав вебинар «How Google Tests Software» я был так вдохновлен, что решил записать некоторые тезисы. Эта статья и есть мой конспект. Прежде всего, я должен внести ясность относительно ее содержания. Это не дословный перевод. Здесь описаны только те вещи, которые показались мне важными. Проще говоря, здесь описано не все, что прозвучало в вебинаре. Так же существует вероятность, что я понял что-то не до конца или даже понял неправильно. Поэтому горячо рекомендую прослушать вебинар самостоятельно.
Его ведет Джэймс Витакер, который в данный момент занимает пост технического директора по тестированию ПО в Google. Джэймс совместно с коллегами готовится выпустить одноименную книгу. В ней можно будет получить исчерпывающую информацию о том, как проводят тестирование GoogleMaps, Google+, ChromeOS, Android и т.д…
Читать дальше →

Реализация HTTP server push с помощью Server-Sent Events

Время на прочтение4 мин
Количество просмотров17K
На эту тему было уже много статей, но раскрыта далеко не вся правда. Для тех, кто пропустил — читайте Создание приложений реального времени с помощью Server-Sent Events .

Как же работает Server-Sent-Events?


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

Инструкция разработчика

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

Про баги


1. Нашел новую багу у себя – ВОЗРАДУЙСЯ! Ибо можешь ее пофиксить пока никто не заметил.
2. Нашел новую багу у другого – ВОЗРАДУЙСЯ! Ибо ты проявишься инициативный сотрудник.
Читать целиком

Cross-domain «ajax» — простое решение

Время на прочтение7 мин
Количество просмотров200K
В очередном проекте я столкнулся с необходимостью активно работать с кросс доменными запросами на ajax, тема, как я вижу на хабре особо не поднималась и не освещалась, вот и решил поделиться с читателями свои опытом.
Читать статью

Разработка мобильных приложений на PhoneGap и jQuery Mobile

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


PhoneGap — это OpenSource платформа, позволяющая разрабатывать мобильные приложения на HTML, JavaScript и CSS под различные платформы (практически без изменения кода приложения) в их число входят: iOS, Android, Blackberry, WebOS, Symbian и Windows Mobile на подходе. Прелесть его в том, что он не требует навыков разработки под конкретную платформу. Вы пишете свое приложение на JavaScript, используете HTML и CSS для разметки. Вы пишете мобильное приложение как обычный сайт или веб-сервис.
Движок PhoneGap расширяет API браузера и добавляет следующие возможности: доступ к акселометру, доступ к камере (пока только фото), доступ к компасу, доступ к списку контактов, запись и прослушивание аудио файлов, предоставляет доступ к файловой системе, позволяет работать с разными HTML5 хранилищами localStorage, Web SQL и т.п а также позволяет безболезненно обращаться к любому кросс-доменному адресу.
Кроме платформы PhoneGap имеет, пока бесплатный, билдер приложений под все устройства в один клик.

jQuery Mobile


Думаю все знают, но напомню ещё раз. jQuery Mobile — это надстройка над jQuery, позволяющая безо всяких проблем разрабатывать мобильные веб сайты и мобильные веб приложения.

Если вы знаете HTML, JavaScript, CSS, jQuery и испытываете проблемы с Java, Objective-C и другими, но желаете попробовать свои силы в мобильной разработке, то эта статья для вас.
Читать дальше →

Разработка мультитач веб-приложений

Время на прочтение6 мин
Количество просмотров59K
Мобильные устройства такие как сматрфоны или планшеты обычно имеют емкостный экран, чувствительный к прикосновениям для расширенного взаимодействия с пользователем.

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

Apple ввел свое touch events API в iOS 2.0, вскоре устройства на Android тоже получили такую возможность и touch events API стал стандартом де-факто. Недавно была собрана рабочая группа W3C для работы над touch events specification.
В этой статье я рассмотрю touch events API, которое нам предоставляют устройства на iOS и Android, мы изучим какие приложения можно создавать, используя touch events API. В статье куча полезных примеров и техник, которые позволяют упростить написание приложений с touch events API.
Читать дальше →

Книги, видео и другие материалы по разработке под iOS

Время на прочтение4 мин
Количество просмотров114K
«Хочу программировать под iPhone — говори, что почитать...»
Любимая девушка


Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.

Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
Читать дальше →

Sencha Touch Tutorial 1: Первые шаги

Время на прочтение1 мин
Количество просмотров15K
Это первый видео урок по JavaScript-фреймворку Sencha Touch.



В этом скринкасте я разобрал следующие темы:
  • азы создания веб-приложений на базе библиотеки Sencha Touch;
  • компоненты Ext.Panel, Ext.Toolbar, Ext.Button и некоторые из их конфигурационных свойств;
  • порядок применения значений свойствам компонента

Исходный код урока можно взять отсюда.

Ссылки на остальные уроки: 1, 2, 3

Дополнительную информацию о разработке под мобильные платформы можно найти в моём блоге.

Пишем первое приложение для Android

Время на прочтение8 мин
Количество просмотров561K
В любом деле самое сложное — это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

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

Как продать идею?

Время на прочтение4 мин
Количество просмотров134K
Меня очень часто посещают различные идеи для стартапов разных направлений, от сайтов до реального физического бизнеса. Идеи как маленькие — «так-же, только с перламутровыми пуговицами», так и большие, по производству чего-либо определённым способом или на полноценные коммерческие сайты.

Но как правило дальше идей они не живут, самому реализовывать нет никаких для этого ресурсов (дом, семья, работа), отдавать кому-то «за бесплатно» как всегда жалко, отдавать за деньги — никто не возьмёт.

Путешествуя по просторам интернета, я не мог не заметить, что вопрос «продажи идей» на разных стадиях их развития стоит не у меня одного, по всей сети очень часты сообщения типа «есть идея на миллион, сам не ам, просто так не дам, как получить за неё денег, хотя-бы десять тыщ?»

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

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

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

Интегрируем Twitter в ваше Android приложение

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

Интегрируем Twitter в ваше Android приложение


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

Создание портала проекта с использованием технологий Google

Время на прочтение2 мин
Количество просмотров4.1K
Project Management Collaboration

Всем доброго времени суток!

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

На GoogleSites есть соответствующий шаблон для портала проекта. Приведу его краткий обзор.
Читать дальше →

Используем console на полную

Время на прочтение6 мин
Количество просмотров459K
Метод console.log() — отличный способ вывести отладочную информацию, не мешая пользователю. Но знаете ли Вы, что объект console имеет еще уйму других не менее полезных методов? Очень редко разработчики используют этот функционал, ограничиваясь неблокирующим alert'ом. Что-ж, давайте исправим это положение.

Вкусности console

DOM Storage window broadcast

Время на прочтение2 мин
Количество просмотров8K
В статье речь пойдет об интересном DOM Storage эвенте, который позволяет выполнять броадкаст общение между окнами обраузера одного домена не подозревающих об существовании друг друга.

image

DOM Storage (localStorage sessionStorage) кроме потрясающей возможности хранения информации на клиенте имеет ещё одну документированную, но малоизвестную возможность — уведомление об изменении/удалении элемента DOM Storage для всех окон открытых из текущего домена.
Читать дальше →

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Время на прочтение20 мин
Количество просмотров317K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.

Подсвечиваемый виджет в Android

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

Здравствуйте, уважаемые хабражители. В данной статье описывается процесс создания «подсвечиваемого» виджета, то есть виджета, который можно выделить с помощью пятипозиционного манипулятора D-Pad, присутствующего во многих Android-устройствах в виде трекболов или кнопок. Эта статья ориентирована на подготовленного читателя, уже написавшего свой первый «Android hello, world». Думаю, не стоит рассказывать о преимуществах управления аппаратными клавишами на устройствах с ёмкостным экраном в холодное время года, так что сразу приступим к делу.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Syosset, New York, США
Зарегистрирован
Активность