Программирование

О написании программного обеспечения, различных аспектах программирования в разных средах

Корректная настройка https в Drupal для случая работы за обратным HTTPS-прокси

Пришлось настраивать Drupal, работающий в следующей конфигурации:

В интернет открыт легковесный https-прокси(nginx), а сам Drupal вертится на сервере apache2 с mod_php. На apache поднят mod_rpaf, все как полагается, однако, сложность такой схемы  в том, что соединение с вебсервером Apache2 идет по протоколу HTTP, а не HTTPS. Соответсвенно работающие на сервере скрипты PHP, в нашем случае Drupal, работают так, словно взаимодействие идет по HTTP, что проявляется в некорректных URL на сайте, невозможности авторизоваться и других проблемах.

Довольно интересная статья о команде git - bisect

Git - мощнейшая система ведения версий исходных кодов, написанная автором ядра Linux, Линусом Торвальдсом.

Одна из разработчиков ядра - Анжела Байрон, известная на drupal.org под  ником webchick,  описала очень удобный поиск "ошибочного" коммита, который привел к появлению бага в программе с использованием команды git  bisect.

Я полагаю, что пример будет полезен тем, кто работает с гитом. Читать здесь.

Простой способ решить проблему с некорректной кодировкой UTF-8

Попался файл с битой кодировкой. Править руками - долго и лениво.

Задачка решается просто с помощью iconv.

Надо переконвертировать из UTF-8 в UTF-8 добавив строчку //IGNORE, чтобы программа проигнорировала некорректные последовательности. :)

iconv -f UTF-8 -t UTF-8//IGNORE <ru.php >ru.php.new

В ru.php.new все будет в используемом виде.

Простой пример реализации польской обратной записи на PHP

Попросили простенький пример реализации обратной польской записи. Функция получает ряд чисел и знаков операций и производит их. Посмотрев как делают коллеги с eval(), задался вопросом, а можно ли без него и без рекурсии. Потратил 10 минут.

function revpl($str) {

  $list = explode(' ', $str);

  $numbers = array();

  $ops = array();

  $firstop = -1;

  foreach ($list as $key => $val) {

    if (preg_match('#^([\+\-\*\/]{1})$#', $val) ) {

Обновление brainstorm.name до Drupal 7

Перенес все на Drupal 7. Далось все малой кровью. Правда пришлось отказаться от nodewords, metatag и остального говнокода который пишет Дейв Рейд и других модулей. Качество их и в 6ке хромало. Остальное все вроде как есть - все что было на сайте когда тут был Drupal 6 - все в новой сборке присутсвует.

Тема - простая самописная на базе omega(drupal.org/project/omega) - теперь все вертится на HTML 5 :). Есть еще что подкрутить и доделать, но основное все работает.

Да, на сайте крутятся вот эти два модуля моего изготовления:

Модуль интеграции phptraffica и Drupal доступен для свободного скачивания

Выкладываю модуль для интеграции изестной системы статистики PhpTraffica и CMF Drupal в свободный доступ.  Для скачивания доступна версия для Drupal 6. 

Подробности, описание и архив - на странице модуля.

Задача обхода hook_theme в Drupal 6/7

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

Drupal, как залогиниться на сайт, не зная пароля

Часто бывает задача - зайти на сайт клиента под администратором, не зная, какой пароль стоит. На Drupal 5 и 6 можно было решть ее просто - поправить в таблице users пароль суперпользователя. Вот таким SQL запросом.

UPDATE users SET pass=md5('12345') WHERE uid=1;

Естественно, запомнив предварительно то, что было в поле pass той записи и, войдя на сайт, вернуть все как было :)

Drupal и временные зоны, продолжение истории

DSTЯвляясь автором модуля dst, который используют в рунете более 200 сайтов на данный момент, я считал что, с приходом Drupal 7 необходимость модуля наверняка отпадет, поскольку функционал, реализованный в dst уже был заложен в ядро Drupal 7.

Страницы

Subscribe to RSS - Программирование