Все ли CMS одинаково полезны?
На сегодняшний день сеть интернет буквально забита всякими продающими ресурсами. Оно и не удивительно - любой современный человек понимает все прелести, предоставляемые мировой паутиной. И потому, каждый, мало-мальски уважающий себя предприниматель, буквально считает своим долгом разместить в сети информацию о себе любимом и своем не менее любимом бизнесе. И уж этот мега-ресурс обязательно попытается что-нить впарить каждому случайно зашедшему серферу. И никак иначе.
Отдельной группой стоят так называемые мани-мэйкеры. Это люди, у которых нет бизнеса в "реале" и которые живут (или пытаются жить) только с доходов, заработанных в сети. Если для "обычных" коммерсантов личный сайт - это скорее дань моде, показатель престижа, приносящий как правило весьма небольшое дополнение к основному источнику дохода, то для манимейкера интернет - основное "поле боя" за прибыль. И потому современный мани-мейкер зачастую имеет в своем распоряжении десятки самых разных ресурсов в разных секторах сети, каждый из которых занимается своим делом: от вполне реальной торговли реальными товарами до виртуальной (но не менее прибыльной) "торговли воздухом".
Справиться со всем этим "хозяйством" дело совсем не простое. Особенно, если учесть произошедшие в последнее десятилетие огромные прорывы в области алгоритмов ранжирования сайтов поисковыми системами. Десять лет назад, достаточно было соорудить сайт на HTML в обычном "Блокноте" (можно даже без картинок), разместить его где-нибудь - все равно где, ткнуть искалку в него носом и все - посещаемость этому ресурсу обеспечена. Не высокая, но стабильная.
Сегодня же для того, чтоб сайт "понравился" поисковику, вэб-мастеру приходится трудиться день и ночь. Причем каждая искалка имеет свой неповторимый "характер" и потому не существует универсального способа нравиться всем и каждому - к каждому поисковику нужен индивидуальный подход. А когда количество подконтрольных сайтов переваливает за пару десятков у мани-мэйкера начинается настоящая головная боль.
Естественно, как спрос порождает предложение, так и на каждую проблему рано или поздно находится решение. Сегодняшний успешный мани-мэйкер просто обязан быть "вооружен" до зубов различного рода утилитами, скриптами, статистическими данными и т.д. и т.п. Благо, сейчас в этом хламе недостатка нет. Чай не первый год уже воюют.
Но самое главное среди всего этого бесценного стаффа - сайтовые движки. Ибо все изыскания, все идеи, решения, принятые на основе анализа статистики посещаемости своих ресурсов, прибыли и убытков, все то ценное, что только может посетить несчастную опухшую голову мани-мейкера в конечном итоге выливается в одно и тоже - изменения, производимые на подконтрольных сайтах.
А учитывая объемы и совершенно ужасную структуру всего этого сетевого хозяйства, становится понятно, что ни о каких масштабных (и уж тем более быстрых) изменениях не стоит и мечтать, если под рукой нет удобного инструмента для управления этими сайтами, блогами, порталами, шопами, дорами, сателлитами и прочей, приносящей такие желанные монетки, шнягой.
Вот тут на первое место и выходят всякие CMS (Content Management System - системы управления содержимым сайта).
Существует их превеликое множество самых разных сортов и видов. Различаются они в основном функциональностью, направленностью и размерами. Есть как "заточенные" под какой-то один вид "деятельности" (блог, форум или магазин), так и универсального характера. Размеры тоже колеблются в очень широких пределах.
Так, например, Joomla после установки на сервер "сожрет" около 10-15 мегабайт (и это только пустой мотор, без единого документа, не имеющий ни одной страницы). Зато один раз основательно пропотев при установке, потом пользоваться ей можно обучить даже неандертальца, т.к. знать всякие сетевые заморочки типа HTML или CSS для работы с этой CMS совсем не нужно - система достаточно грамотная, чтобы понять, что от нее хочет очередной сайто-строитель.
В то же время nano-CMS от Lasto представляет собой шедевр минимализма - установленная копия занимает чуть более 60 килобайт. Естественно, ожидать от такого движка глубоко интеллектуального подхода не приходится. Все, что он делает - это просто прикручивает кусок HTML-ного шаблона к пользовательскому контенту, получая таким образом готовую страницу сайта. Ну а что еще можно ожидать от мотора за 2 рубля? Не Бог весть какой, но для кого-то и этого будет вполне достаточно.
В общем выбрать есть из чего. И постоянно появляются все новые и новые. Значит развитие идет, следовательно есть к чему стремиться. А это означает, что существующие все же далеко не так хороши, как того хотелось бы потребителям. О как.
Большинство разработчиков "серьезных" CMS едины в одном: они ориентируются на неподготовленного пользователя своих продуктов. И потому стараются максимально упростить жизнь такому ламеру. Концепцию можно было бы назвать "Pay-and-Play" - никаких сетевых знаний и умений иметь вовсе не обязательно, поставил и пользуйся на здоровье. К сожалению, на этом прелести всех опробованных мной сайто-моторов и заканчивались.
Дальше - только недостатки:
Первый и самый главный недостаток - практически никакая SEO-оптимизация.
Давно известно, что искалки совершенно по-разному относятся к статическим страницам сайта и к динамическому (изменяющемуся) контенту. Одним нравится одно, другим другое, но как-то так сложилось, что наиболее теплые чувства поисковики испытывают именно к статике. А вот страницы, что генерирует большинство CMS'ов, как раз являются динамическими.
Вторым аспектом гарантированной беззаветной любви search engines к сайту является физическое расположение контента внутри страницы. Тут многое зависит от дизайна (надеюсь про верстку DIV'ами слышали?). Но даже при таком подходе, движек обычно накладывает некоторые ограничения и поэтому гибкости и свободы в расположении контента на странице все равно недостаточно.
Все это означает, что поисковые системы конечно же найдут и проиндексируют сайт на таком движке, но вот восторга, переходящего в эйфорию, они от этой индексации не испытают. Для обычного информационного сайта это, возможно, и не очень важно, но для настоящего мани-мэйкера попадание в топ серпа искалок - первоочередная причина ночной мигрени. И исправить положение не так-то просто (если вообще возможно). Часто выходит так, что для приведения генерируемых CMS страниц к более-менее удобоваримому, с точки зрения SEO, виду, надо переписать половину движка. А оно нам надо?
Второй недостаток - размеры.
Как уже говорилось выше, типовая CMS, имеющая достаточно возможностей для удовлетворения потребностей рядового киберсанта, "весит" примерно 3-8 мегабайт. Это пустой мотор. Когда же он начнет наполняться контентом, свободное место на хосте станет исчезать не по дням, а по часам. А если учесть, что рядовому мани-мейкеру нужно иметь пару десятков сателлитов или доров - относительно небольших сайтов, полный размер контента которых не переваливает за 1-2 мегабайта, то становится понятно, что разворачивать такого "монстра" ради пары мегабайт реальной информации совсем не хочется. Здесь бы подошло что-то ультра простое, маленькое и шустрое.
Третий недостаток - скорость работы.
Большая CMS умеет много чего делать, но чем больше функций, фишек и примочек заложили в нее разработчики, тем тормознее она будет. Факт. И опять же этот факт идет в разрез с требованиями зарабатывателя сетевых денег. Процесс "законного отнимания банковских билетов" предусматривает пропускание через свой сайт десятков тысяч посетителей за сутки и каждый из них должен быть "обслужен" максимально быстро, ибо ленивы и капризны оне. А потому скорость - важная составляющая любого манимейкерского сайта.
Четвертый недостаток - использование баз данных.
Практически 99% CMS используют БД. Оно и понятно - скорость, удобство, простота. Но вот когда встает проблема размещения десятков мини-сайтов, то эти положительные качества волшебным образом трансформируются в отрицательные.
Смотрите сами, для сайта, который будет содержать 4-5 сотен страниц совсем не обязательно покупать полу-гектарный хостинг. Скорее наоборот, следует купить самый дешевый и маленький, метров на 5-7. Этого вполне будет достаточно. Но вот хостер - скотина такая - для таких малых объемов не дает доступа к БД: "Нужен MySQL? покупай 300 мегабайт!"
Результат - переплата за заведомо лишнее место на сервере только из-за того, что мотор сайта не может обойтись без MySQL. Кроме того, если сайт может обходиться без использования БД, то резервное копирование сводится к простому копированию файлов с сервера (обычному скачиванию, которым каждый из нас занимается чуть ли не каждый день).
Пятый недостаток - сложная смена дизайна.
Опять же, если человеку требуется только один сайт (например личный блог, форум или магазин), то вполне можно обойтись стандартными шаблонами дизайна. В крайнем случае можно несколько дней попотеть и прикрутить свой уникальный дизайн. Но вот если количество сайтов начинает измеряться десятками, то создание персонального дизайна для каждого из них становится настоящим кошмаром.
Шестой недостаток - излишняя навороченность.
Для популяризации и распространения своей CMS создатели должны наделить ее максимумом возможностей, сделать как можно более универсальной. В результате возникает "эффект продуктов Microsoft" - от версии к версии ОНО становится все больше и больше, хотя работу выполняет туже самую, что и раньше.
Вторым последствием такой универсальности является блокировка работы посторонних скриптов, расположенных на том же хосте/домене. Иногда из-за этого приходится отказываться от использования, в общем-то не плохой, CMS. Это печально, но исправить положение в большинстве случаев не представляется возможным.
Выходит что, если для сайта-дора нужен движек, который просто будет "держать" несколько сотен статичных страниц, то в этом движке становятся абсолютно лишними всякие функции голосования, комментирования, а также блоги, форумы, магазины, порталы и прочая шняга. В результате имеем китайский складной мега-ножик с кучей встроенной фигни, из которой используется только штопор, но в котором не хватает так нужной нам отвертки и всунуть ее в этот набор никак нельзя.
Седьмой недостаток - полное (или почти полное) отсутствие анализа работы.
Может я чего-то упустил, но ни один из виденных мной движков не давал сколько-нибудь полной (и полезной) статистики работы сайта. Большинство CMS не утруждают себя даже тупым подсчетом количества посетителей. Про всякие поисковые запросы, источники трафика и анализ популярности страниц можно даже не вспоминать. Поставил CMS - зарегистрируй сайт в куче каталогов, обвешай страницы счетчиками и будет тебе счастье. Только не горячись, когда увидишь, что показания всех этих счетчиков различаются так же, как жизнь, которую показывают в телевизоре, и зрелище реалий за окном.
Потому, что одним для учета посетителя требуется загрузка банера (rambler), другие используют для этого блоки java-script (liveinternet). А если серфер запретил загрузку картинок или выполнение java-скриптов, то он остается невидимым для таких счетчиков. Этакий призрачный серфер. Кроме того, ни один из приклеенных к страницам счетчиков не покажет вам, сколько и каких ботов посетило ваш сайт и какие именно страницы они нюхали и когда это произошло.
Следовательно даже при наличии десятка счетчиков реальной картины увидеть все равно не удастся, можно лишь что-то куда-то усреднять и строить догадки. Но на догадках много денег заработать может только гидрометцентр, обычного же мани-мейкера подобное поведение быстро превратит в "бывшего мани-мейкера".
Восьмой недостаток - сложность расширения.
Написание дополнительных модулей к любому софту - занятие довольно муторное. CMS'ы тут не исключение. Было бы очень здорово, если бы движку можно было подсунуть любой (ну или почти любой) PHP-файл и он (движек) смог бы с этим файлом нормально ужиться. Но, к сожалению, обычно выходит так, что проще найти другую CMS, уже имеющую нужную функциональность, чем доработать используемый движек. Ибо очень капризны оне.
Девятый недостаток - отсутствие ограничивающих мер.
Максимум, что доводилось встречать в CMS - ограничение на доступ к некоторым частям сайта для определенных групп пользователей. Это здорово, но имеет, так сказать, прикладной характер. Огромную пользу от этой штуки можно поиметь, например, в блоге, магазине или форуме.
Мани-мейкера же скорее интересует системное применение этих запретов. А именно: запрет на доступ к сайту с определенных IP-адресов или указанных хостов. Так же ему необходимы средства отслеживания нежелательных запросов и меры борьбы с ними. Например, блокирование частичного или полного выкачивания сайта с помощью разных даунлоадеров, противодействие попыткам автоматического воровства информации другими CMS'ами и т.д.
Все описанное показывает как сложно сделать выбор среди десятков CMS, тем более, что на практике выбора практически и нет. Каждая из виденных мной CMS обладала минимум пятью из описанных мной девяти недостатков. Вывод напрашивается сам собой - надо писать свой CMS!
И вот, что я хочу от него добиться:
- Максимальная оптимизация под поисковые системы ("управляемое" расположение контента в странице, облегченный дизайн, генерация псевдо-статических страниц)
- Минимальные размеры как движка, так и хранимых на сервере данных.
- Максимально высокая скорость работы. Оптимизация всех операций, кэширование, индексация данных для ускоренного доступа.
- Отсутствие необходимости использования баз данных (MySQL). Все данные будут храниться в обычных файлах на сервере.
- Максимально упрощенная схема смены дизайна. В идеале к движку можно будет прикрутить абсолютно любую "морду".
- Модульность архитектуры. Есть ядро (основа движка) и есть набор абсолютно независимых друг от друга модулей, которые можно отключать/подключать по мере необходимости, уменьшая размер CMS и увеличивая скорость ее работы.
- Статистика всего, что только можно получить с помощью PHP. Для подсчета посетителей не будут использоваться ни загрузка картинок, ни java-script'ы. Вся необходимая информация будет браться прямо с сервера хоста.
- Анализ обращений, с определением автоматических грабберов контента и прочих бесполезных инициаторов запросов.
- Максимально упрощенная схема создания дополнительных модулей расширения функциональности. Все должно быть предельно просто и позволять очень быстро адаптировать практически любой скрипт для работы "под движком".
- Средства ограничения доступа с сайту. Блокировка как отдельных доменов, так и целых под-сетей. Возможность определения и блокировки запросов от программ-качалок, грабберов контента, сайт-даунлоадеров и прочих нежелательных пожирателей трафика.
- Возможность легкой модернизации ядра (например, при необходимости адаптации для работы с MySQL)
- Возможность "мирного" сосуществования с другими скриптами в пределах одного хоста/домена.
- Максимальная оптимизация под поисковые системы ("управляемое" расположение контента в странице, облегченный дизайн, генерация псевдо-статических страниц)
В завершение скажу, что работа по созданию этого чуда уже начата. Более того, оно уже дышит и даже пытается встать на ноги. :)
Надеюсь, что эта поделка не станет очередным серым типовым CMS'ом, а окажется полезным так активно расширяющейся армии сетевых бизнесменов.
Бросаем курить. Самый простой способ.
Мало кто поверит, что можно бросить курить очень легко, не мучая себя, не употребляя дорогие (и вредные для здоровья) лекарства, не прибегая к кодированию и прочим глупостям. Я тоже не верил, пока сам не убедился. Я, как и множество моих друзей воспользовались этим супер-простым способом и избавились от этой вредной привычки.
Что для этого надо? Надо просто прочесть книгу!
Не верите? Ну чтож, на то есть Ваше право. Но попробовать стоит - от Вас ведь не убудет и хуже все равно не станет. Так что качайте сей супер-бук, читайте и БРОСАЙТЕ эту гнусную привычку, БРОСАЙТЕ КУРИТЬ!
Ссылка для скачивания: Аллен Карр. Легкий способ бросить курить.
Чтобы скачать книгу на свой компьютер щелкните правой кнопкой мыши на ссылке и в появившемся меню выберите пункт "Сохранить как..." или "Сохранить объект...". Затем просто выберите папку, куда будет сохранен файл и нажмине кнопку "ОК" или "Сохранить".
Оптимизируем мышиную возню
Одной из главных причин появления неудобных интерфейсов является тот факт, что разработчик как правило никогда сам не пользуется своей программой. По крайней мере использует ее в основном во время отладочного тестирования, а значит далеко не так активно, как заказчик. Именно отсюда и растут ноги проблемы - взгляды разработчика и конечного пользователя на "удобство" интерфейса зачастую диаметрально противоположны.
Самое смешное, что ни один из них не может аргументированно доказать правоту своих взглядов. Заказчик мотивирует тем, что его работники привыкли к тому-то и тому-то и потому хотят и дальше работать не переучиваясь. Разработчик, в свою очередь, утирает заказчику нос, объясняя, что работать с клавиатурой - анахронизм, на дворе 21 век, эти подходы устарели и его (разработчика) контора использует только новейшие достижения и перспективные технологии. А потому им лучше знать, что и как будет для пользователя удобнее. Но такие диалоги бывают только у продвинутых заказчиков. Большинство же "типовых клиентов" даже не подозревает какую важную роль играет интерфейс.
Итак, какими же особенностями должен обладать удобный интерфейс? Как уже было сказано в предыдущих постах, чем большим количеством устройств ввода приходится пользоваться юзеру для работы с программой, тем менее удобен такой интерфейс.
Большинство компьютеров в наше время оборудовано всего двумя такими устройствами - мышью и клавиатурой, но даже два устройства хуже, чем одно. Поэтому разработчик еще на этапе проектирования должен четко определить, какое устройство в его программе будет приоритетным.
Вот некоторые мысли, которые помогут значительно улучшить интерфейс ориентированный на использование мыши:
На панелях окон желательно разместить максимальное количество кнопок различных действий
Естественно, в первую очередь это должны быть кнопки наиболее часто употребляемых команд. Кнопки должны быть сгруппированы по типам действий, иметь привычные значки и краткие но понятные подсказки. В подсказках обязательно должны указываться горячие клавиши команды (если такие есть).
Меню должны иметь как можно меньше вложенных подменю
Лучше сделать больше пунктов главного меню с одной выпадающей менюшкой в каждом пункте,чем все команды загнать в одно меню с кучей вложенных подменю. Старайтесь избавить пользователя от лишних кликов.
Должны быть максимально задействованы все доступные кнопки мыши
Не забывайте, что бывают одинарные и двойные клики, а также можно отслеживать комбинации нажатых кнопок мыши (например, одновременно нажатые правая и левая кнопки). Это существенно расширяет количество выполняемых с помощью мыши команд.
В качестве примера приведу некоторые "находки" интерфейса графического редактора CorelDRAW! и сравню их с Adobe Photoshop:
- чтобы создать копию объекта, схватите его левой кнопкой мыши, оттащите и, не отпуская левую кнопку, щелкните правой. При этом исходно-захваченный объект вернется на свое место, а у вас "в руках" окажется его копия, которую вы можете тащить дальше.
В фотошопе, для создания копии нужно ЗАРАНЕЕ нажать Shift, т.е. кроме мыши используется еще и клавиатура и кроме того, нельзя выполнить копирование в процессе перетаскивания. - левый клик приводит к выделению объекта. При этому вокруг объекта появляются контрольные квадратики, тягая которые можно передвигать и масштабировать объект. Повторный левый клик по уже выделенному объекту меняет контрольные квадраты на контрольные стрелки, с помощью которых можно поворачивать и наклонять объект.
В фотошопе для активации режима трансформации приходится лезть в меню (Edit - Free Transform) или нажимать комбинацию Ctrl+T. Правда одновременно с масштабированием можно еще и поворачивать объект. Но зато для переключения в другие режимы (например для наклона объекта) приходится делать правый клик по объекту и выбирать нужный режим из выпадающего меню. - масштабирование с нажатой Ctrl дает изменение масштаба кратное 100%, т.е. 100%, 200%, 300%, -100% (отражение).
Насколько я знаю, в PhotoShop такую операцию мышью сделать нельзя. - и т.д. Этот список можно еще долго продолжать.
- чтобы создать копию объекта, схватите его левой кнопкой мыши, оттащите и, не отпуская левую кнопку, щелкните правой. При этом исходно-захваченный объект вернется на свое место, а у вас "в руках" окажется его копия, которую вы можете тащить дальше.
Клики мыши следует комбинировать с нажатием клавиш "Shift", "Ctrl", "Alt"
Это так же увеличит функциональность грызуна. Не забывайте, что даже с таким "скромным" набором элементов управления можно выстраивать очень хитрые комбинации типа: схватить объект левой кнопкой мыши, тащить объект с нажатой Ctrl + клики правой кнопкой.... :)
Может показаться, что такие последовательности пользователи вряд ли выучат и скорее всего не будут ими пользоваться. Но на самом деле здесь все зависит от логики поведения клавиш и мышиных кнопок. Если описанная комбинация будет в мозгу пользователя выстраиваться во вполне осмысленную логическую цепочку действий, то подобные выкрутасы не нужно будет даже документировать - пользователи сами их найдут и будут активно использовать.
Для вышеописанного выше "китайского кода" может быть такое, например, объяснение:
- левой кнопкой хватаем и тащим объекты по экрану;
- клавиша Ctrl позволяет тащить строго по горизонтали или вертикали;
- клик правой кнопкой вызывает создание копии объекта в текущей позиции. т.е. мы делаем множественное копирование.
Как видите, все вполне логично и моментально запоминается.
Естественно нужно максимально использовать возможности мыши по позиционированию
Используйте мышь для передвижения и масштабирования окон и их зон, перемещения объектов. Часто даже матерые пользователи забывают (а многие об этом и не догадываются), что объекты можно таскать не только левой кнопкой, но и правой и даже средней. Например, в проводнике (Microsoft Windows Explorer) перетаскивание файла левой кнопкой вызовет действие по умолчанию (перемещение или копирование, в зависимости от того что и куда тащите), а перетаскивание того же файла правой кнопкой позволит самостоятельно выбрать действие: копировать, переместить или создать ярлык.
Везде где можно используйте возможности технологии "Drag-and-Drop"
Пользователю гораздо удобнее схватить объект и перетащить его в корзину или в другое окно, чем отметить объект и потом лазить по пунктам меню (или по многочисленным тулбарам) в поисках команды удаления/переноса.
Очень полезными бывают расположенные в окне "зоны посадки". В роли этих зон могут работать даже обычные кнопки тулбара. Например, было бы здорово, если бы в текстовом редакторе существовала возможность выделить кусок текста и перетащить его на кнопку принтера, тем самым послав на печать ТОЛЬКО выделенный текст. Согласитесь, это очень удобно.
Очень желательно реализовать грамотное поведение окон
Окна, которые знают в какой момент им следует появиться на экране, а в какой исчезнуть - отличные помощники в работе. Посмотрите, как действуют окошки, расположенные по краям главного окна в среде Microsoft Visual Studio. Но это вовсе не предел. Эту идею можно еще очень долго развивать.
Например, если пользователь ввел курсор мыши в поле контрола DropDownList (который не поддерживает ввод с клавиатуры, а просто позволяет выбирать варианты из списка возможных), то почему бы этому контролу не развернуться не дожидаясь пока пользователь кликнет по нему? Точно так же, он должен сам свернуться, как только курсор мыши покинул его - пользователь видимо передумал делать выбор.
Но с реализацией такого поведения не следует переусердствовать - всегда должна быть возможность отключить автоматику и позволить пользователю самому решать, что и когда должно быть видимо у него на экране.
В некоторых случаях стоит подумать о поведении, которое можно назвать "запоздалым исчезновением".
Это то, чего сильно не хватает стандартному меню "Пуск" операционной системы Microsoft Windows. Идея состоит в том, чтобы окно меню исчезало не сразу после клика по его пунктам, а с некоторой задержкой. Таким образом пользователь, однажды развернув меню, сможет активировать сразу несколько пунктов. Меню должно исчезнуть только после того, как мышь его покинет.
Пример: я, собираясь поработать в интернете, запускаю сразу несколько приложений: броузер, почтовый клиент, ICQ, какую-нить скачивалку. И для каждого запуска мне приходится повторять одни и те же действия: "Пуск" - "Все программы" - "Интернет" - и т.д. Описанное выше "запоздалое исчезновение" позволяет избавиться от этих абсолютно ненужных телодвижений.
Позвольте пользователю закреплять немодальные окна.
В современных версиях оболочки Gnome для Linux существует гениальная по простоте и супер-полезная функция. Там можно установить атрибут "Поверх всех окон" (Always On Top) для абсолютно любого окна. В операционной системе Microsoft Windows лично мне очень сильно не хватает такой функции.
Закрепление вложенных меню.
Еще одна классная идея касательно мышиного управления и меню подсмотрена мною в LiteStep. Там есть возможность закрепить на экране любое вложенное меню, т.е. сделать его независимым и не исчезающим. Получается этакий меню-подобный тулбар рабочего стола. И таких менюшек можно навешать столько сколько нужно. Это на самом деле бывает офигенно удобно. Респект создателям!