Инициализация нового винчестера в centos без перезагрузки
ls -l /sys/class/scsi_host/
grep mpt /sys/class/scsi_host/host0/proc_name
echo "- - -" > /sys/class/scsi_host/host0/scan
Инициализация нового винчестера в 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
Если строчки разные, то ключ не подходит к сертификату.
Ну и можно посмотреть что внутри
openssl req -text -noout -verify -in CSR.csr
openssl rsa -in privateKey.key -check
openssl x509 -in certificate.crt -text -noout
Например, у нас есть какой то набор данных, в 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;
1.php Создадим объект класса и запишем его в массив.
<?php $std = new stdClass(); $std->first = 1; session_start(); $_SESSION['test1'] = $std; print_r($_SESSION['test1']);
2.php В другом файле прочитаем его.
<?php session_start(); $std = $_SESSION['test1'] ; $std->first = 'first';
3.php В третьем файле выводим
<?php session_start(); print_r($_SESSION['test1']->first);
Что получим? Правильно
first
Хотя мы не записывали переменную std в Сессию, так как это объект, str ссылается на объект, который в сессии, и при изменение его, мы меняем этот же объект в сессии.
То же самое правильно для функции.
При передачи объекта в функцию, при модификации объекта в функции он изменяется и после нее.
В линуксе стоит довольно старый хром. Version 35.0.1916.153, хотя сейчас под винду актуальна 43 версия (что? 43, вот это они штампуют)
Так, вот странный глюк поймал,
Мне нужно напротив каждого элемента, при наводке мышки выводить кнопочку,
сделал так
$(".pt10").hover(
function(){ //over
$(this).find(".send-message").show();
},
function(){ //out
$(".send-message").hide();
}
);
вроде все правильно, но хром показывает кнопку один раз, после чего больше не хочет выводить ее. В firefox все работает ок, выходит проблема врятли в коде, скорее в браузере,
и может в новой версии все хорошо.
Но стоило добавить еще один div .test2, размером 0 на 0 px, как кнопка стала отображаться вновь, при наводке.
$(".pt10").hover(
function(){ //over
$(this).find(".send-message").show();
$(this).find(".test2").show();
},
function(){ //out
$(".send-message").hide();
$(this).find(".test2").hide();
}
);
ps. после этого все же решил обновить хром в centos, и что? после этого все стало хорошо.
В линкусе он тоже 43 версии.
Интересно, если у другого пользователя будет хром старый, он получить этот баг, а как бы я о нем узнал, если бы работал под виндой и получал всегда свежее обновление. Не понятно.