November 4th, 2007 — Balik tyzdna
Dnešným balíčkom týždňa sa stáva Conduit - jednoduchá synchronizácia pre gnome.

Ak ste niekedy hľadali univerzálny program na synchronizáciu dát, už nehľadajte - je tu Conduit. Poskytuje množstvo možností a služieb medzi ktorými dokáže synchronizovať a ani pridanie vlastných nie je zložité.
Continue reading →
November 2nd, 2007 — Ruby on Rails
Architektúra MVC
Potreba oddeliť od seba časti z rôznou funkcionalitou sa stáva dôležitou hlavne pri veľkých systémoch. Práve z tohto dôvodu vznikla MVC (Model View Controller) architektúra. Jednoducho povedané MVC nám aplikáciu rozdelí na niekoľko vrstiev:
Continue reading →
November 1st, 2007 — Internet
Áno, kane je späť. 1. november je ten deň kedy sa vracia. Na novej doméne (kane.sk) a hostingu (dreamhost.com). A má veľké plány.
V prvom rade chce pokračovať v seriáli o Ruby on Rails, pribudne pravidelná kategória hudba, v ktorej sa budú objavovať recenzie albumov, ktoré ho zaujali.
Ale dosť už v tretej osobe. Hosting u Dreamhostu som si zabezpečil už dávnejšie, takže prečo je blog spustený až teraz? Hlavnou príčinou je že som chcel nový wordpress a importovanie nebolo až také bezproblémové. Bolo to niekľkodňové laborovanie, exporty a importy databáz a nakoniec som aj tak musel všetký články spôsobom copy paste preniesť do novej databázy... No našťastie som to v zdraví prežil a vy si môžete prečítať tento článok.
Nakonie by som ešte chcel poďakovať fasterovi za pomoc s css-kom 
July 11th, 2007 — Linux, Ruby on Rails
Textový editor síce nie je najdôležitejšou vecou pri programovaní (aj keď by sa o tom dalo polemizovať), ale dobrý editor nám prácu veľmi uľahčí a spríjemní.
Na Mac-u je voľba tuším jasná. Vo všetkých screencastoch, ktoré som mal možnosť zhliadnuť sa objavoval MacOS a jediný text editor - Text Mate. Vyzerá to byť veľmi slušný editor s množstvom funkcií. Ale pre ľudí nevlastniacich počítač s jabĺčkom je tu zlá správa: Text Mate je Mac OS only… (a navyše nie je zadarmo). Situácia nie je stratená, ukážem vám ako si niečo, čo sa editoru Text Mate priblíži (a možno aj prekoná) vyrobíte sami - a zadarmo! Continue reading →
July 8th, 2007 — Balik tyzdna, Linux
Tento týždeň sa dostane hneď na dva balíčky. Funkcionalita oboch sa v niečom podobá - predchádzajú výskytu chýb. Jeden na CD/DVD médiách, druhý na vašom pevnom disku.
Balíčky tohto týždňa:dvdisaster a fslint
dvdisaster - predchádzame pohromám

Ak aj vy zálohujete svoje dáta na CD/DVD potom sa vám bude hodiť tento program. Jeho úlohou je zabezpečiť čitateľnosť CD/DVD média. Po napálení média si ho môžete preskenovať, či neobsahuje chyby. Ak nie program vám umožní vytvoriť dáta pre budúcu obnovu.
Bohužiaľ program nedokáže opraviť už poškodené disky (ak neboli vytvorené dáta pre budúcu obnovu), no to ani nie je prakticky možné. Ak však boli dáta vytvorené úspešnosť obnovy je veľmi dobrá (závisí od miery poškodenia, ak je médium veľmi poškodené tak ho neopraví ani David Copperfield)
Program sa bude najskôr hodiť ľuďom, ktorý potrebujú zálohovať dôležité údaje na DVD, keď po čase začne médium dosluhovať a objavia sa prvé chyby chybné miesta sa obnovia pomocou .ecc súboru vytvoreného programom dvdisaster a môže sa bez straty napáliť znova.
fslint - lint pre váš harddisk
Ak ste niekedy programovali pravdepodobne viete, čo je to lint. Je to program na statickú kontrolu zdrojového kódu. Pomáha predchádzať budúcim chybám. Presne túto službu pre pevný disk nám poskytne tento program.
Jeho úlohou je kontrolovať dáta na pevnom disku a zbavovať ich:
- Duplikovaných súborov
- Súborov z chybnými názvami
- Konfliktných názvou
- Zabudnutých dočasných súborov
- Neplatných odkazov
- a mnoho ďalších…
Program pre všetkých, ktorý chcú udržiavať svoj filesystem v poriadku a dobrej kondícii.
July 5th, 2007 — Spoločnosť, Život, vesmír a tak vůbec
Toto leto sa v Košiciach zmení Hlavná ulica na kino! Môže za to akcia z názvom Letné kino na Hlavnej, počas ktorej sa budú pri Dolnej bráne premietať filmy.
Výber je rôznorodý, aj tematicky aj krajinou pôvodu. Usporiadatelia sa neobmedzili iba na americké “trháky” ale dočkáme sa aj filmov z Francúzska, Slovenska, Nemecka.
Filmy sa premietajú vždy v nedeľu a stredu o 20:30. Vstupné je samozrejme zadarmo! Bližšie informácie nájdete na letnekino.sk
Dúfam že sa tam sem tam s fasterom uvidim
ostatných pozývam tiež.
July 5th, 2007 — Programovanie, Ruby on Rails
Minule sme si nainštalovali Ruby a Rails, v dnešnom diele sa pozrieme bližšie na jazyk ruby a jeho konštrukcie a syntax. Úvodom ešte musím pripomenúť že ma teší, že sa čoraz viac začína písať aj u nás (Čechy a Slovensko) o Ruby on Rails, predovšetkým musím spomenúť dva články na prievan.sk a tiež blog o RoR - na čo ma upozornil faster.
Trocha syntaxe
Keywords
V jazyku Ruby existuje niekoľko keywords - vyhradených slov. Sú to tieto:
BEGIN, END, alias, and, begin, break, case, class, def, defined?,
do, else, elsif, end, ensure, false, for, if, in, module, next,
il, not, or, redo, rescue, retry, return, self, super, then, true,
undef, unless, until, when, while, yield
Premenné, konštanty - identifikátory
V jazyku Ruby existuje niekoľko druhov premenných:
- lokálne - začínajú malým písmenom (príklad: id, word)
- globálne - začínajú ‘$’ (príklad: $counter)
- inštančné (platnosť vrámci objektu) - začínajú ‘@’ (príklad: @instance, @Nie_konstanta)
- class (platnosť vrámci triedy) - začínajú ‘@@’ (príklad: @@class, @@Ziadna_konstanta)
- konštanty - začínajú veľkým písmenom (príklad: Nejaka_konstanta)
Komentáre
Pre jednoriadkové komentáre sa používa ‘#’. Napríklad:
a=3*b #vynasobi b tromi!!
Pre viacriadkové komentáre sa používa =begin a =end, ktoré slúžia na vkladanie dokumentácie, použitie:
=begin
Je jedno co tu napisem
interpreter to aj tak nezaujima
a odignoruje to... :/
=end
Premenné, konštanty - typy
V jazyku Ruby premenné nemajú typy. Objekty na ktoré odkazujú však typ majú. Najzákladnejšie typy sú numeric (číselný dátový typ), character (znak) a string (reťazec).
Pri číslach a znakoch je to viacmenej jasné, reťazce sa môžu nachádzať buď v apostrofoch ‘reťazec v apostrofoch’ alebo v úvodzovkách “iný reťazec”. Kým apostrofy vyznačujú jednoduchý reťazec, v ktorom sa môžu maximálne nachádzať odescapované lomítka, v reťazci vyznačenom úvodzovkami je možná aj interpolácia medzi jednotlivými typmi. Napríklad takto:
a=2
puts "Premenná a má hodnotu #{a}"
Existuje ešte ďalší typ reťazcov, ktorý sa používa hlavne pri skriptoch. je ohraničený znakom ` (opačný dĺžeň?). Takéto reťazce obsahujú príkaz, ktorý sa odošle systému a obsah reťazca je nahradený výstupom daného príkazu. Dlhšie príkazy sa môžu vyznačovať tiež %x[]. Napríklad:
`ls -l`
%x[tail /etc/apt/sources.list && top]
V jazyku Ruby sú polia (arrays) veľmi silným typom. Polia môžu obsahovať ľubovoľné typy, dokonca aj zmiešané. Všetky polia sú inštanciou triedy Array a majú k dispozícii veľa metód. Príklady konštrukcie polí:
[1,2,3] #pole čísel
[1,2,"slovo"] #pole s číslami a reťazcom
{1,["jablko","hruška"], "niečo iné"]
# hovorí sa že jablká sa nemajú miešať s hruškami
Veľmi často sa používajú polia reťazcou, preto v jazyku Ruby existuje skratka pre vytváranie poľa reťazcov:
%w[toto je pole retazcov]
Polia samozrejme používajú indexy na prístup k prvkom poľa:
prvy=pole[0]
pole[0]=pole[1]
Ďalším silným konceptom v Ruby je hash - mapovanie. Je to vlastne vytvorenie dvojíc kľúč => hodnota (key => value). Kľúč predstavuje index na ktorom sa daná hodnota nachádza. Napríklad:
{"peter@gmail.com"=>"Peter",
"darth_vader@hotmail.com"=>"Darth",
"sample@domain.ext"=>"Sample"}
Potom v programe môžeme použiť na pristupovanie k položkám takéto indexy:
petrov_email=email["Peter"]
Podmienky, vetvenie, cykly
Okrem klasického if má Ruby aj menej tradičnú podmienku unless, čo je opak if. Korešpondujúce riadky tabuľky majú rovnaký význam:
|
if x < 5 then
statement1
end
|
unless x >= 5 then
statement1
end
|
|
if x < 5 then
statement1
else
statement2
end
|
unless x < 5 then
statement2
else
statement1
end
|
|
statement1 if y == 3
|
statement1 unless y != 3
|
|
x = if a>0 then b else c end
|
x = unless a<=0 then c else b end
|
Case je v Ruby oveľa silnejší ako v ostatných jazykoch. Dovoľuje totiž provnávať akúkoľvek hodnotu (aj reťazce). V Ruby vyzerá takto:
case "Tu je reťazec"
when "hodnota 1"
puts "A je spravne"
when "UPLNE INA HODNOTA"
puts "B je spravne"
when /char/
puts "C je spravne"
else
puts "Ziadna z moznosti A, B, C nie je spravne"
end
Pri číselných hodnotách môže byť vstupná hodnota testovaná aj na príslušnosť v určitom rozmedzí (napríklad od 0 do 100 - 0..100)
Pre slučky existuje množstvo spôsobov ako ich vytvoriť:
|
# Loop 1 (while)
i=0
while i < list.size do
print "#{list[i]} "
i += 1
end
|
# Loop 2 (until)
i=0
until i == list.size do
print "#{list[i]} "
i += 1
end
|
|
# Loop 3 (for)
for x in list do
print "#{x} "
end
|
# Loop 4 ('each' iterator)
list.each do |x|
print "#{x} "
end
|
|
# Loop 5 ('loop' method)
i=0
n=list.size-1
loop do
print "#{list[i]} "
i += 1
break if i > n
end
|
# Loop 6 ('loop' method)
i=0
n=list.size-1
loop do
print "#{list[i]} "
i += 1
break unless i <= n
end
|
|
# Loop 7 ('times' iterator)
n=list.size
n.times do |i|
print "#{list[i]} "
end
|
# Loop 8 ('upto' iterator)
n=list.size-1
0.upto(n) do |i|
print "#{list[i]} "
end
|
|
# Loop 9 (for)
n=list.size-1
for
i in 0..n do
print "#{list[i]} "
end
|
# Loop 10 ('each_index')
list.each_index do |xt
print "#{list[x]} "
end
|
Na kontrolu behu slučiek sa používa kľúčové slovo break, ktoré “vyskočí” so slučky. (rovnako ako napríklad v C-čku v prípade vnorených cyklov skončí len najvnútornejší)
Kľúčové slovo retry sa používa s iterátorom (slučka for), alebo v begin/end bloku pri výnimkách. Pri použití v cykle for sa iterátor reštartuje.
Pre cykly while a until sa namiesto retry používa kľúčové slovo redo. Kľúčové slovo next, sa používa na vyskočenie z najvnútornejšieho cyklu, pričom sa pokračuje ďalej.
Výnimky
Ruby rovnako ako ostatné jazyky (Java, C#) obsahuje koncept výnimiek. Na “vyhodenie” výnimky sa používa kľúčové slovo raise, na zotavenie sa používa blok begin/end, na odchytenie sa používa rescue. Príklady:
begin
# Nejaký kód
rescue Výnimka1
# ...
rescue Výnimka2
# ...
else
# Iné výnimky...
end
V mnohých prípadoch chceme vyskúšať opraviť čo sa pokazilo a skúsiť znova.. Práve tu nám príde vhod retry:
begin
# Chybový kód...
rescue
# Pokúsime sa o nápravu...
retry # Skúsime znova
end
Niekedy, napríklad pri práci so súbormi je potrebné vykonať určité akcie bez ohľadu na to či nastala výnimka alebo nie. V týchto prípadoch sa používa ensure:
begin
# Chybový kód...
rescue
# Vysporiadame sa s chybou
ensure
# Toto sa vykoná vždy
end
Existujú ešte zjednodušené zápisy odchytávania výnimiek:
x = a/b rescue puts("Delenie nulou!")
V metódach sa môže rescue blok umiestniť na koniec metódy, vtedy sa odchytávajú výnimky v celej metóde:
def vzorova_metoda
# telo...
rescue
# zotavime sa z vynimiek...
end
Na dnes je to všetko, nabudúce si povieme niečo o OOP, dynamickom prístupe a metaprogramovaní.
July 4th, 2007 — Hudba
3. júl je dátum kedy vyšiel (len oficiálne, na internete “vyšiel” o dva týždne skôr), mnou dlho očakávaný, nový album od skupiny Velvet Revolver - Libertad. Poďme sa teda naň pozrieť.Najprv trocha faktov:
Je to druhý album tejto hviezdnej skupiny, produkoval ho Brendan O’Brien (producent Stone Temple Pilots, Limp Bizkid ci Offspring). Čo sa týka skupiny, zostala v nezmenenom zložení.
Na albume sa nachádza 13 skladieb:
- “Let it Roll” - 2:31
- “She Mine” - 3:25
- “Get Out the Door” - 3:14
- “She Builds Quick Machines” - 4:02
- “The Last Fight” - 4:03
- “Pills, Demons & Etc.” - 2:54
- “American Man” - 3:56
- “Mary Mary” - 4:34
- “Just Sixteen” - 3:59
- “Can’t Get It Out of My Head” - 3:58
- “For a Brother” - 3:26
- “Spay” - 3:06
- “Gravedancer” - 8:42
Poďme sa pozrieť ako to vyzerá s jednotlivými pesničkami: Continue reading →
July 1st, 2007 — Balik tyzdna, Linux
Po týždni je tu opäť balíček týždňa dnes som si zobral na mušku ďalšiu skvelú utilitku, ktorá vám uľahčí kopírovanie.
Balíček tohto týždňa: Glipper - kopírovanie pod kontrolou
Ako určite viete, v linuxe sa dá v zásade kopírovať dvoma spôsobmi: buď klasicky Ctrl+c/x, Ctrl+v, alebo označením príslušného textu a vloženia stlačením prostredného tlačidla na myši. Glipper je aplikácia, ktorá archivuje kopírované texty pre budúce použitie. Opäť je to jedna z tých aplikácií, ktoré sedia v system tray-i a po stlačení klávesovej skratky sa objaví kontextové menu.
Prvá položka je názov aplikácie a v zátvorkách používaná klávesová skratka (v tomto prípade nie je žiadna klávesová skratka), Na druhom mieste je text ktorý sa vloží po stlačení prostredného tlačidla na myši. Ďalšie sú posledné texty, ktoré boli uložené v schránke. Tučným písmom je vyznačený text ktorý bude vložený stlačením Ctrl+v.
V nasteveniach je možné nastaviť, ktoré schránky sa kontrolujú (Ctrl+c, middleclick), koľko položiek sa uchováva, a koľko z textu sa v kontextovom menu zobrazí.
Jednoduchý program, ktorý sa hodí hlavne ľuďom, ktorí často kopírujú texty, napríklad pri programovaní a svoju úlohu zvláda statočne.
June 30th, 2007 — Programovanie, Ruby on Rails
Ruby prichádza…
Možno ste už počuli o Ruby on Rails, skvelom a veľmi porduktívnom spôsobe vytvárania webových aplikácií. Ak nie tak vám to v skratke zhrniem. Ruby je programovací jazyk, ktorý vznikol v roku 1995 a medzi jeho hlavné črty patrí:
- je objektovo orientovaný
- 4 druhy “viditeľnosti” premenných (globálna, pre triedu, inštanciu a lokálna)
- garbage collector
- preťažovanie operátorov
- reflexia a metaprogramovanie
Ok to je Ruby. A čo Rails?
Rails je webový rámec pre jazyk Ruby. Ak vám niektoré zo slov “webový” alebo “rámec” nič nehovorí tak vám prezradím že web je napríklad aj to čo práve čítate (
) a rámec je nejaký znovupoužiteľný, všeobecný návrh softwarového systému, väčšinou pozostávajúci z abstraktných tried.
Práve znovupoužiteľnosť je pri Rails kľúčovým slovom. Všetky časti sú uložené na jednom konkrétnom mieste a nie je ich potrebné písať nanovo. Ďalšou dôležitou zásadou je “konvencia pred konfiguráciou”. To znamená že programátor musí špecifikovať a nakonfigurovať len nekonvenčné aspekty v programe, ostatné fungujú automagicky.
Inštalácia
Neviem či sa dá napísať jeden “správny” návod ako nainštalovať Ruby on Rails. Hlavne kôli tomu že výber servera je na vás. Takže je len otázkou chuti či nainštalujete apache, nginx, lighttpd alebo budete používať štandardne dodávaný webrick. Postup pri ľubovoľnom serveri sa zhoduje v týchto krokoch:
- Nainštalovať Ruby
- Nainštalovať Ruby Gems
- Nainštalovať Ruby on Rails pomocou Ruby Gems
Tak teda začneme. Presvedčíme sa, či máme aktuálene všetky balíky:
sudo aptitude update && sudo aptitude upgrade
Nainštalujeme Ruby:
sudo apt-get install ruby ri irb rdoc
Ak nemáme nainštalujeme aj balíčky súvisiace s databázou (opäť je výber na vás, ja som sa rozhodol pre klasickú MySQL) teda konkrétne balíčky: mysql-server libmysql-ruby ruby1.8-dev libdbd-mysql-perl libdbi-perl libmysql-ruby1.8 libmysqlclient15off libnet-daemon-perl libplrpc-perl libreadline-ruby1.8 libruby1.8 mysql-client-5.0 mysql-common mysql-server-5.0
Zo stránky Ruby Forge stiahneme najnovšiu verziu balíka rubygems (v čase písania článku 0.9.4), rozbalíme a spustíme setup.rb:
sudo wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
cd rubygems-0.9.4
sudo ruby setup.rb
Teraz môžeme nainštalovať Rails:
sudo gem install rails --include-dependencies
Ak by náhodou inštalácia zlyhala treba skúsiť
sudo gem update
Teraz by sme mal mať naninštalované Ruby on Rails, kto chce môže doinštalovať nejaký server. To si ukážeme nabudúce. Nateraz si ešte môžeme overiť či sa nám inštalácia podarila. Vytvoríme si priečinok, (napríklad ~/rails) a tam spustíme:
rails test
cd test
./script/server
Týmto by sa nám mal spustiť server webrick, ktorý je štandardne umiestnený na 0.0.0.0:3000, teda do prehliadača zadáme túto adresu.
Na záver zopár užitočných odkazov:
- ruby-lang.org - oficiálna stránka jazyka Ruby, obsahuje porovnania ruby s ostatnými známymi jazykmi (php, java, C/C++), tutoriál, informácie a linky
- rubyonrails.org - oficiálna stránka frameworku Rails, nájdete tu screencasty, ďalšie odkazy na rôzne knihy, tutoriály, ukážky, kontakty na komunitu ľudí okolo RoR.
- RoR na bestechvideos.com - ďalšie screencasty
- Wiki stránka s tutoriálmi - viac tutoriálov
