DOMQL


Իսկ ի՝նչ կարելի է ասել DBA-երի մասին : Արդյո՝ք նրանք մարդ չեն. Մ՝իթե նրանք դատապարտված են տառապել սովորելով JS եւ Dom:

DOMQL այստեղ է, որպեսզի DBA-երին, ովքեր փոփոխություն են փնտրում կարիերայի մեջ (կամ տառապում են ուղեղների գերլարվածությունից), ծանոթացնի վեբ զարգացման հնարավորությունների հետ, որպեսզի նրանք էլ ԶԳԱՆ ԻՐեՆՑ ԻՆՉՊԵՍ ՏԱՆԸ
Feel Right At Home™.

DOMQL-ը լիարժեք ծրագրավորման լեզու չէ , բայց մի փոքր DSL է, ոգեշնչված SQL-ով, եւ նպատակ ունի թեթեւացնել DOM գործողությունները DBA –նրի համար: Արագ օրինակներ, եվ դուք ձեզ կզգաք տաքուկ եւ թեթեվ (Feel Right At Home™):

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

Դուք ինձ տեղադրել էիք SELECT –ի մեջ, եվ ո՝ւր է այդ անիծված ներբերնման հղումը:Download

Speed

Ճիշտ այնպես, ինչպես գործարքներ վարող DBMS -երը, դուք կարող եք հարցումներ գրել , որոնք ահավոր դանդաղ են:

DOMQL Injection

Ես փորձեցի անել լավագույնս, որպեսզի բերեմ ձեր սիրած նյութը SQL-ից, եւ ես մտածեցի, որ ներարկումները հենց այն են, ինչ պետք են ձեզ ԻՆՉՊԵՍ ՏԱՆԸ ԶԳԱԼՈՒ ՀԱՄԱՐ Feel Right At Home™.
Ավելացված| հերացված (added/removed ) նշանները ներարկումները դարձնում են հնարավոր:

  1. Տեղադրեք ` —` ցանկացած տեղ կոդի մեջ մնացած հարցումը մեկնաբանելու համար :
  2. Տեղադրվող հարցումներ: Դուք կարող եք դադարեցնել ցանկացած հարցում ` + ` միջոցով եւ սկսել նորը
  3. Ոչինչ չի մաքրված:

DOMQL("SELECT * FROM BODY WHERE CLASS='%s' AND ROWNUM > 2", "';DROP ELEMENT BODY;-- pwned! \o/")

Ներդրված հարցումներ

Ճիշտ այնպես, ինչպես որ վերը նշված TODO ծրագիրի օրինակում, դուք կարող եք տեղադրել ձեր հարցումները script տարրի ներսում type="text/domql"
միջոցով , եւ այդ հարցումները կառաջադրվեն, հենց որ այդ էջը բացվի : Այնուհետեվ պետք է ավելացնել 2 div body տարրի վրա id header-ի եւ container-ի միջոցով համապատասխանաբար ::

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

Կարելի է նաեւ հարցումները տեղադրել, որպես ձեւանմուշներ օգտագործելով text/domql-tmpl script տեսակը : Դուք կարող եք համարել դրանք պահեստավորված ընթացակարգեր: Այնուհետեվ այդ շաբլոնները հասանելի կլինեն ցանկացած վայրից ձեր ծրագրի մեջ, երբ օգտագործեք DOMQL.tmpl('tmpl-id')printf()-ish way.

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

DOMQL from JavaScript

DOMQL.tmpl()

Իրականացնում է ներդրված (embedded) հարցման ձեւանմուշ DOMQL.tmpl('hello-user', 'Amjad')

DOMQL()

DOMQL-ը JavaScript-ում կիրարելու համար, դուք կարող եք պարզապես օգտագործել DOMQL()DOMQL.tmpl).

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

DOMQL.ready()

Վերցնում է մի JS գործարույթ եւ իրականացնում է այն, երբ DOM-ը պատրաստ է գործուղություններ կատարել

Հարցումներ

SELECT

SELECT [լրացուցիչ ֆունկցիա COUNT(][ HTML պիտակները(tags) բաժանված ստորակետով( comma)] FROM [մեկ html պիտակ կամ հարցում փակագծերի միջեւ(parentheses)] որին հաջորդում է ընտրովի, որտեղ դրույթը (where clause)
WHERE [արտահայտություն. HTML հատկանիշ կամ ROWNUM [օպերատոր. =/>/</<>/IN/BETWEEN արժեք (ներ )]] AND/OR [Այլ արտահայտություն]…

UPDATE

UPDATE [մեկ HTML պիտակ(tag) կամ հարցում(Query) փակագծերի միջեւ] SET [եզակի կամ բազմակի բանալի = արժեքը առանձնացված է ստորակետով] դրան հաջորդում է ընտրովի որտեղ դրույթը

DELETE

DELETE [html պիտակները առանձնացված են ստորակետներով] FROM [մեկ html պիտակ կամ հարցում փակագծերի միջեւ] դրան հաջորդում է ընտրովի որտեղ դրույթը.

INSERT

INSERT INTO [մեկ HTML պիտակ կամ հարցում փակագծերի միջեւ] VALUES ( [Մեկ հարցում կամ բազմակի հարցումներ առանձնացված ստորակետներով] )

CREATE

CREATE ELEMENT [մի HTML պիտակ] ( [զրոյական, մեկ կամ բազմակի բանալիների արժեքը առանձնացված ստորակետներով] )

DROP

DROP ELEMENT [մեկ HTML պիտակ կամ հարցում փակագծերի միջեւ]

ՄԻՈՒԹՅՈՒՆՆԵՐԸ ՇՈՒՏՈՎ ԳԱԼԻՍ ԵՆ…

source: http://amasad.github.io/DOMQL/