<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.2.1" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">

<channel>
	<title>OpenQuality.ru</title>
	<link>http://blog.openquality.ru</link>
	<description>Качество программного обеспечения</description>
	<pubDate>Wed, 01 Feb 2012 06:14:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/OpenQuality" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="openquality" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">OpenQuality</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/OpenQuality" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FOpenQuality" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><item>
		<title>Январская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-0112/</link>
		<comments>http://blog.openquality.ru/software-quality-news-0112/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 06:14:43 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-0112/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: архитектура систем; разработка приложений; модульные тесты; баги и промашки; тестирование и тестировщики; инструменты автоматизации; системное администрирование; вопросы на интервью; эпизоды.
&#160;
Архитектура систем
&#160;
&#8226;&#160;SQL почил? Да здравствует SQL: масштабируемость NoSQL-решений обрамляется SQL-оболочкой для выполнения сложных запросов (движок Tenzing, разработанный в недрах Google).
&#8226;&#160;Grig Gheorghiu делится практическим опытом работы c несколькими инстансами MySQL в [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: архитектура систем; разработка приложений; модульные тесты; баги и промашки; тестирование и тестировщики; инструменты автоматизации; системное администрирование; вопросы на интервью; эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Архитектура систем</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;SQL почил? Да здравствует SQL: масштабируемость NoSQL-решений обрамляется SQL-оболочкой для выполнения сложных <a href="http://highscalability.com/blog/2012/1/25/google-goes-moresql-with-tenzing-sql-over-mapreduce.html">запросов</a> (движок Tenzing, разработанный в недрах Google).</p>
<p>&#8226;&nbsp;Grig Gheorghiu делится практическим опытом работы c несколькими инстансами MySQL в <a href="http://agiletesting.blogspot.com/2012/01/ode-to-running-database-on-bare-metal.html">облаке</a> Amazon EC2.</p>
<p>&#8226;&nbsp;Архитектура noSQL: текущее состояние дел и выбор подходящего <a href="http://highscalability.com/blog/2012/1/24/the-state-of-nosql-in-2012.html">решения</a>.</p>
<p>&#8226;&nbsp;Todd Hoff ставит под сомнение устоявшиеся подходы к реализации облачных сервисов и призывает к их <a href="http://highscalability.com/blog/2012/1/19/is-it-time-to-get-rid-of-the-linux-os-model-in-the-cloud.html">перепросмотру</a>.</p>
<p>&#8226;&nbsp;Разбор полетов от сервиса Etsy: хронология неудачного решения, смена курса, извлеченные <a href="http://highscalability.com/blog/2012/1/9/the-etsy-saga-from-silos-to-happy-to-billions-of-pageviews-a.html">уроки</a>.</p>
<p>&#8226;&nbsp;Joel Spolsky объясняет разницу между вертикальным и горизонтальным программным обеспечением и в качестве примера последнего представляет <a href="http://www.joelonsoftware.com/items/2012/01/06.html">Trello</a> &#8211; среду для совместной работы над проектом.</p>
<p>&#8226;&nbsp;Как Facebook справляется с пиками нагрузки? Готовит сани <a href="http://highscalability.com/blog/2012/1/4/how-facebook-handled-the-new-years-eve-onslaught.html">летом</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Web-разработка: события, инструменты, публикации в <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-january-12-edition/">январе</a>.</p>
<p>&#8226;&nbsp;Почему разработчики ненавидят антивирусные программы: взгляд <a href="http://blog.jitbit.com/2012/01/why-developers-hate-antiviruses.html">изнутри</a>.</p>
<p>&#8226;&nbsp;Yiannis Konstantakopoulos проводит анализ успешных сайтов и выделяет особенности web-дизайна, которые помогли им <a href="http://uxdesign.smashingmagazine.com/2012/01/24/what-successful-products-teach-about-web-design/">преуспеть</a>.</p>
<p>&#8226;&nbsp;Gojko Adziс предлагает использовать метод <a href="http://gojko.net/2012/01/23/splitting-user-stories-the-hamburger-method/">гамбургера</a> для выработки стратегии разработки продукта со сложными бизнес-требованиями.</p>
<p>&#8226;&nbsp;Davy Brion призывает никогда не хранить пароли в исходном виде: гораздо безопаснее хранить хэшированные <a href="http://davybrion.com/blog/2012/01/stop-storing-passwords-already/">значения</a>.</p>
<p>&#8226;&nbsp;<a href="http://net.tutsplus.com/tutorials/php/testing-your-php-codebase-with-enhancephp/">EnhancePHP</a> &#8211; библиотека для тестирования приложений, написанных на PHP. Обзор и примеры написания тестов.</p>
<p>&#8226;&nbsp;Как интегрировать Facebook, Twitter и Google+ в сайт на платформе <a href="http://wp.smashingmagazine.com/2012/01/19/facebook-twitter-google-wordpress/">WordPress</a>?</p>
<p>&#8226;&nbsp;Интерактивные системы обучения: трудно заранее учесть все ситуации, в которых могут оказаться <a href="http://programmingzen.com/2012/01/16/on-the-usability-of-codecademy/">пользователи</a>.</p>
<p>&#8226;&nbsp;Что такое AJAX? Наглядное объяснение в <a href="http://geekandpoke.typepad.com/geekandpoke/2012/01/simply-explained.html">картинках</a>.</p>
<p>&#8226;&nbsp;Комментарии к комментариям в коде помогут разобраться в его <a href="http://geekandpoke.typepad.com/geekandpoke/2012/01/good-coders.html">дебрях</a>.</p>
<p>&#8226;&nbsp;Agile или Waterfall: чем бы дитя не тешилось, разница <a href="http://geekandpoke.typepad.com/geekandpoke/2012/01/quiz-of-the-week.html">невелика</a>.</p>
<p>&#8226;&nbsp;Evil Tester обозначил интересную проблему: аддоны не поспевают за выходом новых версий браузеров и уходят на свалку <a href="http://www.eviltester.com/index.php/2012/01/12/firepath-the-xpath-and-css-locator-addon-for-firefox/">истории</a>.</p>
<p>&#8226;&nbsp;Парадигма MVC на примере Zend Framework в PHP: теория и пример <a href="http://net.tutsplus.com/tutorials/php/zend-framework-from-scratch-models-and-integrating-doctrine-orm/">реализации</a>.</p>
<p>&#8226;&nbsp;Каким образом по Unicode-строке определить, на каком языке представлен <a href="http://blogs.msdn.com/b/oldnewthing/archive/2012/01/11/10255330.aspx">текст</a>?</p>
<p>&#8226;&nbsp;Подборка материалов по улучшению производительности высоконагруженных систем: статистика и <a href="http://highscalability.com/blog/2012/1/6/stuff-the-internet-says-on-scalability-for-january-6-2012.html">методики</a>.</p>
<p>&#8226;&nbsp;Карта C++: здесь вам не равнина, здесь климат <a href="http://alenacpp.blogspot.com/2012/01/11.html">иной</a>.</p>
<p>&#8226;&nbsp;Как вычислить количество месяцев в году? Непростая <a href="http://thedailywtf.com/Articles/Nondeterministic-Months.aspx">задача</a>.</p>
<p>&#8226;&nbsp;Код и документация в порядке? Нехороший <a href="http://geekandpoke.typepad.com/geekandpoke/2012/01/2012-the-apocalypse-is-coming.html">знак</a>!</p>
<p>&#8226;&nbsp;В <a href="http://msdn.microsoft.com/en-us/magazine/hh708738.aspx">январском</a> выпуске MSDN Magazine: искусственный интеллект в тестировании, HTML5, Windows Azure, работа с базами данных и другие темы.</p>
<p>&#8226;&nbsp;В быстроменяющемся мире путь к хорошему web-приложению лежит через грамотно организованный <a href="http://net.tutsplus.com/tutorials/php/creating-an-api-centric-web-application/">API</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Модульные тесты</strong></p>
<p>&nbsp;<br /</p>
<p>&#8226;&nbsp;Patrick Smacchia делится восьмилетним опытом создания модульных <a href="http://codebetter.com/patricksmacchia/2012/01/10/non-trivial-and-real-world-feedbacks-on-writing-unit-tests/">тестов</a>.</p>
<p>&#8226;&nbsp;Claudio Ortolina представляет пример разработки Ruby-приложения с использованием методик <a href="http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/">TDD</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Баги и промашки</strong></p>
<p>&nbsp;<br /</p>
<p>&#8226;&nbsp;В качестве наиболее вероятной версии аварии &#8220;Фобос-Грунта&#8221; называется ошибка в программировании бортового вычислительного комплекса (БВК) станции (<a href="http://lenta.ru/news/2012/01/31/claim/">1</a>, <a href="http://www.gazeta.ru/news/lenta/2012/01/31/n_2186517.shtml">2</a>).</p>
<p>&#8226;&nbsp;Скелет в шкафу Oracle: баг в архитектуре СУБД посылает в нокаут системы с большим объемом <a href="http://www.infoworld.com/d/security/fundamental-oracle-flaw-revealed-184163-0">транзакций</a>.</p>
<p>&#8226;&nbsp;Подробности фишинговой атаки в Живом Журнале: официальное заявление и разбор полетов в <a href="http://igrick.livejournal.com/532798.html">комментариях</a>.</p>
<p>&#8226;&nbsp;Баг в архитектуре предвыборного сайта позволял увидеть сообщения, отклоненные <a href="http://v-v.livejournal.com/21686.html">модератором</a>. Update: Батюшки святы, да там <a href="http://habrahabr.ru/blogs/web_security/136233/">такое</a>&#8230;</p>
<p>&#8226;&nbsp;What the fuck: от бага до улыбки один <a href="http://thedailywtf.com/Articles/19999-Below.aspx">шаг</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование и тестировщики</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Rikard Edgren приводит список своих любимых инструментов для мониторинга и анализа <a href="http://thetesteye.com/blog/2012/01/some-nifty-windows-tools/">приложений</a>.</p>
<p>&#8226;&nbsp;Catherine Powell объясняет, почему она больше не нанимает выделенных тестировщиков несмотря на актуальность и важность <a href="http://blog.abakas.com/2012/01/why-i-havent-been-hiring-testers.html">тестирования ПО</a>.</p>
<p>&#8226;&nbsp;Aaron Evans претендует на позицию QA Lead в компании, занимающейся облачными технологиями, и отвечает на вопросы, задаваемые потенциальным <a href="http://fijiaaron.wordpress.com/2012/01/26/why-not-hire-a-remote-qa-lead/">кандидатам</a>.</p>
<p>&#8226;&nbsp;Настоящие разработчики не заморачиваются тестированием: настоящие пользователи сами найдут все скрытые <a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-32-02-metablogapi/8054.image_5F00_thumb_5F00_35C6E986.png">баги</a>.</p>
<p>&#8226;&nbsp;Евгений Касперский рассказывает о тестировании антивирусных программ и критериях их <a href="http://e-kaspersky.livejournal.com/99653.html">оценки</a>.</p>
<p>&#8226;&nbsp;Elisabeth Hendrickson учита задавать вопросы, ответы на которые подводят к <a href="http://testobsessed.com/blog/2012/01/21/thats-a-nice-theory/">оптимальным</a> стратегиям разработки ПО.</p>
<p>&#8226;&nbsp;Ainars Galvans ставит под сомнение полезность рутинных регрессионных проверок и размышляет, каким образом выполнять тестирование более <a href="http://www.softwaretestingclub.com/profiles/blogs/checks-driven-regression-testing-is-still-a-best-practice">эффективно</a>.</p>
<p>&#8226;&nbsp;Должен ли тест соответствовать ожиданиям программиста или же в первую очередь нужно исходить из потребностей конечного <a href="http://blog.abakas.com/2012/01/test-intent-or-implementation.html">пользователя</a>?</p>
<p>&#8226;&nbsp;Stefan Butlin рассказывает о TestPad &#8211; онлайн-сервисе для организации ручного <a href="http://www.thetestingplanet.com/2012/01/an-interview-with-stefan-butlin-founder-of-testpad/">тестирования</a>.</p>
<p>&#8226;&nbsp;В Таиланде на веранде и с MacBook наперевес: консультант по тестированию описывает свое житие-<a href="http://lifehacker.ru/2012/01/12/rabochie-mesta-andrejj-zakordonec-konsultant-po-testirovaniyu-rabotayushhijj-udalenno-v-tailande/">бытие</a>.</p>
<p>&#8226;&nbsp;Andy Glover иллюстрирует процесс устройства тестировщиков на работу: статистика с картинками и <a href="http://cartoontester.blogspot.com/2012/01/infographic.html">комментариями</a>.</p>
<p>&#8226;&nbsp;The Monday Times: события 2011 года и прогноз на <a href="http://storify.com/testingclub/the-monday-times-2">будущее</a>.</p>
<p>&#8226;&nbsp;<a href="http://cpantesters.org/">Содружество</a> тестировщиков Perl-модулей CPAN и добрые слова в их <a href="http://blogs.perl.org/users/joel_berger/2012/01/i-love-cpan-testers.html">адрес</a>.</p>
<p>&#8226;&nbsp;Elisabeth Hendrickson сравнивает программное обеспечение с котом <a href="http://testobsessed.com/blog/2012/01/05/what-software-has-in-common-with-schrodingers-cat/">Шредингера</a> и предостерегает от неэффективного внедрения гибких <a href="http://testobsessed.com/blog/2012/01/05/agile-adjustments-a-wordcount-story/">технологий</a>.</p>
<p>&#8226;&nbsp;Как тестировать документацию: краткий перечень <a href="http://www.thetestingplanet.com/2012/01/how-to-test-documentation/">шагов</a>.</p>
<p>&#8226;&nbsp;Как тестируют ПО в Google: перевод на русский язык материалов вебинара по этой <a href="http://habrahabr.ru/blogs/development/135776/">теме</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p><em>Редакция OpenQuality.ru выражает искреннюю признательность Адаму за наше счастливое чтение.</em></p>
<p>&#8226;&nbsp;Смертные грехи автоматизации, новости из мира Selenium, подручные инструменты: очередную <a href="http://seleniumhq.wordpress.com/2012/01/31/a-smattering-of-selenium-77/">подборку</a> представляет Adam Goucher.</p>
<p>&#8226;&nbsp;Adam Goucher представляет <a href="http://element34.ca/blog/introducing-phpwebdriver">PHPWebDriver</a> и рассказывает, как с его помощью эмулировать нажатие <a href="http://element34.ca/blog/sending-characters-at-an-element-with-webdriver">клавиш</a>.</p>
<p>&#8226;&nbsp;Adam Goucher объясняет как WebDriver работает с cookies в коде на <a href="http://element34.ca/blog/webdriver-and-cookies">PHP</a>.</p>
<p>&#8226;&nbsp;Adam Goucher публикует очередную подборку материалов по Selenium и сопутствующим <a href="http://seleniumhq.wordpress.com/2012/01/25/a-smattering-of-selenium-76/">технологиям</a>.</p>
<p>&#8226;&nbsp;Adam Goucher обращается к заказчикам скриптов на Selenium: как искать и по каким критериям оценивать <a href="http://element34.ca/blog/how-to-hire-a-selenium-scripter">исполнителей</a>?</p>
<p>&#8226;&nbsp;Adam Goucher публикует очередную подборку ссылок по Selenium и смежным <a href="http://seleniumhq.wordpress.com/2012/01/18/a-smattering-of-selenium-74/">областям</a>.</p>
<p>&#8226;&nbsp;Adam Goucher продолжает публиковать <a href="http://seleniumhq.wordpress.com/2012/01/05/a-smattering-of-selenium-73/">ссылки</a> на публикации о Selenium и приводит наглядный  пример автотеста, по ошибке возвращающего ОК при любых исходных <a href="http://element34.ca/blog/if-it-cant-fail-its-not-a-check">данных</a>.</p>
<p>&#8226;&nbsp;Сводка публикаций по Selenium: Android WebDriver, поиск элементов на странице и другие <a href="http://seleniumhq.wordpress.com/2012/01/03/a-smattering-of-selenium-72/">темы</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Brent Ozar рассказывает, за какие заслуги администратор СУБД может получить премию Дарвина, разрушив свое <a href="http://www.brentozar.com/archive/2012/01/dba-darwin-awards-log-file-edition/">хозяйство</a>.</p>
<p>&#8226;&nbsp;Таинственный файл .htaccess в web-сервере Apache: редирект, ограничение доступа, кэширование, <a href="http://net.tutsplus.com/articles/news/htaccess-files-for-the-rest-of-us/">компрессия</a>.</p>
<p>&#8226;&nbsp;Jeremiah Peschka различает термины &#8220;high availability&#8221; и &#8220;load balancing&#8221; и рассказывает про <a href="http://www.brentozar.com/archive/2012/01/highly-available-local-replication/">репликацию</a> данных.</p>
<p>&#8226;&nbsp;Каким образом сервису Braintree удалось переехать из одного датацентра в другой без перебоев в <a href="http://www.braintreepayments.com/devblog/switching-datacenters">работе</a>?</p>
<p>&#8226;&nbsp;Jeremiah Peschka делится парадоксальными, но проверенными на практике советами по обеспечению <a href="http://www.brentozar.com/archive/2012/01/notes-on-scalability/">масштабируемости</a> информационных систем.</p>
<p>&#8226;&nbsp;Mark Russinovich с помощью инструментов Sysinternals расчищает авгиевы конюшни в компьютере своей мамы и <a href="http://blogs.technet.com/b/markrussinovich/archive/2012/01/05/3473797.aspx">победоносно</a> завершает установку Microsoft Security Essentials. </p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Вопросы на интервью</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;37signals: почему мы не набираем программистов по результатам решения ими загадок и математических <a href="http://37signals.com/svn/posts/3071-why-we-dont-hire-programmers-based-on-puzzles-api-quizzes-math-riddles-or-other-parlor-tricks">задач</a>.</p>
<p>&#8226;&nbsp;Вопросы на интервью в Google и Microsoft: знание физики необходимо для создания программных <a href="http://online.wsj.com/article/SB10001424052970204552304577112522982505222.html">продуктов</a>?</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Что предпринять в предверии технологической сингулярности, когда искусственный интеллект сможет сам находить ошибке в коде, который он <a href="http://dilbert.com/strips/comic/2012-01-31/">создал</a>?</p>
<p>&#8226;&nbsp;Евгений Касперский раскрывает все страшные тайны о спаме: кому он выгоден и как с ним <a href="http://e-kaspersky.livejournal.com/99337.html">бороться</a>.</p>
<p>&#8226;&nbsp;Jeff Atwood проводит интересную аналогию между между магазином, продающим видеодиски, и сайтом в Интернете: что произойдет, если настанет <a href="http://www.codinghorror.com/blog/2012/01/defeating-sopa-and-pipa-isnt-enough.html">SOPA</a>?</p>
<p>&#8226;&nbsp;Евгений Касперский сообщает о вхождении Kaspersky Lab в элиту и о рождении новой военной специальности: специалист по противодействию кибератакам и организации ответного <a href="http://e-kaspersky.livejournal.com/98610.html">удара</a>.</p>
<p>&#8226;&nbsp;Горящие глаза или профессиональный подход к делу: еще одна попытка выбрать одно из двух, если не удастся получить и то, и <a href="http://blog.abakas.com/2012/01/myth-of-passionate-employee.html">другое</a>.</p>
<p>&#8226;&nbsp;Windows 8: управление компьютером с помощью <a href="http://gizmodo.com/5874172/i-just-controlled-windows-8-with-my-eyes-and-it-made-me-believe-in-technology-again">глаз</a>?</p>
<p>&#8226;&nbsp;Дилберт: назвали лидером проекта, полезай в <a href="http://dilbert.com/strips/comic/2012-01-08/">кузов</a>.</p>
<p>&#8226;&nbsp;Иерархия компьютерных игр: в каких из них бездушная машина победит человеческий <a href="http://xkcd.com/1002/">разум</a>?</p>
<p>&#8226;&nbsp;Дилберт помогает своему шефу сохранить лицо: не предоставляй фальшивых доказательств, которые легко <a href="http://dilbert.com/strips/comic/2012-01-03/">опровергнуть</a>.</p>
<p>&#8226;&nbsp; Alex Chitu делает прогноз по продуктам Google на <a href="http://googlesystem.blogspot.com/2011/12/predictions-for-googles-2012.html">2012</a> год.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>Р1</strong>. Мы пообещали заказчику сделать систему качественно и недорого.<br /><strong>Т1</strong>. Но эти показатели противоречат друг другу. Будем искать компромисс?<br /><strong>Р1</strong>. Зачем? У нас прорывные технологии, будет дешево и сердито. Вот увидишь, после сдачи проекта начальство скажет: &#8220;Спасибо всем, кто не мешал!&#8221;<br />
&nbsp;<br />
<strong>М</strong>. Нужно исправить два бага: один трудный, другой полегче.<br /><strong>Р1</strong>. Я возьму полегче.<br /><strong>Р2</strong>. Если бы я выбирал первым, то из вежливости выбрал бы баг потруднее.<br /><strong>Р1</strong>. Так он и так теперь твой!<br />
&nbsp;<br />
<strong>Т</strong>. Я найду баг в любой строке кода. Ну вот, к примеру, если не ошибаюсь, в этой строке баг.<br /><strong>Р</strong>. Разумеется, здесь баг, если ты не ошибаешься.<br /><strong>Т</strong>. Значит, мое предположение верно?<br /><strong>Р</strong>. Конечно, верно: если ты не ошибаешься, в этой строке баг.<br /><strong>Т</strong>. Итак, раз мое предположение верно, то я не ошибаюсь. А если я не ошибаюсь, то баг здесь есть!<br />
&nbsp;<br />
<strong>Т</strong>. Ничего не понимаю. Поиск по категориям совсем не работает, а багу назначили средний приоритет. Поиск по названию ошибается в 1 случае из 100, и у бага наивысший приоритет.<br /><strong>Р</strong>. Проблема в том, что с первым багом всем все ясно, а во втором случае никто не знает, когда поиск работает, а когда нет!</p>
<p>&nbsp;</p>
<p>Всего доброго в феврале!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-0112/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Декабрьская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-1211/</link>
		<comments>http://blog.openquality.ru/software-quality-news-1211/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 07:55:20 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-1211/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: архитектура систем; разработка приложений; баги и промашки; тестирование ПО; инструменты автоматизации; системное администрирование; эпизоды.
&#160;
Архитектура систем
&#160;
&#8226;&#160;Сервис PlentyOfFish: впечатляющая статистика на фоне простой архитектуры.
&#8226;&#160;Vijay Pandurangan рассказывает о переезде своего сервиса с Google App Engine на Amazon EC2: что, как и почему?
&#8226;&#160;Какой RAID выбрать для своей СУБД и почему RAID не заменит [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: архитектура систем; разработка приложений; <strong>баги и промашки</strong>; тестирование ПО; инструменты автоматизации; системное администрирование; эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Архитектура систем</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Сервис PlentyOfFish: впечатляющая статистика на фоне простой <a href="http://highscalability.com/blog/2011/12/27/plentyoffish-update-6-billion-pageviews-and-32-billion-image.html">архитектуры</a>.</p>
<p>&#8226;&nbsp;Vijay Pandurangan рассказывает о переезде своего сервиса с Google App Engine на Amazon EC2: что, как и <a href="http://www.vijayp.ca/blog/?p=162">почему</a>?</p>
<p>&#8226;&nbsp;Какой RAID выбрать для своей СУБД и почему RAID не заменит резервного сохранения данных (<a href="http://www.sqlservercurry.com/2011/12/why-is-raid-important-for-databases.html">1</a>, <a href="http://scalability.org/?p=3569">2</a>).</p>
<p>&#8226;&nbsp;История сервиса Dropbox: от рождения идеи до завоевания <a href="http://www.wired.com/epicenter/2011/12/backdrop-dropbox/all/1">мира</a>.</p>
<p>&#8226;&nbsp;In Memory Data Grid: данные  сервиса хранятся в оперативной памяти со всеми вытекающими <a href="http://highscalability.com/blog/2011/12/21/in-memory-data-grid-technologies.html">вкусняшками</a>.</p>
<p>&#8226;&nbsp;Facebook переходит с HipHop for PHP к HipHop Virtual Machine: от преобразования PHP в С++ к преобразованию в машинный <a href="https://www.facebook.com/note.php?note_id=10150415177928920&#038;hn=2">код</a>.</p>
<p>&#8226;&nbsp;Netflix: как организована загрузка программного обеспечения в <a href="http://highscalability.com/blog/2011/12/12/netflix-developing-deploying-and-supporting-software-accordi.html">облако</a>?</p>
<p>&#8226;&nbsp;Архитектура сервиса Instagram: программное обеспечение, статистика, извлеченные уроки, особенности <a href="http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html">реализации</a>.</p>
<p>&#8226;&nbsp;От гипертекста к HTML 5: как проходила дорога и что получили в <a href="http://net.tutsplus.com/articles/general/a-brief-history-of-html5/">итоге</a>?</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Web-разработка в декабре: события и <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-december-edition/">инструменты</a>.</p>
<p>&#8226;&nbsp;Победитель соревнования по искусственному интеллекту представляет особенности реализации своего <a href="http://xathis.com/posts/ai-challenge-2011-ants.html">приложения</a>.</p>
<p>&#8226;&nbsp;Великий John Carmack подчеркивает важность статического анализа кода и делает <a href="http://altdevblogaday.com/2011/12/24/static-code-analysis/">обзор</a> имеющихся инструментов.</p>
<p>&#8226;&nbsp;Разгневанное, но вполне справедливое <a href="http://bitonic.org/blog/?p=176">обращение</a> пользователя к разработчикам web-интерфейсов.</p>
<p>&#8226;&nbsp;Анализ кода в MS Visual Studio 11: вступительная <a href="http://blogs.msdn.com/b/rusaraford/archive/2011/12/22/10249313.aspx">статья</a> и <a href="http://www.microsoft.com/security/sdl/default.aspx">подробности</a>.</p>
<p>&#8226;&nbsp;Davy Brion рассказывает, как отображать ссылки на посты из RSS-потока с помощью <a href="http://davybrion.com/blog/2011/12/displaying-feed-items-on-a-web-page-my-solution/">JavaScript</a>.</p>
<p>&#8226;&nbsp;Corrinne Yu рассказывает о своей <a href="http://www.girlgamer.com/zine/article/1685/">карьере</a>: от космической техники к разработке игр (via <a href="http://alenacpp.blogspot.com/2011/12/blog-post.html">alenacpp</a>).</p>
<p>&#8226;&nbsp;Agile Manifesto: успокойся, будь гибким, но не <a href="http://geekandpoke.typepad.com/geekandpoke/2011/12/agile-manifesto.html">зарывайся</a>!</p>
<p>&#8226;&nbsp;Каждый месяц в проектах Google меняется 50% кода. Как в Google предсказывают наличие багов на том или ином <a href="http://google-engtools.blogspot.com/2011/12/bug-prediction-at-google.html">участке</a>?</p>
<p>&#8226;&nbsp;eBay: как проводить частые изменения в коде, который задействован в разных <a href="http://www.ebaytechblog.com/2011/12/15/rapid-development-setup-in-large-environments/">проектах</a>?</p>
<p>&#8226;&nbsp;<a href="http://dumitruglavan.com/jquery-performance-tips-cheat-sheet/">Подборка</a> советов по улучшению производительности приложений, использующих jQuery.</p>
<p>&#8226;&nbsp;Gojko Adzic вводит понятие <a href="http://www.infoq.com/articles/feature-injection-success">Feature Injection</a> и строит мост между бизнес-требованиями и гибкими методиками разработки ПО.</p>
<p>&#8226;&nbsp;От ненависти до понимания один шаг: общение разработчика с программным <a href="http://geekandpoke.typepad.com/geekandpoke/2011/12/real-coders.html">кодом</a>.</p>
<p>&#8226;&nbsp;IBM developerWorks: сравнительный анализ MySQL и PostgreSQL, оптимизация LAMP-приложения, доступ к социальным сетям по протоколу OAuth и другие <a href="http://www-148.ibm.com/tela/webmail/Newsletter/9860/34314">темы</a>.</p>
<p>&#8226;&nbsp;Rob Pike ратует за ясность и чистоту кода на языке С: актуально спустя двадцать с лишним лет после <a href="http://doc.cat-v.org/bell_labs/pikestyle">публикации</a>.</p>
<p>&#8226;&nbsp;Web-приложения в 2011 году: тенденции и извлеченные <a href="http://www.alistapart.com/articles/what-i-learned-about-the-web-in-2011/">уроки</a>.</p>
<p>&#8226;&nbsp;Как создать интерфейс в стиле Microsoft Windows на web-странице с помощью <a href="http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-windows-like-interface-with-jquery-ui/">jQuery</a>?</p>
<p>&#8226;&nbsp;Himanshu Arora решил рассказать про <a href="http://www.thegeekstuff.com/2011/12/c-pointers-fundamentals/">указатели</a> в языке С.</p>
<p>&#8226;&nbsp;What the fuck? Забавные сообщения об <a href="http://thedailywtf.com/Articles/No,-NO,-No,-NO,-No.aspx">ошибках</a>.</p>
<p>&#8226;&nbsp;Facebook Graph API: как организовать обмен данными между вашим приложением и <a href="http://net.tutsplus.com/tutorials/php/wrangling-with-the-facebook-graph-api/">Facebook</a>?</p>
<p>&#8226;&nbsp;Как организовать резервное копирование базы данных сайта, построенного на WordPress, в облачном <a href="http://wp.smashingmagazine.com/2011/12/01/integrating-amazon-s3-wordpress/">хранилище</a> Amazon S3?</p>
<p>&#8226;&nbsp;В декабрьском <a href="http://msdn.microsoft.com/en-us/magazine/hh580726.aspx">выпуске</a> MSDN Magazine: ProcDump от Sysinternals, безопасность приложений ASP.Net, эффективная работа с HTML 5 и другие темы.</p>
<p>&#8226;&nbsp;Нет ничего более постоянного чем временные изменения в <a href="http://geekandpoke.typepad.com/geekandpoke/2011/11/temporarily.html">коде</a>.</p>
<p>&#8226;&nbsp;Web-разработка: наиболее значимые события и публикации в <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-november-edition/">ноябре</a>.</p>
<p>&#8226;&nbsp;Курс молодого дизайнера: ошибки в PHP и пути их <a href="http://coding.smashingmagazine.com/2011/11/30/a-guide-to-php-error-messages-for-designers/">устранения</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Баги и промашки</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Результаты исследования аварии на борту авиалайнера Airbus A330-303 (потребовалось три года): сбой в анализе полетных данных обусловлен несовершенством алгоритма получения конечного результата при рассинхронизации показаний <a href="http://www.atsb.gov.au/publications/investigation_reports/2008/aair/ao-2008-070.aspx">приборов</a>.</p>
<p>&#8226;&nbsp;Ретро: первый хакер, Джон Маскелин, проявил себя в 1903 году, помешав изобретателю беспроводного вещания Гульельмо Маркони воспользоваться азбукой <a href="http://www.newscientist.com/article/mg21228440.700-dotdashdiss-the-gentleman-hackers-1903-lulz.html">Морзе</a>.</p>
<p>&#8226;&nbsp;Сбой на ММВБ: &#8220;В выходные проходило тестирование системы по взаимодействию служб биржи и участников&#8230; По итогам тестирования часть данных не удалилась и &#8230; попала в клиринговую систему, сформировались некорректрные данные по открытым позициям и денежным <a href="http://www.gazeta.ru/financial/2011/12/20/3935094.shtml">средствам</a>&#8220;.</p>
<p>&#8226;&nbsp;Новый релиз PuTTY призван закрыть баг предыдущих релизов: введеный пароль хранился в памяти, откуда его могли прочитать другие <a href="http://lists.tartarus.org/pipermail/putty-announce/2011/000017.html">приложения</a>.</p>
<p>&#8226;&nbsp;ВКонтакте.ру: инновации инновациями, но к мнениям пользователей стоит <a href="http://www.ruformator.ru/news/article07B7A/default.asp?is_print=1">прислушаться</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Michael Bolton призывает не сводить тестирование к примитивным проверкам &#8220;работает-не работает&#8221; и рассматривать этот процесс в более широком <a href="http://www.developsense.com/blog/2011/12/why-checking-is-not-enough/">ракурсе</a>.</p>
<p>&#8226;&nbsp;Daniel Frank (ассистент agile-гуру и qa-иконы Elisabeth Hendrickson) провел исследование рынка тестирования ПО и пришел к интересным <a href="http://testobsessed.com/blog/2011/12/23/2nd-annual-qatest-job-posting-study/">заключениям</a>.</p>
<p>&#8226;&nbsp;Marlena рассказывает об анализе бага в Browser-ID и дает рекомендации по поиску багов, оказывающих влияние на <a href="http://marlenacompton.com/?p=2686">производительность</a> приложения.</p>
<p>&#8226;&nbsp;James Bach ставит финальную (возможно) точку в рассуждениях о том, чем не является <a href="http://www.satisfice.com/blog/archives/678">исследовательское</a> тестирование и встает на защиту своего друга (Michael Bolton), обвиненного в  <a href="http://www.satisfice.com/blog/archives/680">краснобайстве</a>.</p>
<p>&#8226;&nbsp;Michael Bolton и James Bach продолжают раскрывать преимущества исследовательского тестирования и развенчивают типичные заблуждения на этот счет (<a href="http://www.developsense.com/blog/2011/12/what-exploratory-testing-is-not-part-1-touring/">1</a>, <a href="http://www.satisfice.com/blog/archives/672">2</a>, <a href="http://www.developsense.com/blog/2011/12/what-exploratory-testing-is-not-part-2-after-everything-else-testing/">3</a>, <a href="http://www.developsense.com/blog/2011/12/what-exploratory-testing-is-not-part-3-tool-free-testing/">4</a>, <a href="http://www.developsense.com/blog/2011/12/what-exploratory-testing-isnt-part-5-undocumented-testing/">5</a>).</p>
<p>&#8226;&nbsp;Как тестируют ПО в Google? James Whittaker с соавторами написал про это <a href="http://googletesting.blogspot.com/2011/12/how-google-tests-software.html">книгу</a>.</p>
<p>&#8226;&nbsp;The Monday Times: <a href="http://storify.com/testingclub/the-monday-times-12th-dec">подборка</a> публикаций о тестировании программного обеспечения.</p>
<p>&#8226;&nbsp;James Bach предлагает не увязывать исследовательское тестирование с накопленным опытом <a href="http://www.satisfice.com/blog/archives/664">исполнителя</a>.</p>
<p>&#8226;&nbsp;Michael Bolton обращается к социальным дисциплинам и проецирует мимеоморфные и полиморфные <a href="http://www.developsense.com/blog/2011/12/shapes-of-actions/">действия</a> на тестирование ПО.</p>
<p>&#8226;&nbsp;Pradeep Soundararajan раскрывает всю <a href="http://testertested.blogspot.com/2011/12/truth-about-test-plan-document-test.html">правду</a> о планах и сценариях тестирования ПО.</p>
<p>&#8226;&nbsp;I.M.Testy прогуливается в Сиэтле, наслаждается солнечным днем и размышляет о пользе тестирования <a href="http://www.testingmentor.com/imtesty/2011/12/01/api-testinghow-can-it-help/">API</a>.</p>
<p>&#8226;&nbsp;Alan Page описывает трудности, с которыми он столкнулся при настройке рабочей среды, и пути их <a href="http://angryweasel.com/blog/?p=380">разрешения</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Selenium в облаке: новый сервис для создания и управления <a href="http://www.nerrvana.com/en/features">автотестами</a>.</p>
<p>&#8226;&nbsp;Marlena рассказывает о переходе от Selenium-RC API к Selenium-Webdriver API: что ожидает в <a href="http://marlenacompton.com/?p=2664">пути</a>?</p>
<p>&#8226;&nbsp;Elisabeth Hendrickson разымышляет о выборе <a href="http://testobsessed.com/blog/2011/12/01/selecting-test-automation-tools/">инструментов</a> для автоматизации тестирования ПО.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Потребление процессорного времени в SQL Server: как оценить и <a href="http://www.brentozar.com/archive/2011/12/silent-cpu-killers/">оптимизировать</a>?</p>
<p>&#8226;&nbsp;20 примеров iptables в Linux для начинающих <a href="http://www.cyberciti.biz/tips/linux-iptables-examples.html">сисадминов</a>.</p>
<p>&#8226;&nbsp;Bash-скриптинг: углубленное <a href="http://www.tldp.org/LDP/abs/html/">руководство</a>.</p>
<p>&#8226;&nbsp;25 инструментов для мониторинга активности и отладки приложений в среде <a href="http://www.thegeekstuff.com/2011/12/linux-performance-monitoring-tools/">Linux</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Залезу-ка я в криогенную камеру, полежу там 30 лет, а потом буду наслаждаться результатами технического <a href="http://xkcd.com/989/">прогресса</a>. Или не буду?</p>
<p>&#8226;&nbsp;Хочу чтобы ты знала: &#8220;Я ненавижу <a href="http://geekandpoke.typepad.com/geekandpoke/2011/12/the-hard-life-of-a-nosql-coder.html">отношения</a>&#8220;!</p>
<p>&#8226;&nbsp;Если в системе что-то наперекосяк, нужно обратиться к документации. Но где ее <a href="http://geekandpoke.typepad.com/geekandpoke/2011/12/simply-explained.html">найти</a>?</p>
<p>&#8226;&nbsp;Так ли страшны индийцы как их малюют? Или мы недооцениваем угрозу? (<a href="http://susam.in/blog/infosys-tcs-or-wipro/">1</a>, <a href="http://susam.in/blog/re-infosys-tcs-or-wipro/">2</a>, <a href="http://blog.jpl-consulting.com/2011/12/why-i-will-never-feel-threatened-by-programmers-in-india/">3</a>)</p>
<p>&#8226;&nbsp;Вычитать и умножать, малышей не обижать: разработчик на уроке <a href="http://geekandpoke.typepad.com/geekandpoke/2011/12/a-coder-in-the-math-class.html">математики</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>М1</strong>. Баги &#8211; это условно-патогенные организмы, ловить их не нужно.<br /><strong>М2</strong>. Что говорят исследования?<br /><strong>М1</strong>. При багоприятном стечении обстоятельств баги могут пошалить, но при небагоприятном они бессильны.<br /><strong>М2</strong>. Как же создать небагоприятную среду? Дождиком в четверг?<br /><strong>М1</strong>. Багохульством, исключительно багохульством!<br />
&nbsp;<br />
<strong>Т</strong>. Жил-был глупый кот. Поймал всех мышей, и хозяин выгнал его на улицу.<br /><strong>Б</strong>. Ага, боишься быть глупым тестировщиком?<br /><strong>Т</strong>. Пожалуй, я тебя найду и буду долго стараться воспроизвести&#8230;<br />
&nbsp;<br /> <br />
<strong>Р1</strong>. Что будет, если встретятся тестировщик, от которого не ускользнет ни один баг, и баг, который ускользнет от любого тестировщика?<br /><strong>Р2</strong>. Это невозможно. Они могут существовать по отдельности, но не одновременно.<br /><strong>Р1</strong>. Но они-то про это не знают. Будут тут носиться и все вверх дном перевернут&#8230;<br /><strong>Р2</strong>. А потом удивляются: “Почему зависает, откуда дампы”&#8230;<br />
&nbsp;<br />
<strong>Т1</strong>. Все тесты можно выполнять в графическом интерфейсе. Мы найдем все баги, на которые может натолкнуться пользователь.<br /><strong>Т2</strong>. Это все равно что искать потерянный кошелек под фонарем. Если он там был, его уже давно нашли. Искать надо в темноте, куда случайный прохожий не заглянет. Хотя&#8230; А вдруг кошелька там нет?<br /><strong>Б1</strong>. Видал, как нас ценят? С кошельком сравнили!<br /><strong>Б2</strong>. Только никто не бежит поднимать!</p>
<p>&nbsp;<br />
<strong>Счастья, тепла и ярких впечатлений в Новом Году!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-1211/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ноябрьская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-1111/</link>
		<comments>http://blog.openquality.ru/software-quality-news-1111/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 08:48:40 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-1111/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: архитектура систем; разработка, отладка и тестирование программного обеспечения; инструменты автоматизации; системное администрирование; эпизоды.
&#160;
Архитектура систем
&#160;
&#8226;&#160;Почему StackExchange не размещает свой сервис в облаке?
&#8226;&#160;Несколько полезных советов от создателей Google+: что предпринимается для улучшения производительности сервиса?
&#8226;&#160;10 базовых архитектурных паттернов на пути к эффективному масштабированию.
&#8226;&#160;Почему мы ушли из облака: опыт компании Mixpanel, объяснение принятого [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: архитектура систем; разработка, отладка и тестирование программного обеспечения; инструменты автоматизации; системное администрирование; эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Архитектура систем</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Почему StackExchange не размещает свой сервис в <a href="http://blog.serverfault.com/post/why-stack-exchange-isn%E2%80%99t-in-the-cloud/">облаке</a>?</p>
<p>&#8226;&nbsp;Несколько полезных советов от создателей Google+: что предпринимается для улучшения производительности <a href="https://plus.google.com/u/0/115060278409766341143/posts/ViaVbBMpSVG">сервиса</a>?</p>
<p>&#8226;&nbsp;10 базовых архитектурных паттернов на пути к эффективному <a href="http://highscalability.com/blog/2011/11/7/10-core-architecture-pattern-variations-for-achieving-scalab.html">масштабированию</a>.</p>
<p>&#8226;&nbsp;Почему мы ушли из облака: опыт компании Mixpanel, объяснение принятого решения и его обсуждение (<a href="http://code.mixpanel.com/2011/10/27/why-we-moved-off-the-cloud/">1</a>, <a href="http://www.reddit.com/r/programming/comments/lrnvt/why_we_moved_off_the_cloud_at_mixpanel_engineering/">2</a>, <a href="https://news.ycombinator.com/item?id=3165095">3</a>).</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Точка зрения: почему многие разработчики ненавидят ASP.NET и в чем они <a href="http://net.tutsplus.com/articles/editorials/why-many-developers-hate-asp-net-and-why-they-are-wrong/">ошибаются</a>?</p>
<p>&#8226;&nbsp;Perl приходит на помощь в деле розыска владельца потерявшегося <a href="http://perlbuzz.com/2011/11/finding-a-lost-dogs-owner-with-perl-and-wwwmechanize.html">пса</a>.</p>
<p>&#8226;&nbsp;Firefox: еще один обзор <a href="http://hacks.mozilla.org/2011/11/firefox-tons-of-tools-for-web-developers/">аддонов</a> для web-разработчиков.</p>
<p>&#8226;&nbsp;Web-анимация с помощью Paper.js: разбор <a href="http://coding.smashingmagazine.com/2011/11/21/create-web-animations-with-paperjs/">полетов</a>.</p>
<p>&#8226;&nbsp;SQL на практике: запрос мастера и <a href="http://thedailywtf.com/Articles/The-AntiSQL-Coalition-.aspx">подмастерья</a>.</p>
<p>&#8226;&nbsp;IBM developerWorks: работа с Amazon <a href="http://www.ibm.com/developerworks/ru/library/j-javadev2-9/">SimpleDB</a>, доступ к информации Википедии с помощью PHP и API <a href="http://www.ibm.com/developerworks/ru/library/x-phpwikipedia/">MediaWiki</a>, взаимодействие через Интернет с помощью CURL и <a href="http://www.ibm.com/developerworks/ru/library/os-curl/">libcurl</a>.</p>
<p>&#8226;&nbsp;Краткое введение в набор инструментов <a href="http://net.tutsplus.com/tutorials/javascript-ajax/dig-into-dojo-dom-basics/">Dojo</a>, претендующего на лавры jQuery.</p>
<p>&#8226;&nbsp;Еще один способ выявить эффективного разработчика: от простого к <a href="http://d-zh.livejournal.com/27437.html">непредусмотренному</a>.</p>
<p>&#8226;&nbsp;Системы управления версиями: какие преимущества есть у <a href="http://yakov-sirotkin.livejournal.com/182448.html">Subversion</a>? Интервью с Иваном Жаковым, техническим директором VisualSVN.</p>
<p>&#8226;&nbsp;Улучшение безопасности автомобиля может привести не к безопасному, а к более агрессивному стилю вождения. Есть ли подобные <a href="http://shrinik.blogspot.com/2011/11/cause-and-effect-non-linear-systems.html">казусы</a> в разработке и тестировании ПО?</p>
<p>&#8226;&nbsp;Новое &#8211; хорошо забытое старое. Упоминания об итеративной модели разработки (ныне agile) восходят к середине прошлого <a href="http://secretsofconsulting.blogspot.com/2011/11/iterative-development-some-history.html">века</a>.</p>
<p>&#8226;&nbsp;Краткое введение в <a href="http://www.brentozar.com/archive/2011/11/good-pig/">Pig</a> &#8211; инструмент для эффективного анализа больших объемов данных.</p>
<p>&#8226;&nbsp;<a href="https://groups.google.com/group/google-code-search/browse_thread/thread/fa2e2908c47df068?pli=1">Альтернативы</a> для Google Code Search, решение о закрытии которого принято в высших кругах поискового гиганта.</p>
<p>&#8226;&nbsp;Горящие глаза или энтузиазм: что наиболее ценно в разработке игр и не <a href="http://alenacpp.blogspot.com/2011/11/designers-notebook-passion-versus.html">только</a>? И еще об играх: честная игра или <a href="http://boris-batkin.livejournal.com/12319.html">мухлеж</a>? Может ли игра быть одновременно честной и увлекательной?</p>
<p>&#8226;&nbsp;Grig Gheorghiu делится практическими примерами работы с Elastic MapReduce в <a href="http://agiletesting.blogspot.com/2011/11/experiences-with-amazon-elastic.html">Amazon</a>.</p>
<p>&#8226;&nbsp;IBM developerWorks: первые шаги в <a href="http://www.ibm.com/developerworks/training/kp/wa-kp-getstartedjs/index.html">JavaScript</a>.</p>
<p>&#8226;&nbsp;Честность и искренность окупаются: темные и светлые паттерны в графическом <a href="http://www.alistapart.com/articles/dark-patterns-deception-vs.-honesty-in-ui-design/">интерфейсе</a>.</p>
<p>&#8226;&nbsp;Приложения на базе Google Apps Engine: маленькие улучшения приводят к серьезному приросту <a href="http://highscalability.com/blog/2011/10/31/15-ways-to-make-your-application-feel-more-responsive-under.html">производительности</a>.</p>
<p>&#8226;&nbsp;Web-разработка в октябре: обзор событий и <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-october-edition/">инструментов</a>.</p>
<p>&#8226;&nbsp;Randall Degges, счастливый программист, рассуждает о сроках завершения <a href="http://rdegges.com/on-programming-deadlines">проекта</a>: пять правил, облегчающих жизнь.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Отладка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Неувядаемый Mark Russinovich рассказывает о том как Process Monitor помог выявить <a href="http://blogs.technet.com/b/markrussinovich/archive/2011/11/29/3467449.aspx">причину</a> ошибки при установке клиентской части Windows Intune.</p>
<p>&#8226;&nbsp;Valgrind memcheck помогает выявлять <a href="http://www.thegeekstuff.com/2011/11/valgrind-memcheck/">утечки</a> памяти в приложениях на С и С++.</p>
<p>&#8226;&nbsp;Отладка приложений в Linux с помощью strace: семь <a href="http://www.thegeekstuff.com/2011/11/strace-examples/">примеров</a>.</p>
<p>&#8226;&nbsp;Mark Russinovich рассказывает о возможных коллизиях при клонировании диска с помощью Sysinternals Disk2vhd и путях их <a href="http://blogs.technet.com/b/markrussinovich/archive/2011/11/08/3463572.aspx">устранения</a>.</p>
<p>&#8226;&nbsp;Perl-скрипт позволяет оккупировать необходимый объем оперативной памяти в Linux, а оставшийся объем будет задействован при тестировании производительности заданного <a href="http://www.thegeekstuff.com/2011/11/2-memory-regression-perl-scripts-for-linux/">приложения</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;I.M.Testy размышляет о тестировании API в сравнении с тестированием через пользовательский интерфейс и с помощью модульных <a href="http://www.testingmentor.com/imtesty/2011/11/21/api-testingfunctional-testing-below-the-user-interface/">тестов</a>.</p>
<p>&#8226;&nbsp;The Monday Times: <a href="http://storify.com/testingclub/the-monday-times-1">подборка</a> публикаций по тестированию и обеспечению качества ПО.</p>
<p>&#8226;&nbsp;&#8221;Перед лицом своих товарищей торжественно клянусь&#8221;: James Bach формулирует <a href="http://www.satisfice.com/blog/archives/652">обязательства</a> тестировщика перед разработчиком.</p>
<p>&#8226;&nbsp;В ноябрьском <a href="https://files.pbworks.com/download/Z8MLxq4s6v/testingclub/48044068/Issue%206%20WEB.pdf">выпуске</a> The Testing Planet: будущее тестирования, мобильные платформы, автотесты, Scrum, найм тестировщиков и другие темы.</p>
<p>&#8226;&nbsp;Социум тестировщиков: что они любят, как проходят интервью, как ищут работу и как находят <a href="http://www.thetestingplanet.com/2011/11/infographic-software-testing-recruitment/">их</a>.</p>
<p>&#8226;&nbsp;Darren McMillan доказывает, что визуализация функциональности приложения в виде карт и схем позволит творчески переосмыслить подходы к его разработке и <a href="http://www.bettertesting.co.uk/content/?p=1438">тестированию</a>.</p>
<p>&#8226;&nbsp;Где эта улица, где этот дом: при тестировании стоит выбирать существующие субъекты и <a href="http://geekandpoke.typepad.com/geekandpoke/2011/11/simply-explained.html">объекты</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Adam Goucher выпустил очередную <a href="http://seleniumhq.wordpress.com/2011/11/28/a-smattering-of-selenium-71/">подборку</a> публикаций по Selenium и смежным областям.</p>
<p>&#8226;&nbsp;Adam Goucher: если вам интересен Selenium,  то эти материалы вас так же <a href="http://seleniumhq.wordpress.com/2011/11/21/a-smattering-of-selenium-68/">заинтересуют</a>. И еще одна <a href="http://seleniumhq.wordpress.com/2011/11/22/a-smattering-of-selenium-69/">подборка</a>. И <a href="http://seleniumhq.wordpress.com/2011/11/23/a-smattering-of-selenium-70/">еще</a>.</p>
<p>&#8226;&nbsp;Сможет ли BITE превзойти Selenium в создании и поддержке автотестов для сайтов с часто меняющимся <a href="http://googletesting.blogspot.com/2011/11/rpf-googles-record-playback-framework.html">интерфейсом</a>?</p>
<p>&#8226;&nbsp;GTAC 2011: материалы конференции, посвященной автоматизации тестирования ПО, выложены в открытый <a href="http://www.gtac.biz/talks">доступ</a>.</p>
<p>&#8226;&nbsp;Alan Page призывает уделять большее внимание автоматизации анализа автотестов: по отрицательному результату прогона автотеста тестировщик должен сразу понять, в чем <a href="http://angryweasel.com/blog/?p=362">загвоздка</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Linux: как проверить целостность файловой системы и отслеживать свободное дисковое <a href="http://www.ibm.com/developerworks/ru/library/l-lpic1-v3-104-2/">пространство</a>.</p>
<p>&#8226;&nbsp;Двадцать уроков по обеспечению <a href="http://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html">безопасности</a> PHP-приложений для системных администраторов.</p>
<p>&#8226;&nbsp;Kendra Little рассыпается в похвалах перед Microsoft SQL Server, делая акцент на его наиболее ярких <a href="http://www.brentozar.com/archive/2011/11/three-things-that-rock-about-sql-server/">возможностях</a>.</p>
<p>&#8226;&nbsp;Scott Hanselman представляет пять интересных <a href="http://www.hanselman.com/blog/FiveAbsolutelyEssentialUtilitiesThatMakeWindowsBetter.aspx">утилит</a> для Windows.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;SOPA подкралась незаметно: к чему может привести новая инициатива по борьбе с <a href="http://www.alistapart.com/articles/say-no-to-sopa/">пиратским</a> распространением контента?</p>
<p>&#8226;&nbsp;Всевышний и программист: создание мира, день <a href="http://geekandpoke.typepad.com/geekandpoke/2011/11/the-god-and-the-coder-day-one.html">первый</a>.</p>
<p>&#8226;&nbsp;Google: тяжела и неказиста жизнь простого <a href="http://eterevsky.livejournal.com/213148.html">программиста</a>.</p>
<p>&#8226;&nbsp;Глас вопиющего в пустыне: шел по следам родственной души и тоже не нашел затерянный <a href="http://xkcd.com/979/">родник</a>.</p>
<p>&#8226;&nbsp;Кружок &#8220;Умелые руки&#8221;: как обеспечить эффективное взаимодействие разработчиков, находящихся в разных частях <a href="http://blog.vmfarms.com/2011/10/how-we-solved-remote-employee-problem.html">света</a>?</p>
<p>&#8226;&nbsp;Google Verbatim: удобный способ избежать &#8220;улучшения&#8221; запроса при <a href="http://googlesystem.blogspot.com/2011/11/google-verbatim.html">поиске</a>.</p>
<p>&#8226;&nbsp;Наша служба и опасна и трудна: эксперт по безопасности приходит в <a href="http://geekandpoke.typepad.com/geekandpoke/2011/11/1000-ways-to-complain-in-a-restaurant.html">ресторан</a>&#8230;</p>
<p>&#8226;&nbsp;What the fuck? Забавные сообщения об <a href="http://thedailywtf.com/Articles/Google-Earth(quake).aspx">ошибках</a>.</p>
<p>&#8226;&nbsp;Любовь, похожая на сон: поэзия общения менеджера и <a href="http://geekandpoke.typepad.com/geekandpoke/2011/11/the-manager-and-the-coder.html">разработчика</a>.</p>
<p>&#8226;&nbsp;Драмкружок, кружок по фото, но мне еще и петь охота: ну как тут подумать о качестве ПО, когда столько <a href="http://learningfundamentals.com.au/wp-content/uploads/Focus-mindmap-for-web.jpg">дел</a>?</p>
<p>&#8226;&nbsp;Как быстро летит время, или не стареют душой ветераны: 20 лет с момента рождения текстового редактора <a href="http://arstechnica.com/open-source/news/2011/11/two-decades-of-productivity-vims-20th-anniversary.ars">Vim</a>. Бонус: интерактивное <a href="http://www.openvim.com/tutorial.html">руководство</a>.</p>
<p>&#8226;&nbsp;Google демонстрирует чудеса неуважения к пользователю, изменив интерфейс Google Reader и не оставив возможность вернуться к старому интерфейсу (<a href="http://googlesystem.blogspot.com/2011/10/google-readers-new-interface.html">1</a>, <a href="http://www.google.com/support/forum/p/reader/thread?tid=3c3ee5dfa7af3e4c&#038;hl=en&#038;start=40">2</a>, <a href="http://www.google.com/support/forum/p/reader/thread?tid=5a14d4898b83412c&#038;hl=en">3</a>). Update: рука <a href="http://fury.com/2011/11/my-offer-to-google-reader/">помощи</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>Б1</strong>.  Ну, прощайте. Нас нашли и скоро прикончат.<br /><strong>Б2</strong>. Бояться нечего. Пока мы есть, Заплатки нет. А когда она придет, нас уже не будет.<br /><strong>Б3</strong>. Заплатка &#8211; это страшный сон, плод нашего воображения!<br /><strong>Б1</strong>. Так может и мы существуем лишь в чьем-то сне?<br /><strong>Б2</strong>. Лишь бы Тот, Кому Мы Снимся, не увидел наши сны и не проснулся от испуга!<br />
&nbsp;<br />
<strong>Б1</strong>. Надоело быть на побегушках. Хочу в баг-менеджеры податься.<br /><strong>Б2</strong>. Меньше работать, больше получать?<br /><strong>Б1</strong>. Вдохновлять команду, разруливать конфликты, мыслить стратегически, нести ответственность за результат!<br /><strong>Б2</strong>. Круто! А может и мне в менеджеры?<br /><strong>Б1</strong>. Не все хотят быть руководителями и не у всех получится.<br /><strong>Б2</strong>. А если смогут и захотят?<br /><strong>Б1</strong>. Ужас! Тогда я не смогу меньше работать и больше получать!<br />
&nbsp;<br />
<strong>Р1</strong>. Что значит &#8220;throw an exception&#8221;?<br /><strong>Р2</strong>. Бросить исключение.<br /><strong>Р1</strong>. А зачем его бросать?<br /><strong>Р2</strong>. Брось, а то систему уронишь!<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-1111/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Октябрьская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-1011/</link>
		<comments>http://blog.openquality.ru/software-quality-news-1011/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 05:51:10 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-1011/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: архитектура систем, разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование и техсаппорт, эпизоды.
&#160;
Архитектура систем
&#160;
&#8226;&#160;StackExchange: что скрывается под капотом мощного информационного ресурса?
&#8226;&#160;Поисковый гигант озабочен вопросами безопасности и последовательно переводит на SSL основные продукты.
&#8226;&#160;Amazon, Google, Facebook: сравнение техпроцессов и подходов к разработке, отраженное во вдумчивом анализе инженера Google.
&#8226;&#160;Uncle Bob размышляет [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: архитектура систем, разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование и техсаппорт, эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Архитектура систем</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;<a href="http://highscalability.com/blog/2011/10/24/stackexchange-architecture-updates-running-smoothly-amazon-4.html">StackExchange</a>: что скрывается под капотом мощного информационного ресурса?</p>
<p>&#8226;&nbsp;Поисковый гигант озабочен вопросами безопасности и последовательно переводит на SSL основные <a href="http://googleblog.blogspot.com/2011/10/making-search-more-secure.html">продукты</a>.</p>
<p>&#8226;&nbsp;Amazon, Google, Facebook: <a href="https://plus.google.com/112678702228711889851/posts/eVeouesvaVX#112678702228711889851/posts/eVeouesvaVX">сравнение</a> техпроцессов и подходов к разработке, отраженное во вдумчивом анализе инженера Google.</p>
<p>&#8226;&nbsp;Uncle Bob размышляет об <a href="http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html">архитектуре</a> приложения: каково ее назначение и какой она должна быть.</p>
<p>&#8226;&nbsp;Kent Beck выложил краткий справочник-словарь по дизайну программных <a href="https://www.facebook.com/notes/facebook-engineering/software-design-glossary/10150309412413920">продуктов</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Jeff Atwood одобряет продукты Apple как пользователь и нещадно их критикует как <a href="http://www.codinghorror.com/blog/2011/10/serving-at-the-pleasure-of-the-king.html">разработчик</a>.</p>
<p>&#8226;&nbsp;Дмитрий Завалишин: <a href="http://dz.livejournal.com/676628.html">риски</a> в заказной разработке программного обеспечения.</p>
<p>&#8226;&nbsp;Работа с исключениями в PHP: практические примеры, снабженные <a href="http://net.tutsplus.com/tutorials/php/the-ins-and-outs-of-php-exceptions/">иллюстрациями</a>.</p>
<p>&#8226;&nbsp;Шаблоны в PHP: модель MVC, базовые концепции и примеры <a href="http://coding.smashingmagazine.com/2011/10/17/getting-started-with-php-templating/">реализации</a>.</p>
<p>&#8226;&nbsp;&#8221;You don&#8217;t even know enough to realize just how little you know&#8221;. Можно ли кого-либо считать <a href="http://net.tutsplus.com/articles/do-you-suffer-from-the-dunning-kruger-effect/">экспертом</a> в разработке программного обеспечения?</p>
<p>&#8226;&nbsp;Bug jail: здесь оказываются разработчики, количество багов у которых зашкаливает выше установленного <a href="http://blogs.msdn.com/b/oldnewthing/archive/2011/10/11/10222997.aspx">предела</a>.</p>
<p>&#8226;&nbsp;Несовершенство мира &#8211; следствие методик TDD, заброшенных на <a href="http://geekandpoke.typepad.com/geekandpoke/2011/10/">полпути</a>.</p>
<p>&#8226;&nbsp;Twitter API + Ruby = технология извлечения и анализа данных из популярного <a href="http://www.ibm.com/developerworks/library/os-dataminingrubytwitter/">сервиса</a>.</p>
<p>&#8226;&nbsp;В <a href="http://msdn.microsoft.com/en-us/magazine/hh463583.aspx">октябрьском</a> выпуске MSDN Magazine: асинхронное программирование, работа с HTML5, моделирование данных и другие темы.</p>
<p>&#8226;&nbsp;Зерна Agile отделяются от плевел: &#8220;Agile is communication, trust and accountability. And that&#8217;s it. The rest is <a href="http://agileisbullshit.com/">bullshit</a>&#8220;.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>JavaScript</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Code review: что, как и почему на живых примерах <a href="http://coding.smashingmagazine.com/2011/10/27/lessons-from-a-review-of-javascript-code/">JavaScript</a>. Бонус: <a href="http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/">подборка</a> инструментов и библиотек в помощь программисту на JavaScript.</p>
<p>&#8226;&nbsp;Екатерина Каменская (Software Engineer in Test, YouTube) представляет <a href="http://googletesting.blogspot.com/2011/10/scriptcover-makes-javascript-coverage.html">ScriptCover</a> &#8211; инструмент для анализа покрытия кода JavaScript.</p>
<p>&#8226;&nbsp;Анимация в JavaScript: математический подход и первые <a href="http://coding.smashingmagazine.com/2011/10/04/quick-look-math-animations-javascript/">шаги</a>.</p>
<p>&#8226;&nbsp;Правила хорошего тона в jQuery для продвинутых <a href="http://coding.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/">разработчиков</a>.</p>
<p>&#8226;&nbsp;<a href="http://googlesystem.blogspot.com/2011/10/dart-googles-programming-language-for.html">Dart</a> &#8211; альтернатива JavaScript из стен поискового гиганта.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;The Monday Times: еженедельная <a href="http://storify.com/testingclub/the-monday-times">подборка</a> публикаций по тестированию ПО.</p>
<p>&#8226;&nbsp;Evil Tester: исследовательское тестирование кануло в Лету; да здравствует <a href="http://angryweasel.com/blog/?p=349">тестирование</a>!</p>
<p>&#8226;&nbsp;Elisabeth Hendrickson, флагман agile-тестирования, передает из Киева: &#8220;&#8230; while testers are still important, not everything that involves some aspect of testing should be done by people with QA or Test in their <a href="http://testobsessed.com/blog/2011/10/26/checking-alignment/">title</a>&#8220;.</p>
<p>&#8226;&nbsp;Особенности тестирования Facebook: подходы и <a href="http://dou.ua/columns/osobennosti-testirovaniya-facebook/">инструменты</a>.</p>
<p>&#8226;&nbsp;The <a href="http://angryweasel.com/blog/?p=348">paradox</a> of testing: we want to find defects in the software under test, but we do not really want to find them.</p>
<p>&#8226;&nbsp;Обзор публикаций от The Testing Planet: чему учиться, как учиться, как тестировать и как <a href="http://www.thetestingplanet.com/2011/10/the-monday-times-focus-on-learning/">нанимать</a>.</p>
<p>&#8226;&nbsp;Подборка инструментов для оценки удобства интерфейса, отслеживания действий пользователя и организации эффективной обратной <a href="http://uxdesign.smashingmagazine.com/2011/10/20/comprehensive-review-usability-user-experience-testing-tools/">связи</a>.</p>
<p>&#8226;&nbsp;Gerald Weinberg представляет онлайн-журнал Tea-Time for Testers и кратко описывает темы последнего <a href="http://secretsofconsulting.blogspot.com/2011/10/review-september-issue-of-tea-time-for.html">выпуска</a>.</p>
<p>&#8226;&nbsp;Jim Reardon представляет Google Test Analytics &#8211; инструмент, который, по задумке авторов, подкосит тест-планы <a href="http://googletesting.blogspot.com/2011/10/google-test-analytics-now-in-open.html">на корню</a>.</p>
<p>&#8226;&nbsp;James Bach объясняет <a href="http://www.satisfice.com/blog/archives/638">различие</a> между BDD и тестированием: &#8220;It is not the process of  demonstrating that the product CAN work, but exploring if it WILL&#8221;.</p>
<p>&#8226;&nbsp;Истории из жизни замечательных тестировщиков: препятствие есть первый шаг к решению <a href="http://www.developsense.com/blog/2011/10/confusion-as-an-oracle/">задачи</a>.</p>
<p>&#8226;&nbsp;Тест не работает? Достаточно изменить критерей верного <a href="http://geekandpoke.typepad.com/geekandpoke/2011/10/ddt.html">результата</a>!</p>
<p>&#8226;&nbsp;Наиболее заметные публикации о тестировании программного обеспечения за последнюю неделю: инструменты, подходы, решения: (<a href="http://seleniumhq.wordpress.com/2011/10/17/a-smattering-of-selenium-64/">1</a>, <a href="http://seleniumhq.wordpress.com/2011/10/18/a-smattering-of-selenium-65/">2</a>, <a href="http://www.thetestingplanet.com/2011/10/the-monday-times-5/">3</a>).</p>
<p>&#8226;&nbsp;Уроки Евгения Касперского: как тестировать <a href="http://e-kaspersky.livejournal.com/87090.html">антивирусы</a>?</p>
<p>&#8226;&nbsp;The Testing Planet: подборка публикаций по тестированию программного обеспечения (<a href="http://www.thetestingplanet.com/2011/10/the-monday-times-3/">1</a>, <a href="http://www.thetestingplanet.com/2011/10/the-monday-times-4/">2</a>).</p>
<p>&#8226;&nbsp;Где пользователь спотыкается на сайте? Методика <a href="http://uxdesign.smashingmagazine.com/2011/10/04/improve-the-user-experience-by-tracking-errors/">отслеживания</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Adam Goucher представляет новости из мира Selenium и смежных элементов разработки и тестирования (<a href="http://seleniumhq.wordpress.com/2011/10/19/a-smattering-of-selenium-66/">1</a>, <a href="http://seleniumhq.wordpress.com/2011/10/27/a-smattering-of-selenium-67/">2</a>).</p>
<p>&#8226;&nbsp;Evil Tester делится маленьким секретом для скриптов, использующих WebDriver: как избежать <a href="http://www.eviltester.com/index.php/2011/10/26/how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation/">диалога</a> &#8216;update failed&#8217; в Firefox.</p>
<p>&#8226;&nbsp;Aaron Jacobs представляет Google JS Test &#8211; фреймворк для модульных тестов, работающий на движке V8 JavaScript <a href="http://googletesting.blogspot.com/2011/10/google-js-test-now-in-open-source.html">Engine</a>.</p>
<p>&#8226;&nbsp;Кружок &#8220;Умелые руки&#8221;: использование аккаунта GMail в качестве хранилища информации о <a href="http://codebetter.com/patricksmacchia/2011/10/13/using-a-gmail-account-as-a-production-bug-tracking-server/">багах</a>.</p>
<p>&#8226;&nbsp;<a href="http://googletesting.blogspot.com/2011/10/take-bite-out-of-bugs-and-redundant.html">BITE</a> (Browser Integrated Testing Environment) &#8211; расширение для Chrome, позволяющее эффективно отслеживать и воспроизводить баги на web-страницах.</p>
<p>&#8226;&nbsp;Проект openSUSE представил <a href="http://www.opennet.ru/opennews/art.shtml?num=32017">openQA</a> &#8211; пакет для автоматизированного тестирования дистрибутивов.</p>
<p>&#8226;&nbsp;Четыре полезных инструмента для проверки отображения сайта в браузерах всех мастей и <a href="http://www.thetestingplanet.com/2011/10/4-tools-to-help-you-test-for-responsive-web-design/">настроек</a>.</p>
<p>&#8226;&nbsp;<a href="http://googletesting.blogspot.com/2011/10/unleash-qualitybots.html">QualityBots</a> &#8211; инструмент, отслеживающий изменения в работе новых версий Chrome по сравнению с предыдущими.</p>
<p>&#8226;&nbsp;Adam Goucher публикует <a href="http://seleniumhq.wordpress.com/2011/10/03/a-smattering-of-selenium-63/">новости</a> из мира Selenium и проводит работу над <a href="http://element34.ca/blog/beyond-content-and-back-into-structure">ошибками</a>, размышляя о структуре автотестов.</p>
<p>&#8226;&nbsp;<a href="http://www.ibm.com/developerworks/library/x-safexslt/index.html">XSLT 2.0</a>: автоматическое обнаружение ошибок.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование и техсаппорт</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;<a href="http://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/">Grep</a>: несколько примеров использования операторов OR, AND, NOT.</p>
<p>&#8226;&nbsp;Компоновка программ с gcc: несколько практических <a href="http://www.thegeekstuff.com/2011/10/gcc-linking/">примеров</a>.</p>
<p>&#8226;&nbsp;История выполненных команд в bash: несколько полезных <a href="http://www.markhneedham.com/blog/2011/10/13/bash-reusing-previous-commands/">трюков</a>.</p>
<p>&#8226;&nbsp;Интернационализация в Linux: как работать с различными региональными <a href="http://www.ibm.com/developerworks/linux/library/l-lpic3-312-6/">настройками</a>?</p>
<p>&#8226;&nbsp;Памятка владельцам почтовых серверов: надежная передача писем и защита от <a href="http://agiletesting.blogspot.com/2011/10/good-email-sending-practices.html">спамеров</a>.</p>
<p>&#8226;&nbsp;Техническая поддержка программного продукта: краткий обзор средств и <a href="http://www.smashingmagazine.com/2011/10/10/supporting-product-providing-technical-support/">подходов</a>.</p>
<p>&#8226;&nbsp;Mark Russinovich рассказывает, как Process Explorer из обоймы инструментов Sysinternals помог выявить причину перезагрузки системы при коннекте к <a href="http://blogs.technet.com/b/markrussinovich/archive/2011/10/03/3456790.aspx">сети</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Patrick McKenzie обращается к программистам: раскройте глаза, протрите уши и поймите, кто вы есть на самом <a href="http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/">деле</a>.</p>
<p>&#8226;&nbsp;Роль личности в истории: влияние Стива Джобса на развитие <a href="http://googlesystem.blogspot.com/2011/10/how-steve-jobs-influenced-googles.html">Google</a>.</p>
<p>&#8226;&nbsp;Из серии &#8220;Нарочно не придумаешь&#8221;: забавные информационные сообщения в пользовательском <a href="http://thedailywtf.com/Articles/Rock-amp8216n-Bowl-Champion.aspx">интерфейсе</a>.</p>
<p>&#8226;&nbsp;Надбавка к зарплате? Попроси, не стесняйся, но подойди к этому с чувством, толком, <a href="http://www.brentozar.com/archive/2011/10/asking-for-a-raise/">расстановкой</a>.</p>
<p>&#8226;&nbsp;Группа ученых изучает разработку программного обеспечения под микроскопом антропологии, психологии и других прикладных научных <a href="http://www.americanscientist.org/issues/feature/2011/6/empirical-software-engineering/">дисциплин</a>.</p>
<p>&#8226;&nbsp;Google закрывает проекты Code Search, Google Buzz, Jaiku и бросает все силы на развитие более важных <a href="http://googleblog.blogspot.com/2011/10/fall-sweep.html">проектов</a>.</p>
<p>&#8226;&nbsp;Компьютерный вирус поразил систему управления американскими беспилотными летательными <a href="http://lenta.ru/news/2011/10/09/virus/">аппаратами</a>.</p>
<p>&#8226;&nbsp;Высокие технологии в руках манипулятора: меньше народу, больше <a href="http://xkcd.com/958/">кислороду</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>M1</strong>. Есть два бага: А и Б. Баг А неприятный, а баг Б терпимый.<br /><strong>М2</strong>. Странное дело: пользователи просят исправить баг Б, а про А молчат.<br /><strong>М1</strong>. До бага А они еще не дошли. Те, кто дошел, больше ни о чем не просят!<br />
&nbsp;</p>
<p><strong>Б</strong>. Извините, пожалуйста, что я к вам обращаюсь&#8230;<br /><strong>Т</strong>. Брысь! Сгинь, нечистая сила!<br /><strong>Б</strong>. Простите, что я говорю, когда вы меня перебиваете&#8230;<br /><strong>Т</strong>. Чего тебе? Слышь, отвали!<br /><strong>Б</strong>. Я ль на свете всех милее, всех желанней и наглее?<br />
&nbsp;</p>
<p><strong>БМ</strong>. Проект у нас серьезный. Баг нужен не простой, а ответственный.<br /><strong>Б</strong>. Я тот, кто нужен! Берите &#8211; не пожалеете!<br /><strong>БМ</strong>. Есть рекомендации с последнего места работы?<br /><strong>Б</strong>. Проект закрыт, ответственность на мне!<br />
&nbsp;</p>
<p><strong>Т1</strong>. Написал кучу багов &#8211; и ни один не исправили.<br /><strong>Т2</strong>. Это новая политика: &#8220;Всех впускать, никого не выпускать!&#8221;<br />
&nbsp;</p>
<p><strong>Т</strong>. Тестирую сайт в Firefox 5 и 7. И в обоих случаях вижу: “Ваш браузер не поддерживается”.<br /><strong>Р</strong>. Конечно, не поддерживается. Firefox 5 слишком старый и не поддерживает новые фишки, а Firefox 7 слишком новый, чтобы о нем думать. Ставь Firefox 6!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-1011/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Telnet Scripting Tool: автоматизация telnet-сессий</title>
		<link>http://blog.openquality.ru/telnet-scripting/</link>
		<comments>http://blog.openquality.ru/telnet-scripting/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 04:52:47 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[Инструменты]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/telnet-scripting/</guid>
		<description><![CDATA[Автоматизация интерактивного общения с системой по протоколу telnet: краткое описание утилиты и примеры использования.]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>Как уже отмечалось ранее, для автоматизации интерактивного общения с системой можно применять инструменты семейства Expect  (<a href="http://blog.openquality.ru/expect-introduction/">раз</a>, <a href="http://blog.openquality.ru/expect-children/">два</a>). Ниже представлена еще одна полезная утилита, позволяющая с Windows-машины управлять telnet-сессией к удаленной системе по протоколу telnet. Пример такой системы: <a href="http://en.wikipedia.org/wiki/HP_Integrated_Lights-Out">HP iLO</a>. По умолчанию, в ней открыт только telnet-доступ, а возможность пользоваться ssh приобретается за отдельную плату. Другой пример: продукты Cisco, также позволяющие обращаться к себе по telnet, несмотря на очевидную незащищенность такого соединения.</p>
<p>Итак, утилита называется <strong>Telnet Scripting Tool 1.0</strong> (tst10.exe) и лежит <a href="http://support.moonpoint.com/downloads/windows/network/Telnet/tst10.php">здесь</a>. Она не единственная в своем роде, но довольно удобная в интеграции с другими инструментами.</p>
<p>Вот ее описание, выдаваемое при запуске без параметров:</p>
<div class="oqcode">
<pre>
Usage Syntax:

tst10.exe /r:script.txt [options]

/r:script.txt      run script.txt
[options]          any of these:

/o:output.txt      send session output to output.txt
/m                 run script in minimized window

Usage Example:

tst10.exe /r:script.txt /o:output.txt /m

Scripting Syntax:

HOSTNAME PORT      port number optional, default: 23
WAIT "string"      string to wait for
SEND "string"      string to send
\"                 represents the a quote character
\m                 represents a <CR/LF>
\\                 represents the backslash character

Scripting Example:

hostname.com 23
WAIT &#8220;login&#8221;
SEND &#8220;root\m&#8221;
WAIT &#8220;password&#8221;
SEND &#8220;mypassword\m&#8221;
WAIT &#8220;>&#8221;
SEND &#8220;dip internet.dip\m&#8221;
WAIT &#8220;>&#8221;

Scripting Note:

You can start with either WAIT or SEND commands, but you *must* alternate them. ie: you can&#8217;t use two or more WAIT or SEND in a row.

Note:

TST will disconnect and close as soon as its done with the last entry of the script.

If you need to, you can type in the terminal window while the script is running.
</pre>
</div>
<p>Рассмотрим такую задачу: для целей автотестирования нам нужно выполнять последовательность команд на удаленной системе (скажем, HP iLo). Последовательность команд может быть разной. Параметры команд также могут различаться. К примеру, нам нужно добавлять и удалять пользователя в той или иной системе и анализировать успешность операции.</p>
<p>Подготовим шаблоны для сессий добавления и удаления пользователя.</p>
<p>Файл create.template:</p>
<div class="oqcode">
<pre>
%Host% 23
WAIT "login"
SEND "%RunningUser%\m"
WAIT "password"
SEND "%RunningUserPassword%\m"
WAIT "MP>"
SEND "CM\m"
WAIT "CM>"
SEND "UC -new %NewUser% -user TestUser -rights e all -mode multiple -enable e -password %NewUserPassword%\m"
WAIT "Confirm?"
SEND "Y\m"
WAIT "Command successful"
</pre>
</div>
<p>Файл delete.template:</p>
<div class="oqcode">
<pre>
%Host% 23
WAIT "login"
SEND "%RunningUser%\m"
WAIT "password"
SEND "%RunningUserPassword%\m"
WAIT "MP>"
SEND "CM\m"
WAIT "CM>"
SEND "UC -delete %NewUser%\m"
WAIT "to delete this user?"
SEND "Y\m"
WAIT "Command successful"
</pre>
</div>
<p>Параметры в шаблонах будут заменяться на требуемые значения, получаемые из командной строки при запуске следующего скрипта (telnetsession.js):</p>
<div class="oqcode">

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">// How to run:</span>
<span style="color: #006600; font-style: italic;">// cscript /NoLogo .\telnetsession.js Command Host RunningUser RunningUserPassword &lt;NewUser&gt; &lt;NewUserPassword&gt;</span>
<span style="color: #006600; font-style: italic;">// Example: </span>
<span style="color: #006600; font-style: italic;">// cscript /NoLogo .\telnetsession.js create 192.168.11.180 root P1n5e3R4s9 jdoe w34Rt8yU94d</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">/////////////// Get command line parameters ///////////////</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> Args <span style="color: #339933;">=</span> WScript.<span style="color: #006600;">Arguments</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> Command<span style="color: #339933;">,</span> Host<span style="color: #339933;">,</span> RunningUser<span style="color: #339933;">,</span> RunningUserPassword<span style="color: #339933;">,</span> NewUser<span style="color: #339933;">,</span> NewUserPassword   <span style="color: #006600; font-style: italic;">// cmdline parameters 0 through 5</span>
<span style="color: #003366; font-weight: bold;">var</span> Parameters <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Host,RunningUser,RunningUserPassword,NewUser,NewUserPassword&quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
Command <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Host <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
RunningUser <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
RunningUserPassword <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">// Some other commands may not require these parameters:</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Command <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;create&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>Command <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;delete&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>  
<span style="color: #009900;">&#123;</span>
	NewUser <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Command <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;create&quot;</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
	NewUserPassword <span style="color: #339933;">=</span> Args<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> ScriptTemplate <span style="color: #339933;">=</span> Command <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;.template&quot;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> ScriptScenario <span style="color: #339933;">=</span> Command <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;.scenario&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #003366; font-weight: bold;">var</span> LogFile <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;telnet_session.log&quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">/////////////// Prepare scenario for telnet session  /////////////// </span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">// Read script template into array</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> mfso <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>           
<span style="color: #003366; font-weight: bold;">var</span> infile <span style="color: #339933;">=</span> mfso.<span style="color: #006600;">OpenTextFile</span><span style="color: #009900;">&#40;</span>ScriptTemplate<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> ScriptTemplateArray <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> arrayIndex <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>infile.<span style="color: #006600;">AtEndOfStream</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	instring <span style="color: #339933;">=</span> infile.<span style="color: #006600;">ReadLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	ScriptTemplateArray<span style="color: #009900;">&#91;</span>arrayIndex<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> instring<span style="color: #339933;">;</span>
	arrayIndex<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
infile.<span style="color: #000066;">Close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">// Replacement stuff</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> ParametersArray <span style="color: #339933;">=</span> Parameters.<span style="color: #006600;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;,&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> ParameterInTemplate<span style="color: #339933;">,</span> ParameterInScenario<span style="color: #339933;">,</span> ParameterTmp<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> ParametersArrayLength<span style="color: #339933;">=</span>ParametersArray.<span style="color: #006600;">length</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>ParametersArrayLength<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
	ParameterInTemplate <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;%&quot;</span> <span style="color: #339933;">+</span> ParametersArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;%&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	ParameterInScenario<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>ParametersArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> j<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>j<span style="color: #339933;">&lt;</span>arrayIndex<span style="color: #339933;">;</span>j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ScriptTemplateArray<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">match</span><span style="color: #009900;">&#40;</span>ParameterInTemplate<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			ScriptTemplateArray<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>ScriptTemplateArray<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">replace</span><span style="color: #009900;">&#40;</span>ParameterInTemplate<span style="color: #339933;">,</span> ParameterInScenario<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">/////////////// Create telnet scenario /////////////// </span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> outfile <span style="color: #339933;">=</span> mfso.<span style="color: #006600;">OpenTextFile</span><span style="color: #009900;">&#40;</span>ScriptScenario<span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> k<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>k<span style="color: #339933;">&lt;</span>arrayIndex<span style="color: #339933;">;</span>k<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> outfile.<span style="color: #006600;">WriteLine</span><span style="color: #009900;">&#40;</span>ScriptTemplateArray<span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
outfile.<span style="color: #000066;">Close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">///////////////  Run telnet session /////////////// </span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> mshell <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;WScript.Shell&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> RunStr <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;tst10.exe /r:&quot;</span> <span style="color: #339933;">+</span> ScriptScenario <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot; /o:&quot;</span> <span style="color: #339933;">+</span> LogFile<span style="color: #339933;">;</span>
mshell.<span style="color: #006600;">run</span><span style="color: #009900;">&#40;</span>RunStr<span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">///////////////  Analyze log and exit with Return Code /////////////// </span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> logfso <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>           
<span style="color: #003366; font-weight: bold;">var</span> logfile <span style="color: #339933;">=</span> logfso.<span style="color: #006600;">OpenTextFile</span><span style="color: #009900;">&#40;</span>LogFile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> LogContent <span style="color: #339933;">=</span> logfile.<span style="color: #006600;">ReadAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LogContent.<span style="color: #006600;">match</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Command successful&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	WScript.<span style="color: #006600;">Echo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Success&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
	WScript.<span style="color: #006600;">Echo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Failure&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
<span style="color: #009900;">&#125;</span></pre></div></div>

</div>
<p>Пример запуска:</p>
<div class="oqcode">
<pre>
D:\Work\Tst10\cscript /NoLogo .\telnetsession.js create 192.168.11.180 root P1n5e3R4s9 jdoe w34Rt8yU94d
Success
</div>

При выполнении скрипта параметры в соответствующем шаблоне заменяются на требуемые значения. В результате получается готовый сценарий для telnet-сессии (файл create.scenario):
<div class="oqcode">
<pre>
192.168.11.180 23
WAIT "login"
SEND "root\m"
WAIT "password"
SEND "P1n5e3R4s9\m"
WAIT "MP>"
SEND "CM\m"
WAIT "CM>"
SEND "UC -new jdoe -user TestUser -rights e all -mode multiple -enable e -password w34Rt8yU94d\m"
WAIT "Confirm?"
SEND "Y\m"
WAIT "Command successful"
</pre>
</div>
<p>Этот сценарий используется при запуске tst10.exe. В логе telnet_session.log будет следующее:</p>
<div class="oqcode">
<pre>
 *************************************************************************
  This is a private system.
  Do not attempt to login unless you are an authorized user.
  Any authorized or unauthorized access or use may be monitored and can
  result in criminal or civil prosecution under applicable law.
 *************************************************************************

<strong>MP login: root
root

MP password: P1n5e3R4s9
**********
</strong>

       Hewlett-Packard Integrated Lights-Out HP Integrity and HP 9000

    (c) Copyright Hewlett-Packard Company 1999-2004.  All Rights Reserved.

                           MP Host Name: mp00163545407c

                              Revision E.03.15

 *************************************************************************
                         MP ACCESS IS NOT SECURE
  Default MP users are currently configured and remote access is enabled.
  Modify default users passwords or delete default users (see UC command)
                                    OR
            Disable all types of remote access (see SA command)
 *************************************************************************

 *************************************************************************
                           Your Certificate is expired.
               Use the SO command to generate a new certificate.
 *************************************************************************

   MP MAIN MENU:

         CO: Console

        VFP: Virtual Front Panel

         CM: Command Menu

         CL: Console Log

         SL: Show Event Logs

         HE: Main Help Menu

          X: Exit Connection

<strong>[mp00163545407c] MP> CM
CM</strong>

	(Use Ctrl-B to return to MP main menu.)

<strong>[mp00163545407c] MP:CM> UC -new jdoe -user TestUser -rights e all -mode multiple -enable e -password w34Rt8yU94d</strong>
UC -new jdoe -user TestUser -rights e all -mode multiple -enable e -password w34Rt8yU94d

UC -new jdoe -user TestUser -rights e all -mode multiple -enable e -password w34Rt8yU94d

New User Parameters (* modified values):

   * User Login ID         : jdoe

   * User Password         : ************

   * User Name             : TestUser

     User Workgroup        : 

   * User Access Rights    : Console access, Power control, MP configuration, 

                             User administration

   * User Operating Mode   : Multiple

   * User Enabled/Disabled : Enabled 

     Modem Dial-back       : Disabled 

     Modem Dial-back Phone : 

<strong>   Confirm? (Y/[N]): Y
Y</strong>

Y

   -> User Configuration has been updated.

<strong>-> Command successful.</strong>

[mp00163545407c] MP:CM>
</pre>
</div>
<p>&nbsp;</p>
<p><strong>Вопрос в студию:</strong> существуют ли подобные инструменты для организации ssh-сессий? Что-нибудь наподобие <a href="http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html">plink</a>, но с интерактивностью как в tst10.exe?</p>
<p>Всего доброго.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/telnet-scripting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Сентябрьская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-0911/</link>
		<comments>http://blog.openquality.ru/software-quality-news-0911/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 05:45:28 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-0911/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование, эпизоды.
&#160;
Разработка приложений
&#160;
&#8226;&#160;Новости из web-разработки: что было на слуху в сентябре?
&#8226;&#160;IBM developerWorks: применение XPath при работе с XML в PHP.
&#8226;&#160;Уроки масштабирования от Turntable.fm: за месяц с нуля до миллиона посетителей.
&#8226;&#160;Наилучший совет программисту с позиций ООП.
&#8226;&#160;Нарочно не придумаешь: на что можно натолкнуться [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование, эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Новости из web-разработки: что было на слуху в <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-september-edition/">сентябре</a>?</p>
<p>&#8226;&nbsp;IBM developerWorks: применение XPath при работе с XML в <a href="http://www.ibm.com/developerworks/library/x-xpathphp/index.html">PHP</a>.</p>
<p>&#8226;&nbsp;Уроки масштабирования от Turntable.fm: за месяц с нуля до миллиона <a href="http://highscalability.com/blog/2011/9/26/17-techniques-used-to-scale-turntablefm-and-labmeeting-to-mi.html">посетителей</a>.</p>
<p>&#8226;&nbsp;Наилучший <a href="http://objology.blogspot.com/2011/09/one-of-best-bits-of-programming-advice.html">совет</a> программисту с позиций ООП.</p>
<p>&#8226;&nbsp;Нарочно не придумаешь: на что можно натолкнуться при чтении исходного кода <a href="http://thedailywtf.com/Articles/SingleQautedString(),-RemoveMeFunction(),-HumanFriendly-Dates,-and-More.aspx">предшественников</a>?</p>
<p>&#8226;&nbsp;На jQuery свет клином не сошелся, или 20 полезных <a href="http://net.tutsplus.com/articles/web-roundups/20-javascript-frameworks-worth-checking-out/">библиотек</a> JavaScript.</p>
<p>&#8226;&nbsp;What&#8217;s the fuck? Забавные сообщения об <a href="http://thedailywtf.com/Articles/~QCCmp2Txt~.aspx">ошибках</a>.</p>
<p>&#8226;&nbsp;Изучение JavaScript: от зеленого юнца до маститого <a href="http://net.tutsplus.com/tutorials/javascript-ajax/the-best-way-to-learn-javascript/">гуру</a>.</p>
<p>&#8226;&nbsp;Забота об отступах в Python и безумный алгоритм рождают магию геометрических <a href="http://thedailywtf.com/Articles/Python-Charmer.aspx">конструкций</a>.</p>
<p>&#8226;&nbsp;<a href="http://research.google.com/pubs/papers.html">Подборка</a> статей, написанных сотрудниками Google: от криптографии до искусственного интеллекта.</p>
<p>&#8226;&nbsp;Скажи мне кто твой муж, и я скажу кто ты: как распознать <a href="http://net.tutsplus.com/articles/general/14-ways-you-can-be-sure-youve-married-a-geek/">разработчика</a>?</p>
<p>&#8226;&nbsp;Windows 8: первые <a href="http://net.tutsplus.com/articles/general/windows-8-preview-a-developer-reflects/">камни</a> в огород новой операционной системы.</p>
<p>&#8226;&nbsp;Удар изподтишка: причиной низкой производительности СУБД может быть <a href="http://agiletesting.blogspot.com/2011/09/slow-database-check-raid-battery.html">разрядка</a> источника питания в RAID.</p>
<p>&#8226;&nbsp;Доктор Хаус прав: &#8220;Все лгут&#8221;. От краха системы к счастливому <a href="http://ridiculousfish.com/blog/archives/2011/09/15/The-app-that-was-fixed-by-a-crash/index.html">выздоровлению</a>.</p>
<p>&#8226;&nbsp;Google+ API доступен <a href="http://developers.google.com/+/api/">разработчикам</a>.</p>
<p>&#8226;&nbsp;<a href="http://lenta.ru/articles/2011/09/14/build/">Windows 8</a>: что билд грядущий нам готовит? <a href="http://msdn.microsoft.com/en-us/windows/home">Дистрибутив</a> для разработчика.</p>
<p>&#8226;&nbsp;SQL Server в Amazon EC2: обзор и руководство к <a href="http://www.brentozar.com/archive/2011/09/sql-server-ec/">действию</a>.</p>
<p>&#8226;&nbsp;Alex Russell (Google) рассуждает о JavaScript, призывает к спокойствию и делает прогноз на <a href="http://infrequently.org/2011/09/google-the-future-of-javascript/">будущее</a>.</p>
<p>&#8226;&nbsp;Steve Rowe (Microsoft) предсказывает, какой результат получится при наложении того или иного архетипа менеджера на приоритеты функциональности, стоимости, продолжительности разработки и <a href="http://blogs.msdn.com/b/steverowe/archive/2011/09/12/listening-to-the-team.aspx">качества</a> продукта.</p>
<p>&#8226;&nbsp;В сентябрьском <a href="http://msdn.microsoft.com/en-us/magazine/hh416747.aspx">выпуске</a> MSDN Magazine: от уроков Scrum и Agile к эффективной работе с HTML5, F# и C++.</p>
<p>&#8226;&nbsp;Jeff Atwood предлагает отказаться от использования паролей при аутентификации на сайтах. А что <a href="http://www.codinghorror.com/blog/2011/09/cutting-the-gordian-knot-of-web-identity.html">взамен</a>?</p>
<p>&#8226;&nbsp;Взаимодействие с пользователями продукта: переход от &#8220;что вас сегодня беспокоит&#8221; к &#8220;мы с вами всерьез и <a href="http://www.alistapart.com/articles/being-human-is-good-business/">надолго</a>&#8220;.</p>
<p>&#8226;&nbsp;Прототипирование в PHP: как быстро разработать макет сайта для первичной оценки <a href="http://net.tutsplus.com/tutorials/php/rapid-application-prototyping-in-php-using-a-micro-framework/">идеи</a>?</p>
<p>&#8226;&nbsp;PayPal API в PHP: курс молодого бойца с <a href="http://coding.smashingmagazine.com/2011/09/05/getting-started-with-the-paypal-api/">примерами</a>.</p>
<p>&#8226;&nbsp;It&#8217;s OK not to be cool: не обязательно внедрять &#8220;крутые и правильные&#8221; технологии, если существующее решение подходит для ближайших и долгосрочных <a href="http://highscalability.com/blog/2011/8/31/pud-is-the-anti-stack-windows-cfml-dropbox-xeround-jungledis.html">задач</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Steve Rowe: &#8220;Shipping a great product is the  decisions about what features not to implement and what bugs not to fix&#8221;. Приоритеты в разработке и тестировании: чему уделить первостепенное внимание? (<a href="http://blogs.msdn.com/b/steverowe/archive/2011/09/27/pruning-the-decision-tree.aspx">1</a>, <a href="http://blogs.msdn.com/b/steverowe/archive/2011/09/28/pruning-the-decision-tree-in-test.aspx">2</a>).</p>
<p>&#8226;&nbsp;Две подборки материалов по различным вопросам тестирования программного обеспечения (<a href="http://www.thetestingplanet.com/2011/09/the-monday-times-2/">1</a>, <a href="http://seleniumhq.wordpress.com/2011/09/26/a-smattering-of-selenium-59/">2</a>).</p>
<p>&#8226;&nbsp;TDD: скрупулезное следование правилам или свобода в (не)написании модульных <a href="http://www.writemoretests.com/2011/09/test-driven-development-give-me-break.html">тестов</a>?</p>
<p>&#8226;&nbsp;Michael Bolton придает большое значение эмоциям в тестировании: если тебе скучно, что-то идет <a href="http://www.developsense.com/blog/2011/09/the-cooking-detector/">не так</a>.</p>
<p>&#8226;&nbsp;Интерфейсы для работы с банковскими картами: два <a href="http://www.quicktestingtips.com/tips/2011/09/gift-cards-for-testing-payment-processing/">совета</a> по организации тестирования.</p>
<p>&#8226;&nbsp;Gerald Weinberg поймал с поличным систему распознавания текстов и порадовался ее недостаточному <a href="http://secretsofconsulting.blogspot.com/2011/09/why-english-will-never-be-100-automated.html">интеллекту</a>.</p>
<p>&#8226;&nbsp;Michael Bolton начинает за упокой и заканчивает за здравие: почему тестировщикам полезно уметь <a href="http://www.developsense.com/blog/2011/09/at-least-three-good-reasons-for-testers-to-learn-to-program/">программировать</a>?</p>
<p>&#8226;&nbsp;Evil Tester делится приемами работы с e-mail при <a href="http://www.eviltester.com/index.php/2011/09/20/running-out-of-email-addresses-when-you-test/">отладке</a> web-приложений.</p>
<p>&#8226;&nbsp;Michael Kelly: найти баг &#8211; дело хорошее, но помимо этого нужно конкретизировать область его <a href="http://www.quicktestingtips.com/tips/2011/09/start-from-the-abstract-and-move-the-the-specific/">проявления</a>.</p>
<p>&#8226;&nbsp;Gerald Weinberg о переходе из разработчиков в тестировщики: это не понижение статуса, а переход на новую <a href="http://secretsofconsulting.blogspot.com/2011/09/downgraded-to-testing.html">орбиту</a>.</p>
<p>&#8226;&nbsp;Ну а что вы хотели? В поисковике Google тоже есть <a href="http://stackoverflow.com/questions/7439224/breaking-google-by-sending-search-query">баги</a>&#8230;</p>
<p>&#8226;&nbsp;Microsoft Money: &#8220;Ваш пароль слишком сложный! Выберите что-нибудь полегче. Хакерам тоже нужно <a href="http://blogs.msdn.com/b/joshpoley/archive/2011/09/13/your-password-is-too-secure.aspx">жить</a>&#8220;.</p>
<p>&#8226;&nbsp;Elisabeth Hendrickson считает, что тестирование должно проникать во все этапы создания продукта и вовлекать всех игроков <a href="http://testobsessed.com/2011/09/09/testing-as-a-whole-team-activity/">команды</a>.</p>
<p>&#8226;&nbsp;Помощь создателям браузеров: как идентифицировать и описывать баги, найденные в браузере, перед отправкой их <a href="http://coding.smashingmagazine.com/2011/09/07/help-the-community-report-browser-bugs/">разработчикам</a>.</p>
<p>&#8226;&nbsp;I.M.Testy решил разобраться с арабской вязью в пришедшем письме и пришел к полезным заключениям о тестировании приложений в среде с различными региональными <a href="http://www.testingmentor.com/imtesty/2011/09/06/decoding-the-secrets-in-unicode-strings/">настройками</a>.</p>
<p>&#8226;&nbsp;Michael Bolton призывает не ограничивать результаты тестирования найденными багами и больше внимания уделять несуразностям в <a href="http://www.developsense.com/blog/2011/09/testing-problems-are-test-results/">процессе</a> работы над продуктом.</p>
<p>&#8226;&nbsp;Трудно убить двух зайцев: как подготовить данные для тестов и при этом избежать разглашения секретной <a href="http://www.brentozar.com/archive/2011/09/how-do-you-mask-data/">информации</a>?</p>
<p>&#8226;&nbsp;Addy Osmani (AOL) рассказывает об инструментах, позволяющих эффективно тестировать web-приложения в различных <a href="http://coding.smashingmagazine.com/2011/09/02/reliable-cross-browser-testing-part-1-internet-explorer/">версиях</a> Internet Explorer.</p>
<p>&#8226;&nbsp;James Whittaker (Google) проявляет качества жесткого управленца: 10 минут на раунд тестирования, и ни минуты <a href="http://googletesting.blogspot.com/2011/09/10-minute-test-plan.html">больше</a>.</p>
<p>&#8226;&nbsp;Количество оставшихся ошибок в коде можно оценить по количеству ошибок, найденному двумя независимыми <a href="http://users.livejournal.com/_winnie/312509.html">тестировщиками</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;<a href="http://www.thetestingplanet.com/2011/09/about-watir-an-introduction/">Watir</a>: краткий обзор популярного инструмента для тестирования web-приложений.</p>
<p>&#8226;&nbsp;IBM developerWorks: модульное тестирование в <a href="http://www.ibm.com/developerworks/library/os-jstesting/index.html">JavaScript</a>.</p>
<p>&#8226;&nbsp;Новости из мира web-тестирования: Selenium и не только (<a href="http://seleniumhq.wordpress.com/2011/09/27/a-smattering-of-selenium-60/">1</a>, <a href="http://seleniumhq.wordpress.com/2011/09/28/a-smattering-of-selenium-61/">2</a>, <a href="http://seleniumhq.wordpress.com/2011/09/29/a-smattering-of-selenium-62/">3</a>).</p>
<p>&#8226;&nbsp;Adam Goucher рассматривает автотесты под микроскопом: за какие операции отвечает тот или иной <a href="http://element34.ca/blog/know-and-respect-the-moving-parts-of-automation">компонент</a> при разумном подходе к делу?</p>
<p>&#8226;&nbsp;Selenium + PHP: что творится сейчас и что маячит на <a href="http://element34.ca/blog/a-survey-of-the-php-and-selenium-landscape">горизонте</a>?</p>
<p>&#8226;&nbsp;Alan Page: в автоматизированом тестировании графического интерфейса есть много подводных камней. Либо обойти их при прокладывании курса, либо отказаться от <a href="http://angryweasel.com/blog/?p=332">плавания</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;IBM developerWorks:  <a href="http://www.ibm.com/developerworks/aix/library/au-moresshlocks/index.html">безопасность</a> SSH-доступа к Unix-системам; применение SWAT для настройки сервисов <a href="http://www.ibm.com/developerworks/linux/library/l-lpic3-312-5/index.html">Samba</a>.</p>
<p>&#8226;&nbsp;Вскрыть пароль в OS X Lion? Нет ничего <a href="http://www.defenceindepth.net/2011/09/cracking-os-x-lion-passwords.html">проще</a>.</p>
<p>&#8226;&nbsp;MS SQL Server: краткое руководство сисадмина по управлению <a href="http://www.brentozar.com/archive/2011/09/sysadmins-guide-microsoft-sql-server-memory/">памятью</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Ужасы нашего городка: так ли страшен Facebook как его малюют (<a href="http://public.numair.com/2011_fbfool.html">1</a>, <a href="http://scripting.com/stories/2011/09/24/facebookIsScaringMe.html">2</a>, <a href="http://nikcub.appspot.com/logging-out-of-facebook-is-not-enough">3</a>)?</p>
<p>&#8226;&nbsp;За одного битого двух небитых дают: тщательный анализ канувшего в Лету проекта &#8211; зародыш будущих <a href="http://sethgodin.typepad.com/seths_blog/2011/09/post-mortem-or-pre-natal.html">побед</a>.</p>
<p>&#8226;&nbsp;Richard Stallman защищает скрижали свободы от <a href="http://digitizor.com/2011/09/20/richard-stallman-android-free-software/">угрозы</a> со стороны платформы Android.</p>
<p>&#8226;&nbsp;В какую сумму оценить программный продукт? Какая стратегия принесет больше дивидендов в долгосрочной <a href="http://www.smashingmagazine.com/2011/09/28/youre-pricing-it-wrong-software-pricing-demystified/">перспективе</a>?</p>
<p>&#8226;&nbsp;Joel Spolsky в очередном блестящем эссе представил два проекта, Careers 2.0 и Trello, и рассказал, какими должны быть продукт и действия его создателя, чтобы завоевать <a href="http://www.joelonsoftware.com/items/2011/09/15.html">сердца</a> пользователей и венчурных капиталистов.</p>
<p>&#8226;&nbsp;Выбор есть, но выбрать не из чего: в поисках простого решения для обмена большими <a href="http://xkcd.com/949/">файлами</a>.</p>
<p>&#8226;&nbsp;Облачные приложения позволяют сберечь значительное количество электроэнергии, но насколько это важно для <a href="http://googleblog.blogspot.com/2011/09/gmail-its-cooler-in-cloud.html">пользователей</a>?</p>
<p>&#8226;&nbsp;Изменения в расценках Google App Engine: закат очередного проекта Google или точный прицел на <a href="http://highscalability.com/blog/2011/9/7/what-google-app-engine-price-changes-say-about-the-future-of.html">будущее</a>?</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>Б1</strong>. Some bugs aren&#8217;t meant to be caged. We are supposed to be free!<br /><strong>Б2</strong>. That&#8217;s easier said than done. What about developers?<br /><strong>Б1</strong>. Developers don&#8217;t exist to beat you down. They exist to help you grow!<br />
&nbsp;</p>
<p><strong>Т1</strong>. Интересно, а есть полезные баги?<br /><strong>Т2</strong>. Баг в вирусе: “Поднявший меч от меча и погибнет!”.<br /><strong>Т3</strong>. Баг у конкурента: “Позади планеты всей!”<br /><strong>Т4</strong>. Баг-приманка: “Ждите следующую версию!”<br /><strong>Т5</strong>. Баг-похвала: “Спасибо тестировщику!”<br /><strong>Т6</strong>. Баг-эпитафия: “Все что ни делается &#8211; к лучшему!”<br />
&nbsp;</p>
<p><strong>М1</strong>. Зачем нам нужны тестировщики?<br /><strong>М2</strong>. Баг трудно найти той извилиной, которая его создала.<br /><strong>М1</strong>. Неужели у наших разработчиков по одной извилине?<br /><strong>М2</strong>. Извилин у них много, но мы их так торопим, что находить баги нет смысла. Конфликт интересов!<br /><strong>М1</strong>. То есть, баги и тестировщики существуют благодаря нам?<br /><strong>М2, Т1, Б1 (хором)</strong>. Тс-ссс! Никому про это не говори!<br />
&nbsp;</p>
<p><strong>Т</strong>. Хитрый баг попался &#8211; нестабильно воспроизводится.<br /><strong>Р</strong>. Там баг в баге. В следующем билде исправим.<br /><strong>Т</strong>. Исправим который из двух?</p>
<p>&nbsp;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>Тестирование в Microsoft Test and Lab Management</strong></p>
<p>7 октября 2011 г. в Санкт-Петербурге пройдет <a href="http://careerlab.ru/education/guru-academy/gusarov/sem3/?utm_source=openquality&#038;utm_medium=anons">семинар</a>, посвященный тестированию с использованием Microsoft Test and Lab Management. В качестве спикера выступит Владимир Гусаров. Автор познакомит слушателей с возможностями развертывания тестовых сред, написанием тестовых сценариев, работой с тестовыми планами, созданием автоматических тестов. </p>
<p>Зарегистрироваться и подробнее узнать о программе можно <a href="http://careerlab.ru/education/guru-academy/gusarov/sem3/?utm_source=openquality&#038;utm_medium=anons">на сайте</a>.</p>
<p><strong>Разработка баз данных с использованием Visual Studio 2010</strong></p>
<p>24 октября в Москве пройдет <a href="http://careerlab.ru/education/guru-academy/shamray/sem4/?utm_source=openquality&#038;utm_medium=anons">семинар</a>, посвященный инструментам для разработки баз данных. Александр Шамрай продемонстрирует возможности инструментов Visual Studio 2010 для разработки и развертывания баз данных, обеспечения их качества и интегрирование в общий процесс разработки ПО организации. Выступление разделено на три тематических части: разработка и развертывание баз данных; обеспечение качества баз данных; командная разработка баз данных. </p>
<p>Зарегистрироваться и подробнее узнать о программе можно <a href="http://careerlab.ru/education/guru-academy/shamray/sem4/?utm_source=openquality&#038;utm_medium=anons">на сайте</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-0911/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Августовская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-0811/</link>
		<comments>http://blog.openquality.ru/software-quality-news-0811/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 04:52:14 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-0811/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, эпизоды.
&#160;
Разработка приложений
&#160;
&#8226;&#160;Alex Papadimoulis рассказывает о гротескной истории, в которой не отрабатывала команда Delete из SQL-запроса: глаза на лоб полезли, увидели триггер и вернулись обратно.
&#8226;&#160;Криптография в JavaScript: заходите, шпиЁны дорогие, двери открыты.
&#8226;&#160;Web-разработка: события, инструменты, методики, увидевшие свет в августе.
&#8226;&#160;CSS: правила хорошего тона, позволяющие [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Alex Papadimoulis рассказывает о гротескной истории, в которой не отрабатывала команда Delete из SQL-запроса: глаза на лоб полезли, увидели триггер и вернулись <a href="http://thedailywtf.com/Articles/Confessions-The-Nondeleting-Delete.aspx">обратно</a>.</p>
<p>&#8226;&nbsp;Криптография в JavaScript: заходите, шпиЁны дорогие, двери <a href="http://www.matasano.com/articles/javascript-cryptography/">открыты</a>.</p>
<p>&#8226;&nbsp;Web-разработка: события, инструменты, методики, увидевшие свет в <a href="http://net.tutsplus.com/articles/news/recently-in-web-development-august-edition/">августе</a>.</p>
<p>&#8226;&nbsp;CSS: правила хорошего тона, позволяющие эффективно наследовать <a href="http://coding.smashingmagazine.com/2011/08/26/writing-css-for-others/">таблицы стилей</a>.</p>
<p>&#8226;&nbsp;Непрерывное развертывание и визуализация данных: как сделать процесс обновления кода в работающей системе гладким, наглядным и <a href="http://marlenacompton.com/?p=2417">безопасным</a>?</p>
<p>&#8226;&nbsp;Kendra Little рассказывает душераздирающую историю о том, к каким последствиям могут привести, казалось, бы безобидные <a href="http://www.brentozar.com/archive/2011/08/tempdb-multiplefiles-sort/">изменения</a> в настройках TempDB (MS SQL).</p>
<p>&#8226;&nbsp;Будь внимательней при коммите изменений в коде, а не то я прострелю тебе <a href="http://www.papercut.com/blog/chris/2011/08/19/who-broke-the-build/">башку</a>.</p>
<p>&#8226;&nbsp;Алена С++ пересказывает восемь заблуждений о распределенных <a href="http://alenacpp.blogspot.com/2011/08/blog-post.html">вычислениях</a>.</p>
<p>&#8226;&nbsp;Darren McMillan призывает внимательно относиться к особенностям восприятия интефейсов различными группами <a href="http://www.bettertesting.co.uk/content/?p=1356">пользователей</a>.</p>
<p>&#8226;&nbsp;Как работает web-браузер:  Tali Garsiel представила результаты нескольких лет исследований в виде подробного <a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/">обзора</a>.</p>
<p>&#8226;&nbsp;SQL performance: проверь свои знания за <a href="http://use-the-index-luke.com/3-minute-test">три минуты</a>.</p>
<p>&#8226;&nbsp;Core dump или stack trace: чем больше framework, тем тяжелее участь <a href="http://geekandpoke.typepad.com/geekandpoke/2011/08/modern-frameworks.html">разработчика</a>.</p>
<p>&#8226;&nbsp;На пути к масштабируемости MySQL: пять <a href="http://www.iheavy.com/2011/07/28/5-ways-to-boost-mysql-scalability/">рекомендаций</a>.</p>
<p>&#8226;&nbsp;Todd Hoff обращается к Amazon, призывая не хранить яйца в одной корзине и предсказывая дальнейшие проблемы с каскадной недоступностью <a href="http://highscalability.com/blog/2011/8/15/should-any-cloud-be-considered-one-availability-zone-the-ama.html">облака</a>.</p>
<p>&#8226;&nbsp;Php, perl, python, ruby: справочное <a href="http://hyperpolyglot.org/scripting">руководство</a> на все случаи жизни.</p>
<p>&#8226;&nbsp;Facebook API выиграл титул <a href="http://techcrunch.com/2011/08/11/facebook-wins-worst-api-in-developer-survey/">Worst API</a> в опросе разработчиков.</p>
<p>&#8226;&nbsp;Приложение на jQuery: как сделать его мультиязычным с помощью плагина <a href="http://www.ibm.com/developerworks/opensource/library/os-jquerynewpart1/index.html">Globalize</a>.</p>
<p>&#8226;&nbsp;Черный пояс в программировании: шаги на пути к <a href="http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer/">успеху</a>.</p>
<p>&#8226;&nbsp;Покажи мне свой лог-файл, и я скажу, что ты за <a href="http://geekandpoke.typepad.com/geekandpoke/2011/08/simply-explained.html">разработчик</a>.</p>
<p>&#8226;&nbsp;Ох, нелегкая это работа: придумать пароль, который трудно отгадать, но легко <a href="http://xkcd-rss.livejournal.com/234906.html">запомнить</a>.</p>
<p>&#8226;&nbsp;Пять этапов становления сервиса Tagged на пути к 100 млн пользователей и 1000 <a href="http://highscalability.com/blog/2011/8/8/tagged-architecture-scaling-to-100-million-users-1000-server.html">серверов</a>.</p>
<p>&#8226;&nbsp;В августовском номере MSDN Magazine: HTML5, секреты Visual Studio, искусственный интеллект, параллельное программирование и другие <a href="http://msdn.microsoft.com/en-us/magazine/hh339634.aspx">темы</a>.</p>
<p>&#8226;&nbsp;Mark Russinovich оживляет любимую компьютерную игрушку с помощью <a href="http://blogs.technet.com/b/markrussinovich/archive/2011/08/02/3442328.aspx">Process Monitor</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Alan Page на наглядном примере подчеркивает важность правильного выбора сценария тестирования вне зависимости от его прогона в ручном или автоматизированном <a href="http://angryweasel.com/blog/?p=325">режиме</a>.</p>
<p>&#8226;&nbsp;Опыт из стен Microsoft: I.M.Testy рассуждает о <a href="http://www.testingmentor.com/imtesty/2011/08/27/more-thoughts-on-leadership/">лидерстве</a> в тестировании, а Alan Page призывает не судить об обязанностях тестировщика по названию его <a href="http://angryweasel.com/blog/?p=322">должности</a>.</p>
<p>&#8226;&nbsp;A/B Testing: как оценить эффект от того или иного <a href="http://www.alistapart.com/articles/a-primer-on-a-b-testing/">варианта</a> web-интерфейса?</p>
<p>&#8226;&nbsp;I.M.Testy оседлал любимого конька: тестирование приложения с различными <a href="http://www.testingmentor.com/imtesty/2011/08/21/dealing-with-localelanguage-specific-static-test-data/">региональными</a> настройками.</p>
<p>&#8226;&nbsp;James Bach проводит соревнования по тестированию и раздает <a href="http://www.satisfice.com/blog/archives/605">пряники</a>.</p>
<p>&#8226;&nbsp;Двойной удар: James Bach представляет исследовательское тестирование в <a href="http://www.satisfice.com/blog/archives/598">паре</a> и важность исследовательского подхода при тестировании медицинских <a href="http://www.satisfice.com/blog/archives/602">устройств</a>.</p>
<p>&#8226;&nbsp;Семь раз протестируй, один раз напиши: Alberto Savoia (Engineering Director и &#8220;Innovation Agitator&#8221; в  Google) призывает тщательно тестировать идею приложения и способы его создания до начала непосредственной разработки (прототипа и кодирования). <a href="http://googletesting.blogspot.com/2011/08/pretotyping-different-type-of-testing.html">Введение</a> в предмет и <a href="http://pretotyping.blogspot.com/">подробности</a>.</p>
<p>&#8226;&nbsp;Absense of proof is not proof of absense: если баг не найден, это не значит, что его <a href="http://cartoontester.blogspot.com/2011/08/coverage.html">нет</a>.</p>
<p>&#8226;&nbsp;В июльском выпуске журнала   <a href="https://files.pbworks.com/download/Yt6Q0bIwfZ/testingclub/43854158/TheTestingPlanet-Issue5.pdf">The Testing Planet</a>: ручное тестирование и автотесты, производительность труда тестировщика, баги на весах приоритетов и другие темы.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Детский взгляд на автоматизацию тестирования и наивные <a href="http://cartoontester.blogspot.com/2011/08/cost-of-automation.html">выводы</a>.</p>
<p>&#8226;&nbsp;Ruby для новообращенных: Cucumber + Capybara = тестирование web-<a href="http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-testing-web-apps-with-capybara-and-cucumber/">приложений</a>.</p>
<p>&#8226;&nbsp;Инструменты для тестирования в мире Python: модульные тесты, непрерывная интеграция, web-интерфейс и многое <a href="http://wiki.python.org/moin/PythonTestingToolsTaxonomy">другое</a>.</p>
<p>&#8226;&nbsp;Adam Goucher делится ссылками по Selenium и материалами на свободную <a href="http://seleniumhq.wordpress.com/2011/08/15/a-smattering-of-selenium-58/">тему</a>.</p>
<p>&#8226;&nbsp;Adam Goucher представил свои находки по работе с <a href="http://seleniumhq.wordpress.com/2011/08/08/a-smattering-of-selenium-57/">Selenium</a>.</p>
<p>&#8226;&nbsp;James Bach предает анафеме поставщиков инструментов для автоматизации тестирования, но оставляет им право на <a href="http://www.satisfice.com/blog/archives/596">амнистию</a>.</p>
<p>&#8226;&nbsp;На примере JavaScript и Jasmine неутомимый Davy Brion рассказывает о работе в парадигме <a href="http://davybrion.com/blog/2011/08/take-advantage-of-your-bdd-framework/">BDD</a>. И еще на эту же <a href="http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/">тему</a>.</p>
<p>&#8226;&nbsp;Adam Goucher делится секретами эффективного применения Saunter при работе с Selenium: <a href="http://element34.ca/saunter/the-base-page">1</a>, <a href="http://element34.ca/saunter/you-probably-dont-want-to-use-sauntertestcase-directly-here-is-how">2</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Luiz Andr&#233; Barroso ( Distinguished Engineer в Google) представляет три эпохи развития Google: от легендарного прошлого через золотое настоящее к апокрифическому <a href="http://highscalability.com/blog/2011/8/29/the-three-ages-of-google-batch-warehouse-instant.html">будущему</a>.</p>
<p>&#8226;&nbsp;Евгений Касперский обвиняет компанию McAfee в том, что она делает из мухи <a href="http://eugene.kaspersky.ru/2011/08/22/shadyratshoddyrat/">слона</a>.</p>
<p>&#8226;&nbsp;Сбой на Яндексе: информация из первых <a href="http://yandex.livejournal.com/157979.html">рук</a>.</p>
<p>&#8226;&nbsp;Не трожь хакера: Greg Martin, специалист по информационной безопасности, нашел <a href="http://infosec20.blogspot.com/2011/08/why-you-dont-steal-from-hacker.html">похитителя</a> своего ноутбука в сети Facebook.</p>
<p>&#8226;&nbsp;Критикуя, предлагай: не ошибается лишь тот, кто ничего <a href="http://cartoontester.blogspot.com/2011/08/critical.html">не делает</a>.</p>
<p>&#8226;&nbsp;Epic fail в публичных местах: потроха систем на всеобщее <a href="https://plus.google.com/photos/110062984423810408098/albums/5639344743158031857">обозрение</a>.</p>
<p>&#8226;&nbsp;Как отгадать судоку в журналах? Сканировать web-камерой, распознать ячейки и цифры, найти решение. Подробное руководство с <a href="http://www.codeproject.com/KB/game/WebcamSudokuSolver.aspx">иллюстрациями</a>.</p>
<p>&#8226;&nbsp;Google размещает свое хозяйство на 900 тыс. серверов и в будущем планирует <a href="http://www.datacenterknowledge.com/archives/2011/08/01/report-google-uses-about-900000-servers/">расширить</a> свой парк до 10 миллионов.</p>
<p>&#8226;&nbsp;Чем больше приложений переходят в браузер, тем менее существенна <a href="http://xkcd.com/934/">разница</a> между Mac и PC.</p>
<p>&#8226;&nbsp;Рыцарям командной строки в Linux посвящается: 15 способов выполнить команду с использованием аргументов одной из <a href="http://www.thegeekstuff.com/2011/08/bash-history-expansion/">предыдущих</a>.</p>
<p>&#8226;&nbsp;David Drummond (Senior Vice President and Chief Legal Officer в Google): Android втянут в патентную трясину, но выйдет сухим из <a href="http://googleblog.blogspot.com/2011/08/when-patents-attack-android.html">воды</a>.</p>
<p>&#8226;&nbsp;National Security Agency (США) объявляет набор хакеров на защиту государственных <a href="http://www.nytimes.com/reuters/2011/08/02/technology/tech-us-usa-hackers.html">интересов</a>.</p>
<p>&#8226;&nbsp;Markus Frind, создатель PlentyOfFish (крупнейшего сайта знакомств с 245 млн посетителей в месяц), справлялся с администрированием SQL-сервера самостоятельно и лишь сейчас нанимает выделенного <a href="http://plentyoffish.wordpress.com/2011/07/30/hiring-my-first-dba/">сотрудника</a>.</p>
<p>&#8226;&nbsp;Сбылась мечта Электроника: &#8220;Вкалывают роботы, счастлив человек&#8221;. Foxconn, производитель комплектующих для Apple, Sony и Nokia, внедряет миллион роботов на смену человеческим <a href="http://news.xinhuanet.com/english2010/china/2011-07/30/c_131018764.htm">рукам</a>.</p>
<p>&nbsp;</p>
<p style="margin-left: 35px;"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>T1</strong>. Я тестирую приложение. <strong>Т2</strong>. Я пишу автотесты. <strong>Т3</strong>. Я тестирую автотесты. <strong>Т4</strong>. Я пишу автотесты для автотестов. <strong>Т5</strong>. Я тестирую автотесты для автотестов &#8230; <strong>Т10</strong>. Я тестировщик 10 уровня!<br />
&nbsp;<br />
<strong>Т</strong>. Слыхал про взаимоисключающие баги? Два бага называются взаимоисключающими, если функциональность одного сводит на нет действия другого.<br /><strong>Р</strong>. Наконец-то у нас есть выбор: либо исправить баг, либо дополнить еще одним!<br />
&nbsp;<br />
<strong>М1</strong>. Я проанализировал наши предыдущие проекты и вижу, что количество найденных багов подчиняется распределению Пуассона. Теперь мы можем точно спрогнозировать продолжительность проекта!<br /><strong>М2</strong>. Продолжительность в каких единицах? В человекоднях,  строках кода или в багофиксах?<br />
&nbsp;<br />
<strong>Б-скептик</strong>. Сомневаюсь, что тут есть где спрятаться&#8230;<br /><strong>Б-циник</strong>. Укромный уголок всегда найдется.<br /><strong>Т-скептик</strong>. Не уверен, что здесь все работает&#8230;<br /><strong>Т-циник</strong>. Здесь точно дело нечисто. И я это докажу.<br /><strong>М</strong>. За одного циника двух скептиков даю!<br />
&nbsp;<br />
<strong>2038. Набат из прошлого</strong>. Красота Кейт была ее сокровищем и проклятием. Густые волосы цвета пчелиного меда, бездонные зелено-синие глаза, высокая, упругая грудь, осиная талия и гитарный овал бедер заставляли мужчин цепенеть и забывать обо всем на свете. Услышат ли они ее идеи и алгоритмы, оценят ли влияние, которое может обрести Naxos, получив следующий транш? Кейт пробежала глазами по черновику выступления. Что-то мешало сосредоточиться. Необъяснимая тревога, гнездившаяся в подсознании, рвалась <a href="http://blog.openquality.ru/2038-introduction/">наружу</a>&#8230;</p>
<p>&nbsp;</p>
<p style="margin-left: 35px;"><strong>Лучшие эксперты Microsoft Patterns &amp; Practices приедут в Россию</strong></p>
<p><em>21 сентября в Штаб-квартире Microsoft в Москве пройдет третий <A HREF="http://www.pnpsummit.ru/?utm_source=openquality&amp;utm_medium=anons">Patterns&amp; Practices Summit Russia</A>. В программу саммита включены пленарное заседание, 3 трека с участием зарубежных и российских спикеров и завершающая сессия вопросов и ответов. Основными темами докладов в нынешнем году станут облачные вычисления,  бизнес-аналитика, корпоративная разработка и web-разработка.<br />
</em><br />
Откроют саммит Григорий Мельник и Эухиньйо Паче. Во время пленарной сессии они выступят с ключевым докладом, в котором расскажут о деятельности Microsoft Patterns &amp; Practices.</p>
<p>Доклад Э. Паче «Разработка приложений Facebook с использованием Windows Azure» обещает быть одним из самых ярких. Автор расскажет, как лучше использовать технические стороны Azure при создании коммерческих и маркетинговых приложений. </p>
<p>Microsoft Enterprise Library представляет собой набор повторно используемых компонентов, предназначенных для решения типовых проблем, с которыми сталкиваются разработчики бизнес-приложений. Григорий Мельник расскажет, как происходит процесс упрощения Enterprise Library,<br />
и  поделится опытом, полученным из основных релизов. </p>
<p>Во втором потоке докладов Владимир Мельник представит обзор и демо современных технологий Microsoft в области бизнес-аналитики, включая Microsoft SQL Server 2008 R2, SharePoint 2010 PerformancePoint Services, Pivot Viewer и PowerPivot.</p>
<p>Дон Смит выступит с темой «Одностраничные интерфейсы с современными Веб технологиями». В рамках данной сессии будут проиллюстрированы возможности адресации задач при создании одностраничных веб-интерфейсов.</p>
<p>Саммит завершится сессией вопросов и ответов.</p>
<p>Организатор &#8211; компания <A HREF="http://www.microsoft.com/ru/ru/default.aspx">Microsoft</A>.</p>
<p>Организация мероприятия &#8211; Центр профессионального роста <A HREF="http://www.careerlab.ru/?utm_source=openquality&amp;utm_medium=anons">Careerlab</A>.</p>
<p>Список докладов пополняется. За обновлениями вы можете следить на сайте <A HREF="http://www.pnpsummit.ru/?utm_source=openquality&amp;utm_medium=anons">Patterns &amp; Practices Summit Russia</A>.</p>
<p>Получить более подробную информацию о спикерах можно <A HREF="http://www.pnpsummit.ru/#b_22/?utm_source=openquality&amp;utm_medium=anons">здесь</A>.</p>
<p>&nbsp;</p>
<p style="margin-left: 35px;"><strong>Спасибо, до встречи!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-0811/feed/</wfw:commentRss>
		</item>
		<item>
		<title>2038. Набат из прошлого</title>
		<link>http://blog.openquality.ru/2038-introduction/</link>
		<comments>http://blog.openquality.ru/2038-introduction/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 04:41:50 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[Приложения]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/2038-introduction/</guid>
		<description><![CDATA[19 января 2038 года часть компьютерных систем неверно вычислит дату в приложениях, где она без сбоев вычислялась десятки лет. Представление времени в стандарте POSIX  служило верой и правдой почти полвека и через три дня должно пройти самое серьезное испытание на прочность... ]]></description>
			<content:encoded><![CDATA[<p style="text-align: right; margin-right: 150px">Времена не выбирают.</p>
<p><em>Все персонажи вымышленные. Совпадения случайны.</em></p>
<p>16 января 2038 года</p>
<p>Медвежий угол в Пенсильвании к западу от реки Делавэр. Неприметное серое здание и тесный двор за железобетонным периметром. Глухая одиночная камера с отсыревшими болотными стенами и замазанным известкой окном. Здесь нет помилования и реабилитации, но есть надежда, шанс на спасение. Ждать осталось недолго.  </p>
<p>Джеймс Сантос был схвачен и заточен в каменный мешок двадцать с лишним лет назад. Скандальные материалы о вторжении в Сирию, нелегальном обороте наркотиков и руткитах в Microsoft Windows могли обрушить американскую экономику, и без того изнемогавшую от бремени внешнего долга. Независимый журналист-исследователь исчез со всех радаров мировых СМИ, и лишь несколько человек в администрации Президента знали, что бывший хакер, собиравшийся всколыхнуть мир своими публикациями, был арестован в Швеции и нелегально доставлен в самую секретную тюрьму оплота западной демократии. Неделю имя пропавшего Сантоса не сходило с полос газет, выдвигались десятки версий его исчезновения. А потом о нем забыли &#8211; новые герои и события заняли пустующую нишу&#8230;</p>
<p>*****</p>
<p>Кейт Бланш, основательница дерзкого стартапа Naxos, бросившего вызов Google, готовилась ко встрече с инвесторами. Naxos вышел на рынок с интеллектуальным поиском: роботы-пауки Naxos могли пройти по всем закоулкам теневого Интернета, традиционно скрытого от поисковых машин: заброшенным блогам, платным библиотекам, закрытым форумам, разномастным базам данных на архивных серверах. И не просто пройти, но  обработать и проиндексировать крупицы знаний так, что информационный хлам оказывался в стороне, а на свет выступали тенденции: что происходит в мире сейчас и что произойдет в ближайшей и долгосрочной перспективе.</p>
<p>Красота Кейт была ее сокровищем и проклятием. Густые волосы цвета пчелиного меда, бездонные зелено-синие глаза, высокая, упругая грудь, осиная талия и гитарный овал бедер заставляли мужчин цепенеть и забывать обо всем на свете. Услышат ли они ее идеи и алгоритмы, оценят ли  влияние, которое может обрести Naxos, получив следующий транш?  Кейт пробежала глазами по черновику выступления. Что-то мешало сосредоточиться. Необъяснимая тревога, гнездившаяся в подсознании, рвалась наружу&#8230;</p>
<p>*****</p>
<p>Семен Яковлевич Коган, согбенный старик, задыхаясь, с трудом волочил ноги, опираясь на видавший виды костыль и елозя стертыми подошвами по скользкому питерскому льду. Когда-то он доказал гипотезу Лежандра и отказался принять причитающуюся ему премию в миллион евро. Сегодня Коган мог позволить себе лишь хлеб и молоко. Пусть прошлое хоронит своих мертвецов &#8211; Семен ни о чем не жалел и ни в чем не раскаивался. </p>
<p>Каждый месяц прокладывал он путь к нелегальному казино, на существование которого власть закрывала глаза. Половину своей мизерной пенсии он ставил на кон в надежде сорвать банк, как будто улыбка фортуны не только принесет ему выигрыш, но и поможет найти единственную родную душу, которая, быть может, оставалась на этой Земле&#8230;</p>
<p>*****</p>
<p>Алекс Рассказов сидел на покрытом засохшими водорослями бревне, когда-то выброшенном на берег волнами неспокойного Японского моря,  и прокручивал в памяти минувший год, в который раз удивляясь, как изменилась его жизнь. Системный программист и эксперт по информационной безопасности, двенадцать лет отдавший банковской сфере, он глубоко разочаровался в своей профессии. Алчная погоня за прибылью сюрреалистично уживалась с халатностью и показухой. &#8220;Быстрее, дешевле, помпезней&#8221; &#8211; такой была оборотная сторона  информационных систем, в разработке которых он участвовал. &#8220;Движуха&#8221; шла вразрез с его знаниями и принципами, и однажды Алекс решился: последнее прости, вечеринка с  друзьями &#8211; и путь на Дальний Восток. Здесь, в проливе Лаперуза, покоились останки японских кораблей, сраженных китайскими ракетами в кровопролитной войне за брошенный Россией Сахалин.</p>
<p>Задача международного водолазного отряда под эгидой миротворческих сил ООН состояла в обезвреживании ядерных боеголовок на крейсерах, затонувших семь лет назад. В эпоху технологической предсингулярности с обнаружением ракет легко справлялись специализированные роботы-автоматы, но допускать их к деактивации боеголовок строжайше запрещалось Шанхайским пактом о защите человеческой расы&#8230;</p>
<p>*****</p>
<p>19 января 2038 года часть компьютерных систем неверно вычислит дату в приложениях, где она без сбоев вычислялась десятки лет.</p>
<p>Проблема 2038 года связана с представлением времени по стандарту POSIX и разрядной сеткой 32-битных систем. Согласно POSIX,  моментом отсчета времени в Unix считается 1 января 1970 года. Текущее время вычисляется по количеству секунд, прошедших с этой даты. Такой способ представления времени удобен при операциях с временн<em>ы</em>ми отрезками &#8211; например, при хранении и сравнении двух точек во времени. Предположим, нам нужно сравнить два события: X и Y. Если годы, месяцы, дни, часы, минуты и секунды хранятся раздельно, то нам понадобится несколько операций сравнения. Или другой пример: если к некой дате добавлять один день, то надо заботиться о количестве дней в месяце и месяцев в годе. Гораздо удобнее оперировать секундами и превращать их в &#8220;человеческие&#8221; даты при показе пользователю.</p>
<p>В 32-битных системах используется тип данных <em>time_t</em> для хранения секунд в виде 32-битного целого со знаком (<em>signed int</em>). Первый бит определяет знак целого числа (положительное или отрицательное), а оставшиеся 31 бит хранят его значение. Наибольшее число, которое может храниться в этих битах, составляет 2<sup>31</sup> &minus; 1 =  2 147 483 647.  Соответственно, самая поздняя дата, которая может быть представлена в стандарте POSIX — это 03:14:07 AM, вторник, 19 января 2038 года по GMT.</p>
<p>Процессор, выполняющий операции с целым числом со знаком, действует вразрез с общепринятыми представлениями из повседневной жизни. Если автомобиль проехал 99 999 километров, то еще через километр его 5-знаковый одометр покажет 00 000 километров. Но если целое со знаком достигает своего максимального значения и затем увеличивается на единицу, то оно преобразуется к наименьшему отрицательному значению. Это означает, что 32-битное целое со знаком становится равным &minus;2 147 483 648 и переводит время к пятнице, 13 декабря 1901 года 8:45:52 PM GMT ( 1 января 1970 года 00:00:00 GMT минус 2<sup>31</sup> секунды). Пятница, 13 число!</p>
<p>В некоторых функциях, работающих с time_t, отрицательное значение не обрабатывается с момента написания кода. Если в приложении, использующем такие функции, не анализируется код возврата, оно может &#8220;упасть&#8221; при получении отрицательного значения.</p>
<p>В начале века проблема, казалось, не стоила выеденного яйца. Человечество успешно преодолело опасности 2000 года. Спутники не сошли с орбит, веерного отключения питания не произошло, связь не терялась. Технологии развивались настолько стремительно, что через тридцать с лишним лет от скелетов в шкафу 32-битных систем не должно было остаться ни слуху, ни духу. Во-первых, &#8220;предупрежден &#8211; значит вооружен&#8221;. В код, работающий с типом данных time_t, можно было внести изменения, корректно обрабатывающие 2038 год, либо ввести новый тип данных. Во-вторых, переход на 64- и тем более 128-битные системы, казалось, автоматически устранял ложку дегтя в бочке меда.  Но на деле все оказалось не так.</p>
<p>1. Переход на 32-битные целые без знака (unsigned int) может добавить еще один бит к представлению даты, но приводит к нежелательным побочным эффектам. В одних приложениях теряется возможность корректно работать с датами до 1970 года, поскольку эти даты были представлены отрицательными значениями. В других приложениях тип time_t используется для хранения разницы между двумя датами, которая может быть отрицательной. Таким образом, отказ от отрицательных значений исправляет один баг и открывает непредсказуемое множество новых.</p>
<p>2. Переход к 64-битной структуре time_t может нарушить бинарную совместимость программ и данных. Приложения, полагающиеся на 32-битную структуру, не будут работать в системе с 64-битным представлением time_t. Два файла данных &#8211; по &#8220;старой&#8221; и &#8220;новой&#8221; вере &#8211; будут использовать разные комбинации нулей и единиц для хранения одних и тех же значений.</p>
<p>3. Переход с 32-битных на 64-битные системы и приложения неминуем (закон Мура и его вариации), но окончательная победа 64 бит может затянуться на многие годы. Во-первых, &#8220;работает &#8211; не трогай&#8221; и &#8220;старый конь борозды не испортит&#8221;. Если система исправна и нет необходимости вносить изменения в ее работу, то шевелить ее никто не будет. Обработка статистических данных, метеопрогнозы, военные системы &#8211; в них вложено столько усилий, что кардинальные изменения им не грозят. К примеру, работа с кассой и складом в некоторых торговых точках в 2011 году осуществляется на системах с MS-DOS 6.22 и оболочкой Norton Commander. Во-вторых, подавляющее большинство систем не создаются &#8220;с нуля&#8221;. Производство ПО &#8211; трудоемкий процесс, а результат нужен быстро. Поэтому в новых системах разработчики стремятся задействовать старый код, написанный их предшественниками. А проверяли они код возврата? Шерстить legacy-код никто не будет.</p>
<p>4. Решение &#8220;в лоб&#8221; &#8211; переписать все функции работы с датой так, чтобы даже в 32-битных системах даты старше 2037 года обрабатывались корректно. Например, использовать для хранения данных не unsigned int, а double float. Но даже при наличии общедоступных библиотек потребуется пересобрать все программы, которые работают с time_t. Многие компании-разработчики не выделят на это время и бюджет.</p>
<p>Чем быстрее идет переход к 64 битам, тем меньше внимания уделяется проблемам в 32-битных системах. Между тем, 2038 год всплывает уже сейчас. Вот три примера:</p>
<p>1) После 10 января 2004 года вычисление среднего значения между двумя датами <em>(t1 + t2)/2)</em> может привести к переполнению разрядной сетки.  t1/2 + t2/2 может привести к ошибке округления, поэтому лучше использовать, к примеру, <em>(((double) t1 + t2) / 2)</em>. </p>
<p>2) 12 мая 2006 года наблюдались массовые зависания  web-сервера AOLServer. Выяснилось, что значения параметров MaxIdle и MaxOpen в файле конфигурации по умолчанию были равны 1 миллиарду секунд (10<sup>9</sup>). Предполагалось, что запрос к базе данных не должен завершаться по тайм-ауту, и в качестве &#8220;бесконечной&#8221; продолжительности запроса выбиралось текущее время + миллиард секунд. В мае 2006 года полученная таким образом дата выходила за 19 января 2038 года. Время тайм-аута оказывалось в прошлом, что приводило к падению сервера.</p>
<p>3) Люди берут ссуду на 30 лет, и дата окончания выплат выходит за пределы 2038 года.</p>
<p>*****</p>
<p>Название POSIX ( Portable Operating System Interface for Unix) было предложено Ричардом Столлманом в 1988 году. Выбирая единый способ произношения &#8220;POSIX&#8221;, инициативная группа остановилась на &#8220;pahz-icks&#8221; (сходное с &#8220;positive&#8221; &#8211; положительный, позитивный) и даже придумала мотто &#8220;I&#8217;m positive about Posix&#8221; . Представление времени в стандарте POSIX  служило верой и правдой почти полвека и через три дня должно пройти самое серьезное испытание на прочность&#8230; </p>
<p><em>Продолжение следует.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/2038-introduction/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Июльская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-0711/</link>
		<comments>http://blog.openquality.ru/software-quality-news-0711/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 05:37:31 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-0711/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование, эпизоды.
&#160;
Разработка приложений
&#160;
&#8226;&#160;Andy Rutledge берет быка за рога: почему так слаб дизайн сайта The New York Times и как его улучшить.
&#8226;&#160;Управление памятью: есть ли альтернативы для malloc и new? Рассказ с иллюстрациями.
&#8226;&#160;Christopher Diggins учит правилам хорошего тона в программировании.
&#8226;&#160;В погоне за [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, системное администрирование, эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Andy Rutledge берет быка за рога: почему так слаб дизайн сайта The New York Times и как его <a href="http://andyrutledge.com/news-redux.php">улучшить</a>.</p>
<p>&#8226;&nbsp;Управление памятью: есть ли альтернативы для malloc и new? Рассказ с <a href="http://altdevblogaday.com/2011/02/12/alternatives-to-malloc-and-new/">иллюстрациями</a>.</p>
<p>&#8226;&nbsp;Christopher Diggins учит правилам хорошего тона в <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=331531">программировании</a>.</p>
<p>&#8226;&nbsp;В погоне за производительностью информационных систем: статьи, комментарии, <a href="http://highscalability.com/blog/2011/7/22/stuff-the-internet-says-on-scalability-for-july-22-2011.html">руководства</a>.</p>
<p>&#8226;&nbsp;&#8221;Отзывчивый&#8221; web-дизайн: очередная <a href="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/">подборка</a> инструментов и стратегий.</p>
<p>&#8226;&nbsp;Mark Russinovich представляет новую книгу об инструментах Sysinternals и находит отмычку к источнику таинственных звуков из компьютера <a href="http://blogs.technet.com/b/markrussinovich/archive/2011/07/18/3439288.aspx">пользователя</a>.</p>
<p>&#8226;&nbsp;Аналитика в масштабе реального времени: что скрывается внутри информационной системы <a href="http://highscalability.com/blog/2011/7/18/building-your-own-facebook-realtime-analytics-system.html">Facebook</a>?</p>
<p>&#8226;&nbsp;Ruby + Redis = приложение для выдачи укороченных wеb-ccылок. Пример разработки с чистого <a href="http://net.tutsplus.com/tutorials/ruby/how-to-build-a-shortlink-app-with-ruby-and-redis/">листа</a>.</p>
<p>&#8226;&nbsp;Александр Дёмин приводит великолепную <a href="http://easy-coding.blogspot.com/2011/07/blog-post.html">иллюстрацию</a> к процессу создания программного обеспечения.</p>
<p>&#8226;&nbsp;<a href="http://highscalability.com/blog/2011/7/15/stuff-the-internet-says-on-scalability-for-july-15-2011.html">Подборка</a> материалов по разработке больших информационных систем: выбор СУБД, мониторинг, масштабирование, производительность.</p>
<p>&#8226;&nbsp;Addy Osmani рассматривает типичные задачи, решаемые в JavaScript. Паттерны снабжены примерами исходного <a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/">кода</a>.</p>
<p>&#8226;&nbsp;Что такое псевдоэлементы в CSS и как ими <a href="http://coding.smashingmagazine.com/2011/07/13/learning-to-use-the-before-and-after-pseudo-elements-in-css/">пользоваться</a>?</p>
<p>&#8226;&nbsp;Архитектура Google+: корочка и <a href="http://highscalability.com/blog/2011/7/12/google-is-built-using-tools-you-can-use-too-closure-java-ser.html">начинка</a>.</p>
<p>&#8226;&nbsp;Как сделать web-сайт удобным и полезным для пользователей с <a href="http://www.smashingmagazine.com/2011/07/11/picking-a-mobile-support-strategy-for-your-website/">мобильными</a> устройствами?</p>
<p>&#8226;&nbsp;Alex Papadimoulis публикует забавные сообщения, встречающиеся в пользовательском <a href="http://thedailywtf.com/Articles/Highlevel-Usage.aspx">интерфейсе</a>.</p>
<p>&#8226;&nbsp;Подборка статей и заметок о <a href="http://highscalability.com/blog/2011/7/8/stuff-the-internet-says-on-scalability-for-july-8-2011.html">производительности</a> современных сервисов и инструментов.</p>
<p>&#8226;&nbsp;Развенчание мифа: так ли нужны кластеры машин и технологии параллельной обработки &#8220;как у Google&#8221; или же в большинстве случае достаточно одной сильной <a href="http://highscalability.com/blog/2011/7/7/myth-google-uses-server-farms-so-you-should-too-resurrection.html">машины</a>?</p>
<p>&#8226;&nbsp;Paul Terо раскаивается в своих программистских <a href="http://coding.smashingmagazine.com/2011/07/07/my-favorite-programming-mistakes/">ошибках</a> и подтверждает закон Мерфи: &#8220;Если что-то плохое может произойти, так оно и случится&#8221;.</p>
<p>&#8226;&nbsp;Redis: какие задачи позволяет решить набирающее популярность <a href="http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html">хранилище</a> данных?</p>
<p>&#8226;&nbsp;Web-сайт для детей: что принять во внимание и какие идеи <a href="http://www.smashingmagazine.com/2011/07/06/best-practices-for-designing-websites-for-kids/">реализовать</a>?</p>
<p>&#8226;&nbsp;Кодекс джедая: не допускать фрагментации памяти, или приложение отъест все ресурсы системы. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666058#c31">Пример</a> от разработчика Firefox.</p>
<p>&#8226;&nbsp;Розовое сомбреро как знак отличия для разработчика, вносящего изменения в код &#8220;по-живому&#8221; &#8211; непосредственно в систему, с которой работают <a href="http://www.bnj.com/cowboy-coding-pink-sombrero/">пользователи</a>.</p>
<p>&#8226;&nbsp;JavaScript: тайные знания в текущей и будущей версиях <a href="https://code.google.com/p/jslibs/wiki/JavascriptTips#language_advanced_Tips_&#038;_Tricks">языка</a>.</p>
<p>&#8226;&nbsp;Переход с Ruby на Java: разработчики Twitter меняют коней на <a href="http://www.infoq.com/articles/twitter-java-use">переправе</a>.</p>
<p>&#8226;&nbsp;В <a href="http://msdn.microsoft.com/en-us/magazine/hh315813.aspx">июльском</a> выпуске MSDN Magazine: PowerShell + WPF, ASP.NET WebGrid, Silverlight, разработка для мобильных устройств и другие темы.</p>
<p>&#8226;&nbsp;Как хранить пароли: MD5 и SHA-3 нервно курят <a href="http://codahale.com/how-to-safely-store-a-password/">в сторонке</a>.</p>
<p>&#8226;&nbsp;Платежная система BrainTree: как разрабатывается <a href="http://www.braintreepayments.com/inside-braintree/how-we-built-the-software-that-processes-billions-in-payments">система</a>, перемалывающая миллиарды долларов.</p>
<p>&#8226;&nbsp;10 способов улучшить программисткие <a href="http://www.antoarts.com/10-ways-to-improve-your-programming-skills/">навыки</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Jason Arbon и Tejas Shah (Google) рассказывают о <a href="http://googletesting.blogspot.com/2011/07/how-we-tested-google-instant-pages.html">тестировании</a> Google Instant Pages.</p>
<p>&#8226;&nbsp;Adam Goucher внедряет TDD в процесс разработки приложений на платформе <a href="http://adam.goucher.ca/?p=1663">Android</a>.</p>
<p>&#8226;&nbsp;I.M.Testy сводит на нет разницу между SDET и STE, а также развенчивает мифы об их 100% загруженности <a href="http://www.testingmentor.com/imtesty/2011/07/22/the-sdet-vs-ste-debate-redux-its-only-a-title/">автоматизацией</a>.</p>
<p>&#8226;&nbsp;James Bach решил не оставить камня на <a href="http://www.satisfice.com/blog/archives/584">камне</a> от систем сертификации тестировщиков в целом и ISTQB в частности.</p>
<p>&#8226;&nbsp;Alex Papadimoulis поделился роскошным багом: история о том, как печать отчета на пятый день месяца приводила к <a href="http://thedailywtf.com/Articles/TransAtlantic-Time-Trap.aspx">изменению</a> системной даты на компьютере.</p>
<p>&#8226;&nbsp;I.M.Testy строит <a href="http://www.testingmentor.com/imtesty/2011/06/25/levels-of-testing/">пирамиду</a> тестирования, кратко рассматривая каждый уровень.</p>
<p>&#8226;&nbsp;Рейтинг 25 самых опасных ошибок, приводящих к возникновению серьезных <a href="http://www.opennet.ru/opennews/art.shtml?num=31061">уязвимостей</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Последние новости из мира Selenium: инструменты, советы, <a href="http://seleniumhq.wordpress.com/2011/07/28/a-smattering-of-selenium-56/">решения</a>.</p>
<p>&#8226;&nbsp;Adam Goucher рассматривает проблему с медленной загрузкой web-страниц и работой Selenium-скриптов: можно ли улучшить положение <a href="http://adam.goucher.ca/?p=1676">дел</a>? Update 1: <a href="http://adam.goucher.ca/?p=1682">продолжение</a>. Update 2: специализированный <a href="http://code.google.com/speed/pss/index.html">сервис</a> от Google.</p>
<p>&#8226;&nbsp;Web Application Security Penetration Testing: <a href="https://addons.mozilla.org/en-US/firefox/collections/adammuntner/webappsec/">подборка</a> аддонов для Firefox.</p>
<p>&#8226;&nbsp;Adam Goucher на гребне волны с очередной <a href="http://seleniumhq.wordpress.com/2011/07/15/a-smattering-of-selenium-54/">подборкой</a> ссылок по Selenium и смежным областям. И еще одна <a href="http://seleniumhq.wordpress.com/2011/07/18/a-smattering-of-selenium-55/">подборка</a>.</p>
<p>&#8226;&nbsp;Adam Goucher: жизнь на планете <a href="http://seleniumhq.wordpress.com/2011/07/14/a-smattering-of-selenium-53/">Selenium</a> идет полным ходом.</p>
<p>&#8226;&nbsp;Josh Poley призывает инженеров-автоматизаторов время от времени надевать маску пользователя и смотреть на продукт его <a href="http://blogs.msdn.com/b/joshpoley/archive/2011/07/11/how-testers-test-versus-how-users-use.aspx">глазами</a>.</p>
<p>&#8226;&nbsp;<a href="http://seleniumhq.wordpress.com/2011/07/08/selenium-2-0/">Selenium 2.0</a>: официальное объявление о выходе и комментарии.</p>
<p>&#8226;&nbsp;<a href="http://net.tutsplus.com/articles/should-you-start-using-csslint/">СSSLint</a>: инструмент для анализа &#8230; правильно, CSS. Стоит ли шкурка выделки?</p>
<p>&#8226;&nbsp;Вышли в свет <a href="http://seleniumhq.wordpress.com/2011/07/04/selenium-ide-1-0-12-firefox-5/">Selenium IDE 1.0.12</a> с поддержкой Firefox 5 и <a href="http://www.ranorex.com/news/article/ranorex-303-released.html">Ranorex 3.0.3</a> с новой функциональностью.</p>
<p>&#8226;&nbsp;Adam Goucher выложил очередную <a href="http://seleniumhq.wordpress.com/2011/07/01/a-smattering-of-selenium-52/">подборку</a> ссылок по работе с Selenium.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Системное администрирование</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Как организовать хостинг нескольких сайтов с разными доменами на одном сервере Apache? Пошаговая <a href="http://www.thegeekstuff.com/2011/07/apache-virtual-host/">инструкция</a>.</p>
<p>&#8226;&nbsp;Сотрудники Лаборатории Касперского раскрывают <a href="http://www.securelist.com/en/analysis/204792180/TDL4_Top_Bot">потроха</a> одного из самых заметных ботнетов в киберпространстве.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Гуру маркетинга Seth Godin задается вопросом &#8220;А что же такое качество?&#8221; и <a href="http://sethgodin.typepad.com/seths_blog/2011/07/defining-quality.html">рассматривает</a> продукты Bentley, Honda, Dropbox и Microsoft.</p>
<p>&#8226;&nbsp;Путь к признанию в IT: оказаться в нужное время в нужном месте с нужными <a href="http://www.brentozar.com/archive/2011/07/how-be-superstar-change-few-well-placed-things-that-make-difference/">инструментами</a>.</p>
<p>&#8226;&nbsp;Google наступает на горло  своих экспериментов, закрывает <a href="http://googlesystem.blogspot.com/2011/07/no-more-google-labs.html">Google Labs</a> и намеревается сосредоточиться на стратегических направлениях.</p>
<p>&#8226;&nbsp;SMS-сообщения и номера абонентов Мегафона в кэше Яндекса: утечка или спланированная <a href="http://gazeta.ru/news/lastnews/2011/07/18/n_1928925.shtml">акция</a>?</p>
<p>&#8226;&nbsp;Сотрудники Microsoft <a href="http://www.h-online.com/open/news/item/Microsoft-contributes-a-lot-of-changes-to-Linux-kernel-3-0-1280528.html">вносят</a> существенный вклад в разработку следующей мажорной версии ядра Linux.</p>
<p>&#8226;&nbsp;Kendra Little описывает на редкость разумный подход к поиску толкового <a href="http://www.brentozar.com/archive/2011/07/how-hire-talent/">сотрудника</a>.</p>
<p>&#8226;&nbsp;Google в одностороннем порядке меняет <a href="http://googlesystem.blogspot.com/2011/07/how-google-transformed-picasa-web.html">правила</a> игры в Picasa и запоздало уведомляет об этом невинных пользователей.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p><strong>Т1</strong>. Как найти баги в исходном коде?<br /><strong>Т2</strong>. Смотри в сторону комментариев вида &#8220;To the next version&#8221;, &#8220;Shit never happens&#8221;, &#8220;Just in case&#8230;&#8221;, &#8220;Pasted from &#8230; but how does it work?&#8221;.<br /><strong>Т1</strong>. Такие комментарии пишут рядом с багами, или же баги селятся рядом с такими комментариями?</p>
<p>&nbsp;</p>
<p><strong>Р1</strong>. Странное дело: в твоем коде больше обработки исключений чем бизнес-логики.<br /><strong>Р2</strong>. Хорошие исключения &#8211; добрые баги!<br /><strong>Р1</strong>. Нет правил без исключений!</p>
<p>&nbsp;</p>
<p><strong>Б1</strong>. Папа, а что такое код?<br /><strong>Б2</strong>. Объективная реальность в параллельном измерении.<br /><strong>Б1</strong>. Это как?<br /><strong>Б2</strong>. Объекты живут в классах. Их обслуживают  программисты и тестировщики. А баги с ними не пересекаются!</p>
<p>&nbsp;</p>
<p><strong>Т</strong>. Странное дело: мы тестируем код разработчиков, но не тестируем действия менеджера. А между тем его ошибки обходятся гораздо дороже.<br /><strong>M</strong>. У менеджера нет багов. Если видишь баг, то это либо не баг, либо баг, но не менеджера!<br /><strong>Т</strong>. А каков статус бага в таком случае? As designed, Cannot Reproduce, Is Duplicate, Documented или None of your damn business?</p>
<p>&nbsp;</p>
<p>Спасибо, до встречи!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-0711/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Июньская лента: лучшее за месяц</title>
		<link>http://blog.openquality.ru/software-quality-news-0611/</link>
		<comments>http://blog.openquality.ru/software-quality-news-0611/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 06:12:52 +0000</pubDate>
		<dc:creator>Капитан</dc:creator>
		
		<category><![CDATA[С миру по нитке]]></category>

		<guid isPermaLink="false">http://blog.openquality.ru/software-quality-news-0611/</guid>
		<description><![CDATA[Добрый день.
События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, эпизоды.
&#160;
Разработка приложений
&#160;
&#8226;&#160;Разработка приложений для Android: правила хорошего тона.
&#8226;&#160;Элементы ввода в web-интерфейсе: симпатичные идеи и решения.
&#8226;&#160;Сервис TripAdvisor: статистика, архитектура, технологии, культура и интересные факты из прибежища туристов всего мира.
&#8226;&#160;Представитель республики хакеров рассказывает об исследовании файловой системы китайского роутера: &#8220;Я ожидал нормальную файловую систему, [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left:35px">Добрый день.</p>
<p>События, публикации, решения по темам: разработка и тестирование программного обеспечения, инструменты автоматизации, эпизоды.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разработка приложений</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Разработка приложений для Android: правила хорошего <a href="http://coding.smashingmagazine.com/2011/06/30/designing-for-android/">тона</a>.</p>
<p>&#8226;&nbsp;Элементы ввода в web-интерфейсе: симпатичные идеи и <a href="http://www.smashingmagazine.com/2011/06/27/useful-ideas-and-guidelines-for-good-web-form-design/">решения</a>.</p>
<p>&#8226;&nbsp;Сервис TripAdvisor: статистика, архитектура, технологии, культура и интересные факты из прибежища туристов всего <a href="http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html">мира</a>.</p>
<p>&#8226;&nbsp;Представитель республики хакеров рассказывает об исследовании файловой системы китайского роутера: &#8220;Я ожидал нормальную файловую систему, а <a href="http://www.devttys0.com/2011/06/mystery-file-system/">та-а-ам</a>&#8230;&#8221;.</p>
<p>&#8226;&nbsp;Alex Kuznetsov решает непростую задачу: как обеспечить версионность данных в СУБД и при этом избежать упадка <a href="http://www.simple-talk.com/sql/sql-training/yet-another-sql-strategy-for-versioned-data/">производительности</a>.</p>
<p>&#8226;&nbsp;Brent Ozar вспомнил про пирамиду Маслоу и обозначил иерархию <a href="http://www.brentozar.com/archive/2011/06/ozar-hierarchy-database-needs/">ценностей</a> в системах управления базами данных.</p>
<p>&#8226;&nbsp;Radoslav Vasilev (Google) рассказывает о <a href="http://googletesting.blogspot.com/2011/06/introducing-dom-snitch-our-passive-in.html">DOM Snitch</a> &#8211; инструменте для анализа безопасности кода на клиентской стороне web-приложения.</p>
<p>&#8226;&nbsp;Performance is a Feature: почему так важна производительность web-сайта и какие инструменты <a href="http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html">рекомендует</a> Jeff Atwood.</p>
<p>&#8226;&nbsp;Что принять во внимание при выборе noSQL-решения? 35+ <a href="http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html">сценариев</a>.</p>
<p>&#8226;&nbsp;Нетрадиционный взгляд на ведение документации в проекте: какую цель преследует документация и какими средствами эту цель легче <a href="http://gaperton.livejournal.com/60632.html">достичь</a>?</p>
<p>&#8226;&nbsp;Движение по спирали, или тучи в облаках: eHarmony (крупнейший портал знакомств) переносит обработку данных из облачной среды (Amazon) на фабрику Atom-серверов. <a href="http://www.datacenterknowledge.com/archives/2011/06/10/eharmony-switches-from-cloud-to-atom-servers/">Почему?</a></p>
<p>&#8226;&nbsp;Памятка по хостингу: для полноценного функционирования нескольких сайтов на Virtual Private Server вовсе не нужно слишком много <a href="http://www.lowendbox.com/blog/yes-you-can-run-18-static-sites-on-a-64mb-link-1-vps/">ресурсов</a>.</p>
<p>&#8226;&nbsp;Полезные инструменты, сервисы и ресурсы для web-дизайнеров: краткий <a href="http://www.smashingmagazine.com/2011/06/17/useful-resources-tools-and-services-for-web-designers/">обзор</a>.</p>
<p>&#8226;&nbsp;Jeremiah Peschka рассказывает о борьбе с <a href="http://www.brentozar.com/archive/2011/06/resolving-conflicts-database/">коллизиями</a> при репликации баз данных.</p>
<p>&#8226;&nbsp;Что принять во внимание при выборе СУБД с архитектурой <a href="http://highscalability.com/blog/2011/6/15/101-questions-to-ask-when-considering-a-nosql-database.html">noSQL</a>?</p>
<p>&#8226;&nbsp;Uncle Bob выпустил книгу &#8220;Clean Coder&#8221;, адресованную профессиональным разработчикам. Краткий <a href="http://gojko.net/2011/06/15/clean-coder-sharpen-your-professional-skills/">обзор</a>.</p>
<p>&#8226;&nbsp;IBM developerWorks: работа со структурами данных в языках С и Python; как получить максимальный эффект от sudo; Perl и облачные сервисы Amazon; работа с транзакциями в Java и другие <a href="http://www-148.ibm.com/tela/webmail/Newsletter/9061/30771">темы</a>.</p>
<p>&#8226;&nbsp;Google +1: как улучшить производительность новой <a href="http://www.aaronpeters.nl/blog/google-plus1-button-performance-review">фишки</a> поискового гиганта?</p>
<p>&#8226;&nbsp;Отладка JavaScript-кода: <a href="http://www.alistapart.com/articles/modern-debugging-tips-and-tricks/">полезные</a> советы и рекомендации.</p>
<p>&#8226;&nbsp;Gerald Weinberg расссматривает гибкие методики в программировании под микроскопом и делится <a href="http://secretsofconsulting.blogspot.com/2011/06/beyond-agile-programming.html">восхитительными</a> наблюдениями.</p>
<p>&#8226;&nbsp;Система недоступна целый день? Это не самое <a href="http://geekandpoke.typepad.com/geekandpoke/2011/06/worst-case.html">страшное</a>!</p>
<p>&#8226;&nbsp;Код на JavaScript: <a href="http://net.tutsplus.com/tutorials/javascript-ajax/the-10-javascript-mistakes-youre-making/">10 ошибок</a>, которые не стоит совершать.</p>
<p>&#8226;&nbsp;Навигация на web-сайте: что принять во внимание, примеры <a href="http://www.smashingmagazine.com/2011/06/06/planning-and-implementing-website-navigation/">реализации</a>.</p>
<p>&#8226;&nbsp;Алена C++ опубликовала <a href="http://alenacpp.blogspot.com/2011/06/summary-of-amazon-ec2-and-amazon-rds.html">перевод</a> статьи &#8220;Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region&#8221;.</p>
<p>&#8226;&nbsp;Зоопарк NoSQL-систем: откуда ноги растут (<a href="http://plakhov.livejournal.com/165139.html">1</a>, <a href="http://avva.livejournal.com/2342834.html">2</a>)?</p>
<p>&#8226;&nbsp;В <a href="http://msdn.microsoft.com/en-us/magazine/hh227291.aspx">июньском</a> выпуске MSDN Magazine: Debugging Engine API, гибкие подходы к разработке и тестированию в Visual Studio, Windows Phone 7 и другие темы.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Тестирование программного обеспечения</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Тестирование приложений в Google: как обеспечить эффективность и надежность при наличии частых <a href="http://googletesting.blogspot.com/2011/06/testing-at-speed-and-scale-of-google.html">изменений</a> в коде?</p>
<p>&#8226;&nbsp;Баг рождается при <a href="http://labs.qt.nokia.com/2011/06/10/type-punning-and-strict-aliasing/">нарушении</a> стандартов языка С.</p>
<p>&#8226;&nbsp;Как писать баги, чтобы разработчик не воспринимал их как <a href="http://www.thetestingplanet.com/2011/04/show-stopper-our-developer-takes-bug-reports-ever-so-personally-how-should-i-deal-with-him/">личное</a> оскорбление?</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Инструменты автоматизации</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Adam Goucher: подборка новостей о Selenium и не <a href="http://seleniumhq.wordpress.com/2011/06/06/a-smattering-of-selenium-51/">только</a>.</p>
<p>&#8226;&nbsp;Evil Tester прокладывает путь освоения Selenium и приглашает в поход <a href="http://www.eviltester.com/index.php/2011/06/02/how-can-i-learn-to-automate-my-testing-using-selenium/">новичков</a>.</p>
<p>&#8226;&nbsp;Dave Hunt: отладка тестов в <a href="http://blog.softwaretestingclub.com/2011/05/debugging-tests-in-selenium-ide/">Selenium IDE</a>.</p>
<p>&#8226;&nbsp;Adam Goucher делится приемами работы с Selenium из Python (<a href="http://element34.ca/blog/the-two-styles-of-synchronization">1</a>, <a href="http://element34.ca/blog/handling-planned-failure">2</a>, <a href="http://element34.ca/blog/frames-matter-when-counting-elements">3</a>, <a href="http://element34.ca/blog/an-interesting-python-csv-trick">4</a>).</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Разное</strong></p>
<p>&nbsp;</p>
<p>&#8226;&nbsp;Google предпринимает очередную попытку выйти на рынок социальных сетей: <a href="http://www.bbc.co.uk/russian/rolling_news/2011/06/110628_rn_google_network.shtml">новость</a> и <a href="http://xkcd.com/918/">комментарий</a>.</p>
<p>&#8226;&nbsp;James Whittaker (Google) размышляет о том, какие бенефиты привлекают <a href="http://googletesting.blogspot.com/2011/06/lessons-in-21st-century-tech-career.html">инженеров</a> в 21 веке.</p>
<p>&#8226;&nbsp;Евгений Касперский призывает Павла Дурова к существенным изменениям в улучшении безопасности и приватности <a href="http://e-kaspersky.livejournal.com/70000.html">пользователей</a>.</p>
<p>&#8226;&nbsp;Из-за компьютерного сбоя отменены рейсы авиакомпании United Airlines. Подробности <a href="http://www.nytimes.com/2011/06/18/us/18united.html">происшествия</a>.</p>
<p>&#8226;&nbsp;Копирайт и лицензии: что это такое и с чем <a href="http://www.smashingmagazine.com/2011/06/14/understanding-copyright-and-licenses/">едят</a>?</p>
<p>&#8226;&nbsp;Инженер покидает компанию Google и называет <a href="http://www.readwriteweb.com/cloud/2011/06/google-infrastructure-obsolete.php">устаревшей</a> инфраструктуру поискового гиганта.</p>
<p>&#8226;&nbsp;Как назвать сервер? Крайне ответственное <a href="http://xkcd.com/910/">решение</a>.</p>
<p>&#8226;&nbsp;Репортаж с рабочего места Анны Воробьевой &#8211; ведущего разработчика одного из ключевых компонентов виртуальных машин в компании <a href="http://lifehacker.ru/2011/06/07/rabochie-mesta-anna-vorobeva-vedushhijj-razrabotchik-virtualnykh-mashin-v-kompanii-parallels/">Parallels</a>.</p>
<p>&nbsp;</p>
<p style="margin-left:35px"><strong>Эпизоды</strong></p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<strong>Б1</strong>. Доченька, пришел твой черед спасать наш род.<br /><strong>Б2</strong>. Что нужно сделать?<br /><strong>Б1</strong>. Кружись на виду. Когда маглы тебя поймают и спросят имя, ответь: &#8220;Надежда&#8221;.<br /><strong>Т1</strong>. Ну вот и все, багов больше нет. Надежда сдалась последней!</p>
<p>&nbsp;<br />
<strong>М</strong>. Эх, не везет ему по жизни. Я уже пять лет как менеджер, а он все код пишет.<br /><strong>Р</strong>. А парень он очень хороший&#8230; Жаль только, жизнь не удалась&#8230; Ведь талантливый человек, а стал менеджером&#8230;</p>
<p>&nbsp;<br />
<strong>Т</strong>. Объявление: разыскивается баг. Вооружен и особо опасен. Нашедшего просьба вернуть за вознаграждение.<br /><strong>Б</strong>. Объявление: найден тестировщик. Близорук и недальновиден. Продам за вознаграждение.</p>
<p>&nbsp;<br />
<strong>M1</strong>. <a href="http://ru.wikipedia.org/wiki/Scrum">Scrum</a>-тара-рам. Сегодня мы должны были закончить спринт. Почему не работает upgrade?<br /><strong>М2</strong>. Вам шашечки или ехать? У нас гибкие методики или нет? Спринт закроем, а upgrade добьем в следующей итерации.<br /><strong>M1</strong>. В таком случае, есть ли в Scrum какой-то смысл?<br /><strong>M2</strong>. Смысл &#8211; подстегивать участников забега. Делай что можешь, а будет как будет!</p>
<p>&nbsp;</p>
<p>Спасибо, до встречи!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.openquality.ru/software-quality-news-0611/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

