06.02.2011
apt-get install git-core
Не нужно ставить пакет git !
Затем
~$ mkdir ~/tmp/repo && cd ~/tmp/repo
~/tmp/repo$ echo ‘Test repository’ >README
~/tmp/repo$ git init
Initialized empty Git repository in /home/user/tmp/repo/.git/
~/tmp/repo$ git add .
~/tmp/repo$ git commit -am ‘Initial commit’
[master (root-commit) 8d67400] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
~/tmp/repo$ ssh server ‘mkdir repo.git; cd repo.git; git init –bare; chmod +x hooks/post-update’
Initialized empty Git repository in /home/user/repo.git/
~/tmp/repo$ git remote add origin ssh://server/~/repo.git
~/tmp/repo$ git config –add branch.master.merge master
~/tmp/repo$ git config –add branch.master.remote origin
~/tmp/repo$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 232 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://server/~/repo.git
* [new branch] master -> master
~/tmp/repo$ git pull
Already up-to-date.
Может возникнуть ошибка
No refs in common and none specified; doing nothing.
Я решил ее так
git push origin master
Рубрика: Разное | Нет комментариев »
31.12.2010
Чтобы не забыть
http://unetbootin.sourceforge.net/

Рубрика: Разное | Комментарии (11) »
10.12.2010
Устанавливаем svnserve как описано тут
Кстати весьма полезный блог о сисадминстве =)
Кратко о настройке Subversion
Встала задача поднять систему контроля версий во внутренней сети для двоих человек. Давайте посмотрим как это делается. Я покажу как это сделать, когда нет времени разбираться, а рабочая система нужна еще позавчера.
Первое что нужно сделать – это установить саму Subversion. В Дебиан это делается достаточно просто:
# aptitude install subversion subversion-tools
На локальной системе понадобятся еще такие пакеты, как kdesvn и kdesvn-kio-plugins , в Windows понадобится установить программу TortoiseSvn (как-то так она называлась)
Если все нужное ПО установлено давайте продолжим…
Для начала создадим конфиг файл, для стартового скрипта:
/etc/subversion.conf
#projects directory
root=/var/svn
Здесь я просто указал директорию , в которой будут находится проекты.
Идем дальше. Пишем стартовый скрипт.
/etc/init.d/subversion
#! /bin/sh
#
# Скрипт для запуска Subversion-сервера (svnserve)
#
#
NAME=svnserve
DAEMON=/usr/bin/svnserve
PIDFILE=/var/run/svnserve.pid
PATH=/bin:/usr/bin:/sbin:/usr/sbin
start () {
projects=`sed ‘/^#/ d;’ /etc/subversion.conf|awk -F ‘=’ ‘{print $2}’`
svnserve –daemon -r $projects –pid-file $PIDFILE
return $?
}
stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon –stop –quiet –pidfile $PIDFILE –name svnserve
#
# Мы должны дождаться пока svnserve действительно завершит работу.
#
sleep 2
if test -n «$PID» && kill -0 $PID 2>/dev/null
then
echo » Waiting»
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 24 ]
then
echo «Error!»
return 1
fi
sleep 5
echo «Ok!»
done
echo «Ok!»
return 0
else
echo «Ok!»
return 0
fi
}
case «$1″ in
start)
echo «Стартует сервис Subversion » «svnserve»
start
;;
stop)
echo «Останавливается сервис Subversion» «svnserve»
stop
;;
restart)
echo «Перезапускается сервис Subversion» «svn serve»
stop
start
;;
*)
echo «Используйте : /etc/init.d/$NAME {start|stop|restart}»
exit 3
;;
esac
exit 0
Поясню лишь одну строку: projects=`sed ‘/^#/ d;’ /etc/subversion.conf|awk -F ‘=’ ‘{print $2}’` – она присваивает переменной projects ту самую корневую директорию, которая прописана в /etc/subversion.conf. После чего запускается сервер с параметрами
svnserve –daemon -r $projects –pid-file $PIDFILE
- где опция -r запрещает серверу искать репозитории выше указанной директории
Осталось лишь одно – заставить запускаться Subversion при старте системы. Нет ничего проще! просто пропишем в файл /etc/rc.local следующую строку:
/etc/init.d/subversion
Вот и все готово. Можно перезагрузиться и проверить стартанул ли сервис. Ах да… не забываем о правах:
# chmod a+x /etc/init.d/subversion
Есть и другой способ заставить стартовать сервис автоматически:
# update-rc.d -f subversion defaults
Далее создаем репозитории и редактируем конфиги в папке conf
При редактировании файла svnserve.conf нельзя оставлять пробелы между именем параметра и его значением
Рубрика: Разное | Комментарии (4) »
26.11.2010

«Сравни Друзей!» – Первое приложение, которое набрало миллион установок.
Рубрика: Разное | Комментарии (3) »
25.11.2010
Memcached – это сервер написанный на С, который запускается как демон и хранит нужные значения в оперативной памяти попарно ключ-значение.
php-memcache – это клиент к серверу memcached, реализован как pecl модуль. Есть и другие клиенты для PHP. Вот статья в которой сравниваются два PHP клиента
Установка на Debian:
apt-get install memcached php-memcache
После установки надо заглянуть в конфиг /etc/memcached.conf
Основных параметров немного и они хорошо документированы.
Запуск и остановку демона можно производить через init script
/etc/init.d/memcached
Для первого знакомства полезно запустить memcached не как демон, а из консоли
memcached -u nobody -vv
Напишем два PHP скрипта. Первый сохраняет значение, второй читает его:
$m = new Memcache();
$m->addServer('localhost');
$version = $m->getVersion();
echo $version;
$tmp_object = new stdClass();
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$m->set('key',$tmp_object,false, 3600);
?>
$m = new Memcache();
$m->addServer('localhost');
$o = $m->get('key');
var_dump($o);
?>
Рубрика: Разное | 1 комментарий »
22.11.2010
http://guruadmin.ru/page/izmenjaem-opciju-max_connections-v-mysql
http://techchorus.net/enable-mysql-general-query-and-slow-query-log
Рубрика: Разное | Комментарии (12) »
19.11.2010
В один прекрасный день, после запуска нового приложения в Одноклассниках, серверу стало плохо.
В браузере выводилась ошибка 500.
В логах примерно такое: accept() failed (24: Too many open files)
Это значит, превышен лимит количества одновременно открытых файлов.
Решение оказалось таким:
В конец файла /etc/security/limits.conf нужно добавить такие строки:
* soft nofile 16384
* hard nofile 16384
В текущей консоли от рута (от судо не пашет) сделать
ulimit -n 16384
Хотя это необязательно, если есть возможность перезагрузить сервер.
В /etc/nginx/nginx.conf прописать новое значение worker_connections, равное 16384 поделить на значение worker_processes.
Если не делали ulimit -n 16384, нужно выполнить перезагрузку, после чего проблема отступит
Рубрика: Разное | Нет комментариев »
26.10.2010
Я использую Dropbox для синхронизации (между разными компьютерами) и бэкапа своих рабочих файлов.
Как же синхронизовать базы данных?
Для этого я сделал два батничка:
1) dump.bat
«C:\xampplite\mysql\bin»\mysqldump -uroot -p –all-databases > all-databases.sql
pause
REM «C:\xampplite\mysql\bin»\mysqldump -uroot -p test > test.sql
REM pause
2) restore.bat
«C:\xampplite\mysql\bin»\mysql -uroot -p < all-databases.sql
pause
Теперь закончив работу на одном компьютере, я запускаю dump.bat и все текущее содержимое
базы данных сохраняется в файле all-databases.sql, через Dropbox.
На втором компьютере у меня точно такая же конфигурация MYSQL сервера,
поэтому я запускаю restore.bat и мои базы данных синхронизованы.
Рубрика: Разное | Комментарии (3) »
18.10.2010
Для настройки ftp сервера на Debian было решено использовать стандартный proftpd.
Настройть требоволось так: доступ только авторизованым пользователям, у разных пользователей разный домашние каталоги и чтобы не наделать дыр в безопасности.
Настраивал вот по этим источникам
http://dng.kiev.ua/node/15
http://openwiki.ru/wiki/ProFTPd
http://linuxforum.ru/viewtopic.php?pid=56675
Если вкратце, то задал пользователя и группу с помощью утилит
ftpasswd –passwd –name ftp_1 –file /etc/proftpd/ftpd.passwd –uid 5000 –gid 5000 –home /home/ftp_1 –shell /bin/false
ftpasswd –group –name ftp_group –file /etc/proftpd/ftpd.group –gid 5000 –member ftp_1
Затем дописал в файл /etc/proftpd/proftpd.conf
DefaultRoot ~
ListOptions «-la»
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
RequireValidShell off
Для того чтобы новый конфиг заработал, не забыть перезапусть proftpd
/etc/init.d/proftpd restart
Пробую зайти по фтп, по системе бродить не дает – хорошо,
но и файлов не вижу.
Меняю группу, на группу владельца – все ок
Рубрика: Разное | Нет комментариев »
23.09.2010
Чтобы смаппить классы флэш – приложения на ActionScript и red5 приложения на java, нужно следующее:
1) Создать класс на java, например, ru.terbooter.UserVO
2) Создать класс на as, главное чтобы публичные сериализуемые своства были с такими же именами и имели такой же тип
(подробнее о соответствии типов между flash и red5 тут)
само определение класса может быть другим (и имя и пакет),
но чтобы избежать путаницы, лучше определению класса дать такое же имя как и на серверной стороне
3) Задать алиас локальному классу
import ru.terbooter.UserVO;
registerClassAlias(«ru.terbooter.UserVO», UserVO);
Если Flex компилятор, то можно использовать метатэг
[RemoteClass(alias="ru.terbooter.UserVO")]
Чтобы некоторое свойсто замапленного java класса «спрятать» от сериализации,
нужно использовать аннотацию @DontSerialize
Рубрика: Разное | Комментарии (13) »