OpenQuality.ru

Качество программного обеспечения

Швейцарский нож для охотника за файлами

Добрый день.

Театр начинается с вешалки, а разработка приложений – с подготовки текстовых файлов. Мы пишем код, задаем конфигурационные данные, анализируем результаты. Спрос рождает предложение, и потому инструментов для работы с файлами существует великое множество: от специализированных средств разработки и текстовых редакторов до языков программирования и компактных утилит. Рассмотрим такую задачу: рекурсивно пройти по файлам заданного каталога и заменить в них все вхождения “ISASaddr” на “WebProxyURL”. Вот пара-тройка вариантов решения:

Однострочник Perl + find:

perl -p -i -e 's/ISASaddr/WebProxyURL/g' `find /home/work/ca/ -name *.cfg`

Или, к примеру, grep + xargs + sed:

cd /home/work/ca;grep -rl ISASaddr . |xargs sed -i -e 's/ISASaddr/WebProxyURL/'

Или PowerShell-цепочка в среде Windows:

get-childitem "d:\work\ca" -recurse | select-string "ISASaddr" -list |% { (get-content $_.Path) |% { $_ -replace "ISASaddr", "WebProxyURL" } | set-content $_.Path }

Swiss KnifeЧем больше опыта работы в командной строке, тем эффективнее решаются подобные задачи. В то же время, иногда такие решения выглядят как залп пушкой по воробьям: есть маленькие операции, которые хочется провести “в лоб” – просто и быстро. Особенно, если это однократная операция при анализе поведения системы или прототип автотеста. Хочется? Знакомьтесь, Swiss File Knife – швейцарский ножик для работы с файлами. Кросс-платформенный (проверено на SLES 10, Ubuntu 8.10 и Win 2k3). Что он умеет? Для начала вернемся к исходной задаче. Вот как ее можно решить:

sles54:/tmp # ./sfk-linux-lib5.exe replace -pat /ISASaddr/WebProxyURL/ -dir /home/work/ca -file .cfg -yes

А вот еще несколько простых примеров. В заданном каталоге найти три самых больших файла:

sles54:/tmp # ./sfk-linux-lib5.exe list -big=3 -dir /usr/bin

Или два самых свежих:

sles54:/tmp #./sfk-linux-lib5.exe list -late=2 -pure /tmp

Или пять самых старых:

sles54:/tmp # ./sfk-linux-lib5.exe list -old=5 -pure /tmp

Или три самых маленьких:

sles54:/tmp # ./sfk-linux-lib5.exe list -small=2 -pure /tmp

Задачка чуть посложнее: отфильтровать файл, исключив строки, содержащие дату в формате MMM dd HH:mm:ss (Feb 24 04:15:39) и слово reporting:

 sles54:/tmp # ./sfk-linux-lib5.exe filter /var/log/shuttle.log "-ls:??? ?? ??:??:?? * reporting"

Рекурсивно пройтись по заданному каталогу и найти файлы с одинаковым содержимым:

sles54:/tmp # ./sfk-linux-lib5.exe dupfind /tmp/dir1

Скопировать все текстовые файлы из каталога /tmp/test1 в каталог /tmp/test2, за исключением файлов-дупликатов:

sles54:/tmp # ./sfk-linux-lib5.exe dupfind -listorg /tmp/test1 .txt +run "cp #file /tmp/test2" -yes

Нравится? “Ножик может, ножик может все что угодно”. Вот неполный список “лезвий”:

* статистика по файлам в разрезе времени, размеров, типов
* эффективный поиск с фильтрацией и заменами “на лету” (как текстовые, так и бинарные файлы)
* “карманные” ftp- и http-серверы, функциональность wget
* разбивка больших файлов на части и склеивание в одно целое
* синхронизация файлов в каталогах
* hex-дампы, исходный код из бинарников, преобразование форматов, работа с md5

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

Оставайтесь с нами и расскажите про швейцарский ножик друзьям. До встречи.

*********************
Sun Tech Days 2010 в Санкт-Петербурге: эксклюзивные доклады, посвященные тенденциям развития cамых современных технологий. Участие в конференции – бесплатное. Подробности.
*********************

09.03.2010 Капитан Аляска | Инструменты | Комментарии

Февральская лента: лучшее за месяц

Добрый день.

События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование.

Разработка приложений

• Платформа Android: введение в разработку приложений и небольшой пример облачного сервиса (1, 2).

• Разработка web-интерфейса для бизнес-приложения: разбор по полочкам и несколько полезных советов.

• Ввод пароля в web-приложении: как облегчить жизнь рядовому пользователю и при этом не подвергать угрозе безопасность его данных?

• Пять фраз, от которых разработчику нужно бежать как от огня.

• Двадцать пять наиболее опасных ошибок в программном обеспечении по версии CWE/SANS.

• Второе издание пособия Microsoft по проектированию архитектуры приложений выложено в открытый доступ (необходима регистрация).

• Семь признаков необходимости перехода к хранилищу данных, работающему вне парадигмы SQL.

• Подборка из десяти руководств для начинающих web-разработчиков.

• Гибкие методики или модель водопада: страсти не утихают.

• Команда разработчиков Firefox: как исправлять баги, не внося новые.

• Dr. Christof Eber: подходы к эффективному управлению жизненным циклом приложения.

• Java: на вкус и цвет товарищей нет.

• Рассказ о том, как уроки математики могут пригодиться при проектировании дизайна web-приложений.

• Краткое руководство по написанию гениально плохого кода.

• Разработка AJAX-приложений: подборка советов и ссылок на ресурсы.

• Don Syme, создатель языка F#, рассказывает о своем продукте, делится мыслями о будущем средств разработки ПО и практиках написания качественного кода.

• Martin Fowler: каждый участник команды, практикующей гибкие методы разработки, имеет право голоса при выработке тактики и стратегии развития продукта.

• TDD для начинающих: ответы на популярные вопросы.

• Windows Azure: архитектура, функциональность, варианты развертывания, стоимость.

• Hip-hop: php-модули конвертируются в С++ и далее в G++. Цель: снижение нагрузки на CPU и более эффективное использование ранее написанного php-кода.

• Application Verifier: какие возможности предоставляются разработчику для отладки приложений?

Тестирование программного обеспечения

• Patrick Copeland, высокопоставленный сотрудник Google, делится своим видением будущего Google и информационных технологий в целом. “Кухня” поискового гиганта, подходы к обеспечению качества и другие материалы (1, 2, 3).

• Были и небылицы, курьезные случаи и невероятные истории, яркие впечатления и незабываемые эпизоды, связанные с работой тестировщиков.

• James Whittaker, Michael Bolton и James Bach черпают вдохновение в событиях прошлого, выстраивая аналогии между историческими событиями, производством, наукой управления и тестированием программного обеспечения (1, 2, 3, 4).

• Эффективное тестирование web-cайта на основе алгоритма, который построен на оптимальном подборе пользовательских сценариев исходя из представления структуры сайта в виде дерева.

Инструменты автоматизации и модульные тесты

• Adam Goucher, неутомимый коллекционер ссылок по Selenium, выложил очередные подборки (1, 2).

• I.M.Testy рассказывает страшные истории и утверждает, что автотесты графического интерфейса – не лучшее средство для тестирования функциональности продукта.

• Turtle – библиотека для работы с mock-объектами в C++, созданная с прицелом на простоту, гибкость и удобство использования.

• Ranorex 2.2.2: список новшеств и исправлений в свежем релизе продукта.

• Мониторинг web-сайтов: краткий обзор, методы и инструменты.

• Тестирование JavaScript-кода с помощью QUnit.

• Тест с Selenium RC, преобразованный в консольное приложение: краткое руководство к действию.

Системное администрирование

• Секреты в администрировании StackOverflow: как безопасно и эффективно проводить сжатие резервных копий баз данных.

• Простой и эффективный способ отразить DDoS-атаку с помощью nginx и iptables.

Разное

• Программирование и бег: возможно ли заниматься этим одновременно? WalkStation – вперед и с песней!

• История о том, как Python был “причесан” в дебрях Ubuntu и что из этого вышло.

• Матрица компетентности программиста: что нужно знать и уметь, к чему стремиться.

• Прогноз пятнадцатилетней давности: у Интернета нет будущего. Что нам кажется невозможным сегодня?

• Сбываются мечты тестировщиков и специалистов по безопасности систем: ботнеты начинают воевать друг с другом.

• Joel Spolsky: уровень продаж определяется не количеством продавцов и маркетологов, а качеством продукта.

• Работа в Google: взгляд инсайдера после месяца работы в компании.

• Взгляд в будущее: что скрывается за облаками? Что придет им на смену?

• Путь Python-программиста: от начинающего юнца до маститого гуру.

Вышло в эпизодах:

Р. Ни дня без строчки.
Т. Ни дня без теста.
К. Может, хватит? У меня 10 классов, я уже взрослый.
Б. Как class’но! Ни дня без бага!

Б1. А давай к нам переходи.
Р1. А что у вас такого хорошего?
Б1. А у нас тестировщиков нет. Пиши, что хочешь, как хочешь. Лишь бы не работало!
Р1. А деньги?
Б1. После испытательного срока!

Б1. Что-то я сомневаюсь.
Б2. Точно здесь, я отвечаю.
Б1. Верно. Здесь уже никто не смотрит и еще нет автотестов.
T1. Не стыдно вам – бить со спины?
Б1. А тебе, тебе не стыдно? Зачем о нас плохо думать? Мы …
Б2. … сценарий пишем. Кино про старые времена снимать будем!

Б1. Слыхал что-нибудь про рейтинг?
Б2. Краем уха. Чем больше пользователей тебя найдут, тем больше баллов на твоем счету.
Б1. И зачем мне это? Фи, дешевая популярность.
Б2. Не скажи. Можно продавать рекламную площадку в сообщениях об ошибке!

Главное событие весны

8-9 апреля 2010
Санкт-Петербург, ЛенЭкспо, 7 павильон
http://www.sun.ru/techdays

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

В течение более 10 лет Sun Tech Days привлекает посетителей серией эксклюзивных специализированных докладов, посвященных тенденциям развития cамых современных технологий. В 2009 г. в Sun Tech Days приняли участие более 3500 участников. Sun Tech Days 2010 превзойдет самые смелые ожидания и станет крупнейшим в Европе мероприятием для сообщества Java и Solaris.

В роли ведущего докладчика выступит Джеймс Гослинг – автор языка программирования Java, человек, ставший легендой для разработчиков во всем мире. Второй день начнется пленарным докладом корпорации Oracle. Совместные инициативы компаний Sun и Oracle станут одной из интереснейших тем конференции.

На Sun Tech Days будут представлены доклады по самым свежим темам: JavaFX TV, Java7, обновления Solaris, OpenStorage, новое в разработке ПО для мобильных устройств и другое. Ведущие разработчики расскажут о последних изменениях в технологиях JavaFX, Java EE, Java SE, Java ME, средствах разработки, Solaris, виртуализации. На конференции пройдет ряд мастер-классов и тренингов, активная работа стендовой зоны будет дополнена докладами от Sun, Oracle, Intel, партнеров и спонсоров конференции.

Участие в конференции – бесплатное, число участников ограничено.

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

Зарегистрируйтесь сегодня!

Cпонсоры конференции: Oracle, Intel, Deutschebank, Elcom, Jetbrains
Информационные спонсоры: HabraHabr, Books.Ru, CIT Forum, HeadHunter, LinuxFormat,
linuxcenter.ru, Books.RU, PCWEEK, Открытые системы
Информационные партнеры: RUSSOFT, It-Event.Ru, www.it4business.ru, happy-pm.com, Sofline, software-testing.ru, fruct.org, OpenQuality.ru

================

Всего наилучшего. Оставайтесь с нами.

01.03.2010 Капитан Аляска | С миру по нитке | Комментарии (2)