Неблокирующая проверка нити

July 2nd, 2009

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

Неблокирующую проверку нити нити можно сделать с помощью отправки сигнала 0 в нить pthread_kill(thread, 0) или с использованием нестандартной функции pthread_tryjoin_np.

CCK, меняем -None- в Select List

June 20th, 2009

По умолчанию если пользоваться Select List и установить Allowed values list то в итоге список будет выглядить так

-None-
значение 1
значение 2

причем как сменить None цивилизованным способом как бы нельзя, решение такое

В Allowed values list выставляем

|Выберите вариант
1|значение 1
2|Значение 2

Затем выставляем Required

и получаем

Выберите вариант
значение 1
Значение 2

Поймай ajax если сможешь

June 18th, 2009

если надо перехватить факт что на странице произошел вызов ajax контролировать который не в силах, то можно воспользоваться встроенными в jquery функциями

  • ajaxComplete
  • ajaxError
  • ajaxSend
  • ajaxSuccess
вот пример
$(document).ready(function(){
    jQuery(document).ajaxSuccess(function(evt, request, settings){
        // здесь ваши действия
     });
});

Групировка по дням

June 18th, 2009

created = поле с unix timestamp

SELECT count(nid), FROM_UNIXTIME(n.created, ‘%Y %d %m’) as created_day  FROM node n group by created_day

Станица без темплейта

June 16th, 2009

Для начала решим, что для загрузки страницы без окружения надо добавить параметры  ajax=1 в URL (e.g. mysite.com/node/1?ajax=1), и  сможет получить только ее контент.

далее в template.php файл вашей темы добавляем:

function phptemplate_preprocess_page(&$vars) {

  if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
        $vars['template_file'] = 'page-ajax';
  }

}

затем создаем page-ajax.tpl.php в каталоге темы со следующим содержанием:

<?php print $content; ?>

Drupal imagecache

June 13th, 2009

$img - урл оригинала

’sw’ - персет

$img2 =  imagecache_create_path(’sw’, $img) ;

$img2 теперь содержить путь к уменьшенному изображению

Drupal Pathauto получить alias

June 13th, 2009

http://maminaeda.ru/’ . drupal_get_path_alias(’node/10′)

PSP: вывод списков

June 12th, 2009
<html>
<body>
<%
a = ['spam', 'eggs', 100, 1234]
for i in range(10):
  # This comment sets the indentation that will last until
  # another command or comment changes it (И пробелы перед ним обязательны ! )
%>
<p><%= i %></p>
<%
# этот комментарий окончание цикла ! )
%>
</html>
</body>

Настройка Apache для python psp

June 12th, 2009

1 загружаем модуль

LoadModule python_module modules/mod_python.so
2 прописываем конфигурацию
<Directory /absolute/path/to/psp/enabled/dir>
   AddHandler mod_python .psp .psp_
   PythonHandler mod_python.psp
   PythonDebug On
</Directory>

Разбивка radio buttons

June 3rd, 2009

По api радио нужно создавать так

$form['posting_settings']['comment_preview'] = array(
  '#title' => t('Preview comment'),
  '#default_value' => variable_get('comment_preview', 1),
  '#options' => array(t('Optional'), t('Required')),
);

но если возникает необходимость вставить еще элемент формы между двумя радио кнопками то делать надо так
// обявляем радио группу

$form['type'] = array(
        '#type' => 'radios',
        '#title' => t('Preview comment') ,
);

//первая кнопка

$form['type'][0] = array(
        '#type' => 'radio',
        '#title' => t('Optional') ,
        '#return_value' => 0,
        '#parents' => array(
            'type' // привязка к группе
        ) ,
        '#spawned' => TRUE,
    );

// много других элементов формы

// вторая кнопка

$form['type'][1] = array(
        '#type' => 'radio',
        '#title' => t('Required') ,
        '#return_value' => 1,
        '#parents' => array(
            'type'
        ) ,
        '#spawned' => TRUE,
    );