Entries Tagged 'Programovanie' ↓
August 14th, 2008 — Programovanie, Spoločnosť
Minulý týždeň som sa zastavil v Krakove, aby som navštívil Google Offices a stretol sa s kolegami zo Summer of Code. Bola to fakt pecka, ale poporiadku.. Šiel som vlakom a nebolo to veľmi dobré (teraz už viem, že Dylan Moran o vlakoch vlastne nežartoval
). Prvou nepríjemnosťou bolo, že vlak mal dvojhodinové meškanie (ešte štastie, že som prišiel o hodinu skôr) a keď už prišiel tak som zistil, že vagón do ktorého som mal miestenku jednoducho nedorazil. Našťastie vlak bol prázdny a tak som mal kupé iba pre seba. O 6.00 som dorazil do Krakova, vcelku unavený - vo vlaku sa veľmi neviem vyspať.
Prvá vec, čo som zistil, že takto skoro v Krakove veľmi nie je čo robiť. Prešiel som sa po meste a popozeral pamiatky. Krakov je naozaj pekné mesto a nachádza sa tam množstvo krásnych historických budov, ale miestami som si pripadal ako vo filme In Bruges. Po dlhšej prechádzke som si sadol v jednej kaviarni - na prebratie som si dal trocha javy a niečo pod zub. Nebolo veľmi čo robiť, keďže stretnutie bolo naplánované na 11.30 tak som zase šiel obdivovať skvosty architektúry, uvedomil som si pritom jednu vec - chodenie po pamiatkach je zaujímavé iba chvíľu potom to začne byť otrava, hlavne keď je vonku tak teplo.
Našťastie čas stretnutia sa pomaly priblížil a tak som sa vydal hľadať kancelárie (nevediac, že adresa ktorá bola na meetup wiki nebola až tak celkom presná). Stretol som 3 ďalších GSOC-erov, ktorí si tiež neboli istí adresou. Tak sme sa rozhodli, že si sadneme, dáme si pivo a počkáme čo sa bude diať. O niekoľko minút dorazili "googleri" našťastie oblečený v tričkách s logom Google, takže ich nebolo až také ťažké spoznať, a odviedli nás do kancelárií.
Kancelárie. Spomenul som už, že sú cool? Sú! Na recepcii sme sa zapísali a dostali sme menovky. Potom sa nás ujal jeden zamestnec Google a previedol nás kanceláriami. Niekoľko vecí ktoré stoja za zmienku. Všetky miestnosti majú vtipné názvy ako napríklad Kernel Panic, Broken Pipe ale najlepšia je Access Denied (skúste tam vojsť
). To isté platí pre ostatnú techniku, tlačí sa na tlačiarni /dev/null. Nachádza sa tam veľmi veľa vecí, ktoré vám ako zamestnancovi umožnia čo najviac si pracovisko užiť (všade sa povaľujú Fatboy-e, nachádza sa tam stolnotenisový stôl, stolný futbal, PS3, Nintendo, obrovská plazma, každý so zamestnancov má možnosť požiadať o čokoľvek) Kto by tam nechcel pracovať?! Tiež sa tam nachádza obrovská kuchyňa s kopou jedla a sprcha, takže si človek pripadá v podstate skôr ako doma než ako v práci. A navyše zamestnanci vyzerajú byť úplne v pohode ľudia (aj to je jedna z vecí, ktoré sa pri pohovoroch pre prijatie hodnotia).
Po Tour de Office sme sa rozvalili v "spoločenskej" miestnosti a zamestnanci nám predstavili náplň svojej práce a život v Googli. Pracujú na veľmi rôznorodých projektoch (vývoj Gmailu, Google Readera, Androida a veľa ďalších). Dozvedel som sa tiež že Google pravidelen organizuje pre svojich zamestnancov nejaké akcie (lyžovačky, dovolenky a rôzne iné "fun events"), alebo napríklad, že majú pravidlo podľa ktorého môže každý zamestnanec 20% času pracovať na ľubovoľnom projekte. (A stretol som tam aj jedného slováka, ktorý tam pracuje). Zároveň všetci študenti dostali tričko, diár a nejaké nálepky.
Potom bol čas na predstavenie nás študentov a našich projektov. Opäť bolo skvelé vidieť na akých rôznorodých projektoch ľudia pracujú (Tcl, wxWidgets, gcc, Java Pathfinder atď.). Všetko sa odohrávalo vo veľmi uvoľnenej atmosfére a zamestnanci Google prejavovali naozajstný záujem. Keď dohovoril posledný sme sa vrhli na jedlo a popritom sme pokecali so zamestnancami Google a s ostatnými študentmi.
O nejaký čas sme sa zbalili a zobrali nás do druhej kancelárie v Krakove. Táto sa nachádzala v historickej budove, ale stále mala ten nádych Googlu. Opäť sme si užili zábavu - niektorý sa chopili gitár, bicích a mikrofónu a zahrali si RockBand, iní zase zobrali wii a zahrali si virtuálny tenis. Čas bežal veľmi rýchlo a už tu bol čas ísť. Škoda, že sme nemohli fotiť. Nejaké fotky ale predsa len existujú (sú tu).
Po posledných skupinových fotkách sme sa rozhodli zapadnúť niekde do baru na zopár pív. Každopádne to bol skvelý výlet takže rozhodne neľutujem, že som sa zúčastnil. Stretol som tam množstvo zaujímavých ľudí a zažil kopec srandy takže už sa teším na budúci rok.
March 17th, 2008 — Internet, Programovanie, Ruby on Rails, java
Len nedávno vyšliel Netbeans 6.0 už onedlho je tu verzia 6.1. Hoci podľa čísla verzia by sa mohlo zdať že ide len o kozmetické úpravy opak je pravdou. Vylepšenia sa dočkal výkon editora, ktorý teraz štartuje omnoho rýchlejšie. Je to uvedené aj v novinkách 6.1-ky tak som to len tak so zvedavosti otestoval a je to naozaj tak - u mňa dokonca ešte viac ako sa uvádza (uvádzané zrýchlenie až 40% je u mňa viac ako 300%).
Kým verzia 6.0 mala priemerný štart zhruba 1 minútu pri verzii 6.1 je to už len 20 sekúnd.A to už je teda poriadne vylepšenie. Za toto vývojárom veľká pochvala. Ešte niekoľko takýchto počinov a presvedčíme každého, že tá Java vlastne vôbec nie je pomalá
Navyše bola zlepšená aj správa pamäte - teda Netbeans zaberá o niečo menej.
Z ďalších vynovení som si všimol hlavne lepšiu podporu pre písanie JavaDoc-ov, hoci podľa môjho názoru mohli ponechať starý JavaDoc editor z verzie 5.5. Bola pridaná podpora automatického dopĺňania @ tagov (@params, @return atď.)
Na stránke som si tiež všimol, že bola pridaná podpora pre JavaScript (vyznačovanie syntaxe, refaktoring, dopĺňanie kódu atď.). Pribudli tiež aj nové hinty pre Ruby respektíve Rails, teda postupne sa možno refaktoring bude dať jednoducho robiť aj v dynamicky typovaných jazykoch, čo je len skvelé!
Musím povedať, že vývojárom sa opäť podarilo zapracovať na tomto skvelom IDE a vylepšili časť, ktorá ma mrzela najviac - rýchlosť štartu a pamäťovú náročnosť, týmto sa Netbeans dostal o krôčik bližšie k dokonalému IDE.
Ak ste programátor a Netbeans ste ešte nevyskúšali, alebo ešte nemáte najnovšiu verziu môžete si ho stiahnuť tu. Netbeans 6.1 je zatiaľ vo fáze betaverzie, vydaný by mal byť 23. apríla 2008.
March 11th, 2008 — Programovanie, Ruby on Rails
V jazyku Ruby sa metaprogramovanie stalo štandardným spôsobom písania aplikácií a existuje množstvo techník, ktoré sa dajú použiť, ale existuje len málo materiálov. V tomto príspevku sa pokúsim dať dohromady aspoň základné spôsoby, ktoré sa v Ruby dajú použiť.
V prvom rade je na mieste otázka What the f*** is metaprogramming..? odpoveď nie je jednoznačná. Dalo by sa povedať, že ide o vytváranie programov, ktoré vytvárajú alebo modifikujú iné programy... Toľko definícia podľa wikipédie, poďme sa pozrieť ako to vyzerá v praxi.
Continue reading →
December 7th, 2007 — Programovanie
Po týždňoch čakania a v mojom prípade aj betatestovania sme sa konečne dočkali finálnej verzie Netbeans 6.0.
Poďme sa pozrieť, čo nové nám prináša:
Nový Netbeans prichádza hneď v niekoľkých verziách, líšiacich sa v programovacom jazyku ktorý mienite používať v ponuke je verzia pre C/C++, Java (SE alebo EE), Ruby, Mobility, alebo tiež kompletný balík, ktorý obsahuje všetky spomínané pluginy. Samozrejme všetko sa dá neskôr doinštalovať cez Pluginy.
Hlavné zmeny v prostredí IDE nastali hlavne v práci z tabmi a panelmi, ktoré je teraz možné premeniť na samostatné okná, čo môže byť vhodné pri práci na viacerých monitoroch. Naviac nastalo určité zlepšenie aj v prispôsobivosti obsahu panelov. Z ďalších noviniek sa dá spomenúť ešte možnosť vytvorenia skupiny projektov, čo uľahčí prístup k príbuzným projektom.
GUI builder, to je ďalšia oblasť zmien - k lepšiemu. Novinkou je Beans Binding technológia pre stavbu aplikácií používajúcich databázu ako zdroj dát - je to veľmi šikovné a neuveriteľne to zrýchľuje prácu pri vývoji takýchto aplikácií. Ďalším pozitívom je to, že už sa dá vygenerovaný kód pre Swing aspoň ako tak modifikovať, stále by to chcelo viac voľnosti, chápem že je to v záujme konzistencie vytvoreného designu, ale mne osobne nemožnosť čokoľvek zmeniť niekedy prekáža.
Čo sa týka podporovaných jazykov, hlavnou zmenou je podpora Ruby, a Ruby on Rails, čo bol tiež dôvod, prečo som sa na 6.0 tešil. Podporuje ruby zdrojáky, RSpec a YAML súbory, obsahuje aj Ruby a Rails debugger, testovanie a správcu pre Ruby Gems.
Zmeny sa dotkli aj UML modelovacieho pluginu, hlavne v podobe prispôsobivejšieho generovania kódu z UML diagramov, alebo importu požiadaviek programu z XML alebo Telelogic DOORS.
Používal som šiestu verziu už pomerne dlhší čas. Teda som ju (v rámci možností) otestoval a môžem povedať, že sa s ňou pracuje naozaj pohodlne, no neodpustím si aj trocha kritiky - GUI builder, zmeny boli k lepšiemu, ale stále to nie je ono, hlavne čo sa týka zarovnávania komponentov, niekedy sa nestačím diviť prečo prenesenie komponentu o niekoľko pixelov dozadu rozhádzalo celý formulár na nepoznanie. Program nie je najrýchlejší, čo sa štartu týka, možno preto, že mám kompletné vydanie so všetkými pluginmi, ale do budúcna je nevyhnutné štart o hodný kus zrýchliť.
Ďalšia verzia Netbeans, ktorá sa u mňa stane opäť IDE číslo jedna (snáď len ak mi niekto chcel darovať IDE-u
)
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í.
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

June 12th, 2007 — Programovanie
Povedzme si to narovinu, spúšťanie (inicializácia) programov v jave určitý čas trvá (nie práve krátko) a preto je dobré ak používateľ nečaká len tak. Prečo mu neposkytnúť nejaké informácie o programe, autorovi, licencii atď. Navyše aplikácie so splashscreenom pôsobia profesionálnejším dojmom. Prečo si teda neurobiť jednoduchý splashscreen?
Java obsahuje natívnu podporu pre splashscreeny (tutoriál tu), ale ja som sa rozhodol že to skúsim posvojom.
Tu je moja trieda SplashScreen.java… Použitie danej triedy je jednoduché, stačí vytvoriť inštanciu (predtým než sa spúšťa hocičo iné) a zavolať nad ňou metódu open. Teda nejako takto:
SplashScreen splash= new SplashScreen("/cesta/k/obrazku/obrazok.jpg");
splash.open(3000);
Toto spôsobí že sa vytvorí splash zo zadaneho obrazku, ktorý sa zobrazí do načítania hlavného okna. Ešte musím upozorniť, že cesta k obrázku nie je absolútna ale je to cesta v classpath-e. Teda si v svojich zdrojákoch vytvorte napríklad podadresár img a splash umiestnite tam.
March 11th, 2007 — Internet, Programovanie
Ak vám náhodou názov Songbird nápadne pripomína napríklad Sunbird alebo Thunderbird, nemusí to byť iba zhoda náhod. Tento prehrávač síce nie je vyvíjaný priamo Mozilla Foundation, ale ľudia, ktorý tento software píšu majú ku tvorcom OSS ako sú práve Mozilla Foundation, vývojári VLC, alebo SQLite.
Vývoj stále pokračuje a 1. marca uzrela svetlo sveta verzia s poradovým číslom 0.2.5. Využíva platformu Firefoxu, teda niektoré doplnky budú fungovať aj tu. Autori sa rozhodli že vytvoria Firefox medzi prehrávačmi. Hlavnými novinkami oproti ostatným prehrávačom je integrovaný web-browser takže popri počúvaní hudby môžete surfovať a naopak. No nie len to. Ak sa náhodou dostanete na stránku na ktorej sa nachádzajú mp3, okamžite sa vám otvorí web playlist a vy si ich môžete pohodlne prehrať ako by boli na vašom harddisku. Jednoducho si ich tiež stiahnete, poprípade ak ide o podcastovú stránku, tak si ju pridáte do mp3 rss čítačky. Program si vytvára web playlist, kde sa ukladajú všetky skladby ktoré “videl” na internete.
Songbird je multiplatformový, nainštalujete ho vo Windowse, v GNU/Linuxe aj v MacOS. A to ako v 32 tak aj v 64 bitovej architektúre! (za 64-bity majú u mňa vývojári plus
)
Vyzerá to byť na dobrý mp3 player. Len by som chcel pripomenúť, že je to verzia 0.2.5 (z dôrazom na tú nulu). A označenie “alpha”, poprípade “beta” nie je len módnym trendom. Program má _dosť_ bugov. napríklad: mini player sa nedá presúvať keď kliknete na nesprávne miesto (to správne je tak 5×5px veľké
, občas prestane prehrávať a vtedy pomôže len vypnutie a ešte jedna maličkosť pri prehrávaní mp3 s vbr (variabilný bitrate) sa počas prehrávania mení zobrazovaná dĺžka… Nevedel som sa vynačudovať, keď moja pesnička mala raz 9:06 potom zas 9:10 a ochvíľu už len 8:50…
December 24th, 2006 — Programovanie
Vianoce sa nám blížia a ťukajú na okno a preto nie je naškodu si popriať šťastné sivatky.. A to nie hociako ale hneď v štyroch jazykoch… (nie nebude medzi nimi slovenčina, čeština či iné “normálne” jazyky). Bude to v C, Pascal-e, FORTRAN-e a PHP.
Samozrejme že si poviete, že by sa to dalo aj vo viacerých jazykoch.. Veď ide len o modifikáciu textu v otrepanom “Hello World!”. Tentokrát jeden zdrojový kód bude robiť to isté vo všetkých spomenutých jazykoch…
Tu to je:
const a = ‘\”; void b()/*’; var b:string;{
c */ { /*
c
17 format(’Merry Christmas’)
write(6, 15)
stop
end
c */
char *a = “}begin b:=’{”; } int main () { /*’; writeln{*/
char cbuf[64]; sprintf(cbuf, “}(’Merry Christmas’) end. {”);
cbuf[29] = ‘\0′; printf(cbuf+3); return 0; }