Раскладка Ильи Бирмана


Zeboton

Сегодня один мой знакомый дизайнер рассказал об очень полезной, на мой взгляд, вещи — раскладка Ильи Бирмана. Это типографская раскладка которая позволят очень удобно печатать символы типа: « » [ ] { } € ® ™ © ↓ ↑ ← → ∞ ² ½ ³ ⅓ ¼ ‰ и так далее. Все эти символы я ввёл не переключаясь с русской раскладки клавиатуры и не прибегая к другим программам, правда удобно?

На сайте есть бинарные пакеты для Windows и Mac, а для Linux есть файлы и инструкции (аж два варианта: xkb-unicode и Rukbi ) о том что с ними нужно делать.

Я выбрал Ruckbi, так как описание по её установке мне больше понравилось.

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

Теперь не придётся переключаться в IDE на английский для того чтобы ввести „[“, „]“, „{“, „}“! А ещё не нужно пользоваться OpenOffice.org или copypastecharacter.com для получения „«“ и „»“! Класс!

RTorrent – my way

9 февраля 2009
Рубрика: Заметки
Теги: ,

Zeboton

В своей первой заметке в этом блоге я решил написать именно про RTorrent — клиент p2p сетей работающих по протоколу bitorrent. Потратив солидное количество времени на поиск нужных мне настроек и перерыв десятки мануалов хотелось бы облегчить жизнь идущим за мной энтузиастам.

Требования были следующие:
— автоматическая загрузка клиента при старте системы
— работа в фоновом режиме
— распределение контента по различным категориям(папкам) после окончания загрузки.
— информативный интерфейс(не графический)
— быстрый графический интерфейс
— наличие пакета в репозитарии Ubuntu
— умеренный расход оперативной памяти и т.д.

По всем этим параметрам подходил RTorrent. Поскольку я не очень большой любитель компилировать софт из исходников и не до конца избавился от microsoft-зависимости, выбрал самый простой путь — ставить из репозитория.
Нагуглил несколько сносных инструкций для установки. Инструкция №1, инструкция №2.

Если рассматривать весь процесс по шагам то выходит следующее:
Шаг 1. — установка

Ставим необходимые пакеты.

sudo apt-get install rtorrent screen apache2 php5-cgi php5-common php5-sqlite php5-xmlrpc sqlite unzip php5-curl

В случае использования только консольной версии без веб интерфейса необходимо установить только пакеты rtorrent, screen и все затребованные зависимостями пакеты.

Шаг 2. — конфигурация Rtorrent
В домашней директории пользователя необходимо создать файл конфигурации с названием .rtorrent.rc и определить там все необходимые параметры.
Мой файл конфигурации выглядит так:
(Все тонкости будуь описаны позже)

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
min_peers = 1
max_peers = 1000

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 1
max_peers_seed = 100

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. «0» for unlimited.
download_rate = 800
upload_rate = 500

# Default directory to save the downloaded torrents.
directory = /media/raid/download/all/

# Default session directory. Make sure you don’t run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /media/raid/rtorrent/

# Watch a directory for new to rrents, and stop those that have been
# deleted.
schedule=watch_directory_1,5,10,»load_start=/media/raid/download/links/all/*.torrent,d.set_directory=/media/raid/download/all/,d.set_custom1=/media/raid/soft/»
schedule=watch_directory_2,5,10,»load_start=/media/raid/download/links/soft/*.torrent,d.set_directory=/media/raid/download/soft/,d.set_custom1=/media/raid/soft/»

on_finished = move_complete,»execute=mv,-u,$d.get_base_path=,$d.get_custom1= ;d.set_directory=$d.get_custom1=»

#schedule =watch_directory,5,5,load_start=/media/raid/download/links/*.torrent

schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=1000M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.

# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,»stop_on_ratio=200,200M,2000″

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no

# Port range to use for listening.
port_range = 6890-6900

# Start opening ports at a random position within the port range.
port_random = yes

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
check_hash = yes

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip’s.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
encryption = allow_incoming,try_outgoing,enable_retry

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to «disable» (completely disable DHT), «off» (do not start DHT),
# «auto» (start and stop DHT as needed), or «on» (start DHT immediately).
# The default is «off». For DHT to work, a session directory must be defined.
#
dht = auto

# UDP port to use for DHT.
#
dht_port = 6901

# Enable peer exchange (for torrents not marked private)
#
peer_exchange = yes

#
# Do not modify the following parameters unless you know what you’re doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10
scgi_port = localhost:5000
safe_sync = yes

Шаг 3. — конфигурация screen
Для непрерывной работы Rtorrenta нам потребуется использовать консольный оконный менеджер — SCREEN

Для загрузки rtorrenta при старте системы я использовал скрипт с сайта разработчика.
Мне пришлось его немного подправить(правил ключи для запуска screen), в моём варианте скрипт выглядит так:

#!/bin/sh
#############
######
#############
# This script depends on screen.
# For the stop function to work, you must set an
# explicit session directory using ABSOLUTE paths (no, ~ is not absolute) in your rtorrent.rc.
# If you typically just start rtorrent with just «rtorrent» on the
# command line, all you need to change is the «user» option.
# Attach to the screen session as your user with
# «screen -dr rtorrent». Change «rtorrent» with srnname option.
# Licensed under the GPLv2 by lostnihilist: lostnihilist _at_ gmail _dot_ com
##############
######
##############

#######################
##Start Configuration##
#######################
# You can specify your configuration in a different file
# (so that it is saved with upgrades, saved in your home directory,
# or whateve reason you want to)
# by commenting out/deleting the configuration lines and placing them
# in a text file (say /home/user/.rtorrent.init.conf) exactly as you would
# have written them here (you can leave the comments if you desire
# and then uncommenting the following line correcting the path/filename
# for the one you used. note the space after the «.».
# . /etc/rtorrent.init.conf

#Do not put a space on either side of the equal signs e.g.
# user = user
# will not work
# system user to run as
user=»vini»

# the system group to run as, not implemented, see d_start for beginning implementation
# group=`id -ng «$user»`

# the full path to the filename where you store your rtorrent configuration
config=»`su -c ‘echo $HOME’ $user`/.rtorrent.rc»

# set of options to run with
options=»»

# default directory for screen, needs to be an absolute path
base=»`su -c ‘echo $HOME’ $user`»

# name of screen session
srnname=»rtorrent»

# file to log to (makes for easier debugging if something goes wrong)
logfile=»/var/log/rtorrentInit.log»
#######################
###END CONFIGURATION###
#######################
PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
DESC=»rtorrent»
NAME=rtorrent
DAEMON=$NAME
SCRIPTNAME=/etc/init.d/$NAME

checkcnfg() {
exists=0
for i in `echo «$PATH» | tr ‘:’ ‘\n’` ; do
if [ -f $i/$NAME ] ; then
exists=1
break
fi
done
if [ $exists -eq 0 ] ; then
echo «cannot find rtorrent binary in PATH $PATH» | tee -a «$logfile» >&2
exit 3
fi
if ! [ -r «${config}» ] ; then
echo «cannot find readable config ${config}. check that it is there and permissions are appropriat$
exit 3
fi
session=`getsession «$config»`
if ! [ -d «${session}» ] ; then
echo «cannot find readable session directory ${session} from config ${config}. check permissions» $
exit 3
fi
}

d_start() {
[ -d «${base}» ] && cd «${base}»
stty stop undef && stty start undef
su -c «screen -ls | grep -sq «\.${srnname}[[:space:]]» » ${user} || su -c «screen -dmUSfa ${srnname} 2>&$
# this works for the screen command, but starting rtorrent below adopts screen session gid
# even if it is not the screen session we started (e.g. running under an undesirable gid
#su -c «screen -ls | grep -sq «\.${srnname}[[:space:]]» » ${user} || su -c «sg \»$group\» -c \»screen -f$
su -c «screen -S «${srnname}» -X screen rtorrent ${options} 2>&1 1>/dev/null» ${user} | tee -a «$logfile$
}

d_stop() {
session=`getsession «$config»`
if ! [ -s ${session}/rtorrent.lock ] ; then
return
fi
pid=`cat ${session}/rtorrent.lock | awk -F: ‘{print($2)}’ | sed «s/[^0-9]//g»`
if ps -A | grep -sq ${pid}.*rtorrent ; then # make sure the pid doesn’t belong to another process
kill -s INT ${pid}
fi
}

getsession() {
session=`cat «$1» | grep «^[[:space:]]*session[[:space:]]*=» | sed «s/^[[:space:]]*session[[:space:]]*$
echo $session
}

checkcnfg

case «$1» in
start)
echo -n «Starting $DESC: $NAME»
d_start
echo «.»
;;
stop)
echo -n «Stopping $DESC: $NAME»
d_stop
echo «.»
;;
restart|force-reload)
echo -n «Restarting $DESC: $NAME»
d_stop
sleep 1
d_start
echo «.»
;;
*)
echo «Usage: $SCRIPTNAME {start|stop|restart|force-reload}» >&2
exit 1
;;
esac

exit 0

Следующие 2 шага будут дописаны позже!

Шаг 4. — прикручивание веб интерфейса

Шаг 5. — оживление rtorrent после падения по CRON

Обзор общих записей [2009-6]

8 февраля 2009
Рубрика: Linux, Ubuntu, Заметки
Теги: , , ,

Zeboton

У общих записей из Google Reader есть один очень негативный момент — по ним невозможно искать! А в них оседает очень много интересной информации, которую тупо перепечатывать в блог не очень хочется. После очередного поиска в общих записях нужной мне статьи я решил, что было бы удобно сделать в блоге обзор того что за какой-то период времени в них попало. Думаю, что в качестве периода лучше всего выбрать неделю. Итак, встречайте первый обзор моих общих записей из Google Reader.

Думаю, что зачастую заголовков будет достаточно. Итак самое интересное из общих записей на данный момент:

F10 и консоль в Ubuntu

5 февраля 2009
Рубрика: Intrepid Ibex (8.10), Ubuntu, Заметки

Zeboton

Многие при работе в консоли сталкивались с тем, что функциональная клавиша F10 не работает. Для себя эту проблему я решил довольно просто

Открыв консоль стандартным способом Приложения-Стандартные-Терминал.
Открываем меню Edit-Keyboard Shortcuts
Окно терминала
и там отмечаем пункт Disable menu shortcut key

Окно терминала

После всего проделанного пользоваться mc стало гораздо удобнее!

Запрет обновления ядра Linux

2 февраля 2009
Рубрика: Hardy Heron (8.04), Linux, Ubuntu, Заметки
Теги: , ,

Zeboton

На MSI Wind установлен WiFi модуль от Realtek. И к сожалению к нему до сих пор нет нормальных драйверов, поэтому при обновлении ядра приходится заново собирать для него драйвера из исходных кодов. Как это избежать? Очень просто — заблокируйте обновление ядра.

Откройте Synaptic [Система — Администрирование — Менеджер пакетов Synaptic]. И заблокируйте версии для следующих пакетов:

linux-generic
linux-libc-dev
linux-restricted-modules-common
linux-restricted-modules-generic

Для этого выделите нужный пакет и выберите пункт меню [Пакет — Заблокировать версию]:
Заблокировать обновление ядра Linux // Synaptic

Теперь при проверке обновлений через Менеджера Обновлений на его заявление о том что Не все обновления возможно установить отвечайте кнопкой Закрыть и после этого можно щёлкнуть на кнопку Установить обновления.

Всё. У меня так система работает с октября 2008 года.

Средства визуального проектирования Баз Данных в Linux


Zeboton

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

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

  • Работает в Ubuntu Linux без использования Wine и других эмуляторов Windows. Марк Шаттлворт сказал, что использование Wine неправильный путь, и я с ним согласен;
  • Не должна связываться с БД, так как это не к чему, да и хостеры зачастую не дают доступа к MySQL извне.
  • Умеет создавать ER-модель БД;
  • Умеет создавать из модели SQL-код, пригодный для использования в MySQL.

Первое на что я обратил внимание, естественно, была программа MySQL Workbench (скачать MySQL Workbench). После установки версии 5.1.5aplha и не долгих тестов я был очень рад, так как понял что это именно то, что я хотел. Но моя радость была не долгой. После того как я приступил к созданию модели нужной мне БД програма начала вести себя неадекватно и вылетала при каждом удобном случае. После долгих попыток «договориться» с программой не приведших вообще ни к какому результату, был продолжен поиск аналогичных программ.

Была найдена статья «Обзор средств визуального проектирования БД в Linux». И начался перебор программ.

Было опробовано дополнение к IDE Eclipse — AmaterasERD. Плагин хорош только для быстрого набрасывания модели БД. Поддерживает построение отношений таблиц, но при этом нельзя указать какое действие должно производиться с зависимой таблицей (RESTRICT, CASCADE и т.д.). Да и превращение модели в SQL-код я не нашёл.

Был опробован GNU Ferret. Это что-то совсем аскетичное и на уровне начала 90-х.

OpenOffice.org: Базы данных — это сродни Microsoft Access и для данной задачи оказался бесполезен.

Execute Query — мощная среда, но в следствии того что я не могу подключиться к БД хостера мне не помогла. Также не имеет типов данных TEXT, BLOB и иже с ними.

Power*Architect Data Modeling Tool — удобное средство, но так же как и Execute Query имеет не все типы данных. Слегка аскетичное.

dbWrench — умеет делать всё что мне нужно, имеет приятный интуитивнопонятный интерфейс, работает быстро. Отличная альтернатива ещё очень сырому MySQL Workbench, НО она платная! 149 USD! Есть триал версия, которая работает 30 дней.

Есть ещё один интересный плагин для Eclipse от компании Soyatec, но я его ещё неиспытывал.

Выводы
В мире Linux есть много инструментов, которые могут выполнить поставленные мною задачи. Какие-то хуже, какие-то лучше, но идеального я так и не нашёл. Завтра испытаю плагин для Eclipse от Soyatec. Если он окажется лучше dbWrench, то буду проектировать БД в нём, а пока победитель моего обзора однозначно dbWrench, хоть он и платный!

Добавлено 28 января 2009 в 11:00
Плагин для Eclipse от компании Soyatec установить не удалось в силу моего низкого уровня знаний зависимостей плагинов среды Eclipse. Требуется плагин org.eclipse.pde, а я его найти и установить не смог.

Поиск WiFi сети

26 января 2009
Рубрика: Hardy Heron (8.04), Ubuntu, Заметки
Теги: ,

Zeboton

На MSI Wind есть возможность отключения адаптера WiFi для того чтобы минимизировать расход энергии. Это бывает полезно когда пользуешься этим устройством в местах где нет WiFi сетей и где не получилось подключиться к сети электропитания. Но когда возвращаешься домой, где есть WIFi, то после загрузки Ubuntu 8.04.1 и включения WiFi адаптера сеть автоматически не находится. Раньше чтобы сеть нашлась я перезагружал компьютер, но это путь мне никогда не нравился. В результате после изучения базовых WiFi утилит я разобрался как найти сеть без перезапуска компьютера.


sudo iwlist scan
sudo ifdown -a
sudo ifup -a

В первой строке сканируются доступные WiFi сети.
Вторая строка выключает все сетевые интерфейсы. Лучше выключить именно все, так как у кого-то WiFi находится на интерфейсе wlan0, а у кого-то на ath0. Если вы точно знаете, то можно использовать sudo ifdown .
Третья строка вновь поднимает все интерфейсы, но уже вместе с WiFi.

Обновление от 01 февраля 2009 в 09:15
При написании заметки я ошибся в порядке команд. Теперь исправил. При выполнении сканирования WiFi интерфейс должен быть поднят, иначе никакого сканирования не произойдёт!

Pidgin и война с ICQ

23 января 2009
Рубрика: Заметки
Теги: , ,

Zeboton

На днях AOL предприняла очередную попытку избавиться от неофициальных клиентов. Что самое странное, сделать они это хотели только с некоторыми странами. Россия, Украина и ряд других стран СНГ. Но к вечеру того же дня уже было выпущено первое лекарство для Miranda и QIP. Теперь очередь дошла и до Pidgin.

Есть три способа для исправления сложившейся ситуации:
1. Быстрый. Для ленивых владельцев 32-битных систем.
Скачайте архив liboscar.so.0.0.0.tar.bz2 и распакуйте его в папку /usr/lib/purple-2. Не забудьте перед этой процедурой сделать копию уже имеющегося в директории файла. Проверка работоспособности осуществлялась на версии 2.5.2, но должно работать и на 2.5.4.

2. Долгий. Для любителей всё делать самостоятельно и для тех кому не подошёл предыдущий способ.
а) Скачиваем исходники Pidgin и патча.

б) Устанавливаем необходимые для сборки пакеты (это всё одна строка)

sudo aptitude install libglib2.0-dev libgtk2.0-dev libxss-dev libstartup-notification0-dev libgtkspell-dev libxml2-dev libgstreamer0.10-dev libmeanwhile-dev libavahi-ui-dev libdbus-glib-1-dev network-manager-dev libperl-dev libgnutls-dev tcl-dev tk-dev

в) Распаковываем архив с Pidgin

tar xvfj pidgin-2.5.4.tar.bz2

г) Применяем патч

patch < pidgin-NOT-UPSTREAM-2.5.4-icq-russia.patch

д) Конфигурируем, собираем и устанавливаем Pidgin (это две строки)

./configure —prefix=/opt/ && make
sudo make install

е) Запускаем Pidgin

/opt/bin/pidgin

3. Правильный. Рекомендуется, так как рано или поздно это сделать придётся.
Поступить как я. Перестать пользоваться ICQ и перейти на Jabber. Это проще чем кажется! Очень хорошая статья о переходе на Jabber написана на ресурсе Хабрахабр: Я бы в Джабберы пошёл…

По мотивам статьи Патчим и собираем pidgin на дому.

Обновление от 05 февраля 2009 11:56
Есть ещё вариант запуска ICQ через tor. Делается это так:

sudo apt-get install tor

А затем в настройках ICQ указываем:

  • socks: 5
  • узел: localhost
  • порт: 9050

Сам не пробовал, так как я воспользовался 3 вариантом решения проблемы.

Автостарт WiFi сети в Ubuntu 8.10 «Intrepid Ibex»

14 января 2009
Рубрика: Intrepid Ibex (8.10), Ubuntu, Заметки
Теги: ,

Zeboton

NetworkManager в Ubuntu 8.10 был переработан очень сильно и, как мне кажется, в лучшую сторону. Где-то на форуме я читал, что он теперь может подсоединяться к 3G сетям через USB модем! Но в этом благоденствии есть нюанс.

У меня дома маленькая WiFi сеть. NetworkManager в Ubuntu 8.10 подключается к WiFi сети только после того как пользователь авторизуется в системе (откроется сессия Gnome). С одной стороны это правильно, но с другой стороны я хочу управлять компьютером с WiFi через ssh. То есть я хочу нажать на кнопку включения на корпусе нужного компьютера, перейти к своему MSI Wind и с него по ssh управлять включённым и подключённым по WiFi к сети компьютером.

С настройками по-умолчанию такое сделать не получалось. Но немного покопавшись в конфигурационных файлах я нашёл решение. Всё просто!

Открываем из под sudo файл /etc/network/interfaces чтобы можно было произвести в него запись:

sudo nano /etc/network/interfaces

И добавляем в него код:

auto ath0
iface ath0 inet static
address 10.5.5.10
netmask 255.255.255.0
gateway 10.5.5.1
wireless-key 12345678901234567890123456
wireless-essid homeNet

Где:
ath0 — имя интерфейса у меня. Для того чтобы узнать какой у вас интерфейс отвечает за WiFi достаточно выполнить в терминале команду:

iwconfig

10.5.5.10, 255.255.255.0, 10.5.5.1, 12345678901234567890123456, homeNet — данные из моей сети у вас они будут другие.

Почти всё готово, осталось только прописать DNS и всё будет работать как часы. Открываем нужный файл:

sudo nano /etc/resolv.conf

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

nameserver 10.5.5.1

Вместо 10.5.5.1 впишите IP адрес своего роутера или IP адрес DNS сервера своего провайдера.

Сохраняем файл. Перезагружаем компьютер и всё работает 🙂

Домашний сервер

9 января 2009
Рубрика: Hardy Heron (8.04), Ubuntu, Заметки
Теги: , , , ,

Zeboton

После переноса всего рабочего процесс на MSI Wind у меня остался компьютер, который начал простаивать. Так как компьютер полностью рабочий, то меня это несколько расстраивало. После некоторых раздумий и прикидок я решил сделать этот компьютер домашним сервером. Итак, что на нём должно работать?

  • WEB сервер, то есть LAMP с phpMyAdmin, для хранения моих небольших проектов во время проектирования и создания, а также для изучения открытых систем и системного администрирования;
  • SVN для контроля версий систем моих небольших проектов;
  • Trac для управления моими небольшими проектами;
  • Torrent клиент, то есть rTorrent, для поддержания лозунга — «Искусство должно принадлежать народу».

Сейчас я настроил только LAMP, SVN и Trac. И дальше пойдёт некоторое повествование как это сделать. С rTorrent есть несколько затруднений, поэтому о нём я напишу чуть позже.

Установить LAMP, имея диск Ubuntu Server 8.04.1, не составляет никакого труда. Поэтому заострять на этом внимания я не буду. Тем более в Сети уже полно руководств по настройке сервера под контролем Ubuntu. Как на английском с картинками, так и на русском, но без картинок.

Установку SVN и Trac я выполнял по инструкции. Проблем никаких не возникло.

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

sudo nano /etc/apache2/sites-available/default

Файл должен выглядеть примерно так:

# Эта строчка говорит о том что на сервере будет несколько сайтов
NameVirtualHost 10.5.5.11:80
# Конфигурируем первый хост. Набор данных взят из файла по-умолчанию.
<VirtualHost 10.5.5.11:80>
ServerAdmin webmaster@localhost
ServerName project1
DocumentRoot /home/serg/www/

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

<Directory «/home/serg/www»>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ «/usr/share/doc/»
<Directory «/usr/share/doc/»>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

# Конфигурируем второй хост. Используем только то, что нужно
<VirtualHost 10.5.5.11:80>
ServerName project2
DocumentRoot /home/serg/www2
<Directory «/home/serg/www2»>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Где:
10.5.5.11 — IP адрес компьютера в локальной сети

Теперь нужно упросить Apache прочитать новые настройки. Благо он не девушка, поэтому это сделать совсем не сложно:

sudo /etc/init.d/apache2 force-reload

На компьютере с которого будет производиться обращение к серверу нужно сделать следующее: перейти в меню Система — Администрирование — Сеть. Разблокировать окно для редактирования. Перейти на вкладку Узлы и добавить параметры:
IP-адрес: 10.5.5.11 (это адрес сервера в моей сети, у вас скорее всего будет другой)
Псевдонимы: project1 project2 (здесь нужно указывать то, что было написано в директивах ServerName у каждого VirtualHost):
Свойства псевдонимов узла // meAndUbuntu.blogspot.com
В результате получим что-то типа:
Сетевые параметры // meAndUbuntu.blogspot.com

Теперь, при включённом домашнем сервере, я могу набрать в строке браузера http://project2 и посмотреть как работает проект после последних изменений.