<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0" xml:base="http://andyceo.ruware.com">
<channel>
 <title>Andyceo's Words</title>
 <link>http://andyceo.ruware.com</link>
 <description>Об IT (информационных технологиях), Drupal, бизнесе, социальных системах и структурах, и саморазвитии.</description>
 <language>ru</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AndyceosWords" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="andyceoswords" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc/3.0/</creativeCommons:license><item>
 <title>StyleWorks: Premium-стили для Photoshop (Учебный пример)</title>
 <link>http://andyceo.ruware.com/blog/andyceo/styleworks-premium-stili-dlya-photoshop-uchebnyi-primer</link>
 <description>&lt;p&gt;&lt;img src="/files/andyceo.ruware.com/content/images/photoshop-layer-styles.jpg" alt="Скриншот сайта Styleworks, Джона Форсита" width="354" height="276" style="float: left; margin-left: 15px; margin-right: 15px;" /&gt;&lt;/p&gt;
&lt;p&gt;Приветствую, дорогие читатели! Меня&amp;nbsp;впечатлила &lt;a href="http://drupal.org/node/882908" target="_blank"&gt;одна недавняя статья на drupal.org&lt;/a&gt; о разработке сайта по продаже кое-каких примочек к фотошопу. (На самом деле, меня впечатлило несколько статей, но об остальных я напишу позже, если вообще смогу выделить для этого время.) Вроде бы, ничего необычного в ней нет. Просто один человек, John Forsythe, решил, что &lt;em&gt;"пришло время приложить свои навыки, как Drupal-разработчика, в запуске нового бизнеса в Интернете"&lt;/em&gt;. Разумеется, своего бизнеса. И это правильно, я считаю! Пусть каждый Drupal-разработчик, будет иметь свой приносящий доход бизнес. А может, даже не один. Кого заинтересовал - читаем мой перевод этой статьи. Также хочу добавить, что перевел и некоторые показавшиеся мне толковыми комментарии к статье, что добавило статье живости и полезных сведений.&lt;/p&gt;
&lt;p&gt;В марте этого года, я решил, что пришло время приложить свои навыки, как Drupal-разработчика и запустить новый бизнес в Интернете. Я рано понял, что хочу, чтобы этот бизнес был ориентирован на продажу продукта, и после нескольких недель поигрывания с различными идеями, я остановился на &lt;a href="http://photoshoplayerstyles.com/" target="_blank"&gt;продаже премиум-слоев Photoshop&lt;/a&gt;. Это была прекрасная возможность сочетать в себе любовь к фотографии и Photoshop с моей страстью к веб-разработкам и Drupal.&lt;/p&gt;
&lt;p&gt;Спустя несколько месяцев разработки, родился &lt;a href="http://photoshoplayerstyles.com/" target="_blank"&gt;StyleWorks&lt;/a&gt;. Сайт работает на Drupal 6, а также интегрируется с FastSpring для реализации электронной коммерции.&lt;/p&gt;
&lt;p&gt;&lt;!--break--&gt;&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Проектирование сайта: Zen или не Дзен?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;После сотен итераций дизайна в Photoshop, я, наконец, получил представление о том, чего хотел, и пришло время, чтобы оно ожило в Drupal. Но сперва нужно было сделать ключевое решение: начать с нуля, или использовать &lt;a href="http://drupal.org/project/zen" target="_blank"&gt;Zen&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Традиционно, я всегда делал свои дизайны "с нуля". Я что-то вроде наркомана по оптимизации, и люблю писать &lt;a href="http://drupal.org/project/a3_atlantis" target="_blank"&gt;действительно легкий код&lt;/a&gt; (Раньше я был более категоричен в этом, чем сейчас. Правда, когда я писал &lt;a href="http://drupalmodules.com/" target="_blank"&gt;DrupalModules.com&lt;/a&gt;, я избегал использования вещей вроде &lt;a href="http://drupal.org/project/cck" target="_blank"&gt;CCK&lt;/a&gt;, предпочитая вместо этого писать собственные модули). Поэтому, когда я впервые посмотрел на тему Zen несколько лет назад, мое первое впечатление было "блин, ты только посмотри на весь этот лишний код! Почему здесь так много стилей"? *Удалил*&lt;/p&gt;
&lt;p&gt;С тех пор, Zen стала дико популярной, став темой № 1 на Drupal.org. Я всегда объяснял эту популярность растущей аудиторией не-разработчиков Drupal, но, услышав несколько положительных отзывов на недавней встрече Drupal-разработчиков, я решил дать Zen еще одну попытку.&lt;/p&gt;
&lt;p&gt;Вердикт? Да, там огромное количество стилей. Да, тонны кода. Но на самом деле, все работает довольно хорошо. CSS является гибким и хорошо спроектированным, и ему удается оставаться кроссбраузерным, даже после основательного переделывания.&lt;/p&gt;
&lt;p&gt;Что я имею в виду под гибкостью? Вот пример:&lt;/p&gt;
&lt;p&gt;Когда в середине проекта я решил перейти от одноколоночного макета к макету из двух колонок, мне не нужно было переписывать код, Zen позаботился об этом. А потом, когда я решил отказаться от первого дизайна и дать сайту совершенно другой вид, я смог осуществить это всего лишь несколькими правками, внесенных в исходный код.&lt;/p&gt;
&lt;p&gt;Ясно, что я недооценил Zen.&lt;/p&gt;
&lt;p&gt;Однако, гибкость Zen приходит благодаря нескольким компромиссам.&lt;/p&gt;
&lt;p&gt;Если вы привыкли все стили класть в один длинный CSS файл, дзенский шквал в 30+ стилей может поначалу вас немного расстроить. Там отдельные CSS-файлы для практически всего (фоны, страницы, вкладки, формы, поля и т.д.). К счастью, для большинства из этих файлов редко возникает необходимость редактирования, так что фактическое количество стилей, которые вы будете править одновременно, ближе к 6, чем к 30.&lt;/p&gt;
&lt;p&gt;Строгое разделение правил CSS в Zen является немного неэффективным для меня. Я не уверен, что есть реальная польза в разделении стилей фона и границ для одного DIV`а в два различных файла. С таким количеством файлов, может быть сложно отслеживать, какие правила в каком файле (я нашел, что Firebug будет очень полезным в этом отношении).&lt;/p&gt;
&lt;p&gt;Гибкая конструкция колонок также имеет некоторые недостатки. Если вы думаете об изменении размера макета, будьте готовы к небольшому экскурсу в школьную математику. Вам придется складывать и вычитать значения в нескольких местах, чтобы отрицательные отступы работали как прежде. Это объясняется достаточно хорошо в комментариях к коду, но раздражает необходимость проделывать&amp;nbsp;это&amp;nbsp;каждый раз, пока вы экспериментируете с размерами колонок.&lt;/p&gt;
&lt;p&gt;Несмотря на все эти причуды (некоторые из которых дошли до личных предпочтений), я должен сказать, что Zen в общем-то оказался хорошим выбором, и я рассмотрю возможность его использования для моего следующего проекта.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Выбор разметки&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Так как стили слоев для Photoshop −&amp;nbsp;это в первую очередь визуальный продукт, мне нужен макет, который может вместить большое количество изображений, в то же время оставляя место для описания продукта. Итак, я решил работать с простым двухколоночным макетом: изображения продуктов слева, описательный текст справа.&lt;/p&gt;
&lt;p&gt;Вопрос только в том, как получить текст и изображения в отдельных столбцах. Я посмотрел на целый ряд различных решений для работы с разметкой, в том числе &lt;a href="http://drupal.org/project/panels" target="_blank"&gt;Panels&lt;/a&gt; и &lt;a href="http://drupal.org/project/composite" target="_blank"&gt;Composite Layout&lt;/a&gt;, но ни один из них не счел достаточно подходящим.&lt;/p&gt;
&lt;p&gt;В идеале, я просто хотел бы использовать столбцы (регионы) темы Zen. Один из способов сделать это заключается в использовании блоков, но я не хочу создавать новый блок для каждой страницы на сайте!&lt;/p&gt;
&lt;p&gt;Вот тогда я и обнаружил модуль &lt;a href="http://drupal.org/project/nodesinblock" target="_blank"&gt;Nodes in Block&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nodes in Block&amp;nbsp;позволяет создавать специальные блоки, которые динамически отображают контент на основе текущего пути. Например, можно настроить один и тот же блок, чтобы он показывал опрос или рекламу, в зависимости от того, где пользователь находится на сайте. Контроль того, что проявляется в блоке, осуществляется с помощью настроек видимости для ноды (это очень похоже на стандартную настройку видимости блока).&lt;/p&gt;
&lt;p&gt;Так что я создал тип контента для изображений продуктов, а другой тип контента для описания продуктов, и использовал Nodes in Block, чтобы получить их оба на одной странице (изображения в основной области контента, описания в боковой панели через блок). Это работало, но разделение продукта на две различных ноды далеко от идеала.&lt;/p&gt;
&lt;p&gt;Тогда у меня появилась умная идея отображения одной и той же ноды в обеих областях. Все, что мне необходимо было сделать, это проверить переменную &lt;code&gt;$node-&amp;gt;nodesinblock&lt;/code&gt; в шаблоне ноды, и я мог контролировать, какие поля и на какой части страницы будут выводиться.&lt;/p&gt;
&lt;p&gt;Заставить ноду отображаться два раза было достигнуто путем установки в ноде настройки видимости модуля "Nodes in Block" на свой собственный путь.&lt;/p&gt;
&lt;p&gt;&lt;img src="/files/andyceo.ruware.com/content/images/nodes-in-block-visibility.png" alt="Настройки видимости модуля Nodes in Block" width="404" height="341" style="float: right; margin: 10px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Структура нод&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Благодаря решению использовать модуль Nodes in Block, я был в состоянии объединить изображения и описания продукта в общий тип содержания, названного "демо-версия продукта". Сам по себе этот тип контента является достаточно простым, опирается только на текст и файлы.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Текстовые поля:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Полное наименование&lt;/li&gt;
&lt;li&gt;Краткое наименование&lt;/li&gt;
&lt;li&gt;Подзаголовок&lt;/li&gt;
&lt;li&gt;Короткое описание&lt;/li&gt;
&lt;li&gt;Полное описание&lt;/li&gt;
&lt;li&gt;Характеристики продукта&lt;/li&gt;
&lt;li&gt;Цена&lt;/li&gt;
&lt;li&gt;Ссылка на корзину&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Файловые поля:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Изображение для краткого описания (файл)&lt;/li&gt;
&lt;li&gt;Демо-изображения (файл)&lt;/li&gt;
&lt;li&gt;Изображения текстур (файл)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сайт также использует традиционный тип контента "страница" (слегка видоизмененный, содержащий поле файла для изображений). Ноды типа "страница" используются в основном для не-продуктов, например, страниц "О сайте" и "Лицензия", но в конечном итоге я также использовал его для страницы группы продуктов, так как она не очень вписывается в тип контента "демо-версия продукта". В конце концов, я могу создать другой тип содержимого для этих специальных страниц продаж.&lt;/p&gt;
&lt;p&gt;&lt;img src="/files/andyceo.ruware.com/content/images/styleworks-layout.jpg" alt="Разметка StyleWorks (макет страницы)" width="304" height="733" style="float: right; margin: 10px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Переопределение строк&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;При создании сайта, я заметил, что некоторые фрагменты текста необходимо будет повторить в нескольких различных местах по всему сайту. Описание того, что происходит после покупки, например, нужно будет показать в середине каждой странице продукта. Фраза "Загрузить сейчас" также повторяется во многих местах, но что, если я захочу изменить ее в дальнейшем?&lt;/p&gt;
&lt;p&gt;&lt;img src="/files/andyceo.ruware.com/content/images/string-override-settings.png" alt="Настройки модуля String Overrides" width="404" height="176" style="float: right; margin: 10px;" /&gt;&lt;/p&gt;
&lt;p&gt;Как правило, эти кусочки текста в конце разработки можно жестко запрограммировать в шаблонах, но я действительно хотел, чтобы они оставались редактируемыми в Drupal. Моим решением было использовать &lt;a href="http://api.drupal.org/api/function/t" target="_blank"&gt;функцию Drupal t()&lt;/a&gt;, а также приятный маленький модуль, который называется &lt;a href="http://drupal.org/project/stringoverrides"&gt;String Overrides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Теперь я просто включаю этот небольшой фрагмент кода, в мой шаблон ноды...&lt;/p&gt;
&lt;p&gt;&lt;span class="geshifilter"&gt;&lt;code class="php geshifilter-php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; t&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'after_purchase'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;... и у меня есть описание, которое может быть мгновенное обновлено на всем сайте, непосредственно из Drupal.&lt;/p&gt;
&lt;p&gt;Я подозреваю, что могут быть и другие (лучшие?) способы сделать это, но метод String Overrides был элегантен и его было быстро реализовать.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Установка системы электронной коммерции&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Одной из целей этого проекта было избежать суеты, обычно связанной с началом открытия сайта электронной торговли. Торговые счета, соблюдение PCI и платежные шлюзы, это все не мой выбор хорошо провести время.&lt;/p&gt;
&lt;p&gt;Просматривая несколько малых бизнес-форумов, я все видел рекомендации по FastSpring, платформе электронной коммерции, которая обрабатывает все от приема кредитных карт к предоставлению загрузки файлов. Они даже позаботяться о сборе соответствующих налогов.&lt;/p&gt;
&lt;p&gt;По-видимому, FastSpring был именно тем, что я искал, поэтому я решил дать ему выстрелить. Я смог зарегистрироваться в течение нескольких минут, а пару дней спустя, у меня была онлайн полная линейка продуктов, готовых к покупке.&lt;/p&gt;
&lt;p&gt;Интеграция корзины FastSpring с моим сайтом было легким. Я добавил ссылку "просмотреть корзину" в меню Primary Links и создал новое текстовое поле CCK для моих продуктов "ссылка на корзину". Поле "Ссылка на корзину" есть просто URL, которое контролирует, куда передается форма "добавить в корзину" (каждый продукт имеет различный целевой URL). Когда пользователь нажимает кнопку "Добавить в корзину", он направляется непосредственно на защищенный сервер FastSpring, где он может осуществить заказ, или продолжить покупки (в этом случае, они возвращаются на мой сайт).&lt;/p&gt;
&lt;p&gt;Я все же еще новичок в FastSpring, но первый опыт прошел на удивление гладко.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Helvetica, Arial, sans-serif; font-size: 17px;"&gt;Производительность: Жизнь с 512 МБ памяти&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Поскольку это был сайт электронной торговли, я чувствовал, что важно, чтобы он работал на своей собственной (виртуальной) машине. В настоящее время сайт размещается на 512MB VPS, работает под Ubuntu 9.10.&lt;/p&gt;
&lt;p&gt;512MB является довольно небольшим объемом памяти на сервере, так что правильно настроить систему было очень важно. Если серверу не хватает памяти, она начинает обращаться к файлу подкачки, эффективно убивая всю производительность.&lt;/p&gt;
&lt;p&gt;Первым шагом было остановить Apache от создания слишком многих процессов. Вот ключевые настройки (я использую режим Prefork):&lt;/p&gt;
&lt;pre&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;StartServers &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;
MinSpareServers &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;
MaxSpareServers &lt;span style="color: #cc66cc;"&gt;10&lt;/span&gt;
MaxClients &lt;span style="color: #cc66cc;"&gt;13&lt;/span&gt;
MaxRequestsPerChild &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;
KeepAlive Off &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;С максимумом в 13 одновременных подключений, важно отключить поддержку подключения (KeepAlive), иначе посетители надолго застрянут в ожидании свободного слота во время пикового трафика.&lt;/p&gt;
&lt;p&gt;Далее, я оптимизировал файл настроек MySQL, используя рекомендации от отличного &lt;a href="http://blog.mysqltuner.com/" target="_blank"&gt;скрипта-тюнера MySQL&lt;/a&gt; (отредактировано: Далин предлагает &lt;a href="https://launchpad.net/mysqltuner" target="_blank"&gt;эту переделанную версию&lt;/a&gt;). Вот самое важное:&lt;/p&gt;
&lt;pre&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;key_buffer &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 32M
sort_buffer_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 4M
read_buffer_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 4M
read_rnd_buffer_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 4M
myisam_sort_buffer_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 4M
query_cache_limit &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 1M
query_cache_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 16M
max_allowed_packet &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 16M
thread_stack &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 192K
thread_cache_size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;8&lt;/span&gt;
max_connections &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;20&lt;/span&gt;
table_cache &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;1024&lt;/span&gt;
skip&lt;span style="color: #339933;"&gt;-&lt;/span&gt;innodb&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;И наконец, я установил &lt;a href="http://xcache.lighttpd.net/" target="_blank"&gt;XCache&lt;/a&gt;, кешер байткода PHP, и настроил его так:&lt;/p&gt;
&lt;pre&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;xcache&lt;span style="color: #339933;"&gt;.&lt;/span&gt;size &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 16M
xcache&lt;span style="color: #339933;"&gt;.&lt;/span&gt;&lt;span style="color: #990000;"&gt;count&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;
xcache&lt;span style="color: #339933;"&gt;.&lt;/span&gt;slots &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 8K&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;Кроме того, я включил агрессивное кэширование страниц в Drupal, кэширование блоков, сжатие страниц, CSS-оптимизацию, и JS-минификацию через модуль &lt;a href="http://drupal.org/project/javascript_aggregator" target="_blank"&gt;JavaScript Aggregator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;В целом, усилия по оптимизации были успешными. В день запуска, на сайт поступило более 6000 запросов с популярного сайта социальных сетей, а сервер в целом оставался очень отзывчив.&lt;/p&gt;
&lt;h3&gt;Список модулей&lt;/h3&gt;
&lt;p&gt;Из-за ограничений памяти 512MB, я старался держать количество установленных модулей как можно ниже. В конце концов, мне удалось получить список до 17 именно этих (некоторые из которых в настоящее время отключены, такие, как Devel).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Связанные с содержанием:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content (CCK)&lt;/li&gt;
&lt;li&gt;FileField&lt;/li&gt;
&lt;li&gt;ImageField&lt;/li&gt;
&lt;li&gt;Text (Part of CCK)&lt;/li&gt;
&lt;li&gt;Nodes in Block&lt;/li&gt;
&lt;li&gt;String Overrides&lt;/li&gt;
&lt;li&gt;Insert&lt;/li&gt;
&lt;li&gt;Token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SEO и производительность:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Global Redirect&lt;/li&gt;
&lt;li&gt;Page Title&lt;/li&gt;
&lt;li&gt;JavaScript Aggregator&lt;/li&gt;
&lt;li&gt;Google Analytics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Средства разработчика:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Administration menu&lt;/li&gt;
&lt;li&gt;Devel&lt;/li&gt;
&lt;li&gt;Backup and Migrate&lt;/li&gt;
&lt;li&gt;Database Logging&lt;/li&gt;
&lt;li&gt;Update status&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;КОММЕНТАРИИ К СТАТЬЕ&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;adrianmak - 14 августа 2010 - 6:52:&lt;/strong&gt;&lt;/em&gt; Можете ли вы рассказать больше о том, как использовать Nodes in Block, для разделения вывода различных полей ноды, в разные части страницы (это связано с регионами?)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - 14 августа 2010 - 7:06:&lt;/strong&gt;&lt;/em&gt; Главное, установить оператор if в вашем шаблоне ноды node-type.tpl.php. Мой код выглядит примерно так:&lt;/p&gt;
&lt;pre&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;// ### normal output ### ?&amp;gt;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #339933;"&gt;!&lt;/span&gt;&lt;span style="color: #000088;"&gt;$teaser&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: #339933;"&gt;!&lt;/span&gt;&lt;span style="color: #990000;"&gt;isset&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;nodesinblock&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
    &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;
      &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;foreach&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;field_demoimages&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;as&lt;/span&gt; &lt;span style="color: #000088;"&gt;$images&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
          &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; &lt;span style="color: #000088;"&gt;$images&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'view'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
      &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
      &amp;lt;div class=&amp;quot;links&amp;quot;&amp;gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; &lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;field_demonode&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'nid'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;// ### node-in-block output ### ?&amp;gt;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;elseif&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #339933;"&gt;!&lt;/span&gt;&lt;span style="color: #000088;"&gt;$teaser&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: #990000;"&gt;isset&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;nodesinblock&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
    &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;
      &amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; l&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;field_shorttitle&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'safe'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'node/'&lt;/span&gt;&lt;span style="color: #339933;"&gt;.&lt;/span&gt;&lt;span style="color: #000088;"&gt;$nid&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&amp;lt;/h1&amp;gt;
      &amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; &lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;field_subtitle&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'safe'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&amp;lt;/h2&amp;gt;
&amp;nbsp;
      &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; &lt;span style="color: #000088;"&gt;$node&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;field_longtext&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'view'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
      &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;// (etc...) ?&amp;gt;&lt;/span&gt;
    &lt;span style="color: #339933;"&gt;&amp;lt;/&lt;/span&gt;div&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;endif&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;Таким образом, в зависимости от того, установлена ли переменная $node-&amp;gt;nodesinblock, мы печатаем различные поля CCK.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;patcon - 15 августа 2010 - 1:04:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Отличное учебное пособие, Джон! Не представлял, что модуль Nodes in Block может быть настолько универсален!&lt;/p&gt;
&lt;p&gt;Есть одна мысль, однако: не рассматривал ли ты возможность использования модуля &lt;a href="http://drupal.org/project/ds" target="_blank"&gt;Display Suite&lt;/a&gt;, для избежания необходимости пользовательской переделки шаблонов? Nodes in Block интегрируется с Display Suite так, что он обеспечивает новый "режим построения" ("build mode") в разделе "Показать поля" ("Display fields") конкретного типа контента (в дополнение к стандартным RSS, Basic, Search и Token). Таким образом, вместо создания шаблона с условным отображением полей, проверяя $node-&amp;gt;nodesinblock, вы можете просто скрыть некоторые поля в &lt;em&gt;Content type &amp;gt; Display fields &amp;gt; Basic &amp;gt; Full node&lt;/em&gt;, и скрыть альтернативный набор полей в режиме построения Nodes in Block.&lt;/p&gt;
&lt;p&gt;Я хочу сказать, что преимущество будет в том случае, что если кто-то захочет добавить поле или переместить его между колонками, тогда он мог бы сделать все это с помощью интерфейса "Показать поля" ("Display fields"), без необходимости переопределения шаблонов.&lt;/p&gt;
&lt;p&gt;Эй, вы же упомянули, что любите простоту, так что я пойму, если вы намеренно избегали добавления нового модуля к проекту! Все же я думаю, это может помочь кому-то с другими потребностями :)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Diegen - 29 августа 2010 - 13:20:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Привет.&lt;/p&gt;
&lt;p&gt;Представления (Views) и несколько tpl смогли бы сделать это для вас? Я вовсе не говорю что мое решение лучше, я только любопытствую.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - August 29, 2010 - 13:53:&lt;/strong&gt;&lt;/em&gt; Есть много способов сделать это.&lt;/p&gt;
&lt;p&gt;Конечно. Представления (Views), Панели (Panels), Composite Layout, Contemplates... Они все работают, с некоторыми небольшими доработками. Я смотрел на множество решений, но Nodes in Block поразил меня своей простотой. На самом деле, все это может быть сделано вообще только через CSS, не требуя каких-либо модулей. Каждое решение имеет свои преимущества и недостатки, компромиссы между мощностью, сложностью и гибкостью.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;chx - August 14, 2010 - 07:05:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Почему модуль Nodes in Block?&lt;/p&gt;
&lt;p&gt;Свой модуль (с очень малым) количеством строк кода, мог бы это сделать, не так ли? Также, если уж вы хотите хорошо сэкономить память, отключите Devel и включайте только когда вы действительно нуждаетесь в нем, что на продакшене должно случаться редко.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - August 14, 2010 - 07:17:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Свой модуль (с очень малым) количеством строк кода, мог бы это сделать, не так ли?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nodes in Block небольшой модуль по сравнению с большинством других. Он требует всего несколько строк кода в шаблона с моей стороны, чтобы получить результат, который я хочу, и это экономит мне время написания и отладки своего собственного решения. В старое время, я бы, наверное, написал новый модуль просто чтобы увидеть, что я могу сделать в 70 строк то, что Nodes in Block делает в 700, но сейчас я доволен, оставляя работающее решение нетронутым.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Также, если уж вы хотите хорошо экономить памяти, отключите Devel и включайте только когда вы действительно нуждаетесь в нем, что на продакшене должно случаться редко.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Devel отключен, как я уже говорил:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;(некоторые из которых в настоящее время отключены, такие, как Devel)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;jurgenhaas - 15 августа 2010 - 6:49:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Спасибо John Forsythe за статью, действительно есть пара вещей, чему поучиться. Превосходно.&lt;/p&gt;
&lt;p&gt;Все же есть один вопрос: рассматривали ли вы возможность использования модуля &lt;a href="http://drupal.org/project/boost" target="_blank"&gt;Boost&lt;/a&gt;? Я сам так сделал несколько месяцев назад и получил выдающееся повышение производительности. Это выглядит как очень надежное решение и делает потрясающую работу.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - 16 августа 2010 - 21:57:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Вот мой опыт работы с Boost:&lt;/p&gt;
&lt;p&gt;Измеряя производительность сайта локально, Boost дал более чем вдвое высокую производительность, с 1100 запросов в секунду до 2700 запросов в секунду.&lt;/p&gt;
&lt;p&gt;Однако, когда тестирование проходило с удаленного компьютера, производительность оставалась неизменной на уровне около 260 запросов в секунду.&lt;/p&gt;
&lt;p&gt;Причина? При включенном агрессивном кэшировании в Drupal, время генерации страницы отлично держится около 10 мс. Даже если Boost будет в 10 раз быстрее, он сможет срезать лишь 9 мс от общего времени запроса.&lt;/p&gt;
&lt;p&gt;В основном, узким местом является скорость работы сети, а не генерация страницы, поэтому увеличение производительности бэкенда не имеет никакого эффекта с точки зрения пользователя.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;themegarden.org - 16 августа 2010 - 9:13:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Привет Джон, большая работа, поздравляем!&lt;/p&gt;
&lt;p&gt;Каким провайдером VPS вы пользуетесь? Linode?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - 16 августа 2010 - 20:27:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Да, я начал с Linode 512, это хороший выбором для проектов, которые не очень подходят для виртуального хостинга. VPS.net также выглядит неплохо, но у меня еще не было времени для их изучения.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Stevo_0 - 24 августа 2010 - 4:05:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Мне интересно узнать, почему вы не используете Ubercart, довольно простой в использовании, особенно для чего-то вроде продажи загружаемых файлов, и вы могли бы принимать заказы, используя только Paypal, чтобы не напрягать себя нахождением платежных шлюзов и т.д. Интересно посмотреть в сторону этой альтернативы. Каковы издержки выбора FastSpring?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JohnForsythe - 24 августа 2010 - 4:40:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;Я не люблю полагаться на PayPal, особенно для цифровых товаров. Я слышал слишком много ужасных историй. Они огромная компания, и у меня нет никаких рычагов влияния, если они решат вдруг заморозить мой аккаунт.&lt;/p&gt;
&lt;p&gt;Основным бизнесом FastSpring является продажа цифровых товаров. Они работают с корзиной, биллингом, налогами, выполнением и т.д. Есть даже интеграция с Google Analytics E-commerce! Мне не нужно беспокоиться обо всем этом. Я просто загружаю свою продукцию, и все сделано. Чувствуется, что там гораздо меньше того, что может пойти не так. Но это всего лишь несколько недель, поэтому мы посмотрим.&lt;/p&gt;
&lt;p&gt;Об экономии, они берут 5,9% плюс $1, или 8,9% (на выбор). Там нет платы за регистрацию, за наличие магазина и т.д.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;altrugon - 24 августа 2010 - 19:35:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;О Zen&lt;/p&gt;
&lt;p&gt;Zen это замечательная тема для использования в качестве основы, и это факт, что в настоящее время Zen 2.0 использует несколько CSS-файлов, чтобы сделать тему более гибкой и понятной.&lt;/p&gt;
&lt;p&gt;Подход, при котором вы используете только один большой файл CSS для всего кода хорош только тогда, когда вы являетесь единственным, работающим с этим кодом, но как только чужие руки залезут внутрь, дела пойдут дико. Под дикостью я имею в виду то, что они просто пойдут в конец файла и вывалят там то, что им нужно.&lt;/p&gt;
&lt;p&gt;Если никто не делает так при работе с PHP или HTML, почему мы должны позволять такое в CSS?&lt;/p&gt;
&lt;p&gt;Во всяком случае, поздравляю вас с проектом, и вы можете быть уверены, что будете чувствовать себя все более комфортно с Zen, больше используя ее.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Оригинал:&lt;/strong&gt;&amp;nbsp;&lt;a href="http://drupal.org/node/882908" target="_blank"&gt;Case Study: StyleWorks Premium Photoshop Styles&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Автор перевода:&lt;/strong&gt; &lt;a href="http://andyceo.ruware.com/o-saite"&gt;andyceo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; В &lt;a href="http://www.fastspring.com/" target="_blank"&gt;FastSpring&lt;/a&gt; можно загрузить пользовательские CSS/XHTML шаблоны, чтобы сделать корзину более похожей на ваш сайт.&lt;/p&gt;
</description>
 <comments>http://andyceo.ruware.com/blog/andyceo/styleworks-premium-stili-dlya-photoshop-uchebnyi-primer#comments</comments>
 <category domain="http://andyceo.ruware.com/moi-interesy/kompyutery-i-programmirovanie/drupal-cmf-cms">Drupal CMF CMS</category>
 <category domain="http://andyceo.ruware.com/tegi/drupal-showcase">drupal showcase</category>
 <category domain="http://andyceo.ruware.com/tegi/opisanie-razrabotki-saita-na-cms-drupal">описание разработки сайта на CMS Drupal</category>
 <category domain="http://andyceo.ruware.com/tegi/uchebnyi-primer">учебный пример</category>
 <wfw:commentRss>http://andyceo.ruware.com/crss/node/319</wfw:commentRss>
 <pubDate>Tue, 14 Sep 2010 17:36:05 +0000</pubDate>
 <dc:creator>andyceo</dc:creator>
 <guid isPermaLink="false">319 at http://andyceo.ruware.com</guid>
</item>
<item>
 <title>Мои доклады на несостоявшийся апрельский DrupalCamp 2010</title>
 <link>http://andyceo.ruware.com/blog/andyceo/moi-doklady-na-nesostoyavshiisya-aprelskii-drupalcamp-2010</link>
 <description>&lt;p&gt;Всем привет. Жаль, конечно, что &lt;a href="http://drupal.ru/node/42946"&gt;DrupalCamp перенесся&lt;/a&gt;. Но ничего не поделаешь. Вашему вниманию я представляю тезисы докладов, которые я мог бы прочитать на кемпе. Интересно было бы знать ваше мнение, что осветить подробнее, что - убрать (что неинтересно), что хотелось бы вам услышать.&lt;/p&gt;
&lt;p&gt;По темам кратко:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Что такое корпоративный сайт: его цели, задачи, структура&lt;/li&gt;
&lt;li&gt;Инсталляционные профили в Drupal 6.x&lt;/li&gt;
&lt;li&gt;Недостатки Drupal 6.x. Баги и ошибки&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Доклад на тему "Разработка корпоративных сайтов на Drupal 6.x"&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Автор: Андреев Андрей Андреевич, andyceo@yandex.ru&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h5&gt;Тезисы:&lt;/h5&gt;
&lt;p&gt;1. Что такое корпоративный сайт: его цели, задачи, структура.&lt;br /&gt;
1.1 Цели корпоративного сайта&lt;br /&gt;
1.2 Задачи, решаемые корпоративным сайтом&lt;br /&gt;
1.3 Возможная структура корпоративного сайта&lt;br /&gt;
2. Отображение структуры корпоративного сайта на архитектуру Drupal.&lt;br /&gt;
2.1 Архитектура Drupal&lt;br /&gt;
2.2 "Как сделать то или это в Drupal"&lt;br /&gt;
2.3 Выбор архитектурных решений для разработки сайта на Drupal (типовые решения часто встречающихся задач)&lt;br /&gt;
3. Разработка сайта&lt;br /&gt;
3.1 Из каких этапов будет состоять разработка сайта?&lt;br /&gt;
3.2 О чем надо помнить при разработке "работающего" решения (SEO-модули, разрешения для пользователей)&lt;br /&gt;
3.3 Программирование? Ну разве что совсем чуть-чуть :)&lt;br /&gt;
4. Заключение. Инсталляционные профили (тема следующего доклада).&lt;/p&gt;
&lt;h4&gt;Доклад на тему "Инсталляционные профили в Drupal 6.x"&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Автор: Андреев Андрей Андреевич, andyceo@yandex.ru&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h5&gt;Тезисы:&lt;/h5&gt;
&lt;p&gt;1. Введение. Обзор системы инсталляционных профилей&lt;br /&gt;
1.1 Структура и архитектура профилей. Хуки.&lt;br /&gt;
1.2 Drush Make&lt;br /&gt;
2. Недостатки текущей системы инсталляционных профилей.&lt;br /&gt;
2.1 Недостатки (большой объем кода, негибкость)&lt;br /&gt;
2.2 Недостатки модулей, используемых при установке (Devel Generate, Install Profile API, drupal_execute()). Описание недостатков и багов&lt;br /&gt;
2.3 Как настраивать сайт (модули) в текущей системе профилей?&lt;br /&gt;
3. Дальнейшее развитие системы инсталляционных профилей&lt;br /&gt;
3.1 Было бы здорово иметь предустановки, типов материалов, представлений, etc&lt;br /&gt;
3.2 Было бы здорово реализовать механизм наследования, как в темах&lt;br /&gt;
3.3 Объект? Да! Объект для инсталляционных профилей&lt;br /&gt;
4. Демонстрация работы объекта в инсталляционном профиле. (пока не уверен в этом пункте, т.к. объект находится в разработке. Непонятно, успею ли я его дописать до конференции)&lt;/p&gt;
&lt;h4&gt;Доклад на тему "Недостатки Drupal 6.x. Баги и ошибки"&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;(Название не окончательное, нужно будет заменить. Возможно, это блиц-доклад.)&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;Автор: Андреев Андрей Андреевич, andyceo@yandex.ru&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h5&gt;Тезисы:&lt;/h5&gt;
&lt;p&gt;1. Обзор архитектуры Drupal и других систем&lt;br /&gt;
1.1 Архитектура Drupal&lt;br /&gt;
1.2 Альтернативные архитектуры CMS&lt;br /&gt;
1.3 Берем лучшее, избавляемся от худшего&lt;br /&gt;
2. Баги Drupal&lt;br /&gt;
2.1 Подробные описания багов пришлю несколько позже, они у меня выписаны, но сейчас листочка перед глазами нет.&lt;/p&gt;
</description>
 <comments>http://andyceo.ruware.com/blog/andyceo/moi-doklady-na-nesostoyavshiisya-aprelskii-drupalcamp-2010#comments</comments>
 <category domain="http://andyceo.ruware.com/moi-interesy/kompyutery-i-programmirovanie/drupal-cmf-cms">Drupal CMF CMS</category>
 <category domain="http://andyceo.ruware.com/tegi/drupalcamp">DrupalCamp</category>
 <category domain="http://andyceo.ruware.com/tegi/doklady">доклады</category>
 <category domain="http://andyceo.ruware.com/tegi/tezisy">тезисы</category>
 <wfw:commentRss>http://andyceo.ruware.com/crss/node/316</wfw:commentRss>
 <pubDate>Thu, 15 Apr 2010 13:04:58 +0000</pubDate>
 <dc:creator>andyceo</dc:creator>
 <guid isPermaLink="false">316 at http://andyceo.ruware.com</guid>
</item>
<item>
 <title>Google Developer Day - 2009</title>
 <link>http://andyceo.ruware.com/blog/andyceo/google-developer-day-2009</link>
 <description>&lt;p&gt;&lt;em&gt;Дорогие друзья, 10 ноября 2009 года я побывал на Google Developer Day - 2009. Да, было очень интересно, множество прекрасных докладов (жаль, не на всех секциях удалось побывать), общение с разработчиками и с ведущими инженерами Google!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;О впечатлениях напишу позже, и так, едва-едва нашел время черкнуть эту пару слов.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Дождались :) Наконец-то я разобрал свои записи и привел все в более-менее читабельный вид. С удовольствием предлагаю вашему вниманию свой отчет о посещении конференции  Google Developer Day 2009, 10.11.2009, Moscow!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Итак, поехали. Вот фотография разворота моего бейджика:&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;&lt;div style="text-align:center"&gt;&lt;a href="/files/andyceo.ruware.com/content/images/gddbage.jpg" title="Посмотреть большую фотку"&gt;&lt;img src="/files/andyceo.ruware.com/content/images/gddbage_small2.jpg" width="600" height="358" alt="gddbage_small2.jpg" align="center" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Простыми галочками отмечены доклады, которые я хотел посетить, а закрашенными треугольниками - доклады, на которых я реально побывал.&lt;/p&gt;
&lt;p&gt;Вот моя хронология:&lt;/p&gt;
&lt;p&gt;09:20 - 11:00 &lt;a href="#gdd1"&gt;Открытие конференции&lt;/a&gt;&lt;br /&gt;
11:00 - 12:00 &lt;a href="#gdd2"&gt;HTML 5 и будущее Интернета (Tech Talk), Марк Пилгрим&lt;/a&gt;&lt;br /&gt;
12:00 - 13:00 &lt;a href="#gdd3"&gt;Инструменты для вебмастеров, Елена Ковакина&lt;/a&gt;&lt;br /&gt;
12:30 - 14:30 ОБЕД (кормили вкусно)&lt;br /&gt;
14:00 - 15:00 &lt;a href="#gdd4"&gt;Как заинтересовать посетителя, Чуи Трюэлла&lt;/a&gt;&lt;br /&gt;
15:00 - 16:00 &lt;a href="#gdd5"&gt;Жадные алгоритмы и оптимизация ранжирования, Павел Карпович (Яндекс)&lt;/a&gt;&lt;br /&gt;
16:00 - 16:30 ПЕРЕРЫВ&lt;br /&gt;
16:30 - 17:30 &lt;a href="#gdd6"&gt;Google Wave API, Вадим Герасимов&lt;/a&gt;&lt;br /&gt;
17:30 - 18:30 &lt;a href="#gdd7"&gt;Венчурный капитал и инвестиции в стартапы&lt;/a&gt;&lt;br /&gt;
18:30 -  21:00 Общение :)&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd1"&gt;&lt;br /&gt;
&lt;h3&gt;Открытие конференции&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;br /&gt;
Замечательное и живое открытие. :)&lt;/p&gt;
&lt;p&gt;Открытие вел &lt;strong&gt;Эрик Толоме&lt;/strong&gt;, директор по менеджменту и маркетингу Google. Сначала он представил Марка Пилгрима, с докладом о HTML 5: Canvas, Video, GPS, Местоположение (показывали Firefox Share Location).&lt;/p&gt;
&lt;p&gt;Затем говорилось о разработке веб-ориентированных приложений, о том, что каждое такое приложение должно иметь Database + AppCache для своей успешной работы как в онлайне, так и в оффлайне.&lt;/p&gt;
&lt;p&gt;Очень интересный, но к сожалению, малопонятный мне доклад о Google Web Toolkit, Google App Engine с примерами работающего кода, написанного прямо за трибуной. Python я только планирую начать изучать, и крупных проектов с использованием этих технологий пока не делаю, поэтому была понятна только суть.&lt;/p&gt;
&lt;p&gt;Рассказ о браузерах вообще, и Google Chrome в частности, операционной системе Chrome OS и мобильных устройствах, также запал мне в душу, благодаря одной фразе о том, что 2009 год - революционный для мобильных устройств, т.к. именно в этом году число людей, впервые пришедших в интернет с мобильных устройств, превысило число таковых на десктоп-системах. Есть о чем задуматься и куда направлять стопы бизнесу.&lt;/p&gt;
&lt;p&gt;Затем &lt;strong&gt;Ларс Расмуссен&lt;/strong&gt; и &lt;strong&gt;Стефани Хэннон&lt;/strong&gt; презентовали Google Wave, замечательное Real-Time шоу, с показом работающей технологии, с видеодемонстрацией и шутками :)&lt;/p&gt;
&lt;p&gt;А Чуи Трюэлла все о своем, о разного сорта API от Google: GeoAPI, Analytic API и прочие, прочие, прочие )&lt;/p&gt;
&lt;p&gt;Затем выступил Евгений Савельев, основатель сервиса &lt;a href="http://wikimapia.org/"&gt;Wikimapia&lt;/a&gt;. Ему ассистировал его напарник, к сожалению имя его забыл. Коротко перескажу их историю, т.к. выглядит она интересно. Сначала им пришла идея, после того как на Flickr они увидели фотографию с высоты птичьего полета, с характерными для фоток "рамками" - отмеченными и подписанными зданиями и площадями, знаете, как порой выделяют человека на фото. Несколько дней ребята потратили на составление ТЗ, обратились к одному фрилансеру, ожидая, что он что-то сделает. Однако тот их продинамил, и они обратились к второму фрилансеру. Тот уже что-то смог написать, но это было далеко от того, что видели основатели будущего проекта ценой в миллионы долларов :). Они начали работать над проектом самостоятельно (причем не зная JavaScript, изучая его походу), и параллельно поставили на сайт (в тот момент уже начавший набирать популярность) рекламу Google AdSense и стали искать инвесторов. Но пока искали, реклама стала приносить ощутимую прибыль, и они смогли нанять дополнительный штат программистов для развития проекта.&lt;/p&gt;
&lt;p&gt;Сейчас проект посещают 600 тыс. человек в сутки, а команда проекта состоит из 6 человек.&lt;/p&gt;
&lt;p&gt;Вот такая история о том, как использование бесплатных API от Google помогает делать деньги буквально из ничего, подытожил Эрик Толоме.&lt;/p&gt;
&lt;p&gt;Закрывал открытие (да-да, именно так) Алексей Шелестенко, директор по маркетингу Google Россия.&lt;/p&gt;
&lt;p&gt;Замечательное и живое открытие. :) Хочу сразу ханжески заметить, что зарубежные гугловцы гораздо более профессиональны в части публичных выступлений, чем наши соотечественники. Речь наших англоговорящих "братьев по разуму" лилась плавно, были уместные шутки и взаимодействие с аудиторией, а из презентации Google Wave Ларс Расмуссен и Стефани Хэннон умудрились сделать целое шоу :) Вступительное слово Дмитрия Полухина, технического инженера Московского офиса Google, выступление Евгения Савельева, основателя Wikimapia, были неуверенными. Ну ничего, лихая беда начало.&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd2"&gt;&lt;br /&gt;
&lt;h3&gt;HTML 5 и будущее Интернета (Tech Talk), Марк Пилгрим&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Эту тему достаточно полно осветил Goga в своем &lt;a href="http://gogolev.net/node/114"&gt;отчете про GDD 2009&lt;/a&gt;. Кратко от себя скажу, что доклад больше напоминал зачитывание тегов, и после каждого тега докладчик делал паузу и аудитория задавала вопросы, в результате чего рассказать ему удалось только про теги &lt;code&gt;&lt;canvas&gt;&lt;/canvas&gt;&lt;/code&gt;, &lt;code&gt;&lt;video&gt;&lt;/video&gt;&lt;/code&gt;, &lt;code&gt;&lt;audio&gt;&lt;/audio&gt;&lt;/code&gt;. Также, для более полной картины могу посоветовать &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/"&gt;спецификации HTML 5&lt;/a&gt; и хорошую &lt;a href="http://webo.in/articles/all/2009/23-using-canvas/"&gt;статью об использовании Canvas&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd3"&gt;&lt;br /&gt;
&lt;h3&gt;Инструменты для вебмастеров, Елена Ковакина&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Одно из худших выступлений в плане формы, но не содержания, которые были на GDD 2009, т.к. докладчица просто не умела говорить совершенно: постоянно запиналась, и просто читала свою презентацию. В докладе было рассказано о достаточно тривиальных вещах, тем не менее, я считаю это полезным, повторение - мать учения. Кроме того, было и несколько новых для меня вещей.&lt;/p&gt;
&lt;p&gt;Основной вопрос, поднятый в докладе - &lt;strong&gt;как повысить "понятность" вашего сайта в глазах поискового робота Google?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Использовать &lt;a href="http://fredlwm.googlepages.com/lynx.zip" title="Скачать"&gt;браузер Lynx&lt;/a&gt; для просмотра того, как страница будет выглядеть для поискового бота.&lt;/li&gt;
&lt;li&gt;Работать с изображениями нужно так: название файла самого изображения должно быть говорящим, например, google_developer_day_2009.jpg, вместо DSCN6187.JPG. Файл можно назвать и по-русски, однако, лучше всего использовать транслитерацию. Обязательно нужно прописывать ALT атрибут для тега &lt;img /&gt;, где располагается краткое описание фото. И в конце концов, сам текст нужно окружать релевантным текстом.&lt;/li&gt;
&lt;li&gt;Работа с видео примерно аналогична работе с изображениями. Нужно размещать одно видео на страницу, выбирать в качестве скриншота к видео говорящую картинку (и обрабатывать ее так, как написано выше для картинок)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Навигация на сайте, должна быть основана на простом HTML, а если требуются изыски в виде разворачивающихся меню или AJAX-подгрузки, то это должно быть сделано не в ущерб HTML-версии документа.&lt;/p&gt;
&lt;p&gt;Для замены шрифтов хорошим решением является технология sIFR (&lt;a href="http://www.umade.ru/log/2005/07/any-font-on-website-sifr/" title="Почитать о технологии"&gt;ссылка 1&lt;/a&gt;, &lt;a href="http://sdelaisait.com.ua/using-sifr/" title="Почитать о технологии"&gt;ссылка 2&lt;/a&gt;), вместо сохранения текста картинкой, т.к. она оставляет исходный текст для поискового робота. Если уж пришлось на сайте сохранять текст в виде картинки, из-за нестандартного шрифта или его оформления (градиентный цвет, сглаживание), то нужно хотя бы прописать атрибут alt.&lt;/p&gt;
&lt;p&gt;При работе с Flash хорошо использовать решение SWFObject.&lt;/p&gt;
&lt;p&gt;При использовании Ajax, для ссылок лучше использовать ? вместо # - чтобы робот по этим ссылкам мог переходить.&lt;/p&gt;
&lt;p&gt;Для дублирующегося контента неплохо бы использовать &lt;a href="http://blogodom.ru/kanonicheskie-url/" title="Почитать об этом"&gt;канонические ссылки&lt;/a&gt;:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;link rel="canonical" href="http://blogodom.ru/kanonicheskie-url/" /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;URL должен содержать в себе основные ключевые слова (можно использовать транслит).&lt;/p&gt;
&lt;p&gt;Также докладчица посоветовала использовать новый сервис &lt;a href="http://www.google.com/alerts"&gt;Google Alerts&lt;/a&gt; и &lt;a href="http://www.google.com/webmasters/"&gt;инструменты для вебмастеров&lt;/a&gt;, правда в связи с чем - я уже не помню.&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd4"&gt;&lt;br /&gt;
&lt;h3&gt;Как заинтересовать посетителя, Чуи Трюэлла&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Чуи рассказывал о различных &lt;strong&gt;API Google&lt;/strong&gt;, и различных не менее интересных вещах. (немного отступлюсь и дам &lt;a href="http://hostinfo.ru/articles/web/rubric48/rubric55/1201/"&gt;ссылку на статью&lt;/a&gt; с небольшим списком Google APIs.) Много о каждом API говорить не буду, всю необходимую исчерпывающую информацию о них можно найти по приведенным ссылкам.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/intl/ru-RU/apis/analytics/"&gt;Analytic API&lt;/a&gt;&lt;/strong&gt;, &lt;a href="http://code.google.com/intl/ru-RU/apis/analytics/docs/gaJS/gaJSApi.html"&gt;документация&lt;/a&gt;, &lt;a href="http://habrahabr.ru/blogs/google/57945/"&gt;объявка на Хабре&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.google.com/accounts/ServiceLogin?hl=ru&amp;amp;service=websiteoptimizer&amp;amp;continue="&gt;Website Optimizer&lt;/a&gt;&lt;/strong&gt;, &lt;a href="http://www.seo-study.ru/stati/google-website-optimizer/"&gt;статья о том, как его использовать&lt;/a&gt;, &lt;a href="http://websiteoptimizer.blogspot.com/"&gt;блог разработчиков&lt;/a&gt;. &lt;a href="http://www.dserg.com/google-website-optimizer-2009-07-27.html"&gt;Сплит-тестирование при помощи Google Website Optimizer&lt;/a&gt;. Я этой штукой весьма загорелся, и уже приобрел себе русскоязычную книгу про нее.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maps API&lt;/strong&gt;: &lt;a href="http://code.google.com/intl/ru/apis/maps/articles/phpsqlsearch.html"&gt;Store Locator на PHP, MySQL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.google.com/webelements/"&gt;Web Elements&lt;/a&gt;&lt;/strong&gt; - небольшие блоки-виджеты на сайт от Google. &lt;a href="http://adsense-ru.blogspot.com/2009/11/google-web-elements.html"&gt;Раз статья&lt;/a&gt;, &lt;a href="http://www.programmableweb.ru/2009/05/google-web-elements.html"&gt;два статья&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/intl/ru-RU/apis/youtube/overview.html"&gt;Youtube Data API&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.googleapps.ru/2008/03/youtube-data-api.html"&gt;Старая новость об этом API&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru/apis/youtube/reference.html"&gt;Справка по API на русском&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google File System&lt;/strong&gt;. &lt;a href="http://habrahabr.ru/blogs/development/73673/"&gt;Статья 1&lt;/a&gt;, &lt;a href="http://labs.google.com/papers/gfs.html"&gt;статья 2&lt;/a&gt;, &lt;a href="http://www.opennet.ru/prog/sml/150.shtml"&gt;статья 3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxfeeds/"&gt;Ajax Feed API&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxfeeds/documentation/"&gt;Документация на русском&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://xhtml.ru/2007/05/03/ajax-feed-api-and-multiple-feeds/"&gt;Небольшой пример&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxsearch/"&gt;Ajax Search API&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxsearch/documentation/"&gt;Документация на русском&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://habrahabr.ru/blogs/google/25950/"&gt;Упоминание на хабре с кучей полезных ссылок в комментах и посте&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://googleajaxsearchapi.blogspot.com/"&gt;Блог проекта&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://anton.shevchuk.name/javascript/jquery-and-google-search-api-or-yahoo-search-api-yahoo-search-api/"&gt;Сравнение Yahoo и Google Search APIs&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://i-novice.net/google-ajax-search-api-rukovodstvo/"&gt;Пример&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://www.ibm.com/developerworks/ru/library/wa-ajaxintro9/index.html"&gt;Пример от IBM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Custom Search&lt;/strong&gt; - без комментариев, настолько старая тема, что должна быть известна всем IT-шникам.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxlanguage/"&gt;Language API&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru-RU/apis/ajaxlanguage/documentation/"&gt;Документация&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://query7.com/working-with-googles-language-apis"&gt;Короткий пример на английском&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://adw0rd.ru/2009/google-non-ajax-language-api/"&gt;Короткий пример на русском&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://www.rusdoc.ru/articles/prakticheskoe_primenenie_google_ajax_language_api--vstraivaem_perevodchik_v_svoj_proekt/16444/"&gt;Пример побольше на русском&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://googleajaxsearchapi.blogspot.com/2008/03/introducing-ajax-language-api-tools-for.html"&gt;Блог&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Весь этот ворох апи Чуи прицепил к теме того, как можно привлечь и удержать пользователя на сайте. Слушать его без&lt;br /&gt;
 перевода было трудно, т.к. он быстро говорит по-английски, но с переводом было еще труднее, т.к. переводчики реально запыхивались, и передавали микрофон друг другу, когда уставали. ) В целом могу сказать, что Чуи - позитивный и харизматичный чел. )&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd5"&gt;&lt;br /&gt;
&lt;h3&gt;Жадные алгоритмы и оптимизация ранжирования, Павел Карпович (Яндекс)&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Тут я бессилен хоть сколько-нибудь связно передать содержание этого доклада, т.к. почти каждый слайд содержал забористую формулу, да порой и не одну, а я в последнее время не очень часто имею с ними дело. Суть была в том, что Павел рассказывал о своем алгоритме ранжирования поисковых результатов, который является относительно (других алгоритмов) простым и быстрым. Желающие разобраться в этом вопросе могут скачать презентацию, заботливо выложенную в блоге замечательного оптимизатора-друпалера по имени Goga (вот его &lt;a href="http://gogolev.net/node/114"&gt;отчет&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a name="gdd6"&gt;&lt;br /&gt;
&lt;h3&gt;Google Wave API, Вадим Герасимов&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Такой достаточно обзорный доклад о новой технологии &lt;strong&gt;Wave&lt;/strong&gt; и новом продукте Google Wave. На этом Вадим заострял внимание, объясняя, что Wave - это новая технология связи, а Google Wave - это уже конкретный продукт от Google. Точно также, как есть электронная почта вообще (email) и GMail.&lt;/p&gt;
&lt;p&gt;Вначале было рассказано об устройстве волны, из чего она состоит, что в ней есть: волны, вейвлеты (всплески), роботы, виджеты, федерация. Это были базовые понятия, без которых нет возможности вести разговор об этом новом и перспективном виде телекоммуникаций. Гугловцы обещают поднять общедоступный Wave-сервер уже в 2010 году, стало быть, возможен быстрый рост интереса к данной теме в недалеком будущем.&lt;/p&gt;
&lt;p&gt;Когда я в кулуарах общался с Ларсем Расмуссеном, который сейчас является ведущим инженером Google Wave, я спросил его: как считает Google, будет ли волна новым и современным способом общаться, и не похоронит ли она почту и IP-телефонию (скайп, ага). На что Ларс с очаровательной улыбкой ответил, что Google работает над этим.)&lt;/p&gt;
&lt;div style="text-align:center;"&gt;&lt;a href="/files/andyceo.ruware.com/content/images/lars_rasmussen_hipnose.jpg" title="Посмотреть большую фотку"&gt;&lt;img src="/files/andyceo.ruware.com/content/images/DSC_0927_small.JPG" width="640" height="425" alt="DSC_0927_small.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
Ларс Расмуссен пытается обратить русскоязычных Друпалеров в Гугл-веру.
&lt;/div&gt;
&lt;p&gt;&lt;a name="gdd7"&gt;&lt;br /&gt;
&lt;h3&gt;Венчурный капитал и инвестиции в стартапы&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Под конец мы уже устали, и воспринимать этот доклад было достаточно трудно. Однако докладчики (их было трое, один - автор стартапа, другой - инвестор, который инвестировал деньги в этот стартап, и сотрудник Google. К сожалению, по именам я их не помню.)&lt;/p&gt;
&lt;p&gt;Рассказывалось о венчурных инвестиционных фондах, как надо идти к инвестору и что ему говорить, если у вас есть стартап, когда пора идти к инвестору. Все эти вопросы интересны, однако все рекомендации свелись к универсальной формулировке: каждый проект уникален, и в каждом случае надо смотреть отдельно.&lt;/p&gt;
&lt;p&gt;Честно говоря, доклад показался не очень интересным, хотя порой задавались хорошие вопросы и на них давались хорошие ответы. Так что наверное, больше сказывалась усталость.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Интересные ссылки:&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lib.custis.ru/index.php/GDD2009"&gt;Хороший Отчет о GDD2009&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.devclub.eu/2009/11/16/google-developers-day-2009-moscow/comment-page-1/"&gt;Отчет от devclub.eu&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://habrahabr.ru/blogs/google/74882/"&gt;Google Developer Day 2009 — хабра-отчет&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru/events/developerday/2009/home.html"&gt;Анонс конференции&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://googlerussiablog.blogspot.com/2009/11/google-developer-day-2009.html"&gt;Отчет от самого Google Россия&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru/events/developerday/2009/speakers.html"&gt;Список выступавших&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/ru/events/developerday/2009/agenda.html"&gt;Программа мероприятия&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Youtube ссылки:&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.youtube.com/googledevelopers"&gt;Канал Google Developers&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.youtube.com/GoogleRu#p/c/A1D96F3A45A28DCB"&gt;Канал Google Россия&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Отзывы друпалеров: &lt;a href="http://romka.eu/blog/google-developer-day-2009"&gt;Ромка&lt;/a&gt;, &lt;a href="http://gogolev.net/node/114"&gt;Goga&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align:center;"&gt;&lt;a href="/files/andyceo.ruware.com/content/images/lars_rasmussen_w_russian_drupalers.jpg" title="Посмотреть большую фотку."&gt;&lt;img src="/files/andyceo.ruware.com/content/images/lars_rasmussen_w_russian_drupalers_small.jpg" width="640" height="425" alt="lars_rasmussen_w_russian_drupalers_small.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
Ларс Расмуссен успешно обратил русскоязычных Друпалеров в Гугл-веру.
&lt;/div&gt;
</description>
 <comments>http://andyceo.ruware.com/blog/andyceo/google-developer-day-2009#comments</comments>
 <category domain="http://andyceo.ruware.com/tegi/development">development</category>
 <category domain="http://andyceo.ruware.com/tegi/gdd">gdd</category>
 <category domain="http://andyceo.ruware.com/tegi/google">Google</category>
 <category domain="http://andyceo.ruware.com/tegi/google-developer-day">google developer day</category>
 <category domain="http://andyceo.ruware.com/tegi/den-razrabotchika-google">День разработчика Google</category>
 <category domain="http://andyceo.ruware.com/tegi/programmirovanie">программирование</category>
 <wfw:commentRss>http://andyceo.ruware.com/crss/node/311</wfw:commentRss>
 <pubDate>Thu, 12 Nov 2009 21:50:06 +0000</pubDate>
 <dc:creator>andyceo</dc:creator>
 <guid isPermaLink="false">311 at http://andyceo.ruware.com</guid>
</item>
<item>
 <title>Мультиязычный сайт на Drupal и модуль WebForm</title>
 <link>http://andyceo.ruware.com/blog/andyceo/multiyazychnyi-webform</link>
 <description>&lt;p&gt;Столкнулся я как-то по работе с довольно популярным модулем для Drupal &lt;strong&gt;Webform&lt;/strong&gt;. Делали мы мультиязычный сайт, и требовалось создать мультиязычную форму - на русском и английском языках.&lt;/p&gt;
&lt;p&gt;Модуль &lt;a href="http://drupal.org/project/webform" title="Официальная страница модуля Webform"&gt;Webform&lt;/a&gt; сам по себе мультиязычность не поддерживает (см. &lt;a href="http://drupal.org/node/245424"&gt;Make Webform multilingual (i18n) aware&lt;/a&gt;). Однако, есть-таки возможность создать полностью мультиязычную форму, правда, для этого вам понадобится бубен и навыки программирования под Drupal.&lt;/p&gt;
&lt;p&gt;Здесь давайте немного остановимся и дадим определение "полной мультиязычности". Под полной мультиязычностью, в случае формы (webform`ы) нужно понимать, что при разных языках будут переведены:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Заголовок страницы с формой&lt;/li&gt;
&lt;li&gt;Описание формы&lt;/li&gt;
&lt;li&gt;Заголовки полей&lt;/li&gt;
&lt;li&gt;Описания полей&lt;/li&gt;
&lt;li&gt;Сообщение об успешной отправке&lt;/li&gt;
&lt;li&gt;Сообщения о неправильно заполненных полях (неуспешая отправка формы)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;В Drupal вся поддержка мультиязычности делиться на три основных слоя:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Перевод интерфейса (модуль ядра Locale)&lt;/li&gt;
&lt;li&gt;Перевод контента (модуль ядра Content Translation)&lt;/li&gt;
&lt;li&gt;Модуль &lt;a href="http://andyceo.ruware.com/i18n" title="Почитать о модуле"&gt;i18n&lt;/a&gt; для полного перевода сайта&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Что такое есть эти модули (слои), я надеюсь, читатель знает, и поэтому их описание останется за рамками статьи.&lt;/p&gt;
&lt;p&gt;Если бы мы делали нашу форму программно, т.е. написали бы модуль и создали бы там форму через Drupal Form API, то мы имели бы возможность перевести через слой "Перевод интерфейса" заголовки и описания полей формы, а также перевести заголовок страницы, на которой эта форма появляется (используя в нужных местах функцию t()).&lt;/p&gt;
&lt;p&gt;WebForm тоже так делает - он пропускает заголовки и описания полей формы через t(). Т.е. казалось бы, мы решили проблему перевода формы! Но... почти решили. Вот первый подводный камень.&lt;/p&gt;
&lt;p&gt;WebForm сохраняет параметры полей в том виде, в каком вы их вводите. Т.е., если вы вводите поле&lt;/p&gt;
&lt;p&gt;Тип: "textfield"&lt;br /&gt;
Заголовок: "Ваше имя"&lt;br /&gt;
Описание: "Пожалуйста, введите Ваше имя."&lt;/p&gt;
&lt;p&gt;То в базе данных будут сохранены именно эти значения, а это означает, что когда придет время форме отобразиться, через ф-ию t() пойдут русские строки, что не есть правильно.&lt;/p&gt;
&lt;p&gt;Второе. WebForm`а является нодой, т.е. единицей контента. А для перевода контента у нас предназначен совсем другой слой переводов - "Перевод контента".&lt;/p&gt;
&lt;p&gt;Строго говоря, как нужно было бы сделать правильно, с точки зрения философии Drupal? Нужно было бы создать свою форму для каждого конкретного языка, при создании забивать все поля на том языке, для которого делается эта форма, и затем... нужно было бы создать некую интересную ссылку (например в меню сайта), при которой у нас на русском языке, например, она вела бы на node/25, а на английском - на node/26. Как известно, в админке через стандартный интерфейс работы с меню этого сделать нельзя. (Забегая немного вперед, скажу, что при помощи модуля i18n (а точнее его подмодуля Menu translation, или, если меню - это primary links, путем еще больших хитростей - читайте мануал к i18n) эту задачу можно решить, путем создания разных меню - каждое на ту или иную языковую версию сайта. Но хотелось бы чего попроще.)&lt;/p&gt;
&lt;p&gt;Более того,  хотелось бы, чтобы при переключении языка, показывалась соответствующая версия нашей ноды-webform`ы. Т.е. находимся мы, например, на этой самой форме, в английском варианте - node/26. Потом - хоп! - переключились на русский, нажав соответствующий флажок. Как поведет себя друпал? Он сразу же переведет интерфейс (все служебные сообщения, пункты меню и прочая), и отобразит эту же ноду - node/26, отобразив внизу малоприметную ссылочку на перевод. А как надо? Чтобы он перенаправил нас на русскую версию этой ноды - node/25, чего не произойдет. А еще лучше - что в блоке переключения языков, на слове "Русский" (или там на флажке), при просмотре английской версии, был адрес не текущей, английской, ноды, а уже ссылка на форму-перевод.&lt;/p&gt;
&lt;p&gt;И как это сделать (стандартными средствами или сторонними модулями), совершенно непонятно. Если кто знает - отпишитесь в комментах как.&lt;/p&gt;
&lt;p&gt;И это я уже и не вспоминаю "удобство" администрирования, при таком подходе: в случае двух языков, будет две вебформы, и за результатами их заполнения нужно следить уже в двух местах. А если языков не два, а три или четыре (а так бывает)? А форм на сайте не одна, а 3-4-5-более? Тогда это все превратиться в АДминистрирование. :)&lt;/p&gt;
&lt;p&gt;Итак, не буду долго томить и предлагаю решение. Чтобы создать мультиязычную вебформу, нужно создать ее всего лишь одну, но при этом потребуются навыки программирования и небольшое знание API Drupal. Начинаем:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Переведем текст описания самой формы (еще его могут называть пояснение к форме) и ее заголовок. В поле Описание ставим фильтр ввода php и вводим примерно следующее:
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;  drupal_set_title&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;t&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;drupal_get_title&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;//меняем заголовок ноды&lt;/span&gt;
  &lt;span style="color: #b1b100;"&gt;print&lt;/span&gt; t&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'My WebForm description.'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #666666; font-style: italic;"&gt;//текст пояснения пропускаем через t()&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Задаем сообщение об успешной отправке формы, примерно так:
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;  &lt;span style="color: #b1b100;"&gt;echo&lt;/span&gt; t&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'Your request has been sent. Thank you!'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Поскольку заголовки и описания полей у нас пройдут через функцию t(), т.к. WebForm строит формы, используя FormAPI Drupal, то нам следует забивать их на английском языке. Да, я тоже так подумал сначала. Но WebForm еще умнее. ;) Когда вы нажмете кнопку "Сохранить", WebForm зачем-то прогонит ваши строки через t() и в своей базе данных сохранит именно переводы, а не исходные английские тексты. То ли это фича, то ли это баг, но делать нечего - придется пойти в базу (в таблицу webform_component), найти там ваши только что введенные поля и перебить их параметры английскими значениями. Сделать это нужно непосредственно в базе данных, т.к. при сохранении формы WebForm вновь переведет измененные строки. Именно поэтому этот шаг - последняя правка самой ноды-формы. Имейте ввиду, что при любом обновлении ноды через стандартный интерфейс, названия полей будут перезаписаны, и придется повторять трюк с базой снова. Зато теперь, при построении формы, WebForm пропустит эти строки через t() и если найдет в системе перевод, переведет их.&lt;/li&gt;
&lt;li&gt;В админке в разделе Администрирование - Конструкция - Перевод интерфейса, нужно сделать поиск по англоязычным текстам ваших полей, и перевести их там, на нужные языки. Вуаля, на этом шаге мы перевели заголовки полей и их описания.&lt;/li&gt;
&lt;li&gt;Для перевода всяческих сообщений об ошибках, о неверно заполненных полях и прочее, просто залейте файл перевода модуля WebForm.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Итак, на выходе у нас одна мультиязычная форма.&lt;/p&gt;
&lt;p&gt;Желаю вам удачных проектов на Drupal!&lt;/p&gt;
</description>
 <comments>http://andyceo.ruware.com/blog/andyceo/multiyazychnyi-webform#comments</comments>
 <category domain="http://andyceo.ruware.com/tegi/drupal-0">drupal</category>
 <category domain="http://andyceo.ruware.com/tegi/drupal-6x">Drupal 6.x</category>
 <category domain="http://andyceo.ruware.com/moi-interesy/kompyutery-i-programmirovanie/drupal-cmf-cms">Drupal CMF CMS</category>
 <category domain="http://andyceo.ruware.com/tegi/i18n">i18n</category>
 <category domain="http://andyceo.ruware.com/tegi/internationalization">internationalization</category>
 <category domain="http://andyceo.ruware.com/tegi/l18n">l18n</category>
 <category domain="http://andyceo.ruware.com/tegi/locale">locale</category>
 <category domain="http://andyceo.ruware.com/tegi/multilanguage">multilanguage</category>
 <category domain="http://andyceo.ruware.com/tegi/translate">translate</category>
 <category domain="http://andyceo.ruware.com/tegi/webform">webform</category>
 <category domain="http://andyceo.ruware.com/tegi/webform-6x-27">Webform 6.x-2.7</category>
 <category domain="http://andyceo.ruware.com/tegi/lokalizatsiya">локализация</category>
 <category domain="http://andyceo.ruware.com/tegi/mnogoyazychnost">многоязычность</category>
 <category domain="http://andyceo.ruware.com/tegi/mnogoyazychnyi-sait">многоязычный сайт</category>
 <category domain="http://andyceo.ruware.com/tegi/multiyazychnost">мультиязычность</category>
 <category domain="http://andyceo.ruware.com/tegi/perevod">перевод</category>
 <category domain="http://andyceo.ruware.com/tegi/perevod-saita">перевод сайта</category>
 <wfw:commentRss>http://andyceo.ruware.com/crss/node/310</wfw:commentRss>
 <pubDate>Mon, 05 Oct 2009 19:59:04 +0000</pubDate>
 <dc:creator>andyceo</dc:creator>
 <guid isPermaLink="false">310 at http://andyceo.ruware.com</guid>
</item>
<item>
 <title>Настройки безопасности Wi-Fi</title>
 <link>http://andyceo.ruware.com/blog/cristobal-junta/nastroiki-bezopasnosti-wi-fi</link>
 <description>&lt;p&gt;В журнале &amp;laquo;Компьютерра&amp;raquo; #34 (798) от 15.09.09 опубликована любопытная статья (Бёрд Киви &amp;laquo;Атака с воздуха. Мифы и правда о безопасности беспроводных сетей WIFI&amp;raquo;) о последних достижениях в области атаки на сети Wi-Fi. В конце материала приводятся полезные настройки безопасности, при которых &amp;laquo;защита должна быть максимально прочной&amp;raquo; (&amp;laquo;если маршрутизатор и сетевые адаптеры достаточно новые, то есть совместимые&amp;raquo;). В качестве памятки я воспроизведу здесь эти настройки; кроме того, они могут пригодиться и случайному посетителю этого сайта.&lt;/p&gt;
&lt;blockquote cite="http://www.computerra.ru"&gt;&lt;p&gt;
В случае домашней сети или сети небольшого офиса можно рекомендовать:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;в качестве &amp;laquo;имени сети&amp;raquo;, SSID, выбрать нечто уникальное и характерное только для вас, дабы защититься от взлома сетевого ключа (куда подмешивается SSID) лобовыми методами словарного перебора;&lt;/li&gt;
&lt;li&gt;в поле &amp;laquo;режим безопасности&amp;raquo; (Security Mode) выбрать WPA2;&lt;/li&gt;
&lt;li&gt;в поле &amp;laquo;управление ключами&amp;raquo; (PSK/EAP) выбрать PSK (&amp;laquo;&amp;hellip;&amp;raquo; [и длинную скучную парольную фразу в качестве ключа &amp;mdash; C.J.]);&lt;/li&gt;
&lt;li&gt;в поле &amp;laquo;тип шифра&amp;raquo; (Cipher Type) выбрать AES.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;На своем роутере ASUS W-500gl Premium в ближайшее время обязательно изменю настройки безопасности!&lt;/p&gt;
&lt;p&gt;На текущий момент версии статьи на сайте &amp;laquo;&lt;a href="http://www.computerra.ru"&gt;Компьютерры&lt;/a&gt;&amp;raquo; нет, потому ссылку привести не могу.&lt;/p&gt;
</description>
 <comments>http://andyceo.ruware.com/blog/cristobal-junta/nastroiki-bezopasnosti-wi-fi#comments</comments>
 <wfw:commentRss>http://andyceo.ruware.com/crss/node/309</wfw:commentRss>
 <pubDate>Fri, 25 Sep 2009 20:19:59 +0000</pubDate>
 <dc:creator>cristobal-junta</dc:creator>
 <guid isPermaLink="false">309 at http://andyceo.ruware.com</guid>
</item>
</channel>
</rss>

