Gusto mo bang ulitin ang mga nakagawiang operasyon nang paulit-ulit? Kaya hindi ko. Ngunit sa bawat oras sa SQL client kapag nagtatrabaho sa imbakan ng Rostelecom, kailangan kong irehistro nang manu-mano ang lahat ng mga pagsali sa pagitan ng mga talahanayan. At ito sa kabila ng katotohanan na sa 90% ng mga kaso ang mga patlang at kundisyon para sa pagsali sa mga talahanayan ay nag-tutugma mula sa query hanggang sa query! Tila ang anumang kliyente ng SQL ay may mga function ng auto-completion, ngunit para sa mga imbakan ay hindi ito palaging gumagana: bihira silang magsama ng natatanging pagpilit at dayuhang key upang mapabuti ang pagganap, at kung wala ito ay hindi malalaman ng programa kung paano nauugnay ang mga entity sa bawat isa. iba pa at kung ano ang magagawa nito para sa iyong inaalok.
Nang dumaan sa pagtanggi, galit, pakikipagtawaran, depresyon at papalapit na pagtanggap, nagpasya ako - bakit hindi subukang mag-autofill sa blackjack mismo at gawin ito sa tamang paraan? Ginagamit ko ang dbeaver client, nakasulat sa java, mayroon itong open source na bersyon ng komunidad. Ang isang simpleng plano ay tumanda:
- Maghanap ng mga klase sa source code na responsable para sa autocompletion
- I-redirect ang mga ito upang gumana sa panlabas na metadata at kumuha ng impormasyon tungkol sa mga pagsali mula doon
- ?
- PROFIT
Mabilis kong naisip ang unang punto - Nakahanap ako ng kahilingan sa tracker ng bug upang ayusin ang autofill at sa mga nauugnay na
Upang magtrabaho kasama si json nagpasya akong gamitin ang library
Sa huli, nagawa kong ayusin ang mga error sa build: Nirehistro ko ang library hindi sa pom.xml, ngunit sa manifest.mf manifest, ayon sa hinihingi ng OSGI, habang tinutukoy ito bilang import-package. Hindi ang pinakamagandang solusyon, ngunit ito ay gumagana. Pagkatapos ay lumitaw ang susunod na sorpresa. Kung nagde-develop ka sa Intellij Idea, hindi ka maaaring pumunta lang at simulan ang pag-debug ng iyong proyekto batay sa platform ng eclipse: ang isang walang karanasan na developer ay dapat magdusa nang hindi bababa sa isang analyst nang hindi nakumpleto ang query. Ang mga developer ng beaver mismo ay dumating upang iligtas, na nagpapahiwatig sa wiki ng lahat ng mga sayaw na may tamburin na kailangang gawin. Ang pinaka-nakakainis na bagay ay na kahit na matapos ang lahat ng mga squats na ito, ang proyekto ay hindi nais na ilunsad sa debug na may json library na konektado sa pamamagitan ng import-package (sa kabila ng katotohanan na matagumpay pa rin itong na-assemble sa tapos na produkto).
Sa oras na iyon, napagtanto ko na ang abala ng paggamit ng json para sa aking gawain - pagkatapos ng lahat, ang metadata ay dapat na manu-manong i-edit, at ang xml na format ay mas angkop para dito. Ang pangalawang argumento na pabor sa xml ay ang pagkakaroon ng lahat ng kinakailangang klase sa JDK, na naging posible upang ihinto ang pakikipaglaban sa isang panlabas na aklatan. Sa sobrang kasiyahan, inilipat ko ang lahat ng metadata mula sa json patungo sa xml at sinimulan kong i-edit ang autocomplete logic.
Halimbawa ng metadata
<?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>
Bilang resulta ako
Kapag ginawa ang mga pagbabago sa code, lumitaw ang tanong - sino ang pupunuin ang file ng metadata? Mayroong maraming mga entity sa repository, mahal na irehistro ang lahat ng mga koneksyon sa iyong sarili. Bilang resulta, nagpasya akong italaga ang gawaing ito sa aking mga kapwa analyst. Na-post ko ang metadata file sa svn, mula sa kung saan ang isang checkout ay ginawa sa lokal na direktoryo na may programa. Ang prinsipyo ay ito: may lumabas bang bagong entity sa repository? Ang isang analyst ay nagpasok ng mga posibleng pagsali sa file, gumawa ng mga pagbabago, ang iba ay nag-check out sa kanilang sarili at tamasahin ang gumaganang auto-completion: komunidad, akumulasyon ng kaalaman at lahat ng iyon. Nagsagawa ng workshop sa paggamit ng programa para sa mga kasamahan, nagsulat ng isang artikulo sa Confluence - ngayon ang kumpanya ay may isa pang maginhawang tool.
Ang pagtatrabaho sa tampok na ito ay nagbigay sa akin ng pag-unawa na hindi kailangang matakot na makipag-usap sa mga open source na proyekto - bilang isang patakaran, mayroon silang isang malinaw na arkitektura, at kahit na ang pangunahing kaalaman sa wika ay magiging sapat para sa mga eksperimento. At sa isang tiyak na halaga ng pagtitiyaga, maaalis mo pa ang mga kinasusuklaman na operasyon, na nakakatipid ng oras para sa mga bagong eksperimento.
Pinagmulan: www.habr.com