Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Amasad-Github - DOMQL

U poslednje vreme sve više i više postaje jasno da je web razvoj, zaista, osnovno ljudsko pravo. I to bi trebalo da bude dostupno svakom investitoru u industriji. jQuery je odigrao svoju ulogu time što web razvoj učinio lakšim za dizajnere, CoffeeScript za Rubyists i Pythonistas, Dart za Java developere, ClojureScript za Lispers, itd.

Ali šta je sa DBA-ovima? jesu li oni jednaki čoveku? Treba li da budu osuđeni da pate učeći sve o JS i DOM?

DOMQL je ovde da bi web razvoj predstavio DBA-ovima koji traže promenu karijere (ili pate od oštećenja mozga). Sa ciljem da se osećaju kao kod kuće ™..

DOMQL nije punopravni programski jezik, ali je mali DSL inspirisan SQL-om ciljajući na ublažavanje DOM manipulacije za DBA-ove. ublažavanje DOM manipulacije za DBA-ove. Brzi primeri da se osećate toplo i maglovito (kao kod kuće ™):

SELECT DIV FROM BODY WHERE ID='container'
UPDATE (SELECT H1 FROM (SELECT DIV FROM BODY).ALL) SET CLASS='active' WHERE CLASS='disabled'
DELETE A FROM BODY.ALL WHERE HREF LIKE "google.com" AND ROWNUM BETWEEN 5 AND 10
Imao si me kod SELECT, gde je prokleti link za preuzimanje? Preuzmite

Brzina

Baš kao u transakcionom DBMS-u, možete pisati upite koji su nenormalno spori.

DOMQL injekcija

Dao sam sve od sebe da dovedem stvari koje najviše volite iz SQL-a i mislio sam da su Injekcije ono što mora da se ima, da se osećate kao kod kuće ™.
Dodati/ukloniti karakteristike, da se omoguće injekcije:

  1. Ubaci `--` bilo gde u kod, da se komentariše ostatak upita.
  2. Slaganje upita. Možete da otkažete sve upite sa `;` i započnete nove.
  3. Ništa nije cenzurisano.
DOMQL("SELECT * FROM BODY WHERE CLASS='%s' AND ROWNUM > 2", "';DROP ELEMENT BODY;-- pwned! \o/")

Ugrađeni upiti

Baš kao u TODO app primeru iznad, možete da ugradite vaše upite unutar elemenata skripte sa type="text/domql" i ovi upiti će se pokrenuti čim se stranica učita. Sledeće bi dodalo 2 div-a na body element sa ID-ovima zaglavlja i kontejnera respektivno:

<script type="text/domql">
  INSERT INTO BODY VALUES (
    CREATE ELEMENT DIV (
      id 'header'
    ),
    CREATE ELEMENT DIV (
      id 'container'
    )
  )
</script>

Alternativno, možete da ugradite upite kao templejte pomoću text/domql-tmpl tipa skripte. Možete misliti o njima kao o uskladištenim procedurama. Templejti će tada biti dostupni sa bilo kog mesta u vašoj aplikaciji koristeći DOMQL.tmpl('tmpl-id'). Funkcija, takođe, može doneti više argumenata u printf()-na ovaj način.

<script type="text/domql-tmpl" id="hello-user">
  CREATE ELEMENT SPAN (
    class 'greetings',
    innerText 'Hello %s'
  )
</script>

DOMQL od JavaScript-a

DOMQL.tmpl()

Izvršava ugrađene templejte upita. DOMQL.tmpl('hello-user', 'Amjad')

DOMQL()

Da biste koristili DOMQL u JavaScript-u možete samo pozvatiDOMQL() funkciju donošenja upita i bilo koji broj argumenata (kao DOMQL.tmpl).

DOMQL("UPDATE BODY SET style ='background:%s'", "red");

DOMQL.ready()

Uzima JS funkciju i izvršava je kada je DOM spreman za manipulaciju.

Upiti

SELECT

SELECT [Opciona Funkcija ex: COUNT(][html tagovi razdvojeni zarezom] FROM [jedan html tag ili upit izneđu zagrada] praćen opcionom where klauzulom:
WHERE [Izraz: HTML atribut ili ROWNUM [Operater: =/>/</<>/IN/BETWEEN Value(s)]] AND/OR [Drugi izraz]...

UPDATE

UPDATE [ jedan html tag ili upit između zagrada] SET [jedan ili višestruki ključ = vrednost razdvojena zarezima] praćen opcionom where klauzulom.

DELETE

DELETE [[HTML tagovi odvojeni zarezima] FROM [jedan html tag ili upit između zagrada ] praćen opcionom where klauzulom.

INSERT

INSERT INTO [jedan html tag ili upit između zagrada] VALUES ( [jedan ili više upita razdvojeni zarezima] )

CREATE

CREATE ELEMENT [jedan html tag] ( [nula, jedan ili više ključnih vrednosti razdvojenih zarezima] )

DROP

DROP ELEMENT [jedan html tag ili upit između zagrada]

Published (Last edited): 13-03-2013 , source: http://amasad.github.com/DOMQL/