Первый я рассказываю за пивом, а про второй обычно забываю. Но вот вспомнил по мотивам некого обсуждения в рассылке. Имена и факты искажены из-за особенностей моей памяти, но если бы помнил, то обязально сказал бы имена этих героев.
Первая история случилась в списке рассылке. Где один пионер (могу же я в своем дневнике писать так как мне хочется?) начал всем доказывать о том, что Zope ужасная технология. И одним из аргументов стала вполне законная причина для любых других случаев, а именно невозможность хранить рабочий проект в системе контроля версий. Был бы я дизайнером и работал в Photoshop, то у меня наверное тоже было бы много претензий, что вот нельзя PSD хранить в системе контроля версий. Правда претензии наверное были бы к самому SVN или чему-там. Диф бы не работал в SVN уж точно. Но фотошоп называть говном после этого рука бы не поднялась. Программа она вообще не для этого сделана.
Возвращаясь к конве. Этот товарищь начал говорить, что код который он пишет нельзя хранить в SVNе. Ну мы начали защищаться (вообще от троллей тяжело защищаться, они никогда не отвечают на прямые вопросы). Ситуация начала накаляться. Но ровно до тех пор пока не оказалось, что товарищ хранил в SVN Data.fs. На том и закончилось.
Суть этой истории не в том, что кто-то оказался дураком. Достаточно запомнить что Data.fs не надо хранить в системе контроля версий, и это работать не будет. А так же не надо хранить там директорию данных Postgres или MySQL.
Вторая история произошла с моим очень любимым клиентом. Клиент абсолютно не виноват, это не их идея была и вообще причина в другом. Просто никогда не надо брать на работу людей которые пишут в резюме что они знают PHP. Это приводит к фатальным последствиям и для проектов и для разума. Первое что мне не понравилось в коде это перекодировка данных полученных из Postgres с помощью 256 if/elif. Дело в том, что PHP разработики не любят читать документацию. Поэтому в самом языке куча встроенных функций для выполнения одной и той же операции.
Второе не понравилось Андрею (я вообще не очень помню кому что не понравилось больше и первому, экспертом всегда был Орлов, а в тот период я работал только потому, что хотел научиться у него чему-то новому). После того как данные собирались они сохранялись свойстве объекта для того чтобы быть прочитанными в другом методе, приблизительно так:
self.data = ZSQLMethodLaLaLa()
Что приводило к интересным последствиям. При каждом обращении к странице которая содержала такой объект он лез в базу данных, высасывал там данные (было по 2000 объектов, я же не рассказываю тут как делалась листалка страниц, а мог бы). Потом объект сам себя модифицировал и уже дальше выполнял какие-то действия. Тоесть получалось что при каждом обращении к такой странице Data.fs рос на несколько килобайт.
Потом посещаемость сайта начала рости.... и место на диске кончилось. К счастью для недопрограммистов они уже не работали и были далеко от офиса.
Кто нибудь хочет узнать как был реализован поиск по сайту?
Настоящий python и Zope программист лучше, потому что порог вхождения выше чем в другие технологии и дураки тут не приживаются.
