Ubuntu Hardy Heron на ноутбуке Samsung R40

Последние два дня у нас погодка что надо: сильные ливни и ветер. А так как выходить на улицу в такую погоду не очень-то хочется, я решил поискать себе занятие на выходные. И таки нашёл.

Я решил поставить на свой ноут новую Убунту 8.04. Скачал для этого образ CD. Как мне кажется, DVD нет смысла качать, ведь потом можно доставить всё необходимое.

Для установки надо было по-другому разметить диск. Я загрузился с диска, на который только что записал свежескачанный образ, и с помощью утилиты GParted изменил разметку.

Раньше было так: один логический диск на 10 Гб под Виндовс и 60 Гб на медиа (картинки, музыка, книги, фильмы и т. п.).

А теперь стало так: остался диск на 10 Гб под Виндовс, изменился размер медийного диска с 60 Гб на 30 Гб, появился новый раздел на 30 Гб под Линукс.

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

Установка затруднений не вызывает и сводится к «Далее» → «Далее» → «Установить».

Что работает:
— тачпад;
— кардридер;
— Wi-Fi;
— функциональные клавиши;
— синхронизация с Айподом.

Что не работает:
— переход в режим сна при закрытии крышки работает;
— отключение динамиков при подключении наушников тоже работает;
— синхронизация со смартфоном на базе Виндовс Мобайл.

С программами никаких сложностей не возникло, так как большинство программ, которыми я пользуюсь, кроссплатформенны (то есть запускаются и под Линуксом, и под Виндовс, и под Мак Ос Икс).

Google Reader, Ruby и Python

Наконец-то нашёл время и добавил все блоги и сайты, которые я регулярно просматриваю, в Google Reader.

А, чуть не забыл: я завязал с Ruby и пересел на Python (он быстрее).

В чём проблема отечественных дизайнеров?

В неумении себя преподнести.

«Линукс для меня»

Знакомые очень часто начали спрашивать о том что такое Линукс, зачем он вообще и где его взять. Как мне кажется, это связано с тем, что о нём всё больше говорят во всяких журналах типа «Чип», «Домашний ПК» и т. д., которые читает куча народу.

И один и сопутствующих вопросов звучит так: «ну ладно, линуксов много, а какой подойдёт для меня?». По ходу дела выясняется, что человек имел ввиду, что ему нужен Линукс, который будет работать «из коробки» (без долгого копания в конфигах) и иметь нормальный графический интерфейс.

Недолго думая, я решил, что лучшим вариантом будет openSUSE. Устанавливается всё просто и быстро, работает тоже. Всё необходимое ставится двумя кликами мышки, сеть мне вообще не приходилось настраивать (всё подхватывалось автоматически). Так что мой выбор вполне оправдан.

xsl:for-each или xsl:apply-templates?

Какой оператор предпочтительнее — xsl:for-each или xsl:apply-templates — и почему?

xsl:for-each работает только в том случае, если вы точно знаете структуру XML-документа, к которому вы применяете преобразование.

Однако xsl:apply-templates более гибкий. Он определяет правила обработки для каждого типа элемента в тех местах, где он встречается. Это делает XSL-шаблон более дружественным к изменениям в структуре документа и вольному стилю оформления XML-документа, когда элементы могут находится в разных местах. Он также позволяет сделать библиотеку правил, которую можно использовать в разных транформациях в разные типы документов.

Рассмотрим пример поиска ключа:

<xsl:for-each select="document('doc.xml')">
    <xsl:value-of select="key('key', $value)" />
</xsl:for-each>

можно сделать так

<xsl:apply-templates select="document('doc.xml')" mode="lookup">
    <xsl:with-param name="value" select="$value" />
</xsl:apply-templates>

а можно и так

<xsl:template match="/" mode="lookup">
    <xsl:param name="value" />
    <xsl:value-of select="key('key', $value)" />
</xsl:template>

и затем так.

Здесь реальным преимуществом xsl:for-each есть то, что он короче. Но не нужно его использовать, если значение, которое вы ищете, повторяется в документе.

Поэтому если вы начинающий в XSLT, то лучше использовать xsl:apply-templates, чтобы сначала полностью понять, как работают XSL-преобразования. А тогда вы поймёте, когда использовать xsl:for-each, а когда — xsl:apply-templates.