Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.
Vyhledávač DuckDuckGo je podle webu DownDetector od 2:15 SELČ nedostupný. Opět fungovat začal na několik minut zhruba v 15:15. Další služby nesouvisející přímo s vyhledáváním, jako mapy a AI asistent jsou dostupné. Pro některé dotazy během výpadku stále funguje zobrazování například textu z Wikipedie.
Více než 600 aplikací postavených na PHP frameworku Laravel je zranitelných vůči vzdálenému spuštění libovolného kódu. Útočníci mohou zneužít veřejně uniklé konfigurační klíče APP_KEY (např. z GitHubu). Z více než 260 000 APP_KEY získaných z GitHubu bylo ověřeno, že přes 600 aplikací je zranitelných. Zhruba 63 % úniků pochází z .env souborů, které často obsahují i další citlivé údaje (např. přístupové údaje k databázím nebo cloudovým službám).
Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
javac
. Prace na Scale byla motivovana touhou prekonat
omezeni dana zpetnou kompabilitou Javy. Scala neni rozsirenim Javy
(superset), ale zachovava si schopnost spoluprace (interoperability)
Jeden z duvodu pro pouziti Scaly je vyssi produktivita v porovnani s
Javou (pozn. prek: neni tak ukecana) pri zachovani rychlosti,
pouzitelnosti Java knihoven a dalsich vyhod JVM. Scala ma strucnost
dynamickych jazyku jako Ruby nebo Python, ale je staticky typovana jako
Java. Dalsi vyhodou je lepsi podpora vice vlaknoveho programovani.
V italstine Scala znamena schody. V tomto clanku je dvanact kroku
(schodu) ktere vam pomohou zacit se Scalou.
bin
adresari
najdete prekladac, interpret shell apod. Aby vse fungovalo je treba
pridat tento adresar do promnene prostredi (env. variable)
PATH
. Take je treba mit nainstalovanou JRE 1.4 nebo
novejsi.
scala
, najdete ho v adresari 'bin'.
Po spusteni vypise toto:
$ scala This is an interpreter for Scala. Type in expressions to have them evaluated. Type :help for more information. scala>Je mozne vkladat vyrazi jako 1+2, interpret pak odpovy vysledkem.
scala> 1 + 2 unnamed0: Int = 3Vysledek obsahuje:
scala.Int
. Tato trida
odpovida int
nebo Integer
z Javy. Vlastne
vsechny primitivni typy z Javy maji protejsek ve Scale. Scala sama o
sobe nezna primitivni datove typy, vse se tvari jako objekt. Ale
prekladac provadi optimalizace a pouziva primitivni datove typy pro
lepsi vykon.
unnamedX
muze byt odkazovan z dalsich radku. Napriklad:
scala> unnamed0 * 3 unnamed1: Int = 9Pro vytisteni nezbytneho 'Hello world' muzeme pouzit toto:
scala> println("Hello, world!") Hello, world! unnamed2: Unit = ()Datovy typ vysledku je 'Unit' to odpovida 'void' v Jave. Scala nezna 'void' ve smyslu 'zadna navratova hodnota'. Pro pripady jako
println
je proto zaveden typ 'Unit' ktery ma jedinou
moznou hodnotu ()
. Pro nas ale bude ted stacit ze Unit a
void jsou totozne (pozn. prek: na urovni bytecode je Unit prelozen na
void)
val
(konstantami) ktere mohou byt
prirazeny pouze jednou a var
, ktere mohou byt prirazeny
vicekrat. (pozn. prek: val je var s javovskym 'final'). Zde je ukazka
definice konstanty:
scala> val msg = "Hello, world!" msg: java.lang.String = Hello, world!Toto zavadi novou konstantu s datovym typem String a hodnotou 'Hello...'. Tento priklad take ukazuje dulezitou a velmi uzitecnou vlastnost Scaly: type inference (pozn. prek: odvozovani typu?). Typ 'String' neni treba uvadet u definice, protoze je uz znam pri inicializaci. Interpet/prekladac pozna hodnotu jakou je konstanta initializovana a podle toho prida k definici jeji datovy typ. Prekladac zvladne doplnit datovy typ u vetsiny definic. Vetsinou je lepsi ponechat tuto praci na nem, ale obcas muze byt nezbytne definovat datovy typ manualne. Definice typu neni pred promnenu jako v Jave, ale za, oddelene dvojteckou:
scala> val msg2: String = "Hello again, world!" msg2: java.lang.String = Hello, world!Konstanty neni mozne modifikovat, proto v nekterych pripadech je treba pouzit
var
promnenou:
scala> msg = "Goodbye cruel world!" console:5 error: assignment to non-variable val unnamed4 = {msg = "Goodbye cruel world!";msg} scala> var greeting = "Hello, world!" greeting: java.lang.String = Hello, world! scala> greeting = "Leave me alone, world!" greeting: java.lang.String = Leave me alone, world!
scala> def max(x: Int, y: Int): Int = if (x < y) y else x max: (Int,Int)IntDefinice metody zacina 'def'. Nazev metody 'max' je nasledovan vyctem parametru v zavorkach oddelenymi carkami. Kazdy parametr musi mit definovan typ (type inference zde nefunguje). V tomto pripade ma metoda 'max' dva parametry 'x' a 'y' s typem 'Int'. Dale nasleduje navratova hodnota ':Int'. U metod funguje odvozovani typu, takze ve vetsine pripadu to vynechat. Zde lze jednoduse odvodit ze navratovy typ bude vzdy 'Int'. Pokud napiseme metodu bez navratoveho typu, bude to fungovat:
scala> def max2(x: Int, y: Int) = if (x < y) y else x max2: (Int,Int)IntNazev metodu, parametry a navratovy typ tvori 'signature' metody (pozn.prek: tohle bych asi neprekladal). Zbytek je telo metody. V tomto pripade telo obsahuje jen jeden vyraz, takze neni nutno pouzit zavorky. Tuto metodu lze ale napsat take se zavorkami:
scala> def max3(x: Int, y: Int) = { if (x < y) y else x } max3: (Int,Int)Int scala> max(3, 5) unnamed6: Int = 5Lze take definovat metodu bez parametru:
scala> def greet() = println("Hello, world!") greet: ()Unit //zavolani: scala> greet() Hello, world! unnamed7: Unit = () //nebo bez zavorek: scala> greet Hello, world! unnamed8: Unit = ()Vsimnete si ze greet nema zadnou navratovou hodnotu, ale interpret stejne pise 'Unit = ()'. Metody bez parametru je mozne volat s nebo bez zavorek. Konvence je pouzivat zavorky, pouze u get metod ktere pouze vraci promnenou, zavorky nepouzivat.
Tiskni
Sdílej:
Prosim nepiste do diskuze veci, ktere se primo netykaji Scaly (minule bylo na 250 irelevantnich prispevku)....dal bych si pivo...
to bol dneska zase hic, čo?
Autorovo svoleni jsem zatim neresil.A kdy tak hodláš učinit, když jsi to "nestihl" před vydáním překladu? :)
Ze začátku jsem byl nedůvěřivý, ale musím přiznat, že scala mi přijde (subjektivní názor) sympatyčtější než například groovy. Pro psani krátkých scriptů je celkem vhodná ...
V nějakém dalším díle čekám, že bude příklad zdrojáku, jeho překlad a spuštění i s argumenty.
ps: pro emacsomily: Scala, Emacs and Yasnippet