Společnost Oracle vlastní ochrannou známku JAVASCRIPT. Komunita kolem programovacího jazyka JavaScript zastoupena společností Deno Land vede právní bitvu za její osvobození, viz petice a otevřený dopis na javascript.tm. Do 7. srpna se k nim má vyjádřit Oracle (USPTO TTAB).
Byl představen samostatný rádiový modul Raspberry Pi Radio Module 2 s Wi-Fi a Bluetooth.
Certifikační autorita Let’s Encrypt ukončila k 4. červnu zasílání e-mailových oznámení o vypršení platnosti certifikátů. Pokud e-maily potřebujete, Let’s Encrypt doporučuje některou z monitorovacích služeb.
Přemýšlíte, jak začít prázdniny? Už v úterý 1. července se bude konat Virtuální Bastlírna, tedy online setkání bastlířů, techniků, vědců i akademiků, kde se ve volné diskuzi probírají novinky ze světa techniky, ale i jiných zajímavých témat.
Za poslední měsíc jsme byli svědky plamenů několika raket. Zatímco malá raketa od Hondy se úspěšně vznesla a opět přistála, raketa od SpaceX se rozhodla letět všemi směry najednou. Díkybohu méně … více »Linus Torvalds zmínil, že souborový systém Bcachefs zřejmě odstraní z mainline Linuxu v začleňovacím okně pro vydání 6.17. Kent Overstreet mu totiž posílá kód s novou funkcionalitou i pro začlenění do kandidátů na vydání, kdy očekává pouze opravy chyb. Kent Overstreet byl již dříve z vývoje vyloučen kvůli konfliktní komunikaci.
Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.
Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].
Celkové tržby společnosti Canonical za rok 2024 byly 292 milionů dolarů (pdf). Za rok 2023 to bylo 251 milionů dolarů.
Byla vydána verze 1.88.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 6.17. Mimo jiné aktualizuje Tor Browser (14.5.4) a opravuje několik chyb.
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 :).