Byl vydán Mozilla Firefox 146.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 146 bude brzy k dispozici také na Flathubu a Snapcraftu.
Před rokem převzala Digitální a informační agentura (DIA) vlastnictví a provoz jednotné státní domény gov.cz. Nyní spustila samoobslužný portál, který umožňuje orgánům veřejné moci snadno registrovat nové domény státní správy pod doménu gov.cz nebo spravovat ty stávající. Proces nové registrace, který dříve trval 30 dní, se nyní zkrátil na několik minut.
IBM kupuje za 11 miliard USD (229,1 miliardy Kč) firmu Confluent zabývající se datovou infrastrukturou. Posílí tak svoji nabídku cloudových služeb a využije růstu poptávky po těchto službách, který je poháněný umělou inteligencí.
Nejvyšší správní soud (NSS) podruhé zrušil pokutu za únik zákaznických údajů z e-shopu Mall.cz. Incidentem se musí znovu zabývat Úřad pro ochranu osobních údajů (ÚOOÚ). Samotný únik ještě neznamená, že správce dat porušil svou povinnost zajistit jejich bezpečnost, plyne z rozsudku dočasně zpřístupněného na úřední desce. Úřad musí vždy posoudit, zda byla přijatá opatření přiměřená povaze rizik, stavu techniky a nákladům.
Organizace Free Software Foundation Europe (FSFE) zrušila svůj účet na 𝕏 (Twitter) s odůvodněním: "To, co mělo být původně místem pro dialog a výměnu informací, se proměnilo v centralizovanou arénu nepřátelství, dezinformací a ziskem motivovaného řízení, což je daleko od ideálů svobody, za nimiž stojíme". FSFE je aktivní na Mastodonu.
Paramount nabízí za celý Warner Bros. Discovery 30 USD na akcii, tj. celkově o 18 miliard USD více než nabízí Netflix. V hotovosti.
Nájemný botnet Aisuru prolomil další "rekord". DDoS útok na Cloudflare dosáhl 29,7 Tbps. Aisuru je tvořený až čtyřmi miliony kompromitovaných zařízení.
Iced, tj. multiplatformní GUI knihovna pro Rust, byla vydána ve verzi 0.14.0.
FEX, tj. open source emulátor umožňující spouštět aplikace pro x86 a x86_64 na architektuře ARM64, byl vydán ve verzi 2512. Před pár dny FEX oslavil sedmé narozeniny. Hlavní vývojář FEXu Ryan Houdek v oznámení poděkoval společnosti Valve za podporu. Pierre-Loup Griffais z Valve, jeden z architektů stojících za SteamOS a Steam Deckem, v rozhovoru pro The Verge potvrdil, že FEX je od svého vzniku sponzorován společností Valve.
Byla vydána nová verze 2.24 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
1. Úvod
2. Krátce z historie
3. Jak to vypadá
4. Instalace
5. Spuštění
5.1 Interpretr
ruby
5.2 Interaktivní
interpretr irb
V první řadě by asi bylo třeba objasnit si, o čem bude řeč. Ruby je interpretovaný skriptovací jazyk, který je díky své jednoduché syntaxi poměrně snadný k naučení, přesto však dostatečně výkonný, aby dokázal konkurovat svým známějším bratříčkům Pythonu a Perlu. Na rozdíl od zmíněných jazyků je však plně objektově orientovaný.
Stejně jako u jiných skriptovacích jazyků je oblast použití poměrně široká. Asi nejčastější využití najde při psaní skriptů pro usnadnění každodenní práce. Díky své čisté a přehledné syntaxi se však hodí i k psaní větších projektů, programování webových aplikací, ba dokonce GUI.
Prostřednictvím tohoto seriálu se vás pokusím provést základy programování v jazyce Ruby, na nichž pak můžete stavět při studiu dalších materiálů. Jelikož je to seriál pro začátečníky, neočekávám žádné předchozí zkušenosti s programováním (nicméně jsou výhodou), předpokládám však znalost operačního systému na uživatelské úrovni a schopnost pracovat s příkazovou řádkou (shellem). Při psaní se budu snažit o maximální srozumitelnost s velkým množstvím příkladů. Na konci seriálu byste měli být schopni pracovat s jazykem Ruby, psát vlastní skripty a chápat objektově orientovaný přístup.
Pokud se v některém z příkladů dopustím omylu nebo nepřesnosti, neváhejte mne prosím opravit v diskusi.
Stvořitelem Ruby je Yukihiro Matsumoto, známý pod přezdívkou Matz. Ten jako zastánce objektově orientovaného programování hledal v první polovině 90. let skriptovací jazyk, který by mu v tomto vyhovoval. Perl mu však připadal v té době málo výkonný a Python zase nebyl až tak objektový, jak by si představoval. A tak se Matz rozhodl, že navrhne vlastní jazyk. Práce na něm započaly v roce 1993, první verze pak byla uveřejněna v roce 1995. Matz svůj jazyk pojmenoval po rubínu - Ruby.
Každého, kdo rozmýšlí nad novým jazykem, určitě zajímá, jak to vlastně vypadá v akci. Pojďme si tedy ukázat pár jednoduchých zdrojových kódů a začněme tradičním programem Hello world:
puts "Ahoj svete!"
Tento program vypíše na obrazovku uvedený text. Jelikož nám toho ale o struktuře jazyka moc neřekne, přejděme ke složitější ukázce:
def fib(n)
a, b = 0, 1
n.times do
print b, " "
a, b = b, a+b
end
end
fib(10)
Zde vidíme definici funkce fib, jež slouží k vypsání
prvních n prvků Fibonacciho posloupnosti. Ta je na posledním řádku
zavolána s parametrem 10. Výstup tohoto programu by pak
vypadal následovně:
1 1 2 3 5 8 13 21 34 55
Jelikož je ale Ruby objektově orientovaný jazyk, pojďme si do třetice ukázat definici jednoduché třídy:
class Divka
def initialize(jmeno, vek)
@jmeno = jmeno
@vek = vek
end
def to_s
"Moje divka se jmenuje #{@jmeno} a je ji #{@vek} let."
end
attr_reader :jmeno, :vek
end
mojeDevce = Divka.new('Hanka', 20)
puts mojeDevce.to_s
puts mojeDevce.vek
Po spuštění tohoto programu dostaneme na výstupu:
Moje divka se jmenuje Hanka a je ji 20 let. 20
Pravděpodobně nejširší uplatnění najde Ruby v Linuxu a jiných systémech unixového typu. Pro mnoho distribucí existují připravené binární balíčky, jejichž instalace je asi nejsnazší.
Pro potřeby tohoto seriálu budeme potřebovat dva programy:
ruby a irb. irb je interaktivní
prostředí a v následujících kapitolách je budeme hojně využívat, proto ho
doporučuji nainstalovat také. V některých distribucích (tuším, že třeba ve
Slackware) je vše obsaženo v jednom balíčku, v jiných je třeba stáhnout
irb zvlášť.
V systému Debian GNU/Linux tedy Ruby nainstalujeme:
root@debian:~# apt-get install ruby irb
V systému Fedora Core použijeme nástroje yum:
root@fedora:~# yum install ruby irb
Nemáte-li možnost instalovat binární balík (třeba pro to, že pro vaši distribuci neexistuje), a nebo nechcete, můžete si Ruby zkompilovat ze zdrojových kódů. Z domovských stránek si stáhněte nejnovější verzi (v mém případě 1.8.4) a zadejte:
~/download$ tar xvfz ruby-1.8.4.tar.gz
Tím komprimovaný balík rozbalíte. Nyní se přesuňte do vytvořeného adresáře, spusťte konfigurační skript a následně kompilaci:
~/download$ cd ruby-1.8.4 ~/download/ruby-1.8.4$ ./configure ~/download/ruby-1.8.4$ make
Toto může chvíli trvat, nicméně až se vrátíte s uvařeným čajem,
nalogujte se na účet uživatele root a dokončete
instalaci:
root@debian:/home/blackened/download/ruby-1.8.4# make install
Nyní byste měli mít vše potřebné.
Ačkoli je tento server zaměřený na operační systém Linux, jen pro úplnost zmíním, že pro systém Microsoft Windows existuje projekt One-Click Ruby Installer.
rubyKe spouštění skriptů slouží program ruby. Spustíme-li jej
bez jakýchkoli parametrů, dostaneme se do režimu zápisu skriptu. Po
stisknutí ^D (Ctrl+D) se zapsaný program provede a
ruby skončí:
~$ ruby
3.times { puts "Ahoj svete!" }
^D
Ahoj svete!
Ahoj svete!
Ahoj svete!
~$
Druhou možností je zadat program jako parametr:
~$ ruby -e 'puts "Ahoj svete!"' Ahoj svete! ~$
Toto je vhodné pro krátké skriptíky, které jsme schopní vměstnat
do jednoho řádku, hůře se nám už bude psát složitější program.
Nejčastěji používanou metodou je zapsat kód do samostatného
souboru a tento soubor pak předat k provedení interpretru.
Mějme soubor ahoj.rb s následujícím obsahem:
puts "Ahoj svete!"
K jeho spuštění použijeme příkazu:
~$ ruby ahoj.rb Ahoj svete! ~$
Poslední a nejpoužívanější metodou je vytvořit z
ahoj.rb spustitelný soubor. Upravme náš program:
#!/usr/bin/env ruby puts "Ahoj svete!"
Řádek #!/usr/bin/env ruby sděluje systému cestu
k interpretru. Aby to fungovalo, musí být tento na úplném začátku
prvního řádku souboru. Pak už stačí jen udělit souboru práva ke spuštění
a spustit jej:
~$ chmod +x ahoj.rb ~$ ./ahoj.rb Ahoj svete! ~$
irbInteraktivní interpretr spustíte příkazem irb. Na dalším
řádku se již objeví prompt, krom jiného jsou zde dvě číselné hodnoty.
První odpočítává řádky programu (počet již zadaných příkazů), druhá pak
úroveň zanoření:
irb(main):001:0> class Divka irb(main):002:1> def initialize(jmeno, vek) irb(main):003:2> @jmeno = jmeno irb(main):004:2> @vek = vek irb(main):005:2> end irb(main):006:1> attr_reader :jmeno, :vek irb(main):007:1> end => nil irb(main):008:0>
Údaj za => označuje návratovou hodnotu, v tomto
případě prázdnou hodnotu nil. Výhodou irb
je, že okamžitě vidíte výsledek svého snažení:
irb(main):008:0> puts "Ahoj svete uz je ohrane, nazdar lidi!" Ahoj svete uz je ohrane, nazdar lidi! => nil irb(main):009:0>
Interaktivní interpretr ukončíme buď příkazem exit nebo
stiskem ^D:
irb(main):009:0> exit ~$
V příštím díle seriálu se již pustíme do samotného jazyka a ukážeme si práci s proměnnými a základní aritmetické operace.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Minimálně pokud se člověk dívá původními Kayovými brýlemi. Nedodělky typu C++ za objektové nebrat!
. Jinak, skutečně objektový jazyk je přece Smalltalk, respektive self
.
Co takhle icu4r? Myslim ze uz nyni toho umi nekolikrat vice, nez slavna nativni unicode podpora v Pythonu. Nevim co si vlastne pod pojmem Unicode podpora predstavujete - jestli pouze to co je nativne v Pythonu (moc toho neni), tak hodne z toho umi Ruby nativne taky.
Info pro ostatni: osobne se snazim uz nekolik mesicu dokopat k dodelani vlastnimu icu bindingu - zatim nazvaneho libunicode-ruby, ktery bude co nejlepe zaintegrovany a bude tedy pracovat primo se Stringama, atd.. Snad pristi mesic konecne vydam prvni verzi...
Akorat, ze to vase "upozorneni" bych spis nazval utokem. Bohuzel jste tentokrat trochu minul...
Zacnete s tim, ze si prectete, co to vlastne je podpora unicode. Doporucuju zacit dokumentaci ICU. To vas tak na tyden zamestna. Potom mozna pochopite nasledujici:
* Na verzi 1.0, ktera bude umet vsechno co ICU, se projekt dostane po nekolika mesicich/letech vyvoje (0.1.0 znaci hlavne to, ze z icu podporuje desetinu funkcnosti).
* Protoze ICU umi vsechno, wrapper nemusi delat temer nic, takze chyby se velice jednoduse odladi a hlavne otestuji - testuje se pouze wrapper.
* I verze 0.1.0, ktera pouziva ICU, je nekolikanasobne lepsi, nez nativni podpora unicode v Pythonu.
* Nativni podpora unicode v Pythonu z pohledu ICU vubec nic neumi - dalo by se to definovat i tak, ze po srovnani s ICU se jevi jako temer nepouzitelna.
* Hodne z toho, co Python povazuje za podporu unicodu, lze v Ruby vyresit jiz davno iconvem a pomoci regularnich vyrazu (ktere umi UTF-8).
"...jak dolepit Unicode do Ruby namísto toho, aby to bylo v jazyce..."
Hmm, zajimave je, ze UString v icu4r (a jeho konverze ze Stringu) je reseny temer stejne jako v Pythonu (pouze toho umi 10x vice). Doufam ze jste tim nechtel naznacit, ze je Unicode do Pythonu dolepene.
Take si zkuste precist Why Python Unicode Sucks, kde je naznacen problem, kvuli kteremu jsem ja volil koncept uplne integrace se Stringem, misto specialniho unicodoveho stringu. Diky tomu, ze je Ruby plne objektovy jazyk, si totiz muzu dovolit Ruby rozsirit pomoci knihovny tak, ze to bude vypadat, jako normalni soucast jazyka a nemusim pridavat dalsi syntaxy.
Kdyz se dale zkusite podivat do zdrojaku Ruby, zjistite ze vsechny nativni typy v Ruby jsou delane stejnym zpusobem jako typy, ktere vytvori externi knihovna. Tzn. ze naloadovani icu4r ma temer stejny efekt, jako kdyby se podpora unicodu pridala primo do jazyka. Mozna potom konecne pochopite k cemu je ciste objektovy jazyk, a proc ho nekdo prosazuje.
"Určitě bych se na tohle spolehnul, kdybych chtěl něco vážného dělat."
Osobne se spoleham na svoji knihovnu (ktera ma verzi 0.15) - uz mi mnoho mesicu bez problemu beha na stovce serveru.
Take si zkuste precist Why Python Unicode SucksA potom Python Unicode Doesn't Really Suck od toho sameho autora :).
) Děkuji