Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Intro: Doba je zlá. I práce v JZD u krav už není moc jistá. I řekl jsem si jednoho dne, že je třeba se naučiti se i něčemu jinému než jen kydat hnůj. V jedné zdejší diskuzi jsem se onehdá dočetl, že dneska programuje každý dement. Vytušil jsem příležitost a mé nejasné pocity, že bych se měl pokusit více využít svůj nevalný intelekt, začaly dostávat znatelnější kontury: rozhodl jsem se, že se stanu programátorem. Elitářské kecy o tom, že programátorem se člověk nestává, nýbrž se jím rodí, jsem hodil za hlavu a pln odhodlání zasedl ke kompjútru. Rozechvěn nad nově nabytými poznatky jsem se rozhodl, že se o ně s vámí zde budu dělit, alepoň co mé síly a čas dovolí. Nebojte, nebudu vás unavovat, jak již jistě mnozí z vás vytušili z toho, že jsem zasedl ke kompjúru, nudnými definicemi, bezduchými lemmaty a větami a vyumělkovanými důkazy z diskrétní matematiky, nelineárního programování a podobných, od reality a praxe odtržených, věd. Programováním pochopitelně myslím to, co se tím v dnešní době běžně míní: zapisování kódu. Ač jsem si pod zapisováním kódu představoval činnost kterou zvládne opravdu každý (gramotný) dement, brzy narazila kosa na kámen a zjistil jsem, že to není až tak jednoduché jak to vypadá a jak mnozí tvrdí. Nevycouval jsem z boje, ale pro začátek si zvolil dosažitelnější cíl: zkusím se stát pro začátek alepoň programátorem prasičem. Zde musím přiznat, že mě na tuto myšlenku částečně přivedl Ladicek a jeho blog na téma Tajemství kvalitního prasení. No, vylévání srdíčka již ale bylo dost. Jelikož se domnívám, že aby byl člověk kvalitní progamátor-prase, musí prasit nejen na straně databáze, ale i kódu v samotném, začal jsem studovat Groovy... (Pozn. 1: Ano, vím, že prasit jde v kažném jazyce, ale v Groovy to IMHO jde o něco snadněji. Pozn. 2: Ano, PHP jsem zkoušel, ale to je zatím asi nad moje chápání).
Groovy je objektově orinetovaný skriptovací jazyk pro platformu Java.
Hlavním cílem Groovy je zjednodušit vývoj a zvýšit efektivitu, aniž by programátora připravil o výhody které nabízí Java.
Na rozdíl od např. Jythonu nebo JRuby Groovy není implementace daného skriptovacího jazyka v Javě, ale je míněn jako rozšíření Javy
(ve skutečnosti není úplně pravda, že Groovy je rozšířením Javy, viz níže).
Nicméně těmito skriptovacími jazyky se do značné míry inspiroval. Jak praví [2]: "Groovy is how Java should looks like at the end of the day"
Byl iniciován i proces (JCP) začlenění Groovy do Java platformy, příslušné JSR (JSR-241) je však neaktivní. Což ale neznamená, že se zastavil i vývoj samotného Groovy. Nejnovější stable release (1.7.1) vyšel vcelku nedávno - 19.2.2010.
Groovy je jazyk silně typovaný, podporující duck-typing, tj. typování je dynamické. Jazyk obsahuje closures, umožňuje přetěžování operátorů, vkládát do řetězců výrazy, které se vyhodnotí, automaticky generuje gettery a settery a další zajímavé věci. Kód lze skompilovat do javovského bytekódu, takže kód napsaný v Groovy lze jednoduše integrovat do kódu napsaného v Javě (a pochopitelně to platí i naopak). Vyvíjen je pod Apache licencí.
Máme několik možností, jak spustit kód napsaný v Groovy:
první je skript uložený v souboru, opatřený #!/usr/bin/evn groovy
. Po spuštění se kód skompiluje (on-the-fly) a spustí.
Toto je asi nejběžnější použití pro menší jednoúčelové skripty. Pomocí groovyc
můžeme kód skopilovat do javovského bytekódu.
Toto typicky využijeme pro rozsáhlejší projekty nebo části, které budeme chtít integrovat do nějaké větší aplikace napsané v Javě.
Skompilovaný nebo i neskompilovany kód lze spustit z příkazové řádky pomocí groovy
.
Další možností je Groovy konzole, a to buď jako jednoduché GUI, kde lze psát a spouštět Groovy kód (groovyConsole
)
nebo klasická konsole (groovysh
). Zde je ale třeba si dát pozor na několik odlišností jak je Groovy kód vykonáván
ve srovnání s kompilovaným kódem (v dalším budu předpokládat, že je kód kompilován a na případné odlišnosti od Groovy konzole nebudu
upožorňovat). Pro otestování krátkého kousku kódu můžete případně v teminálu použít groovy -e "váš kus kódu"
.
Patně poslední možností jak spustit Groovy kód je sputit jej jako servlet.
V tomto úvodu se zaměřím na základní odlišnosti od Javy (zajímavější věci jako např. metaprogramování snad někdy příště).
Groovy má stejnou syntaxi jako Java, až na několik vyjímek - např. nepodporuje vnitřní třídy (proto nelze říct, že Groovy je rozšířením Javy) - toto není od verze 1.7 pravda, díky za upozornění Ladickovi.
Toto je IMHO asi největší odlišnost od Javy.
Jinak javovský kód pravděpodobně skompilujete bez problémů i v Groovy.
Jak již bylo předesláno, Groovy je sice silně typovaný jazyk, ale typování je dynamické (duck typing), takže typ proměnné se určuje až za běhu. Proměnnou je tedy možné definovat stejně jako v Javě, např. String text
, ale i pomocí klíčového slova def
, např. def text
, kdy nespecifikujeme typ proměnné. Typ takto definované proměnné se může za běhu měnit. Když např. spustíme
def text = 'text' println text.class text = 1 println text.classdostaneme
class java.lang.String class java.lang.Integer
Jedna z věcí, jak se Groovy snaží urychli vývoj aplikací je automatické generování gettrů a settrů, které lze volat ve zkráceném tvaru class.xyz
, místo class.getXyz()
, např.:
class Person{ String name } p = new Person() p.name = "Petr" println p.name println p.getName()Jak vidno,
class.getXyz()
ale funguje také. Toto ale platí jen v prípadě že neuvedete modifikátor atributu. Pokud uvedeme
private String name
, gettry a settry se nebudou generovat (to samé v případě dalsích modifikátorů jako public
).
V souvisloti s automatickým generováním gettrů a settrů je vhodné zmínit další vlastnost Groovy (jen tak ve stručnosti, podrobněji příště)
- Groovy ignoruje private
modifikátory a dává vám přístup k atributům třídy jako by byly public
. A to pochopitelne nejen u kódu napsaného v Groovy, ale i u toho napsaného v Javě (což nás ale nemusí tak moc pohoršovat, protože private
jde obejít i Javě samotné).
Pro usnadnění psaní Groovy dále nabízí možnost vynechat hromadu věcí, např.:
return
v metodách - poslední řádka je implicitné brána jako výraz s return
. Poměrně originální objasnění této featury lze nalést v [2]: "So, why are return statement optional? Uh, because Al Gore said that all of that extra unnecessary typing is the 623rd leading cause of global warming"int i = 10; println "i je ${i}"
,
nahrazení konstrukce if(p != null){p.name}
konstrukcí p?.name
, snadnější vytváření listů a map: def list = ["a","b","c"]; def map = [a:1,b:2,c:3]
,
iterování jejich položkami: list.each{println it}
a mnohé další.
Toto byl ryhchlý úvod do Groovy. Příště se (asi) pokusím shrnou některé praktické věci typu jak nastavit class path, kombinovat kód napsaný v Jave a Groovy, provést build pomocí mavenu a pod.
Literatura:
[1] D. Konig et al., Groovy in action, Manning Publications (2007)
[2] S. Dawis, Groovy Recipes, The Pragmatic Programmers (2008)
Tiskni
Sdílej:
S humorem bych napsal:
Jste si jist, zda si pomuzete prechodem od krav k programovani ?
Vzdyd naprosta vetsina programatorskych pocinu vznikla z dobre vule a konicku bez naroku na kus chleba (pardon, na hrnek mlika).
Windows nejsou nejrozsirenejsi platformou proto, ze Microsoft je bajecny, dokonaly, nejlepsi ..... myslete si co chcete, ale proto, ze tisice nadsencu zaclo vytvaret aplikace pro ne a ty se jako free ci svobodne programy rozsirily do celeho sveta prostrednictvim internetu.
Bez nadsencu (casto chudi lide) by windows byl pouhy bastl takrikajic k nicemu.
Bez nadsencu bychom dnes v roce 2010 byly tak na urovni win 3.11.
To stejne se tyka i OSS komunity - ta by bez nadsencu vubec nevznikla.
Nevim jakym programatorskym pocinem si chcete pomoci od onech krav.
Jste si jist, zda si pomuzete prechodem od krav k programovani ?jisty si pochopitelne nejsu. Od nas z vesnice to jeste nikdo nezkusil, tak moc nevim, do ceho jdu... uvidime
Vzdyd naprosta vetsina programatorskych pocinu vznikla z dobre vule a konicku bez naroku na kus chlebaMym cilem neni vytvorit nejaky zasadni pocin na poli programovani, kterym bych zanechal nesmazatelnou stopu v dejinach
Mozna je dobra kombinace dopoledne delat u krav a odpoledne programovat. Ze zacatku studijne a pozdeji melouchama.
V praci si u krav odpocnete hlave a doma programovanim telu.
Do groovy jsem se taky pustil, protože po dlouhé době, jsem byl nucen dělat něco ve swingu. Hledal jsem něco v čem nemusím psát tolik zbytečného kódu a jako jasná volba vyšel swingbuilder z groovy. Oproti javě stačí napsat, tak třetinu kódu. Obecně už nikdy nebudu zkoušet psát GUI v něčem jiném než ve skriptovacím jazyce(ještě možná by šly formuláře v XML).
K tomu prasení v groovy existuje dost konstrukcí, které dokážou solidně sprasit kód:
podmíněná dereference foo?.bar()
(proběhne pouze pokud není null),
ternární operátor s vynechanou částí a ?: b
(pokud platí a vrací a)
c = [1, 2, 3]; c.remove(0) // smaže první prvek - remove(int index) c.remove(2) // smaže prvek s hodnotou 2 - remove(Object value)Pro ty kdo by se chtěli o groovy dozvědět víc, tady je video z přednášky CZJUG.
Ano, PHP jsem zkoušel, ale to je zatím asi nad moje chápání).To je jen dobře... O nic jste nepřišel...
Xxx xxx = new XxxBuilder() .withFoo(foo) .withBar(bar) .build();To je samozřejmě dáno možností vynechávat středníky a algoritmem pro parsování – tečky je holt potřeba uvádět na koncích řádků. V diskusi zaznělo slovo JRuby. Já mám na to takový názor: pokud máte programátory v Javě a potřebujete skriptovací jazyk, volte Groovy. Pokud máte programátory v Ruby a potřebujete rozumný výkon, volte JRuby
tuto otazku zodpovedettuto otazku schopen zodpovedet
Gratuluju k výborné volbě, programátor-prasič na platformě Java si dnes konečně může bez výčitek svědomí podat ruku s průměrnou prostitutkounuze dobra, nejsu si ted jisty, jestli je to dobre nebo spatne, kazdopadne mam v zaloze jeste myslenku, ze si udelam rekvalifikaci na kuchare (jeste teda premyslim o elektrikari)
K vnitřním třídám – od verze 1.7 podporovány jsouaha, diky za korekturu, pouzivam starsi verzi a na zmeny v 1.7 jsem byl liny se podivat. V zapisku jsem to opravil.