Добрый день.
В выпуске: баги и дыры; архитектура и администрирование систем; разработка приложений; тестирование ПО и тестировщики; модульные тесты; эпизоды.
Баги и дыры
• Сногсшибательные мотивы к формированию структуры базы данных: искусство ради искусства.
• Сбой в системе управления полетами: план полета U-2 оказался слишком большим.
• Сбой в системе голосования в Бельгии произошел несмотря на то что система проверялась тысячу раз.
• Что может произойти в случаях, когда за сравнение производительности скриптов на разных языках, защиту информации и заботу о компьютере берутся непрофессионалы.
• It’s not a bug, it’s a feature: забавные сообщения в пользовательском интерфейсе.
• История одного бага в аддоне к игре World of Warcraft: лучше обнаружить позже чем никогда.
• Чудеса в решете: никому не нужный и нигде не используемый метод продолжает подавать признаки жизни.
• Перефразируя Дилберта, баги существовали всегда, но для несведущего менеджера это может оказаться сюрпризом.
• Самолет-шпион, разработанный более полувека назад, вывел из строя компьютерную систему управления полетами в Лос-Анджелесе.
• What the fuck? Хотелось как лучше, а получилось как всегда.
• Забавные сообщения и ошибки в пользовательском интерфейсе.
• История бага одиннадцатилетней выдержки: жесткий фикс ввиду отсутствия исходного кода.
• История одного бага в vim/tmux: на перекрестке двух продуктов.
• История одного бага: метод Монте-Карло помог обойти проблему с невозможностью МySQL предоставить отладочную информацию с точностью до миллисекунд.
• И от багов бывает польза: тяжело в учении, легко в бою.
Архитектура и администрирование систем
• К каким мыслям о дизайне систем управления баз данных может привести землетрясение?
• Две основные причины проблем с производительностью приложений и семь правил противодействия.
• Базовая концепция алгоритма Map Reduce на простом примере.
• Todd Hoff представляет подборку публикаций по организации и обслуживанию высоконагруженных систем (1, 2).
• Система комментариев Disqus: новые подробности по архитектуре популярного сервиса.
• Простые инструменты для шпиона за базами данных: текущие запросы, обращения к таблицам, транзакции.
• Атака на Linux-сервер в прямом эфире: наблюдение за действиями хакера с помощью подручных средств.
• Strace приходит на помощь при анализе причин недоступности сайта при известном PID процесса.
• По следам одного взлома: шесть ошибок, позволивших хакеру получить контроль над сайтом.
Разработка приложений
• Как разработчики Airbnb оценивают эффективность того или иного изменения в сервисе?
• Пункт 1: программирование в паре работает. Пункт 2: если не работает, смотри пункт 1.
• С# 6.0: что день грядущий нам готовит?
• 10 статей, которые стоит прочитать каждому программисту.
• Десять типичных ошибок в программировании на Python.
• На какие грабли можно наткнуться, вызывая методы C++ из C# и наоборот?
• Пять путей к сведению количества багов до минимума: теория и практические примеры.
Модульные тесты
• Uncle Bob рассматривает TDD под микроскопом и рассказывает о тех случаях, в которых TDD будет неэффективным. И еще одна статья того же автора на ту же тему.
• To mock or not to mock: в каких случаях уместны mock-объекты?
• Мартин Фаулер ищет точки соприкосновения в различных формулировках модульных тестов.
Тестирование ПО и тестировщики
• Steve Rowe (Microsoft) дает определение качества программного продукта: “The quality of the software is judged based on how correctly it implement a spec“
• Неработоспособность приложения вопреки зеленому сигналу от таинственной автоматизированной системы тестирования: ваш код просто не мог быть хорошим, если понадобилось столько времени на его отладку.
• Alan Page смещает акценты: давайте будем меньше надеяться на автотесты и больше на диагностику в самом продукте.
• Google Testing Blog: три важнейших характеристики эффективного автотеста.
Разное
• Как определить влияние количества коннекций к MS SQL Server на производительность последнего?
• Круговая порука мажет как копоть: оценка труда Дилберта зависит от его оценки своего начальства.
• Факир был пьян, и фокус не удался: как закрывать неудачный проект?
• Технологическая сингулярность: Дилберт считал себя человеческим существом, а оказался программным продуктом.
• Markus Frind оглядывается назад и с трудом верит собственному успеху в построении Plenty of fish – самого популярного сайта знакомств в мире.
• Целая гроздь полезных советов для организации эффективной работы в домашних условиях.
Эпизоды
http://openquality.ru/episodes/250
М. Тут один пользователь утверждает, что у него есть деньги на счету в нашем банке. Но в базе его нет.
Р. Может быть, он банк перепутал?
М. Говорит, что у него есть e-mail нотификации об открытии счета и банковских переводах.
Т. Тогда он хакер и водит нас за нос. Подделать нотификации – раз плюнуть.
P. Если у него есть хоть какие-то доказательства, то пусть предъявит, и тогда мы начнем копать.
http://openquality.ru/episodes/251
Р1. Лови: #define true false
Р2. Ах, так? Извольте: #define if while
Р1. Тогда вот: #define if(x) if(rand()<10 && (x))
Р2. Распишитесь: #define sizeof(x) (sizeof(x)-1)
Вот и лето настало. До встречи.
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.