shoorick: (Default)
Полдня ставил на сервер параллельно второй редмайн. Точнее, не ставил, а пытался запустить правильным путём. В итоге запустил, но убил кучу времени на гугление. Выползавшие в процессе запуска ошибки, конечно же, в мануале не описаны — приходилось смотреть, что люди пишут на форумах (а пишут иногда такое, что мне, практически не знакомому с ruby, кажется бредом). Как руби-программисты вообще работают в такой среде? Впрочем, танцы с бубном вокруг трака, которые случались до переезда на редмайн, наводят на мысль, что и у питонистов — бардак.

Perlburg

Apr. 2nd, 2011 11:42 pm
shoorick: (Default)
Второй Перлбург прошёл. Жаль, докладов и докладчиков было меньше, чем год назад: прекрасно выступившие год назад Анатолий [livejournal.com profile] sharifulin, Алексей [livejournal.com profile] quappa и Андрей shitov сегодня не приехали (и, наверное, не планировали) — свердловчане справлялись своими силами, ну и я за компанию рассказал немного студентам о командной работе при написании перлопроектов — дал несколько очевидных, вроде бы, советов (в том числе и неперловых), которые, надеюсь, всё равно им пригодятся. Послушал другие доклады, понравились доклады про тестирование и обфускацию: надо бы в этом направлении прокачать скилл развить навыки и умения. Обсудили с организаторами и докладчиками результаты конференции, сошлись во мнении, что расписание составлять надо не в последнюю неделю, а значительно раньше, и кроме того, желательно увеличить количество докладов, интересных не только студентам, но и взрослым разработчикам. Посмотрим, что получится на следующем, третьем Перлбурге.

Хоть конференцию передвинули с февраля на апрель, уральская весна расслабляться не даёт — в Екатеринбурге была могучая метель. Но, к счастью, недолгая.

Билет на автобус подорожал: теперь проезд на рейсах 550 (через аэропорт Кольцово) и 589 (напрямик) стóит не 350 рублей, как зимой, а 397. Сортиры на северном автовокзале Екатеринбурга платные для всех, в том числе и для пассажиров с билетами. Время в пути (и туда, и обратно) — 4 часа, средняя скорость — около 50 км/ч, максимальная — 110 км/ч. Дорога за зиму стала хуже: трясёт сильнее.
shoorick: (Default)
Перенёс накопленное в траке со своей машины в редмайн на боевом сервере. Переношу subversion в том же направлении и задумался об оптимизации серверной части.

Svnserve, конечно, быстрый, но вводить пароли при доступе через svn+ssh:// задолбало, да и по непонятной причине он игнорирует ключ -r, а длинные URL типа svn+ssh://name.of.server/many/many/dirs/before/repo/project/trunk как-то плохо выглядят.

Раскочегаривать апач только лишь для Subversion как-то расточительно. Хотя да, такой вариант будет работать и он же и рекомендован в книге для серьёзных случаев (в том числе и для таких, когда захочется использовать какой-нибудь необычный метод авторизации).

Nginx не все методы поддерживает и, следовательно, на роль обработчика запросов к svn как-то не очень годится — разве что воткнуть его прокси-сервером (а смысл?)

Думал поставить к редмайну пару модулей — redmine_webdav и нужный для него redmine_http_auth (как обычно, пришлось дорабатывать напильником, добавляя перевод на русский). Поставил, почитал документацию внимательнее: им тоже нужен апач (фактически, они позволяют, вроде бы, авторизоваться через редмайновую базу). Если никакого апача не ставить, а запустив сервер webrick, обращаться к нему — он не пускает, но при этом спрашивает пароль.

Продолжаю гуглить...

upd/00:45: Надоело гуглить, воткнул апач, спрятал за нгинксом (just for lulz) — работает. Надо снести ненужные модули и лечь спать.
shoorick: (Default)
Если при экспорте из трака в редмайн образовались задачи, принадлежащие администратору, значит в редмайне не нашлось пользователей, соответствующих тем, что были в траке.
shoorick: (Default)
Перенос проекта из трака в редмайн 0.9.* работал. Хоть и не в полном объёме, конечно же, но Redmine после такой операции спокойно мог работать с новыми данными. Сейчас, в версии 1.0.2, такой фокус не проходит: редмайн ругается при попытке открыть импортированную задачу или список, где такие задачи присутствуют. При этом другие задачи (как и списки из соседних проектов) отображаются нормально.

Пошерстил форум на сайте разработчика, нашёл лишь рекомендации запускать скрипты миграции и перезапускать сервер. Но это относилось всё-таки к процедуре обновления редмайна, а не импорта данных в него. Написал о проблеме, а потом сам же нашёл причину: скрипт миграции не заполнял поля lft и rgt в таблице issues. Заполнил поля вручную — заработало.
shoorick: (Default)
В отличие от трака, где в каждом проекте своя нумерация задач, в редмайне нумерация задач сквозная, общая для всех проектов.
shoorick: (Default)
Обновил trac 0.11.5 → 0.11.6. Нечаянно. Специально, помня предыдущий апдейт, я его бы обновлять не стал. Как всегда, всё сломалось. Пока пытался починить, выяснил, что в системе одновременно было установлено три питона: python24-2.4.5_4, python25-2.5.4_2, python26-2.6.4. Апач пытался найти трак среди приложений питона 2.5, при том, что основным был питон 2.6.

Починить удалось путём отсечения Змею двух голов из трёх замены двух старых версий питона на одну новую (portuprgade -o lang/python26 lang/python25; env FORCE_PKG_REGISTER=1 portuprgade -o lang/python26 lang/python25) и последующей пересборкой апачного mod_python.

Попутно, раз уж взялся налаживать trac, всё-таки настроил автоматическое приписывание комментариев к тикетам — трак может, встретив в комментарии к коммиту ссылку на тикет (например, вида re #123), добавить в этот тикет комментарий, а в некоторых случаях (fix #456)— и закрыть его.

Раньше подобный фокус не удавался: на машине используется много хранилищ трака и лишь одно, общее — у subversion; в результате hooks/post-commit всегда получал один и тот же адрес SVN-хранилища, вне зависимости от того, в какой из частей дерева был сделан коммит. Научить скрипт распознавать, в какой части дерева сделаны изменения и, соответственно, к какому траковому проекту обращаться — задача тривиальная; странно, что я не сделал это два года назад. В общем, надо добавить в hooks/post-commit одну строку, и ещё одну — поменять:
PROJECT=`/path/to/svnlook dirs-changed $REPOS -r $REV | head -n 1 | cut -f1 -d/`
TRAC_ENV="/path/to/trac/db/$PROJECT"
shoorick: (Default)
По умолчанию trac, когда работает через mod_python, всё своё содержимое выдаёт через него, хотя с раздачей статичных файлов — картинок, стилей и яваскриптов — сам апач справляется не хуже и, что главное, существенно быстрее: на моей, нагруженной иксами, машине, где заодно живёт и апач с траком, разница в скорости (по результатам замеров файрбагом) достигает ста и более раз.

С одной стороны, можно сменить адреса некоторых общих картинок
find /var/db/trac -name trac.ini -exec perl -pi -e 's{= common}{= /trac}' '{}' ';'
и раздавать эти картинки статически:
<IfModule alias_module>
Alias /trac/ /path/to/trac/htdocs/
Но зачем нам полумеры? Надо всю статику быстро раздавать. Поэтому подкаталог chrome не должен обрабатываться мод_питоном:
<LocationMatch "/projects/[^/]+/chrome">
SetHandler None
</LocationMatch>
Чтоб апач не ругался «404 Not Found», надо создать алиасы для этих каталогов. По идее, для этого должна использоваться директива AliasMatch, но у меня она не заработала: апач, вместо того, чтоб отдавать файлы, начинает бесконечно перенаправлять браузер по всё более длинному адресу, что браузеру достаточно быстро надоедает. Поэтому приходится ставить кучу директив
Alias /projects/projectname/chrome/common /path/to/trac/htdocs/
которые можно получить командой
ls /var/db/trac | perl -nl -e 'print "\t\tAlias /projects/$_/chrome/common /usr/local/www/trac/htdocs"'
Метод, конечно, какой-то неправильный, но всё-таки вполне работоспособный.
shoorick: (Default)
Как и предполагал, подыхание питона на роутере было вызвано нехваткой памяти. Своп-раздел на подключенном к роутеру жёстком диске я когда-то создал, да при восстановлении настроек после случайно произведённого сброса забыл о нём — для остальных задач хватало и встроенной памяти. Сегодня, перецепляя туда-сюда разные устройства, вспомнил о свопе. Подключил — заработало. Но всё равно очень медленно.
shoorick: (Default)
Какой смысл писать на форум, если всё равно никто не отвечает? Каждый сам кузнец, в общем.

Трак на роутере всё-таки удалось запустить, но как-то очень уж неестественным путём. Видимо, придётся всё-таки реанимировать большой компьютер, где стоят FreeBSD, Apache, SVN и Trac (и при этом весьма шустро работают), уносить его на кухню либо в другую комнату, чтобы не утомлял шумом и держать его там круглосуточно работающим.
shoorick: (Default)
Тупо засунул запуск сервера в бесконечный цикл
#!/bin/sh
while :
do
  /opt/bin/tracd --port порт -e каталог --auth="*",файл_паролей,trac
done
И пошёл спать.
shoorick: (Default)
Trac на роутере так и не хочет нормально запускаться. Максимум, чего удалось добиться — запускается отдельный сервер, который всё время норовит сдохнуть. Описал процесс на роутерном форуме — может, посоветуют что-нибудь...
shoorick: (Default)
Пытаюсь водрузить на роутер subversion и trac. С переменным успехом. Гугл помогает слабо, на http://wl500g.info/ тема тоже не освещена нифига, на сайте разработчиков трака описаны разные варианты установки, под распространённые линуксы да юниксы, но про установку на роутер — ни слова.

Пока удалось поставить subversion и заставить его работать через svnserve. Trac встал, но сразу работать не захотел: пришлось поставить ещё несколько программ, от которых он зависит. После установки недостающего всё равно не заработал — на роутере криво настроена локаль. После исправления — серверы запускаются, но толку от этого немного: автономный сервер выдаёт не более одной страницы (обычно без картинок и стилевого файла), после чего дохнет, не сообщив причины; если же попытаться запускать trac через lighttpd, то он не в состоянии обратиться к БД SQLite и, как результат, тоже не работает, ругаясь в лог. Так до сих пор и не работает — настройка оказалась куда более сложной, чем под FreeBSD.

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

Когда поставлю и настрою — надо будет написать отдельный пост — и сюда, и на асусовский форум.

upd/20.09.2009:
shoorick: (Default)
Обновил (давно уже) на localhost subversion до 1.5.1 — svn на тестовом сервере стал ругаться на рабочие копии, созданные на localhost.
Обновил вчера на сервере subversion до 1.6.2 — svn на локалхосте стал ругаться...
Обновил на localhost subversion 1.5.1 → 1.6.2 — стал ругаться trac (сегодня утром дошло, что надо было обновить и py-subversion).
Обновил trac 0.11.3 → 0.11.4 — трак совсем загнулся, пробовал чинить, перенацеливал когда-то сделанный симлинк — помогало, но не очень.

Почитал логи, постучал в бубен — не помогло. Ушёл гулять.

Пришёл утром — обновил py-subversion — всё заработало.
shoorick: (Default)

Проблема:
при апгрейде trac с 0.10 на 0.11 пропала собственная раскраска: все проекты выглядят одинаково.

Причина:
в 0.11 сменился шаблонизатор.

Решение:
для каждого проекта надо:

  1. перенести файл templates/site_css.cs в htdocs/style.css, попутно выкинув из него первые четыре строки:
    <?cs
    ##################################################################
    # Site CSS - Place custom CSS, including overriding styles here.
    ?>
  2. создать файл templates/site.html:
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:py="http://genshi.edgewall.org/"
          py:strip="">
    
      <!--! Add site-specific style sheet -->
      <head py:match="head" py:attrs="select('@*')">
        ${select('*')}
        <link rel="stylesheet" type="text/css"
              href="${href.chrome('site/style.css')}" />
      </head>
    
      <body py:match="body" py:attrs="select('@*')">
        ${select('*|text()')}
      </body>
    </html>
    

Этого вполне достаточно. См. также TracInterfaceCustomization.

shoorick: (Default)
Что надо делать, коль загнулся trac 0.11?
Взять бубен (в самом прямом смысле), постучать да побренчать, после чего проапгрейдить py25-Genshi.
Как ни странно, помогло.
shoorick: (Default)
После апгрейда trac с 0.10.4 через какие-то промежуточные версии до 0.11_2, он благополучно перестал работать. Апач в логи пишет: кучу текста )

Оказалось, старая версия устанавливалась в /usr/local/lib/python2.5/site-packages/trac, а новая — в /usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac. Попробовал простейший из путей — сделал симлинк: tracTrac-0.11-py2.5.egg/trac. Заработало.
shoorick: (Default)
Задавшись целью отслеживать в траке (trac) свежие тикеты (таймлайн для этого не совсем удобен, ибо содержит массу других событий и фиксирует только появление/закрытие/повторное открытие) и комментарии к ним, нашёл механизм: через отчёты.

Сделал три отчёта )

Получил искомое. Доволен.

shoorick: (Default)
Что-то рабочая машина тормозит. Конечно, она слегка занята: помимо запущенных иксов, файрфокса с тандербёрдом параллельно перегоняется музыка из mp3 в ogg vorbis, компиляется свежая Xara LX, apache и trac обрабатывают запросы, и amarok, заикаясь, пытается петь песни «Несчастного случая».

Работать при этом как-то некомфортно... Чё бы прибить?
shoorick: (Default)
Процесс руления проектом проистекает странно: время от времени пишу тикеты, затем пишу в эти тикеты комменты, после чего сам себе комментом на коммент отвечаю...

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 11:36 pm
Powered by Dreamwidth Studios