Арван хоёр жилийн турш үргэлжилсэн нэг жижиг төслийн түүх (BIRMA.NET-ийн тухай анх удаа, илэн далангүй хэлье)

Энэхүү төсөл бий болсон нь 2007 жилийн дараа л эцсийн хэлбэрээ олох хувь тавилантай байсан 12 оны сүүлээр надад хаа нэгтээ орж ирсэн жижиг санаа гэж үзэж болно (энэ үед мэдээжийн хэрэг, одоогийн хэрэгжиж байгаа ч гэсэн. Зохиогчийн хувьд маш их сэтгэл хангалуун байна).

Номын санд байсан албан үүргээ биелүүлэх явцад номын (болон хөгжим) хэвлэлүүдийн агуулгын хүснэгтийн сканнердсан текстээс өгөгдлийг одоо байгаа мэдээллийн санд оруулах үйл явц нь анхаарал хандуулснаар бүх зүйл эхэлсэн. Өгүүллийн зохиогчийн нэр (хэрэв бид нийтлэлийн цуглуулгын тухай ярьж байгаа бол), нийтлэлийн гарчиг зэрэг оруулахад шаардлагатай бүх өгөгдлийн эмх цэгц, давтагдах шинж чанарыг ашиглан ихээхэн хялбаршуулж, автоматжуулж болно. нийтлэл (эсвэл агуулгын хүснэгтэд тусгагдсан хадмал гарчиг) болон одоогийн агуулгын зүйлийн хуудасны дугаар. Эхлээд би энэ ажлыг гүйцэтгэхэд тохиромжтой системийг интернетээс хялбархан олох боломжтой гэдэгт бараг итгэлтэй байсан. Ийм төсөл олдохгүй байгаа нь гайхшрал төрүүлэхэд би өөрөө үүнийг хэрэгжүүлэхээр шийдсэн.

Хэсэг хугацааны дараа анхны загвар ажиллаж эхэлсэн бөгөөд үүнийг би тэр даруйдаа өдөр тутмынхаа үйл ажиллагаанд ашиглаж эхэлсэн бөгөөд нэгэн зэрэг гарт ирсэн бүх жишээн дээр дибаг хийж эхэлсэн. Аз болоход, би ямар ч программист байгаагүй ердийн ажлын байрандаа ажилдаа харагдахуйц "сул зогсолт"-оос салсан бөгөөд энэ хугацаанд би оюун ухаанаа эрчимтэй дибаг хийж байсан нь одоогийн бодит байдалд бараг төсөөлшгүй зүйл юм. өдрийн турш хийсэн ажлын тайланг өдөр бүр. Хөтөлбөрийг өнгөлөх үйл явц нь нийтдээ нэг жилээс багагүй хугацаа шаардсан боловч үүний дараа үр дүнг бүрэн амжилттай гэж нэрлэх аргагүй юм - хэрэгжүүлэхэд бүрэн ойлгомжгүй байсан хэт олон янзын үзэл баримтлалыг анх гаргасан: боломжтой нэмэлт элементүүд. алгасах; элементүүдийг урагшлуулах (хайлтын үр дүнд өмнөх элементүүдийг орлуулах зорилгоор); Тэр ч байтугай бид ердийн илэрхийлэл (өвөрмөц синтакстай) гэх мэт зүйлийг хэрэгжүүлэх гэсэн оролдлого хүртэл хийдэг. Үүнээс өмнө би програмчлалаа тодорхой хэмжээгээр орхисон (ойролцоогоор 8 жил, түүнээс дээшгүй бол) тиймээс сонирхолтой, шаардлагатай ажилд ур чадвараа ашиглах шинэ боломж миний анхаарлыг бүрэн татсан гэж хэлэх ёстой. Үүний үр дүнд бий болсон эх код нь миний талаас дизайны талаар тодорхой арга барилгүй байсан ч маш хурдан C++-ийн зарим элементүүд болон визуал програмчлалын талуудтай Си хэл дээрх ялгаатай хэсгүүдийн төсөөлшгүй эвдрэл болж хувирсан нь гайхах зүйл биш юм. Borland C++ Builder гэх мэт дизайны системийг ашиглахаар шийдсэн - "бараг Delphi, гэхдээ C хэл дээр"). Гэсэн хэдий ч энэ бүхэн эцэстээ манай номын сангийн өдөр тутмын үйл ажиллагааг автоматжуулах үр дүнгээ өгсөн.

Үүний зэрэгцээ би мэргэжлийн програм хангамж хөгжүүлэгчдийг бэлтгэх сургалтанд хамрагдахаар шийдсэн. "Программист байх"-ыг эхнээс нь сурах боломжтой эсэхийг би мэдэхгүй, гэхдээ тэр үед аль хэдийн эзэмшсэн ур чадвараа харгалзан үзэхэд би тухайн үед илүү хамааралтай байсан технологиудыг бага зэрэг эзэмшиж чадсан. C#, NET-ийн хүрээнд хөгжүүлэх Visual Studio, мөн Java, HTML, SQL-тэй холбоотой зарим технологиуд. Бүхэл бүтэн сургалт нийт хоёр жил үргэлжилсэн бөгөөд миний өөр нэг төслийн эхлэл болсон бөгөөд энэ нь эцэстээ хэдэн жил үргэлжилсэн боловч энэ бол тусдаа нийтлэлийн сэдэв юм. Би өмнө нь тайлбарласан төсөл дээр хийсэн бүтээн байгуулалтуудаа дасан зохицож, шаардлагатай функцийг хэрэгжүүлдэг C# болон WinForms дээр бүрэн хэмжээний цонхны програмыг үүсгэж, үүнийг ашиглахад үндэс болгон ашиглахыг оролдсон гэдгийг тэмдэглэх нь зүйтэй болов уу. удахгүй болох дипломын төсөл.
Цаг хугацаа өнгөрөхөд энэ санаа нь "LIBKOM", "Crimea" зэрэг янз бүрийн номын сангуудын төлөөлөгчдийн оролцоотой жил бүр болдог бага хуралд дуугарах нь зүйтэй мэт санагдаж эхлэв. Санаа, тийм ээ, гэхдээ тэр үед миний хэрэгжүүлээгүй. Дараа нь би бас хэн нэгэн үүнийг илүү чадварлаг аргуудыг ашиглан дахин бичнэ гэж найдаж байсан. Ямар ч байсан 2013 он гэхэд би өмнөх ажлынхаа тайланг бичиж, чуулганд оролцох тэтгэлэг хүсэх өргөдлийн хамт Бага хурлыг зохион байгуулах хороонд илгээхээр шийдсэн. Намайг бага зэрэг гайхшруулсан нь миний өргөдлийг хүлээн авч, чуулганд танилцуулахаар бэлтгэхийн тулд төсөлдөө зарим сайжруулалт хийж эхэлсэн.

Тэр үед төсөл нь BIRMA хэмээх шинэ нэрийг аль хэдийн авч, янз бүрийн нэмэлт (бүрэн хэрэгжээгүй, харин таамагласан) чадварыг олж авсан - бүх дэлгэрэнгүй мэдээллийг миний тайлангаас олж болно.

Үнэнийг хэлэхэд, BIRMA 2013-ийг бүрэн гүйцэд гэж нэрлэхэд хэцүү байсан; Ний нуугүй хэлэхэд, энэ бол яаран хийсэн маш хакердсан гар урлал байсан. Кодын хувьд IRBIS 64 форматлах хэлийг (мөн үнэндээ ISIS системийг) санагдуулам гадаад төрхөөрөө задлан шинжлэгчийн хувьд нэгдмэл синтакс бий болгох гэсэн нэлээд арчаагүй оролдлогыг эс тооцвол бараг ямар ч онцгой шинэлэг зүйл байгаагүй. цикл бүтэцтэй хаалттай; яагаад тэр үед би үнэхээр гоё харагдаж байсан гэж боддог байсан). Задлан шинжлэгч тохирох төрлийн хаалтны эдгээр дугуйлан дээр найдваргүй бүдэрсэн (учир нь хаалт нь өөр үүрэг гүйцэтгэдэг, тухайлбал задлан шинжлэх явцад алгасах боломжтой нэмэлт бүтцийг тэмдэглэсэн). Тухайн үеийн төсөөлөхөд бэрх, үндэслэлгүй BIRMA синтакстай илүү дэлгэрэнгүй танилцахыг хүссэн хүн бүрийг би тухайн үеийн тайландаа дахин илгээж байна.

Ерөнхийдөө, өөрийн задлан шинжлэгчтэй тэмцэж байгаагаас гадна, .NET кодын зарим ердийн шинж чанарыг хадгалахын зэрэгцээ одоо байгаа эх сурвалжуудыг C++ руу урвуу хөрвүүлэхээс бусад тохиолдолд надад энэ хувилбарын кодын талаар хэлэх зүйл алга. Ойлгоход хэцүү, яг юу намайг бүгдийг буцаахад хүргэсэн бэ - магадгүй Кока-Колагийн нууц жортой дүйцэхүйц эх кодоо нууцлахаас айсан тэнэг айдас байж магадгүй).

Магадгүй энэ тэнэг шийдвэр нь DLL номын санг цахим каталогт өгөгдөл оруулах гэрийн ажлын станцын одоо байгаа интерфэйстэй хослуулахад тулгарч буй бэрхшээлүүдийн шалтгаан байж болох юм (тиймээ, би өөр нэг чухал баримтыг дурдаагүй: одооноос эхлэн бүх BIRMA "хөдөлгүүр" -ийн код нь хүлээгдэж буй шиг байсан бөгөөд энэ нь интерфейсийн хэсгээс тусгаарлагдсан бөгөөд зохих DLL-д багцлагдсан). Эдгээр зорилгын үүднээс тусдаа ажлын станц бичих шаардлагатай болсон нь гадаад төрх байдал, хэрэглэгчтэй харилцах арга барилаараа IRBIS 64 системийн "Каталогист" гэсэн ижил ажлын станцыг ичгүүргүйгээр хуулж авсан нь тусдаа асуулт юм. Товчхондоо: энэ нь миний төгсөлтийн төсөлд шаардлагатай бат бөх чанарыг өгсөн (эсвэл шингэцгүй задлан шинжлэх хөдөлгүүр дангаараа ямар нэгэн байдлаар хангалтгүй байсан). Нэмж дурдахад би C++ болон C# аль алинд нь хэрэгжсэн өөрийн модулиудтай Cataloger ажлын станцын интерфейсийг хэрэгжүүлэх, мөн өөрийн хөдөлгүүрт шууд хандах зэрэгт зарим бэрхшээлтэй тулгарсан.

Ер нь, хачирхалтай нь, ирээдүйн BIRMA.NET-ийн энэ нэлээд болхи прототип нь дараагийн дөрвөн жилийн хугацаанд миний "ажлын морь" болох хувь тавилан байсан юм. Энэ хугацаанд би удаан хугацааны туршид бий болсон санаагаа шинэ, илүү бүрэн гүйцэд хэрэгжүүлэх арга замыг хайж олоогүй гэж хэлж болохгүй. Бусад шинэлэг зүйлүүдийн дотроос нэмэлт элементүүдийг багтаасан байх ёстой циклийн дараалалууд аль хэдийн байх ёстой - ийм байдлаар би хэвлэл, бусад сонирхолтой зүйлсийн номзүйн тайлбарт зориулсан бүх нийтийн загваруудын санааг хэрэгжүүлэх гэж байсан. Гэсэн хэдий ч тэр үед миний практик үйл ажиллагаанд энэ бүхэн бага эрэлт хэрэгцээтэй байсан бөгөөд тэр үед миний хэрэгжүүлсэн хэрэгжилт нь агуулгын хүснэгтийг оруулахад хангалттай байсан. Нэмж дурдахад, манай номын сангийн хөгжлийн вектор музейн архивыг дижитал хэлбэрт шилжүүлэх, тайлан гаргах болон миний сонирхол багатай бусад үйл ажиллагаа руу улам бүр хазайж эхэлсэн нь эцэстээ намайг үүнийг орхиход хүргэв. Энэ бүхэнд илүү сэтгэл хангалуун байгаарай.

Хачирхалтай нь, эдгээр гайхалтай үйл явдлуудын дараа тэр үед ердийн урт хугацааны барилгын төслийн бүх онцлог шинж чанаруудыг аль хэдийн эзэмшсэн BIRMA төсөл удаан хүлээгдэж буй шинэ амьдралаа авч эхлэх шиг болсон юм! Би хоосон бодлуудад илүү их чөлөөт цаг гаргаж, үүнтэй төстэй зүйлийг хайж олохын тулд дахин World Wide Web-ийг самнаж эхлэв (аз болоход би энэ бүгдийг хаанаас ч биш GitHub дээрээс хайж олох боломжтой болсон), At the хаа нэгтээ Энэ оны эхээр би эцэст нь нэрд гарсан Salesforce компаниас үл ялиг нэртэй тохирох бүтээгдэхүүнтэй таарлаа. Горп. Энэ нь өөрөө ийм задлагч хөдөлгүүрээс надад хэрэгтэй бараг бүх зүйлийг хийж чадна, тухайлбал, дурын боловч тодорхой бүтэцтэй текстээс бие даасан хэсгүүдийг ухаалгаар тусгаарлахын зэрэгцээ эцсийн хэрэглэгчдэд нэлээн ээлтэй интерфэйстэй, үүнд ойлгомжтой эссенцүүдийг багтаасан болно. загвар, загвар, тохиолдлын зэрэгцээ ердийн хэллэгүүдийн танил синтаксийг ашиглах нь задлан шинжлэхэд зориулагдсан семантик бүлгүүдэд хуваагдсанаар зүйрлэшгүй илүү уншигдахуйц болдог.

Ерөнхийдөө би ийм л байна гэж шийдсэн Горп (Энэ нэр ямар утгатай болохыг би гайхаж байна? Магадгүй зарим төрлийн "ерөнхий чиг баримжаатай ердийн задлан шинжлэгч"?) - яг миний удаан хугацаанд хайж байсан зүйл. Үнэнийг хэлэхэд, үүнийг миний хэрэгцээнд зориулж нэн даруй хэрэгжүүлэхэд ийм асуудал тулгарсан тул энэ хөдөлгүүр нь эх текстийн бүтцийн дарааллыг хэт хатуу дагаж мөрдөхийг шаарддаг. Бүртгэлийн файлууд гэх мэт зарим тайлангийн хувьд (тухайлбал, тэдгээрийг хөгжүүлэгчид төслийг ашиглах тодорхой жишээ болгон байрлуулсан) энэ нь маш тохиромжтой боловч сканнердсан агуулгын ижил текстийн хувьд энэ нь боломжгүй юм. Эцсийн эцэст, агуулгын хүснэгттэй ижил хуудас нь "Агуулга", "Агуулга" гэсэн үгсээр эхэлж, бид төлөвлөсөн шинжилгээний үр дүнд оруулах шаардлагагүй (мөн тэдгээрийг гараар таслах) бусад урьдчилсан тайлбараас эхэлж болно. цаг бүр нь бас тохиромжгүй байдаг). Нэмж дурдахад, зохиогчийн нэр, гарчиг, хуудасны дугаар гэх мэт бие даасан давтагдах элементүүдийн хооронд хуудас нь тодорхой хэмжээний хог хаягдал (жишээлбэл, зураг, зүгээр л санамсаргүй тэмдэгтүүд) агуулж болно. таслах. Гэсэн хэдий ч сүүлийн тал нь тийм ч чухал биш байсан боловч эхнийхээс болж одоо байгаа хэрэгжилт нь текст дэх шаардлагатай бүтцийг тодорхой газраас хайж эхлэх боломжгүй, харин үүнийг эхнээс нь боловсруулж, олж чадаагүй байна. тэнд хэв маягийг зааж өгөөд... ажлаа дуусгасан. Мэдээжийн хэрэг, дахин давтагдах бүтцийн хооронд бага зэрэг зай гаргахын тулд зарим өөрчлөлт хийх шаардлагатай байсан нь намайг ажилдаа буцаан оруулсан.

Өөр нэг асуудал бол төсөл өөрөө Java хэл дээр хэрэгжсэн байсан бөгөөд хэрэв би энэ технологийг одоо байгаа өгөгдлийн санд өгөгдөл оруулах танил програмуудтай (жишээлбэл, Ирбисийн "Каталогист" гэх мэт) холбох арга хэрэгслийг хэрэгжүүлэхээр төлөвлөж байгаа бол ядаж ядаж л. Үүнийг C# болон .NET дээр хий. Энэ нь Java өөрөө муу хэл биш юм - би үүнийг дотоодын программчлагдах тооны машины функцийг хэрэгжүүлсэн сонирхолтой цонхны програмыг хэрэгжүүлэхэд ашиглаж байсан (курс төслийн нэг хэсэг болгон). Мөн синтаксийн хувьд энэ нь ижил C-sharp-тай маш төстэй юм. За, энэ бол зөвхөн нэг давуу тал юм: одоо байгаа төслийг дуусгах нь надад илүү хялбар байх болно. Гэсэн хэдий ч би энэ ер бусын цонхны (эсвэл ширээний) Java технологийн ертөнцөд дахин орохыг хүсээгүй - эцэст нь хэл нь өөрөө ийм хэрэглээнд "засаагүй" байсан бөгөөд би үүнийг давтахыг огт хүсээгүй. өмнөх туршлага. Магадгүй энэ нь WinForms-тэй C# хэл нь бидний олонх нь эхлүүлж байсан Delphi-тэй илүү ойр байдагтай холбоотой байх. Аз болоход, шаардлагатай шийдэл нь төслийн хэлбэрээр маш хурдан олдсон IKVM.NET, энэ нь одоо байгаа Java програмуудыг удирддаг .NET код руу хөрвүүлэхэд хялбар болгодог. Тэр үед төслийг зохиогчид аль хэдийн орхисон байсан нь үнэн боловч түүний хамгийн сүүлийн хэрэгжилт нь эх бичвэрт шаардлагатай үйлдлүүдийг амжилттай гүйцэтгэх боломжийг надад олгосон юм. Горп.

Тиймээс би шаардлагатай бүх өөрчлөлтийг хийж, бүгдийг нь Visual Studio дээр үүсгэсэн .NET Framework-д зориулсан ямар ч төсөлд хялбархан "авах" боломжтой тохирох төрлийн DLL болгон угсарсан. Энэ хооронд би буцаж ирсэн үр дүнг хялбархан харуулахын тулд өөр давхарга үүсгэсэн ГорпХүснэгтийн харагдацаар боловсруулахад тохиромжтой харгалзах өгөгдлийн бүтэц хэлбэрээр (мөр, баганын аль алиныг нь үндэс болгон; толь бичгийн түлхүүр ба тоон индексийг хоёуланг нь авна). За, үр дүнг боловсруулж, харуулахад шаардлагатай хэрэгслүүдийг маш хурдан бичсэн.

Түүнчлэн сканнердсан агуулгын текстийн одоо байгаа дээжийг задлан шинжлэхийг заах зорилгоор шинэ хөдөлгүүрт загваруудыг тохируулах үйл явц нь ямар нэгэн онцгой хүндрэл учруулаагүй. Үнэн хэрэгтээ, би өмнөх загваруудаа огт дурдах шаардлагагүй байсан: би зүгээр л бүх шаардлагатай загваруудыг эхнээс нь бүтээсэн. Нэмж дурдахад, системийн өмнөх хувилбартай ажиллахад зориулагдсан загварууд нь тэдгээрийн тусламжтайгаар зөв задлан шинжилж болохуйц текстийн нэлээд нарийн хүрээг бий болгосон бол шинэ хөдөлгүүр нь хэд хэдэн төрлийн тэмдэглэгээнд тохирсон нэлээд түгээмэл загваруудыг боловсруулах боломжтой болсон. нэг удаа. Би бүр дурын агуулгын текстэд зориулж ямар нэгэн иж бүрэн загвар бичихийг оролдсон боловч мэдээжийн хэрэг, надад нээгдсэн бүх шинэ боломжууд, тэр дундаа ижил үүрлэсэн давталтын дарааллыг хэрэгжүүлэх боломж хязгаарлагдмал байсан ч гэсэн ( жишээлбэл, хэд хэдэн зохиогчийн овог нэр, овог нэр), энэ нь утопи болж хувирав.

Ирээдүйд мета-загваруудын тодорхой ойлголтыг хэрэгжүүлэх боломжтой болох бөгөөд энэ нь эх текстийг байгаа хэд хэдэн загвартай нийцэж байгаа эсэхийг нэг дор шалгаж, дараа нь олж авсан үр дүнгийн дагуу хамгийн тохиромжтой нь ямар нэгэн ухаалаг алгоритм ашиглан. Харин одоо би өөр асуултанд илүү санаа зовсон. Шинжлэгч шиг Горп, бүх олон талт байдал, миний хийсэн өөрчлөлтүүдийг үл харгалзан, энэ нь анхны хувилбараасаа л миний өөрөө бичсэн задлан шинжлэгчийн хийж чаддаг байсан энгийн мэт санагдах зүйлийг хийх чадваргүй хэвээр байсан. Тухайлбал: тэр загварт заасан масктай тохирох бүх хэлтэрхийг зөв газарт нь олж, эх бичвэрээс гаргаж авах чадвартай байсан бөгөөд эдгээр хэсгүүдийн хоорондын зайд өгөгдсөн текст юу агуулагдаж байгааг огт сонирхдоггүй байв. Одоогийн байдлаар би шинэ хөдөлгүүрийг бага зэрэг сайжруулсан бөгөөд энэ нь одоогийн байрлалаас ийм маскуудын өгөгдсөн дарааллын бүх шинэ давталтыг хайж олох боломжийг олгож, текстэд бүрэн дурын тэмдэгтүүдийг оруулах боломжийг үлдээсэн. задлан шинжлэхэд тооцогдоогүй, илэрсэн давтагдах бүтцийн хооронд хаалттай. Гэсэн хэдий ч энэ нь харгалзах маск ашиглан өмнөх фрагментийг хайх үр дүнгээс үл хамааран дараагийн маскыг тохируулах боломжийг олгосонгүй: тайлбарласан текстийн бүтцийн хатуу байдал нь жигд бус тэмдэгтүүдийг дур мэдэн оруулах зай үлдээсэнгүй.

Хэрэв надад тохиолдсон агуулгын жишээнүүдийн хувьд энэ асуудал тийм ч ноцтой биш юм шиг санагдаагүй бол вэбсайтын агуулгыг задлан шинжлэх (жишээ нь ижил задлан шинжлэх) даалгаварт шинэ задлан шинжлэх механизмыг ашиглахыг оролдох үед түүний хязгаарлалтууд энд бүх илэрхий байдлаар гарч ирэв. Эцсийн эцэст, вэб тэмдэглэгээний хэсгүүдэд шаардлагатай маскуудыг тохируулах нь маш хялбар бөгөөд тэдгээрийн хооронд бидний хайж буй өгөгдөл (үүнийг задлах шаардлагатай) байх ёстой, гэхдээ бид задлан шинжлэгчийг нэн даруй дараагийнх руу шилжүүлэхийг яаж албадах вэ? Эдгээрийн хоорондох зайд байрлуулж болох бүх боломжит шошго болон HTML шинж чанаруудыг үл харгалзан ижил төстэй фрагмент үү?

Жаахан бодсоны эцэст хэд хэдэн үйлчилгээний загвар танилцуулахаар шийдлээ (%бүх_өмнө) и (%бүхний_дараа), эх бичвэрт агуулагдаж болох бүх зүйлийг дагаж мөрдөж буй аливаа загвар (маск)-аас өмнө алгасах боломжийг баталгаажуулах тодорхой зорилгод үйлчилдэг. Түүнээс гадна, хэрэв (%бүх_өмнө) зүгээр л энэ бүх дур зоргоороо оруулахыг үл тоомсорлов (%бүхний_дараа), эсрэгээр, өмнөх фрагментээс шилжүүлсний дараа тэдгээрийг хүссэн фрагмент дээр нэмэх боломжийг олгосон. Энэ нь маш энгийн сонсогдож байгаа ч энэ үзэл баримтлалыг хэрэгжүүлэхийн тулд аль хэдийн хэрэгжсэн логикийг эвдэхгүйн тулд шаардлагатай өөрчлөлтүүдийг оруулахын тулд Горпийн эх сурвалжийг дахин самнах шаардлагатай болсон. Эцэст нь бид үүнийг хийж чадлаа (хэдийгээр хамгийн анхны, маш алдаатай байсан ч миний задлагчийн хэрэгжилт бичигдсэн, бүр илүү хурдан - хоёр долоо хоногийн дотор). Одооноос эхлэн систем нь жинхэнэ бүх нийтийн хэлбэрийг олж авсан - үүнийг ажиллуулах анхны оролдлогоос дор хаяж 12 жилийн дараа.

Мэдээжийн хэрэг, энэ бол бидний мөрөөдөл төгсгөл биш юм. Та Gorp загвар задлагчийг C# хэл дээр бүрэн дахин бичиж, үнэгүй дүрмийг хэрэгжүүлэх боломжтой номын сангуудын аль нэгийг ашиглаж болно. Би кодыг ихээхэн хялбаршуулсан байх ёстой гэж бодож байна, энэ нь бидэнд одоо байгаа Java эх сурвалж хэлбэрээр өвийг арилгах боломжийг олгоно. Гэхдээ одоо байгаа хөдөлгүүрийн тусламжтайгаар янз бүрийн сонирхолтой зүйлсийг хийх боломжтой, үүнд миний дурдсан мета загваруудыг хэрэгжүүлэх оролдлого, янз бүрийн вэбсайтаас янз бүрийн өгөгдлийг задлан шинжлэхийг дурдахгүй (гэхдээ би үүнийг үгүйсгэхгүй. Одоо байгаа тусгай програм хангамжийн хэрэгслүүд үүнд илүү тохиромжтой байдаг - би тэдгээрийг ашиглах зохих туршлага хараахан аваагүй байна).

Дашрамд хэлэхэд, энэ зун би Salesforce технологийг ашигладаг компаниас урилга хүлээн авсан (оригинал програмыг хөгжүүлэгч). Горп), Рига дахь дараагийн ажилд ярилцлага өгөх. Харамсалтай нь, би одоогоор ийм шилжүүлэг хийхэд бэлэн биш байна.

Хэрэв энэ материал нь зарим нэг сонирхлыг төрүүлж байгаа бол хоёрдугаар хэсэгт би Salesforce-д ашигласан хэрэгжүүлэлтийн жишээн дээр загваруудыг эмхэтгэх, дараа нь задлан шинжлэх технологийг илүү дэлгэрэнгүй тайлбарлахыг хичээх болно. Горп (Миний өөрийн нэмэлтүүд, аль хэдийн тайлбарласан хэд хэдэн функцийн үгсийг эс тооцвол загварын синтакс дээр бараг ямар ч өөрчлөлт оруулаагүй тул анхны системийн бараг бүх баримт бичиг. Горп Миний хувилбарт бас тохиромжтой).

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх