суббота, 20 октября 2012 г.

История одного веб проекта



На каком же все-таки низком уровне работают наши веб-студии,что joomla работает в 10 раз быстрее,созданных ими сайтов.Я бы хотел поделиться с вами историей из моей жизни,которая произошла совсем недавно. Я не могу молчать,ибо это неправильно. И так







Моя ужасная история (часть 1 - вступление):
Одной знакомой компании нужно было сделать веб-сайт. Сам я взяться за это не мог (не хватало времени), и поэтому меня попросили проследить за технической частью. Заказали у конторы X (не буду разглашать имени,они сами поймут и пусть им будет стыдно!) . И вот,подошел срок сдачи. Сайт предполагалось разместить на сервере нашей компании. Создал я для компании Х виртуальную машину и дал им root доступ на него (подумал пусть ставят что хотят). Оказалось,что в конторе нет ни одного сотрудника, хотябы удаленно знакомого с linux. Пришлось выполнить за них сложную команду "apt-get install php mysql phpmyadmin". Потом начали идти звонки,что у них ничего не работает (ну естественно,заливают файлы от рута и пытаются выполнить апачем).



Моя ужасная история (часть 2):
После "благополучной" заливки веб-сайта выяснилось,что скрипты отрабатывают >= 10 сек и в течении пары минут работы сайта логи привысили 6Гб. Мне,как программисту,было интересно что за "говнокод" они там написали,но просмотреть исходные коды мне не удалось,т.к. они были обфусцированы,а возиться разбирать мне было лень (как оказалось потом - это супер-пупер-перепупер инновационный движок и поэтому они не хотят его показывать другим). Мы связались со студией Х и попросили исправить ошибки,т.к. пишется огромное количество логов. Через некоторое время они отписались,что все исправлено. Я открываю сайт,опять задержка 10 сек. Подключаюсь на сервер и вижу,что просто отключены логи. Я не ожидал такой наглости от них. Не объясняя ничего,отобрал у них root права,отключил логирование в файл и настроил вывод ошибок в браузер (благо php позволяет делать такие вещи).После чего связался с ними и указал на просто ОГРОМНОЕ количество ошибок,за которыми не было видно основного контента сайта. 90% ошибок было "undefined variable ..."(тривиальная ошибка "ламерского" кода).

Моя ужасная история (часть 3 - кульминация):
После нескольких дней сопротивления - они всё-таки нашли и исправили "undefined variable" в своем коде,но на производительность веб-сайта это никак не повлияло (для них был выделен сервер: 2 core, 2GB ram, 50GB hdd,100 Mbs lan). Чтобы остаться чистенькими директор компании X начал катить бочку в нашу сторону. Они утверждали,что проблемы в вашем сервере,а не в скриптах.Что у них ИДЕАЛЬНЫЕ скрипты и ошибки в них ну никак не может быть. Ради достоверности я залил тудаже различные популярные cms системы (joomla,drupal,wordpress). Отклик от них был < 1 сек. Я полагаю,что это является неоспоримым доказательством того,что сервер работат исправно и его производительности ДОСТАТОЧНО.
Была назначена дата "круглого стола" со всеми участниками проекта (меня пригласили в качестве эксперта). После моей речи о некомпетентности сотрудником студии X, я услышал много доводов о том,что их компания является лидером на рынке,что в ней находятся высочайшие специалисты в области веб разработок и что они в этом деле с 1993 года (для справки: дата выхода php - 1994 год).
    Первым делом зашел разговор об ошибках. В нем CEO/программист (19 лет стажа) компании ответил,что у них все в порядке и что проблема в нашем сервере. Он привел пример кода,где создает переменную внутри условного оператора и пытается ее сложить с числом за пределами него.В результате чего получает в браузере "undefined variable".


<?php

    if ($some_condition){
        $somevar = 3;
    }
    print $somevar + 2;

?>


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

    После того,как я наглядно продемонстрировал,что на этом же сервере установлены другие cms системы и все работает исправно, я услышал ответ,что БД cms систем с демонстрационными сайтами слишком мала и поэтому они так работают (размер БД самого проекта на тот момент был < 1 мб). Я сильно удивился такому глупому аргументу. Открыл phpmyadmin и показал select запрос в базу размер которой был ~2TB (как знал,что вылезит что-то про сервер БД), он благополучно вернулся за 0,03 сек. И это не осталось без комментария. Их специалист (он же CEO компании. Это тот,который на php с 93 года программирует) ответил,что к моему сведению phpmyadmin работает в ядре mysql и поэтому его работа настолько быстрая. И в дополнение ко всему,у вас на сервере установлен ruby,python,nginx и это является причиной такой медленной работы сайта. После этого ответа у меня глаза на лоб полезли!!! Я не знал о чем еще мне беседовать с этим человеком... Я высказал свое мнение о проекте,о квалификации разработчиков компании и удалился из кабинета.

Моя ужасная история (часть 4 - эпилог):
В конце-концов компания заказщик благополучно отказалась от услуг студии Х, чему я был несказанно рад.
       Если вы дочитали до конца,значит я не зря написал эту статью. Желаю вам от всей души,чтобы вам в жизни не попадались такие компании/партнеры/сотрудники.


P.S.
Не хотел этого делаь, но они сами нарвались. Данной компанией является Time4Soft LLC . Не советую вам иметь дело с этой компанией. Не наступайте на эти грабли.

14 комментариев:

  1. Belə şirkətə ən yaxşı cəza onun adını açıqlamaqdır ki, heç kim daha onlara sifariş verməsin!

    ОтветитьУдалить
  2. У нас есть студии, работающие с 1993 года? Я теряюсь в догадках.
    Когда пастухи приходят в IT получается то, что описано выше.
    В таких случаях я делал так. Говорил что-то про оптимизацию, индексы, хранение данных в оперативке. Когда становилось понятно, что человек не разбирается, а просто машет гривой, я добавлял какую-нибудь хрень типа: "Всем известно, что индексы MyISAM таблиц хранятся на отдельном разделе, управляемом через HEAP в InnoDB". И после того, как он соглашается, можно сообщить: "На самом деле всё, что я сейчас сказал - это охинея и вы с ней согласились. Вот ваш уровень знаний".
    Это точка в споре :)

    ОтветитьУдалить
  3. Отредактировал запись. По многочисленным просьбам пользователей и наглости самой компании.

    ОтветитьУдалить
  4. Разве можно использовать переменную, которая еще не создана? (для которой еще не отделено местечко)- динамичность PHP позволяет этого делать, но это не является правильным. К сожалению многим быдло-программистам не дано этого знать, ибо для "столь огромного опыта" это очень мягко говоря не логично. В НОРМАЛЬНО написанном коде, в максимальном DEBUG-режиме не должно быть не одной ошибки.

    ОтветитьУдалить
  5. приветствую...
    а как с Вами связаться можно? спасибо

    ОтветитьУдалить
  6. ребята в проекте небыло ни одной ошибки! работа было сделано профессионально и во время!

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

    "Toxunma mazluman ahına, Allah çıxar ahəstə ahəstə!"

    ОтветитьУдалить
  7. Профессионально?)) Вы хотя бы в свой личный сайт студии в код заглядывали? Это называетcя "кровь из глаз"... =))

    function doJs()
    {
    $(".name").find("input").each(function(){
    $(this).val("exist");
    });
    $(".email").find("input").each(function(){
    $(this).val("exist@time4soft.com");
    });
    $(".pass").find("input").each(function(){
    $(this).val("00000000000000");
    });
    $(".phone").find("input").each(function(){
    $(this).val("00000000000000");
    });
    $(".sex").find("select").each(function(){
    $(this).val("female");
    });
    }

    Разработчики поймут...))

    ОтветитьУдалить
    Ответы
    1. Виталий, спасибо что написал.
      код написано правильно. doJs() функция для того чтобы не обновлялся страница. One Click as Apple. We LOVE Apple.

      Все спрашивают, почему зачем. ответ одни: МЫ ТАК ХОТИМ!

      Удалить
    2. наш сайт постоянно обновляется, то что ты заметил это было написано в период теста. Так как мы обновляем и тестируем проект Online (не так как хвастающие программисты и разработчики). У нас своя технология! Разработано Директором компании.

      Думаю я смогла объяснить ситуацию. и все меня поняли.
      Желаю удачи!

      Удалить
    3. Виталик, ну ты понял теперь? ))

      Удалить
    4. O1egL, не знаю кто вы такой. хватить издеваться... поверьте что придет время вы пожалеете об этом.

      Удалить
    5. А я ни над кем не издеваюсь. Я искренне верю, что вы завоюете всю планету своими новыми технологиями.

      Удалить
    6. O1egl, спасибо что ты нас не забываешь. но нам не нужно завоевать всю планету. она и так и так завоевана! :-)
      Миру мир!

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

      Удалить
  8. Здесь история показала что прав наша компания!

    ОтветитьУдалить