Как принимать сайт

Это большая статья, в которой описываться, как принимать сайт, чтобы у вас потом было как можно меньше проблем с ним.

Статья будет обновляться по мере появления свободного времени.

 

1. HTML код. В 2015 году логично, что все сайты должны быть написано на html5. В начале странице должен быть код

<!DOCTYPE html>

Если там что то другое, следует узнать, почему разработчик выбрал другой стандарт. При выборе другого стандарта, со временем вы сталкиваетесь с разными проблемами, когда другие сервисы (соц. кнопки лайки) ожидают от вас код на html5 и сами написано с разметкой html5.

 

2. Проверка на стандарты. Проверьте CSS на соблюдение стандартов W3C. Сейчас это ссылка https://jigsaw.w3.org/css-validator/ . Если есть ошибка, необходимо их устранить.

 

3. Проверьте HTML на стандарты. То же, что и во втором пункте, только проверка HTML. Сейчас это  можно сделать по ссылке http://validator.w3.org/

 

4. Проверьте сайт на наличие JS ошибки. Для этого, проще всего открыть сайт (несколько страниц) в хроме, нажать f12 (в windows) и перейти на вкладку Консоль.

На картинке видно, что на сайте 10 ошибок. По хорошему там должно быть 0.

error1

 

5. Проверить сайт на загрузку всех файлов. Так же нажимаем f12 и переходим на вкладку Network. Перезагружаем страницу, и смотрим, чтобы не было красных строк с ошибками 404 или 500.

На примере видно, что они файл не загружен. 404 — ошибка, означает, что файл не найден. На новом сайте, при приемке такое не должно быть.

error2

Хочется заметить, что это не универсальный способ проверить, все ли файлы, которые есть на сайте, загружаются. Если у вас есть доступ к серверу, посмотрите в логах сервера, есть ли ошибки 404 или 500. Но если это внешний файл, ошибки 404 не будет в логах, в этом случае подходит только просмотр через хром.

6. Проверьте, что ваш сайт успешно работает (загружается) при отключенном интернете. Возможно, какие то JS подключены с внешних источников, вот так:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

на примере фрейворк jquery загружается с гугл сдн.  Если сайт гугл перестанет работать, ваш сайт не должен пострадать. Это легко сделать следующим образом

<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>

Если вы во всем этом ничего не понимаете, просто проверьте, что сайт будет работать при «отключенном» интернете.

7. Проверьте, что все кнопки из социальных сетей загружаются только после загрузки сайта. Ни один раз уже было такое, что на фейсбуке, вконтакте проблемы, их код мне нравиться не загружается. Что происходит в таком случае? У пользователя ваш сайт всегда находится в состоянии «идет загрузка страницы».

Как это сделать?  Используйте обработчик load в jQuery

 $(window).load(function() {
 $('<script/>').attr('src', 'https://apis.google.com/js/plusone.js').appendTo('body');
 });

На примере показано, что кнопка g+ будет загружена только после того, как ваш сайт успешно загружен. В этом случае у вас не будет провисание в скорости загрузки сайта, даже в том случае, если apis.google.com перестал работать.

Хочется заметить, что в некоторых организациях есть так называемые черные списки, в которых занесены все соц сети. У этих пользователей всегда недоступны кнопки лайки из соц сетей, и в этом случае, без обработки, ваш сайт у таких пользователей будет очень долго открываться.

 

продолжение следует.

 

 

 

 

 

Принудительно запускаем fsck во время следующей перезагрузки

По некоторым причинам вам может понадобиться принудительно заставить систему выполнить fsck во время перезагрузки. Для этого достаточно создать пустой файл с именем forcefsck в вашей системе

touch /forcefsck


Проверить диск

umount /dev/sdb1 #thumb drive
fsck -AR -y

Быстро вставить из Ворда

Заказчик часто присылает отформатированный текст в ворде. Его надо перенести на сайт, с сохранением табличек, список и тд. Но если выделить все это и вставить в WYSIWYG, вы получите много лишних тегов MS OFFICE. они примерно такие:

<h1 align="left" style="margin: 6pt 0cm 12pt; text-indent: 0cm; page-break-before: always;">
<o:p></o:p>

ужас ужас, грязь, и мусор.

Чтобы этого не было, лучше вначале вставить сюда http://ckeditor.com/demo переключиться на исходник, и тогда уже все вставить на сайт.

Но я еще перед этим удаляю STYLE, у меня свои стили для сайта. Это делается через Sublime — EDIT — TAG — REMOVE

Notepad++

Я обожаю эффективно работать.

Если что-то делаешь долго, и это очень не нравиться, нужно делать так, чтобы это было легко и быстро.

У меня всегда открыт notepad++ с 10 вкладками для всего.  Если нужно что-то записать, сразу туда.

Одна из фич notepad++ это multi cursor, который есть в саблайме, пхпшторм, да наверное везде он.

Включается он так:

multiEdit

Бекап mysql routines

Недавно столкнулся с такой проблемой. Развернул бекап mysql базы в среде разработке, и не нашел хранимые процедуры. Бекап я делаю через штатную програмку mysqldump. Она хороша тем, что это официальный инструмент для бекапа, он входит в пакет mysql.

Итак, чтобы mysqldump сохранял процедуры, нужно добавить ключ

--routines

Полностью команда:

#!/bin/sh
data=`/bin/date +%d.%m.%Y_%H-%M-%S`
/usr/bin/mysqldump --user=root --password=pass --routines name_db > /root/sql/sql-dump_${data}.sql

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

А так можно всю БД забекапить

/usr/local/bin/mysqldump --all-databases --default-character-set=utf8 --user=root --password=passroot > /home/webmaster/sql-dump.sql

Путь до mysqldump  может быть другой.

Узнать его можно командой

which

which mysqldump

Атака SlowHTTP

Есть такой вид атаки SlowHTTP. Это когда берется большой файл (1мб хватит) и начинает «тянуться» клиентом оооочень долго. При этом сокет сервера занят. 256  сокетов может открыть apache (если нет nginx).  Чем интересна данная атака, что для нее не нужно много ресурсов. Мне удавалось программой slowhttptest повесить свои, вполне серьезные продакшен сервера.

Решается эта проблема ограничением на соединение от одного IP, в примере 50 соединений на 80 порт с одного IP.

-A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset

Sendmail-заглушка для Linux

Оригинал статьи тут — http://habrahabr.ru/post/49665/

Заглушка для почты на сервере разработки:

#!/bin/sh 
prefix="/var/mail/sendmail/new"
numPath="/var/mail/sendmail"

if [ ! -f $numPath/num ]; then 
echo "0" > $numPath/num 
fi 
num=`cat $numPath/num` 
num=$(($num + 1)) 
echo $num > $numPath/num 

name="$prefix/letter_$num.txt"
while read line 
do 
echo $line >> $name
done 
chmod 777 $name
/bin/true

Скрипт сохраняем в папку /usr/bin под любым угодным вам именем и делаем исполняемым (sudo chmod +x). Я использовал fake_sendmail.sh.

Теперь все исходящие письма будут складываться в /var/mail/sendmail. Так же необходимо выставить для папки права на запись. (chmod 777 -R /var/mail/sendmail).

Примечание:
Для сбора писем почтовиком (о чем ниже), нужно в этой папке создать следующую структуру папок:
/var/mail/sendmail/
— cur
— new
— tmp
И дать права на запись.

Настройка PHP.
У меня стоит Кубунта, так что все пути относительно нее. Итак, находим в папке /etc/php5/apache2 файл php.ini и меняем в нем путь к sendmail на:

sendmail_path = /usr/bin/fake_sendmail.sh.