четверг, 6 июня 2013 г.

понедельник, 27 мая 2013 г.

Linux: Продолжаю осваивать git

Собственно, возникла простая задача:
1. Поднять на "сервере" сервер git (это не тавтология)
2. Научиться с репозиториями этого сервера работать по ssh.

Первая задача в первом приближении решилась просто: скачиваем исходники git одним архивом, разархивируем, читаем внимательно файл INSTALL, выполняем команды:
$ make configure
$ ./configure --prefix=/usr
$ make all doc
# make install install-doc install-html
в общем, на вид ничего сложного, справится даже такой тупень, как я.

Вторая задача, как оказалось, тоже не бином Ньютона. Если, конечно, внимательно прочитать инструкцию. Или полезные указания опытных людей. Или ещё что-нибудь.

Но это всё, конечно, не про меня. Узнав про команду ssh-keygen и обрадовавшись открывшимся возможностям я полез заводить юзера git, создавать домашнюю папку, давать разрешения и т.п. В результате каких-то вычурных команд репозиторий обосновался в домашней папке этого пользователя, а сам пользователь получил возможность интерактивного входа в систему. Кошмар. (Зато научился блокировать и разблокировать пользователя командами passwd -l git и passwd -u git)

Короче говоря, сделал так. В папке /opt создал символическую ссылку на папку с репозиторием (этот репозиторий с проектами будет жить на отдельном диске), и принял следующую схему работы при создании нового проекта.

На сервере выполняем команды:
$ cd /opt/git
$ mkdir newProject
$ cd newProject
$ git init --bare
$ git commit -m 'Initial commit'

На клиенте выполняем команды
$ cd newProject
$ git init
$ git remote add origin mylogin@myserver:/opt/git/newProject
$ git pull origin master

Если когда-нибудь этот репозиторий перекочует, можно будет сменить оригины командой
$ git remote set-url origin mylogin@myserver:/new-git-repository/newProject
(кстати, текущие значения этих оригинов в текстовом виде хранятся в папке проекта в файле .git/config)

Ну, эта схема ещё явно не окончательная.

Кстати, набрёл еще на одну памятку. Может, пригодится...

Важное дополнение: клиент git под Windows как-то странно рисует кириллические имена файлов. Вроде бы научить его русскому языку удалось командой:
$ git config --global core.quotepath false

вторник, 21 мая 2013 г.

Slackware: DosBox 0.74

Пытался тут себе поставить этот самый DosBox 0.74. Всё бы ничего, но команда make при компиляции из исходников ругается примерно так: expected primary-expression before «,» token.

Как выяснилось, есть специальный патч:
http://slackbuilds.org/slackbuilds/14.0/system/dosbox/dosbox-0.74-gcc46.patch

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

В общем, скачиваем файл, кладём его в папку с исходником DosBox-а, выполняем команду
patch -p0 dosbox-0.74-gcc46.patch
и спокойно компилируем.

понедельник, 29 апреля 2013 г.

Linux: терминал

Почему-то в терминале перестала работать клавиша Delete. Вместо того, чтобы удалять символ, рисует тильду (~).

Решение такое: в ~/.inputrc добавить строку:

"\e[3~": delete-char

воскресенье, 14 апреля 2013 г.

Debian: устанавливаем I2P

Захотелось тут подключиться к I2P. Нет, мамаша, дети могут не выходить. Нет, не весна. Просто совпало. В общем, установка всего этого богатства расписана тут. Вкратце:

1. Выполняем команду:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB2CC88B

2. Создаём файл /etc/apt/sources.list.d/i2p.list со строками:
deb http://ppa.launchpad.net/i2p-maintainers/i2p/ubuntu natty main 
deb-src http://ppa.launchpad.net/i2p-maintainers/i2p/ubuntu natty main

3. Выполняем команду:
sudo apt-get update

4. Инсталлируем требуемый софт:
sudo apt-get install i2p

Дальше конфигурируем способ запуска роутера командой
sudo dpkg-reconfigure i2p
прописываем в браузере прокси для HTTP - 127.0.0.1:4444, и для HTTPS - 127.0.0.1:4445, и вроде как всё.

Но этого оказалось мало.

Во-первых, захотелось, чтобы эта штука жила на отдельном компе, который у меня "сервер" для всяких tor-ов, торрентов и т.п. Выяснилось, что по умолчанию i2p-роутер сконфигурирован так, чтобы принимать клиентские подключения только с 127.0.0.1. Однако, если зайти в админку,
http://localhost:7657/i2ptunnel/edit.jsp?tunnel=0
то можно там изменить настройки точки доступа на сетевой интерфейс 192.168.xxx.xxx.

Во-вторых, захотелось, чтобы Opera пользовалась этой штукой хитро: на обычные сайты ходила по-прежнему через tor, а на сайты с именами вида *.i2p - через этот новый i2p-роутер. Оказывается, нужно отредактировать файл ~/.opera/override.ini примерно так:
[Overrides]
...
i2p

...

[i2p]
Proxy|Use HTTP=1
Proxy|HTTP server=192.168.xxx.xxx:4444
Proxy|HTTPS server=192.168.xxx.xxx:4445

Вот тогда стало всё ок.

четверг, 11 апреля 2013 г.

SQL Server: Показать разрешения пользователя на объект

Оказывается, просто:
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT * FROM fn_my_permissions('AdventureWorks2012.HumanResources.Employee', 'OBJECT') 
    ORDER BY subentity_name, permission_name ;  
REVERT;
GO

вторник, 9 апреля 2013 г.

Windows: MiKTeX и расстановка переносов

Обнаружилось, что древний(?) MiKTeX 2.6 не расставляет переносы.

Как оказалось, проблема решается следующим способом:

1. В файле \tex\generic\config\language.dat нужно найти и раскомментировать (или добавить, как повезёт) следующие строки:
\russian  ruenhyph.tex  
=russian

2. Зайти в папку \tex\generic\ruhyphen и скопировать в папку \texmf\tex\generic\hyphen все файлы вида ru*.tex и enru*.tex.

3. Зайти в папку \miktex\bin и выполнить команду:
initexmf --dump
И вот тут начинаются чудеса.

4. Команда из предыдущего пункта ругается LaTeX source files more than 5 years old! и ничего не делает. Как выяснилось, это обходится так:
- открываем файл \tex\latex\base\latex.ltx
- находим там строку \ifnum\count@>65 и меняем её на \ifnum\count@>100

5. После этого читерства команда из п.3 выполняется без ошибок.