د یوې کوچنۍ پروژې کیسه دولس کاله اوږده ده (د لومړي ځل لپاره د BIRMA.NET په اړه او په ښکاره ډول لومړی لاس)

د دې پروژې زیږون یو کوچنی نظر ګڼل کیدی شي چې ما ته د 2007 په پای کې یو ځای راغلی و، چې یوازې 12 کاله وروسته یې وروستۍ بڼه موندلې وه (په دې وخت کې - البته، که څه هم د اوسني تطبیق سره سم. لیکوال ته، ډیر د قناعت وړ دی).

دا ټول هغه وخت پیل شول کله چې په کتابتون کې زما د هغه وخت د رسمي دندو د ترسره کولو په جریان کې، ما دې حقیقت ته پام وکړ چې د کتاب (او میوزیک) خپرونو د محتوياتو جدولونو سکین شوي متن څخه موجوده ډیټابیس ته د معلوماتو داخلولو پروسه، په ښکاره ډول ، د پام وړ ساده او اتومات کیدی شي ، د تنظیم کولو ملکیت څخه ګټه پورته کول او د ننوتلو لپاره اړین ټولو معلوماتو تکرار کولو وړتیا ، لکه د مقالې لیکوال نوم (که موږ د مقالو ټولګه په اړه وغږیږو) سرلیک. مقاله (یا فرعي سرلیک د مینځپانګو په جدول کې منعکس شوی) او د مینځپانګې د اوسني جدول د مخ شمیره. په لومړي سر کې، زه په عملي توګه باوري وم چې د دې دندې ترسره کولو لپاره مناسب سیسټم په انټرنیټ کې په اسانۍ سره موندل کیدی شي. کله چې یو څه حیرانتیا د دې حقیقت له امله رامینځته شوه چې زه نشم کولی داسې پروژه ومومم، ما پریکړه وکړه چې دا پخپله پلي کړم.

د کافي لنډ وخت وروسته ، لومړي پروټوټایپ کار پیل کړ ، کوم چې ما سمدلاسه زما په ورځني فعالیتونو کې کارول پیل کړل ، په ورته وخت کې دا په ټولو مثالونو کې چې زما لاس ته راغلي دي ډیبګ کول. خوشبختانه، زما په عادي کاري ځای کې، چیرې چې زه په هیڅ صورت کې یو پروګرامر نه وم، زه بیا هم په خپل کار کې د لیدلو "خراب وخت" سره مخ شوم، په کوم کې چې ما خپل دماغي ماشوم په شدت سره خراب کړ - په اوسنیو واقعیتونو کې تقریبا ناشونی شی، کوم چې معنی لري. د ورځې په جریان کې د ترسره شوي کار په اړه ورځني راپورونه. د برنامه پالش کولو پروسې په ټولیز ډول له یو کال څخه لږ وخت نیولی ، مګر حتی وروسته له دې چې پایله یې په بشپړ ډول بریالۍ نه بلل کیدی شي - ډیری مختلف مفکورې شتون درلود چې د پلي کولو لپاره خورا د پوهیدو وړ ندي: اختیاري عناصر چې پریښودل کیدی شي ; د عناصرو مخکی لید (د لټون پایلو کې د پخوانیو عناصرو ځای په ځای کولو هدف لپاره)؛ حتی زموږ خپله هڅه د یو څه پلي کولو لپاره لکه منظم بیانونه (کوم چې یو ځانګړی ترکیب لري). زه باید ووایم چې له دې دمخه ما یو څه برنامه کول پریښودل (د 8 کلونو لپاره ، که نور نه وي) ، نو په زړه پورې او اړین کار کې زما د مهارتونو پلي کولو نوي فرصت زما پام په بشپړ ډول ځانته راجلب کړ. دا د حیرانتیا خبره نده چې د پایلې سرچینې کوډ - زما په برخه کې د دې ډیزاین ته د کومې روښانه تګلارې نشتوالي کې - په چټکۍ سره د C ++ ځینې عناصرو او د بصری برنامې اړخونو سره په C ژبه کې د متفاوت ټوټو یوه نه هیریدونکې ګډوډي شوه (په پیل کې دا پریکړه وشوه چې داسې ډیزاین سیسټم وکاروي لکه بورلینډ C++ بلډر - "تقریبا ډیلفي ، مګر په C کې"). په هرصورت، دا ټول په نهایت کې زموږ د کتابتون ورځني فعالیتونو اتومات کولو کې میوه لري.

په ورته وخت کې، ما پریکړه وکړه، یوازې په هغه صورت کې چې د مسلکي سافټویر پراختیا کونکو روزلو لپاره کورسونه ترسره کړم. زه نه پوهیږم چې دا واقعیا ممکنه ده چې له پیل څخه د "پروګرامر کیدو" زده کړئ ، مګر هغه مهارتونه په پام کې نیولو سره چې ما دمخه په هغه وخت کې درلودل ، زه پدې توانیدلی وم چې یو څه ماسټر ټیکنالوژي وکړم چې هغه وخت ډیر اړونده وو ، لکه لکه C#، د .NET لاندې پراختیا لپاره بصری سټوډیو، او همدارنګه د جاوا، HTML او SQL پورې اړوند ځینې ټیکنالوژۍ. ټولې روزنې دوه کاله وخت واخیست، او زما د بلې پروژې لپاره د پیل ټکي په توګه کار وکړ، چې بالاخره د څو کلونو لپاره وغځول شو - مګر دا د جلا خپرونې موضوع ده. دلته به یوازې په یاد ولرئ چې ما هڅه کړې چې هغه پرمختګونه چې ما دمخه په بیان شوي پروژه کې درلودل د تطبیق کولو هڅه کړې ترڅو په C# او WinForms کې د بشپړ کړکۍ غوښتنلیک رامینځته کړي چې اړین فعالیت پلي کوي ، او د اساس په توګه یې وکاروئ. راتلونکی ډیپلوم پروژه.
د وخت په تیریدو سره، دا مفکوره ما ته د دې وړ ښکاري چې د "LIBKOM" او "CRIMEA" په څیر د مختلفو کتابتونونو د استازو په ګډون په داسې کلني کنفرانسونو کې غږ شي. نظر، هو، مګر زما په هغه وخت کې د هغې پلي کول ندي. بیا ما دا هیله هم درلوده چې یو څوک به دا د لا زیاتو وړ لارو چارو په کارولو سره بیا لیکي. په یو ډول یا بل ډول، په 2013 کې ما پریکړه وکړه چې د خپل لومړني کار په اړه یو راپور ولیکم او په کنفرانس کې د ګډون لپاره د مرستې لپاره د غوښتنې سره د کنفرانس تنظیم کونکي کمیټې ته واستوي. زما د یو څه حیرانتیا لپاره، زما غوښتنلیک تصویب شو، او ما په دې پروژه کې ځینې پرمختګونه پیل کړل ترڅو په کنفرانس کې د پریزنټشن لپاره چمتو کړم.

په هغه وخت کې، پروژې لا دمخه یو نوی نوم BIRMA ترلاسه کړی و، مختلف اضافي وړتیاوې یې ترلاسه کړې (دومره بشپړ ندي پلي شوي، بلکه فرض شوي) - ټول جزیات زما په راپور کې موندل کیدی شي.

په ریښتیا سره، دا ستونزمنه وه چې د BIRMA 2013 یو څه بشپړ وبلل شي؛ په ریښتیا ووایو، دا په چټکۍ سره جوړ شوی یو ډیر هیکیک هنر و. د کوډ په شرایطو کې، په عملي توګه هیڅ کوم ځانګړي نوښتونه شتون نلري، پرته له دې چې د پارسر لپاره یو ډول متحد ترکیب رامینځته کړي، د IRBIS 64 فارمیټینګ ژبه (او په حقیقت کې، د ISIS سیسټم هم) په څیر ښکاري. د سایکلیک جوړښتونو په توګه د قوسونو سره؛ ولې په هغه وخت کې ما فکر کاوه چې دا خورا ښه ښکاري). پارسر په نا امیدۍ سره د مناسب ډول قوسونو دې حلقو ته مخه کړه (ځکه چې قوس هم یو بل رول ترسره کړی ، د بیلګې په توګه ، دوی د پارس کولو پرمهال اختیاري جوړښتونه په نښه کړي چې پریښودل کیدی شي). زه یو ځل بیا هر هغه چا ته مراجعه کوم چې د هغه وخت زما راپور ته په ډیر تفصیل سره د BIRMA غیر عادلانه ترکیب سره د هغه وخت تصور کول ستونزمن دي.

په عموم کې ، زما د خپل پارسر سره د مبارزې سربیره ، زه د دې نسخې کوډ په اړه نور څه نه شم ویلای - پرته له دې چې په C++ کې د موجوده سرچینو بیرته تبادله په داسې حال کې چې د .NET کوډ ځینې ځانګړي ځانګړتیاوې ساتي (ریښتیا وي ، دا دی. پوهیدل ګران دي، څه شی ما په حقیقت کې د هرڅه بیرته لیږدولو ته وهڅول - شاید زما د سرچینې کوډونو پټ ساتلو لپاره یو څه احمقانه ویره، لکه څنګه چې دا د کوکا کولا د پټ ترکیب سره مساوي وي).

شاید دا احمقانه پریکړه د بریښنایی کتلاګ ته د معلوماتو داخلولو لپاره د کور جوړ شوي کاري سټیشن موجوده انٹرفیس سره د پایله شوي DLL کتابتون په جوړه کولو کې د ستونزو لامل هم وي (هو ، ما یو بل مهم حقیقت نه دی یاد کړی: له اوس څخه ، ټول د BIRMA "انجن" کوډ لکه څنګه چې تمه کیده، دا د انٹرفیس برخې څخه جلا شوی او په مناسب DLL کې بسته شوی). ولې دا اړینه وه چې د دې موخو لپاره جلا کاري سټیشن ولیکئ، کوم چې په هرصورت، د کارونکي سره د هغې په بڼه او طریقه کې، په بې شرمۍ سره د IRBIS 64 سیسټم ورته کار سټیشن "کټالوجیزر" کاپي کړی - دا یوه جلا پوښتنه ده. په لنډه توګه: دې زما د فراغت پروژې لپاره زما د هغه وخت پرمختګونو ته اړین پیوستون ورکړ (که نه نو یوازې د هضم وړ پارسر انجن یو څه کافي نه و). سربیره پردې ، زه بیا د خپلو ماډلونو سره د کتلوجر ورک سټیشن انٹرفیس پلي کولو کې د ځینې ستونزو سره مخ شوم ، په C++ او C# دواړو کې پلي شوی ، او زما انجن ته مستقیم لاسرسی.

په عموم کې ، په عجیبه توګه ، دا د راتلونکي BIRMA.NET دا خورا ناپاک پروټوټایپ و چې د راتلونکو څلورو کلونو لپاره زما د "ورک هارس" کیدو لپاره ټاکل شوی و. دا نشي ویل کیدی چې پدې وخت کې ما لږترلږه د یوې اوږدې مودې مفکورې د نوي او بشپړ پلي کولو لپاره د لارو موندلو هڅه نه ده کړې. د نورو نوښتونو په مینځ کې، باید مخکې له مخکې ځړول شوي سایکلیک ترتیبونه شتون ولري چې اختیاري عناصر پکې شامل شوي وي - دا څنګه زه د خپرونو او نورو مختلفو په زړه پورې شیانو د کتابی توضیحاتو لپاره د نړیوالو ټیمپلیټونو نظریه ژوند ته راوړم. په هرصورت، په هغه وخت کې زما په عملي فعالیتونو کې، دا ټول په لږ تقاضا کې وو، او هغه پلي کول چې ما په هغه وخت کې درلودل د مینځپانګو جدولونو ته د ننوتلو لپاره کافي و. سربیره پردې ، زموږ د کتابتون د پراختیا ویکتور د میوزیم آرشیفونو ډیجیټل کولو ، راپور ورکولو او زما لپاره د لږ علاقه لرونکي نورو فعالیتونو په لور ډیر او ډیر انحراف پیل کړ ، چې په پایله کې یې زه دې ته اړ کړم چې په پای کې پریږدم ، او هغه چا ته یې لاره ورکړه چې د د دې ټولو څخه ډیر خوښ اوسئ.

په خواشینۍ سره، دا د دې ډراماتیک پیښو وروسته وه چې د BIRMA پروژه، چې په هغه وخت کې یې د اوږدې مودې ساختماني پروژې ټولې ځانګړتیاوې درلودې، داسې بریښي چې خپل اوږدمهاله نوي ژوند پیل کړي! ما د بې کاره فکرونو لپاره ډیر وړیا وخت درلود ، ما یوځل بیا د ورته شی په لټه کې د ورلډ وایډ ویب سره یوځای کول پیل کړل (له نېکه مرغه ، اوس زه دمخه اټکل کولی شم چې دا ټول نه یوازې په هر ځای کې ، بلکه په GitHub کې وګورم) ، او په کوم ځای کې. د دې کال په پیل کې، زه په نهایت کې د نامتو نوم لاندې د مشهور سیلز فورس شرکت څخه اړوند محصول سره مخ شوم ګورپ. پخپله ، دا کولی شي نږدې هرڅه ترسره کړي چې ما ورته د پارسر انجن څخه اړتیا درلوده - د بیلګې په توګه ، په هوښیارۍ سره انفرادي ټوټې له خپل سري ، مګر په روښانه ډول جوړښت شوي متن څخه جلا کړئ ، پداسې حال کې چې د پای کارونکي لپاره د کافي کارونکي دوستانه انٹرفیس لري ، پشمول د داسې پوهیدو وړ جوهرونه. یوه نمونه، نمونه او پیښه، او په ورته وخت کې د منظم بیانونو پیژندل شوي نحو په کارولو سره، کوم چې د تحلیل لپاره په ټاکل شوي سیمانټیک ګروپونو کې د ویش له امله په بې ساري ډول د لوستلو وړ کیږي.

په عموم کې، ما پریکړه وکړه چې دا یو دی ګورپ (زه حیران یم چې دا نوم څه معنی لري؟ شاید یو ډول "عمومي متمرکز منظم پارسر"؟) - په حقیقت کې هغه څه چې زه د اوږدې مودې لپاره په لټه کې وم. ریښتیا ، زما د خپلو اړتیاو لپاره د دې سمدستي پلي کول داسې ستونزه درلوده چې دا انجن د سرچینې متن جوړښتي ترتیب ته خورا سخت تعقیب ته اړتیا لري. د ځینو راپورونو لپاره لکه د لاګ فایلونو (یعنې دوی د پراختیا کونکو لخوا د پروژې کارولو روښانه مثالونو په توګه ځای په ځای شوي) ، دا خورا مناسب دی ، مګر د مینځپانګو سکین شوي جدولونو ورته متنونو لپاره ، دا امکان نلري. په هرصورت، د مینځپانګو جدول سره ورته پاڼه کولی شي د "محتوا جدول"، "محتوا" او نورو لومړنیو توضیحاتو سره پیل شي چې موږ اړتیا نلرو د مطلوب تحلیل پایلو کې ځای په ځای کړو (او په لاسي ډول یې پرې کړو. هر وخت هم ناشونی دی). برسېره پردې، د انفرادي تکرار عناصرو ترمنځ، لکه د لیکوال نوم، سرلیک او د پاڼې شمیره، په پاڼه کې ممکن یو ټاکلی مقدار کثافات ولري (د بیلګې په توګه، انځورونه، او یوازې تصادفي حروف)، کوم چې دا به ښه وي چې وړتیا ولري. پرې کول. که څه هم، وروستی اړخ لا تر اوسه د پام وړ نه و، مګر د لومړي له امله، موجوده تطبیق نشي کولی په متن کې د اړتیا وړ جوړښتونو په لټه کې له یو ټاکلي ځای څخه پیل کړي، بلکه په ساده ډول یې د پیل څخه پروسس کړي، ونه موندل. هلته مشخص نمونې او ... زما دنده پای ته ورسیده. په ښکاره ډول، یو څه ټیک کولو ته اړتیا وه چې لږترلږه د تکرار جوړښتونو ترمنځ یو څه ځای ته اجازه ورکړي، او دا ما بیرته کار ته اړ کړ.

بله ستونزه دا وه چې پروژه پخپله په جاوا کې پلي شوې وه ، او که ما په راتلونکي کې پلان درلود چې د دې ټیکنالوژۍ ځینې وسیلې پلي کړم چې موجوده ډیټابیسونو ته د ډیټا داخلولو لپاره پیژندل شوي غوښتنلیکونو سره د دې ټیکنالوژۍ مداخله پلي کړم (لکه د Irbis "Cataloguer") ، نو لږترلږه دا په C# او .NET کې وکړئ. دا نده چې جاوا پخپله یوه خرابه ژبه ده - ما حتی دا د یوې په زړه پورې کړکۍ غوښتنلیک پلي کولو لپاره کارولې چې د کورني برنامه وړ کیلکولیټر فعالیت پلي کوي (د کورس پروژې برخې په توګه). او د نحو له نظره دا د ورته C-sharp سره ډیر ورته دی. ښه ، دا یوازې یو پلس دی: زما لپاره به د موجوده پروژې نهایی کولو لپاره اسانه وي. په هرصورت، زه نه غواړم د کړکۍ (یا بلکه، د ډیسټاپ) جاوا ټیکنالوژیو په دې غیر معمولي نړۍ کې یو ځل بیا ډوب کړم - په هرصورت، ژبه پخپله د دې ډول کارونې لپاره "وړانديز" نه وه، او زه هیڅکله د بیا تکرار کولو هیله نه لرم. پخوانۍ تجربه. شاید دا دقیقا ځکه وي چې C# د WinForms سره په ګډه ډیلفي ته خورا نږدې دی ، له کوم سره چې زموږ ډیری یوځل پیل کړي. خوشبختانه، اړین حل په چټکۍ سره وموندل شو - د پروژې په بڼه IKVM.NET، کوم چې د اوسني جاوا پروګرامونو په اداره شوي .NET کوډ کې ژباړل اسانه کوي. ریښتیا، پروژه پخپله د هغه وخت د لیکوالانو لخوا پریښودل شوې وه، مګر د هغې وروستي تطبیق ما ته اجازه راکړه چې په بریالیتوب سره د سرچینې متنونو لپاره اړین اقدامات ترسره کړم. ګورپ.

نو ما ټول اړین بدلونونه رامینځته کړل او دا ټول د مناسب ډول DLL کې راټول کړل ، کوم چې په بصري سټوډیو کې رامینځته شوي .NET چوکاټ لپاره د هرې پروژې لخوا په اسانۍ سره "راټول" کیدی شي. په ورته وخت کې ، ما د راستنیدونکو پایلو د مناسب پریزنټشن لپاره بل پرت رامینځته کړ ګورپ، د اړونده ډیټا جوړښتونو په شکل کې چې د میز لید کې پروسس کولو لپاره به اسانه وي (د اساس په توګه دواړه قطارونه او کالمونه؛ دواړه د لغت کلیدونه او شمیري شاخصونه). ښه، د پایلو پروسس او ښودلو لپاره اړین اسانتیاوې پخپله په چټکۍ سره لیکل شوي.

همچنان ، د نوي انجن لپاره د ټیمپلیټونو د تطبیق پروسه د دې لپاره چې د مینځپانګو جدولونو سکین شوي متنونو موجوده نمونو تجزیه کولو لپاره زده کړه وکړي کوم ځانګړي پیچلتیاوې رامینځته نه کړي. په حقیقت کې، ما حتی زما پخوانیو ټیمپلیټونو ته مراجعه هم نه درلوده: ما په ساده ډول د سکریچ څخه ټول اړین ټیمپلیټونه جوړ کړل. سربیره پردې ، که چیرې د سیسټم د تیرې نسخې سره د کار کولو لپاره ډیزاین شوي ټیمپلیټونه د متنونو لپاره خورا محدود چوکاټ رامینځته کړي چې د دوی په مرسته سم تحلیل کیدی شي ، نوي انجن دمخه دا امکان رامینځته کړی چې د ډیری ډولونو مارک اپ لپاره مناسب نړیوال ټیمپلیټونه رامینځته کړي. یوځل. ما حتی هڅه وکړه چې د منځپانګو د هر ډول خپلسري جدول متن لپاره یو ډول هراړخیز ټیمپلیټ ولیکم، که څه هم، البته، حتی زما لپاره د ټولو نویو امکاناتو پرانستلو سره، په شمول، په ځانګړې توګه، د ورته نیست شوي تکرار ترتیبونو پلي کولو محدود وړتیا ( لکه، د مثال په توګه، تخلصونه او ابتدايي څو لیکوالان په قطار کې)، دا یو یوټوپیا وګرځید.

شاید په راتلونکي کې به دا ممکنه وي چې د میټا ټیمپلیټونو یو مشخص مفهوم پلي کړي ، کوم چې به وکولی شي د سرچینې متن په یوځل کې د څو موجود ټیمپلیټونو سره موافقت لپاره وګوري ، او بیا د ترلاسه شوي پایلو سره سم ، غوره کړي. ترټولو مناسب، د یو ډول هوښیار الګوریتم په کارولو سره. خو اوس زه د یوې بلې پوښتنې په اړه ډیر اندیښمن وم. یو پارسر لکه ګورپسره له دې چې د دې ټول استقامت او هغه تعدیلات چې ما رامینځته کړي ، دا لاهم په طبیعي ډول د یو داسې ساده کار ترسره کولو توان نلري چې زما پخپله لیکل شوی پارسر د لومړۍ نسخې څخه د ترسره کولو وړ و. د مثال په توګه: هغه د دې وړتیا درلوده چې د سرچینې متن څخه ټولې ټوټې ومومي او استخراج کړي چې په سم ځای کې کارول شوي ټیمپلیټ کې مشخص شوي ماسک سره سمون لري ، پداسې حال کې چې د دې ټوټو ترمینځ ځایونو کې د ورکړل شوي متن کې څه شی شتون سره علاقه نه لري. تر دې دمه ، ما نوي انجن یوازې یو څه ښه کړی دی ، دې ته اجازه ورکوي چې د اوسني موقعیت څخه د ورته ماسکونو ورکړل شوي ترتیب ټول احتمالي نوي تکرارونه وپلټي ، د خپل سري کرکټرونو سیټونو متن کې د شتون امکان پریږدي چې په بشپړ ډول و. په تحلیل کې بې حسابه، د کشف شوي تکرار جوړښتونو ترمنځ تړل شوی. په هرصورت، دا د ورته ماسک په کارولو سره د مخکینۍ برخې د لټون پایلو په پام کې نیولو پرته د راتلونکی ماسک ترتیب کول ممکن ندي کړي: د بیان شوي متن جوړښت سختۍ لاهم د غیر منظم حروفونو د خپل سري شاملولو لپاره ځای نه پریږدي.

او که د مینځپانګو جدولونو مثالونو لپاره چې زه پدې ستونزه کې راغلی یم لاهم دومره جدي نه بریښي ، نو کله چې د ویب پا toې مینځپانګې پارس کولو ورته کار لپاره د پارس کولو نوی میکانیزم پلي کولو هڅه کول (لکه ورته پارس کول) ، دا محدودیتونه دلته دي چې دوی د خپل ټول څرګندتیا سره څرګند شوي. په هرصورت ، د ویب مارک اپ ټوټو لپاره اړین ماسکونه تنظیم کول خورا اسانه دي ، د کوم په مینځ کې هغه معلومات چې موږ یې په لټه کې یو (کوم چې استخراج ته اړتیا لري) باید موقعیت ولري ، مګر موږ څنګه کولی شو پارسر دې ته اړ کړو چې سمدلاسه راتلونکي ته لاړ شي. ورته ټوټه، د ټولو ممکنه ټاګونو او HTML ځانګړتیاو سره سره چې د دوی تر منځ په ځایونو کې ځای پرځای کیدی شي؟

د لږ فکر کولو وروسته، ما پریکړه وکړه چې د خدماتو څو نمونې معرفي کړم (%ټول_مخکې) и (%ټول_وروسته)، د دې څرګند هدف ته خدمت کول ډاډ ترلاسه کول چې هرڅه چې ممکن د سرچینې متن کې شتون ولري د هرې نمونې (ماسک) څخه مخکې پریښودل کیږي چې دوی تعقیبوي. سربیره پردې، که (%ټول_مخکې) بیا په ساده ډول دا ټول خپلسري شاملول له پامه غورځول شوي (%ټول_وروسته)، برعکس ، دوی ته اجازه ورکړل شوې چې د پخوانۍ ټوټې څخه حرکت کولو وروسته مطلوب ټوټې ته اضافه شي. دا خورا ساده ښکاري ، مګر د دې مفکورې پلي کولو لپاره ما باید د ګورپ سرچینو له لارې یوځل بیا اړین تعدیلات رامینځته کړي ترڅو دمخه پلي شوي منطق مات نشي. په پای کې، موږ دا کار وکړ (که څه هم خورا خورا لومړی، که څه هم خورا خراب و، زما د پارسر تطبیق لیکل شوی و، او حتی ګړندی - په څو اونیو کې). له اوس څخه، سیسټم په ریښتیا نړیواله بڼه غوره کړه - د دې د فعالیت کولو لومړنۍ هڅې وروسته له 12 کلونو څخه لږ نه.

البته، دا زموږ د خوبونو پای نه دی. تاسو کولی شئ په C# کې د ګورپ ټیمپلیټ پارسر په بشپړ ډول بیا ولیکئ ، د وړیا ګرامر پلي کولو لپاره د هرډول موجود کتابتونونو په کارولو سره. زه فکر کوم چې کوډ باید د پام وړ ساده شي، او دا به موږ ته اجازه راکړي چې د موجوده جاوا سرچینو په بڼه د میراث څخه ځان خلاص کړو. مګر د موجوده ډول انجن سره ، دا هم خورا ممکنه ده چې مختلف په زړه پوري شیان ترسره کړئ ، پشمول د میټا ټیمپلیټونو پلي کولو هڅه چې ما دمخه یادونه کړې ، د مختلف ویب پا toو څخه د مختلف ډیټا پارس کولو یادونه نه کول (په هرصورت ، زه رد نه کوم. دا چې موجوده ځانګړي سافټویر وسیلې د دې لپاره خورا مناسب دي - ما لاهم د دوی کارولو مناسب تجربه نه درلوده).

په هرصورت ، پدې دوبي کې ما دمخه د یو شرکت څخه د بریښنالیک له لارې بلنه ترلاسه کړې چې د Salesforce ټیکنالوژي کاروي (د اصلي پراختیا کونکی ګورپ)، په ریګا کې د راتلونکي کار لپاره مرکه پاس کړئ. له بده مرغه، دا مهال زه د داسې بیا ځای پرځای کولو لپاره چمتو نه یم.

که چیرې دا مواد یو څه علاقه رامینځته کړي ، نو په دویمه برخه کې به زه هڅه وکړم چې د سیلز فورس کې کارول شوي پلي کولو مثال په کارولو سره د ټیمپلیټونو تالیف او وروسته پارس کولو ټیکنالوژي په ډیر تفصیل سره تشریح کړم. ګورپ (زما خپل اضافې، د یو څو فنکشن کلمو په استثنا سره چې دمخه تشریح شوي، په حقیقت کې د ټیمپلیټ ترکیب کې هیڅ بدلون نه راځي، نو د اصلي سیسټم لپاره نږدې ټول اسناد ګورپ زما د نسخې لپاره هم مناسب دی).

سرچینه: www.habr.com

Add a comment