среда, 14 сентября 2011 г.

Результаты опроса: "Какую систему контроля версий Вы используете"..



Некоторое время назад добавил небольшой опрос с целью примерно понять, какова популярность той или иной системы контроля версий.
Полученные на данный момент результаты не претендуют на стопроцентную репрезентативность - аудитория моего блога не столь обширна, как хотелось бы ) Да и в опросе пока поучаствовало не так много людей.. но тем не менее...

Системы контроля версий
Небольшие комментарии по результатам:
Лидерство Subversion предсказуемо. Как говорится - "сложилось исторически". Для меня наиболее интересен был "спор" Git и Mercurial. Git действительно более раскручен (чего стоит только один github), хотя особых преимуществ в функциональном плане не дает. Остается интересным и открытым вопрос, что кроется за словом "Другая" - там точно есть TFS, bazaar и многие другие... Удивила CVS - судя по всему , эта система скоро станет экзотикой - мир не стоит на месте...

воскресенье, 11 сентября 2011 г.

Небольшой оффтоп: возвращаем в жизни роутер

Несколько дней назад внезапно из строя вышел мой домашний WiFi-роутер Asus Wl=500G Premium.   Симптомы: невозможно достучаться даже по проводу ни по одному из протоколов, горят все лампочки, выключение , сброс настроек ни к чему не приводят. Обращение к знакомым обладателям подобных устройств и поисковой выдаче гугла выявило, что "слабым" местом этого девайса является его блок питания. Симптомы при выходе его из строя похожи. Вскрываю БП и действительно вижу слегка вздутый конденсатор. Радуюсь, что как правило в двух местах сразу такие вещи не ломаются и причина скорее всего в этом. У меня полетел конденсатор на 1200микрофарад, 10 вольтовый. В "Чипидип"е , что на Проспекте Мира куплена замена : радиальный , 1000 микрофарад (на 1200 найти не удалость), 10 вольтовый. Старый выпаян, новый впаян и, ура, в каждом уголке моей квартиры снова появился его величество Интернет =)

Конечно же, можно было просто купить новый БП. Но как-то это не интересно, что ли.

В общем, небольшой крюк в электронный магазин по дороге с работы домой , 20 минут на разбор корпуса БП (та еще нервотрепка) и 10 минут пайки неопытными в этом деле руками. В итоге все работает отлично.
Надеюсь, кому-нибудь, приведенная информация будет полезна.

среда, 17 августа 2011 г.

Загрузка файлов клиентом и Selenium

В целях автоматизации тестирования  некоторых сценариев точечно применяю Selenium-тесты на perl-е + Selenium RC.
До сих пор не приходилось сталкиваться с автоматизацией кейсов, связанных  с аплоадом файлов. И вот такая необходимость возникла.
Итак , запускаю Firefox + Selenium IDE , записываю действия по аплоаду и экспортирую в perl-виде.
Смотрю, какими же командами IDE мне сэмулировал нужную последовательность. Удивленно вижу, что для указания нужного файла используется всего навсего type с локатором файлового INPUT-поля и полным путем файла.
Отсекаю лишнее ,добавляю нужное , встраиваю в perl-фреймворк и вижу , что тест не проходит.
Копаю perl-библиотеку для работы с Selenium (WWW::Selenium) , радостно нахожу команду attach_file , пытаюсь ее применить и не получаю результата.
Гуглю, вижу всяческие рецепты,  как можно извратиться с помощью спец js-скриптов, дополнительных exe-утилит (для Windows).. Ни то ни то не подходит. Как раз в тот момент, когда хотелось "забить" на аплоад, в "буржнете" попался очень простой совет - принудительно установить фокус на поле с именем файла после его заполнения. НЕ веря в успех, попробовал и получилось...Работает (в *chrome - режиме) , аплоадит, тестируется =)

p.s.
По поводу Selenium 2.0 - слышал, что там проблема пользовательского аплоада стоит гораздо менее остро. Лишний повод познакомится и попробовать.

UPD 22/08/2011:
Перечитал пост и понял, что из него до конца неясно, какая же последовательность команд решает проблему? Ответ: focus +  type . attachfile можно вообще не использовать. По крайней мере, в моей ситуации со стандартными контролами пользы от этой команды  никакой.

пятница, 5 августа 2011 г.

Лень и кроссплатформенные баги

Лень далеко не всегда является двигателем прогресса. В тех случаях , когда надо снять с себя ручную рутину, автоматизируя часть задач - да, согласен - такая лень приводит к тому, что появляется больше свободного времени.. в том числе , чтобы порубиться в StarCraft :) Но когда лень заставляет тебя делать что-то спустя рукава , то это уже не прогресс , а сплошной источник проблем... В том числе и в ИТ, в том числе и в разработке-тестировании...

Вот пример: Разработчику поступила задача слобать некий cgi-скрипт. Веб-продукт, частью которого будет этот cgi-скрипт , заявлен как работающий под любой *nix - системой: Linux, FreeBSD, Solaris ..etc
По ходу дела девелопер сталкивается  с необходимостью работы с датами. В любом уважающем себя языке программирования, особенно в скриптовом, есть библиотеки для кроссплатформенной работы с датами. Но с ними надо разбираться, читать маны..разработчику ( кодящему , к примеру, в linux) неохота, ведь он знает быстрый способ - запустить из скрипта консольный date с нужными ему флагами и распарсить вывод этой команды. Сказано - сделано. date убран в обратные кавычки (если это,  к примеру perl), вывод распарсен, дата в нужном формате получена и в итоге скрипт написан и вроде как работает...У тестирования, к примеру, цейтнот и есть время на проверку в самой распространенной конфигурации, которой, к примеру является работа на  linux.... Или же тоже лень проверять во всех конфигурация... В общем ,  протестировали в linux - все ок. Релиз. В итоге находится пользователь, который ставит продукт на Solaris и получает 500-тки. Ругается и топает ногами "За что я заплатил деньги".. При разборе полета выясняется , что у GNU-той команды date  в SunOs совсем другие параметры, из-за чего скрипт ленивого разработчика аварийно завершается.

В общем лень лени рознь. Разработчикам советы давать не охота, а вот нам - тестировщикам , посоветовал бы не лениться ;)

четверг, 4 августа 2011 г.

Тестовый smtp-сервер в одну строчку

Недавно я делился советом о том, как быстро поднять тестовый http сервер в произвольной директории. Вот еще еще одна плюшка от python-a, которая может сэкономить немало времени в определенных ситуациях..
Например, вы разработчик и кодите нечто, что должно отправлять почтовые сообщения по smtp. Или же вы тестировщик, который должен проверить отправку неким приложением письма.
Вот практический совет, как поднять тестовый smtp-сервер, который будет принимать сообщения по указанному порту и дампить их на stdout:


python -m smtpd -n -c DebuggingServer localhost:1025


UPD 04.08.2011:
Да, эта "штука" может быть полезна при создании комплексных автоматических тестов, например систем регистрации новых пользователей и тому подобных вещей. В настоящее время как раз проводим ручное тестирование нового функционала , связанного рассылками писем пользователям и, возможно, описанная выше "фича" окажется полезной.

среда, 3 августа 2011 г.

grep по сетевым пакетам

Тем, кто знает , зачем может понадобиться сниффать сетевые пакеты, анализировать их содержимое хочу посоветовать GNU-утилиту ngrep, которая позволяет с легкостью проводить в реальном (!) времени grep по содержимому сетевых пакетов.
Утилита есть в репозиториях практически всех linux-дистрибутивов.
Подробно о ее возможностях можно узнать в ее man-е , а также на странице проекта.

Пример: "Поиск в HTTP-пакетах дефолтного интерфейса по строке 'login' "

sudo ngrep 'login' -W byline  port 80

Результат:


 T 10.33.4.105:46837 -> 10.33.4.106:80 [AP]
GET /cgi-bin/clients/STUB?login=type%20login%20here&psw=ecaae631e3e96de095a45d015c3b4e99&phones=74953222233&mes=messagetext.&charset=utf-8 HTTP/1.1.
TE: deflate,gzip;q=0.3.
Connection: TE, close.
Host: some.host.name.
User-Agent: libwww-perl/5.837.
.

##
T 10.33.4.106:80 -> 10.33.4.105:46837 [AP]
HTTP/1.1 200 OK.
Date: Wed, 03 Aug 2011 11:39:43 GMT.
Server: Apache/2.2.3 (CentOS).
Connection: close.
Transfer-Encoding: chunked.
Content-Type: text/html; charset=ISO-8859-1.
.
54.
$VAR1 = 'login';
$VAR2 = 'psw';
$VAR3 = 'phones';
$VAR4 = 'mes';
$VAR5 = 'charset';

среда, 27 июля 2011 г.

KDE как образец организации обратной связи

Некоторое время пользуюсь дистрибутивом Debian Squeeze со штатной графической оболочкой KDE4. Хочу вкратце описать как устроен фидбек по багам в этом софте и поделиться своим восхищением =)
На примере сбойнувшего приложения Blogilo. Это штатная для KDE утилита , позволяющая отправлять посты в блоги с декстопа. Сегодня я ей решил воспользоваться, ну и напоролся на аварийное завершение в одном из сценариев ее использования.
Поначалу ругнулся, но когда увидел, как система отреагировала на сбой , то все заскриншотил, специально повторив crash приложения для этого =)
Итак, сразу после сбоя, я увидел довольно функциональное окно с возможностью зарепортить баг, посмотреть причину сбоя и т.д.

Далее "окошко вежливости":

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


Потом окно со стектрейсом, который тут же можно сохранить в файл, скопировать в буфер обмена и т.д.:



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

Далее самое интересное..

До чего дошел прогресс (с)

Недавно открыл для себя очень полезную и простую фичу в python-e.
Буквально одной строчкой в консоли поднимается простенький веб-сервер:


python -m http.server 8000 (для 3-x версий питона)

python -m SlimpleHTTPServer (для 2.X версий питона)


Если явно не указать порт, то будет висеть на 8000.

В итоге при запросе http://:8000/ видим листинг директории, в которой он был запущен.

Как минимум умеет:
1. отображать статические страницы, подхватывает index.html
2. если нет индексной страницы, то показывает листинг текущей директории

Именно второй пункт и оказался для меня полезным, в ситуациях , когда надо быстро забрать/отдать тот или иной файл с той или иной машины.

четверг, 21 июля 2011 г.

Как быстро снять скриншот на гуглофоне

Недавно потребовалось оперативно снять скриншот на Android-смартфоне. Компьютера с SDK под рукой не было. Выручило приложение ShootMe. Доступно на маркете, бесплатно.
Чтобы снять скриншот надо запустить приложение и просто потрясти аппарат :)
Снимки получаются хорошего качества, можно выбрать формат jpg или png (по-умолчанию):

Работать с программой удобно, еще бы вот интегрировать с Evernote или почтовиком - цены бы не было.
Также просто с помощью этой программы снимаются скринкасты, для которых можно выбрать кодек и указать фреймрейт.

понедельник, 18 июля 2011 г.

Насколько может быть важен robots.txt

Сегодня позабавила новость о том, что в поисковой выдаче Яндекса и в его кеше появились смски, которые ничего не подозревающие пользователи одного из "большой тройки" отправляли с использованием веб-сервсиса отправки сообщений.

К моменту написания этого поста выдача и кеш были почищены , хотя с утра еще по запросу :


http://yandex.ru/yandsearch?p=6&text=url%3Awww.sendsms.megafon.ru*+|+url%3Asendsms.megafon.ru*&fyandex=1&lr=213

красовались сотни страниц выдачи с номерами телефонов и текстами сообщений - было забавно почитать некоторые)

В общем, кто хотел, информацию слил на совершенно законных основаниях с совершенно открытого источника.

А Вы пользовались этим сервисом этого оператора ? :)

p.s. утечка произошла из-за особенностей сервиса и невнимательного отношения к настройке robots.txt , а может незнания того, что для "паука" все разрешено, что не запрещено :)


UPD 21/07/2011:
"Оказались в паблике" потому , что:
1. либо не было файла robots.txt
2. либо в нем не было директив запрещающих индексацию "секретного" URL. Все что не запрещено явно - разрешено для индексации
3. возможно для user-agent 'Yandex' правила и были, только Яндекс , насколько я знаю при индексации иногда заходит на сайты с "левым" агентом. Делается это для борьбы с черными сеошниками (отдельная интересная , но объемная тема)

Вопрос 2: как поисковик узнал о секретном урле со временными смсками?
Тут все просто - для этого не обязательно наличие ссылки со страницы. Тут возможны по меньшей мере 2 варианта, откуда Яша узнал:

1. Кто-то сообщил , используя Яндексовскую-же форму "Сообщить о новом сайте" , где можно указывать произвольный URL, который поисковик попытается обойти при следующем обходе.
2. Поисковик "отреверсил" структуру ресурса. Это не очень сложная задача, а для Яндекса тем более.

Вот такие вот соображения. Все объяснимо, так что не стоит верить зомбоящику, который трубил о "хакерской атаке". Хакеры, если бы взломали, то дефейс был бы куда серьезнее и не ограничились бы "тысячами" смс-ок.