Apríl 11, 2010

Buildout – podpora virtuálneho prostredia nie len pre Python

Buildout pre Python je niečo ako Maven pre Javu. Buildoutu jednoducho predhodíte recept. Tento recept popisuje, ako má vaše prostredie vyzerať a Buildout za vás pohľadá všetky závislosti a nainštaluje ich. Pythonieristi si možno povedia: “Ale veď inštaláciu zvláda aj easy_install alebo pip“. To je pravda, ale Buildout posúva prácu s virtuálnym prostredím o level ďalej.

Predstavte si, že pracujete v tíme a teraz potrebujete, aby kolega mal rovnaké pracovné prostredie ako vy. Rovnaké balíky, rovnaké nastavenie služieb. Jednoducho napíšete recept pre buildout a ten mu pošlete. Buildout sa postará o vytvorenie virtuálneho prostredia, tak ako to poznáme z Virtualenv. Naviac nainštaluje potrebné balíky. Teraz pozor! Odinštaluje nepotrebné balíky. Nastaví adresáre a importy presne, tak ako je to potrebné. Buildout umožňuje zaviesť do projektu podstatný prvok: opakovateľnosť.

Buildout nie je nástroj výhradne len pre Python. Môžete s ním spracovávať, aj zdroje z Gitu alebo ZIP súborov. Pokiaľ pracujete extenzívnejšie s Pythonom a balíčkovaním aplikácii, určite mu venujte minutku na naučenie.

Príklad receptu na inštalovanie Tracu 0.12dev:

[buildout]
parts = babel genshi trac mypy

[babel]
recipe = zc.recipe.egg
eggs =
    Babel

[genshi]
recipe = infrae.subversion
as_eggs = true
urls = http://svn.edgewall.org/repos/genshi/trunk genshi


[trac]
recipe = infrae.subversion
urls = http://svn.edgewall.org/repos/trac/trunk trac
as_eggs = true

# Make eggs visible to mypy interpreter
[mypy]
recipe = zc.recipe.egg
eggs =
    ${trac:eggs}
    ${genshi:eggs}
    ${babel:eggs}
interpreter = mypy
scripts = mypy

Buildout potupne spracuje jednotlivé časti a podľa receptov uvedených za slovíčkom “recipe”, nainštaluje a upraví potrebné konfigurácie prostredia. Predtým, než sa vrhnete do písania vlastného receptu, odporúčam skontrolovať, či už rovnaký alebo veľmi podobný recept neexistuje.

Pokiaľ tápete v tom, ako funguje Python Eggs a virtuálne prostredie, odkážem vás na výbornú prezentáciu z PyConu 2009 – Eggs and Buildout deployment in Python:

Marec 30, 2010

Pracuj, akoby bol deň pred dovolenkou

Určite to poznáte. Kolega v práci odíde na dovolenku. Niekto ho musí zastúpiť. Zdvíhať jeho telefóny. Mazať jeho spam. Počúvať sťažnosti a priania klientov. Pred odchodom na dovolenku sa s vami kolega letmo rozlúčil a vy ste mu s naivným úsmevom popriali príjemny oddych.

Na druhý deň sa už nestíhate čudovať. Volá klient, a čo s ním? Pýta sa na dodávku ultramarínových podložiek do špeciálnej edície interkontinentálneho rýchlovlaku Lajka&spol.

“Ako prosím? Čo prosím? Viete, kolega je na dovolenke. Ja o tom nič neviem. No, to je možné. Ale ja s tým nič nespravím. Máme systém a nedostanem sa do jeho pošty. Počkajte zapíšem si vaše meno a telefónny kontakt a ozveme sa vám.” Klient rozpálený do biela práskne telefónom. Našťastie telefón je odliaty z kvalitného plastu a vydrží úder s tlakom niekoľko stoviek kilopascalov na centimeter štvorcový.

Ale veď ste spravili to najlepšie, čo ste vedeli. Prečo je klient nespokojný? Žeby vám váš kolega neodovzdal podstatné informácie? Žeby sa nebol uistil, či dokážete jeho prácu zastúpiť?

Ak je kolega aspoň trochu zodpovedný, tak vám odovzdá všetky podstatné informácie, nachystá vám šablóny e-mailov, vysvetlí vám čo a ako. Takže sa stane Zastupiteľným (áno viem, že niekomu to príde ako cudzie slovo, skúste sa s ním zoznámiť).

Posuňme tento koncept ešte trochu ďalej. Predstavte si, že každý deň uzatvoríte prácu tak, že ju po vás môže ktokoľvek prevziať a pokračovať v nej. Keď hovorím ktokoľvek, tak myslím napríklad aj vás. Uzatváranie vecí neznamená, že musíte vyriešiť všetky problémy. Znamená to, že keď niekto príde, tak môže vo vašej práci pokračovať. Dobrým pomocníkom v tejto oblasti sú ticket systémy, výborne poslúžia ako vaša externá pamäť.

Autori motivačnej literatúry používajú koncept: Pracuj, ako keby bol zajtra tvoj posledný deň. Čo je v preklade to isté. Každopádne “Pracuj, akoby bol deň pred dovolenkou”, je podľa môjho názoru lepšie uchopiteľná veta. Hlavne z toho dôvodu, že v niektorých firmách je celkom pekne zaužívana séria krokov, ktoré potrebné vykonať pred odchodom dovolenkou.

Základom je začať s málom a postupne túto techniku zlepšovať. Ušetrí vám to čas, nervy, peniaze a položí to základ pre možnosť delegovať vašu prácu ďalej.

Marec 23, 2010

Správa softvérových projektov pomocou Tracu

Dnes si je už ťažké predstaviť softvérový projekt, kde by si vývojári vymieňali zdrojové kódoch na disketách. Správa zdrojových kódov sa presunula do systémov so skratkou SCM (Source Control Management). Z open source variánt je veľmi populárne Subversion a čoraz silnejšiu skupinu priaznivcov si získava aj Git.

Lenže nie len zdrojovým kódom je softvérový projekt živý. V projekte sa objavia rôzne chyby. Riešenie niektorých chýb si vyžaduje aj niekoľko týždňov. Na evidencie chýb a stavu ich riešenia, sú vhodné rôzne ticket systémy. Veľmi známa je napríklad Bugzilla, ktorá vznikala popri projekoch Mozilla Foundation. Tento softvér výrazne prispel k stabilizácii kódu Firefoxu, či Mozilly. Z komerčných si spomeňme napríklad JIRA, ktorú používa napríklad Adobe na bugs.adobe.com.

Dokumentácia je základnou súčasťou projektu. Rôzne poznámky a záznamy sa ukladajú do Wiki, ktorá obsahuje verzovanie. Aj keby niekto niečo omylom zmazal, vždy sa dá vťátiť k starému obsahu. Wiki sú jednoduché a rýchle. Z veľmi populárnych stojí za spomenutie MediaWiki, na ktorej je postavená napríklad Wikipédia.

To však akosi stále nie je úplne všetko, čo by človek potreboval na riadenie projektu. Ešte by to chcelo mať prehľad v tom, čo sa zmenilo v zdrojovom kóde a ktoré tickety boli uzatvorené. Tým pádom sa dajú ľahko sledovať zmeny a ich dopady. Z komerčného sveta má túto schopnosť najviac prepracovanú softvér Polarion.

Prečo použiť Trac, keď existuje toľko nástrojov? Autori Tracu si zvolili ako prioritu minimalistický prístup a to je veľmi podstatné. Zintegrovali dohromady Wiki, ticket systém, správu zdrojových kódov a sledovanie zmien. Trac je veľmi jednoduchý na používanie. Napojí sa na úložisko zdrojového kódu a vy máte okamžite prehľad o tom, čo sa v projekte deje. Pokiaľ vám nevyhovuje nejaká jeho vlastnosť, je ho možné ju odobrať. Trac sa dá jednoducho skonfigurovať, prípadne rozšíriť o nové vlastnosti pomocou pluginov. Trac je možné použiť aj na riadenie projektov, ktoré so softvérom nemusia mať vôbec nič spoločné, napríklad riadenie dodávok Hot Runner systémov na vstrekovanie plastov.

Pokiaľ potrebujete hostovať Trac, tak vám bežný PHP hosting stačiť nebude. Trac je napísaný v Pythone. Je možné ho spustiť ako samostatnú aplikáciu alebo pomocou Apache, tu odporúčam použiť WSGI. Ďalši informácie o možnostiach hostingu, školeniach a vývoji pluginov pre Trac, nájdete na stránkach SinusGear.com.