Блог пользователя - Химический Али

Модуль Profile смотрит в сторону Fields API

5 ноября 2009 в 11:47

Накануне на Друпал.орг застолбили место под проект Profile 2 — замену стандартного модуля Profile. Согласно сообщению на странице проекта, это логичное следствие из двух обсуждений на тему грядущего появления в ядре Друпал 7 механизма Fields API (функциональный аналог CCK) и целесообразности дальнейшего существования модуля Profile со своей схемой создания полей в профилях пользователей (1, 2).

Yahoo открывает исходные коды кеш/прокси-сервера Traffic Server

3 ноября 2009 в 16:55

Yahoo заявляет об вскрытии исходных кодов кэш/прокси-сервера Traffic Server, на котором крутится крупнейший в мире почтовый хостинг Yahoo Mail и другие сервисы компании. Эта разработка была приобретена Yahoo вместе с компанией Inktomi в 2002 году и впоследствии развивалась силами собственных разработчиков.

Исправил косячок с загрузкой изобажений в ThickBox

3 ноября 2009 в 15:29

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

Фильтрация спамботов с помощью .htaccess

19 октября 2009 в 8:39

Существует ресурс, коллекционирующий правила .htaccess для защиты от всякого рода сетевой нечисти. Разработка продвинутых бан-листов ведется автором с 2006 года и он утверждает, что повышение нагрузки на Апач от порядком разросшегося списка — незаметное по сравнению с тем, как полегчало серверу после отсечения тучи уродов.

На данный момент бан-лист производит:

WebsiteSpark: ПО от Микрософт для малых веб-студий за сущие копейки

25 сентября 2009 в 9:59

Microsoft предоставила новую возможность легально использовать свои продукты молодым веб-студиям или веб-разработчикам без предварительной оплаты. Любая компания, у которой штат до 10 человек и разрабатывает продукты не для себя, имеет возможность участвовать в новой программе WebsiteSpark и получить лицензии на следующие продукты:

3 лицензии на Visual Studio 2008 Professional Edition
1 лицензия на Expression Studio 3 (которая включает Expression Blend, Sketchflow и Web)
2 лицензии на Expression Web 3
4 процессорную лицензию на Windows Web Server 2008 R2
4 процессорную лицензию на SQL Server 2008 Web Edition
DotNetPanel панель управления

После 3-х летнего участия в программе вам будет предложено оплатить всего-лишь 100$. Чтобы детально ознакомится с правилами участия в программе, а так же подать заявку следует посетить официальный сайт

MySQL Profiler: простой и удобный инструмент профилирования запросов

24 сентября 2009 в 1:53

Хабрачувак agorlov сообщает:

Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. Хочу представить вашему вниманию фичу MySQL — профайлинг. Появилась она начиная с версии 5.0.37.
Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов) и почему она тормозит. И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.

Итак, как пользоваться:

mysql> set profiling=1;
mysql> select count(*) from comment;
mysql> select count(*) from message;
mysql> show profiles;

+----------+------------+------------------------------+
| Query_ID | Duration   | Query                        |
+----------+------------+------------------------------+
|        1 | 0.00012700 | select count(*) from comment |
|        2 | 0.00014200 | select count(*) from message |
+----------+------------+------------------------------+
2 rows in set (0.00 sec)

Дальше — больше

И снова погода!

16 сентября 2009 в 12:02

Прочь лирику, смотрите сами что делает модуль Yr Weatherdata:

Сервис норвежский, но есть погодка для других стран. Касательно Руссланда:

Адыгеа – Агин-Бурят – Алтаи – Алтаи Краи – Амур – Аркхангелск – Астракхан – Башкортостан – Белгород – Брянск – Бурятиа – Чечня – Челябинск – Чита – Чукотка – Чувашиа – Дагестан – Евенкиа – Ингушетиа – Иркутск – Иваново – Жевиш Аутономоус Област – Кабардино-Балкариа – Калининград – Калмыкиа – Калуга – Камчатка – Карачаы-Черкессиа – Карелиа – Кемерово – Кхабаровск – Кхакассиа – Кхантиа-Мансиа – Киров – Коми – Корякиа – Кострома – Краснодар – Красноярск – Курган – Курск – Ленинград – Липетск – Магадан – Мари Ел – Мордовиа – Мосцов – Мосцов област – Мурманск – Ненетсиа – Низхны Новгород – Нортх Оссетиа-Аланиа – Новгород – Новосибирск – Омск – Оренбург – Орыол – Отхер – Пенза – Перм – Приморскы – Псков – Ростов – Рязан – Сакха – Сакхалин – Самара – Саратов – Смоленск – Соутх Курилес – Ст. Петерсбург – Ставропол – Свердловск – Тамбов – Татарстан – Таымыриа – Томск – Тула – Твер – Тюмен – Тыва – Удмуртиа – Уляновск – Уст-Орда Бурятиа – Владимир – Волгоград – Вологда – Воронезх – Ямалиа – Ярославл

Кроме того, там написано, что yr.no располагает погодными данными для 7 миллионов точек в мире и для поиска более точных следует попробовать заюзать поиск.

Забирать здесь: http://drupal.org/project/yr_verdata

Простейшие хлебные крошки (breadcrumbs)

2 сентября 2009 в 21:31

Модуль Taxonomy_Breadcrumbs у меня так и не заработал, поэтому по-тупому намалевал себе модуль для генерации хлебных крошек на основе таксономии. Он
а) выбирает из числа словарей, сопоставленных типу ноды, один с наибольшим "весом",
б) выбирает из числа терминов этого словаря 1,
в) включает ссылку на этот термин в хлебные крошки,
г) добавляет к хлебным крошкам название материала (на любителя).

Получается что-то вроде: Главная › Audi › Audi A8 L будут собирать в Венесуэле.

Если структура словаря древовидная, в цепочку будут добавлены все термины дерева в порядке вложенности.

Состоит из одной функции (основа выдрана из другого модуля :). Можно не мучаться и изменить функцию так, чтобы цепочка строилась исключительно из данных о терминах, заключенных в объекте $node.

Внимание, говнокод! Использовать на свой страх и риск.

Тупая галерея на Image + jCarousel

2 сентября 2009 в 9:00

Вчера от лени склепал обертку для стандартной Image Gallery c применением jCarousel и ThickBox.

Общий вид галереи

При клике по картинке отрабатывает ThickBox:

Просмотр картинки

При клике по заголовку галереи открывается обычная галерея с пейджером.

Все это делается одной функцией в template.php при условии, что у вас установлен модуль jCarousel:

<?php
/**
 * Theme a gallery page
 */
function phptemplate_image_gallery($galleries$images) {
  
drupal_add_css(drupal_get_path('module''image_gallery') .'/image_gallery.css');
  
drupal_add_js(drupal_get_path('module''jcarousel') .'/jcarousel/lib/thickbox/thickbox.js');
  
drupal_add_css(drupal_get_path('module''jcarousel') .'/jcarousel/lib/thickbox/thickbox.css');

  

$size image_get_sizes(IMAGE_THUMBNAIL);

  

$content '';
  if (
count($galleries)) {
    
$content .= '<div class="galleries">';
    foreach (
$galleries as $gallery) {

      

$content .= "<h3>"l($gallery->name'image/tid/'$gallery->tid) .$gallery->count</h3>\n";

      

// Determine sort order.
      
$join $where $order '';
      
$args = array();
      switch (
variable_get('image_gallery_sort_order'IMAGE_GALLERY_SORT_CREATE_DESC)) {
        case 
IMAGE_GALLERY_SORT_CREATE_DESC:
          
$order 'ORDER BY n.sticky DESC, n.created DESC';
          break;

        case 

IMAGE_GALLERY_SORT_CREATE_ASC:
          
$order 'ORDER BY n.sticky DESC, n.created ASC';
          break;
?>

Вопрос «стены пользователя» близится к логичному решению

24 августа 2009 в 15:11

Релизнули модуль User Wall, позволяющий пользователям иметь т.н. "стену" — на которой другие пользователи могут оставлять публичные привки, симпафки, а также проклятия и спам (как в Фейсбуке).

Пока модуль прост, но большинству много и не надо. Во всяком случае, вопрошателям можно просто давать ссылку, не утруждаясь объяснениями как такое сделать с помощью views/cck, блоков и инъекций в профиль.

http://drupal.org/project/user_wall

Идея антиспама с сегодняшнего Хабра

11 августа 2009 в 11:27

Сегодня на хабре всплыла идея:

---
Наткнулся тут недавно на одном сайте на способ защиты от ботов без использования каптчи и javascript.
Все очень просто — достаточно добавить скрытое поле с символом кодированным в HTML сущность (например © — и т. д.). Дело в том что браузер найдя такой символ преобразует его перед отправкой в обычный, а робот использующий парсер форм так и отправить закодированным (причем у меня есть свой парсер форм и он сделал бы именно так). При проверки формы достаточно просто посмотреть длину строки в этом поле. Если отправлял человек то она будет равна числу символов в строке, а если нет значительно больше.

Так что такое решение пусть и не обеспечивает серьезной защиты но вполне может применяться в тех случаях если что то более сложное использовать нельзя.
---

По-моему, это гораздо лучше, чем javascript-методы.

Реально ли оформить такое в модуль для Drupal или добавить новый вид проверки в модуль CAPTCHA? А может уже есть готовое?

Еще одно антиспам-решение

10 августа 2009 в 11:53

Модуль Spambot сверяет учетные данные пользователей с сетевой базой данных абортов и ублюдков Stop Forum Spam, после чего блокирует их, избавляя от необходимости вручную проверять регистрационные данные пользователей.

Spambot ведет журналирование запросов регистрации и ошибок. Работу модуля можно проверить с прменением адреса электронной почты из комментария в функции spambot_username_validate().

Требует для работы расширения PHP cURL.

Юзабилити растет: Ajax Tabs

5 августа 2009 в 17:05

Модуль Ajax Tabs позволяет переходить между локальными задачами (menu local tasks) без полной перезагрузки страницы, с использованием AJAX. Причем можно задавать, на каких страницах механизм будет работать, а на каких - нет.

Модуль зависит от ajax_load.module. Уверьтесь, что табы обернуты в page.tpl.php чем-то вроде

Смена темы оформления на лету

29 июля 2009 в 21:52

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

Конкретно, нужно было, чтобы при создании темы форума не подключалась тема админки, т.к. топики создают и обычные пользователи, а резкое изменение оформления вводит их в диссонанс и не отвечает требованиям юзабилити.

После некоторых поисков было ясно, что дело нужно иметь с функцией hooks_init(). Мы должны создать свой модуль для перекрытия этой функции.

В итоге выйдет нечто вроде этого:

<?phpfunction TVOYMODULE_hooks_init() { 
  // Если создаем или правим топик форума
  if(arg(0) == 'node' && (arg(1) == 'add' || arg(1) == 'edit') && arg(2) == 'forum') { 
    // то подключаем тему «nasha»
    global $custom_theme; $custom_theme = "nasha"; 
  } 
}?>

Источник: http://www.bytesite.co.uk/drupal-changing-theme-on-theflydrupal-programm...

Крутые плавающие уведомления

28 июля 2009 в 21:15

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

Drupal обзавелся поддержкой FaceBook Connect и других систем авторизации

28 июля 2009 в 11:56

Больше социальности! Теперь сайты на Drupal могут аутентифицировать посетителей с помощью таких стандартов авторизации, как Facebook Connect, MySpace ID, Twitter, а также с помощью почтовых OpenID-провайдеров (Google, Yahoo, и AOL). Функциональность обеспечивает модуль под названием Socialize разработки Gigya и Acquia.

Помимо авторизации, модуль включает в себя возможности оп «пушингу» (обмену) контента между социальными сетями, обновлению социальных статусов и т.п.

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

Для работы модуля требуется Popups API и аккаунт на Gigya Socialize. Кроме того, горячо рекомендуется Trigger для совершения тех или иных процедур при определенных действиях пользователей.

Страница проекта: http://drupal.org/project/gigya

Drupal Sightings #135 ru

27 июля 2009 в 14:06

Убил котенка... [решено]

10 июля 2009 в 14:23

Зашел на форум и подумал: неудобно как-то - нельзя посомтреть новые сообщения только для форума. Трекер общий, все в кучу валится. Отсеять сообщения по типу материала или автору нельзя. Разве что отсортировать, но это все не то. И решил убить котенка.

Открыл tracker.module, вписал в функцию tracker_menu() следующее:

<?php
  $items
['tracker/forum'] = array(
    
'title' => 'Recent topics',
    
'page callback' => 'tracker_page_forum',
    
'access arguments' => array('access content'),
    
'weight' => 1,
    
'file' => 'tracker.pages.inc',
  ); 
?>

Затем открыл tracker.pages.inc, скопировал функцию tracker_page() в tracker_page_forum() и привел ее к такому виду:

<?php
/**
 * Показывает обновленные или новые темы форума. 
 * В запросы добавлено AND n.type = \'forum\' чтобы отсеять форумские сообщения
 */
function tracker_page_forum($account NULL$set_title FALSE) {
  
// Add CSS
  
drupal_add_css(drupal_get_path('module''tracker') .'/tracker.css''module''all'FALSE);

  if (

$account) {
    if (
$set_title) {
      
// When viewed from user/%user/track, display the name of the user
      // as page title -- the tab title remains Track so this needs to be done
      // here and not in the menu definiton.
      
drupal_set_title(check_plain($account->name));
    }
  
// TODO: These queries are very expensive, see http://drupal.org/node/105639?>