Vai jums patÄ«k atkÄrtot rutÄ«nas darbÄ«bas atkal un atkal? TÄpÄc man nav. Bet katru reizi SQL klientÄ, strÄdÄjot ar Rostelecom krÄtuvi, man bija manuÄli jÄreÄ£istrÄ visi savienojumi starp tabulÄm. Un tas neskatoties uz to, ka 90% gadÄ«jumu tabulu savienoÅ”anas lauki un nosacÄ«jumi sakrita no pieprasÄ«juma lÄ«dz pieprasÄ«jumam! Å Ä·iet, ka jebkuram SQL klientam ir automÄtiskÄs pabeigÅ”anas funkcijas, taÄu krÄtuvÄm tas ne vienmÄr darbojas: tie reti ietver unikÄlu ierobežojumu un ÄrÄjo atslÄgu, lai uzlabotu veiktspÄju, un bez tÄ programma nezinÄs, kÄ entÄ«tijas ir saistÄ«tas ar katru. citi un ko tas var sniegt jÅ«su labÄ.
PÄrdzÄ«vojis noliegumu, dusmas, kaulÄÅ”anos, depresiju un tuvojoties pieÅemÅ”anai, nolÄmu ā kÄpÄc gan paÅ”am nemÄÄ£inÄt ieviest automÄtisko aizpildÄ«Å”anu ar blekdžeku un nedarÄ«t to pareizi? Es izmantoju dbeaver klientu, kas rakstÄ«ts java, tam ir atvÄrtÄ koda kopienas versija. Ir nobriedis vienkÄrÅ”s plÄns:
- Atrodiet avota kodÄ klases, kas ir atbildÄ«gas par automÄtisko pabeigÅ”anu
- Novirziet tos darbam ar ÄrÄjiem metadatiem un iegÅ«stiet informÄciju par pievienoÅ”anos no turienes
- ??
- PEĻŠA
Pirmo punktu izdomÄju diezgan Ätri - kļūdu izsekotÄjÄ atradu lÅ«gumu pielÄgot automÄtisko aizpildÄ«Å”anu un saistÄ«tajÄ
Lai strÄdÄtu ar json, es nolÄmu izmantot bibliotÄku
BeigÄs man izdevÄs izlabot bÅ«vÄÅ”anas kļūdas: es reÄ£istrÄju bibliotÄku nevis pom.xml, bet manifest.mf manifestÄ, kÄ to prasa OSGI, vienlaikus norÄdot to kÄ import-package. Nav tas skaistÄkais risinÄjums, bet darbojas. Tad parÄdÄ«jÄs nÄkamais pÄrsteigums. Ja izstrÄdÄjat Intellij Idea, jÅ«s nevarat vienkÄrÅ”i sÄkt atkļūdot savu projektu, pamatojoties uz Eclipse platformu: nepieredzÄjuÅ”am izstrÄdÄtÄjam vajadzÄtu ciest ne mazÄk kÄ analÄ«tiÄ·im bez vaicÄjuma pabeigÅ”anas. PaÅ”i bebru izstrÄdÄtÄji nÄca palÄ«gÄ, viki norÄdot visas dejas ar tamburÄ«nu, kas jÄizpilda. Pats kaitinoÅ”Äkais ir tas, ka pat pÄc visiem Å”iem squats projekts nevÄlÄjÄs tikt palaists atkļūdoÅ”anÄ ar json bibliotÄku, kas savienota ar importa pakotni (neskatoties uz to, ka tÄ joprojÄm tika veiksmÄ«gi samontÄta gatavajÄ produktÄ).
LÄ«dz tam laikam es jau biju sapratis neÄrtÄ«bas, ko rada json izmantoÅ”ana savam uzdevumam - galu galÄ metadati bija jÄrediÄ£Ä manuÄli, un xml formÄts tam ir labÄk piemÄrots. Otrs arguments par labu xml bija visu nepiecieÅ”amo klaÅ”u klÄtbÅ«tne JDK, kas ļÄva pÄrtraukt cÄ«Åu ar ÄrÄju bibliotÄku. Ar lielu prieku pÄrsÅ«tÄ«ju visus metadatus no json uz xml un sÄku rediÄ£Ät automÄtiskÄs pabeigÅ”anas loÄ£iku.
Metadatu piemÄrs
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tableRelations>
<tableRelation>
<leftTable>dim_account</leftTable>
<rightTable>dim_partner</rightTable>
<joinColumnPair leftColumn="partner_key" rightColumn="partner_key"/>
<joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
</tableRelation>
<tableRelation>
<leftTable>dim_account</leftTable>
<rightTable>dim_branch</rightTable>
<joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
<joinColumnPair leftColumn="branch_key" rightColumn="branch_key"/>
</tableRelation>
</tableRelations>
RezultÄtÄ es
Kad tika veiktas izmaiÅas kodÄ, radÄs jautÄjums ā kurÅ” aizpildÄ«s failu ar metadatiem? RepozitorijÄ ir daudz entÄ«tiju, ir dÄrgi paÅ”am reÄ£istrÄt visus savienojumus. RezultÄtÄ es nolÄmu uzticÄt Å”o uzdevumu saviem kolÄÄ£iem analÄ«tiÄ·iem. Es ievietoju metadatu failu svn, no kurienes tiek veikta izrakstÄ«Å”anÄs uz vietÄjo direktoriju ar programmu. Princips ir Å”Äds: vai repozitorijÄ ir parÄdÄ«jusies jauna entÄ«tija? Viens analÄ«tiÄ·is failÄ ievada iespÄjamos savienojumus, veic izmaiÅas, pÄrÄjie pÄrbauda paÅ”i un izbauda darba automÄtisko pabeigÅ”anu: kopienu, zinÄÅ”anu uzkrÄÅ”anu un visu to. NovadÄ«ja seminÄru par programmas lietoÅ”anu kolÄÄ£iem, uzrakstÄ«ja rakstu Confluence - tagad uzÅÄmumam ir vÄl viens ÄrtÄks rÄ«ks.
StrÄdÄjot pie Ŕīs funkcijas, es sapratu, ka nav jÄbaidÄs Ä·erties pie atvÄrtÄ pirmkoda projektiem ā tiem parasti ir skaidra arhitektÅ«ra, un eksperimentiem pietiks pat valodas pamatzinÄÅ”anÄm. Un ar zinÄmu neatlaidÄ«bu jÅ«s pat varÄsit atbrÄ«voties no ienÄ«stÄm ikdienas operÄcijÄm, ietaupot laiku jauniem eksperimentiem.
Avots: www.habr.com