2013-02-28

Использование Git


Использовать систему контроля версий GIT очень просто. Для начала вот краткий инструктаж. Устанавливаем git:
sudo apt-get install git

Перемещаемся в корневой каталог проекта и инициализируем проект:
cd ~/Projects/myProjectName
git init

Для хостинга проекта я использую Bitbucket. Зарегистрируйтесь на сайте и получите
имя пользователя, допустим, это myBBname. Теперь нужно создать проект, думаю, разберётесь. Пусть он называется myProjectName. Добавим запись о нём, назовём запись REPONAME:
git remote add REPONAME https://myBBname@bitbucket.org/myBBname/myProjectName.git

Добавляем файл(ы) в репозатарий
git add *.php

Когда закончим добавлять новые/изменённые файлы/каталоги, подтверждаем и указываем комментарий:
git commit -m "Пояснение к коммиту"

Теперь можно залить изменённые данные на сервер; используем запись REPONAME, основная ветка:
git push -u REPONAME master

BitBucket запросит пароль аккаунта для myBBname. Если всё было сделано правильно, то файлы зальются на сервер, а в вашем аккаунте появится информация о пределанных операциях.

Через несколько push-ей у вас повится зуд в пальцах от того, что каждый раз нужно вводить пароль. Нужно это как-то поправить. Решение - в использовании SSH и ключей. Запустим утилиту `ssh-keygen`:
ssh-keygen

Она будет предлагать варианты действий, ключевым из которых будет имя создаваемого
файла ключа (как правило, это `~/.ssh/id_rsa.pub`) и passphrase. Придумайте что-нибудь сами.
Теперь у нас есть файл ключа, закинем его в аккаунт Bitbucket (с учетом названия вашего аккаунта): https://bitbucket.org/account/user/myBBname/ssh-keys/

Там всё просто: Add Key, даём ему понятное название, в текстовое поле вносим содержимое файла ключа, сохраняем.
Добавим новую запись о проекте, через которую будем осуществлять доступ к серверу, в варианте для SSH (назовём её SSHREPONAME):
git remote add SSHREPONAME ssh://git@bitbucket.org/myBBname/myProjectName.git

Отлично. Теперь сделаем так, чтобы наш пароль был ассоциирован с ssh-ключом. Запустим `ssh-agent` для оболочки:
ssh-agent bash
ssh-add

У нас спросят ту самую passphrase, которую мы вводили, когда генерировали файл-ключ с помощью `ssh-keygen`.
Теперь, отправляя файлы на сервер, можно использовать ssh-запись, и будет использован ключ, а не пароль.
git push -u SSHREPONAME master

В завершении скажу, что можно использовать плагин Git в Sublime Text 2,
особенно если создать проект ровно в том-же каталоге, где и создан репозитарий git. И это очень удобно.

2013-02-19

Pidgin и ошибка аутентификации

Что-то я такое сделал, что при попытке соединения Pidgin с GTalk и chat.facebook.com мой верный IM выдавал ошибку с текстом:
"Сервер не использует ни одного поддерживаемого метода аутентификации"
Перепробовав все настройки, и даже предприняв попытку собрать версию Pidgin посвежее, остановился на смене клиента. Gajim работал, но пришлось держать запущенными аж два приложения: Gajim для jabber-протокола и Pidgin для ICQ.
Сегодня натолкнулся на причину такого странного отказа довольно надёжного клиента сообщений. А именно: в ходе баловства с виртуальными поддоменами апача я правил файл /etc/hosts и сделал так, что адрес 127.0.0.1 перестал соответствовать имени компьютера, прописанному в /etc/hostname. Просто дописав в /etc/hosts 
127.0.0.1 имякомпьютера
решил проблему.

2012-11-14

mount без пароля

Задача: написать скрипт, который будет монтировать папку с удаленного win-сервера, и, после копирования файлов на локальную машину, отмонтировать её.
Казалось бы, ничего сложного, mount решает:

sudo apt-get install cifs-utils
sudo mount -t cifs //192.168.0.1/Folder /home/kawaikunee/Folder -o username=User,password=Pass,rw,file_mode=0777,dir_mode=0777
cp -a -n /home/kawaikunee/Folder/*.pdf /home/kawaikunee/Doc/PDFs/
sudo umount /home/kawaikunee/Folder

Да вот только одна проблема: скрипт должен работать автономно. И пароль sudo ему знать совсем не обязательно.

Решение: добавить пользователю, от чьего имени запускается скрипт, права на беспарольное использование sudo mount и sudo umount. Для этого внесём изменения в файл /etc/sudoers

sudo gedit /etc/sudoers

Добавим в него строчку:

kawaikunee linux = NOPASSWD: /bin/mount,/bin/umount

где первые два слова - имя пользователя и имя компьютера (они обычно представлены в приглашении терминала по умолчанию).

Задача решена. Скрипт использует sudo, но пароль у него не спрашивают.
P.S. Что-то мне подсказывает, что так можно и другие подобные задачи решить :)

2012-08-13

Node.JS: DEB-пакет

Решил побаловаться с Node.JS, поставил из репозитория. npm в комплекте не идёт, при установке nodejs-dev пишет "но пакет не будет установлен". Не стал долго париться,  поставил с оф.сайта. Собрал DEB-пакеты, если кому нужно.

DEB-пекет
node_0.10.0-1_i386.deb

2012-05-30

Ubuntu 12.04 + Adobe Air

В репозитариях Ubuntu 12.04 больше нет пакета adobeair. Не поддерживает Adobe нашу братию. Но рабочий air всё ещё есть, и для некоторых софтин он нужен. Специально для вас выкладываю в dropbox:
Adobe AIR 2.6 for Linux