Впечатления от CMF Drupal. Часть 1.

1 Сентябрь 2009

Некоторое время назад появился у меня заказ на создание одного небольшого сайтика. Задача вроде бы на первый взгляд была не сложная, но клиент упирал на то, что в дальнейшем после запуска этого проекта он будет в значительной степени расширяться, наполняться функционалом, наворачиваться, короче. Соответственно встал вопрос реализации - как, на чем, с помощью чего делать. Мой друг и коллега (имеющий значительно больший опыт в работе над интернет-проектами) предложил мне рассмотреть вариант использования движка Drupal для разработки этого проекта.

Основные аргументы выглядели примерно так:

  1. На этом движке за вечер можно нормальный сайт накидать.
  2. Если разберешься, можно на Друпале такие вещи делать…
  3. По сравнению с Joomla значительно проще.

Трудно сказать, какой из аргументов был более убедителен для меня. Наверное, все три в равной степени. За первый аргумент сразу зацепилась моя природная лень - если за вечер можно нормальный сайт сделать, то остальные несколько вечеров можно посвятить праздному безделью (на которое последнее время совсем нет времени). Второй аргумент пришелся по душе желанию заниматься действительно серьезными делами, приносящими серьезные деньги. Третий аргумент - тут сыграл свою роль тот факт, что не за долго до этого я решил немного изучить движок Joomla, а точнее попробовать написать под него какой-нибудь более или менее сложный модуль. Возможно, люди, пишущие под Joomla со мной не согласятся, но мне показалась архитектура модулей (а также принципы их написания), скажем так, несколько тяжеловесной и трудной для понимания. Опять же не исключаю, что если бы я уделил изучению Joomla несколько больше времени, то смог бы уловить общую архитектуру движка и системы модулей, но тем не менее на тот момент двиг мне показался очень трудным.

Итак, учтя приведенные выше аргументы, я решил попробовать изучить CMF Drupal.

Установка

 Собственно установка движка почти не составила труда. Правда пришлось немного покопаться (почитать) с его руссификацией (оказалось, что есть несколько способов). В остальном - все просто. Качнул и установил последнюю версию Denwer-а (тоже, кстати, замечательный инструмент, когда надо сделать какой-нибудь сайт или просто позагоняться с каким-нибудь скриптом, а организовывать под это хостинг и тратиться на заливку/перезаливку файлов не хочется), качнул последнюю версию движка и файлов руссификации, создал виртуальный хост на денвере, залил туда движок и руссик, зашел на созданный виртуальный хост… И все. Дальше, что называется, интуитивно понятный пользовательский интерфейс, установка практически в несколько кликов (сразу вспомнились Windows Installer, Wise и прочие, где установка сводится в большинстве случаев к нажатию несколько раз кнопки Next).

Hello World Drupal

Сейчас, поработав несколько месяцев с этой системой, я понимаю, что правильнее всего было бы начать с изучения особенностей самого движка. Ноды, таксономия, стандартные модули и т.п. Это самый правильный и самый простой и быстрый путь к изучению данной CMF. Но я избрал другой путь (возможно, ошибусь, но многие программисты, особенно те, у которых еще не так много реального опыта в создании серьезных проектов, где сначала нужно все проработать, и лишь потом уже кодить, выбирают именно этот путь, когда начинают изучать какой-то новый язык или новую платформу) - путь Hello World. Т.е. я решил попробовать создать минимальный модуль, добиться, чтобы Drupal его увидел, и чтобы сам этот модуль что-нибудь выдал мне на экран.

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

После этого появились первые впечатления, которые можно примерно выразить так: “покопаться, конечно, придется, и не мало, но если разобраться - все делается легко и просто”. В общем на первый взгляд практически ничего сложного.

Работа с БД

Закончив с первым этапом и разобравшись процентов на 50 с движком (так мне тогда казалось - наивный житель крайнего севера) я понял, что пора бы уже приступать к серьезной работе, т.е. к выполнению заказа. Этот проект, как и любой другой мало-мальски сложный проект, нуждался в хранении некоторых данных. Соответственно, пришла пора разбираться с возможностями Drupal по работе с MySQL, а также с файлами install и uninstall. Снова не смог не провести параллель с привычными пакетами установки, которые создают все необходимое для работы при установке и удаляют все свои следы (ну или почти все) в процессе деинсталляции. И опять же все оказалось до жути просто. Все необходимые для работы модуля таблицы и поля тупо забиваются в массивы. Вся дальнейшая работа по выборке и изменению данных практически аналогична стандартным php-шным функциям для работы с MySQL.

Тут стоить особо выделить слово практически. Отличие заключается в возможности создания параметризованных запросов, повышающих безопасность работы с данными. Идея заключается в том, что все значения, которые скрипт передает в запрос, проходят через модуль ядра Друпала, отвечающий за работу с данными, который их фильтрует и преобразует с тем, чтобы исключить возможные SQL-инъекции и прочие неприятные моменты.

Общие впечатления: “просто, привычно, красиво… и, блин, наконец-то можно спокойно работать с данными, не навешивая на каждую процедуру кучу проверок для безопасности этой работы”.

Поиск информации

После двух этапов амбиции мои по поводу знаний движка начали очень медленно снижаться (вот они, наконец, те 50%, о которых я думал ранее). Появилась цель поискать побольше хорошей информации и примеров по работе с Drupal. Ничего сложного, подумал я, откывая сразу несколько поисковых систем. Но не тут-то было! Информации на самом деле оказалось много. Даже очень много. Но вся беда в том, что действительно структурированного и систематизированного источника информации я так и не нашел. Попалась одна неплохая книжка, посвященная пятому Drupal, но оказалось, что при переходе на шестую версию CMF была настолько сильно переработана, что многие примеры и Step-by-Step руководства из книжки просто отказывались работать (приходилось рыть в стандартных модулях движка, чтобы найти примеры реализации тех или иных возможностей и адаптировать взятые из книжки примеры под шестую версию).

В итоге при поиске конкретных решений конкретных проблем приходилось собирать по крупицам близкие к теме примеры, модули, записи в форумах и блогах, и соединять их вместе.

Впечатления (коротко): “с миру по нитке (с)”.

Немного про спам…

27 Декабрь 2008

Наверное, было бы правильнее, если бы мой коллега по этому блогу написал пост про спам. Но ему не до мелочей. А у меня возникло желание что-нибудь написать. А возникло это желание в результате открытия странички модерирования комментов к этому самому блогу. 100% спама. На самом деле не мудрено, т.к. блог абсолютно не раскрученный, новые посты появляются не часто, хотя надо бы писать. Правда, как сказал один умный человек, писать надо не тогда, когда надо, а только тогда, когда хочется, т.е. тогда, когда, скажем так, душа требует. И тем не менее я отвлекся.

Так вот. Про комменты к этому блогу. “Какой интересный блог!”, “Дайте ссылку на другие статьи этого автора”, “Случайно открыл и задержался надолго!”. Капец. Интересно, те кто спамят блоги, хоть иногда хоть на один из проспамленных блогов заглядывают? Как можно НАДОЛГО задержаться на блоге, на котором всего 3-5 постов??? Как можно судить об авторе, прочитав (а на самом деле не прочитав) всего две-три его статьи? Причем статьи не на 20-25 страниц, а скорее на 20-25 строк)))

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

Спам в аське - вот это совсем достало. Причем, почему-то так сложилось, что по аське спамят в основном порносайты. Видимо, e-mail реклама подобных сайтов перестала быть эффективной по каким-то причинам, поэтому они переключились на спам в интернет-пейджерах. Тут на самом деле без комментариев. Аська, как и любой другой интернет-пейджер - это средство общения, как просто с друзьями, знакомыми и незнакомыми (которые периодически начинают стучаться, если не сидишь в инвизе), так и с деловыми партнерами. Причем, последнее время заметил, что среди всех интернет-пейджеров сервис icq стал наиболее популярным для деловой переписки, перегнав даже Skype с его возможностью голосового и видео общения, а также с его защищенным перезащищенным протоколом. В общем все. Без комментариев.

Пост получился бестолковый. На самом деле я его начал для одной единственной цели - написать вот это:

Товарищи спамеры блогов! Зря стараетесь! Если хотите получить ссылку на свой сайт, оставляйте действительно осмысленные комменты, комменты, которые жалко будет удалить, которые только украсят этот блог. Запомните: чтобы получить результат надо плотно поработать, в том числе и головой, а не заставлять работать ботов, тем более, скорее всего, написанных не вами, а скаченных из инета. Вот так-то)))

Немного про общий доступ к интернету (продолжение)

28 Октябрь 2008

Итак, как я писал ранее, среди вариантов работы маршрутизаторов есть прямая маршрутизация и вариант преобразования сетевых адресов (NAT). Для раздачи интернета на практике используется именно второй вариант. Он реализуется в системах Windows двумя способами:

1)  С использованием так называемого “Общего доступа к Интернету” (свойства сетевого подключения - последняя вкладка - галочка, которая “расшарит” это подключение, а также сделает ряд дополнительных, зачастую абсолютно лишних действий: организация псевдо DHCP-сервера, на который будет ругаться настоящий DHCP-сервер, если появится в этой сети; установка адреса подключения по локальной сети в 192.168.0.1 и проч.). Честно - вещь дурная. Плюс только один - позволяет “расшарить” интернет на машине, на которой стоит не серверная система. Т.е. соответственно есть как в серверных системах (Windows Server 2003/2008/SBS 2003), так и в клиентских (Windows XP/Vista).

2) С использованием сервиса “Маршрутизация и удаленный доступ”, представленного в серверных системах (Windows Server 2003/2008/SBS 2003). Более интересный и продуманный механизм, позволяющий помимо раздачи интернета настраивать маршрутизацию между различными подсетями, организовывать VPN-соединения и проч.

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

Существует достаточно много программных продуктов, позволяющих решить проблемы контроля, учета и квотирования маршрутизируемого трафика, отличающихся по цене, общим принципам, направленности. Остановимся для примера на двух из них - это Traffic Inspector от Smart-Soft и Microsoft Internet Security and Acceleration Server (MS ISA Server).

Первый из указанных выше программных комплексов представляет собой достаточно простую и удобную в использовании биллинг-систему, работающую на основе NAT. Организован на базе клиент-серверной архитектуры, т.е. на шлюзе интернета устанавливается сервер, управляющий общим доступом к интернету, а на клиентских компьютерах ставятся небольшие агенты, которые организуют канал связи с сервером, аутентификацию пользователя, а также позволяют пользователю оперативно следить за активностью своего использования интернета. Подходит в первую очередь для небольших организаций, т.к. имеет достаточно приличные возможности для контроля и учета интернет-трафики и при этом не очень дорого стоит. Кроме того, может быть установлен как на серверную операционную систему, так и на не-серверную (Windows XP, к примеру).

Вторая система - это продукт, который ориентирован в первую очередь на достаточно крупные организации. Причем, что интересно, не смотря на то, что система имеет достаточно простой и дружественный интерфейс (речь идет о ISA 2006, с которым мне приходится сталкиваться), ее достаточно тяжело настроить так, как необходимо, не имея некоторых начальных знаний и некоторого опыта работы с ней. Другими словами, придется потратить некоторое количество времени, перечитать некоторое количество литературы, форумов и прочего прежде чем Вам удастся добиться того, что Вам необходимо. Но это достаточно небольшая плата за то, что Вы будете иметь в конечном итоге, когда все получится. Среди минусов этой системы можно выделить абсолютно дурацкие формы отчетов, невозможность квотирования и шэйпинга трафика. Эти проблемы решаются путем покупки и установки дополнительных программных средств (фильтров), устанавливающихся на ISA сервер.

Немного про общий доступ к интернету

15 Август 2008

В настоящее время Интернет стал неотъемлемой частью работы огромного количества современных организаций. Кто-то ищет в Интернете информацию, кто-то контактирует с партнерами, кто-то размещает там рекламу и прочее. Причем зачастую доступ в Интернет требуется определенному количеству сотрудников компании, тогда как канал доступа обычно представлен в единственном числе (что правильно, если только не требуется резервных каналов для поддержания постоянно активного подключения).

В связи с этим сразу возникает вопрос: как, имея один единственный канал доступа, раздать Интернет необходимому количеству сотрудников организации? Как вести учет трафика? Как производить фильтрацию трафика? Как устанавливать квоты? И прочее…

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

Ближе к делу… Есть 2 пути решения подобных проблем:

1) Развертывание proxy-сервера, который будет самостоятельно (и единолично) работать напрямую с интернетом, пропуская через свои службы весь трафик от клиентов в сеть и обратно. При этом клиенты в большинстве случаев абсолютно уверены, что весь интернет находится прямо на этом сервере, что неудобно для программ, которые не имеют встроенного прокси-клиента (WebMoney Keeper, например), т.е не умеют напрямую работать с прокси-сервером.

2) Развертывание маршрутизатора. Данный вариант более удобен, т.к. в этом случае каждый клиент абсолютно уверен, что напрямую подключен к глобальной сети. Рассмотрим его подробнее.

Существует 2 варианта работы маршрутизатора:

1) Прямая маршрутизация, когда пакеты от узла одной подсети через шлюз напрямую передаются узлам другой сети. В этом случае получатель имеет полную информацию об отправителе пакета.

2) Network Address Translation (или NAT), когда в процессе пересылки пакета происходит подмена адреса отправителя или адреса назначения. Этот механизм очень похож на механизм proxy, т.е. внешние узлы не имеют ни малейшего представления о структуре внутренней сети, а также о том, кто послал пакет (все пакеты идут от шлюза, и ответ приходит на шлюз).

Продолжение следует…

Загрузить картинки и фотографии в один клик..

14 Август 2008

Представляю вам замечательный сервис http://www.picamatic.com - позволяющий загружать картинки и фотографии в один клик для дальнейшего их размещения в блогах, форумах.. или просто чтобы показать знакомым. Загружать картинки можно без регистрации, рекламы нет. Поддерживаемые форматы: JPEG, GIF, PNG. Максимальный размер файла: 3 мегабайта. Вобщем рекомендую всем.. даже тем, у кого есть куча собственного хостинга:)