За бортом по своей воле / Ален Бомбар Маленький принц / Сент-Экзюпери Богатый папа, бедный папа / Роберт Кийосаки Как разговаривать с кем угодно, когда угодно и где угодно / Ларри Кинг / оценка 5 из 10 Думай и Богатей! / Наполеон Хилл / оценка 9 из 10 Капитанская дочка ЧИЧВАРКИН Е...ГЕНИЙ. ЕСЛИ ИЗ 100 РАЗ ТЕБЯ ПОСЫЛАЮТ 99... | Максим Котин Не осилил: Я и Оно / Зигмунд Фрейд / не осилил на половине / 1/2 прочитано Очерки по психологии сексуальности / Зигмунд Фрейд / не осилил на половине / 1/4 прочитано 2021 "Деньги, успех и вы" | Кехо Джон Хватит быть славным парнем! Проверенный способ добиться желаемого в любви сексе и жизни | Гловер Роберт Нунчи. Корейское искусство предугадывать поступки людей и мягко управлять любой ситуацией | Хонг Юни Бизнес в стиле Virgin | Ричард Брэнсон Подсознание может все! | Кехо Джон Как завоевывать друзей и оказывать влияние на людей | Дейл Карнеги Самый богатый человек в Вавилоне | Клейсон Джорж Самюэль Семь навыков высокоэффективных людей | Стивен Кови В процессе Принцип сперматозоида. Учебное пособие | Михаил Литвак Как хочет женщина: Мастер-класс по науке секса Эмоциональные триггеры | Дэвид Ричо
Автор: Evgen
Инициализация нового винчестера в 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;
Область видимости объектов в памяти PHP
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 ссылается на объект, который в сессии, и при изменение его, мы меняем этот же объект в сессии.
То же самое правильно для функции.
При передачи объекта в функцию, при модификации объекта в функции он изменяется и после нее.
Любимые фильмы
- Пассажиры / Passengers (2016)
- Остров / The Island (2005)
- Время / In Time (2011)
- Обливион / Oblivion (2013)
- Прометей / Prometheus (2012)
- Интерстеллар / Interstellar (2014)
- Марсианин / The Martian (2015)
- Гравитация / Gravity (2013)
- Жизнь Пи / Life of Pi (2012)
- Я, робот / I, Robot (2004) — самый дорогой фильм для меня, в плане $$$
