Тестируем скорость канала между серверами.

Есть много способов как это сделать, но мне больше всего нравиться использовать утилиту iperf

И так, для начала устанавливаем epel репозитарий, как это сделать можно прочесть тут. Теперь :

yum install iperf

на одном, и на втором сервере. Далее, на машинке получателе запускаем —

iperf -s -p 65000

а на машинке которая будет отдавать выполняем

iperf -c [ip сервера] -p 65000

Количество просмотров :13188

Samba: Unable to connect to CUPS server

Если вы не собираетесь использовать на вашем Samba сервере принтеры, и в smbd.log постоянно появляется вот такая ошибка:

Unable to connect to CUPS server localhost:631 – Connection refused

Для, того, что бы избавиться от этой ошибки достаточно добавить в конфиг:

load printers = no
show add printer wizard = no
printing = none
printcap name = /dev/null
disable spoolss = yes

Количество просмотров :6976

Устанавливаем временную зону

Создаем ссылку на обновленную временную зону. Я живу в Киеве, поэтому моя зона Europe/Kiev:

ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime

Проверяем установленную зону в файле /etc/sysconfig/clock

cat /etc/sysconfig/clock | grep ZONE

Вот и все, проверяем при помощи

date

Количество просмотров :4208

Подключаемся по VPN через iptables nat

Вот, столкнулся с такой ситуацией, пользователи за шлюзом, на шлюзе вся подсеть натиться без ограничений, а вот VPN работать не хочет. Решение оказалось простым, все что нужно, это подгрузить следующие модули — ip_gre, ip_nat_pptp, ip_conntrack_pptp. Подгрузить можно вот так:

modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp

Количество просмотров :4135

Бэкапы виртуальных машин в VMWare ESXi

Как не странно, но это действительно большая проблема, так как специальных утилит для этого нет, а то что есть немного мудрено, ведь можно сделать проще:

#!/bin/sh

sourcedir=/vmfs/volumes/datastore1
backupdir=/vmfs/volumes/nfs-backup

for i in `vim-cmd vmsvc/getallvms|awk '{print($1 "-" $2)}'`; do
if [ $i != "Vmid-Name" ]; then
vmid=${i%%-*}
vmfs=${i#*-}

mkdir $backupdir/$vmfs.`date +%d.%m.%Y`
vim-cmd vmsvc/snapshot.create $vmid $vmfs@snap $vmfs@snap includeMemory 0
for j in `ls $sourcedir/$vmfs`; do
cat $sourcedir/$vmfs/$j | gzip > $backupdir/$vmfs.`date +%d.%m.%Y`/$j.gz
done
vim-cmd vmsvc/snapshot.removeall $vmid
fi
done

cd $backupdir; find . -type d -mtime +5 -exec rm -rf {} \;

/vmfs/volumes/nfs-backup – соответственно nfs диск где будут лежать бэкапы
/vmfs/volumes/datastore1 – хранилище виртуальных машин


Количество просмотров :3388

Кодирование и Декодирование файлов при помощи OpenSSL

Если вам вдруг понадобилось зашифровать данные, то вы можете воспользоваться openssl-ем. Для кодирования:

openssl des3 -salt -in $FILENAME -out ${FILENAME}.des3

и для того, что декодировать:

openssl des3 -d -salt -in ${FILENAME}.des3 -out ${FILENAME}

Количество просмотров :2531

Php переводим при помощи Google

Используя специальный api вы можете переводить текст вашего сайта «на лету». Для этого вам понадобиться следующая функция:

<?php
function gtranslate($s_text, $s_lang, $d_lang){
//определяем переменную, которая содержит api url Google Translate
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($s_text)
."&langpair=".urlencode($s_lang.'|'.$d_lang);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://eddnet.org");
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}  
?>

Использовать можно так :

$text=gtranslate($text, «ru», «uk»);

Количество просмотров :4597

Php PDO работаем с MySQL

Кто-то пишет свой набор функций для работы с MySQL, кто-то работает с фреймворками где обычно есть полный набор необходимых инструментов, а мне вот например нравиться PDO. И так, для подключения к базе —

<?php
$dbhost ='localhost';
// username and password to log onto db server
$dbuser ='user';
$dbpass ='password';
// name of database
$dbname='base';
//Charset
$sqlchar='utf8';


$db = new PDO ( 'mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
$db->query ( 'SET character_set_connection = '.$sqlchar );
$db->query ( 'SET character_set_client = '.$sqlchar );
$db->query ( 'SET character_set_results = '.$sqlchar );
?>

Получаем одну строку:

$row = $db->query(«select row from tablename WHERE 1;»)->fetch();

Все строки

$row = $db->query(«select row from tablename WHERE 1;»)->fetchAll();

Определения кода ошибки

$ercode = $db->exec(«delete from tablename where id='».$id.»‘;»)->errorCode();
print_r($ercode);

Определения последнего ID

$lastid = $db->lastInsertId();

Определение количества строк

$player_stat = $db->query(«SELECT COUNT(*) FROM players WHERE name = ‘».$val[‘name’].»‘;»)->fetchColumn()

Вставить новую строку, если данные хранятся в массиве $t в формате $t[название столбца] = данные

$q = $db->prepare(«INSERT INTO table («.(implode(«,»,array_keys($t))).») VALUES (‘».(implode(«‘,'»,$t)).»‘);»)->execute();

Изменяем строку

$db->prepare(«UPDATE table SET column=’data’ WHERE id = ‘1’;»)->execute();

Для того что бы проверить подключены ли модуль php-pdo и php-pdo_mysq:

<?php
if ( !extension_loaded('pdo')  ){
....
}elseif ( !extension_loaded('pdo_mysql') ) {
....
}
?>



Количество просмотров :13696

Js Spoiler или исчезающие div-ы

И так, пускай нам нужно по клику прятать и открывать контент. Демка скрипта Для этого можно использовать следующий скрипт:

<script language="javascript">
function toggle_start() {
var ele = document.getElementById("toggleStart");
var text = document.getElementById("displayStart");
if(ele.style.display == "block") {
ele.style.display = "none";
text.innerHTML = "Start";
}
else {
ele.style.display = "block";
text.innerHTML = "Start";
}
}
</script>

Размещаем данный скрипт в body. Далее нам нужна ссылка нажимая на которую мы будем показывать и прятать содержимое:

<a id=»displayStart» class=»» href=»javascript:toggle_start();» target=»»>Start</a>

и теперь сам контент:

<div id=»toggleStart» style=»display: none;»>
START! START! START!
</div>

Количество просмотров :3262

JS обновляем кусочек кода с помощью jquery и ajax

И так, предположим, что вам необходимо с определенным интервалом обновлять определенный кусочек кода, сделать это можно при помощи jquery. Посмотреть демку. Для это как всегда качаем jquery отсюда. Подключаем:

<script type="text/javascript" src="js/jquery.js"></script>

Далее сам скрипт:

<script type="text/javascript">
$(document).ready(function() {
$("#load").load("http://eddnet.org/demo/time.php");
var refreshId = setInterval(function() {
$("#load").load('http://eddnet.org/demo/time.php');
}, 30000);
$.ajaxSetup({ cache: false });
});
</script>

где http://eddnet.org/demo/time.php это обновляемый контент, а 30000 это время обновления в миллисекундах

Контент будет выведен в:

<div id=»load»></div>

Количество просмотров :3219