Редирект в urls.py (Django, RedirectView)

Порой нужно не создавая вьюшки прямо на входе перенаправить с запрошенного адреса на другой. Пример:

from django.conf.urls import patterns, url
from django.views.generic.base import RedirectView

urlpatterns = patterns('',
    url(r'^go-to-url/$', RedirectView.as_view(url='http://developtolive.com'), name='go-to-url'),
)

[Exception] DateTime::__construct(): It is not safe to rely on the system’s timezone settings.

Получил на сервере где работают сайты на битриксе такую вот ошибку

[Exception]  DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. (0) /var/www/bitrix/data/www/site.ru/bitrix/modules/main/lib/type/datetime.php:22

Лечится просто. В php.ini ищем

;date.timezone =

и меняем на

date.timezone = “Europe/Moscow”

далее перезапускам apache и все работает

Быстрое восстановление пароля root на сервер

Как быстро восстановить пароль на root пользователя для mysql.
Для этого выполните пошаговую инструкцию приведенную ниже.

1) Сначала остановите mysql.
 service mysqld stop
 2) И запустите mysql командой:
 /usr/bin/mysqld_safe --skip-grant-tables --user=root &
 3) После чего запустите клиент mysql
 mysql -u root
 4) Сделайте запрос sql
 UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
 где newpwd - новый пароль.
 5) Примените изменения
 FLUSH PRIVILEGES;
 6) Выходим из клиента mysql с помощью команды exit
 7) Прописываем команду
 killall mysqld
 Перезагрузите mysql сервер командой:
 service mysqld restart

Узнаем e-mail покупателя по заказу

В Битрикс нельзя просто взять и получить e-mail владельца заказа путем обращения к базе пользователей. Быть может для данного заказа покупатель указал иной e-mail. Вот код, который вернет e-mail покупателя конкретного заказа исходя из всех условий:

 

/*
    * Узнаем e-mail пользователя по заказу.
    */
   private static function getOwnerEmail($order)
   {
      //пробежимся по св-вам заказа, ища e-mail
      $res = CSaleOrderPropsValue::GetOrderProps($order);
      while ($row = $res->fetch()) {
         if ($row['IS_EMAIL']=='Y' && check_email($row['VALUE'])) {
            return $row['VALUE'];
         }
      }
      //если такого не нашли, берем просто mail пользователя
      if ($order = CSaleOrder::getById($order)) {
         if ($user = CUser::GetByID($order['USER_ID'])->fetch()) {
            return $user['EMAIL'];
         }
      }
      return false;
   }

Спасибо.

Photoshop обрезать изображение по контуру другого изображения

Так как редко сталкиваюсь с данной процедурой постоянно забываю как это делать ;) Заношу себе в заметки, чтобы потом опять не искать в поисковике.

Открываем изображение в фотошопе и поверх его накладываем другим слоем то изображение которое нужно обрезать. В слоях выбираем нужное изображение под обрезку и наживаем комбинацию Ctrl+Alt+G.

Вот и все =) контур обрезался по изображению из нижнего слоя.

Количество выбранных элементов в битриксе c SelectedRowsCount

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

$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
$res->SelectedRowsCount()

Товарищи!!! Не ленитесь читать документацию. В ней даже поиск есть. Удачи Вам.

Если файл в битриксе не вызывается на прямую

Очень часто в коде встречаю, что ребята в файлах которые не вызываются на прямую, а подключается из системы. А это сделать просто. Нужно указать в начале файла строку:

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

Файл для запуска через крон в битриксе

Вот шаблон файла для запуска через крон в битриксе:

#!/usr/bin/php
<?php
$_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/www";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(0);
define("LANG", "ru");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// мой код...

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>