blockdev --rereadpt /dev/sdb
суббота, 29 октября 2011 г.
воскресенье, 29 мая 2011 г.
public ipv6 dns
Живые
Hurricane Electric
- ordns.he.net: 2001:470:20::2 (globally anycasted in 11 countries)
ISC
- f.6to4-servers.net: 2001:4F8:0:2::14
И еще куча дохлых
http://www.getipv6.info/index.php/DNS_and_Naming_Issues#Recursive_DNS_server
среда, 16 февраля 2011 г.
тонкости regexp в sed
http://blog.perlover.com/2009/10/29/sed-regexp/
отличия:
| В языке Perl | В sed редакторе | Пояснение |
|---|---|---|
| (…) | \(…\) | Группировка |
| {X,Y} | \{X,Y\} | Заданный множитель |
| + | \+ | Повторитель – один и более раз |
| ? | \? | Повторитель – один или ноль раз |
| \bfoo\b | \ | поиск ‘foo’ с границами слова |
| $1, $2 | \1, \2 | Подмена на группу |
воскресенье, 30 января 2011 г.
монтируем qcow образ в debian
apt-get install kvm
modprobe nbd max_part=8
kvm-nbd --connect=/dev/nbd0 ubuntu.10-10.x86-64.20101010.qcow
fdisk -l /dev/nbd0
Disk /dev/nbd0: 10.4 GB, 10485760000 bytes
4 heads, 32 sectors/track, 160000 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x00013a61
Device Boot Start End Blocks Id System
/dev/nbd0p1 1 160000 10239984 83 Linux
mount /dev/nbd0p1 /mnt/test
ls /mnt/test/
bin dev home lib lost+found mnt proc sbin srv tmp var
boot etc initrd.img lib64 media opt root selinux sys usr vmlinuz
umount /mnt/test
kvm-nbd -d /dev/nbd0
/dev/nbd0 disconnected
четверг, 21 октября 2010 г.
mount loop offset
losetup --find --offset 512 file
losetup -a
mkfs.ext3 /dev/loop1
losetup -d /dev/loop1
http://wiki.eeeuser.com/howtocustomrestoreimage:pt2mkcustomimage
суббота, 18 сентября 2010 г.
mtop/mytop in centos
mtop (Mysql Top)
http://packages.sw.be/mtop/
yum -y install perl-Curses
wget http://packages.sw.be/mtop/mtop-0.6.6-1.2.el5.rf.noarch.rpm
rpm -ivh mtop-0.6.6-1.2.el5.rf.noarch.rpm
yum -y install perl-TermReadKey perl-DBD-MySQL perl-DBI perl-Curses
wget http://packages.sw.be/mytop/mytop-1.4-2.el5.rf.noarch.rpm
rpm -ivh mytop-1.4-2.el5.rf.noarch.rpm
mytop -u root --prompt -d mysql
http://packages.sw.be/mtop/
yum -y install perl-Curses
wget http://packages.sw.be/mtop/mtop-0.6.6-1.2.el5.rf.noarch.rpm
rpm -ivh mtop-0.6.6-1.2.el5.rf.noarch.rpm
yum -y install perl-TermReadKey perl-DBD-MySQL perl-DBI perl-Curses
wget http://packages.sw.be/mytop/mytop-1.4-2.el5.rf.noarch.rpm
rpm -ivh mytop-1.4-2.el5.rf.noarch.rpm
mytop -u root --prompt -d mysql
понедельник, 13 сентября 2010 г.
puppet replace some lines in files
http://projects.puppetlabs.com/projects/1/wiki/Simple_Text_Patterns
define replace($file, $pattern, $replacement) {
exec { "/usr/bin/perl -pi -e 's/$pattern/$replacement/' '$file'":
onlyif => "/usr/bin/perl -ne 'BEGIN { \$ret = 1; } \$ret = 0 if
/$pattern/ && ! /$replacement/ ; END { exit \$ret; }' '$file'",
}
}
Example:
replace { "/etc/bashrc":
file => "/etc/bashrc",
pattern => "PS1",
replacement => "PS1 DOMAINA.COM"
}
вторник, 7 сентября 2010 г.
Некоторые малоизвестные факты о программировании
Программист тратит 10-20% своего времени на написание собственно кода, и большинство программистов пишут всего 10-12 строк кода в день, которые попадают в конечный продукт, независимо от их уровня. Хорошие программисты тратят большую часть оставшихся 90% времени на размышления, исследования и эксперименты в поисках наилучшего решения. Плохие программисты тратят это время на отладку, случайные изменения в коде и последующую проверку его на работоспособность.
«Хороший токарь работает в несколько раз лучше среднего, но хороший программист стоит в 10000 раз больше, чем обычный»
Билл Гейтс.
Хороший программист в 10 раз более продуктивен, чем средний. Отличный программист в 20-100 раз более продуктивен, чем средний. И это не преувеличение — исследования, проводящиеся с 1960-х годов, чётко это показывают. Плохой программист не просто непродуктивен: он не только не выполняет свою работу, но ещё и создаёт проблемы, которые приходится решать другим.
Лучшие программисты тратят очень немного времени на написание кода. По крайней мере того, который попадает в конечный продукт. Программисты, тратящие много времени на код либо слишком ленивы, либо слишком безграмотны, либо слишком высокомерны, чтобы искать существующие решения старых проблем. Отличные программисты — мастера определения и использования стандартных подходов. Хорошие не боятся постоянного рефакторинга в поисках идеальной архитектуры. Плохие же пишут код, которому недостаёт концептуальной целостности, лаконичности, иерархичности, шаблонов проектирования, и его невероятно сложно рефакторить. Проще выбросить плохой код на помойку и начать заново, чем что-то менять в нём.
Программы подчиняются закону энтропии, как и всё остальное во Вселенной. Непрерывные изменения вызывают разрушение программ, которое нарушает целостность изначальной архитектуры. Это неизбежно, но программисты, не принявшие во внимание вопросы целостности, пишут программы, которые разрушаются настолько быстро, что становятся ненужными ещё до своего завершения. Энтропическая ошибка целостности, вероятно, самая распространённая ошибка, приводящая к провалу проектов. А вторая по распространённости — это создание программы, идущей вразрез с желаниями клиента. Разрушение программ замедляет прогресс разработки экспоненциально, поэтому многие проекты приходят к лавинообразно нарастающим срывам бюджета и сроков, и это продолжается до тех пор, пока их окончательно не уничтожат.
В исследовании 2004-го года было обнаружено, что большая часть программных проектов (51%) сталкиваются с критическими проблемами (срыв сроков, превышение бюджета, невыполнение обязательств, нарушения функционала и т.п. — прим. пер.), а 15% полностью проваливаются. Это лучше, чем в 1994-м, когда последних было 31%.
Хотя большая часть программ создаётся командами, это не есть демократическая деятельность. Обычно всего один человек является ответственным за архитектуру, остальные — лишь кодеры.
Программирование — тяжёлый труд. Это очень напряжённая умственная деятельность. Хорошие программисты думают о работе 24 часа 7 дней в неделю. Они пишут лучший код в душе и в своих снах. Поскольку самая важная работа делается вдали от клавиатуры, разработку программных проектов нельзя ускорить, заставляя людей больше работать в офисе, или добавив новых людей в проект.
http://habrahabr.ru/blogs/arbeit/102620/
суббота, 21 августа 2010 г.
debian lenny xen XENBUS: Waiting for devices to initialise...
В Lenny бажный tap:aio
Лечится так
ln -s /usr/lib/xen-3.2-1/bin/tapdisk /usr/sbin
echo xenblktap >> /etc/modules
modprobe xenblktap
/etc/init.d/xend restart
Лечится так
ln -s /usr/lib/xen-3.2-1/bin/tapdisk /usr/sbin
echo xenblktap >> /etc/modules
modprobe xenblktap
/etc/init.d/xend restart
четверг, 19 августа 2010 г.
screen
Ctrl-a q
Send a start signal (associated with Ctrl-q by terminals) to current window. (xon)
Ctrl-a s
Send a stop signal (associated with Ctrl-s by terminals) to current window. (xoff)
Ctrl-a Z
Reset virtual terminal to its "power-on" values. (reset)
http://www.oreillynet.com/linux/cmd/cmd.csp?path=s/screen
Send a start signal (associated with Ctrl-q by terminals) to current window. (xon)
Ctrl-a s
Send a stop signal (associated with Ctrl-s by terminals) to current window. (xoff)
Ctrl-a Z
Reset virtual terminal to its "power-on" values. (reset)
http://www.oreillynet.com/linux/cmd/cmd.csp?path=s/screen
вторник, 17 августа 2010 г.
perl file tests
Getting File Information
You can test certain features very quickly within Perl using a series of test operators known collectively as -X tests.
For example, to perform a quick test of the various permissions on a file, you might use a script like this:
http://www.tutorialspoint.com/perl/perl_files.htm
You can test certain features very quickly within Perl using a series of test operators known collectively as -X tests.
For example, to perform a quick test of the various permissions on a file, you might use a script like this:
#/usr/bin/perl
my (@description,$size);
if (-e $file)
{
push @description, 'binary' if (-B _);
push @description, 'a socket' if (-S _);
push @description, 'a text file' if (-T _);
push @description, 'a block special file' if (-b _);
push @description, 'a character special file' if (-c _);
push @description, 'a directory' if (-d _);
push @description, 'executable' if (-x _);
push @description, (($size = -s _)) ? "$size bytes" : 'empty';
print "$file is ", join(', ',@description),"\n";
}
Here is the list of features which you can check for a file
Operator Description
-A Age of file (at script startup) in days since modification.
-B Is it a binary file?
-C Age of file (at script startup) in days since modification.
-M Age of file (at script startup) in days since modification.
-O Is the file owned by the real user ID?
-R Is the file readable by the real user ID or real group?
-S Is the file a socket?
-T Is it a text file?
-W Is the file writable by the real user ID or real group?
-X Is the file executable by the real user ID or real group?
-b Is it a block special file?
-c Is it a character special file?
-d Is the file a directory?
-e Does the file exist?
-f Is it a plain file?
-g Does the file have the setgid bit set?
-k Does the file have the sticky bit set?
-l Is the file a symbolic link?
-o Is the file owned by the effective user ID?
-p Is the file a named pipe?
-r Is the file readable by the effective user or group ID?
-s Returns the size of the file, zero size = empty file.
-t Is the filehandle opened by a TTY (terminal)?
-u Does the file have the setuid bit set?
-w Is the file writable by the effective user or group ID?
-x Is the file executable by the effective user or group ID?
-z Is the file size zero?
http://www.tutorialspoint.com/perl/perl_files.htm
установка magickwand for php на debian
в системе уже должны быть установлены следующие пакеты
imagemagick
libmagic1
libmagick10
libmagick9-dev
php5-dev
Качаем http://www.magickwand.org/download/php/MagickWandForPHP-1.0.7.tar.gz
1.0.8 на lenny не соберется, т.к. ей требуется более свежий imagemagick
wget http://www.magickwand.org/download/php/MagickWandForPHP-1.0.7.tar.gz
tar -xzvf MagickWandForPHP-1.0.7.tar.gz
cd ./MagickWandForPHP-1.0.7/
phpize
ln -s /usr/bin/Wand-config /usr/bin/MagickWand-config
./configure
sed -i 's/-lMagickWand//g' Makefile
sed -i 's/-lMagickCore//g' Makefile
make
make install
vi /etc/php5/conf.d/magickwand.ini
[magickwand]
extension="magickwand.so"
imagemagick
libmagic1
libmagick10
libmagick9-dev
php5-dev
Качаем http://www.magickwand.org/download/php/MagickWandForPHP-1.0.7.tar.gz
1.0.8 на lenny не соберется, т.к. ей требуется более свежий imagemagick
wget http://www.magickwand.org/download/php/MagickWandForPHP-1.0.7.tar.gz
tar -xzvf MagickWandForPHP-1.0.7.tar.gz
cd ./MagickWandForPHP-1.0.7/
phpize
ln -s /usr/bin/Wand-config /usr/bin/MagickWand-config
./configure
sed -i 's/-lMagickWand//g' Makefile
sed -i 's/-lMagickCore//g' Makefile
make
make install
vi /etc/php5/conf.d/magickwand.ini
[magickwand]
extension="magickwand.so"
локальная установка модулей php
Имеется хостинг сервер debian linux с панелью ispmanager и php в режиме fastcgi
Требуется установить расширение php для определенного пользователя, не затрагивая при этом глобальную конфигурацию.
Рассмотрим пример с пользователем default и расширением ssh2
cd /var/www/default/data/
sudo -u default -s
mkdir src
cd src
wget http://pecl.php.net/get/ssh2-0.11.0.tgz
tar -xzvf ssh2-0.11.0.tgz
cd ssh2-0.11.0
phpize
./configure
make
mkdir /var/www/default/data/php-bin/ext
cp modules/ssh2.so /var/www/default/data/php-bin/ext/
cd /var/www/default/data/php-bin
vi php.ini
[ssh2]
extension_dir=/var/www/default/data/php-bin/ext
extension="ssh2.so"
выполняем
php -m -c /var/www/default/data/php-bin/php.ini | less
и ищем там ssh2
на warning'и не обращаем внимания
php -i -c /var/www/default/data/php-bin/php.ini | less
и видим
ssh2
SSH2 support => enabled
extension version => 0.11.0-dev
libssh2 version => 0.18
banner => SSH-2.0-libssh2_0.18
remote forwarding => enabled
hostbased auth => enabled
polling support => enabled
publickey subsystem => enabled
Правда при этом ломаются все остальные модули, т.к. extension_dir не может содержать более одного значения
Требуется установить расширение php для определенного пользователя, не затрагивая при этом глобальную конфигурацию.
Рассмотрим пример с пользователем default и расширением ssh2
cd /var/www/default/data/
sudo -u default -s
mkdir src
cd src
wget http://pecl.php.net/get/ssh2-0.11.0.tgz
tar -xzvf ssh2-0.11.0.tgz
cd ssh2-0.11.0
phpize
./configure
make
mkdir /var/www/default/data/php-bin/ext
cp modules/ssh2.so /var/www/default/data/php-bin/ext/
cd /var/www/default/data/php-bin
vi php.ini
[ssh2]
extension_dir=/var/www/default/data/php-bin/ext
extension="ssh2.so"
выполняем
php -m -c /var/www/default/data/php-bin/php.ini | less
и ищем там ssh2
на warning'и не обращаем внимания
php -i -c /var/www/default/data/php-bin/php.ini | less
и видим
ssh2
SSH2 support => enabled
extension version => 0.11.0-dev
libssh2 version => 0.18
banner => SSH-2.0-libssh2_0.18
remote forwarding => enabled
hostbased auth => enabled
polling support => enabled
publickey subsystem => enabled
Правда при этом ломаются все остальные модули, т.к. extension_dir не может содержать более одного значения
понедельник, 16 августа 2010 г.
apache2 mod_vhost_limit
Restrict the number of simultaneous connections per vhost
sources http://sisyphus.ru/en/srpm/Sisyphus/apache2-mod_vhost_limit/sources
Install
tar -xzvf mod_vhost_limit-0.2.tgz
cd mod_vhost_limit-0.2/
apxs2 -i -c -n mod_vhost_limit.so mod_vhost_limit.c
vi httpd.conf
LoadModule vhost_limit_module modules/mod_vhost_limit.so
ExtendedStatus On
MaxVhostClients 30
Save and restart apache
In apache error.log
[Tue Aug 17 02:17:46 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (11 currently)
[Tue Aug 17 02:18:55 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (13 currently)
[Tue Aug 17 02:18:55 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (12 currently)
sources http://sisyphus.ru/en/srpm/Sisyphus/apache2-mod_vhost_limit/sources
Install
tar -xzvf mod_vhost_limit-0.2.tgz
cd mod_vhost_limit-0.2/
apxs2 -i -c -n mod_vhost_limit.so mod_vhost_limit.c
vi httpd.conf
LoadModule vhost_limit_module modules/mod_vhost_limit.so
ExtendedStatus On
MaxVhostClients 30
Save and restart apache
In apache error.log
[Tue Aug 17 02:17:46 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (11 currently)
[Tue Aug 17 02:18:55 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (13 currently)
[Tue Aug 17 02:18:55 2010] [warn] Vhost Limit : Access to domain.com deferred, Max Clients 10 exceeded (12 currently)
mod_slotlimit
http://sourceforge.net/projects/mod-slotlimit/
Модуль для организации ограничений для защиты от излишнего потребления ресурсов в системах массового хостинга. Возможно определить процент от общего объема обращений к apache, которое не может превысить один сайт (например, чтобы каждый сайт не мог потребить больше 15% общих ресурсов). Также позволяет определить максимальное число одновременных коннектов или число одновременных обращений от одного IP для каждого сайта.
PS.
Код ужасен. Радует то что его мало.
Можно написать свой, максимально коротко и ясно.
Модуль для организации ограничений для защиты от излишнего потребления ресурсов в системах массового хостинга. Возможно определить процент от общего объема обращений к apache, которое не может превысить один сайт (например, чтобы каждый сайт не мог потребить больше 15% общих ресурсов). Также позволяет определить максимальное число одновременных коннектов или число одновременных обращений от одного IP для каждого сайта.
PS.
Код ужасен. Радует то что его мало.
Можно написать свой, максимально коротко и ясно.
воскресенье, 15 августа 2010 г.
PHP 5.2.10 и выше конфликтует с Zend Optimizer до версии 3.3.3 включительно
PHP 5.2.10 и выше конфликтует с Zend Optimizer до версии 3.3.3 включительно.
Использование PHP 5.2.10 и выше возможно с Zend Optimizer версии 3.3.4/3.3.9 и выше.
http://www.hostcms.ru/forums/22/2992/
Использование PHP 5.2.10 и выше возможно с Zend Optimizer версии 3.3.4/3.3.9 и выше.
http://www.hostcms.ru/forums/22/2992/
суббота, 14 августа 2010 г.
perl generate random string
sub generate_random_string
{
my $length_of_randomstring=shift;# the length of
# the random string to generate
my @chars=('a'..'z','A'..'Z','0'..'9','_');
my $random_string;
foreach (1..$length_of_randomstring)
{
# rand @chars will generate a random
# number between 0 and scalar @chars
$random_string.=$chars[rand @chars];
}
return $random_string;
}
print generate_random_string(14);
вторник, 1 июня 2010 г.
понедельник, 17 мая 2010 г.
четверг, 6 мая 2010 г.
Подписаться на:
Сообщения (Atom)
