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

Считаем полное количество лет на php


echo getFullYears('2007-09-11');
function getFullYears($birthdayDate) {
            $datetime = new DateTime($birthdayDate);
            $interval = $datetime->diff(new DateTime(date("Y-m-d")));
            return $interval->format("%Y");
}

Вывести случайную цитату из текстовой БД

Создаем 2 файла: txt и db
Пишем скрипт:


echo file_get_contents('./txt');
$file = file('./db');
$str = $file[rand(0, count($file)-1)];
file_put_contents('./txt', $str);

Разрешить только себе и запретить всем доступ к определенной странице на сайте (.htaccess)


<files "file.php">
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
</files>

Запустить длительный процесс в фоновом режиме (CentOS)

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


$tar zcvf dir-name.tgz dir/ > /dev/null &

и идем спать :) утром смотрим, архив сформирован

Разместить некоторую информацию на страницах каталога 1С-Битрикс

Идея: Иногда необходимо разместить некую текстовую информацию в каталоге битрикса. Делается это для SEO оптимизации сайта. Но вот не всегда возможно удобно добавить эту информацию на страницы каталога Битрикса. Что делать? Сначала мы формируем и наполняем каталог. После формирования каталога мы получаем страницы с ЧПУ. Определяемся на какие страницы мы будем добавлять какую информацию. После этого в index.php файл каталога добавляем следующий код:


if ($_SERVER['REQUEST_URI'] == '/catalog/1267/') {echo "

Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1 Any text1
";}

if ($_SERVER['REQUEST_URI'] == '/catalog/1268/') {echo "

Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2 Any text2
";}

if ($_SERVER['REQUEST_URI'] == '/catalog/1269/') {echo "

Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any text3 Any Any Any text3
";}

Я не претендую на изящность решения, но иногда можно быстро внести нужные изменения на любую страницу генерируемую CMS системой и формирующуюся в ЧПУ URL (не только Битрикс).

unix mass chmod


find /patch/to/destination/dir/ru.site -type f -exec chmod 664 {} \;
find /patch/to/destination/dir/ru.site -type d -exec chmod 755 {} \;

Bitrix: GetCurUri()


<? $uri = $APPLICATION->GetCurUri(); if ((strstr($uri,"/about/photo.php"))) {?><script type="text/javascript" src="jquery-1.4.2.min.js"></script><?}?>

Простейшая ротация баннеров на Javascript

Задача: Создать простейшую ротацию баннеров на Javascript
Решение: В html шаблоне сайта прописываем:


<noindex>
<script type="text/javascript">var mediaBanners = new Array(
"<a href='http://www.default.org/' target='_blank' rel='nofollow'><img src='/images/banner-1.gif' border='0' alt='Alternative text 1'></a>",
"<a href='http://www.default.org/' target='_blank' rel='nofollow'><img src='/images/banner-2.gif' border='0' alt='Alternative text 2'></a>",
"<a href='http://www.default.org/' target='_blank' rel='nofollow'><img src='/images/banner-3.gif' border='0' alt='Alternative text 3'></a>");</script>
<p><script type="text/javascript">var los = Math.floor(Math.random() * mediaBanners.length);document.write (mediaBanners[los]);</script></p></noindex>

301 редирект .htaccess, от "без www" на "www"

Имеем: Адрес вида: http://example.org
Задача: При заходе на http://example.org мы должны автоматически редиректиться на http://www.example.org
Решение: В файле .htaccess находящимся в корне сайта прописываем:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.org$
RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L,QSA]

301 редирект .htaccess, с "www" на "без www"

Имеем: Адрес вида: http://www.example.org
Задача: При заходе на http://www.example.org мы должны автоматически редиректиться на http://example.org
Решение: В файле .htaccess находящимся в корне сайта прописываем:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]

Редирект динамичных страниц на .htaccess

Имеем: Старый адрес вида: http://www.example.org/news/detail.php?ID=12973
Задача: Сделать редирект на новые имена вида: http://www.example.org/news/12973/
Решение: В файле .htaccess находящимся в корне сайта прописываем:


RewriteEngine On
RewriteCond %{QUERY_STRING} &?ID=([0-9]+)$
RewriteRule ^(.*)$ http://www.example.org/news/%1/? [R=301,L]

301 редирект на php

Имеем: Старую страницу
Задача: При заходе на которую мы должны автоматически переходить на новую страницу
Решение: В коде старой страницы прописываем лишь:

Автоматическая печать страницы при загрузке

Имеем: Страницу которую нужно распечатать
Задача: При заходе на данную страницу автоматически должно появлятся диалоговое окно печати
Решение: В HTML коде нужной страницы страницы прописываем:


<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<script>function Print(){document.body.offsetHeight;window.print()};</script>
</head><body onload="Print()"></body></html>

Простейший нагрузочный тест в Unix (консоль Bash)

Имеем: Сайт который нужно проверить на нагрузку
Задача: Протестировать хостинг на котором находится сайт, провести нагрузочное тестирование.
Решение: На сервере должна быть установлена утилита "ab". В консоли Bash вводим комманду:


ab -t 90 -c 30 http://example.org/

Мониторинг работоспособности важных сервисов (httpd mysqld exim4 proftpd named sshd) в Unix

Имеем: Сервисы, работоспособность которых нужно контролировать
Задача: Написать Bash скрипт, который будет проверять работоспособность сервисов, и при надобности отсылать администратору email сообщение и перезапускать тот или иной сервис
Решение: В любимом текстовом редакторе (nano, vi, vim, emacs, etc…) пишем скрипт, затем присваиваем ему права на исполнение, затем добавляем его в crontab.
PS: Имена сервисов также должны совпадать с именами скриптов для их запуска. Так, например, для сервиса httpd должен существовать скрипт запуска /etc/init.d/httpd. Если имя сервиса отличается от привычного, можно добавить символическую ссылку вида: [#]ln -s /etc/init.d/httpd /etc/init.d/apache. Подробнее: [$]man ln

Опишу действия для текстового редактора "nano";


su
nano /root/scripts/scriptname.sh

Пишем скрипт:


#!/bin/sh

MAIL_TO="user@domain.com"
host="OwerHostName.info"

#Services list
for service in httpd mysqld exim4 proftpd named sshd
do
list=`ps -jA | grep $service`
if [[ $list > "" ]]
then :
else
err=`/etc/init.d/$service restart`
if [[ $? > 0 ]]
then
mail -s "$service problem on $host" $MAIL_TO<<_EOF_
$service starting: failed
$err
_EOF_
else
mail -s "$service problem on $host" $MAIL_TO<<_EOF_
$service starting: done
_EOF_
fi
fi
done

exit 0

Нажимаем Ctrl+O, чтобы сохранить документ
Добавляем скрипту параметр «исполняемый»


chmod +x /root/scripts/scriptname.sh

Далее добавляем в crontab запуск скрипта каждые 5 минут:


export EDITOR="nano"
crontab -e
*/5 * * * * /root/scripts/scriptname.sh

Нажимаем Ctrl+O, чтобы сохранить документ