Kuidas lÔpetada sama asja tegemine

Kas sa armastad rutiinseid toiminguid jĂ€rjestikku kordama? Mina kindlasti mitte. Kuid iga kord, kui töötasin Rostelecomi andmebaasis SQL-kliendis, pidin kirjutama kĂ”ik tabelite ĂŒhendused kĂ€sitsi. Ja sellegipoolest, 90% juhtudest olid tabelite ĂŒhendamise vĂ€ljad ja tingimused iga pĂ€ringu puhul samad! Tundub, et igal SQL-kliendil on automaatse tĂ€itmise funktsioonid, kuid andmebaasides ei tööta see alati: seal on harva unikaalsed piirangud ja vĂ€lisvĂ”tmed tulemuslikkuse suurendamiseks, ning ilma nendeta ei tea programm, kuidas entiteedid omavahel seotud on ja mida ta sulle pakkuda saab.

Kuidas lÔpetada sama asja tegemine

PĂ€rast eitamist, viha, kauplemist, depressiooni ja lĂ€henemist aktsepteerimisele otsustasin — miks mitte proovida automatiseeritud tĂ€itmist mustade kaartide ja kĂ”igi asjadega? Kasutan Java-s kirjutatud dbeaveri klienti, millel on avatud lĂ€htekoodiga kogukonna versioon. Olin vĂ€lja mĂ”elnud lihtsa plaani:

  1. Leida avatud koodi klassid, mis vastutavad automaatse tÀitmise eest
  2. Suunata need töötama vĂ€liste metaandmete kallal ja tĂ”mmata sealt ĂŒhenduste kohta teavet
  3. ??????
  4. PROFIT

Esimese punktiga sain piisavalt kiiresti hakkama — leidsin veaaruandest soovi automaatse tĂ€itmise kohandamiseks ja seotud commit'ist avastasin klassi SQLCompletionAnalyzer. Vaatasin koodi — tĂ€pselt see, mida vajan. JĂ€i ĂŒle see ĂŒmber kirjutada, et kĂ”ik töötaks. Ootasin vaba Ă”htut ja hakkasin teostust lĂ€bi mĂ”tlema. Tabelite seosereeglid (metaandmed) otsustasin viia json-formaadis. Mul ei olnud selle formaadi suhtes praktilisi kogemusi ja praegune ĂŒlesanne tundus vĂ”imalus selle puudujÀÀgi parandamiseks.

JSON-i töötlemiseks otsustasin kasutada teeki json-simple Googlest. Siin hakkasid ĂŒllatused pihta. Kuidas selgus, on dbeaver, nagu tĂ”eline rakendus, kirjutatud Eclipse'i platvormil kasutades OSGi raamistikku. Kogemustega arendajatele pakub see mugavust sĂ”ltuvuste haldamisel, ent minu jaoks nĂ€is see rohkem tumeda maagia sarnane, millega ma kindlasti ei olnud valmis tegelema: tavaliselt kirjutan vajalike klasside impordi json-simple teegist redigeeritava klassi pealkirja, mÀÀran selle pom.xml-is, kuid seejĂ€rel keeldub projekt normaalselt kogunemast ja kukub vigadega kokku.

Kohandmine ehitusvigu lĂ”puks selgus: ma registreerisin teegi mitte pom.xml-is, vaid manifest.mf-is, nagu nĂ”uab OSGI, mĂ€rkides selle import-package'ina. See pole kĂ”ige kaunim lahendus, aga töötab. Siin ilmus jĂ€rgmine ĂŒllatus. Kui sa teed arendust intellij idea's, ei saa lihtsalt niisama vĂ”tta ja kĂ€ivitada oma projekti hÀÀlestust, mis pĂ”hineb eclipse'i platvormil: kogenematu arendaja peab kannatama mitte vĂ€hem kui analĂŒĂŒtik ilma automaatse pĂ€ringu tĂ€iendamiseta. Appi tulid isegi bobri arendajad, kes on wikis vĂ€lja toonud kĂ”ik nende tantsud, mida on vaja teha. KĂ”ige kurvem on see, et isegi pĂ€rast kĂ”iki neid hĂŒppeid ei soovinud projekt kĂ€ivituda hÀÀlestuses import-package kaudu laaditud json teegiga (kuigi valmis toode kogunes endiselt edukalt).

Sel hetkel olin juba tundnud ebamugavust json'i kasutamisest minu ĂŒlesande jaoks — lĂ”puks pidi metaandmeid kĂ€sitsi redigeerima, ja selleks sobib xml formaat paremini. Teiseks argumendiks xml kasuks oli vajalikud klassid, mis olid olemas JDK-s, mis vĂ”imaldas lĂ”petada vĂ€lise teegi vĂ”itluse. Suure rÔÔmuga kolisin kĂ”ik metaandmed json'ist xml'i ja hakkasin autofill loogika redigeerimisega tegelema.

Metaandmete nÀide

dim_account
        dim_partner
        
        
    
    
        dim_account
        dim_branch

KokkuvĂ”ttes ma sain muudatused tehtud SQLUtils ja SQLCompletionAnalyzer klassidesse. Idee on jĂ€rgmine: kui programm ei suutnud leida sobivaid autofill ettepanekuid aluselogi jĂ€rgi, kontrollib see vĂ”imalike ĂŒhenduste olemasolu vĂ€lises xml failis. Failis hoitakse tabelite paare koos vĂ€lja nimedega, mille kaudu need tabelid tuleb seostada. Tehniliste kuupĂ€evade piirangud registreerimise eff_dttm ja exp_dttm ning loogilise kustutamise flaga deleted_ind on seejuures vaikimisi seadistatud.

Kui koodimuudatused on tehtud, tekkis kĂŒsimus - kes hakkab tĂ€itma metadata faili? Andmehoidlas on palju objekte ja kĂ”iki seoseid ise ĂŒles kirjutada on tĂŒlikas. LĂ”puks otsustasin selle ĂŒlesande oma kolleegidele analĂŒĂŒtikutele anda. Metaandmete faili panin svn-i, kust tehakse checkout kohalikku kausta programmiga. PĂ”himĂ”te on selline: kui andmehoidlas tekib uus objekt? Üks analĂŒĂŒtik lisab faili vĂ”imalikud seosed, kommitab muudatused, teised teevad checkout enda juurde ja naudivad töötavat automaatset tĂ€itmist: kogukond, teadmiste kogumine ja kĂ”ik selline. Kolleegidele tegin töötoa programmi kasutamiseks, kirjutasin artikli Confluence'i - nĂŒĂŒd on firmas ĂŒks mugavam tööriist rohkem.

Töö selle funktsiooni kallal andis mulle aru, et ei tasu karta avatud lÀhtekoodiga projektides nurgataguste kaevamist - tavaliselt on neil arusaadav arhitektuur ja isegi baaskeele teadmised on katsetamiseks piisavad. Ja teatud mÀÀral visadust kasutades saab lahti unustatud rutiinsetest operatsioonidest, sÀÀstes aega uute katsetuste jaoks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster