четверг, 24 апреля 2014 г.

Удаление устаревших ядер linux

 dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | grep -E "(image|headers)" | xargs sudo apt-get -y purge

 http://tuxtweaks.com/2010/10/remove-old-kernels-in-ubuntu-with-one-command/



вторник, 29 октября 2013 г.

Конвертируем NEF в JPG

Просматривать NEF файлы на компьютере не всегда удобно, особенно это касается первичной отбраковки материала. Даже не на самом слабом компьютере каждое изображение прогружается несколько секунд перед отображением. Но нужна ли полная загрузка изображения для первичной отбраковки? Разумеется нет, и чтобы выполнять эту работу я рекомендую использовать следующий скрипт (который использует ImageMagick):

$ cat ~/nef_thumbnails
#!/bin/sh
# Andrew G. Saushkin

for i in *.NEF; do 

    if [ -e ${i%.*}.jpg -a x"$1" != xforce ] ; then
        echo "$i -> ${i%.*}.jpg ... already exists skipping"
    else
        echo "$i -> ${i%.*}.jpg"
        convert $i -units PixelsPerInch -density 72 -quality 100 -resize 1200 ${i%.*}.jpg
    fi
done

Обратите внимание, что скрипт без параметра force, в случае, если изображение для предпросмотра существует, то не будет создавать его вновь.

Что дальше, брак обнаружен и удален. А удалять как правило проще всё те же файлы JPG. Как сделать так, чтобы удалив файлы JPG мы могли в дальнейшем удалить и "связанные" с ним файлы NEF? Попробуйте использовать следующий скрипт, который находит файлы NEF без файлов JPG и удаляет их также:

$ cat nef_clear 
#!/bin/bash

read -p "Вы уверены, это уничтожит все файлы NEF не связанные с JPG в текущем каталоге? " -n 1 -r
echo    # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
    echo "... Отмена операции"
    exit 1
fi

for i in *.NEF ; do 
    if [ ! -e ${i%.*}.jpg ] ; then 
        echo "Removing $i ..." 
        rm $i
    fi; 
done


среда, 23 октября 2013 г.

Сломался хром? Почини!

Сломался хром? Почини!

https://code.google.com/p/chromium/issues/detail?id=304017#c27

Как пересобрать пакет на примере гугл хрома:

$ apt-get download google-chrome-stable
$ dpkg-deb -R google-chrome-stable_30.0.1599.101-1_i386.deb 304017

$ sed -i 304017/DEBIAN/control \
      -e 's/30.0.1599.101-1/30.0.1599.101-2~304017/' \
      -e 's/lib32gcc1 (>= 1:4.1.1), lib32stdc++6 (>= 4.6), //' \
      -e 's/libc6-i386 (>= 2.11), //'

$ sudo chown root:root 304017/opt/google/chrome/chrome-sandbox
$ sudo chmod 4755 304017/opt/google/chrome/chrome-sandbox

$ dpkg-deb -b 304017
$ sudo dpkg -i 304017.deb

воскресенье, 21 июля 2013 г.

Тестирование производительности БД PostgreSQL с использованием pgbench

Ниже представляю скрипт нагрузочного тестирования с использованием pgbench. Методология тестирования хорошо описана на странице http://wiki.postgresql.org/wiki/Pgbenchtesting, ниже я представил скрипт которым можно инициализировать базы с нужным скейл фактором с последующим выполнением нагрузочного тестирования на них.

Вот например диаграмма построенная на основе полученных данных для сервера (MEM 32Gb, 24 CORE, Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz (9.2.3 + perl)) с файловой системой ext4 без тюнинга, CentOS 6.4

По оси Y количество транзакций в секунду. По X скейл фактов в зависимости от размера оперативной памяти (1 - 0.1 памяти, 20 - 2 x MEM)

суббота, 6 июля 2013 г.

Работа с кронтаб в CentOS

Любопытные вещи заметил при работе с кроном в CentOS.

1. Пришлось добавить пользователя в /etc/cron.allow чтобы начать пользоваться пользовательским кроном (в других дистрибутивах вроде бы по умолчанию разрешен) - может быть и к лучшему, просто особенность связанная с тем, что /etc/cron.deny нулевого размера в CentOS создается во время инсталляции, но поскольку уже давно не работал с RedHat эта особенность заставила потратить несколько минут своего времени.

2. Пришлось прописать переменные окружения в кронтаб файле (впрочем это подойдет и для другой ОС, просто в данном случае ОС была не локализована и часовой пояс отличался от моего):

LANG=ru_RU.UTF-8
LANGUAGE=ru
LC_CTYPE=ru_RU.UTF-8

MAILTO=ags@nospam.ru
CONTENT_TYPE="text/plain; charset=utf-8"
CONTENT_TRANSFER_ENCODING="8bit"
TZ=Europe/Moscow


понедельник, 24 июня 2013 г.

Устанавливаем Redmine 2.3 в CentOS 6.4 (Postgresql 9.2 backend)

В данной заметке, я расскажу, как установить Redmine 2.3 в CentOS 6.4. В качестве бэкенда будем использовать PostgreSQL (совсем не потому, что PostgreSQL лучше чем MySQL и даже не потому, что будущее MySQL несколько туманно в связи с приобретением MySQL Oracle, а просто потому, что последнее время я работаю только с PostgreSQL, поэтому лично для меня PostgreSQL ближе и роднее, вы же конечно можете использовать другой бэкенд, например MySQL).

Я предполагаю, что у вас уже установлен CentOS, в этой заметке я не останавливаюсь на настройке CentOS. Как установить последнюю версию PostgreSQL на CentOS вы можете узнать здесь

Данная заметка является модификацией статьи в которой я рассказываю как устанавливать redmine на ubuntu (кстати, там как раз, описывается установка совместно c mysql).

Подготавливаем структуру каталогов, создаем системного пользователя


$ sudo mkdir -p /opt
$ cd /opt
$ sudo svn co http://svn.redmine.org/redmine/branches/2.3-stable redmine-2.3
$ sudo adduser --system -d /opt/redmine-2.3/ redmine
$ sudo chown -R root.root /opt/redmine-2.3/
$ cd redmine-2.3
$ sudo mkdir -p tmp tmp/pdf public/plugin_assets
$ sudo chown -R redmine:redmine files log tmp public/plugin_assets
$ sudo chmod -R 755 files log tmp public/plugin_assets

Установка сервера Subversion в CentOS 6.4 используя протокол доступа WebDAV

Subversion - популярная система контроля версий исходного кода, в данной заметке я опишу, как установить subversion на сервер CentOS с доступом через WebDAV и разграничением доступа разных пользователей, к разным проектам.

Итак, выполняем последовательно:

1. Устанавливаем Subversion и Apache

yum install -y subversion mod_dav_svn

2. Модифицируем файл /etc/httpd/conf.d/subversion.conf добавляем следующую секцию:

<Location /svn>

        DAV svn
        SVNParentPath /var/www/svn

        AuthType Basic
        AuthName "Subversion repositories"
        AuthUserFile /etc/svn-auth-users
        Require valid-user

        SSLRequireSSL
        AuthzSVNAccessFile /etc/subversion/authz

</Location>

Немного пояснения:

воскресенье, 23 июня 2013 г.

Настройка post-commit в Subversion для отправки почтовых сообщений в CentOS 6.4

Я надеюсь, что вы уже настроили SVN репозиторий с поддержкой WebDAV... Если нет, то самое время сделать это сейчас.

0. Подразумеваю, что настраивать будем для репозитория javacation, который находится в каталоге /var/www/svn/javacation

1. Забираем уже готовые скрипты, которые любезно предоставлены Apache Foundation
cd /var/www/svn/javacation
sudo svn co http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/

2. Скопируем файл конфигурации в каталог conf нашего репозитория (только для того, чтобы файлы конфигурации находились в одном месте, на самом деле его фактическое расположение может быть другое и даже более того, если вы используете один и тотже файл конфигурации для разных проектов, то возможно лучшим местом для этого файла окажется путь /etc/subversion)
sudo cp hook-scripts/mailer/mailer.conf.example ./conf/mailer.conf

3. Отредактируйте файл конфигурации mailer.conf

Снимите комментарий с параметра mail_command, в случае, если у вас настроен sendmail

mail_command = /usr/sbin/sendmail

или корректно настройте SMTP (smtp_hostname, smtp_username, smtp_password), в случае, если локальный MTA не настроен

Отредактируйте поля from_addr, to_addr и commit_subject_prefix:

from_addr = svn@javacation.ru
to_addr = ags@nospam.ru
commit_subject_prefix = [svn-%(repos_basename)s]

4. На этом этапе вы можете протестировать работоспособность скрипта post-commit например такой командой (где 10 это номер ревизии):

/var/www/svn/javacation/hook-scripts/mailer/mailer.py \
    commit "/var/www/svn/javacation/" "10" /var/www/svn/javacation/conf/mailer.conf