January 31st, 2008
Первый я рассказываю за пивом, а про второй обычно забываю. Но вот вспомнил по мотивам некого обсуждения в рассылке. Имена и факты искажены из-за особенностей моей памяти, но если бы помнил, то обязально сказал бы имена этих героев.
Первая история случилась в списке рассылке. Где один пионер (могу же я в своем дневнике писать так как мне хочется?) начал всем доказывать о том, что 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 программист лучше, потому что порог вхождения выше чем в другие технологии и дураки тут не приживаются.
Первая история случилась в списке рассылке. Где один пионер (могу же я в своем дневнике писать так как мне хочется?) начал всем доказывать о том, что 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 программист лучше, потому что порог вхождения выше чем в другие технологии и дураки тут не приживаются.
Сессии это вообще один из самых больших обманов в вебе. Создан трудолюбивыми программистами. Ленивый сначала подумает, а потом начнет писать. А сессии придумали программисты которые пишут, а потом думают. Знаете как в некоторых Microsoft Framework'ах хранятся сессии? На стороне пользователя. А знаете к чему это приводит? К тому что каждый запрос пользователя разрастается до десятков мегабайт. Представьте себе сайтик для навигации по которому каждый ваш запрос отправляет 34Mb информаци.
Что же будет если хранить на сервере информацию о сессиях? Ну хорошо, ученик Петя В. решил зарегистрироваться на Самом Большом Порноресуре в рунете по прямой ссылке с Рекомендуемой Стартовой Страницы для всех школьников. Петя В. нажал на кнопку регистрации и перед ним предстала 80-ти страничная регистрационная форма в которой, между прочим, добрые дяди спрашивали циферки с пластиковой карточки которая обязательно должна была храниться в кошельке или кормане брюк папы. Петя В. пошел в родительскую спальню и начал поиски бумажника, но случайно наткнулся на интересный журнал с цветными картинками в тубочке возле кровати. К сожалению когда Петя наконец-то понял, что картинки ему не интересны и вернулся для того чтобы закончить регистрацию на сайте. После нажатия кнопки "Далее" у него появилось сообщение о како-то ошибке и больше вопросы ему не задавались.
Идея сессий порочна, максимум который можно хранить это авторизационная кука. А временные несохраненные данные для которых ожидаются следующие шаги пользователя всегда будут вызывать ошибки. Об этом надо забыть раз и навсегда. Либо модифицируйте объект сразу, за одну транзакцию либо изменяйте свое приложение.
Что же будет если хранить на сервере информацию о сессиях? Ну хорошо, ученик Петя В. решил зарегистрироваться на Самом Большом Порноресуре в рунете по прямой ссылке с Рекомендуемой Стартовой Страницы для всех школьников. Петя В. нажал на кнопку регистрации и перед ним предстала 80-ти страничная регистрационная форма в которой, между прочим, добрые дяди спрашивали циферки с пластиковой карточки которая обязательно должна была храниться в кошельке или кормане брюк папы. Петя В. пошел в родительскую спальню и начал поиски бумажника, но случайно наткнулся на интересный журнал с цветными картинками в тубочке возле кровати. К сожалению когда Петя наконец-то понял, что картинки ему не интересны и вернулся для того чтобы закончить регистрацию на сайте. После нажатия кнопки "Далее" у него появилось сообщение о како-то ошибке и больше вопросы ему не задавались.
Идея сессий порочна, максимум который можно хранить это авторизационная кука. А временные несохраненные данные для которых ожидаются следующие шаги пользователя всегда будут вызывать ошибки. Об этом надо забыть раз и навсегда. Либо модифицируйте объект сразу, за одну транзакцию либо изменяйте свое приложение.
Это у виндоус фанаты, а у Apple счастливые пользователи
(моя цитата, лицензия криэтифф коммонс, разрешаю модифицировать бландинкам за секс)
(моя цитата, лицензия криэтифф коммонс, разрешаю модифицировать бландинкам за секс)
