Nkhani ya polojekiti imodzi yaying'ono zaka khumi ndi ziwiri (za BIRMA.NET kwa nthawi yoyamba komanso moona mtima)

Kubadwa kwa polojekitiyi kungathe kuonedwa ngati lingaliro laling'ono lomwe linabwera kwa ine kwinakwake kumapeto kwa 2007, lomwe limayenera kupeza mawonekedwe ake omaliza pazaka 12 zokha (panthawiyi - ndithudi, ngakhale kuti kukhazikitsidwa kwamakono, malinga ndi zomwe zikuchitika, ndizovuta kwambiri." kwa wolemba, ndizokhutiritsa kwambiri) .

Zonse zidayamba pomwe, ndikukwaniritsa ntchito zanga zovomerezeka mulaibulale, ndidawunikiranso kuti njira yolowetsa deta kuchokera pamasamba osakanizidwa azomwe zili m'mabuku (ndi nyimbo) zomwe zidasindikizidwa kale, mwachiwonekere, akhoza kukhala wosavuta kwambiri ndi automate, kutengerapo mwayi katundu wa dongosolo ndi repeatability deta zonse zofunika athandizira, monga dzina la mlembi wa nkhani (ngati tikukamba za mndandanda wa nkhani), mutu wa nkhaniyo (kapena mawu ang'onoang'ono omwe akuwonetsedwa muzamkatimu) ndi nambala yatsamba lazomwe zili mkati. Poyamba, ndinali wotsimikiza kuti njira yoyenera yochitira ntchitoyi ipezeka mosavuta pa intaneti. Pamene kudabwa kwina kunabwera chifukwa chakuti sindinapeze pulojekiti yoteroyo, ndinaganiza zoyesa kuigwiritsa ntchito ndekha.

Patapita nthawi yochepa, chitsanzo choyamba chinayamba kugwira ntchito, chomwe ndinayamba kuchigwiritsa ntchito m'zochita zanga za tsiku ndi tsiku, nthawi yomweyo ndikuchichotsa pa zitsanzo zonse zomwe zinabwera m'manja mwanga. Mwamwayi, kuntchito yanga yanthawi zonse, komwe sindinali wopanga mapulogalamu, ndidasiyabe "nthawi yopumira" pantchito yanga, pomwe ndimasokoneza kwambiri ubongo wanga - chinthu chosayerekezeka pazomwe zikuchitika, zomwe zimaphatikizapo. malipoti a tsiku ndi tsiku a ntchito zomwe zachitika masana. Njira yopukutira pulogalamuyo idatenga nthawi yosachepera chaka, koma ngakhale zitachitika izi sizingatchulidwe kuti zapambana - malingaliro ambiri osiyanasiyana adayikidwa poyambilira omwe sanali omveka bwino kuti akhazikitsidwe: zinthu zomwe zingatheke. kulumpha; kuyang'ana patsogolo kwa zinthu (cholinga chosintha zinthu zam'mbuyomu kukhala zotsatira zakusaka); ngakhale kuyesa kwathu kugwiritsa ntchito zina ngati mawu okhazikika (omwe ali ndi mawu apadera). Ndiyenera kunena kuti izi zisanachitike ndinali nditasiya kupanga (kwa zaka pafupifupi 8, ngati sichoncho), kotero mwayi watsopano wogwiritsa ntchito luso langa pantchito yosangalatsa komanso yofunikira idandikopa chidwi changa. Ndizosadabwitsa kuti gwero lochokera - pakalibe njira zomveka bwino za kapangidwe kake - mwachangu kunakhala mishmash yosayerekezeka ya zidutswa zosiyana za chilankhulo cha C ndi zinthu zina za C ++ ndi mawonekedwe a mapulogalamu (poyamba izi anaganiza kugwiritsa ntchito dongosolo kamangidwe monga Borland C ++ Builder - "pafupifupi Delphi, koma C"). Komabe, zonsezi pamapeto pake zidabala zipatso pakukonza zochita zatsiku ndi tsiku za library yathu.

Panthawi imodzimodziyo, ndinaganiza zongopanga maphunziro kuti ndiphunzitse akatswiri opanga mapulogalamu. Sindikudziwa ngati ndizothekadi kuphunzira “kukhala wokonza mapulogalamu” kuyambira pamenepo, koma poganizira luso lomwe ndinali nalo kale panthawiyo, ndimatha kudziwa luso laukadaulo lomwe linali lofunikira kwambiri panthawiyo, monga. monga C #, Visual Studio for development under .NET, komanso matekinoloje ena okhudzana ndi Java, HTML ndi SQL. Maphunziro onsewa adatenga zaka ziwiri, ndipo adakhala ngati poyambira ntchito yanga ina, yomwe idatenga zaka zingapo - koma iyi ndi mutu wa buku lina. Apa zingakhale zoyenera kuzindikira kuti ndidayesa kusintha zomwe ndidakhala nazo kale pantchito yomwe yafotokozedwayo kuti ndipange pulogalamu yazenera yathunthu mu C # ndi WinForms yomwe imagwiritsa ntchito zofunikira, ndikuigwiritsa ntchito ngati maziko a diploma yomwe ikubwera.
M'kupita kwa nthawi, lingaliro limeneli linayamba kuwoneka ngati loyenera kunenedwa pamisonkhano yapachaka yotereyi ndi oimira mabuku osiyanasiyana monga "LIBKOM" ndi "CRIMEA". Lingaliro, inde, koma osati kukhazikitsa kwanga panthawiyo. Kenaka ndinayembekezeranso kuti wina adzalembanso pogwiritsa ntchito njira zoyenerera. Mwanjira ina, pofika chaka cha 2013 ndinaganiza zolembera lipoti la ntchito yanga yoyamba ndikuitumiza ku Komiti Yokonzekera Msonkhano ndi pempho la ndalama kuti ndichite nawo msonkhano. Ndinadabwa penapake, pempho langa linavomerezedwa, ndipo ndinayamba kuwongolera pulojekitiyi kuti ndikonzekere kukambidwa pamsonkhanowo.

Pofika nthawi imeneyo, polojekitiyi inali italandira kale dzina latsopano la BIRMA, idapeza zina zowonjezera (osati zomwe zinakwaniritsidwa, koma zimaganiziridwa) - zonse zitha kupezeka mu lipoti langa.

Kunena zowona, zinali zovuta kutchula BIRMA 2013 chinachake chokwanira; Kunena zowona, inali luso lachinyengo kwambiri lomwe linapangidwa mwachangu. Pankhani ya kachidindo, panalibe zatsopano zapadera, kupatulapo kuyesa kopanda mphamvu kuti apange mtundu wina wa mawu ogwirizana a parser, m'mawonekedwe okumbutsa chilankhulo cha IRBIS 64 (ndiponso dongosolo la ISIS - zokhala ndi mabatani ngati zozungulira; chifukwa chiyani Panthawiyo ndimaganiza kuti zikuwoneka bwino). Wopangayo adapunthwa mopanda chiyembekezo pamagulu awa amtundu woyenerera (popeza mabatani adachitanso gawo lina, lomwe ndi, amalemba zomwe mwasankha panthawi yotsatsira zomwe zitha kudumpha). Ndimatchulanso aliyense amene akufuna kudziwa zomwe zinali zovuta kuziganizira, zosamveka bwino za BIRMA mwatsatanetsatane ku lipoti langa la nthawiyo.

Mwambiri, kupatula kulimbana ndi kafotokozedwe kanga kanga, ndiribenso china choti ndinene ponena za kachidindo ka mtundu uwu - kupatula kutembenuzidwa kwa magwero omwe alipo kukhala C++ ndikusunga mawonekedwe a .NET code (kunena zoona, ndi zovuta kumvetsa , chimene ndendende chinandichititsa kusuntha chirichonse mmbuyo - mwina mantha ena opusa posunga chinsinsi changa code code, ngati kuti ndi chinachake chofanana ndi Chinsinsi Chinsinsi cha Coca-Cola).

Mwina lingaliro lopusali lilinso chifukwa cha zovuta pakuphatikiza laibulale ya DLL yomwe ikubwera ndi mawonekedwe omwe alipo a malo opangira nyumba kuti alowetse deta mu kabukhu kamagetsi (inde, sindinatchule mfundo ina yofunika: kuyambira pano, zonse code ya "injini" ya BIRMA inali yoyembekezeredwa, imasiyanitsidwa ndi gawo la mawonekedwe ndikuyikidwa mu DLL yoyenera). Chifukwa chiyani kunali kofunikira kulemba malo ogwirira ntchito osiyana pazifukwa izi, zomwe, m'mawonekedwe ake ndi njira yolumikizirana ndi wogwiritsa ntchito, mopanda manyazi adakopera malo omwewo "Catalogizer" ya IRBIS 64 - ili ndi funso losiyana. Mwachidule: zinandipatsa kulimba kofunikira pakukula kwanga panthawi yomaliza maphunziro anga (kupanda kutero injini ya indigestible parser yokha inali yosakwanira). Kuphatikiza apo, ndidakumana ndi zovuta pakukhazikitsa mawonekedwe a Cataloger workstation ndi ma module anga, omwe akhazikitsidwa mu C ++ ndi C #, ndikulowa mwachindunji injini yanga.

Mwambiri, chodabwitsa, chinali chojambula chovuta kwambiri chamtsogolo cha BIRMA.NET chomwe chimayenera kukhala "champhamvu" changa kwa zaka zinayi zotsatira. Sizinganenedwe kuti panthawiyi sindinayesere kupeza njira zatsopano, zokwaniritsira kukhazikitsidwa kwa lingaliro lakale. Mwa zina zatsopano, payenera kuti pakhala pali zotsatizana zotsatiridwa zomwe zikadaphatikizirapo zinthu zina - umu ndi momwe ndingapangire lingaliro la ma tempuleti apadziko lonse lapansi ofotokozera zofalitsa ndi zinthu zina zosangalatsa. Komabe, muzochita zanga panthawiyo, zonsezi sizinafunike pang'ono, ndipo kukhazikitsidwa komwe ndinali nako panthawiyo kunali kokwanira kulemba zolemba zamkati. Kuphatikiza apo, vekitala ya chitukuko cha laibulale yathu idayamba kupatukira mopitilira kusungitsa malo osungiramo zinthu zakale, kupereka malipoti ndi zinthu zina zomwe sizinandisangalatse, zomwe pamapeto pake zidandikakamiza kuti ndisiye, ndikupereka mwayi kwa iwo omwe angafune. kondwerani nazo zonsezi .

Chodabwitsa n'chakuti, pambuyo pa zochitika zazikuluzikuluzi, polojekiti ya BIRMA, yomwe panthawiyo inali kale ndi zizindikiro zonse za ntchito yomanga kwa nthawi yaitali, ikuwoneka kuti ikuyamba kukhala ndi moyo watsopano womwe unali kuyembekezera kwa nthawi yaitali! Ndidakhala ndi nthawi yochulukirapo yoganizira zopanda pake, ndidayambanso kuphatikizira Webusaiti Yadziko Lonse kufunafuna zofananira (mwamwayi, tsopano ndimatha kuganiza kale kuti ndiyang'ane zonsezi osati kulikonse, koma pa GitHub), komanso kwinakwake ku At the Kumayambiriro kwa chaka chino, ndinapeza chinthu chofanana ndi kampani yodziwika bwino ya Salesforce pansi pa dzina losafunika. Gorp. Payokha, imatha kuchita pafupifupi chilichonse chomwe ndimafunikira kuchokera ku injini yapaser - mwachitsanzo, kudzipatula mwanzeru zidutswa zamtundu uliwonse kuchokera pamawu osagwirizana, koma opangidwa momveka bwino, ndikukhala ndi mawonekedwe osavuta kugwiritsa ntchito kwa wogwiritsa ntchito, kuphatikiza zomveka, monga pateni, template ndi zochitika, ndipo nthawi yomweyo kugwiritsa ntchito mawu odziwika bwino a mawu okhazikika, omwe amakhala owerengeka mosayerekezeka chifukwa chogawikana m'magulu osankhidwa a semantic kuti agawanike.

Mwambiri, ndinaganiza kuti uyu ndiye Gorp (Ndikudabwa kuti dzinali limatanthauza chiyani? Mwina mtundu wina wa "general oriented regular parser"?) - ndendende zomwe ndakhala ndikuyang'ana kwa nthawi yaitali. Zowona, kukhazikitsidwa kwake kwakanthawi pazosowa zanga kunali ndi vuto kotero kuti injini iyi idafunikira kutsatira mosamalitsa dongosolo la mawu oyambira. Kwa malipoti ena monga mafayilo a log (omwe adayikidwa ndi omanga ngati zitsanzo zomveka zogwiritsira ntchito polojekitiyi), izi ndizoyenera, koma kwa malemba omwewo a zolemba zomwe zili mkati, sizingatheke. Kupatula apo, tsamba lomwelo lomwe lili ndi mndandanda wa zomwe zili mkati limatha kuyamba ndi mawu akuti "Zamkatimu", "Zamkatimu" ndi mafotokozedwe ena aliwonse oyambira omwe sitiyenera kuyika pazotsatira zomwe tikufuna (ndikuzidula pamanja). nthawi zonse zimakhalanso zovuta). Kuphatikiza apo, pakati pa zinthu zobwerezabwereza, monga dzina la wolemba, mutu ndi nambala yatsamba, tsambalo litha kukhala ndi zinyalala zina (mwachitsanzo, zojambula, ndi zilembo zachisawawa), zomwe zingakhale zabwinonso dula. Komabe, gawo lomaliza silinali lofunika kwambiri, koma chifukwa choyamba, kukhazikitsa komwe kulipo sikunayambe kuyang'ana zofunikira m'malemba kuchokera kumalo enaake, koma m'malo mwake adangozikonza kuyambira pachiyambi, sanapeze machitidwe otchulidwa pamenepo ndipo ... anamaliza ntchito yanga. Mwachiwonekere, kusintha kwina kunali kofunika kuti osachepera alole malo pakati pa zobwerezabwereza, ndipo izo zinandipangitsa ine kubwerera kuntchito.

Vuto lina linali loti pulojekitiyo idakhazikitsidwa ku Java, ndipo ngati ndikukonzekera m'tsogolomu kuti ndigwiritse ntchito njira zina zogwiritsira ntchito lusoli ndi mapulogalamu omwe amadziwika kuti alowetse deta muzinthu zomwe zilipo (monga "Cataloguer" ya Irbis), ndiye osachepera Osachepera chitani izi mu C# ndi .NET. Sikuti Java palokha ndi chilankhulo choyipa - ndidachigwiritsapo ntchito kukhazikitsa pulogalamu yosangalatsa yazenera yomwe idakhazikitsa magwiridwe antchito a pulogalamu yowerengera yapanyumba (monga gawo la polojekiti). Ndipo ponena za syntax ndizofanana kwambiri ndi C-charp yemweyo. Chabwino, izi ndizowonjezera: kudzakhala kosavuta kuti nditsirize ntchito yomwe ilipo. Komabe, sindinkafuna kulowanso m'dziko lachilendo ili lazenera (kapena m'malo, desktop) matekinoloje a Java - pambuyo pake, chilankhulocho sichinali "chogwirizana" kuti chigwiritsidwe ntchito, ndipo sindinkalakalaka kubwerezabwereza. chochitika cham'mbuyo. Mwina ndi chifukwa chakuti C # molumikizana ndi WinForms ili pafupi kwambiri ndi Delphi, yomwe ambiri aife tidayamba nayo. Mwamwayi, yankho lofunikira linapezedwa mwamsanga - mu mawonekedwe a polojekiti IKVM.NET, zomwe zimapangitsa kuti zikhale zosavuta kumasulira mapulogalamu omwe alipo a Java kukhala .NET code. Zowona, pulojekitiyo inali itasiyidwa kale ndi olemba panthawiyo, koma kukhazikitsidwa kwake kwaposachedwa kunandilola kuti ndikwaniritse bwino zomwe ndikufunikira pazolemba zoyambira. Gorp.

Kotero ndinapanga zosintha zonse zofunika ndikusonkhanitsa zonse mu DLL ya mtundu woyenera, womwe ukhoza "kutengedwa" mosavuta ndi mapulojekiti aliwonse a .NET Framework yopangidwa mu Visual Studio. Pakadali pano, ndidapanga wosanjikiza wina kuti muwonetse bwino zotsatira zomwe zabwezedwa Gorp, m'mawonekedwe a deta yofananira yomwe ingakhale yabwino kukonzedwa poyang'ana tebulo (potengera mizere yonse ndi mizati; makiyi onse a mtanthauzira mawu ndi ma index a manambala). Chabwino, zofunikira zokha zopangira ndikuwonetsa zotsatira zidalembedwa mwachangu.

Komanso, njira yosinthira ma tempuleti a injini yatsopanoyo kuti aphunzitse kusanthula zitsanzo zomwe zilipo za zolemba zojambulidwa zazomwe zili mkati sizinabweretse zovuta zapadera. M'malo mwake, sindinafunikire kutchulanso ma tempuleti anga akale: Ndinangopanga ma templates onse ofunikira kuyambira poyambira. Komanso, ngati ma templates omwe adapangidwa kuti azigwira ntchito ndi mtundu wakale wa dongosololi akhazikitsa dongosolo locheperako la zolemba zomwe zitha kugawidwa bwino ndi chithandizo chawo, injini yatsopanoyo idapangitsa kale kupanga ma tempuleti apadziko lonse lapansi oyenera mitundu ingapo yamakapu pa. kamodzi. Ndinayeseranso kulemba mtundu wina wa template yokwanira ya zolemba zilizonse zosagwirizana, ngakhale, ndithudi, ngakhale ndi mwayi watsopano wotsegulira kwa ine, kuphatikizapo, makamaka, luso lochepa lokhazikitsa ndondomeko zobwerezabwereza zomwezo ( monga, mwachitsanzo, surnames ndi oyamba olemba angapo motsatana), izi zidakhala utopia.

Mwina m'tsogolomu kudzakhala kotheka kukhazikitsa lingaliro lina la ma meta-templates, omwe adzatha kuyang'ana malemba kuti agwirizane ndi ma tempuleti angapo omwe alipo nthawi imodzi, ndiyeno, malinga ndi zotsatira zomwe mwapeza, sankhani yabwino kwambiri, pogwiritsa ntchito mtundu wina wa algorithm yanzeru. Koma tsopano ndinakhudzidwa kwambiri ndi funso lina. Wopalasa ngati Gorp, mosasamala kanthu za kusinthasintha kwake komanso zosintha zomwe ndidapanga, sizinali zothekera kuchita chinthu chimodzi chowoneka ngati chosavuta chomwe wolemba wanga wodzilemba yekha adatha kuchita kuchokera ku mtundu woyamba. Ndiko kuti: anali ndi mwayi wopeza ndi kuchotsa zidutswa zonse zomwe zimagwirizana ndi chigoba chomwe chimagwiritsidwa ntchito pamalo oyenera, koma alibe chidwi ndi zomwe malembawo ali nawo m'mipata pakati pa zidutswazi. Pakadali pano, ndangosintha pang'ono injini yatsopanoyo, ndikuilola kuti ifufuze kubwereza kwatsopano kwa mndandanda womwe waperekedwa wa masks oterowo kuchokera pomwe pano, ndikusiya mwayi wokhalapo m'malemba a zilembo zosagwirizana. zosawerengeka pakugawa, zotsekeredwa pakati pa zida zobwereza zomwe zapezeka. Komabe, izi sizinatheke kuyika chigoba chotsatira mosasamala kanthu za zotsatira za kufufuza kachidutswa kameneka pogwiritsa ntchito chigoba chofanana: kukhwima kwa malemba omwe akufotokozedwa sikunasiyire malo ophatikizira mopanda malire a zilembo zosakhazikika.

Ndipo ngati pazitsanzo za zolemba zomwe ndidakumana nazo izi sizinawoneke zovuta kwambiri, ndiye poyesa kugwiritsa ntchito njira yatsopano yopangira ntchito yofananira zomwe zili patsamba (mwachitsanzo, kugawa komweko), ndiye kuti zoperewera zili pano adawonekera ndi kuwonekera kwawo konse. Kupatula apo, ndizosavuta kukhazikitsa masks ofunikira pazidutswa zapaintaneti, pomwe deta yomwe tikuyang'ana (yomwe ikufunika kuchotsedwa) iyenera kupezeka, koma tingakakamize bwanji wofalitsayo kuti apite ku yotsatira. Chidutswa chofananira, ngakhale pali ma tag onse ndi mawonekedwe a HTML omwe angayikidwe m'mipata pakati pawo?

Nditaganiza pang'ono, ndidaganiza zoyambitsa mitundu ingapo yautumiki (% zonse_m'mbuyo) и (%onse_pambuyo), akutumikira chifuno chodziŵika bwino cha kutsimikizira kuti chirichonse chimene chingakhale m’mawu oyambira chikudumphidwa chisanachitike chitsanzo (chigoba) chilichonse chotsatira iwo. Komanso, ngati (% zonse_m'mbuyo) adangonyalanyaza zophatikizika zonsezi, ndiye (%onse_pambuyo), m'malo mwake, adawalola kuti awonjezedwe ku chidutswa chofunidwa atachoka ku chidutswa chapitacho. Zikumveka zosavuta, koma kuti ndikwaniritse lingaliroli ndidayenera kusanthulanso magwero a gorp kuti ndisinthe zofunikira kuti ndisathyole malingaliro omwe adakhazikitsidwa kale. Pamapeto pake, tidatha kuchita izi (ngakhale ngakhale, choyamba, ngakhale chovuta kwambiri, kukhazikitsidwa kwa gawo langa kunalembedwa, komanso mwachangu - m'masabata angapo). Kuyambira pano, dongosololi lidakhala lodziwika bwino padziko lonse lapansi - pasanathe zaka 12 pambuyo poyeserera koyamba kuti ligwire ntchito.

Zoonadi, awa si mapeto a maloto athu. Mutha kulembanso template ya gorp parser mu C #, pogwiritsa ntchito malaibulale omwe alipo kuti mugwiritse ntchito galamala yaulere. Ndikuganiza kuti code iyenera kukhala yophweka kwambiri, ndipo izi zidzatithandiza kuchotsa cholowacho ngati magwero a Java alipo. Koma ndi mtundu womwe ulipo wa injini, ndizothekanso kuchita zinthu zosiyanasiyana zosangalatsa, kuphatikiza kuyesa kugwiritsa ntchito ma meta-templates omwe ndanena kale, osatchulanso kugawa deta zosiyanasiyana kuchokera kumasamba osiyanasiyana (komabe, sindikutsutsa. kuti zida zapadera zamapulogalamu zomwe zilipo ndizoyenera kwambiri pa izi - sindinakhalepo ndi chidziwitso choyenera chozigwiritsa ntchito pano).

Mwa njira, chilimwechi ndidalandira kale kuyitanidwa ndi imelo kuchokera ku kampani yomwe imagwiritsa ntchito ukadaulo wa Salesforce (wopanga choyambirira Gorp), perekani zoyankhulana za ntchito yotsatira ku Riga. Tsoka ilo, pakadali pano sindine wokonzeka kutumizidwanso kotere.

Ngati nkhaniyi idzutsa chidwi, ndiye kuti mu gawo lachiwiri ndiyesera kufotokoza mwatsatanetsatane ukadaulo wopangira ndikusintha ma templates pogwiritsa ntchito chitsanzo cha kukhazikitsa komwe kumagwiritsidwa ntchito ku Salesforce. Gorp (zowonjezera zanga, kupatulapo mawu angapo omwe afotokozedwa kale, sizisintha kwenikweni pa template ya syntax yokha, kotero pafupifupi zolemba zonse za dongosolo loyambirira Gorp Zoyeneranso mtundu wanga).

Source: www.habr.com

Kuwonjezera ndemanga