Добрый день.
В выпуске: баги и дыры; архитектура систем и разработка приложений; тестирование и качество ПО; человеческий фактор; эпизоды.
В блоге опубликована статья “Sikuli: обертки и свернутые сессии”.
Баги и дыры
• Мистическая история с Dropbox, или почему не стоит класть все яйца в одну корзину.
• Последствия широкого жеста Tesla: злоумышленник, вооруженный знаниями о системе, способен подчинить ее своей воле.
• История из прошлого: к чему может привести нажатие не на ту клавишу.
• Из серии “нарочно не придумаешь”: функция нахождения четных чисел, реализованная умопомрачительным способом, дала сбой во Франции.
• Очередная иллюстрация того как много бед может принести лишний пробел в команде rm (Unix).
• Современные информационные технологии помогают прослыть Нострадамусом, мухлевать с прогнозами и влиять на экономику и политику.
• Скрытая мощь в обработке исключений: история одного ретро-бага, приводившего к краху операционной системы.
• Нестандартное решение не всегда является багом: несколько примеров организации базы данных.
• История одного бага в IE: вот что бывает с теми кто меняет расположение Favorites.
• История одного бага: уникальность данных проверялась сравнением дат, представленных в виде строк, с разными форматами у приемника и источника. И еще одна история, связанная с датами.
• Самые нелепые баги: повод посмеяться и задуматься.
Архитектура систем
• Symfony2 + HAProxy + Apache2 + Redis + MySQL + PHP = обработка миллиарда запросов в неделю.
• Впечатляющие подробности о проекте StackOveflow: технологии; статистика; процессы разработки, тестирования и развертывания; команда; извлеченные уроки.
• Новый 8-ядерный микропроцессор Эльбрус-8С: перечень уникальных особенностей и сферы возможного применения.
• Кэширование данных: десять капканов, в которые не стоит наступать.
• Сервис Bitly: сокращать ссылки легко, но трудно сделать этот процесс надежным и масштабируемым.
• Todd Hoff считает невозможным обеспечить неприкосновенность персональных данных пользователей и призывает предоставить к ним коммерческий доступ в целях дальнейшего развития экономики и общества.
Разработка приложений
• Состоялся релиз SObjectizer 5.3.0 – реализации модели акторов для C++, позволяющей использовать работающих на разных нитях агентов, общающихся между собой посредством сообщений.
• Just – самое опасное слово при разработке программного обеспечения.
• Язык PHP, широкими шагами идущий вперед, заслужил право на спецификацию.
• Абстракции в коде: как вы яхту назовете, так она и поплывет.
• Разрыв шаблона, или история о том как рекурсия прижилась в программировании.
• Краткая памятка о двух ошибках в работе приложения на базе nginx и haproxy, а также способы их ликвидации.
• Помощь пользователю должна приходить ненавязчиво, в нужном месте и в нужное время.
• Устаревший код: удалить нельзя использовать.
• Как стать Властелином Windows 7: несколько полезных советов.
• Баг в Java-коде вносит смятение и хаос? NetBeans Debugger спешит на помощь.
• Три типичных ошибки, оборачивающихся снижением производительности при работе с базами данных.
• В каких случаях при программировании не стоит изобретать свой велосипед.
• Шесть уважительных причин не спешить с переходом на Java 8.
• Антипаттерны в Python с позиций производительности, стиля и других критериев.
• 10 подходов к обеспечению безопасности приложений.
• Валентин Симонов рассказывает о том, почему так важно добиваться читабельности кода.
• Попытка провести оценку: какие рефакторинги наиболее эффективны.
• Функциональное программирование: не так страшен черт как его малюют.
• Подборка советов по работе с bash, ssh, xargs и другими компонентами в среде Unix.
Тестирование и качество ПО
• Steve Rowe (Microsoft) продолжает рассказ о новых веяниях в разработке и оценке качества ПО: data driven quality encourages shipping with minimum viable quality and then fixing issues as they arise.
• Великий бета-тестировщик, или роскошная история о том почему комбинация клавиш Ctrl-F в Outlook вызывает операцию редиректа, а не поиска.
• Как измеряется покрытие кода тестами в Google: инструмент и статистика.
• Компания Дилберта сильна в автоматизации, которая не особо нужна, и умении слышать то, что хочется услышать.
• Кто сторожит сторожей, или как оценивать свои тесты.
• Steve Rowe освещает четвертую волну тестирования ПО: понятие “data driven quality” подразумевает менее жесткие требования к продукту с возможностью оперативного внесения изменений.
• Dmitry Vyukov (Google) рассказывает об инструменте ThreadSanitizer, который позволяет находить баги, связанные с гонками данных (data race).
Человеческий фактор
• Шеф Дилберта убедился на собственном опыте, что толковых инженеров не стоит подталкивать к бестолковой активности.
• Дилберт пожаловался на перегрузки, получил помощника, которому не рад, но питает надежду договориться о гибком графике.
• Чем хороший программист отличается от плохого, и насколько Линус Торвальдс был прав в своей оценке.
• Дилберт не видит сложности в создании искусственного интеллекта, сопоставимого с интеллектом его босса. Для последнего важны признаки лидерства, а не результат.
• История о том как важно согласовывать подробное техническое задание на проект, особенно если над ним работают несколько независимых команд.
• Тяжело в учении, легко в бою: практика прохождения интервью.
• Консультант сделал свое дело и может уходить. Наша песня хороша, начинай сначала.
Эпизоды
Т1. Нашел важный баг, но его сочли технически сложным и отложили “на потом”.
Т2. Придется найти еще более важный и сложный баг, тогда первый баг сочтут легкой прогулкой!
Р. Вижу по коду, что этот модуль не должен работать.
Т. Вижу по тестам, что модуль работает.
Р. Сейчас кое-что подправлю, и баг сразу будет стабильно воспроизводиться!
До встречи.
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.