понедельник, 31 декабря 2012 г.

С Новым Годом!

Дорогие друзья! Дорогие читатели! Поздравляю Вас с 2013 годом! Желаю всех благ в жизни, как можно больше счастья и времени для семьи и близких! :)

И, разумеется, поменьше проблем с техникой и побольше интересных технических задач! :) С Новым Годом!!!

вторник, 25 декабря 2012 г.

Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed


Вот такая запись в логе MySQL slave сервера на Debian 6:
Dec 20 13:51:11 node2 mysqld: 121220 16:51:11 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=mysqld-relay-bin' to avoid this problem.
Такая рекомендация вызвана тем, что стандартно mysql relay log называет в стиле: `hostname`-mysqld-relay-bin и, очевидно, если поменять hostname slave машины, то, очевидно, mysql перестанет видеть свой лог и репликация не будет осуществляться корректно.

Чтобы этого избежать, требуется в блок [mysqld] добавить явное указание имени файла данного лога:
relay-log=mysqld-relay-bin
 Все, после этого ошибка пропадет!

Источник: http://bugs.mysql.com/bug.php?id=2122

понедельник, 24 декабря 2012 г.

Смена адреса блога! :)

Дорогие друзья! Дорогие мои читатели!

С сегодняшнего дня адрес блога стал проще и удобнее, теперь блог доступен по адресу StableIt.ru. Все ссылки на phpsuxx.blogspot.com автоматически перенаправляются на StableIt.ru, пожалуйста используйте везде новый адрес! :)

Смена вызвана в первую очередь тем, что Google Blogspot для доменов на *.blogspot.com ввел гео-домены, то есть блог стал доступен с адресов name.blogspot.ru, name.blogspot.com и еще 4 десятка доменов, что крайне негативно сказывается на отношении поисковых систем к блогу да и в целом вносит какой-то ненужный хаос в именование.

Почему именно StableIt? Тут все просто - потому что основная цель и задача данного блога - делиться информацией, которая позволяет сделать работу ИТ надежнее во всех отношениях.

Прежние адреса лент продолжат работать прозрачно, но лучше (надеюсь, это Вас не сильно затруднит) указать новые.
ATOM:  http://www.stableit.ru/feeds/posts/default
RSS: http://www.stableit.ru/feeds/posts/default?alt=rss

воскресенье, 23 декабря 2012 г.

Blogspot - смерть SEO!

Мало того, что теперь при запросе моего блога из РФ идет редирект на blogspot.ru:

curl -I phpsuxx.blogspot.com
HTTP/1.1 302 Moved Temporarily
Location: http://phpsuxx.blogspot.ru/
Content-Type: text/html; charset=UTF-8
Date: Sun, 23 Dec 2012 10:21:58 GMT
Expires: Sun, 23 Dec 2012 10:21:58 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked

Так они еще и статьи редиректят  в аналогичной форме!!!!!
curl -I http://phpsuxx.blogspot.com/2012/12/vlc-clean-dock-history.html
HTTP/1.1 302 Moved Temporarily
Location: http://phpsuxx.blogspot.ru/2012/12/vlc-clean-dock-history.html
Content-Type: text/html; charset=UTF-8
Date: Sun, 23 Dec 2012 10:19:49 GMT
Expires: Sun, 23 Dec 2012 10:19:49 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
Мораль - нужно бежать с blogspot на свой домен!

VLC, clean dock history

defaults delete org.videolan.vlc.LSSharedFileList RecentDocuments
defaults write org.videolan.vlc NSRecentDocumentsLimit 0
defaults write org.videolan.vlc.LSSharedFileList RecentDocuments -dict-add MaxAmount 0
killall Dock
Ну и перезапускаем VLC.

среда, 19 декабря 2012 г.

vBulletin и баг при работе на PHP 5.3

Вот такой вот неприятный баг может вылазить в разделе блоги:
Warning: trim() expects parameter 1 to be string, array given in [path]/includes/functions.php on line 307
Warning: number_format() expects parameter 1 to be double, array given in [path]/includes/functions.php on line 361

Баг кроется в коде: forum/includes/blog_functions.php в следующих строках:
1205         $blogstats = $vbulletin->blogstats;
1206         foreach ($blogstats AS $key => $value)
1207         {
1208                
1209                 $blogstats["$key"] = vb_number_format($value);
1210         }

Здесь реально массив, а не единственное значение.  Как не сильно красивый хак можно поставить значок собаки перед vb_number_format (@ vb_number_format ) что приведет к подавлению ошибок.

Как корректный фикс - обновление версии форума, разработчики в курсе бага и давно его исправили.

mod_fcgid: HTTP request length 133590 (so far) exceeds MaxRequestLen

Фикс на Debian простейший:
echo "FcgidMaxRequestLen 2000000" >> /etc/apache2/mods-enabled/fcgid.conf 
И передергиваем апача:
/etc/init.d/apache2 restart 

вторник, 18 декабря 2012 г.

Сборка perf top для CentOS 6

Сборка (CentOS 6) весьма проста:
cd /usr/src
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.17.1.tar.xz
tar -xf linux-3.17.1.tar.xz
cd linux-3.17.1/tools/perf
yum install -y gcc glibc-devel elfutils-devel make binutils-devel glibc-static flex bison  libunwind  audit-libs-devel libunwind-devel numactl-devel  python-devel slang-devel perl-ExtUtils-Embed libdwarf-devel
make
cp perf /opt

Если будет выдана ошибка:
No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static
То фикс Centos такой:
yum install -y elfutils-devel
На Debian:
apt-get install -y libelf-dev 

Запускаем:
/opt/perf  top
Выдача будет иметь примерно следующий вид:
------------------------------------------------------------------------------
   PerfTop:     323 irqs/sec  kernel:44.9% [100000 cycles],  (all, 12 CPUs)
------------------------------------------------------------------------------
             samples    pcnt   kernel function
             _______   _____   _______________
              878.00 -  9.2% : __d_lookup
              760.00 -  8.0% : read_hpet
              620.00 -  6.5% : __link_path_walk
              409.00 -  4.3% : intel_idle
              282.00 -  3.0% : _spin_lock
              254.00 -  2.7% : _atomic_dec_and_lock
              222.00 -  2.3% : acl_permission_check
              157.00 -  1.7% : ext4_htree_store_dirent [ext4]
              147.00 -  1.5% : kmem_cache_alloc
              138.00 -  1.5% : strncpy_from_user
              138.00 -  1.5% : copy_user_generic_string
              131.00 -  1.4% : __audit_syscall_exit
              123.00 -  1.3% : security_inode_getattr
              122.00 -  1.3% : half_md4_transform
              119.00 -  1.3% : path_init

Для ленивых (себя в первую очередь)  собрал бинарик (точно работает на Centos6): https://fastvps.googlecode.com/svn/trunk/other/linux_kernel_perf_tool/perf

Шантажировать детьми могут только конченые отморозки - пара слов про наш ответ списку Магнитского

Прошу не оставлять без внимания! http://echo.msk.ru/blog/aloshak/970640-echo/

понедельник, 17 декабря 2012 г.

Новые технологии кулеров от General Electric

Как создать пользователя с sudo на Debian 6 Squeeze?

Допустим, для выполнения работ технической поддержке нужен доступ по ssh. Как его выдать?

Создаем пользвателя:
useradd -m support

Задаем ему пароль посложнее:
passwd support
Теперь вносим запись в sudoers (он немного усложнен для запрета очевидных - но не всех - способов запуска шелла, это сделано для явного логгирования всех команд, выполняемых пользователем support):
echo 'support ALL=(ALL) NOPASSWD: ALL, !/bin/su, !/bin/bash, !/bin/dash, !/bin/sh' > /etc/sudoers.d/support
Выставляем корректные права:
chmod 440 /etc/sudoers.d/support
Что в данный момент делает пользователь и какие команды выполняет можно посмотреть вот так:
cat /var/log/auth.log|grep sudo
Выдача будет примерно следующая:

Dec 17 10:56:29 stat sudo:  support : TTY=pts/2 ; PWD=/home/support ; USER=root ; COMMAND=/usr/bin/id
Dec 17 10:56:32 stat sudo:  support : TTY=pts/2 ; PWD=/home/support ; USER=root ; COMMAND=/bin/ls -la
Dec 17 10:57:19 stat sudo:  support : TTY=pts/2 ; PWD=/home/support ; USER=root ; COMMAND=/usr/bin/id


Как лишить данного пользователя sudo привилегий и удалить аккаунт?

Легко:
rm -f /etc/sudoers.d/support
killall -KILL -u support; userdel support
Вторая команда (killall) необходима в случае, если пользователь залогинен, иначе будет выдана ошибка: userdel: user support is currently logged in

воскресенье, 16 декабря 2012 г.

Перенос blogspot.com блога на собственный домен

Теперь возможен перенос даже на домен первого уровня, а не только на поддомен (например, blog.domain.name) http://support.google.com/blogger/bin/static.py?hl=en&ts=1233381&page=ts.cs

SSH - запретить shell, но разрешить sftp, scp

e4defrag - утилита для online (!!!) дефрагментации ext4

Описание: http://manpages.ubuntu.com/manpages/precise/man8/e4defrag.8.html

Но, обращаю внимание, не забывайте, что утилита - сильно эксперементальная!!!

Множество необычных смайлов Skype

Стеганография на Linux

Очень интересно: http://oldengremlin.blogspot.ru/2012/05/blog-post.html !

понедельник, 10 декабря 2012 г.

List locked/flocked files in Debian linux

Программка есть искаропки: 
apt-get install -y lslk
В работе программа довольно проста:

lslk
SRC         PID DEV     INUM       SZ TY M ST WH END LEN NAME
(unknown)  1919 8,3  6071524           w 0  0  0   0   0 / (rootfs)
cleanup    7610 8,3 15654916        0  w 0  0  0   0   0 /var/spool/postfix/pid/unix.cleanup
php        7970 8,3  6136204        0  w 0  0  0   0   0 /var/lib/php5/sess_xxxx
smtp       8290 8,3 15654921        0  w 0  0  0   0   0 /var/spool/postfix/pid/unix.smtp
php        8318 8,3  6136216        0  w 0  0  0   0   0 /var/lib/php5/sess_yyyy
smtpd      8398 8,3 15654913        0  w 0  0  0   0   0 /var/spool/postfix/pid/inet.smtp
local      8401 8,3 15654919        0  w 0  0  0   0   0 /var/spool/postfix/pid/unix.local
bounce     8581 8,3 15654917        0  w 0  0  0   0   0 /var/spool/postfix/pid/unix.defer
php        8668 8,3  6136222        0  w 0  0  0   0   0 /var/lib/php5/sess_zzzz
php       10630 8,3 12590035        0  w 0  0  0   0   0 /var/lib/php5/sess_kkkk (deleted)
php       11598 8,3 13093389        0  w 0  0  0   0   0 /var/lib/php5/sess_llll (deleted)
master    14696 8,3 12591105       33  w 0  0  0   0   0 /var/lib/postfix/master.lock
master    14696 8,3 15654914       33  w 0  0  0   0   0 /var/spool/postfix/pid/master.pid
mysqld    17170 8,3 12533764  5242880  w 0  0  0   0   0 /var/lib/mysql/ib_logfile1
mysqld    17170 8,3  6135960  5242880  w 0  0  0   0   0 /var/lib/mysql/ib_logfile0
mysqld    17170 8,3  6135961 10485760  w 0  0  0   0   0 /var/lib/mysql/ibdata1

воскресенье, 9 декабря 2012 г.

Каким должна быть поддержка 21 го века у Интернет провайдера?

Как _минимум_ вот такой:
Звоню провайдеру (с мобильного), пожаловаться на неработающие интернеты. А из трубки мне: 
- Здравствуйте! По вашему телефону определён номер вашего договора: ХХХХХ. К сожалению на вашем направлении наблюдается проблема со связью. В данный момент, проблема находится на стадии "выяснение причины". Завершение "выяснения причины" ожидается 8 декабря в 22 часа 00 минут. Номер заявки по проблеме - YYYYYY. Если у вас остались дополнительные вопросы, пожалуйста, дождитесь ответа оператора!
Молодцы какие!
Источник: http://to-the-future.livejournal.com/653852.html 

четверг, 6 декабря 2012 г.

Сложный визовый вопрос! Поездка по двум стыковым визам и окончание первой визы в поездке

Да, это возможно.

Пруфстатья:

A holder of a multiple-entry visa may apply for a new visa before the expiry of the validity of the visa currently held. However, the validity of the new visa must complement the current  visa, i.e. a person cannot hold two uniform visas valid for the same period in time.  

Example: A Moroccan lawyer representing a gender equality NGO who frequently  participates in meetings in various Member States holds a multiple-entry-visa which expires  on 31.5. She applies for a new visa on 15.4.  If a new visa is issued, it should be valid from 1.6. and in such a case the visa holder would be  entitled to enter the territory of the Member States on the basis of the first visa that will expire  during the stay and leave on the basis of the new visa.


Это не просто пдфка, это офицальный документ: COMMISSION DECISION 
of 19.3.2010  establishing the Handbook for the processing of visa applications and the modification 
of issued visas  (Only the Bulgarian, Czech, Dutch, Estonian, Finnish, French, German, Greek, 
Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, 
Slovak, Slovenian, Spanish and Swedish texts are authentic)

Boeing 737-500 выведены из авиапарка ГТК Россия

По информации из блога ГТК Россия:
29 ноября в Петербургском Пулково с особенным трепетом ожидали прибытия рейса ПЛ 752 из Самары. Именно этот рейс стал крайним коммерческим полетом самолета Boeing 737-500 в авиакомпании "Россия".  

Срок лизинга этих воздушных судов подошел к концу, и вместе с ним на наших глазах завершилась целая эпоха. Boeing 737-500, кажется, еще совсем недавно стал первым иностранным типом ВС в нашей компании. С 2005 года вместе с ним предприятие "Пулково" приобщилось к мировому опыту. Все это время самолеты верно служили авиакомпании и ее пассажирам, но теперь пришло время передавать их лизингодателю.
Эх, даже грустно, число перелетов на именно этих Боингах именно по этому маршруту за последние 3 года моей жизни уходят сильно за 2 десятка....

Немного про авиацию и Киатай

Аж зачитался! Рекомендую: http://letchikleha.livejournal.com/145477.html

среда, 5 декабря 2012 г.

Отличный сервис от mail.ru для контроля доставки почты на заданный сервис

http://postmaster.mail.ru

Правда, у меня он почему-то упорно не работает, как ожидается - Статистика отсутствует - проверьте DKIM.

Update:

Вы наверняка знаете, что протокол SMTP позволяет легко подделать адрес отправителя. Поэтому, чтобы отличить ваши рассылки от спамерских, мы используем DKIM-подпись. Отсюда важное замечание: для того, чтобы статистика работала, ваши письма должны быть подписаны с помощью DKIM. Если ваш проект еще не делает этого, настройте свой почтовый сервер прямо сейчас (это просто, многие современные MTA поддерживают DKIM «из коробки»). Кстати, это позитивно влияет на доставляемость не только для mail.ru, но и для всех почтовых систем и спам-фильтров.

Иными словами - DKIM должен быть включен обязательно.

Источник: http://habrahabr.ru/company/mailru/blog/129797/ 

понедельник, 3 декабря 2012 г.

nginx и его status page


Стандартная страница статус nginx выглядит примерно так:


Active connections: 291
server accepts handled requests
  16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

Описание, что для чего:
active connections -- number of all open connections including connections to backends
server accepts handled requests -- nginx accepted 16630948 connections, handled 16630948 connections (no one was closed just it was accepted), and handles 31070465 requests (1.8 requests per connection)
reading -- nginx reads request header
writing -- nginx reads request body, processes request, or writes response to a client
waiting -- keep-alive connections, actually it is active - (reading + writing)




Источник: http://wiki.nginx.org/HttpStubStatusModule 

Вывести список всех PID дочерних процессов в системе

Итак, определимся, обычная однопоточная программа запущенная на линукс-системе имет пид родителя (ppid) раный 1 (init процесс). Все порожденнные данной программой процессы получат ppid != 1, он будет установлен в pid запустившей его программы.

Вот такой простой командой можно вывести все процессы второго уровня (порожденные обычными программами, рабоиче процессы apache, nginx и прочих):
ps ax -o pid,ppid,command|grep process_name |grep -v grep | awk '{if ($2 != 1) print $1;}'

воскресенье, 2 декабря 2012 г.

Как PHP блокирует файл сессии?

Функция: static void ps_files_open(ps_files *data, const char *key TSRMLS_DC)

Это эксклюзивный лок: flock(data->fd, LOCK_EX);

Что это значит: man 2 flock

В strace процесс блокировки файла выглядит примерно так:

24365 open("/var/lib/php5/sess_8088bde28a87bfeddffd0ee807a4c87c", O_RDWR|O_CREAT, 0600) = 5
24365 flock(5, LOCK_EX)                 = 0    
24365 fcntl(5, F_SETFD, FD_CLOEXEC)     = 0    
24365 fstat(5, {st_mode=S_IFREG|0600, st_size=126, ...}) = 0
24365 lseek(5, 0, SEEK_SET)             = 0    
24365 read(5, "ticketlistview|s:6:\"active\";", 126) = 126

Источник: ext/session/mod_files.c php 5.3.3 Debian Squeeze.