ተመሳሳይ ነገር ማድረግ እንዴት ማቆም እንደሚቻል

መደበኛ ስራዎችን ደጋግመው መድገም ይፈልጋሉ? ስለዚህ አላደርግም። ነገር ግን በ SQL ደንበኛ ውስጥ ከ Rostelecom ማከማቻ ጋር በሚሰሩበት ጊዜ ሁሉ በጠረጴዛዎች መካከል ያሉትን ሁሉንም መጋጠሚያዎች በእጅ መመዝገብ ነበረብኝ. እና ይህ ምንም እንኳን በ 90% ከሚሆኑት ጉዳዮች ውስጥ ጠረጴዛዎችን ለመቀላቀል መስኮች እና ሁኔታዎች ከመጠየቅ ጥያቄ ጋር የተገናኙ ናቸው! ማንኛውም የ SQL ደንበኛ በራስ-ማጠናቀቂያ ተግባራት ያለው ይመስላል, ነገር ግን ለማከማቻዎች ሁልጊዜ አይሰራም: አፈፃፀሙን ለማሻሻል ልዩ ገደቦችን እና የውጭ ቁልፍን እምብዛም አያካትቱም, እና ያለዚህ ፕሮግራሙ አካላት ከእያንዳንዱ ጋር እንዴት እንደሚዛመዱ አያውቅም. ሌላ እና ለእርስዎ የሚያቀርበውን ነገር.

ተመሳሳይ ነገር ማድረግ እንዴት ማቆም እንደሚቻል

ክህደትን፣ ቁጣን፣ ድርድርን፣ የመንፈስ ጭንቀትንና ተቀባይነትን እየተቃረበ ካለፍኩ በኋላ ወሰንኩኝ - ለምን ራሴን blackjack ጋር አውቶሙላን ለመተግበር እና በትክክለኛው መንገድ አላደርገውም? በጃቫ የተፃፈውን dbever ደንበኛ እጠቀማለሁ፣ ክፍት ምንጭ የማህበረሰብ ስሪት አለው። ቀላል እቅድ ደርቋል፡-

  1. ለራስ ማጠናቀቅ ኃላፊነት ያለባቸውን ክፍሎች በምንጭ ኮድ ውስጥ ያግኙ
  2. ከውጫዊ ሜታዳታ ጋር እንዲሰሩ ያዟቸው እና ስለ መጋጠሚያዎች መረጃ ከዚያ ይጎትቱ
  3. ??????
  4. ትርፍ

የመጀመሪያውን ነጥብ በፍጥነት አውቄያለሁ - በራስ-ሙላ እና በተዛማጅነት ለማስተካከል በ bug tracker ውስጥ ጥያቄ አገኘሁ መፈጸም የ SQLCCompletionAnalyzer ክፍልን አግኝቷል። ኮዱን ተመለከትኩኝ እና የሚያስፈልገኝ ነው። ሁሉም ነገር እንዲሰራ እንደገና መፃፍ ብቻ ይቀራል። ነፃ ምሽት ጠብቄአለሁ እና በአተገባበሩ ላይ ማሰብ ጀመርኩ. በ json ውስጥ የሠንጠረዥ አገናኝ ደንቦችን (ሜታዳታ) ለመጻፍ ወሰንኩ. ከዚህ ቅርፀት ጋር በመስራት ምንም አይነት ተግባራዊ ልምድ አልነበረኝም እና አሁን ያለው ተግባር ይህንን ስህተት ለማስተካከል እንደ እድል ሆኖ ታይቷል.

ከ json ጋር ለመስራት ቤተ መፃህፍቱን ለመጠቀም ወሰንኩ። json-ቀላል ከ Google. ድንቆች የጀመሩት እዚህ ነው። እንደ ተለወጠ ፣ dbever ፣ እንደ እውነተኛ መተግበሪያ ፣ የ OSGi ማዕቀፍን በመጠቀም በ Eclipse መድረክ ላይ ተጽፎ ነበር። ልምድ ላላቸው ገንቢዎች ይህ ነገር ጥገኞችን ለማስተዳደር ምቹ ያደርገዋል ፣ ግን ለእኔ የበለጠ እንደ ጨለማ አስማት ነበር ፣ ለዚህም በግልፅ ዝግጁ አልነበርኩም ። እንደተለመደው ፣ የምፈልጋቸውን ክፍሎች ከ json-ቀላል ቤተ-መጽሐፍት በርዕሱ ውስጥ አስገባለሁ። የተስተካከለው ክፍል ፣ በፖም xml ውስጥ ይግለጹ ፣ ከዚያ በኋላ ፕሮጀክቱ በመደበኛነት ለመሰብሰብ ፈቃደኛ ባለመሆኑ እና ከስህተቶች ጋር ይወድቃል።

በመጨረሻ የግንባታ ስህተቶቹን ማስተካከል ችያለሁ፡ ቤተ መፃህፍቱን የመዘገብኩት በpom.xml አይደለም፣ ነገር ግን በ OSGI በሚፈለገው መሰረት በ manifest.mf መግለጫ ውስጥ እንደ አስመጪ-ጥቅል እየገለጽኩ ነው። በጣም ቆንጆው መፍትሄ አይደለም, ግን ይሰራል. ከዚያም የሚቀጥለው አስገራሚ ነገር ታየ. በIntellij Idea ውስጥ እያዳበሩ ከሆነ፣ በግርዶሽ መድረክ ላይ በመመስረት ፕሮጀክትዎን ማረም ብቻ መሄድ አይችሉም፡ ልምድ የሌለው ገንቢ መጠይቁን ሳያጠናቅቅ ከተንታኝ ያነሰ ሊሰቃይ አይገባም። የቢቨር አዘጋጆቹ እራሳቸው ለማዳን መጡ፣ በዊኪው ላይ ሁሉንም ጭፈራዎች በከበሮ መከናወን እንዳለበት አመልክተዋል። በጣም የሚያበሳጨው ነገር ከእነዚህ ሁሉ ስኩዊቶች በኋላ እንኳን ፕሮጀክቱ በጄሰን ቤተ-መጽሐፍት በማስመጣት-ጥቅል በኩል በተገናኘ ማረም መጀመር አልፈለገም (ምንም እንኳን አሁንም በተሳካ ሁኔታ በተጠናቀቀው ምርት ውስጥ ተሰብስቦ የነበረ ቢሆንም)።

በዚያን ጊዜ፣ ለተግባሬ json መጠቀም ምን ያህል ችግር እንዳለ ተገነዘብኩ - ለነገሩ ሜታዳታው በእጅ መታረም ነበረበት፣ እና የ xml ቅርጸቱ ለዚህ የተሻለ ነው። ለ xml የሚደግፈው ሁለተኛው መከራከሪያ በ JDK ውስጥ ሁሉም አስፈላጊ ክፍሎች መኖራቸው ነው, ይህም ከውጭ ቤተ-መጽሐፍት ጋር መዋጋትን ለማቆም አስችሏል. በታላቅ ደስታ ሁሉንም ሜታዳታ ከ json ወደ xml አስተላልፌአለሁ እና ራስ-አጠናቅቅ አመክንዮ ማረም ጀመርኩ።

የዲበ ውሂብ ምሳሌ

<?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>

በውጤቱም እኔ ለውጥ አድርጓል ወደ SQLUtils እና SQLCCompletionAnalyzer ክፍሎች። ሀሳቡ ይህ ነው፡ መርሃግብሩ መሰረታዊ አመክንዮዎችን በመጠቀም ተስማሚ የሆኑ የራስ-አጠናቅቅ ሀሳቦችን ማግኘት ካልቻለ የውጭ xml ፋይልን በመጠቀም መቀላቀሎችን መኖሩን ያረጋግጣል። ፋይሉ ራሱ እነዚህ ሠንጠረዦች መያያዝ ያለባቸውን መስኮች የሚያመለክቱ ጥንድ ሠንጠረዦችን ያከማቻል። የመዝገቦች eff_dttm እና exp_dttm እና የሎጂካዊ ስረዛ ባንዲራ deleted_ind በነባሪነት በነባሪነት ተቀምጠዋል።

በኮዱ ላይ ለውጦች ሲደረጉ, ጥያቄው ተነሳ - ፋይሉን በሜታዳታ የሚሞላው ማን ነው? በማከማቻው ውስጥ ብዙ አካላት አሉ, ሁሉንም ግንኙነቶች እራስዎ መመዝገብ በጣም ውድ ነው. በውጤቱም, ይህንን ተግባር ለባልደረባዎቼ ተንታኞች ለመመደብ ወሰንኩ. የሜታዳታ ፋይሉን በ svn ውስጥ ለጥፌያለሁ፣ ከፕሮግራሙ ጋር በአካባቢው ማውጫ ላይ ቼክ መውጣት ከተሰራበት። መርሆው ይህ ነው-በማከማቻው ውስጥ አዲስ አካል ታየ? አንድ ተንታኝ በተቻለ መጠን ወደ ፋይሉ ውስጥ ያስገባል፣ ለውጦችን ያደርጋል፣ የተቀረው ለራሳቸው ይፈትሹ እና በሚሰራው ራስ-ማጠናቀቅ ይደሰቱ፡ ማህበረሰብ፣ የእውቀት ክምችት እና ሌሎችም። ፕሮግራሙን ለሥራ ባልደረቦች ስለመጠቀም አውደ ጥናት አካሂዷል, Confluence ውስጥ አንድ ጽሑፍ ጽፏል - አሁን ኩባንያው አንድ ተጨማሪ ምቹ መሣሪያ አለው.

በዚህ ባህሪ ላይ መስራቴ በክፍት ምንጭ ፕሮጀክቶች ላይ tinker መፍራት አያስፈልግም የሚለውን ግንዛቤ ሰጠኝ - እንደ ደንቡ, ግልጽ የሆነ ስነ-ህንፃ አላቸው, እና የቋንቋው መሰረታዊ እውቀት ለሙከራዎች እንኳን በቂ ይሆናል. እና በተወሰነ ጽናት, የተጠሉ የተለመዱ ስራዎችን እንኳን ማስወገድ ይችላሉ, ለአዳዲስ ሙከራዎች ጊዜዎን ይቆጥባሉ.

ምንጭ: hab.com

አስተያየት ያክሉ