понедельник, 19 ноября 2007 г.

Создаем локальный репозиторий gutsy

Хорошее руководство по созданию локального репозитория Ubuntu есть на форуме. Но стоит учитывать некоторые нюансы:

1. В gutsy сломан debmirror. Поэтому, перед началом выкачивания репозитория его надо исправить (так как там и указано - убрать один из двух "\n" на 793 строке).

2. Несмотря на исправление, первый раз debmirror лучше запускать с параметром --nocleanup - мало ли что ;-)

3. В gutsy появился еще репозиторий gutsy-proposed. Так что строка для выкачивания репозиториев gutsy i386 может быть такой:
/usr/bin/debmirror --nosource -m --passive --host=mirror.yandex.ru \
--root=:ubuntu --method=rsync --progress --nocleanup \
--dist=gutsy,gutsy-security,gutsy-updates,gutsy-backports,gutsy-proposed \
--ignore-release-gpg --section=main,restricted,multiverse,universe \
--arch=i386 gutsy-rep

После того, как debmirror заработает, параметр --nocleanup можно смело убирать.

4. Точно так же можно собрать репозиторий из среза на DVD. Достаточно скопировать в папку gutsy-rep папки pool со всех дисков - тогда выкачается только dists и обновления пакетов.

5. Выкачанный репозиторий можно подключать в sources.list по протоколу file://, а можно и нарезать на болванки. Тут тоже есть нюанс: после создания папок .disk, а в них - файлов info с описаниями дисков можно содержимое сразу записывать. Только стоит учитывать, что большинство программ записи по умолчанию скрывают папки и файлы, начинающиеся на точку и надо не забыть перенести их на диски вручную. А создание iso-образов позволяет не обращать внимания на это.

пятница, 5 октября 2007 г.

Универсальные списки в django

Django пропагандирует девиз "less code is better", благодаря которому есть такая штука, как generic views. Но generic views, уменьшая код на python, приводят к тому, что дублирование проявляется в шаблонах. Чтобы его не было, придется позаимствовать подход из интерфейса администратора django:

1. View должен оперировать собственно классом модели и его метаинфомацией:
def object_list(request, modelname):
model = get_model('', modelname)
return render_to_response('object_list.html',
{'fields': model._meta.fields,
'class_name': model._meta.verbose_name_plural,
'object_list': model.objects.all()})


2. Тогда в самом шаблоне можно не только строить цикл
for object in object_list
но и цикл
for field in fields

3. В этом случае так просто получить значение поля не получится и придется написать фильтр:
def display_value(model, field):
return getattr(model, field.name)
register.filter('display_value', display_value)

Соответственно в шаблоне можно использовать конструкцию:
object|display_value:field

4. Этот код прекрасно работает с обычными полями, но для списков выбора (choices) возвращает хранимое, а не отображаемое значение. Значит придется вытаскивать список выбора и находить по хранимому значению отображаемое:
def display_value(model, field):
stored_value = getattr(model, field.name)
if field._choices == []:
return stored_value
else:
return filter(lambda choice, value=stored_value:
choice[0]==value, field._choices)[0][1]

Можно конечно написать и именованную функцию (или вообще, применить обычный цикл вместо фильтрации).

понедельник, 3 сентября 2007 г.

Непогода для Висты

Моя жена привыкла смотреть прогноз погоды в Ubuntu при помощи скринлетов. Соответственно, когда у нее появился ноутбук с Вистой, то я поначалу даже обрадовался: "Не придется настраивать погоду, все будет работать из коробки".
Ага, разбежался... Как оказалось, "мини-приложение" погоды в Windows Vista просто не работает. Рецепт лечения вроде бы был найден, но... снова незадача. Единственный wlsrvc.dll, который я смог достать, был от Vista Business и на Vista Home Premium он ни в какую не заработал.
Вот такая она, самая удобная и привычная ОС от Microsoft...


PS. Все обновления Windows устанавливаются регулярно, но исправления пока не видно.

среда, 29 августа 2007 г.

Карта пользователей Ubuntu

Открылась карта пользователей Ubuntu. Отметился на ней. Правда, некто Tuggrik меня полностью перекрывает...
Для того, чтобы правильно ввести координаты на карте, достаточно найти себя на Google Maps и сказать "Проложить маршрут". Будут показаны две координаты: первую надо вводить в Lattitude, вторую - в Longitude.

вторник, 14 августа 2007 г.

Windows Vista vs. Need for Speed Carbon

Несколько дней назад жена попросила меня установить ей на ноутбук Need for Speed. "Легко", - подумал я, не предполагая, что все окажется несколько не так...
Решив, что играть в "Most Wanted" будет уже неинтересно, я стал искать "Carbon". К моему удивлению, в первом магазине "Carbon" не было (зато на полках лежали "Most Wanted" и "Underground 2"). Во втором и третьем - тоже. Наконец, в четвертом магазине я нашел искомую коробку. Первый раз я задумался, когда увидел цену лицензионной игры. Второй - когда прочитал надписи "ОС: Windows 2000/XP" и "Видеокарты портативных компьютеров не поддерживаются". Но все-таки я решил рискнуть с Windows Vista и Mobility Radeon.
Ставлю игру, регистрируюсь на сайте при установке - за это даже обещают прислать что-нибудь эксклюзивное. И, конечно, обманывают, присылая два совета, любой из которых можно легко увидеть по ходу игры.
Первый "сюрприз" поджидал сразу после установки - игра не запускалась, сразу падая. Вспомнив надпись "ОС: Windows 2000/XP", я поставил режим совместимости. Стало еще веселее: "Вставьте диск", который, разумеется, и был вставлен. Оказалось, что надо ставить режим совместимости с Windows 98/ME, тогда игра запустится.
Запуститься-то она запустилась, но на многих гонках в южных районах бодро продолжала вылетать. Все это время autorun диска предлагал проверить обновления. При проверке открывалась страница с гордой надписью "No patches available"...
Все же победить Carbon под Vista удалось. Оказалось, что надо скачать патч 1.3 со специального сайта (иногда, кстати, встречаются упоминания о том, что на русский Carbon ставится патч 1.4 для языков "Rest of Europe" - так вот, это не так).
И кроме режима совместимости с Windows 98/ME надо еще запускать Carbon с правами администратора - стабильность игры будет намного выше.

суббота, 30 июня 2007 г.

Google Desktop

Совершенно без какой-либо шумихи (или это просто я пропустил?) Google выпустила Desktop для Linux. Хотя Desktop - это они сильно загнули. На самом деле это всего лишь Desktop Search. Никаких rss-читалок и прочих гаджетов с боковой панелью не предусмотрено.
Доступны пакеты rpm и deb. Причем Google Desktop Linux - нативное GTK2-приложение, безо всяких спец. версий WINE (как то было с Picasa).

четверг, 28 июня 2007 г.

Русский язык в Lazarus

Lazarus как и любое другое приличное приложение в Linux определяет текущий язык (локаль) и показывает интерфейс на нем. Соответственно, если основной язык в Ubuntu выставить русский, то интерфейс Lazarus будет на русском.
Если нужен только английский язык, а интернационализацию и локализацию приложений предполагается делать правильным способом (через GNU gettext - po/mo файлы), то можно запускать IDE так:
LANG=en_US.UTF-8 startlazarus
Если же русский язык нужен, то придется патчить gtk1 (Lazarus, к сожалению, использует его). Пакеты можно ставить от edgy, ну и поправить ~/.gtkrc-1.2-gnome2 не помешает (если русский язык превратится в квадратики). Если в ~/.gtkrc-1.2-gnome2 написано
# Autowritten by gnome-settings-daemon. Do not edit
include "/home/<user>/.gtkrc.mine"

то править надо, соответственно, ~/.gtkrc.mine