it

Как удалить из очереди postfix письма с определённого домена

Для домена-отправителя error.domain.ru команда будет выглядеть так:
mailq|awk ' /^[0-9A-F][0-9A-F]*.*error.domain.ru$/ {print $1}'|tr -d '*'| xargs -rn1 postsuper -d
Должно сработать в linux, с MTA postfix.

Как в PHP узнать откуда был вызван метод класса/функция?

Самый очевидный вариант - через debug_backtrace()

$trace = debug_backtrace();
$caller = $trace[1];
echo "Called by {$caller['function']}";
if (isset($caller['class'])) echo " in {$caller['class']}";

Как найти причину WSOD (белого экрана вместо страницы) в php, когда обычные решения не помогают

В случае если скрипт php не выполняется и ничего не выводит (WSOD, White Screen Of Death) - очевидные и правильные решения это настроить отображение/логирование ошибок в конфигах php и веб-сервера, установка отладчика (например, xdebug).

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

Код надо вставлять в начало выполняемого скрипта, сразу после открывающего тега (скорее всего в index.php, init.php и подобные, если вы используете готовую CMS)

// ----------------------------------------------------------------------------------------------------
// - Display Errors
// ----------------------------------------------------------------------------------------------------
 
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
 
// ----------------------------------------------------------------------------------------------------
// - Error Reporting
// ----------------------------------------------------------------------------------------------------
 
error_reporting(-1);
 
// ----------------------------------------------------------------------------------------------------
// - Shutdown Handler
// ----------------------------------------------------------------------------------------------------
 
function ShutdownHandler()
        {
        if (@is_array($error = @error_get_last()))
                {
                return (@call_user_func_array('ErrorHandler', $error));
                };
        return (TRUE);
        };
register_shutdown_function('ShutdownHandler');
 
// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
 
function ErrorHandler($type, $message, $file, $line)
        {
        $_ERRORS = Array(
                0x0001 => 'E_ERROR',
                0x0002 => 'E_WARNING',
                0x0004 => 'E_PARSE',
                0x0008 => 'E_NOTICE',
                0x0010 => 'E_CORE_ERROR',
                0x0020 => 'E_CORE_WARNING',
                0x0040 => 'E_COMPILE_ERROR',
                0x0080 => 'E_COMPILE_WARNING',
                0x0100 => 'E_USER_ERROR',
                0x0200 => 'E_USER_WARNING',
                0x0400 => 'E_USER_NOTICE',
                0x0800 => 'E_STRICT',
                0x1000 => 'E_RECOVERABLE_ERROR',
                0x2000 => 'E_DEPRECATED',
                0x4000 => 'E_USER_DEPRECATED'
        );
        if (!@is_string($name = @array_search($type, @array_flip($_ERRORS))))
                {
                $name = 'E_UNKNOWN';
                };
        return (print (@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file) , $line, $message)));
        };
$old_error_handler = set_error_handler("ErrorHandler");

Динамическая загрузка блоков при скроллинге

<div id="lazyblock">
<script>
function lazyblock(){
   var wt = $(window).scrollTop();    //* top of the window
   var wb = wt + $(window).height();  //* bottom of the window
 
   $("#lazyblock").each(function(){
      var ot = $(this).offset().top;  //* top of object (div)
      var ob = ot + $(this).height(); //* bottom of object
      if(!$(this).attr("loaded") && wt<=ob && wb >= ot){
         $(this).html('<iframe src="/block.html" scrolling="no" frameborder="0"
                        style="border:none; overflow:hidden; width:211px; height:790px;" allowTransparency="true">
                      </iframe>');
         $(this).attr("loaded",true);
      }
   });
}
 
$(document).ready(function(){
    $(window).scroll(lazyblock);
    lazyblock();
});
</script>
</div>

Как корректно очистить кэш nginx

Просто удалить файлы в папке с кэшем:
find /var/cache/nginx/proxy/ -type f -delete

Метки:

Как узнать модель материнской платы и тип памяти в windows

Инфо о материнской плате:
wmic baseboard get Manufacturer && wmic baseboard get product

Память:
wmic MEMORYCHIP get BankLabel, Capacity, DeviceLocator, FormFactor, Speed, Manufacturer

Расшифровка кодов для памяти: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394347(v=vs.85).aspx

Работает через wmic, начиная с XP (без установки Everest, Sandra и т.п.)

С днём программиста!

Поздравляю всех программистов с днём программиста.

В подарок - "открытка"
Для запуска нужен Chrome или FireFox актуальной версии с включенным javascript, либо выполнение Java-апплетов в браузере.

Изменение AP_DOC_ROOT с /var/www на /home в suexec Apache 2, CentOS

По-умолчанию у suexec DOC_ROOT в CentOS (и других дистрибутивах) установлен /var/www, что не позволяет apache запускать скрипты с других мест (например, /home).

Единственный нормальный вариант сделать это в linux - перекомпилировать suexec с новыми настройками.
Команды приведены для Centos 6.0. В принципе инструкция подойдёт для других версий linux, с небольшими поправками.

502 Bad Gateway upstream sent too big header while reading response header from upstream

По-русски:
Такая ошибка может быть если nginx работает как прокси (например, к apache), и от бэкенда пришел ответ со слишком большим заголовком.

ВАЖНО! На Вашем компьютере правильное время?

vremya.jpg

В ночь с 30 на 31 октября 2011 года перевод времени производить не нужно!

Перевод времени на зимнее/летнее время в России и Белоруссии отменили.
При этом, если на компьютере обновления/настройки зоны не от 2011 года, то скорее всего будет автоматический перевод на -1 час (зимнее время).

Особенно важно это для серверов и сисадминов, соответственно :)
Далее подробности настроек:

Метки: