Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.
Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.
… více »Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).
V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.
Ubuntu 27.04 bude Tenacious T-Rex.
Byla vydána nová verze 2026.4.0 "Never-slop" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. ScummVM oslavil 25 let. Verze 0.0.1 vyšla 8. října 2001.
Kanadský vývojář Anthony Sistilli vytvořil ironický DIY projekt parodující kamerové systémy Flock, s cílem názorně demonstrovat rizika masového sledování jaké provozují tyto komerční ALPR systémy. Z levné IP kamery a vlastního ML softwaru (napsaného s pomocí SI circa za 20 minut, kód se mi bohužel nepodařilo dohledat) běžícího v laptopu sestavil jednoduchý systém, který detekuje výhradně policejní vozidla, zaznamenává jejich SPZ a
… více »Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.
Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si
… více »Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do
… více »
Kontinuální integrace (CI) spočívá v častém kompilování zdrojového kódu projektu, obvykle následovaném spuštěním testů. Z tohoto
důvodu je kontinuální integrace často zmiňována v souvislosti s technikami extrémního programování a test driven development. Při použití těchto technik vývoje má kontinuální integrace asi největší
význam, nicméně i když vyvíjite jinými způsoby (případně ani netušíte nic o různých metodách vývoje
), kontinuální integrace může být užitečná i pro vás. Při práci na nějakém projektu obvykle
dříve či později vyzkoušíte, zda vámi provedené změny nezpůsobily problémy při kompilaci a zda skutečně dělají to, co chcete (ideálně tak, že na napíšete test). Před odeslání změn do verzovacího systému
je potřeba zjistit, zda vaši kolegové, kteří pracují na tomtéž projektu, v mezičase neprovedli nějaké změny, které kolidují s těmi vašemi. Pokud dojde ke konfliktům, je třeba provést další změny, konflikty
odstranit a následně změny odeslat do repozitáře. Pravděpodobnost těchto konfliktů a jejich složitost pochopitelně závisí na tom, jak často tento proces absolvujete - čím je tento interval delší, tím
větší pravděpodobnost (za predpokladu, že každý vývojář nepracuje na submodulu, který je zcela oddělen od ostatních - což v reálu není přiliš časté), že dojde ke konfliktům a jejich integrace, případně
hledání přičiny problémů, bude složitěší. Tato uváha nás dovede k závěru, že patrně bude nejjednodušší odesílat nejmenší možnou ucelenou změnu (tj. odesílat změny co nejčastěji) a poté spustit kompilaci
zdrojového kódu a testy. Toto je princip kontinuální integrace. Kontinuální integrace by měla vést k tomu, že případné problémy jsou odhaleny v co nejkratším čase po odeslání změn, takže identifikace
příčiny problému by měla být relativně snadná a rychlá. Stejně tak ostatní vývojaři mohou snadno zjistit, v jakém stavu je aktuálně zdrojový kód, místo toho, aby akceptovaly změny od ostatních vývojářů
a pak řešili, zda za problémy mohou jejich změny nebo změny někoho jiného, které si stáhli při aktualizaci. Kromě kompilace a spuštění testů můžeme využít i dalších nástrojů, např. pro analýzu
zdrojového kódu, jako třeba FindBugs, PDM, Checkstyle,
generování dokumentace atd.
Kontinuální integrace pochopitelně přínáší i dodatečné náklady, zejména na pořízení HW na kterém CI server běží a počáteční úsilí, kdy je potřeba nakonfigurovat pro každý projekt jeden (případně víc) uloh, které definují jak se má projekt kompilovat a pod. Nicméně tyto náklady jsou obvykle zdaleka preváženy výhodami, které kontinuální integrace prináší.
Patrně nejznámějším a nejvíc používaným(*) CI serverem je Jenkins. Server je napsaný v Javě a původně byl určen rovněž pro kontinuální integraci projektů napsaných v Javě. Pochopitelně tedy obsahuje velmi silnou podporu nástrojů určených pro projekty napsané v Javě, nicméně je možné jej bez problémů použít i pro projekty v jiných jazycích. S růstem popularity (jak kontinuální integrace, tak Jenkins CI) roste i počet pluginů, které podporují nástroje určené pro jiné jazyky než Java. Toto je ostatně jedna z velkých výhod Jenkins CI oproti jiným CI serverům - komunita vývojářů (projekt je pochopitelně open source) je veliká a velmi aktivní (projekt má v tuto chvíli na githubu 112 vývojářů a obsahuje 555 repozitářů), v nabídce několika set pluginů lze najít plugin pro kde co a stejně tak na mailing listu obvykle dostanete odpověd velmi rychle. Projekt je primárně určen pro malá nasazení (několik projektů a několik vývojářů), nicmé lze jej s úspěchem použít i pro obrovské nasazení (stovky/tisíce projektů, jedno z větších veřejných nasazení je např. build server ASF).
(*) Podle průzkumu společnosti Sonatype 83% respondentů používá kontinuální integraci a z nich 71,5% používá (tehdy ještě) Hudson.
Projekt byl původně vyvíjen pod názvem Hudson Kohsukem Kawaguchim, toho času zaměstnancem Sunu. Vývoj byl rovněž Sunem částečne podporován. Téměř ihned po akvizici Sunu Oraclem Kohsuke z Oraclu odešel a postupně začalo docházet menším či větším konfliktům mezi komunitou a Oraclem, které nakonec výustily v roztržku velkou. O co presně ve skutečnosti šlo nevím (situace nebyla IMHO moc prehledná a navíc některá jednání neprobíhala veřejně). Oficiálně šlo o to, aby Oracle daroval jméno a logo Hudsonu komunitě, což Oracle kategoriky odmítnul a tak došlo k hlasování, kde komunita drtivou většinou rozhodla, že se projekt přejmenuje na Jenkins (k tomuto došlo cca před půl rokem). Hudson je nadále vyvíjen Oraclem (a dále zejména společností Sonatype), nicméně drtivá většina vývojářů a komunity vyvíji a používá Jenkins. Tuto odbočku považuji za důležitou zejména z toho důvodu, že starší články zmiňují a odkazí na Hudson, přičemž je ale míněm Hudson před přejmenováním, tedy vpodstatě Jenkins. Perlička na závěr této odbočky: poté, co Oracle vcelku nekompromisně odmítnul převedení projektu pod nejakou OSS nadaci, před nějakým časem Oracle rozhodnul, že projekt převede pod Eclipse foundation a ještě měli zástupci Oracle tu drzost tvrdit, že toto nabízeli (veřejně) od začátku.
Na stránkách projektu naleznete buď instalační balíček nebo návod jak Jenkins nainstalovat ve vaší oblíbené distribuci. Pokud nenaleznete, můžete si stánout war (web archiv) a ten pak spustit zcela jenoduše pomocí
java -jar jenkins.warJenkins je webová aplikace. Obsahuje v sobě minimalistický servlet kontejner Winstone (resp. svuj vlastni fork toho projektu), který spustí a na něm pak spustí samotný Jenkins. Běžící Jenkins pak naleznete na
http://localhost:8080. Pokud vám Winsotne přijde příliš obskurní a nedůvěryhodný, mužete Jenkins pochopitelně spustit na Tomcatu nebo jakémkoli jiném servlet kontejneru.
Všechny potřebné soubory pak Jenkins bude ukáladat v ~/.jenkins, kde ~ je domovký adresář uživatele, pod kterým je servlet kontejner spuštěn. Tato výchozí
volba se asi většíně uživatelů líbit nebude a lze ji změnit nastavením proměnné prostředí JENKINS_HOME.
V případě, že Jenkins nainstalujete z baličku, bude Jenkins startovat na Winstone. Na Fedoře je instalace následující:
wget /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key yum install jenkinsPo instalaci by měl být vytvořen nový uživatel
jenkins. Hlavni konfigurační soubor naleznete v /etc/sysconfig/jenkins.conf a potřebné soubory si Jenkins bude ukládat do
/usr/lib/jenkins.
Vývojový cyklus je velmi rychlý, nový release se vydává obvykle jednou týdně (viz changelog). K dispozici je ale i stabilní verze, která je vydávána jednou za 3 měsíce.
Nyní si ukážeme jednoduchou konfiguraci kontinuální integrace nějakého projektu. Abych ukázal, že Jenkins je možné použít i na jiné projekty než ty v Javě (Java tak jako tak není na tomto
serveru moc populární
), zkusme nakonfigurovat kontinuání integraci pro nějaký PHP projekt. Jako ukázka nám může posloužit např. projekt
PHPUnit. Projekt používá ke spouštění testů a generování reportů ant, takze v dalším budu předpokládat,
že jej máte nainstalovaný a přidaný v cestě (Jenkins je schopen si jej nainstalovat sám, ale o tom možná někdy jindy). Dále předpokládám, že máte nainstalováné všechny potřebné nástroje, které se při
sestatování projektu používají (phppmd, phpcs, phpdoc atd.).
Jak již bylo zmíněno, po spuštění Jenkins naleznete na http://localhost:8080. Jelikož ant máme nainstalovaný, není potřeba měnit nic v globální konfiguraci Jenkins. Nicméně je potřeba
doinstalovat alespoň některé pluginy, zejména Git plugin a pak např. PMD plugin, podle toho, co chceme používat. Na stránku s konfigurací pluginů se dostaneme přes "Manage Jenkins" a následné
"Manage Plugins" (případně rovnou přes URL http://localhost:8080/pluginManager/). Na záložce "Available" vybereme v sekci "Build Reports" PMD Plugin a v sekci "Source Code Management"
Git plugin. Dole na stránce odklikneme Install a pluginy se stánou a nainstalují včetně závislostí (v tomto případě se navíc nainstaluje plugin Static Code Analysis Plug-ins).

Po úspěšném nainstalování pluginů je potřeba Jenkins restartnout. Toto je jedna z věcí, která mi na Jenkins vadí, nicméně jelikož pluginy neinstaluji až tak často, dá se s tím žít.
Nyní již k samotné konfiguraci. Základní konfigurace je velice jednoduchá. Vytvoříme nový freestyle projekt: na úvodní stránce link "New Job", zvolíme jméno a jako typ projektu vybereme
"Build a free-style software project". Po OK se dostaneme na stránku s konfigurací projektu. První, co nastavíme, je repozitář projektu. V sekci "Source Code Management" vybereme Git, zadáme URL
projektu na githubu (git://github.com/sebastianbergmann/phpunit.git), případně můžeme specifikovat větev, kterou chceme sestatovat (např. aktuální větev 3.5).

Dále v "Build" sekci přidáme nový build step. Vybereme "Invoke Ant". Můžeme zde specikofovat jednotlivé cíle, které má Ant spustit, nastavit cestu k souboru, který
má spustit, pamatery a pod. Jelikož konfigurační soubor PHPUnit se jmenuje build.xml, nachazí se v kořenovém adresáři projektu a ma definovaný defaultní cíl, neni ale potřena nastavovat vůbec
nic. V sekci "Post-build Actions" nastavíme cesty k výsledkům
junit testů, pmd analýzy a cestu k dokumentaci. Reporty se vygenerují do adresáře builds/logs a dokumentace do builds/api. Pokud testy obsahují chyby, pmd se defaultně nespustí.
Jelikož toto je i náš případ (aktuálně jeden junit test neprojde), v "Advanced" sekci PMD zakrtneme "Run always".

Konfiguraci uložíme, spustíme build a můžeme případně sledovat průběh buildu.

Po doběhnutí nám na stránce projektu přibydou kromě odkazu na dokumnetaci i odkazy na výsledky junit testů a pmd analýzy. Výsledky si pochopitelně můžete podrobně projít.


Pokud build spustíme vicekrát, na hlavní stránce proketu navíc přibudou grafy s trendy junit testů a pmd analýzy:

A to je vše, základní konfigurace je hotová.
Toto byla jen vcelku jednoduchá, ale v mnoha případech dostačující, konfigurace. Dále by bylo užitečné nastavit např. kdy se má build spustit (v určitý cas, pokud dojde ke změnám v repozitáři, atd.), odelání emailu, pokud build neprojde, případně odeslání mailu vývojáři, který pravděpodobně chybu způsobil. Krom tohot základního nastavení Jenkins a jeho pluginy mohou nabídnout mnohem více možností. O tom snad někdy jindy.
Tiskni
Sdílej:
No jo, takhle.to taky v praci delame. Teda ja to musim drzet za behu, ale ted uz vim, jak se to jmenuje.jj, imho to kontinualni integraci provuzuje kde kdo, protoze je to vcelku prirozene, ale hromada lidi nevi, ze to uz stihnul nekdo pojmenovat
(A je na zvazeni kazdeho, jestli pouzije nejaky existujici nastoj nebo si napise par svy (napr. bashovych) skriptu)
Velmi užitečný plugin je Copy Artifact.
AFAIK tento plugin pro Hudson uz nikdo nevyviji (ostatne, posledni verze u Hudsonu je 1.9, kdezto u Jenkins 1.18)
poté, co Oracle vcelku nekompromisně odmítnul převedení projektu pod nejakou OSS nadaci, před nějakým časem Oracle rozhodnul, že projekt převede pod Eclipse foundationCo mi to jen připomíná…
jmap -dump:file=jenkinsDump.hprof $jenkins_proces_id), velmi rad se na nej podivam
)