Coder must die
Apr. 11th, 2008 11:54 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Тут Алексей Печников замучал меня вопросами, почему для StillLife выбрана именно такая архитектура.
Поэтому я решил признаться в своем тайном замысле. Основная цель - убить web-кодера, как профессию.
Первым пристрелочным выстрелом в эту сторону был Communiware. Это был очевидный перелет. Концепция "информационного супа" предложенная для Коммунивера Андреем Акопянцем настолько велика и могуча, что освоить её в совершенстве могут только отдельные гении вроде
ailev. Ну и ресурсов тоже кушает будь здоров.
Это не то, что нужно отдельному юзеру.
Поэтому StillLife в значительной мере Communware наоборот. Если в Communiware в базе хранились не только данные, но и программы их представления (шаблоны), то в StillLife базы данных нет вообще, если не считать пары DBM-ок, используемых для аутентификации пользователей.
Если язык шаблонов Communiware был весьма мощным декларативным языком с условными конструкциями, обработкой список и т.д., то в StillLife шаблоны представляют собой обычный html всего лишь с некоторыми предопределенными именами классов.
В общем, классическая попытка взять цель в вилку.
Понятно, что получится недолет. Даже сейчас видны целые классы сайтов, реализация которых на базе концепции StillLife принципиально невозможна, например Internet-магазины. Web-форум - это предел интерактивности, которого можно добиться на базе такой концепции. Именно поэтому разработка StillLife начата именно с форумного движка. Дальнейшее - блоги и средства управления контентом традиционного сайта - будет проще.
Основное, что лежит в основе - антитеза концепции, выдвинутой
ailev лет 6-7 назад "Сайт - это программа".
Как раз эта концепция, которая в общем-то в то время носилась в воздухе, приводит к тому, что вокруг WWW кормится армия криворуких кодеров. Раз сайт это программа (при этом каждый сайт - отдельная, уникальная программа), каждому сайту нужен программист. Хороших программистов на все сайты не напасешься, значит большая часть сайтов, в том числе и интересных содержательно, будут написано плохими программистами, а следовательно будут плохими, неудобными для пользователя программами.
Соответственно, выдвигается альтернативная концепция - "сайт это документ". В том смысле, в каком это слово понимает Стив Джобс.
Есть программы, их немного, они написаны хорошими программистами. Но с помощью каждой из таких программ можно создать миллионы содержательно разных документов. И для того, чтобы создать документ - программист не нужен. Нужен юзер, который знает что он хочет сказать, и худо-бедно, методом тыка, освоил программу, с помощью которой он может это сказать.
Примерно в этом направлении сейчас двигаются Google, SixApart и другие подобные крупные сервисы.
Но они - злобные проприетарщики. Хотя сейчас очевидно, что создать хорошее web-приложение без использование OpenSource технологий практически невозможно, они ухитрились обойти GPL посредством исполнения программ только у себя на сайте. Раз пользователь не получает исполняемой копии программы, он не вправе требовать и доступа к исходным текстам, даже если 90% кода - GPL.
Кроме того, решения применяемые LJ, Google и другими крупными сервисныи компаниями в WWW требуют соответствующей аппаратной базы. Именно этим объясняется незначительный успех клонов ЖЖ, базирующихся на его коде. Вербицкий может взять исходники ЖЖ, которые Фитцпатрик честно открыл, но у него нету и не может быть денег для создания датацентра, аналогичного калифорнийскому датацентру ЖЖ. Поэтому Vendor Lock In в классическом виде.
Для полноценной реализации концепции "сайт - это документ", требуется программа обработки этого документа, способная выполняться на любом, доступном пользователю компьютере - будь то shared hosting, будь то домашний компьютер с широкополосным подключением к интернету. Лучше конечно, иметь несколько разных программ, адаптированных к разным средам выполнения, но работающих с одинаковым форматом документа. Именно работающих с одинаковым форматом документа. Поэтому столь распространенные нынче в веб-строительстве РСУБД не годятся. Можно создать схему БД, которая будет работать в mySQL, PostgreSQL и Oracle, но с перетаскиванием её будут некоторые проблемы - потребуются специальные срества импорта/экспорта. Да и работать она будет неэффективно, так как она будет вынуждена на каждом сервере не использовать именно те возможности, которыми он наиболее силён - из-за отсутствия этих возможностей в других серверах, совместимость с которыми поддерживается.
Поэтому я решил признаться в своем тайном замысле. Основная цель - убить web-кодера, как профессию.
Первым пристрелочным выстрелом в эту сторону был Communiware. Это был очевидный перелет. Концепция "информационного супа" предложенная для Коммунивера Андреем Акопянцем настолько велика и могуча, что освоить её в совершенстве могут только отдельные гении вроде
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Это не то, что нужно отдельному юзеру.
Поэтому StillLife в значительной мере Communware наоборот. Если в Communiware в базе хранились не только данные, но и программы их представления (шаблоны), то в StillLife базы данных нет вообще, если не считать пары DBM-ок, используемых для аутентификации пользователей.
Если язык шаблонов Communiware был весьма мощным декларативным языком с условными конструкциями, обработкой список и т.д., то в StillLife шаблоны представляют собой обычный html всего лишь с некоторыми предопределенными именами классов.
В общем, классическая попытка взять цель в вилку.
Понятно, что получится недолет. Даже сейчас видны целые классы сайтов, реализация которых на базе концепции StillLife принципиально невозможна, например Internet-магазины. Web-форум - это предел интерактивности, которого можно добиться на базе такой концепции. Именно поэтому разработка StillLife начата именно с форумного движка. Дальнейшее - блоги и средства управления контентом традиционного сайта - будет проще.
Основное, что лежит в основе - антитеза концепции, выдвинутой
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Как раз эта концепция, которая в общем-то в то время носилась в воздухе, приводит к тому, что вокруг WWW кормится армия криворуких кодеров. Раз сайт это программа (при этом каждый сайт - отдельная, уникальная программа), каждому сайту нужен программист. Хороших программистов на все сайты не напасешься, значит большая часть сайтов, в том числе и интересных содержательно, будут написано плохими программистами, а следовательно будут плохими, неудобными для пользователя программами.
Соответственно, выдвигается альтернативная концепция - "сайт это документ". В том смысле, в каком это слово понимает Стив Джобс.
Есть программы, их немного, они написаны хорошими программистами. Но с помощью каждой из таких программ можно создать миллионы содержательно разных документов. И для того, чтобы создать документ - программист не нужен. Нужен юзер, который знает что он хочет сказать, и худо-бедно, методом тыка, освоил программу, с помощью которой он может это сказать.
Примерно в этом направлении сейчас двигаются Google, SixApart и другие подобные крупные сервисы.
Но они - злобные проприетарщики. Хотя сейчас очевидно, что создать хорошее web-приложение без использование OpenSource технологий практически невозможно, они ухитрились обойти GPL посредством исполнения программ только у себя на сайте. Раз пользователь не получает исполняемой копии программы, он не вправе требовать и доступа к исходным текстам, даже если 90% кода - GPL.
Кроме того, решения применяемые LJ, Google и другими крупными сервисныи компаниями в WWW требуют соответствующей аппаратной базы. Именно этим объясняется незначительный успех клонов ЖЖ, базирующихся на его коде. Вербицкий может взять исходники ЖЖ, которые Фитцпатрик честно открыл, но у него нету и не может быть денег для создания датацентра, аналогичного калифорнийскому датацентру ЖЖ. Поэтому Vendor Lock In в классическом виде.
Для полноценной реализации концепции "сайт - это документ", требуется программа обработки этого документа, способная выполняться на любом, доступном пользователю компьютере - будь то shared hosting, будь то домашний компьютер с широкополосным подключением к интернету. Лучше конечно, иметь несколько разных программ, адаптированных к разным средам выполнения, но работающих с одинаковым форматом документа. Именно работающих с одинаковым форматом документа. Поэтому столь распространенные нынче в веб-строительстве РСУБД не годятся. Можно создать схему БД, которая будет работать в mySQL, PostgreSQL и Oracle, но с перетаскиванием её будут некоторые проблемы - потребуются специальные срества импорта/экспорта. Да и работать она будет неэффективно, так как она будет вынуждена на каждом сервере не использовать именно те возможности, которыми он наиболее силён - из-за отсутствия этих возможностей в других серверах, совместимость с которыми поддерживается.
no subject
Date: 2008-04-11 08:29 am (UTC)Точно так же, как в документах MSOffice имеются макросы и возможность достучаться до БД, хотя вообще документ по идее должен быть статическим и переносимым, иначе он становится программой, а не документом.
no subject
Date: 2008-04-11 08:59 am (UTC)Тем более что в выбранном инструментарии уже есть обобщенный интерфейс DBI.
Проблема существующих движков не в том, что они используют БД. А в том, что они пытаются распространить на сайт концепцию хранения данных в БД. Вот тут она начинает предъявлять свои требования и налагать свои ограничения, а потом админы хостингов плачут "Вот, яндексбот пришел, сайт за-DoS-ил".
Думаю, что если ко мне на StillLife яндекс-бот в 50 параллельных запросов придет, я и не замечу (разве что канал выжрет).
no subject
Date: 2008-04-11 09:06 am (UTC)Хотя PHP и MYSQL я в таких условиях не испытывал, но думаю, что для веба оно должно быть еще более производительным, там же количество пользователей формально ничем не ограничено, в отличие от всяких интранетовских клиент-серверных приложений.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2008-04-11 09:26 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2008-04-11 09:16 am (UTC)На язык шаблонов я старался наложить строгие ограничения - в частности запрет условных конструкций. Наборы шаблонов объединялись в репозиторий и могли ссылаться друг на друга.
Репозитории могли наследоваться друк от друга. Вместо условных конструкций было предложено условное наследование.
Практика показала, что верстальщики осваивали эту систему очень быстро - примерно за неделю.
Правда, когда я оставил этот проект, он ушел в другую сторону - условное выражение вернулось, а наследование было оставлено только одиночное безусловное. (Хотя оставалась ветка со множественным наследованием.)
Позднее,
Я описал его подход здесь.
Из известных мне решений похожий подход применен в Zope. Но множественное наследование там сделано через ж, язык слишком императивен и предлогаемый в те времена стиль кодирования не раскрывал всей мощи подхода.
И Python я не слишком люблю.no subject
Date: 2008-04-11 09:17 am (UTC)От того, что мы переназовем нечто так, чтобы оно называлось не "программой", а "документом", изменится/не изменится вот что:
1. по-прежнему количество людей, способных создать ЭТО с умом - останется малым;
2. по-прежнему будут появляться сайты, сделанные криво, но с разумным наполнением;
3. работодатели испытают очередной приступ восторга о идеи переназвать "веб-кодера" в "веб-секретаршу" и в процессе переназвания вдвое понизить зарплату.
После реализации наиболее вострыми и быстрыми работодателями п.3 почему-то (вот сюрприз!) резко обостряются проблемы 1 и 2:-)))
no subject
Date: 2008-04-11 09:25 am (UTC)Важно не количество, а пересечение множества тех, кто способен освоить технологию использования данного инструмента с множеством тех, кто способен создавать разумный контент. У Microsoft с вордом более-менее получилось, а с PowerPoint-ом уже нет.
Вопрос в том, что такое "криво". Если понятие "криво" не будет в себя включать "сайт ложится нафиг от перегрузки при появлении ссылки на него на lenta.ru", то это будет уже большой прогресс, по сравнению с существующим состоянием.
Работодатели меня интересуют мало. Как правило, наиболее интересный контент появляется там, где он создается не в рамках служебных обязанностей.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2008-04-11 09:36 am (UTC)no subject
Date: 2008-04-11 09:40 am (UTC)Там ни один из них не оказался удачным. Здесь - посмотрим.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2008-04-11 01:22 pm (UTC)или наоборот: документ -- это сайт
Date: 2008-04-11 01:30 pm (UTC)HTML-документ хранит в себе странички вики, плюс код на JavaScript, который делает то, что обычно ассоциируется с "полновесными" сайтами, использующими БД и application server.
Re: или наоборот: документ -- это сайт
Date: 2008-04-11 03:27 pm (UTC)Я тут пробовал использовать TWiki для задачи где существенно важно обсуждение, получалось плохо.
(no subject)
From:no subject
Date: 2008-04-11 09:05 pm (UTC)no subject
Date: 2008-04-11 11:23 pm (UTC)Нагревать до фиксированной не очень большой температуры надолго - это простая техника.
Закинуть мясо, готовый набор специй из пакетика, можно картошку, можно что-то для вкуса, залить воды, оставить на ночь - это простая операция.
На выходе - неплохая еда, рекомендую. Практически эмулятор русской печи, готовка "томлением". Да, это не ультравкусные изыски, но это _просто_ и более чем съедобно. Вот я то же самое для CMS хотел бы :)
Баг репорт
Date: 2008-04-11 11:19 pm (UTC)Что я вижу. URL:
http://vitus.wagner.pp.ru/cgi-bin/forum/stilllife/doc/00000170.html?edit=1
Текст:
Тестовый форум Still Life
Произошла неустранимая ошибка
Невозможно редактировать неопознанный объект
Re: Баг репорт
Date: 2008-04-12 09:09 am (UTC)no subject
Date: 2008-04-12 03:43 pm (UTC)no subject
Date: 2008-04-12 04:08 pm (UTC)вселить в машину бессмертную душунаделить операционную систему инстинктом самосохранения.(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Вопрос
Date: 2008-04-13 01:28 am (UTC)Теперь не могу её найти. То ли ты её удалил, то ли я не помню где она.
Во-первых, таки удалил или нет?
Во-вторых, мне вот _уже_ не хватает "найти все постинги юзера". В данном случае юзер - это я сам. Я не могу всегда помнить, что куда написал.
Re: Вопрос
Date: 2008-04-13 01:44 am (UTC)А вот теперь я совсем ничего не понимаю
Date: 2008-04-13 11:32 am (UTC)Re: Вопрос
Date: 2008-04-13 11:34 am (UTC)О БД и криворуких кодерах
Date: 2008-04-14 08:02 am (UTC)Потребность в том или ином способе хранения данных ( строго-табличный или свободно-текстовый; внутри приложения типа "сервер" или отдельными файлами на файловой системе ) определяется характером этих данных и сценариями их использования.
То есть, действительно, при наличии "строгих" и сильно друг с другом связанных наборов "букв и цифр", при том, что букв и цифр много, а собственно html-документов мало ( интернет-магазин, интернет-банк и т. п. )
вполне естественно сочетание БД+server-side-scripting.
При наличии слабо связанных "данных" в более-менее свободном формате, естественно, статичные HTML-файлы правильнее и эффективнее.
Это суть два инструмента для двух разных задач. Однако, существует "серая" зона", где сочетаются "свободные тексты", их какая-то "каталогизация", и - не последнее по значимости - различные виды отображения этих текстов
( различные ВЫБОРКИ документов по метаданным, различные отображения - скажем, текст целиком, или только заголовок, или еще как-то, и различные стили оформления ) Т. е. форумы, всякие wiki, и т. п.
В принципе, если бы я делал такой сайт, или движок к сайту, то я бы постарался весь ТЕКСТ держать именно как текстовые файлы, а не совал бы его в базу. Скажем, для того, чтобы этим проще было управлять, и можно было бы иметь доступ к конкретным документам, даже если все остальное сломалось.
Но представляется сложным поддерживать метаданные об этих документах ( кто написал, когда, зачем, в ответ на что, актуально, неактуально, рейтинг, ссылки и т. д. ) без какого-то рода БД.
Подозреваю, что если полностью реализовывать концепцию "сайт-это документ", то в итоге, наверное, получится "Client-side Content Management Engine", нечто вроде сочетания Web-редактора, публикатора, и (!) своего, внутреннего каталога в виде БД. Эдакий MS FontPage+База+HTTP server extensions. При этом принципиальное отличие будет в том, что вся связность и целостность поддерживается локально, а на сайт выгружаются скорее не отдельные страницы, а блоки страниц, которые генерятся заново после изменения какой-то одной. ( В принципе, ничто не мешает представить одну большую кнопку "выгрузить сайт" и решать все глюки на хосте методом вытирания и создания всей файловой структуры заново )
Только почему-то кажется, что такая штука окажется намного тяжелее проблемы.
Re: О БД и криворуких кодерах
Date: 2008-04-14 08:39 am (UTC)Вот разработчики WebDAV (тех самых HTTP server extensions) думали в более другой парадигме. Поэтому DAV сейчас настолько малопопулярен - его готовить не умеют.
Впрочем, в рамках парадигмы файловой системы и файловых операций существует уйма других способов выгрузить контент на сайт - ftp, sftp, rsync. Если БД у нас yet another файл (что возможно c Berkeley DB или SQLite) то нет никаких проблем кэши метаинформации синхронизировать по тем же протоколам.
Вот только убеждение что метаданные нужно обязательно хранить отдельно мне представляется вредным. XML/SGML - достаточно структурированный формат, чтобы с ним можно было работать.
Re: О БД и криворуких кодерах
From:Re: О БД и криворуких кодерах
From:Re: О БД и криворуких кодерах
From:Re: О БД и криворуких кодерах
From:Re: О БД и криворуких кодерах
From:Re: О БД и криворуких кодерах
From:no subject
Date: 2008-04-14 09:31 am (UTC)Все данные складываются в виде файлов в определенный каталог, каталог регулярно индексируется, и на его основе строится статический сайт.