(no subject)

Tuesday, March 15th, 2005 02:05
kastaneda: (Default)
[personal profile] kastaneda
Я тут недавно закинул ссылку на интересную статью о том, как погано жить в теге <textarea>. Теперь — вторая серия: почему я считаю веб-приложения редкостной гадостью. По крайней мере, я говорю о CMS.

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

И вот почему.

World Wide Web — это… Ну, все знают, гипертекстовая среда. То есть, текст и ссылки, из которых всё выросло. Картинки, CSS, Flash являются довеском к.

Сеть динамична из-за децентрализованности. Сегодня где-то сервер упал, а где-то какой-то newbie выложил свою домашнюю страничку. Мне не надо даже пальцем шевелить, чтобы в сети произошло что-то: там всегда что-то происходит. Парадокс: сеть, состоящая из одних лишь статических (!) страниц и связей между ними, может быть чертовски динамичной, даже без Google и форумов. На самом деле парадокса нет, каждый статический файл может быть изменён владельцем, вот и всё.

HTML-формы понадобились. Просто понадобились сети на самой заре рождения веба, и появились ещё в HTML 2.0 (что было до того — просто не знаю). Без форм почти невозможна интерактивность (Flash и XMLHttpRequest в те времена ещё не родились). С помощью форм можно вбить свой запрос «mp3 xxx download халява crack» на ближайшей поисковой машине и надеяться на какой-то результат.

Можно зайти на web-mail из интернет-кафе и почитать свою почту. А можно даже написать. Круто! Несколько лет эволюции — и целые армии контент-менеджеров вбивают прайс-листы при помощи веб-интерфейса CMS с WYSIWYG-редактором, который они не знают, как отключить…

Стоп!

Где-то тут вкралась чудовищная ошибка планетарного масштаба.

Скажите, лично вы что предпочитаете — настроить почтовую программу или посещать сайт какого-то web-mail'а? Я уверен, что большинство из вас пользуется отдельно стоящей программой (ну, кроме фанатов Gmail'а, постоянно едущих куда-то автостопом). В этом есть очень простой смысл: как правило, специализированное решение круче универсального, когда оно существует. Исключения пока трогать не будем.

С помощью связки PHP+MySQL можно штамповать сложные решения «на потоке», особенно — если вкурить, втянуться в процесс и войти в ритм. Даже отсутствие RAD, как в ASP.NET, не мешает. Вопрос лишь в целесообразности. Итак, когда веб-приложения целесообразнее, чем традиционные «десктопные»? Ну, допустим, для примера:

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


А теперь возьмём какого-нибудь менеджера, отберём у него Excel и вручим ему веб-приложение. Либо отберём у дизайнера PhotoShop, и предложим отныне и навеки делать гамма-коррекцию, crop и resize какой-то приблудой на Flash'е. Есть желающие провести эксперимент? Вывод: надо десять раз подумать, вызвесить все pro и contra, и только тогда принять решение о разработке какого-то одного интерфейса (либо дублирующегося, как это у многих free mail).

Итак, к чему мы вернулись? К контент-менеджерам и веб-приложениям. Веб-студии надо делать много дешёвых сайтов, а многие заказчики терпеть не могут таких слов, как HTML, FTP, SQL и многих других. Зато заказчикам нравится, когда можно сделать copy-paste из Word'а. В результате рождается web-based клон FrontPage, основная задача которого — пудрить мозги заказчику. Побочная задача — якобы облегчить труд разработчиков той самой веб-студии. Обе задачи не выполняются. Пудрить мозги заказчику удаётся только до того момента, как сайт сталкивается с суровой реальностью. Об этом даже говорить не хочется, все и так насмотрелись.

Вторая задача — унифицировать всё и вся, хотя бы, до уровня русского народного метода copy-paste в разработке. Весь контент лежит в базе. Структура базы данных годится «для всего и ничего», потому что разрабатывалась не под специальные задачи, а под общие. В общем, и здесь полный бред. Тоже говорить не хочется.

А теперь — небольшой «ракурс» в историю. Когда не было веба и веб-приложений, средний unix-админ прекрасно обходился без веб-почты. Достаточно пойти telnet'ом (теперь только ssh) на хост, стоящий чёрт-знает-где, и запустить pine (теперь лучше mutt). Ничего не напоминает? И ходить можно откуда угодно, и настраивать на стороне клиента ничего не надо; отличается только среда. HTML+HTTP versus VT-100.

Стоп.

Меня сейчас начнут обвинять в том, что я предлагаю хранить данные только в текстовых файлах, которые заливать только по ftp или набирать в vim'е руками… Нет, ничего подобного. Я слишком уважаю database-driven сайты. Я просто предлагаю сменить среду.

Спроектируем хорошую, семантически выверенную БД для нашего сайта. Получилось? У нас новости, каталог товаров и форум перестали смешиваться в нечто аморфное? Отлично. Писать код, который работает с такими данными, интересно и не сложно. А теперь стоит десять раз подумать, а нафига нам вообще интерфейс администратора к этому сайту? Мы ведь сделали уникальный продукт (а не использовали типовой CMS), пользователь у нас всего один, так не лучше ли присмотреться к нему повнимательнее? Так ли часто нам надо обновлять прайс-листы из интренет-кафе?

Я тут дохрена текста написал. Вроде бы всё разжевал довольно подробно. Сложите два плюс два. Вспомните, что с Access'ом офисный народ вполне умеет управляться. Вспомните о том, что я — за правильную семантику БД. Вспомните о специализированных решениях.

Догадались? То, что нам нужно для публикации контента, называется database front-end. Для того же MySQL их существует немало. Меньше, чем почтовых клиентов, но значитально больше, чем броузеров с поддержкой JavaScript'а.





Нужно ли развивать такую мысль дальше? Вывод: проще, дешевле, удобнее и правильнее заменить 95% «админки» среднестатистического сайта на что-то подобное. Оставшиеся 5% будут, скорее всего, просмотром статистики и модерацией форума. Впрочем, с интересом выслушаю и другие мнения.

Date: Tuesday, March 15th, 2005 02:21 am (UTC)
From: [identity profile] zmeuka.livejournal.com
Ты это докажи клиентам с запудренными мозгами.
Нет, я серьёзно.
У меня подавляющее большинство клиентов и их контентов ХОТЯТ, топают ножками и настаивают на том, чтобы к каждому разделу чего-там-редактировать на сайте была отдельная ссылочка. Плевать они хотели на структуры данных - не поймут, даже если им эти структуры на лбу вытатуировать.

Какая-нибудь связка класса "описание товара отдельно, цены отдельно" - и всё, пиши пропало. А ведь это совершенно нормально для средней руки магазина с несколькими ценовыми мордами (псевдоконкуренция). В общем-то, формы и отчёты к базам данных и придумывали, чтобы значительно упростить ввод.

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

Короче, описанная тобой штука годится для небольших и не сильно связанных табличных реестров. Уже толковая новостная система - с загрузкой нескольких картинок на статью, со ссылкой на id источника, на ветку комментариев и прочим (могу показать) - в разы проще управляется специализированным веб-интерфейсом, чем универсальным БД-клиентом.

Вот такое мнение. :)

Date: Tuesday, March 15th, 2005 04:50 am (UTC)
From: [identity profile] yrashk.livejournal.com
кстати, в данном аспекте интересно было бы помедетировать над применением объектной/фреймовой БД, из которых вытекает использование унифицированного броузера-редактора. Если объекты/слоты правильно снабжать метаинформацией...

ушёл задумчиво пить кефир.

Date: Tuesday, March 15th, 2005 12:26 pm (UTC)
From: [identity profile] yrashk.livejournal.com
разное курить :)
для "пробы" (т.е. это далеко не идеал, но все же) - FramerD (http://www.framerd.org/)
а вообще лучше со мной по этому поводу покурить пива/глинтвейна/швепса/сигарет ну и тому подобного и потрепаться на эту тему.

О да.

Date: Tuesday, March 15th, 2005 02:37 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
В этом случае всё получается намного изящнее. Плюс триггеры для проверки вносимых данных, плюс какая-то логика на стороне сервера для скрещения ежа с ужом там, где это необходимо... правда, результат будет до боли похожим на стандартныю веб-связку "СУБД + формы-скрипты-настройки + HTML-морда + унифицированный веб-броузер". :)

Re: О да.

Date: Tuesday, March 15th, 2005 03:16 pm (UTC)
From: [identity profile] yrashk.livejournal.com
просто триггеры лесом, не попадает в концепт. А вот типизация слота по метафрейму (метаобъекту), декларация поддержки объектом(фреймом)/метаобъектом(метафреймом) набору "протоколов", и т.д. и т.п.
эх.
а вообще /me время от времени педалит Weta DB -- извращенческую ruby prevalence (или около того). посмотрим чё выйдет :-D

Date: Tuesday, March 15th, 2005 10:38 am (UTC)
From: [identity profile] fester-ua.livejournal.com
И согласен, и несогласен.
Нахрен универсальный DB-клиент. Дайош СВОЙ клиент, заточенный под свою систему. С разными уровнями абстракции, и прочее.
Вот тогда может смысл проявится.

Date: Tuesday, March 15th, 2005 10:56 am (UTC)
From: [identity profile] fester-ua.livejournal.com
Можно и аксес.
Только по ходу куча гемора будет ;)
На самом деле не суть важно на чём, идея где-то рядом.

Date: Wednesday, March 16th, 2005 09:02 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Интернет-магазин <censored> (большой) рабоатет на access в качестве бекенда к PHP/MySQL вебу.

HTML по уровню неудобства просто отдыхает.

Date: Tuesday, March 15th, 2005 02:38 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
Хм. А какая принципиальная разница, в каком интерфейсе будет выполнен клиент и где именно будет отрабатывать его механика?

Date: Tuesday, March 15th, 2005 02:45 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Ну, разница, к примеру, в том, что могут вылезти косяки при доступе к mySQL из-под Access.
А если делать это через native mysql api, то ближайший KAV office guard начнёт волать, что тут живут вирусы — ыш ты, функции из внешней .dll импортируют!
+ скорость работы, опять же...

Date: Tuesday, March 15th, 2005 02:52 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
Хм. Даёшь дот-НЕТ наоборот...

Date: Tuesday, March 15th, 2005 02:58 pm (UTC)

Date: Tuesday, March 15th, 2005 03:17 pm (UTC)
From: [identity profile] yrashk.livejournal.com
а вот это с помощью мета-систем ;)

Date: Tuesday, March 15th, 2005 03:19 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Пришёл Юрик и начал дымить ;)
Нафих эти ваши мета-системы, простого скриптинга хватит за глаза.

Date: Tuesday, March 15th, 2005 03:54 pm (UTC)
From: [identity profile] yrashk.livejournal.com
ну тогда вперёд вам на баррикады ;)
мучайтесь .)

Date: Tuesday, March 15th, 2005 03:55 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Надо не мучаться, а получать удовольствие. ;)

Date: Tuesday, March 15th, 2005 03:56 pm (UTC)
From: [identity profile] yrashk.livejournal.com
получать удовольствие от просто скриптинга -- увольте ;)

Date: Tuesday, March 15th, 2005 04:01 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
АПВС?
На скриптовых языках (том же Lua) щас чуть ли не AI пишут. Что вам не нравится?
(кажется, начинается очередной флейм ;))

Date: Tuesday, March 15th, 2005 04:02 pm (UTC)
From: [identity profile] yrashk.livejournal.com
да я не о скриптовых языках
я сам вон Weta DB на руби пишу...

Date: Tuesday, March 15th, 2005 04:06 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Тогда в чём проблема?

Date: Tuesday, March 15th, 2005 04:07 pm (UTC)
From: [identity profile] yrashk.livejournal.com
в способах создания веб-решений и их внутренностях
пока сайты будут просто "скриптить", ничего кардинально хорошего не произойдет с ними

Date: Tuesday, March 15th, 2005 04:11 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
По-моему идётся о клиентской стороне...

Date: Tuesday, March 15th, 2005 04:14 pm (UTC)
From: [identity profile] yrashk.livejournal.com
всё взаимосвязано, увы и ах...

Date: Tuesday, March 15th, 2005 02:47 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
У MS Access прибита гвоздями такая вещь, как описанные в базе формы. То есть, база + набор форм исполняется как цельный интерфейс. При использовании веб-интерфейсов мы делаем то же, но формы описываются не в БД, а в условном веб-скрипте.
В случае чего-нибудь вроде, ну, к примеру, постгреса мы также можем задавать формы (но я не видел понимающих это клиентов) и вообще унести всю клиентскую логику в базу. Я пока не решил, насколько это целесообразно. Грубо говоря, я могу сделать там вообще PSQL-дамп, который проинсталлирует тебе базу данных, разложит по нужным местам нужные пакеты и ещё пару приблуд соберёт. :)

В случае любимого веб-сайтоводами мускля сей номер не пройдёт. Там вообще мало что пройдёт, даже в новых и крутых версиях. А на всемирную революцию по этому поводу у меня оранжевых ленточек не хватит.

В нибелунге провязки "это ссылается на то" в таблицах стоят, там это много где используется. Но при отсутствии единой формы, где можно поредактировать свойства из разных таблиц, не заморачиваясь ненужными тебе свойствами - это мало кому на голову натянется.
И картинки, кстати, в базе. А потом, если надо, кэшируются. Впрочем, иногда - в другой базе. :)

Date: Tuesday, March 15th, 2005 02:55 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Я под аксес писал, знаю ;)
При чём писал на VB+external DLL+mySQL.
Что я скажу... Врагу не посоветую.
Я таки считаю, что можно нормально написать свою более-менее общую приблуду. В крайнем случае приклеять какой-то Lua и юзать его для логики.

ps: чо это за нибелунги такие?

Date: Tuesday, March 15th, 2005 03:12 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
нибелунги - простенькая система продаж мобильной травы.
умеет работать с смс-ммс шлюзами, продавать по вапу, вести биллинг, рулить мобильным контентом (то бишь, товаром) и так далее. первую версию мы с [livejournal.com profile] blinohod начали проектировать почти два года назад, потом я колбасил-колбасил...

Date: Tuesday, March 15th, 2005 02:58 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Ой, что это я?..

А куда девать логику? ...

Date: Tuesday, March 15th, 2005 08:01 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Как только тебе в процессе выполнения "атомарного" (с точки зрения end-user-а) действия понадобится выполнить кусочик логики, а результат ее работы сунуть этому самому end-user-у под нос, ты пойдешь куда? Правильно - по одному из двух путей. Либо ты пойдешь искать, где в этой самой среде для работы с BD можно вкрутить свой скриптовый язычек, какие там есть widget-ы для общения с пользователем и т.п, и все - мы получаем интерфейс, пригодный для одного конкретного сайта, и поэтому - не пригодный :)

Либо - ты пойдешь придумывать, как спрятать всю логику на стороне "сервера", а в сторону клиента передавать только команды по управлению интерфейсом. Чтобы, значит, интерфейс можно было reuse-ать в разных проектах. В результате получится HTTP+JS, или X11, но - свое, ни с чем не совместимое.

Морали в моей басне нет, это скорее мысли вслух.

Date: Tuesday, March 15th, 2005 03:15 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
там единственное требование - возможность быстрого и очень простого манипулирования информацией. если вообще всё обновляется редко, о каких движках речь? пущай новости в SSI-колбасе руками правит, базы данных тут ни при чём.

Date: Tuesday, March 15th, 2005 03:16 pm (UTC)
From: [identity profile] zmeuka.livejournal.com
Ой. Представил форум девелоперов этих универсальных интерфейсов.
В который писать можно только из универсального фронта к базе данных...

Date: Friday, May 6th, 2005 01:01 pm (UTC)
From: [identity profile] xekc.livejournal.com
я два раза писал развёрнутый коммент и он пропадал. чёрт, а сейчас я просто скажу что в этом посте всё-всё неверно - и он пройдёт, да?

Date: Friday, May 6th, 2005 01:11 pm (UTC)
From: [identity profile] xekc.livejournal.com
> Скажите, лично вы что предпочитаете — настроить почтовую программу
> или посещать сайт какого-то web-mail'а? ...смысл: как правило,
> специализированное решение круче универсального, когда оно
> существует. Исключения пока трогать не будем.

у мейлинг системы есть задача: читать и отсылать почту. ну там и ещё что-то. у сайта всё сложнее. один сайт делается как средство информации, другой - продвиженя, треттий - продаж, четвёртый просто понты, пятый - всё это вместе.
то есть сравнение не корректно. вы видите оптимальное решение для самых очевидных для вас задач, а между тем есть группы других задач, которые ваше решение просто режет без ножа.

Date: Monday, September 27th, 2010 10:05 am (UTC)
From: [identity profile] nys.at.ua (from livejournal.com)
Интересная мысль

September 2025

M T W T F S S
12345 67
891011121314
15161718192021
22232425262728
2930