Archív

Archív pre kategóriu ‘Programovanie / Grafika’

Nástroj od IBM ktorý uľahčuje vývoj JavaScript

November 10th, 2009 admin Žiadne komentáre

Technológia EGL založená na Eclipse ponúka vlastný modelovací jazyk, ktorý má pomôcť vývojárom vytvárať webové aplikácie pre web 2.0

V boji proti súperovi Microsoft a Adobe Systems, IBM ponúka bezplatný nástroj na zjednodušenie vývoja webových aplikácií založených na JavaScript, ktorý využíva modelovaní jazyk od IBM.

EGL CE (Enterprise Generation jazyk Community Edition) od Big Blue, vydaný v utorok, je nástroj založený na Eclipse, zameraný na budovanie Web 2.0 aplikácií. Využíva modelovací jazyk IBM EGL. Vývojári, ktorí programujú v PHP, Ruby on Rails, Groovy, JavaScript, HTML môžu využiť nástroj EGL na programovanie, testovanie a ladenie Web 2.0 aplikácií pomocou jedného jazyka.

Manažér produktového radu EGL spoločnosti IBM Will Smythe v prezentácii zverejnenej na webovej stránke EGL, tvrdí že EGL sa nesnaží nahradiť HTML alebo JavaScript, na rozdiel od technológií Adobe Flash/Flex a Microsoft Silverlight.

Smythe tiež povedal: “EGL je vyššia úroveň programovacieho jazyka určená pre rozvoj silných moderných aplikácií. Cieľom je ochrániť vývojárov od zložitosti, ktorá je spojená s aplikáciami Web 2.0.”

EGL CE je určená pre každého, kto chce vyvíjať RIA (Rich Internet Applications) rýchlo a efektívne. Vzhľadom k tomu, EGL syntax je jednoduchá pre ľudí a je možné ju integrovať do rôznych obchodných úrovní. Vývojári z rôznych oblastí (Java, PHP, Cobol, atď) zistia, že sú veľmi produktívni práve s EGL.

EGL CE umožňuje vyvíjať užívateľské rozhranie, založené na JavaScript, bez nutnosti písať JavaScript. Tiež sa hodí na tvorbu webových služieb, založených na jazyku Java, bez nutnosti písať kód v tomto jazyku. Vývojári môžu vytvárať zložité webové aplikácie bez nutnosti programovania v mnohých rôznych jazykoch a zlepovať jednotlivé kusy dohromady do konečného výrobku. Môžu tak tráviť menej času s nasadením a viac času programovaním.

EGL CE si môžete stiahnuť kliknutím sem.

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
Categories: JavaScript Tags:

JavaScript nahradí Flash

November 10th, 2009 admin 2 komentárov

JavaScript, v súčasnosti všadeprítomný skriptovací jazyk, populárny vo webovom vývoji klientskej časti, je stále rýchlejší a pravdepodobne sa bude používať namiesto technológie Adobe Flash. Brendan Eich, tvorca JavaScript, povedal pre magazín InfoWorld: “Poskytovatelia prehliadačov stále vyvíjajú rýchlejšie implementácie, takže JavaScript získava väčšiu rýchlosť, a vďaka tomu sa aj viac používa,” povedal Eich, keď sa opýtal, čo vidí v budúcnosti jazyka JavaScript. “V súčasnosti sa už používa pri vývoji 3D webových aplikácií.

Predpokladám, že stále viac sa budeme stretávať s jazykom JavaScript. Uvidíme, 3D hry, inovácie, ktoré si ani nedokážeme predstaviť. Všetky činnosti, ktoré je možné vykonávať vo Flashi bude možné urobiť aj v prehliadači pomocou JavaScript“. Rozšíreniu týchto vylepšení jazyka JavaScript by pomohlo keby sa Microsoft rozhodol poskytovať podporu vo svojom prehliadači Internet Explorer.

Zmenilo sa aj vnímanie jazyka JavaScript, už to nieje brat jazyka Java, ktorý bol považovaný za skutočný programovací jazyk, Eich povedal. “Ľudia možno nebudú súhlasiť, ale myslím si, že Java je už mŕtva na strane webového klienta (napr. applet), a JavaScript je všade“.

Rozsiahle zmeny prinesie štandard ECMAScript 5, ktorý bude uverejnený budúci mesiac, povedal Eich. Štandard je v štádiu rokovaní s ECMA. Predtým nazývaná ECMAScript 3.1, verzia 5 bude zahŕňať funkcie, ako je meta-programovanie a tvrdnutie objektov (hardering objects). “Budete si môcť vytvoriť objekty, s ktorými nebude možné manipulovať,” povedal Eich. “Tiež bude možné kontrolovať zmeny v objektoch.”

Ukážka:

var obj = {};
obj.name = "John";
print( obj.name );
// John
print( Object.isExtensible( obj ) );
// true
Object.preventExtensions( obj );
obj.url = "http://ejohn.org/"; // Exception in strict mode
print( Object.isExtensible( obj ) );
// false

Rokovania o upgrade na ECMAScript boli blokované v minulých rokoch z dôvodu technickej a politické nezhody, čo viedlo k ďalšej práci na ECMAScript 3.1 a rozvoju bojového plánu na zlepšenie štandardu, známeho ako Harmony.

Ďalšie vydanie ECMAScript založeného na Harmony sa očakáva o dva a pol roka. Eich povedal: “V určitom okamihu, môžu Java scripty dosiahnuť stav, kedy už nebude potrebné vylepšovať. Ak urobíme svojú prácu, dostaneme sa do situácie, keď JavaScript nebude potrebné meniť.

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
Categories: JavaScript Tags:

Doctrine (ORM pre PHP)

Október 25th, 2009 admin Žiadne komentáre

Doctrine (Doktrína) je objektovo relačný mapper (ORM) pre PHP 5.2.3+, ktorá je umiestnená na databázovej vrstve (DBAL). Jedným z jej hlavných funkcií je možnosť písať databázové dotazy pomocou vlastného objektovo orientovaného SQL dialektu tzv. Doctrine Query Language (DQL), inšpirovaný známym Hibernate HQL. To poskytuje vývojárom výkonnú alternatívu k SQL, ktorá udržiava pružnosť, bez nutnosti zbytočných duplicít kódu.

Čo je vlastne ORM?

Objektovo relačné mapovanie (ORM) je technika používaná v programovacích jazykoch, ktorá rieši rôzne nekompatibilné typy dát v relačných databázach. To v podstate umožňuje, aby sme mali “virtuálnu objektovú databázu”, ktorá môže byť použitá z daného programovacieho jazyka. Existuje veľa voľných i komerčných balíkov, ktoré to ponúkajú a niektorí vývojári sa rozhodli si vytvoriť vlastné ORM.

Inštalácia doktríny

Inštalácia doktríny cez SVN je veľmi jednoduchá. V podstate nejde o inštaláciu ale o jednoduché stiahnutie. Stačí si teda stiahnuť akúkoľvek verziu doktríny z SVN servera: http://svn.doctrine-project.org

Ak chcete vyskúšať konkrétnu verziu, môžete použiť nasledujúci príkaz z terminálu:

svn co http://svn.doctrine-project.org/branches/1.2 .

Implementácia / inicializácia

Najskôr je samozrejme nutné si v php doktrínu includnúť – nastaviť cesty pomocou funkcie set_include_path(). Includuje sa nadradený adresár adresáru Doctrine (mám na mysli adresár 1.2/lib/Doctrine/). Napríklad:

/* V adresari $appFolder/library/ sa nachadza adresar Doctrine a subor Doctrine.php */
set_include_path(get_include_path()
  .PATH_SEPARATOR ."$appFolder/library/");

No a potom je potrebne doktrínu inicializovať. Predovšetkým je potrebné knižnici povedať kam sa budeme napájať. Napríklad:

$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
$manager->setAttribute(Doctrine::ATTR_AUTO_FREE_QUERY_OBJECTS, true);
 
/* tvorba pripojenia do db */
$connection = $manager->connection(
  $config->databaze->stroj .'://'
  .$config->databaze->username .':'
  .$config->databaze->password  .'@'
  .$config->databaze->host .'/'
  .$config->databaze->dbname,
  'doctrine'
);
$connection->setCharset('utf8');
$connection->setAttribute(Doctrine::ATTR_QUOTE_IDENTIFIER, true);
$connection->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);
$connection->setAttribute('portability', Doctrine::PORTABILITY_ALL);
$connection->getDbh()->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

Vytvorenie modelov

Aby ste mohli s databázou v doktríne pracovať ostáva nám urobiť ďalší dôležitý krok. Ako to už bolo spomenuté v odseku ORM, doktrína je vlastne vrstva ktorá robí program nezávislý od konkrétneho databázového stroja. Je jedno teda, či je to Postgresql, MySQL či Oracle. Je teda potrebné vytvoriť akúsi reprezentáciu databázy. No a v doktríne s databázou manipulujem prostredníctvom modelov – tried, odvodené od Doctrine_Record. Aby sme tieto modely nemuseli vytvárať ručne, Doctrine nám ponúka metódu, ktorá nám ich vygeneruje automaticky z databázy. Samozrejme odporúčam si tieto modely následne upraviť a skrášliť a napríklad namiesto uzivatelSkupinaId používať skupina_uzivatela_id a pod. A teraz samotný kód pre vygenerovanie modelov:

Doctrine::generateModelsFromDb('models', array('doctrine'), array('generateTableClasses' => true));

Metóda GenerateModelsFromDb vyžaduje len jeden parameter, a to je importný adresár (adresár, kde budú uložené vygenerované súbory). Druhým argumentom je pole mien databázových spojení pre ktoré sa vytvoria modely, a tretím argumentom sú jednotlivé predvoľby pre tvorbu modelov.
A teraz ukážka modelu užívateľa:

abstract class BaseUzivatel extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('tbl_Uzivatel');
        $this->hasColumn('uzivatelId as id', 'integer', 6, array('type' => 'integer', 'primary' => true, 'autoincrement' => true, 'length' => '6'));
        $this->hasColumn('uzivatelMeno as uzivatelske_meno', 'string', 32, array('type' => 'string', 'default' => '', 'notnull' => true, 'notblank' => true, 'length' => '32'));
        $this->hasColumn('uzivatelHeslo as heslo', 'string', 255, array('type' => 'string', 'default' => '', 'notnull' => true, 'notblank' => true, 'length' => '255'));
        $this->hasColumn('uzivatelSkupinaId as skupina_uzivatela_id', 'integer', 5, array('type' => 'integer', 'default' => '', 'notnull' => true, 'length' => '5'));
        $this->hasColumn('uzivatelZmazany as zmazany', 'tinyint', 1, array('type' => 'tinyint', 'default' => '0', 'notnull' => true, 'length' => '1'));
        $this->hasColumn('rolaId as rola_id', 'integer', 2, array('type' => 'integer', 'default' => '1', 'notnull' => true, 'length' => '2'));
    }
}
class Uzivatel extends BaseUzivatel
{
}

Použitie

No a teraz poďme k nejakému príkladu. Budeme pritom pužívať vyššie uvedený model Uzivatel

Hľadám užívateľa (SELECT)

Jendoducho chceme nájsť užívateľa podľa jeho mena. A tu je kód:

$uzivatelia = Doctrine_Query::create()
     ->from('Uzivatel')
     ->where('uzivatelske_jmeno = ?', $uzivatelske_jmeno)
     ->execute();
foreach ($uzivatelia as $uzivatel) {
     if ($uzivatel instanceof Uzivatel) {
          echo 'Nasli sme uzivatela s menom '.$uzivatel->uzivatelske_meno;
     }
}

Jednoduché a prehľadné však? Lenže ono to ide ešte jednoduchšie (!):

/* Tento kod vrati prveho najdeneho uzivatela s danym menom */
$uzivatel = Doctrine::getTable('Uzivatel')
     ->findByuzivatelske_jmeno($uzivatelske_jmeno);
     ->getFirst();

Vytvorenie nového užívateľa (INSERT)

$uzivatel = new Uzivatel();
$uzivatel->uzivatelske_meno    = $uzivatelske_meno;
$uzivatel->heslo                = $heslo;
$uzivatel->skupina_uzivatela_id = 8;
$uzivatel->rola_id              = 1;
$uzivatel->save();
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
Categories: PHP Tags: