Многие, кто обновил feisty до gutsy, заметили довольно неприятный баг в tilda (из-за которого эта программа стала выглядеть намного менее привлекательной, чем раньше): через некоторое время вместо терминала tilda являла изображение серого прямоугольника.
Как оказалось, баг этот давно известен. Но самое интересное, что решение у него простое до смешного - переустановка с удалением пользовательских настроек.
Upd: Как оказалось, помогает это не всегда. Самое надежное - поставить tilda из репозитория Дениса Константинова.
пятница, 4 января 2008 г.
среда, 2 января 2008 г.
Запускаем Sun Java Wireless Toolkit (WTK)
После установки WTK у меня не запускался ktoolbar, бодро сообщая: "java: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed"
Как обычно, решение легко гуглится - достаточно перед запуском ktoolbar сказать:
Как обычно, решение легко гуглится - достаточно перед запуском ktoolbar сказать:
export LIBXCB_ALLOW_SLOPPY_LOCK=1суббота, 8 декабря 2007 г.
tahoma.ttf
Недавно запустил winecfg и впал в ступор - вместо русских букв показываются точки. Оказалось, что из пакета msttcorefonts пропала tahoma. И теперь для правильной работы wine ее надо настраивать отдельно.
По-плохому можно просто найти и скачать.
По-хорошему - смотрим здесь.
По-плохому можно просто найти и скачать.
По-хорошему - смотрим здесь.
понедельник, 19 ноября 2007 г.
Создаем локальный репозиторий gutsy
Хорошее руководство по созданию локального репозитория Ubuntu есть на форуме. Но стоит учитывать некоторые нюансы:
1. В gutsy сломан debmirror. Поэтому, перед началом выкачивания репозитория его надо исправить (так как там и указано - убрать один из двух "\n" на 793 строке).
2. Несмотря на исправление, первый раз debmirror лучше запускать с параметром --nocleanup - мало ли что ;-)
3. В gutsy появился еще репозиторий gutsy-proposed. Так что строка для выкачивания репозиториев gutsy i386 может быть такой:
После того, как debmirror заработает, параметр --nocleanup можно смело убирать.
4. Точно так же можно собрать репозиторий из среза на DVD. Достаточно скопировать в папку gutsy-rep папки pool со всех дисков - тогда выкачается только dists и обновления пакетов.
5. Выкачанный репозиторий можно подключать в sources.list по протоколу file://, а можно и нарезать на болванки. Тут тоже есть нюанс: после создания папок .disk, а в них - файлов info с описаниями дисков можно содержимое сразу записывать. Только стоит учитывать, что большинство программ записи по умолчанию скрывают папки и файлы, начинающиеся на точку и надо не забыть перенести их на диски вручную. А создание iso-образов позволяет не обращать внимания на это.
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 должен оперировать собственно классом модели и его метаинфомацией:
2. Тогда в самом шаблоне можно не только строить цикл
но и цикл
3. В этом случае так просто получить значение поля не получится и придется написать фильтр:
Соответственно в шаблоне можно использовать конструкцию:
4. Этот код прекрасно работает с обычными полями, но для списков выбора (choices) возвращает хранимое, а не отображаемое значение. Значит придется вытаскивать список выбора и находить по хранимому значению отображаемое:
Можно конечно написать и именованную функцию (или вообще, применить обычный цикл вместо фильтрации).
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 fields3. В этом случае так просто получить значение поля не получится и придется написать фильтр:
def display_value(model, field):
return getattr(model, field.name)
register.filter('display_value', display_value)Соответственно в шаблоне можно использовать конструкцию:
object|display_value:field4. Этот код прекрасно работает с обычными полями, но для списков выбора (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 устанавливаются регулярно, но исправления пока не видно.
Ага, разбежался... Как оказалось, "мини-приложение" погоды в Windows Vista просто не работает. Рецепт лечения вроде бы был найден, но... снова незадача. Единственный wlsrvc.dll, который я смог достать, был от Vista Business и на Vista Home Premium он ни в какую не заработал.
Вот такая она, самая удобная и привычная ОС от Microsoft...
PS. Все обновления Windows устанавливаются регулярно, но исправления пока не видно.
среда, 29 августа 2007 г.
Карта пользователей Ubuntu
Открылась карта пользователей Ubuntu. Отметился на ней. Правда, некто Tuggrik меня полностью перекрывает...
Для того, чтобы правильно ввести координаты на карте, достаточно найти себя на Google Maps и сказать "Проложить маршрут". Будут показаны две координаты: первую надо вводить в Lattitude, вторую - в Longitude.
Для того, чтобы правильно ввести координаты на карте, достаточно найти себя на Google Maps и сказать "Проложить маршрут". Будут показаны две координаты: первую надо вводить в Lattitude, вторую - в Longitude.
Подписаться на:
Сообщения (Atom)