2009-12-13

Как настроить уведомления о коммите в SVN

Cкачиваем на сервер PERL скрипт http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/commit-email.pl.in

Сохраняем его где-нибудь на сервере где хранится ваш репозиторий с именем commit-email.pl и выставляем ему права на выполнение. В скрипте нужно заменить %SVN_BINDIR% на реальный путь - у меня это оказалось /usr/local/bin

Переименовываем в папочке hooks вашего репозитория post-commit.tmpl в post-commit, ставим ему права на выполнение.

Внутри post-commit уже есть вызов некоего mailer.py - его надо закоментировать.

Добавляем следующую строку

/usr/bin/perl [адрес к скрипту]/commit-email.pl --from noreply@emailfrom.com -s "SVN commit notification" "$REPOS" "$REV" email@tonotify1.com email@tonotify2.com

Разумеется, нужно выставить свои адреса доставки и путь к commit-email.pl

Если все настроено правильно при очередном коммите на почту свалится уведомление о том кто когда и что изменил в вашем проекте.

 

Коментариев: 2

 
  2009-12-10

Как поставить dav_svn если у вас cpanel

Потребовалось наладить работу в SVN через Apache. Но на беду на сервере стоит cpanel а это значит что поставить mod_dav_svn например, при помощи yum не удасться - он требует наличия модуля httpd - а Апач уже является частью cpanel которая клала на всякие там rpm пакеты...

Выход один - собирать ручками и настраивать Апач вручную. К счастью добрые люди сделали хорошие инструкции на этот случай

http://gnusys.net/kb/index.php/2009/04/installing-svn-on-cpanel-with-mod_dav_svn-support/

http://www.edugeek.net/forums/nix/26101-subversion-whm-cpanel-11-a.html

и уже в финале:

http://svnbook.red-bean.com/en/1.1/ch06s04.html

здесь можно глянуть как собственно репозиторий сделать:

http://kb.mediatemple.net/questions/143/Using+Subversion

 

Оставить комментарий

 
  2009-10-29

Организация потокового видео при помощи ffserver

Показать видео на сайте довольно просто. Простейший вариант это выложить на сервер avi, mp4 или flv файл и придумать как этот файл будет воспроизводиться на стороне клиента.

Самым универсальным способом является использование Adobe Flash всилу того, что это технология доступна практически на всех широко распространенных платформах. Можно воспользоваться либо одним из доступных плееров либо сделать свой - благо это можно сделать парой щелчков мыши... Ну или чуть больше чем парой щелчков...

Однако, при таком способе, каждый раз при загрузке страницы видео будет запускаться с самого начала, а иногда бывает необходимо организовать подобие прямой трансляции в реальном времени. Например, сделать вывод видео с вебкамеры или вывести вебкаст в определенное время. В этом случае, сервер должен выдавать пользователю не файл но видео поток в реальном времени. В большинстве случаев, это конечно, тоже оказывается файл, вот только начинается этот файл с того момента с которого его начал смотреть пользователь.

Обычный веб сервер, например Apache, для вывода потокового видео не годится. Требуется специальный потоковый сервер. Существует большой выбор как платных так и бесплатных потоковых серверов.

Для того чтобы организовать вывод видео в реальном времени можно воспользоваться утилитой ffserver который устанавливается всместе с ffmpeg. Программка довольно простая в использовании, хотя у меня сложилось впечатление, что довольно капризная и нестабильная. Для серьезных задач ее использовать довольно затруднительно а для простых - когда нужно вывести часовой ролик раз в день вполне подойдет.

Настройка сервера довольно проста. Конфигурационный файл должен быть сохранен как /etc/ffserver.conf. В процессе установки командой make install он не создается, поэтому его нужно создать. Пример файла можно взять с сервера. Здесь выложен мой вариант

Видео в нашем случае будет доступно по адресу http://site.com:8080/file.flv - это адрес указывается для Flash - плеера.

Чтобы видео выводилось стабильно, нужно чтобы частота кадров была такая же как и у выходного потока.

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

Для пуска видео можно воспользоваться вот таким файлом.
 

#!/bin/sh
#стартуем сервер
/usr/local/bin/ffserver &
#подождем две секунды чтобы стартовал
sleep 2
#скармливаем видео
/usr/local/bin/ffmpeg -i /root/evergreen800.flv http://localhost:8080/feed1.ffm

Замечено что у ffserver в момент скармливания видео сервер сохраняет его во временный файл прописанный в файле конфигурации. Если максимальный размер видео больше максимального размера прописанного в конфиге, то сервер вылетает с ошибкой. Чтобы такого не происходило во первых нужно чтобы размер файла был всегда больше, во вторых нужно этот файл периодически удалять. Для этого я написал вот такой файлик.

#!/bin/sh

PID=`ps -ea -o "pid fname" | grep ffserver | sed -e 's/^ *//' -e 's/ .*//'`

if [ "${PID}" != "" ]
then
  kill -9 ${PID}
fi

rm /tmp/feed1.ffm

ffserver

Несколько вопросов для меня так и остались открытыми - после длительного бездействия процесс сервера вываливается, хотя сервер прописан в конфиге как демон.

Почему не удаляется временный файл автоматически тоже не понятно.

В общем, если у кого есть какие мысли на этот счет - милости прошу оставляйте свои комментарии.

 

Оставить комментарий

 
  2009-10-21

Сверим ваши часы

Краткая инструкция как настроить синхронизацию времени компьютера с сервером в Интернет по протоколу NTP.

Предполагается что компрьтер работает под Linux (я тестировал на centos)

1. инсталлируем пакет ntp

> yum install ntp

2. редактируем /etc/ntp.conf если есть такое желание NTP сервера нужно брать по возможности ближе к вашему реальному расположению список ntp-серверов можно взять здесь pool.ntp.org

3. ставим ntpd демона в автозапуск

> chkconfig ntpd on

4. запускаем демона

> /etc/init.d/ntpd start

Все, теперь можно не думать о секундах свысока...

 

Оставить комментарий

 
  2009-09-20

Полезное свойство FireBug

Иногда бывают на некоторых сайтах формочки в которые пользователь вбивает некий текст, например сообщение другому пользователю. Вбивать сообщение можно долго, особенно если вбиваешь на неродном языке а реакция респондента важна, например, если это потенциальный заказчик.

Вбил сообщение, нажал кнопочку отправить и тут замечаешь внизу маленький чекбоксик, типа "я ознакомился с правилами пользования сайтом"...

Едрыть... его то мы забыли поставить... а страничка уже постится....

Естественно когда страничка запостилась на экране сообщение об ошибке и та же самая форма в которую мы с любовью вводили во уже последний час наше сообщение... Только пустая.... Едрыть....

Ни о какой любви уже не может быть и речи... нужно набивать все заново... С остервенением... Время - деньги.

Но у нас то есть firebug! Открываем вкладочку "сеть" находим нужный нам запрос (он самый первый и начинается со слова POST, если вкладка была неактивна, просто нужно ее активировать, нажать f5 и перепослать данные) Жмем на + и видим наши только что посланные данные, после чего их нужно только скопипастить обратно в форму.

Слава Firebug'у!

 

Коментариев: 3

 
  2009-09-17

CSS Reset

Как известно разные браузеры имеют свои значения по умолчанию для своих элементов. Чтобы привести все элементы к общему знаменателю приходится все нюансы держать в голове и каждый новый проект начинать с того, что вставлять в css определения, нивелирующие разницу в поведении тех или иных тегов, а уж затем начинать творить. Иначе кроссбраузерная отладка удлиняется в разы.

Мартин Миранда нашел код который поможет свести к минимуму возможные различия в форматировании элементов по умолчанию.

Что то подобное есть и у меня, хотя этот код гораздо полнее.

h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-weight: inherit;
	font-style: inherit;
	font-size: 100%;
	font-family: inherit;
	vertical-align: baseline;
}
/* remember to define focus styles! */
:focus {
	outline: 0;
}
body {
	line-height: 1;
	color: black;
	background: white;
}
ol, ul {
	list-style: none;
}
/* tables still need 'cellspacing="0"' in the markup */
table {
	border-collapse: separate;
	border-spacing: 0;
}
caption, th, td {
	text-align: left;
	font-weight: normal;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: "";
}
blockquote, q {
	quotes: "" "";
}

На мой взгляд, не хватает кой чего важного, например, корректировок для LI, UL но в целом идея достойная.

 

Оставить комментарий

 
  2009-09-12

Как перенести SVN репозиторий с oDesk

Иногда встает задача переноса SVN репозитория с сервера на котором у вас нет ssh доступа. Возникнуть такая задача может у пользователей oDesk, Google Code, SourceForge и других площадок которые предоставляют SVN но не предоставляют ssh доступ.

Если ssh доступ есть то задача решается просто, например можно воспользоваться вот этими инструкциями. Однако что делать если ssh не доступен?

Решение нашел вот здесь. На помощь приходит утилита svnsync позволяющая синхронизировать два репозитория. Алгоритм получается следующий:

- создаем чистый репозиторий;
- синхронизируем его с удаленным при помощи svnsync;
- делаем дамп нового репозитория;
- заливаем дамп в новый репозиторий который и будет новым основным репозиторием.

Создаем временный репозиторий:

> svnadmin create temp_repo

Здесь и далее temp_repo - имя временного репозитория.

Создаем внутри директории hooks пустой исполняемый файл:

> echo '#!/bin/sh' > temp_repo/hooks/pre-revprop-change
> chmod +x temp_repo/hooks/pre-revprop-change

Теперь синхронизируем наши репозитории:

> svnsync init file://[full_path_to_repository]/temp_repo https://secure.odesk.com/svn/[odesk_s_reporsitory_name]
> svnsync sync file://[full_path_to_repository]/temp_repo

Дело сделано, теперь получаем дамп:

> svnadmin dump [full_path_to_repository]/temp_repo > repo_dump

Теперь в repo_dump мы имеем полный дамп удаленного репозитория который можно залить куда угодно.

Создадим новый репозиторий и зальем туда наш дамп:

> cd /path/to/new-repository-parent-directory
> svnadmin create repository-name
> svnadmin load repository-name < repository.dumpfile

Осталось переключить проект на новый репозиторий:

> svn switch --relocate oldurl newurl

 

Оставить комментарий

 
  2009-09-11

Как пережать видео для мобильника

Указанный пример тестировался под Линукс, насколько я знаю под Windows тоже есть версия ffmpeg, но ее я не проверял.

FFMpeg это универсальная штука позволяющая конвертировать видео и аудио практически как угодно, в нашем случае нужно преобразовать имеющийся видео файл в формат mp4 и уменьшить разрешение до 352x258

ffmpeg -i "Naruto Shippuuden - 125.mp4" -vcodec mpeg4 -s 640x360 "n125.mp4"

Разрешение 640x360 я выбрал исходя из размеров экрана Nokia 5800. Для других телефонов имеет смысл выбрать разрешение поменьше.
 

 

 

Оставить комментарий

 
  2009-09-05

Провайдер закрыл 25-й порт?

Не расстраивайтесь если провайдер закрыл 25-й порт и теперь не дает посылать вам почту через ваш любимый SMTP сервер. Как правило все хорошие SMTP серверы умеют посылать почту с использованием SSL авторизации, а это уже 465-й порт - его, как правило правайдеры не закрывают.

 

Оставить комментарий

 
  2009-08-28

Asus Aspite 4810 + Nokia 5800 +Beeline GPRS

> sudo sdptool search Dun
Inquiring ...
Searching for Dun on 00:24:03:DC:C7:F8 ...
Service Name: Dial-Up Networking
Service RecHandle: 0x10012
Service Class ID List:
  "Dialup Networking" (0x1103)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2
Language Base Attr List:
  code_ISO639: 0x454e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100
Получили МАК адрес и номер канала.

теперь подключаем наш телефон:

> sudo rfcomm bind 0 00:24:03:DC:C7:F8 2

проверяем что телефон подключен:

> rfcomm

sudo rfcomm bind 0 00:24:03:DC:C7:F8 2

телефон подключен, теперь настраиваем интернет:

> sudo pppconfig

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

> sudo gedit /etc/chatscripts/beeline

после ATZ добавляем

'' AT+CGDCONT=1,"IP","internet.beeline.ru"

теперь можно соединяться к интернет:

> sudo pon beeline

что бы посмотреть состояние соединения

> plog

чтобы разорвать интернет соединение:

> poff

чтобы разорвать соединение bluetooth соединение:

> sudo rfcomm release 0

 

Оставить комментарий