Author Archives: Jolly Roger - Page 2

Автоматизація процесу розробки: системи неперервної інтеграції

Сьогодні, шановний читачу, ми продовжимо розмову про те, як можна автоматизувати процес розробки програмного забезпечення, зменшити витрати часу на допоміжні роботи в великому колективі і сконцентруватись на власне розробці.

У колективі, кожен член якого працює над окремою незалежною частиною, стадія інтеграції є заключною. Саме в ній виявляються проблеми сумісності всіх компонентів системи, через це кінцева дата випуску може бути відсунута на невизначений термін. Саме на зменшення часових та трудових витрат на процес інтеграції за рахунок раннього виявлення проблем та усунення помилок та протиріч спрямовані системи неперервної інтеграції.

Read more »

Автоматизація процесу розробки: системи збирання проектів

Час, коли в цивілізованому світі дешевше було найняти сотню негрів замість зробити ткацький верстат і навчити одну людину з ним працювати, давно минув. Ще пару десятиліть тому ледь не кожен працівник в сфері інформаційних технологій вважався митцем, творцем чогось надзвичайного, того, що не може зробити жодна інша людина в світі. Однак, час і прогрес не стоїть на місці, і поділ праці тому доказ. Замість тисяч самописних бібліотек виростають десятки, проте зручні та легкі; замість купи підходів до розв’язку задач виділяють одиниці, однак найефективніші; замість того, щоб вигадувати велосипед, використовують існуючі рішення, вносячи свій вклад в їх розвиток на ниві відкритих технологій. Ще донедавна програмісти збирали всі свої програми вручну або ж за допомогою самописних сценаріїв. Цей час пройшов.

В світі, що рухається неймовірними обертами, не можна даремно витрачати час. Вся рутина повинна бути автоматизована, і крапка. Якщо ви з цим не згодні, перечитайте перший абзац. Людина мусить спрямовувати розум на подолання нових проблем, а не на одноманітну купу операцій. Порахуйте, скільки процесів, які ви щодня виконуєте, можна автоматизувати, і зрозумійте, скільки часу ви витрачаєте марно.

Способи організації проектів, їх документації, юніт-тестів, тестів продуктивності, вражають своєю кількістю. Зазвичай кожен другий виробник більш-менш серйозного IDE, пакету програм для розробки, пропонує свій спосіб збереження файлів всередині проекту, організації процесу збирання, написання чи то генерація документації. Проблема постає у виборі інструментів, які допоможуть підвищити ефективність роботи та знизити часові витрати на її виконання. Сьогодні ми говоримо про системи збирання проектів.

Read more »

Пишемо інсталятори в Linux

Мабуть, немає таких людей в середовищі Linux-користувачів, яким би не доводилося ставити закрите або комерційне програмне забезпечення. Не раз доводилось бачити “рідні” для цього виду програм інсталятори: графічні чи консольні, але завжди своєрідні. І поширюється програма разом з інсталятором в одному сценарії для командного інтерпретатора. А чи може хто-небудь написати власну програму-інсталятор, налаштувати її під себе? . Сьогодні, шановний читачу, ми навчимося писати інсталятори для UNIX.

Read more »

Управління проектами з Trac

Задача: отримати багатоцільове open-source середовище для управління проектами з web-інтерфейсом, підтримкою Git та БД PostgreSQL, автентифікацією через LDAP.

Обираємо систему управління проектами

За інформацією для роздумів гугл нас привів на сторінку з вікіпедії. Як бачимо, вибір у нас досить великий. Вибрати з них що-небудь по собі з виконанням більшості критеріїв досить нескладно. Однак підтримку Git має в своїй реалізації лиш один проект — Trac, про який і йтиме мова далі.

Чому Trac

Trac logo

Версія 0.11
Мова Python
Сайт http://trac.edgewall.org/
Ліцензія Модифікована ліцензія BSD

Як вже було сказано, лише в нього я знайшов підтримку Git репозиторіїв. До того ж Trac має неабияку гнучкість: окрім базового набору, якого зазвичай не вистачає, купа функціоналу реалізована у вигляді плагінів, яких тут можна знайти на будь-який смак. Простий та зрозумілий з першого погляду інтерфейс, відсутність зайвих “свистілок” не може не порадувати людей, які від продукту очікують ефективну реалізацію функціоналу. Можливість адаптувати середовище на власний смак та за потребами проекту, будь то розробка програмного забезпечення, адміністрування, чи організація господарських робіт у себе на городі. Хоча незважаючи на можливість вести будь-які проекти в цій системі, все ж вона тісно інтегрована з ситемами контролю версій(Svn, Bazaar, Mercurial, Git), підсвіткою синтаксису “на льоту”(використовуються SilverLight, Enscript, а з версії 0.11 — ще й Pygments), розробкою документації (Doxygen, PyDoc, PerlDoc), і навіть системою управління тестами. Підтримка RSS-стрічок, wiki(до якої є теж купа розширень), і навіть ведення блогу додають практично всі необхідні інструменти для ведення сучасного проекту. Довершує все це добро документація по Trac, яка є в кожному новоствореному проекті на стоірнках wiki.

Установка та адміністрування

Ставити ми його будемо, звичайно ж, на Debian GNU/Linux, для якого поточною стабільною віткою вважається 0.10. Сподіваюсь, ви вже маєте налаштований Git репозиторій, інакше раджу взяти низький старт з цієї сторінки. Виконавши aptitude install apache2 libapache2-mod-python trac-core trac-git pcycopg2 та встановивши залежності й додаткові пакети за бажанням переходимо власне до конфігурації.

Першим кроком буде створення нового проекту. Де тримати проекти — справа кожного, хоча мені більше імпонує покласти їх до /var/trac/. Для промислового розгортання буде доцільним розгортати подібні середовища в домашніх директоріях користувачів. Отже, почнемо.

# mkdir /var/trac
# cd /var/trac
# trac-admin myproject initenv

В процесі установки система необхідно ввести деякі базові настройки, вибрати БД, з якою працюватимете, та вказати шлях до репозиторію. Якщо в якості репозиторію ви вказали Git, то система в кінці видасть попередження про відсутність його підтримки, однак все це можна сміливо ігнорувати, бо все це ми виправимо в подальших кроках.

trac-admin management utilityСаме з цього моменту починають проявлятись особливості роботи з Trac: адміністрування проекту проводиться за допомогою консольної утиліти trac-admin. Отже, якщо ви не маєте доступу через SSH до свого сервера, годі й мріяти про установку цієї системи. І хоча деякі операції можливо перекласти на веб-морду, однак початкову ініціалізацію — зась. Якщо ж ви все ще з нами і вже готові до наступного кроку, то не гаймо часу.

Всі налаштування проекта знаходяться в одному файлі conf/trac.ini в директорії проекту. Зараз можна підправити загальні параметри проекту, однак я раджу відкласти цей крок на момент після тестового запуску проекту. Справа в тому, що будь-який згенерований проект з самого початку містить wiki-документацію, яка доступною мовою опише можливості та особливості налаштування системи. Знову повертаючись до Git, на сторінці GitPlugin ви зможете прочитати вичерпні пояснення щодо того, яким чином організувати співпрацю Trac та Git.

Для успішного старту проекту необхідно отримати можливість запускати Python-івські скрипти на запит веб-сервера. Це можна реалізувати через механізм CGI, FastCGI, або ж використовуючи mod_python, що ми, власне, і зробимо:

<Location/projects>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /var/trac
  PythonOption TracUriRoot /projects
</Location>

Вище представлений шматок конфігураційного файлу веб-сервера, який дозволить вести нам безліч проектів, що лежатимуть в /var/trac Наступні рядки ж дозволять мати один обліковий запис для всіх проектів. Даний тип автентифікації приведений лише для прикладу. Автентифікація користувачів через систему LDAP буде описана в наступних статтях.

<LocationMatch"/projects/[^/]+/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /var/trac/.htpasswd
  Require valid-user
</LocationMatch>

Якщо всі кроки виконані успішно, ви мусите побачити вже працюючий проект за адресою:http://localhost/projects/myproject/

Додаткові плагіни

Деякі з плагінів потребують особливої уваги при роботі з ними. Тут розглянуті лиш два з них, хоча насправді проблеми можуть виникнути в багатьох плагінах, функціонал яких пов’язаний з іншими системами, зокрема плагіни, що реалізують автентифікацію.

GraphvizPlugin

Trac with GraphViz pluginТрохи помучитись змусив мене плагін, що реалізовує inline-вставку графічного представлення інформації за допомогою graphviz. Для тих, хто все ще не може отримати зображення, підкажу основні вимоги:

  • директорія, в якій знаходиться кеш graphviz повинна бути доступна для запису користувачем www-data, під яким запущено веб-сервер. Крім того, якщо ви використовуєте tmpfs, то не робіть директорію для кешу в /tmp, оскільки для роботи graphviz необхідне існування директорії, а при наступному ж перезавантаженні вона просто зникне.
  • необхідні пакети: graphviz та librsvg2-bin
WebAdmin

Для того, щоб не мати клопоту при роботі з цим плагіном, необхідно, щоб файли проекту в /var/trac/myproject були доступними користувачеві www-data для запису. Загалом же, плагін встановлюється та підключається без зайвих зусиль.

Trac та PostgreSQL 8.3

Якщо ви використовуєте Trac 0.10 зі стандартних пакетів Debian, то матимете клопіт з неможливістю перегляду звітів про помилки (tickets). При цьому ще й при додаванні такого звіту система може видавати помилки. Для того, щоб усунути цю помилку, необхідно змінити у файлі /usr/share/python-support/trac/trac/ticket/model.py рядок 296 з:

"ORDER BY time", (self.id, str(self.id), self.id))

на

"ORDER BY time", (self.id, str(self.id), str(self.id)))

Сподіваюсь, що за кілька днів після випуску даної статті ця порада стане непотрібною 😉

Висновки

Закінчуючи статтю, хочеться підбити підсумки щодо системи в цілому. Особисто я вже використовую Trac для власних проектів, тому що ця система:

  • проста, зручна, та ефективна
  • має підтримку сучасних репозитаріїв, баз данних та прикладного програмного забезпечення
  • дуже гнучка
  • знаходиться в активній розробці

Хочете переконатися в цьому самостійно? Тоді ласкаво просимо до http://www.hosted-projects.com/trac/TracDemo/Demo , де ви зможете попрацювати з Trac без зайвого клопоту.

Серед недоліків даної системи щодо нашого ринку можу віднести майже відсутній хостинг з підтримкою Python та неможливість організації повного циклу життя проекту від його зародження і до закриття через веб-інтерфейс, хоча останнє скоро буде виправлене.

Правильне робоче середовище з xmonad

xmonad Досить недавно в коментарях старого доброго опеннета (opennet.ru) розгорілась чергова війна KDE vs GNOME, в якій хтось ляпнув, що зручність – далеко не їх(вищевказаних монстрів) позитивна риса. Натомість коментатор запропонував звернути увагу на xmonad. Новий DE? Ні, ні і ще раз ні. Це фреймовий(або ж мозаїчний) менеджер вікон. Що ж, познайомимося з ним поближче.

Read more »

Ви все ще використовуєте bash? Тоді ми до вас!

Вже давним-давно хотів зрозуміти причину страшенних війн стосовно командної оболонки (shell). З Bash я був знайомий з самого початку мого використання Linux, але майже ніхто його не хвалив. Так, всі казали, що це дефолтний, громіздкий командний інткрпретатор, додаючи ще купу епітетів явно не на його користь. І ось одного разу я таки вирішив спробувати щось інше.

Коли новенький ZSH стартував як мій дефолтний шелл, я ще дуже довго не міг зрозуміти, чим же він настільки хороший. Це якраз той варіант, коли баш виглядав краще, оскільки був дефолтним і мав вже деякі настройки хоча б того ж запиту на ввід ($PROMPT, $PS[1-4]), а тут споглядання картини

localhost%

ніяк не радувало. Так моє перше знайомство і закінчилося б, якби мені не було ліньки поставити баш назад (думка “дай ще потестю, мож ще що цікаве вилізе” промайнула у мене в мізках і вирішила хід подій). З часом я звик до цього шелла, його невеликих особливостей, і нарешті почав бачити різницю в швидкості роботи (порівнюючи роботу bash і zsh на різних користувачах).

А поки час ішов, я ще не раз бачив деякі “розфарбовані” екземпляри все того ж ZSH, і мені кортіло нарешті й собі таку цяцьку. І ось нарешті моя мрія здійснилась, і я з вами всім цим щастям поділюсь 🙂 .

Read more »

34 поради щодо збільшення продуктивності web-додатків

Розробники, що відповідають за створення високопродуктивних рішень в Yahoo, опублікували цікаву презентацію на 76 сторінок, в якій узагальнено досвід компанії, пов’язаний з підвищенням продуктивності web-додатків. В презентації представлені 34 рекомендації web-розробникам, з них 14 порад були описані в попередній доповіді.

Для виявлення проблем з продуктивністю сайтів в Yahoo було розроблене спеціальне доповнення до Firefox-плагіна FirebugYShow, що дозволяє виявити вузькі місця та оцінити швидкість поетапного завантаження різних частин сторінки.

Read more »

Серія безплатних одноденних тренінгів з Xen та віртуалізації

Компанія Hewlett-Packard спільно з навчальним центром “Мережеві технології”, що в Києві, проводить серію безплатних одноденни тренінгів, присвячених технології віддаленого управління Intel AMT, технологіям апаратної віртуалізації (VT-x та VT-d) та питанням їх використання з вільним програмним забезпеченням (Xen+Linux+OpenAMT).

Тренінг носить практичний характер. Лабораторні роботи проводяться на машині з підтримкою технології VT-d, призначеною для віртуалізації вводу/виводу, що підтримується Xen, починаючи з версії 3.2.0 (січень 2008).

Джерело: OpenNet.ru

Заміна Prism

Мабуть, ви вже знайомі з Mozilla Prism — софтина, що дозволяє частково стерти різницю між веб-додатками та типовими програмами, встановленими на комп’ютері. Тепер Prism стала модулем для бета-версії Firefox 3. Після встановлення плагіна Refractor в меню оглядача з’явиться спеціальний пункт, що допомагає зробити з відкритої сторінки новий додаток. Досить імовірно, що ця функція буде реалізована в одній з наступних версій Firefox.

Refractor plugin for Firefox

З самого початку проект Prism представляв собою окрему програму, якій треба було ввести адресу web-додатка, після чого отримати спеціальний файл, при відкритті якого запускається модифікована версія Firefox, яка не містить панелей навігації та інших елементів управління, і в ній завжди відкривається один і той же сайт.

Це досить зручно для роботи з сервісами типу Gmail, та GoogleDocs. При цьому на машину завантажуються і зберігаються локально сценарії Javascript, що прискорює завантаження веб-додатка і знижує споживання трафіку на початковому етапі роботи.

Головна перевага плагіна Refractor в тому, що після його встановлення вже не знадобиться ніяких додаткових програм. Ярлики, створені їм, дозволяють запускати окремі екземпляри броузера для кожного веб-додатка. Це досить ресурсоємне рішення, однак надійне: некоректна робота або крах одного додатка жодним чином не вплине на інші.

Про те, що Refractor, або його аналог може в майбутньому стати частиною Firefox, кажуть інші нововведення в броузері. Зокрема, в Firefox 3.0 очікується підтримка засобів, що дозволять веб-додаткам зберігати дані локально, якщо з’єднання з інтернетом недоступне. Як і сам плагін, таке нововведення зменшить число відмінностей між звичайними додатками та веб-сервісами.

Джерело: Компьюлента

Лис на дієті

Війни броузерів не вщухають. Лиш нещодавно тут була опублікована новина про нічну збірку Опери, як розробники Mozilla Firefox спішать повідомити читача про значне просування вперед в питанні збереження пам’яті в четвертому бета-релізі. Так, дослідники з сайту arstechnica.com помітили зниження споживання пам’яті з кожним наступним бета-релізом, а також суттєве зменшення в порівнянні з Firefox 2.

Так, автор статті помітив, що під час інтенсивного серфінгу з відкритими 50 вкладками Firefox 3 споживає приблизно вполовину менше пам’яті, ніж Firefox 2.0.0.12. Також була помічена швидша реакція при переході між вкладками та виконанні інших операцій.

Тести, проведені за допомогою Talos framework, використовуючи тактики, описані розробником Стюартом Парментером, показують ефективність роботи Firefox 3 з пам’яттю в порівнянні з іншими популярними оглядачами. Також помічено, що Firefox 3 звільняє більше пам’яті при закритті. В ході тестування “померли” броузери Internet Explorer 8 та Safari.

Для зменшення фрагментації пам’яті, розробники пішли шляхом мінімізації загальної кількості виділення пам’яті, частково під час запуску. Інше важливе досягнення: збирач сміття XPCOM, який автоматично вилучає невикористовувані об’єкти, що посилаються один на одного. Також була покращена система кешу, а декомпресовані дані зображень більше не зберігаються.

Наступний реліз Firefox 3 обіцяє на додачу до ще меншого споживання пам’яті, покращений інтерфейс користувача, теми з покраженою платформеною інтеграцією, повністю перероблені системи закладок та історії на базі SQLite, Cairo в якості рендерного двигуна, повне масштабування сторінки, Javascript 1.8, та багато інших фіч.