Плагин https://raw.githubusercontent.com/carhartl/jquery-cookie/master/src/jquery.cookie.js // read the current/previous setting $("#dont_show_message").each(function() { var name = $(this).attr('name'); if ($.cookie(name) && $.cookie(name) == "true") { $(this).prop('checked', $.cookie(name)); } }); // event management $("#dont_show_message").change(function() { var name = $(this).attr("name"); $.cookie(name, $(this).prop('checked'), { path: '/', expires: 365 }); });
Рубрика: Программирование
Отправка почты через postfix
Шаг 1. Нужно заиметь учётку на работающем почтовике, чтобы мы могли юзать его как relay. Делается не сложно, просто обращаемся к админу того сервера с соответсвующей просьбой. Ну реализацию этого шага я думаю по деталям разъяснять не стоит. Шаг 2. Открываем /etc/postfix/main.cf и ищем там настройку relayhost. Она отвечает за пересылку почты через релай. Указываем адрес, по которому нам доступен почтовик в локалке. relayhost = [mail.local] Тут mail.local - это и есть этот адрес. Шаг 3. Авторизация на релай-сервере. Отрываем тот же /etc/postfix/main.cf и дописываем такие строки: defer_transport = smtp smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/saslpass Это мы активировали функию авторизации через SASL. Учтите, если авторизация какая-то хитро-мудрая, то этот способ может не подойти, на этот счёт лучше поговорить с вашим админом. Далее в файо /etc/postfix/saslpass, который мы указали раннее прописываем логин а пароль от сервера. mail.local relayuser@mail.local:password На всякий случай комментирую: первое - это адрес сервера, второе - логин, третье (после двоеточия) - это пароль. После этого создаём хешированную таблицу (которую postfix и будет читать). # postmap /etc/postfix/saslpass Остаётся перегрузить настройки postfix. # /etc/init.d/postfix reload Вот собственно и всё. Можно работать. Главное корректно задавать адрес отправителя в заголовках, ибо может не прокатить. честно стырено с http://adment.org.ua/admin/21-postfix-relay
Amazon S3 около четырех часов работал с перебоями
28 февраля 2017 года, примерно в 21:00 по московскому времени перестали отвечать сервисы amazon s3 US-EAST-1 региона. Продолжалось все это безобразие 4 часа 17 минут, в это время не работали задачи Trello, платформа Coursera, сервис вопросов Quora, пользователи жаловались на проблемы в работе Open Whisper Systems, Quora, IFTTT, рассылок Sailthru, Business Insider, Giphy, Medium, Slack, Coursera, различных фотохостингов и так далее.
Что же случилось? Если вкратце — человеческая ошибка, один из админов выполнил команду группового удаления сервисов, но вместо одной (небольшой) группы серверов, он выключил другую, почти целиком остановив биллинг (и все остальное) на S3 в этом регионе.
https://aws.amazon.com/ru/message/41926/
Стоит добавить, что недавно, 31 января 2017 так же из-за человеческой ошибки пострадал GitLab, когда сотрудник их компании, хотел почистить слейв БД, дропнув ее, но перепутал сервера, и дропнул мастер.
https://docs.google.com/document/d/1GCK53YDcBWQveod9kfzW-VCxIABGiryG7_z_6jHdVik/pub
Пробуем поставить jira через docker
Инициализация нового винчестера в centos
Инициализация нового винчестера в centos без перезагрузки
ls -l /sys/class/scsi_host/
grep mpt /sys/class/scsi_host/host0/proc_name
echo "- - -" > /sys/class/scsi_host/host0/scan
Поиск больших файлов на сервере
Поиск больших файлов на сервере
find /home -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
Сертификаты
Еще раз про сертификаты для сервера.
Если что то не выходит делаем следующие проверки.
1. ключ подходит с серитфикату.
Проверяем MD5 ключа и сертификата:
# openssl rsa -noout -modulus -in serov.1.key | openssl md5 (stdin)= 777711dbbab90e1b12e922bbdbde6716 # openssl x509 -noout -modulus -in serov.crt | openssl md5 (stdin)= 910a2dd2db8510094383563ed18c056d
Если строчки разные, то ключ не подходит к сертификату.
Ну и можно посмотреть что внутри
- Check a Certificate Signing Request (CSR)
openssl req -text -noout -verify -in CSR.csr
- Check a private key
openssl rsa -in privateKey.key -check
- Check a certificate
openssl x509 -in certificate.crt -text -noout
Сортировка данных в php
Например, у нас есть какой то набор данных, в stdClass. Он многомерный, и его надо сортировать, например по дате.
Делаем первое
array_walk_recursive($t, function(&$t) {return $t->date=strtotime($t->Created);});
Здесь мы создаем дополнительный элемент, к каждому набору записи, в которую записываем unix timestamp для сравнения.
Далее, сортируем набор данных по полю date
usort($t, function($a, $b){ return ($b->date - $a->date); });
Не знаю, насколько это быстрее foreach или for, пока у меня не было несколько миллиардов записей, а до 1000 записей, существенной разницы не увидим.
Для более сложной сортировки, лучше использовать array_multisort, но это уже только для массива, хотя stdClass позволяет работать как с массивом.
Архивирование логов
Бывает так, что на машине остается ну например 5gb места, и все свободное место забито логами.
Чтобы легко выйти из этой ситуации, достаточно выполнить команду архивирования с удалением файлов.
// переименовываем папку logs с текущей датой tar --remove-files -cvzf logs_03_11_2015.tar.gz logs_03_11_2015
После добавление файла в архив, он будет тут же удален.
Если совсем все плохо, и надо перетащить файлы на винте, где совсем нет место, можно сделать это по сети.
tar cvf - / | ssh -p2222 ted@8.8.8.8 "cat > archive.tar"
тут мы все что в корне отправляем на сервер 8.8.8.8 по 2222 порту под пользователем ted
Тернарная условная операция
Тернарная условная операция или как часто любят говорить краткая запись if может принести много беды, если не понимать некоторых тонкостей.
Синтаксис следующий
Синтаксис:
expression ? true_value : false_value
expression
. Если значение выражения expression
истинно (true), то возвращается значение выражения true_value
, иначе возвращается false_value
.$id = '1212'; $id = empty($id) ? $id : 1;
Однако все не так просто. Что если передадут в id буквы?
$id = 'asdas'; $id = empty($id) ? $id : 1; // выведет asdas
Заюзаем проверку на число
$id = is_numeric($id) ? $id : 1;
Но и тут, можно передать отрицательное число, что не есть хорошо, или 001, что может привести к проблемам в некоторых случаях, тогда запишем так
$id = is_numeric($id) && $id>0 ? (int)$id : 1;
Но мы можем развернуть эту схему в классический if else, т.е. сделать записать в одном из операндов выражение.
<?php $id = 'sfg'; is_numeric($id) && $id>0 ? $id=(int)$id : $id=1; echo $id;
Идентично
if (is_numeric($id) && $id>0){ $id=(int)$id; }else{ $id=1; }
Путаница для новичков возникает при первом просмотре примерно такого выражения, когда, вроде как переменной идет присвоение какого то выражения, а на выходе получаем совсем другое.
<?php $id = '21'; $id = (is_numeric($id) && $id>0) && $id!=1 ? (int)$id : 1; echo $id;