информация со ссылкой на Вас о том, что (ctpeko3a) wrote,
информация со ссылкой на Вас о том, что
ctpeko3a

О работе

Сейчас расскажу жуткую историю. Для нормальных людей она будет не ужасной, из-за изобилия технической терминологии, а вот программисты будут от ужаса все покрыты мурашками.


Два программыги, что сидят рядом со мной, последние два месяца заняты написанием веб магазина для продажи каких-то подарков. Один из программистов - это тот самый Джон, о котором я писал тут. Он на этом проекте поставлен главным программистом. Так склалось. Не оказалось в нужное время в компании программиста, который обладал нужными знаниями.

Проект уже написан и сейчас вовсю тестируется. Вот тестеры и нашли интересную закавыку: если несколькими пользователями одновременно нажат на кнопку "Сделать заказ", то все эти одновременные заказы капнут на кредитку одного из пользователей. Тестеры ребята умные, даже черезчур, в головах почесали и сказали что эта проблема происходит из-за того, что все они находятся за файрволлом и что-то у нас такое неправильное в программе. Джон это услышал и начал рыть в этом направлении. Рыл, рыл, ничего не нарыл, но, по своему обычаю, сказал что всё пофиксено и свалил на пару дней в отгулы.

Тестеры сели тестировать опять и опять натолкнулись на ту-же самую ошибку. Пришлось второму программисту сесть и ловить её. Ну а тестерами быть мне и ещё парочке людей. Выработали тест скрипт и давай синхронно ходить по сайту. Да, ошибка присутствует. Теряем сессию. Включили стандартную в .Net поддержку tracing, стали смотреть за sessionId. Неа, сессия не теряется, а ошибка продолжает место быть. Вставили в нужные страницы дополнительную тестовую информацию - не понятно что происходит.

Тут я решил посмотреть на код, который отвечает за совершение транзакции. Код как код, всё вроде бы нормально. Задумался... Странно... Такая белиберда может происходить только если несколько нитей лезут в несинхронизи... Погоди! Какие такие нити в .Net веб приложении?! А если не нити, то такое может быть если некоторые классы объявлены как статические. Ну-ка, ну-ка, посмотрим на объявления...

Ужас! Бррр! Классы Order, ShoppingCart объявлены как статические! И потом запихнуты в сессию!

Как оно вообще работало - мне непонятно. Вернее понятно, но всё-же непонятно! То есть я теряюсь в догадках.

Вы можете себе представить реакцию всех тех, кто сидел рядом и понимал, чем static классы отличаются от обычных. Это было что-то подобное сцене из Ревизора. Немая, короче, сцена.

У Джона, судя по всему, скоро будет много выходных... А мы уже две недели как ищем senior developer с .Net и J2EE. Если кто ищет работу в центре Лондона, то пишите комментарии.
Subscribe

  • George Obama

    Мне кажется, что просто отлично сделали – и Буш и Обама узнаваемы 100%, но что именно от кого было взято постоянно ускользает. Mirrored from…

  • The Typescreen

    Реальный дивайс! Продают за жалкие £35 Mirrored from Весёлые деньки.

  • Teaching Maths in Britain

    1. Teaching Maths In 1970 A logger sells a truckload of timber for £100.. His cost of production is 4/5 of the price. What is his profit? 2.…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments