Если вы собираетесь написать n-ную платежную систему, рекомендую ознакомиться с типичными ошибками в реализации API, которые я собрал в процессе написания модулей для своего проекта.
Рубрика «ошибки» - 12
Типичные ошибки API платежных систем
2014-06-20 в 18:35, admin, рубрики: api, ошибки, платежные системыКачество кода Open Source впервые превзошло качество кода проприетарных проектов на C/C++
2014-04-24 в 20:24, admin, рубрики: c++, Heartbleed, open source, информационная безопасность, качество кода, ошибки, метки: Heartbleed, open source, качество кода, ошибкиВчера организация The Linux Foundation объявила о запуске проекта Core Infrastructure Initiative (CII) для финансовой поддержки бедствующих Open Source проектов вроде OpenSSL, который в последние годы жил на пожертвования $2000 в год.
В официальном пресс-релизе The Linux Foundation подчёркивает, что необходимость финансовой поддержке совершенно не связана с низким качеством кода OSS, совсем наоборот. Свободное ПО превосходит проприетарный софт по качеству кода и по безопасности. В подтверждение этого The Linux Foundation сослалась на последнее исследование Coverity Open Scan, результаты которого опубликованы 15 апреля, через неделю после публикации информации о баге Heartbleed.
Понятно, что момент для публикации выбран исключительно неудачный. Все только и обсуждали, как такой баг попал в открытый код и как предотвратить такое в будущем. Ответа до сих пор нет. Возможно, миллионы долларов от CII помогут решить проблему.
В этой ситуации важно понимать, что качество кода СПО действительно объективно превосходит качество кода проприетарного софта. Условно говоря, если бы код OpenSSL не был открыт, мы могли вообще никогда не узнать об этой уязвимости.
Читать полностью »
История однострочных багов
2014-03-03 в 23:23, admin, рубрики: apple, ecdsa, open source, openssl, SSL, TLS, анб, баги, ГПСЧ, информационная безопасность, криптография, ошибки, метки: apple, ecdsa, openssl, SSL, TLS, X-сервер, анб, баги, ГПСЧ, ДСА, ошибкиКомпания Apple недавно допустила крупную ошибку, забыв удалить лишнюю строчку с оператором безусловного перехода goto посередине функции SSLVerifySignedServerKeyExchange для проверки серверной подписи при установке SSL-соединения. В результате, функция успешно завершала работу, независимо от результата проверки подписи.
Однако, это не первый случай в истории, когда критическая ошибка объясняется единственной строчкой кода. Вот ещё несколько таких примеров.
X Server
В 2006 году было обнаружено, что X Server проверяет рутовые права у пользователя, но при этом разработчики в реальности забыли вызвать соответствующую функцию.
--- hw/xfree86/common/xf86Init.c
+++ hw/xfree86/common/xf86Init.c
@@ -1677,7 +1677,7 @@
}
if (!strcmp(argv[i], "-configure"))
{
- if (getuid() != 0 && geteuid == 0) {
+ if (getuid() != 0 && geteuid() == 0) {
ErrorF("The '-configure' option can only be used by root.n");
exit(1);
}
10 потенциальных SQL ошибок, которые делают программисты
2014-01-08 в 10:34, admin, рубрики: java, jdbc, jooq, sql, ошибки, ПрограммированиеОригинал статьи носит название «10 SQL ошибок, которые делают Java разработчики», но, по большому счёту, приведённые в ней принципы можно отнести к любому языку.
Java программисты мешают объектно-ориентированное и императивное мышление в зависимости от их уровня:
— мастерства (каждый может программировать императивно)
— догмы (шаблон для применения шаблонов где-либо и их именование)
— настроения (применять истинный объектный подход немного сложнее чем императивный)
Но всё меняется, когда Java разработчики пишут SQL код.
Читать полностью »
Copy-Paste и мюоны
2013-11-05 в 10:38, admin, рубрики: bugs, c++, CERN, cplusplus, pvs-studio, Блог компании PVS-Studio, ошибки, ошибки программистов, Совершенный код, метки: bugs, c++, CERN, cplusplus, pvs-studio, ошибки, ошибки программистов, Си
Сейчас я буду рассказывать и показывать на примерах, почему физики тоже должны использовать инструменты статического анализа кода. Мне бы хотелось, чтобы этим инструментом был PVS-Studio. Но, конечно, любой другой инструмент тоже будет полезен. Анализатор кода сократит время на отладку приложений и уменьшит головные боли от тупых ошибок. Лучше побольше думать о физике и поменьше об ошибках в программах на языке Си++.
Google Maps удвоили Рыбинское водохранилище
2013-10-07 в 14:55, admin, рубрики: Google, картографические сервисы, карты google, ошибки, метки: картографические сервисы, карты google, ошибки Сегодня вечером друг показал на картах Google нечто странное
На картах дублируется Рыбинское водохранилище.
Читать полностью »
Как сделать так, чтобы не путали пиццы? Интерфейсы трекера пиццерии и их особенности
2013-09-13 в 12:41, admin, рубрики: додо, интерфейс, интерфейсы, ошибки, тач, метки: додо, интерфейс, ошибки, тачСегодня я расскажу о трекере на кухне Додо Пиццы. На нашей кухне висят планшеты с интерфейсами трекера. Трекер — спинной мозг процесса изготовления пиццы. Он вступает в действие с момента принятия заказа и до передачи термосумки с пиццей курьеру.
Трекер состоит из интерфейсов, каждый из которых выполняет свою важную функцию. Каждый интерфейс показывает пользователю (сотруднику кухни) какие-то конкретные параметры продукта.
Логика трекера в одном предложении: получить информацию о заказе от клиента, распределить продукты по типам и провести продукты через кухню до выдачи конкретному курьеру. Интерфейсы находятся перед сотрудниками на экранах планшетов, сотрудник нажимает на кнопки, продукт перемещается с экрана на экран.
Типы продуктов:
- Выпекаемые: пиццы (экраны: Тесто, Начинка, Упаковка)
- Полуфабрикаты: салаты, картошка, кукуруза (экраны: Закуски, Упаковка)
- Простые: напитки, маффины (добавляются в завершении, на схеме не показаны)
Все продукты в завершении распределяются по экранам выдачи (экраны: Курьеры и Выдача в зал).
Каждый экран выводит определенное количество типов продуктов. Для каждого продукта выводятся определенные параметры (названия, размеры, толщина теста и т.д.). Цель — сделать так, чтобы работа с интерфейсами вызывала минимум ошибок у сотрудников. Я покажу, как шла работа над интерфейсами и какими были попытки сделать так, чтобы сотрудники не путали пиццы.
Читать полностью »
Браузеры и частота их падения
2013-08-25 в 15:12, admin, рубрики: chrome, internet explorer, Mozilla Firefox, opera, safari, автоматизированное тестирование, браузеры, ошибки, статистика, Статистика в IT, тестирование, метки: chrome, Internet Explorer, Mozilla Firefox, opera, safari, автоматизированное тестирование, браузеры, ошибки, статистикаС помощью собственного инструмента для проведения автоматизированных тестирований веб-приложений в различных окружениях Selenium компания Sauce Labs получает большие объёмы статистических данных о множестве ошибок. Часто ошибки возникают не из-за плохого кода, не плохого соединения и не из-за заряженных микрочастиц из открытого космоса, а из-за «падения» браузера. Разумеется, в этом случае браузер будет перезапущен, но нам интересна ведомая компанией статистика аварийных завершений, по которой можно судить о надёжности тех или иных браузеров.
Два года назад, в августе 2011 года, Sauce Labs уже публиковала подобную, пусть и менее детальную статистику на основании миллионов тестов, которые проводили клиенты компании. Результаты оказались несколько предсказуемыми, хотя было несколько удивительных фактов.
Конечно же, Internet Explorer 6 оказался среди худших браузеров, но и более новые версии не блистали надёжностью. Надёжным в 2011 году оказался Firefox, хотя не хуже был и Google Chrome с его постоянными обновлениями, не оставляющими пользователя с нестабильной версией. По результатам тестов неплохо себя показал и Opera.
Читать полностью »
Советы новичкам при проектировании модульных производственных систем
2013-06-04 в 18:30, admin, рубрики: .net, Анализ и проектирование систем, ооп, ошибки, проектирование, метки: .net, ошибки, проектирование В этой статье я попытаюсь поделиться своим опытом в проектировании пользовательской бизнес-логики. Это явно не претендует на полноценный ликбез, т.к. я всего лишь вспоминаю то, через что прошёл лично я, какие ошибки я допустил, и как мне их удалось (или не удалось) исправить в будущем. Наверняка, опытные системные архитекторы уже все проходили и знают, однако надеюсь, что некоторые советы таки будут полезны.
Мы использовали (и используем) клиентскую часть на WPF/Silverlight, WCF сервисы и СУБД Oracle, Postrges, MsSQL. Код написан по MVVM, использована Prism для модульности и навигации. Не могу точно сказать, какие из тезисов подойдут для других платформ и языков.
Так сложилось, что в какой-то момент мне, совершенно заурядному на то время программисту, выпала задача проектировать большую и сложную систему учета данных с большим количеством условий, переходов, этапов работы. Система была предназначена для ввода данных о жителях, регулярных заседаний по выдаче им пропусков и отказов, продления пропусков, прекращения их деятельности, штрафов, и многих других мелочей. Сейчас ядро системы уже большей частью переписано, говнокод исчез, использованы новые и последние технологии, платформы.
Итак, поехали.
Читать полностью »
TraceMyCode – сервис для отслеживания ошибок
2013-02-19 в 4:18, admin, рубрики: .net, exception, logging, php, ошибки, я пиарюсь, метки: .net, exception, logging, PHP, ошибкиНесколько лет назад, заканчивая очередную программу для сенсорных столов, наша команда столкнулась с проблемой поддержки нескольких устройств, размещенных в разных местах. Необходимо было отслеживать возникающие ошибки в программе и оперативно их исправлять. Но все это усложнялось большим количество устройств, проверять каждый из них было не рационально.
Тогда мы написали небольшой веб-сервис, который мог принимать и сохранять информацию об ошибке в приложении. Достаточно длительное время этот сервис работал только в рамках компании и за это время применялся практически в каждом проекте.
Пару месяцев назад появилась идея доработать сервис до приемлемого вида и позволить им пользоваться каждому разработчику.
Читать полностью »