меню

воскресенье, 18 августа 2013 г.

Футболки 1 Апреля.


День дурака,прозвали праздник 1 апреля,хотя людям он больше нравится как праздник розыгрышей.Обычно у людей не получается деликатно пошутить,в основном люди обижаются,а наши подарки в виде футболок,фартуков,кепок,толстовок и кружек  в основном безобидные, рисунки и надписи.


Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:600руб

Увеличить
цена:570руб

Увеличить
цена:530руб

Увеличить
цена:600руб

Увеличить
цена:530руб

Увеличить
цена 530руб

Увеличить


Увеличить
цена:530руб

Увеличить  
цена:530руб

Увеличить
цена:530руб

Увеличить
цена:530руб

Увеличить
цена 600руб

Увеличить
цена:450руб

Увеличить


Увеличить


Увеличить
цена:630руб

Увеличить
цена:630руб

Розыгрыш  на 1 Апреля



Анатомия конфигурации Глупо отправляться в путь, не зная конечного пункта маршрута. Поэтому, прежде чем пускаться в рассуждения о процессе конфигурирования, сосредоточим внимание на его цели. Из чего состоит правильная конфигурация? Понимая архитектуру LXR, предположить состав конфигурации нетрудно: » Глобальный конфигурационный файл (lxr.conf). » Дополнительный конфигурационный файл для web-сервера. » БД в одной из поддерживаемых СУБД, заполненная результатами анализа исходного кода. » Результаты индексации исходного кода с помощью glimpse или swish-e. Файл lxr.conf иногда приходится редактировать вручную, поэтому его структуру стоит рассмотреть более детально. Она довольно проста и имеет следующий вид: ( {блок глобальных параметров}, {блок параметров для проекта 1}, ... {блок параметров для проекта N} ) Каждый блок параметров — список разделенных запятыми элементов вида 'имя' => 'значение'. Любители Perl без труда узнают в lxr.conf знакомый синтаксис. Действительно, это просто фрагмент кода на Perl, в котором определяется огромная структура данных — массив хэшей. Такое решение избавляет разработчиков LXR от необходимости разбора lxr.conf. Достаточно просто включить его в другие Perl-скрипты, чтобы все конфигурационные параметры стали доступны. Создание конфигурации Это самая сложная операция конфигурирования, поэтому для ее автоматизации предусмотрен специальный скрипт — ./scripts/configure-lxr.pl. Вопреки всем опасениям, параметров у него не так много. Большинство из них определяют расположение результатов работы. По умолчанию, если параметры не указаны, для этой цели будет создан каталог ./custom.d. Тем не менее, очевидно, что для нормальной работы скрипта дополнительная информация все же необходима. Варианты использования LXR настолько разнообразны, что только человек может дать разумные ответы на некоторые вопросы. К счастью, разработчики тоже так считают, поэтому configure-lxr.pl не делает нелепых предположений о пожеланиях пользователя, а первым делом предлагает ему ответить на несколько десятков вопросов. Какую СУБД использовать? Какие имя, логин и пароль дать БД? Где лежат исходные коды добавляемого проекта и сколько у него версий? Вот только некоторые из них. Такой допрос может показаться довольно суровым, зато в итоге получается практически готовая конфигурация, а использование параметра --verbose и наличие ответов по умолчанию для большинства вопросов превращает его почти в приятную беседу. Итак, что же получается в результате? » ./custom.d/lxr.conf, содержащий два блока параметров (глобальных и для первого проекта). Его нужно скопировать в каталог LXR. » Конфигурационный файл для web-сервера. Например, для Apache это будет ./custom.d/apache-lxrserver.conf. Его нужно скопировать в каталог, где лежат все конфигурационные файлы web-сервера. В Ubuntu 12.04 это будет ./etc/apache2/conf.d. » Скрипт для создания БД — ./custom.d/initdb.sh. Чтобы он сделал свою часть работы, его нужно просто запустить без параметров. С этим скриптом связан один неприятный момент, незнание которого может привести к потере данных. Дело в том, что initdb.sh создается каждый раз при запуске configure-lxr.pl. Но при этом он не замещает старую версию, а объединяется с ней. Это значит, что при запуске будут не только создаваться новые БД, но и пересоздаваться старые. А если там были какие- то данные, это приведет к их потере. Поэтому нужно не забывать вовремя удалять старые версии initdb.sh. Почти вся работа сделана. Чтобы звершить создание конфигурации и довести ее до работоспособного состояния, остается только проанализировать исходный код и сохранить результаты в БД. Для этого служит скрипт ./genxref. Что ему нужно для работы? На первый взгляд может показаться, что все необходимое есть в lxr.conf. Действительно, там можно найти подробнейшую информацию обо всех проектах. Но их может оказаться неподъемно много. Какие именно нужно анализировать? Все? Даже при малейшем изменении в любом из них? Это может занять часы. Например, на одно ядро Linux уйдет часа полтора. Очевидно, требуется более гибкое решение, позволяющее ограничить поле деятельности ./genxref. Для этого и предназначены его параметры. Их можно поделить на три группы. Первая служит для выбора анализируемого проекта: » --url=<URL нужного проекта> позволяет указать конкретный проект. Значение этого параметра складывается из двух частей: одного из элементов host_names и virtroot. Обе переменные определены в lxr.conf: host_names — в блоке в глобальных параметров, virtroot — в блоке параметров проекта. Например, при локальном использовании LXR значение url будет примерно таким: --url=//localhost/lxr/my_project. » --allurls заставляет анализировать все проекты, найденные в lxr.conf. Вторая группа аналогична первой, только работает уровнем ниже. С ее помощью можно еще больше сузить область действия — до одной версии (у проекта их может быть несколько): » --version=<id версии> позволяет указать конкретную версию проекта. Список идентификаторов версий можно найти в lxr.conf. Он находится в блоке параметров проекта (variables => v => range). » --allversions заставляет анализировать все версии. Параметры третьей группы нужны для управления процессом анализа. Если ни один из них не указан, то ранее обработанные файлы исходного кода пропускаются, что дает существенную экономию времени, когда изменения незначительны. Параметр --reindexall отключает эту оптимизацию. А --checkonly заставляет ./genxref только проверить корректность конфигурации, не выполняя никакого анализа исходного кода вообще. Модификация конфигурации Остальные операции конфигурирования не должны вызвать затруднений: » Добавление нового проекта Выполняется уже знакомым скриптом ./scripts/configure-lxr.pl, нужно только добавить параметр --add. Для создания и заполнения БД нового проекта используются те же initdb.sh и genxref. » Удаление проекта и того проще. Требуется всего лишь удалить блок параметров соответствующего проекта в lxr.conf. » Добавление и удаление новых версий проекта Осуществляется редактированием списка идентификаторов версий в блоке параметров проекта в lxr.conf (variables => v => range). Особый случай: ядро Linux Ядро Linux мало чем отличается от других крупных проектов, поэтому с ним вполне можно работать обычными методами. Но есть одна особенность, затрудняющая такое применение LXR. Дело в том, что ядро Linux может быть собрано для множества различных аппаратных архитектур, для каждой из которых отдельные части кода имеют свою независимую реализацию. Это значит, что если весь исходный код считать одним целым, то разобраться в нем будет довольно сложно. При навигации было бы очень удобно работать с какой- то одной аритектурой, а при необходимости иметь возможность переключаться на другую. Чтобы решить эту проблему, для ядра Linux в LXR предусмотрены специальные средства. К счастью, они лишь дополняют стандартные, радикально не меняя принцип работы. Дополнений всего два: » Перед ./scripts/configure-lxr.pl нужно вызвать ./scripts/kernel-vars-grab.sh --erase <путь к каталогу с деревом исходных кодов ядра Linux>. В результате в каталоге ./custom.d будет создан набор файлов, имена которых заканчиваются на _list.txt. В них содержатся списки поддерживаемых архитектур, платформ и т. д. Этой информацией пользуется configure-lxr.pl. » Вызвать ./scripts/configure-lxr.pl, указав специальный конфигурационный файл для ядра Linux: ./scripts/configure-lxr.pl ----add ----conf-out=lxr.conf lxrkernel.conf Использование на практике Постановка задачи Теории довольно. Пора попробовать LXR в деле. Cоздадим рабочий каталог /home/lxr, а в нем подкаталог src для исходного кода подопытных проектов. Поскольку у каждого из них может быть несколько версий, структура src будет двухуровневая: каталоги проектов, в каждом из которых подкаталоги для версий. Для экспериментов возьмем по две версии busybox и grep, а также одну версию ядра Linux. Тогда src будет выглядеть так: » src/bb, в котором ver_1.20.2 и ver_1.21.0. » src/grep, в котором ver_2.12, ver_2.13. » src/linux_kernel, в котором ver_3.2.42. Попробуем организовать навигацию по этим проектам. Затем добавим по одной версии grep (ver_2.14) и ядра Linux (ver_3.2.44), а для демонстрации удаления проектов и версий избавимся от всего проекта busybox и одной версии grep (ver_2.12). Задача будет выполняться с использованием MySQL, glimpse и Apache на ОС Linux Ubuntu 12.04 LTS 64‑bit с правами суперпользователя. Установка LXR и вспомогательного ПО Установка LXR очень проста. Поскольку он написан на Perl, компилировать там нечего. Достаточно загрузить архив с исходным кодом и распаковать его: cd /home/lxr wget -nd -P . http://sourceforge.net/projects/lxr/files/stable/lxr-1.2.0.tgz tar -xvf ./lxr-1.2.0.tgz Для удобства переименуем полученный каталог в lxr: mv ./lxr-1.2.0 ./lxr Для установки вспомогательного ПО удобнее всего воспользоваться пакетным менеджером. В Ubuntu для этого служит GUI-приложение Synaptic или команда apt-get: apt-get install <список пакетов через пробел> Вероятно, glimpse среди пакетов нет. Не беда, ее легко собрать самостоятельно. Чтобы не засорять систему, сделаем это в локальном каталоге /home/lxr/glimpse. Загружаем и распаковываем архив с исходным кодом: wget -nd -P /home/lxr/glimpse http://webglimpse.net/trial/glimpse-latest.tar.gz cd /home/lxr/glimpse tar -xzvf ./glimpse-latest.tar.gz cd /home/lxr/glimpse/glimpse-4.18.6/ Сборка оригинальностью не отличается (--prefix задает каталог для ее результатов): ./configure ----prefix=”/home/lxr/glimpse/_install” make && make check && make install Для полной интеграции в систему остается только добавить /home/lxr/glimpse/_install/bin в $PATH. Создание конфигурации Из каталога с исходным кодом LXR запустим скрипт configure-lxr.pl для создания начальной конфигурации (на этом этапе добавим только один проект — busybox): ./scripts/configure-lxr.pl Ответив на ряд вопросов (рис. 2), в custom.d находим готовую