2011/09/03

Разворачиваем gitosis для совместной работы.

Пишу скорее для себя чтобы было. Все делать буду на Debian. А еще причина написания этого руководства, совершенно туповатые туториалы. Итак нам понадобиться пользователь от которого будем управлять gitosis, я его обозвал gitadmin.
adduser gitadmin
Заходим под gitadmin и начинаем шаманить. Первое устанавливаем - gitosis
mkdir src
cd src/
git clone git://eagain.net/gitosis.git
cd gitosis/ 
sudo python setup.py install
Теперь создаем ключ нашему пользователю, чтобы он мог управлять gitosis.
ssh-keygen -t rsa
Теперь надо создать пользователя git который будет управлять репозиториями
sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git
Записываем ключик
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
Задаем права на хук
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
Теперь проверим из под юзера gitadmin подключение по ssh
ssh git@localhost
После этого нам надо склонировать репозиторий gitosis-admin
git clone git@localhost:gitosis-admin.git
После этого у нас появится репозиторий для управления gitosis. В папке gitosis-admin будет

gitosis.conf // это конфигурационный файл
keydir // это директория где лежат ключи для пользователей
Формат ключей: <имя пользователя>.pub там будет лежать открытый ключ пользователя. Сейчас там есть ключ gitadmin. Добавляем ключи и делаем как обычно в гите :)
git add . 
git commit -am 'add test_project and test_group' 
git push
Вот и все, удачи человеки! Так же спасибо tamerlan311

2011/07/31

Ruby и отправка почты.

Ну для начала хотел бы дать ссылки на доки - smtp, mail и pony.
Скажу сразу в итоге я ушел на pony хотя слышал на stackoverflow, что якобы на ruby 1.9.2 не работае. Вообще по слухам говорят mail хороший, но я его не завел, и да везде есть документация с примерами как работать с определенной библиотекой. А еще из специфике мне нужно было чтобы smtp был gmail.com. В итоге я получил что-то похожее:

Pony.mail(:to => 'email@email.com', :via => :smtp, :via_options => {
    :address => 'smtp.gmail.com',
    :port => '587',
    :enable_starttls_auto => true,
    :user_name => 'login',
    :password => 'password',
    :authentication => :plain,
    :domain => "HELO",
}, :subject => sbj, :body => msg)

2011/07/20

Подготовка Capistrano для нормального полета.

Вообще в интернете довольно много бродит туториалов на эту тему, да и все эти программки хорошо документированы, я лишь останавлюсь на как считаю главных моментах. И да клиент у меня OS X, сервер Debian. Это все делалось для проекта на Rails 3.
Итак первый момент связан с ssh ключом, который после генерирования и переброски на сервер нужно добавить в know_hosts, командой ssh-add <ваш приват кей>.
И второй момент добавить несколько полей в deploy.rb:
#==========================================
set :deploy_to, "/home/serv/app"
set :deploy_via, :copy # :remote_cache
set :user, 'serv'
set :use_sudo, false

#==========================================
И последний момент для тех кто как и я пользует RVM, это нужно для того чтобы можно было делать так(посмотрите внимательно может такое тоже понадобиться ;)):
...
task :bundle_gems do
    run "cd #{deploy_to}/current && bundle" 
end
...
А это в начало :)
#=============RVM=======================================
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))


require "rvm/capistrano"


set :rvm_ruby_string, '1.9.2-p290' #сюда версию руби
set :rvm_type, :user  
#=======================================================
Я это не сам придумал, а взял отсюда :)

2011/05/19

безопасность, программы

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

P.S.: Если тема интересна могу еще написать всякого такого бреда.