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.
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.
ruby
Ke 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! ~$
irb
Interaktivní 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:
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 :).