-Видео

Cyriak - No More Memory
Смотрели: 649 (2)

 -Музыка

 -Поиск по дневнику

Поиск сообщений в Syntax_Terror

 -Подписка по e-mail

 

 -Интересы

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.05.2007
Записей:
Комментариев:
Написано: 134

Syntax Terror






Сегодня, мы будем обедать в Аду!

Вторник, 19 Июня 2007 г. 01:00 + в цитатник
J Cooper обедал со своим приятелем, которого звали Holden. Они встречались за обедом почти каждый день, обсуждая свои рабочие дела. Пока они ели, Холден упомянул одну неприятную ошибку, устранением которой он занимался.
Холден объяснил, как должен протекать процесс: клиенты отсылали файлы, данные из которых автоматически считывались в базу данных PICK, а затем переводились в счёт-фактуру. Если с импортом возникали проблемы, система отправляла электронное письмо служащему, отвечавшему за данного конкретного клиента.
Ошибки при импорте возникали нечасто, но уж если возникали, то это могло обернуться большими проблемами. Если ответственные за клиентов не получали уведомлений, то им приходилось узнавать о неверно выписанных счетах от разъярённых клиентов. А если клиенты были в ярости, то это потому, что им приходилось тратить своё рабочее время на изучение ошибочных бумаг.
"И почему ты сидишь тут, обедаешь со мной, теряя своё время и время наших клиентов?" - спросил Джей.
"Потому что это проблема не в нашей компетенции. Я понял это так" – ответил Холден.
Холден описал процесс отладки. Он скопировал рабочую среду на тестовую машину, вписал себя, как ответственного для клиента с повреждённым файлом данных и отправил этот файл. В считанные секунды его ящик пополнился новым письмом. Без сомнения, это было уведомление об ошибке импорта данных. Он повторил те же действия для другого клиента и тут же получил ещё письмо.
"То есть, это проблема почтового сервера?" – спросил Джей.
"Ага, я думаю, дело в этом. Я отчитался о тестировании и передал это дело вашей команде". Холден был из команды разработчиков, а Джей – из сетевых администраторов.
Джей извинился и, вернувшись за своё рабочее место, обнаружил письмо с просьбой исследовать "проблемы с почтовым сервером". Он прочёл описание проблемы, в точности совпадающее с тем, как это описывал Холден. Джей испробовал все мыслимые способы: посылку сообщений напрямую через telnet, посылку изнутри и снаружи их корпоративной сети, копирование заголовков и текста сообщения, но так и не смог добиться проявления ошибки. При следующей встрече, Джей рассказал Холдену о своих заключениях.
"Я не знаю, Холден, я не могу этого понять. Я перепробовал всё возможное, это не иначе, как ошибка в коде", - объяснил Джей.
"Да ладно, я прогонял тесты больше десятка раз, и ни разу почта не подводила. Это ваши глюки", - настаивал Холден.
"Холден, я говорю, я проверил все возможные места, где почта могла отказать. Настройки сервера не менялись больше месяца, а проблема возникла где-то неделю назад. Я возвращаю это дело вам на доработку, уж извини". Ни Джея, ни Холдена не радовало нарастающее вокруг этой проблемы напряжение.
Два месяца прошло, пока они перебрасывали друг другу эту пакость, настаивая, что проблема возникла по вине другой стороны. Их дружба разлаживалась, и они уже боялись встречаться за обедом, хотя ни один из них не признал бы этого. Тем временем, выписка счетов по-прежнему работала криво.
Но вот, однажды, когда они встретились за обеденным столом, Холден выглядел необычно тихим и замкнутым. Джей поинтересовался, всё ли в порядке, на что Холден ответил: "Я нашёл, в чём была проблема со счетами. Она исправлена". Вздохнув про себя с облегчением, Джей спросил, стараясь не улыбаться, в чём же была проблема. "Неважно, я её исправил".
"Да ну, Холден, говори же!" – настаивал Джей. Под нажимом, Холден сдался и рассказал.
"Однажды поздно ночью, я отлавливал другую ошибку, и забыл удалить маленький фрагмент кода, который добавил при отладке". Как ни странно, именно после этого начались проблемы.
// TODO: remove debugging code
if (toAddress == "holden.coder@company.com")
SendAlert(toAddress, alertText);

Всю неделю после этого за обеды платил Холден.


Оригинал


Понравилось: 13 пользователям

Процессоубийство

Вторник, 12 Июня 2007 г. 01:34 + в цитатник
Бунтующие пользователи – это настоящая головная боль. Введение изменений, которые меняют привычный порядок работы с приложением, предвещают толпу возмущённых пользователей и поток запросов в справочную систему. Возможно, один из пользователей наткнётся на способ обходить нововведение и этот способ, распространившись по офису, станет неписаной традицией, передаваемой из поколения в поколение. Древние племена, присутствовавшие при создании мира 6000 лет назад, оставили нам истории о матери-земле. Мы оставляем рассказы о сочетаниях клавиш.
Jesse B. когда-то работал с банковским ПО. Поскольку банк управляет большим количеством (чужих) денег, он устанавливает правила. Джесс занимался поддержкой программ для кассиров и клерков. В его обязанности входила настройка части, выделенной для одного из филиалов.
Связным Джесса была Шерри, посредник из банка. Ей превосходно удавалось выделять требования об изменениях и дополнениях, выдвигаемые банком и формулировать их таким образом, чтобы разработчики могли их понять. Джессу всё больше и больше нравились их еженедельные встречи.
На одной из этих встреч Шерри поведала новость об ошибке, с которой столкнулся банк. Не отдельные пользователи, а весь персонал. Как объяснила Шерри, "итоги не сходятся, если кассиры отменяют запрос на проверку вводимой суммы".
Это была ни-в-рот-космически огромная проблема. Эта ошибка корёжила данные по обороту за весь день: начисления, выдача, обналиченные чеки, проданные дорожные чеки и т. д. Если итоги не сходились в конце дня, ошибка приобретала фатальный характер. Поэтому Джесс буквально бросил всё и сразу взялся за исследование проблемы.
По словам Шерри, "итоги не сходились, если кассиры отменяли запрос на проверку вводимой суммы". Запрос представлял собой окошко, появляющееся при попытке совершить транзакцию на сумму выше определённого порога, скажем $1,000. Оно выводило сумму в разных денежных единицах, имевших хождение (4 двадцатидолларовые купюры, одна десятидолларовая, 0 четвертаков, 2 десятицентовика) и требовало у кассира уточнить сумму. Появление запроса раздражало пользователей, но таково было требование банка для снижения вероятности ошибки. Более того, требованием банка было отсутствие возможности убрать окно после его появления, то есть, никаких кнопок "Отмена", никаких крестиков в углу, ничего.
Джесс был озадачен. Пользователи не имели возможности отменить запрос, иначе как введя данные и подтвердив транзакцию. Он позвонил Шерри и попросил её разъяснить. "Они используют Ctrl-Alt-Del", сухо сказала она. После нескольких секунд тишины, она продолжила: "мы заходим в диспетчер задач, во вкладку 'Процессы' и отменяем запрос там. Это быстрее, чем заполнять все текстовые поля в окне."
Джесс оценил метод решения проблемы через убийство процесса. В конце концов, их ПО работало не в виде какого-то там приложения, чтобы снисходить до ответа на запрос "Завершить задачу". Нет, процесс нужно было именно убить.
Джесс объяснил, к чему приводит тяга пользователей "отменять запрос" таким путём: к прямому нарушению баланса вследствие аварийного завершения приложения. Однако, Шелли восприняла это спокойно: "О, ну, тогда мы, наверное, спишем это на недостаток обучения пользователей."

Оригинал: http://worsethanfailure.com/Articles/Assisted-Processicide.aspx

ДААА!

Понедельник, 04 Июня 2007 г. 01:24 + в цитатник

АЦП-ЦАП

Воскресенье, 03 Июня 2007 г. 13:06 + в цитатник
AnsiString & Music = "Pink Floyd - One Of These Days";

Почитал тут одну дискуссию и задумался. (Простенькие расчёты показывают), что погрешность, связанная с переводом в цифровую форму и обратно не является принципиальной. Она устранима, т. е. может быть сведена к уровню, не воспринимаемому нашими органами чувств. Просто аппаратура для создания неразличимых "подделок" ("виртуальная реальность", например) в силу своей стоимости массовому потребителю будет доступна ещё нескоро (ели человечество вообще доживёт).

Особенно мило смотрится сравнение Филармонии с домашними колонками (аналоговой, между прочим, техникой). "Тонким ценителям виниловых пластинок", видимо, бесполезно объяснять, что:
- погрешность передачи зависит от качества системы, а не от формы представления;
- носители аналоговой информации изнашиваются в десятки раз быстрее цифровых. Выражение "заезженная пластинка" все слышали? А "заюзанная флешка"? Что чаше встречалось?

В общем, "печально я гляжу на наше поколенье".

Спонсор этого луча ненависти: Биореактор им. В. С. Луговского.

Из подписи на форуме.

Воскресенье, 03 Июня 2007 г. 11:17 + в цитатник
-Don't you ever think there might be more to life than games?
-You mean like finding a girlfriend, getting out of debt, moving ahead in our careers, stuff like that?
-Yeah
-There was a sim game about that, wasn't there?
-Yeah, it sucked.


Что верно, то верно.
По-настоящему рулит Half-Life. В этой игре я бы не отказался жить.

М-да.

Суббота, 02 Июня 2007 г. 19:39 + в цитатник
Лирушечка лежит уже второй раз за неделю.
Ладно, херня - она во всём херня.

А преподаватели у нас в Политехе добрые. Допустить к экзамену, по которому у меня нет зачёта - когда такое было?

Займусь-ка я своим любимым делом...

Пятница, 01 Июня 2007 г. 01:36 + в цитатник
В жизни каждого разработчика всегда полно неопределённости. Как этот кусок кода будет взаимодействовать с тем? Что будет, если сеть упадёт? Что если гамма-лучи инвертируют вон тот двоичный разряд? Что мама готовит сегодня на обед? Есть ли у радона запах?

На самом деле, большая часть информатики - это учение о том, как избавиться от неопределённости. Для высших есть формализмы, вроде Пи-вычислений и CSP. Иногда простая диаграмма состояний - как дар свыше. Если вы с такими не сталкивались, не расстраивайтесь - у вас ещё всё впереди.

Noah прислал следующий Javascript-код, который показывает, как убрать неопределённость насчёт состояния программы при ветвлениях:

function GetGridTable()
{
if (document.getElementById('" + gridPanelTable.ClientID + @"') != null)
{
return document.getElementById('" + gridPanelTable.ClientID + @"');
}
else if (document.getElementById('" + gridPanelTable.ClientID + @"') != null)
{
return document.getElementById('" + gridPanelTable.ClientID + @"');
}
else
{
return null;
}
}


Andy, в свою очередь, прислал пример из PHP, показывающий, как гарантированно убедиться, что файл существует:
    if(file_exists($fDir."announcement.jpg") and
file_exists($fDir."announcement.jpg")) {
$nImg = "announcement.jpg"; }


Одна из проблем вышеприведённых фрагментов в том, что у каждой из ветвей могут быть свои побочные эффекты. Создавать ветвления, где оба потока команд выполняют строго одни и те же действия, непросто, однако - как выяснил Ashton - возможно, даже в языках вроде C#:

    if (BatchProcessor.ProcessBatch())
{

}
else
{

}


Оригинал.

Ага.

Пятница, 01 Июня 2007 г. 00:11 + в цитатник
Направляющая: Amethystium - Withdrawal

Я понял, почему я не мог смотреть видео с LI.ru.
В AdBlock'е для FireFox у меня обнаружился простой, но эффективный фильтр: http://www.liveinternet.ru/*.swf
А в Opera не было поддержки Flash по умолчанию, пришлось качать plug-in, причём авторства Adobe, а не Macromedia, как ни странно.

Зомбоящег

Четверг, 31 Мая 2007 г. 20:33 + в цитатник
Сергей Иванов: Строительство зоны идёт очень медленно. Нельзя такими темпами строить зону.

ААА!!! ГОВОРЯЩИЙ ПОМИДОР!!!

P. S. Я не смотрю зомбоящег™, его смотрят мои родители.

Без заголовка

Среда, 30 Мая 2007 г. 10:47 + в цитатник
Я наблюдаю, как оно медленно и со вкусом пережёвывает мой мозг.
Читать далее
Но оно работает.
Можно даже на выходе поставить квантователь, для вящего реализма.

Метки:  

Кто бы мог подумать...

Вторник, 29 Мая 2007 г. 23:51 + в цитатник
Направляющая: Machinae Supremacy - Dreadnaught

...что для работы с "неким" сервисом придётся использовать два параллельно запущенных браузера.
Разработчегам этого сервиса по итогам освоения я точно задам пару ласковых вопросов.
Тут есть сообщество типа li_dev?

Видео-запись: Cyriak - No More Memory

Вторник, 29 Мая 2007 г. 02:48 + в цитатник
Просмотреть видео
649 просмотров




.



Процитировано 2 раз

Аудио-запись: Machinae Supremacy - Koala In The Spider's Web

Вторник, 29 Мая 2007 г. 02:09 + в цитатник
Файл удален из-за ошибки в конвертации Поехали!

Дневник Syntax_Terror

Вторник, 29 Мая 2007 г. 00:56 + в цитатник
Предложение 1: вы не говорите мне, что делать.
Предложение 2: я не говорю, куда вам нужно идти.
 (450x600, 78Kb)


Поиск сообщений в Syntax_Terror
Страницы: [1] Календарь