2010-12-23

Флешки больше не нужны! или: Использование Git для синхронизации папок

Допустим, у вас есть какой нибудь сервер с доступом по SSH. На сервере стоит git. Мы хотим создать некую папку на удаленном сервере, содержимое которой должно синхронизироваться с локальной папкой на домашнем копьютере а также с локальной папкой на другом компьютере, например на работе.

Начнем с сервера (на нем Ubuntu).

1. если git не стоит установим его:

> sudo apt-get install git-core
> git config --global user.name "Uzumaki Naruto" #расскажем немного о себе
> git config --global user.email naruto@uzumaki.co.jp #свой емайл

2. создадим репозиторий

> cd /path/to/the/folder #переходи в папку которую будем шарить
> git init #создаем репозиторий
> git config receive.denyCurrentBranch ignore #это чтобы можно было заливать изменения

 

3. создаем файл README и добавим его в наш новый репозиторий:

> touch README #создаем пустой файл
> git add README #добавляем его в репозиторий
> git commit -a -m"first commit" #фиксируем изменения

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

> ssh-keygen -t rsa -C"naruto@homeaddress.ru" #создадим ключ если не создан
> cat ~/.ssh/id_rsa.pub | ssh user@remoteserver.com 'cat >> .ssh/authorized_keys' #закинем ключ на удаленный сервер

скачиваем наш репозиторий с удаленного сервера:

> git clone user@remoteserver:/path/to/the/folder

Поздравляю, репозиторий скачан, мы можем отредактировать файл README локально и закачать изменения в репозиторий:

> git status #смотрим что изменилось
> git commit -a -m "local chages" #фиксируем изменения
> git push origin master

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

> git pull #все изменения сделанные дома зальются на рабочий компьютер.

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

> git reset --hard

Проверям, содержимое файла README теперь такое же как и на нашей домашней машине, как и на рабочей машине.

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

Несколько замечаний.

1. для доступа к удаленному репозиторию по идее git не обязателено устанавливать на удаленной машине достаточно иметь к ней доступ по SSH - просто скопировать локально созданный репозиторий на удаленную машину, но в этом случае мы не сможем видеть изменения на удаленном сервере в виде живых файлов.

2. в примере используется SSH авторизация, если нужно чтобы к репозиторию обращалось несколько человек имеет смысл использовать gitosis см: https://help.ubuntu.com/community/Git

 

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

 
  2010-12-22

Putty и ключи шифрования OpenSSH

Допустим, у вас на Windows машине стоит MinGW (если у вас стоит git то MinGW ставится вместе с ним по умолчанию: Git Bash - это на самом деле терминал MinGW и есть) Если вы имеете учетную запись на github, значит вы уже имете пару ключей шифрования, которые лежат в папке <HOME>/.ssh по умолчанию они называются id_rsa и id_rsa.pub если нет их можно создать следующей командой:

$ssh-keygen -t rsa -C"your@emailaddress.ru"

Непосредственно использовать ключи сгенерированные при помощи OpenSSH в Putty нельзя. Для того чтобы их можно было использовать нужно сделать следующее:

1. открыть puttygen в меню в верхнем меню Conversions->Import Key выбрать сгенерированный при помощи OpenSSH приватный ключ;

2. сохранить закрытый ключ в формате PPK нажав на кнопку Save private key;

Полученный ключ полностью совместим с уже созданным соответствующим открытым ключём - все, что нужно это указать его в поле "Private key file for authentication" на вкладке SSH->Auth при настройке соединения в Putty.

 

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

 
  2010-12-09

Как скомпилировать Subversion с поддержкой HTTP

> wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.bz2

> tar -xvjf subversion-1.6.15.tar.bz2

> wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.bz2

> tar -xvjf subversion-deps-1.6.15.tar.bz2

> cd subversion-1.6.15

> ./configure --with-ssl

> make

> make install

 

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

 
  2010-12-09

Как вернуть деньги на карту Payoneer

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

У меня такое впечатление что у менеджеров российских банков есть негласная инструкция от центробанка - при любых проблемах с нероссийскими картами - деньги оставлять себе, чтобы неповадно было....

В Связьпромбанке мне заявили что после инкассации банкомата денег они НЕ НАШЛИ, это в системе с двойным то учетом, где все операции многократно журналируются. Росбанке оказались люди более адекватные и посоветовали сразу обратиться в свой банк-эмитент, но на всякий случай у них тоже оставить заявление.

Короче, после безуспешных попыток вернуть свои денежки на родине я обратился в саппорт Payoneer. Пробиться в саппорт Paoyner онлайновыми методами сложно, я написал им на support at payoneer.ru и заполнил онлайновую форму, которую нашел на сайте. Описал как было дело, сказал, что в банке мне помочь отказались.

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

Вчера проверяя баланс, обнаружил что денежки вернулись обратно! Резюмируя вышесказанное самый лучший алгоритм возврата денег неправильно списанных с банкомата:

1. Обратиться в клиентский отдел банка списавшего сумму.
2. Если деньги возвращать отказываются - обратиться в Payoneer.

Саппорт Payoneer'а медленный, но в отличии от наших банков он может реально помочь.

 

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

 
  2010-12-01

Семантический CSS

Если вы когда либо занимались HTML версткой, то вам наверняка доводилось  слышать от клиентов фразы типа: "сделай эту надпись больше", "этот заголовок должен быть красным",  все синие заголовки сделать светлее" и т. п...
Подобные задачи наиболее часто приходится решать HTML верстальщику при работе с текстом. Само собой разумеется, все эти задачи должны рещаться использованием стилей — хороший верстальщик будет использовать внешние стили прописанные в CSS файле, плохой - нагородит кучу inline стилей.

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

Кстати, в Microsoft Word, почему-то, используется прямо противоположный подход — там проще изменить атрибуты самого текста, чем стиля на котором этот текст основан. С каждой новой версией панель инструментов в этой программе увеличивается и увеличивается, вынуждая разработчиков придумывать все новые способы, чтобы уместить на экране все больше и больше кнопочек форматирования. Они даже изобрели новый вид меню, которое назвали "Меда-Лента" (правильно да?). Но с введением нового интерфейса дело еще более ухудшилось. Поэтому, редактирование документов в этом редакторе частенько вызывает приступ острой зубной боли у людей которым довелось поработать в профессиональных программах.

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

Каскадные таблицы стилей еще более удобны для форматирования текста чем стили текстовых редакторов, в них одному куску текста можно назначать одновременно несколько разных стилей. Одно время я так увлекся бестабличной версткой, что почти позабыл о основном назначении каскадных таблиц - форматировать текст.

На деле, для форматирования текстов нужно совсем немного стилей:

- стили для заголовков h1, h2, h3, h4
- стили для тегов форматирования: b, i, em
- стили для выделения теста цветом: .red, .blue, .gray, .green
- стили для эффектов форматирования: .bold, .italic, .higlight
- стили для выделения размером: .small, .big, .bigger, .smaller
- вспомогательные стили для форматирования: .left, .right, .center, .middle

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

Допустим, нам нужно сделать слово в тексте красным и полужирным:

Это <b class="red">слово</b> будет полужирным.

Или нам потребовался нестандартный заголовок H2 выровненный по правому краю и зеленого цвета:

<h2 class="right green">Заголовок H2</h2>

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

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

 

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

 
  2010-11-11

Как узнать действующее значение стиля

При помощи объекта style можно узнать только явно заданные значения стилей, однако в большинстве случев необходимо знать не явно заданные а действующие значения стилей.

В Internet Explorer для этого можно воспользоваться свойстом currentStyle
var elem1 = document.getElementById("elemId");
alert(elem1.display);
(см. http://msdn.microsoft.com/en-us/library/ms535231%28v=VS.85%29.aspx) в браузерах на Mozilla можно использовать window.getComputedStyle(el)
var elem1 = document.getElementById("elemId");
var style = window.getComputedStyle(elem1, null);
alert(style.getPropertyValue("display"))
(см. https://developer.mozilla.org/en/DOM%3awindow.getComputedStyle)
Насчет HTML и Opera не уверен, но думаю там также как и у Mozilla.

 

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

 
  2010-10-24

Как смонтировать и отмонтировать ISO образ диска

Чтобы смонтировать ISO образ:

sudo mkdir /media/iso
sudo modprobe loop
sudo mount file.iso /media/iso/ -t iso9660 -o loop

Чтобы отмонтировать ISO образ:

sudo umount /media/iso/

 

отсюда

 

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

 
  2010-10-24

Странная ошибка в PHP

В Ubuntu при очередном обновлении время от времени стала появляться следующая ошибка:

ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13) in /your/file/here on line 30

Ошибка тем более странная, что появляется в одном случае из тысячи, но все равно довольно неприятная.

Однако, лечение оказалось довольно простым:

Откройте php.ini (обычно он расположен в /etc/php5/apache2/php.ini)
и убедитесь что в нем есть следующая строка:

session.gc_probability= 0

Если ее нет - просто добавьте, если значение не 0 - поставьте в 0.

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

Upd. На одной из моих машинок проблема таким способом так и не вылечилась, я не понял в чем дело и просто поставил права 777 на папку /var/lib/php5/

 

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

 
  2010-10-12

Как сделать папку смонтированную через sshfs видимой через Samba

SSHFS удобнейшая штука если нужно сделать так чтобы часть файловой системы удаленного компьютера была видна как локальная папка. Однако пользователям Windows остается только облизываться - ничего такого, насколько мне известно, там нет. Если у вас есть несколько компьютеров (пусть даже виртуальных) на одном из которых установлен Ubuntu то еще не все потеряно, можно расшарить папку подмонтированную через SSHFS как сетевую папку в Windows.

Спасибо J Wynia за подробную инструкцию как это сделать:

(если вы уже установили и используете sshfs то шаги 1-2 можно пропустить)

1. устанавливаем sshfs

> sudo apt-get install sshfs

2. добавляем себя в группу fuse

> sudo adduser your-username fuse

3. открываем файл /etc/fuse.conf и снимаем комментарий со следующей строчки:

user_allow_other

4. создаем папочку в которой будет монтировать удаленную файловую систему:

> sudo mkdir /mnt/folder_to_mount
> sudo chown your-username /mnt/folder_to_mount

4. Теперь осталось только подмонтировать папку:

> sshfs username@remoteserver.ru:/var/www/html /mnt/folder_to_mount -o allow_other

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

> fusermount -u /mnt/folder_to_mount
 

 

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

 
  2010-10-01

Цветное подчеркивание средствами CSS

Случайно обнаружил способ как сделать цветное почеркивание для текста средствами CSS:

Текст с цветным подчеркиванием!

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

Сама идея проста до безобразия - делаем красный текст с подчеркиванием, затем у вложенного спана переопределяем текст на черный:

<p style="text-align: center; font-size: 1.5em; color: red; text-decoration: underline;">    <span style="color: black;">Текст с цветным подчеркиванием!</span> </p>
 

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