Iyo nyaya yeimwe diki purojekiti makore gumi nemaviri kureba (inenge BIRMA.NET kekutanga uye kutaura chokwadi ruoko rwekutanga)

Kuberekwa kwepurojekiti iyi kunogona kunzi ipfungwa duku yakauya kwandiri pane imwe nzvimbo pakupera kwa2007, iyo yaizofanirwa kuwana chimiro chayo chekupedzisira makore gumi nemaviri gare gare (panguva ino nenguva - hongu, kunyange zvazvo kushandiswa kwemazuva ano, maererano kumunyori, zvinogutsa) .

Izvo zvese zvakatanga apo, mukuita basa rangu repamutemo muraibhurari, ndakakwevera pfungwa kune chokwadi chekuti maitiro ekuisa data kubva kune yakaongororwa zvinyorwa zvematafura ezviri mukati mebhuku (uye mimhanzi) zvinyorwa mudura raivepo, sezviri pachena, inogona kurerutswa uye kuita otomatiki, kutora mukana weiyo pfuma yekurongeka uye kudzokorora kwese data rinodiwa pakuisa, senge zita remunyori wechinyorwa (kana isu tichitaura nezve muunganidzwa wezvinyorwa), musoro we chinyorwa (kana kuti subtitle inoratidzwa mutafura yezviri mukati) uye nhamba yepeji yetafura iripo yezvinhu zvemukati. Pakutanga, ndainyatsogutsikana kuti hurongwa hwakakodzera kuita basa iri hwaigona kuwanikwa zviri nyore paInternet. Apo kumwe kushamisika kwakakonzerwa nokuti ndakanga ndisingakwanisi kuwana chirongwa chakadaro, ndakasarudza kuedza kuchiita ndoga.

Mushure menguva pfupi pfupi, yekutanga prototype yakatanga kushanda, yandakabva ndatanga kushandisa mumabasa angu ezuva nezuva, panguva imwe chete ndichiigadzirisa pamienzaniso yese yakauya kuruoko rwangu. Neraki, kunzvimbo yangu yebasa, kwandakanga ndisiri mugadziri wepurogiramu, ndakabva ndasiya "nguva yekuzorora" pabasa rangu, panguva iyo ndainyatso gadzirisa pfungwa dzangu - chinhu chisingafungidzike muzvinhu zvazvino, izvo zvinoreva. mishumo yezuva nezuva yebasa rakaitwa mukati mezuva. Kukwenenzvera chirongwa kwakatora huwandu husingasviki gore, asi kunyangwe mushure meizvozvo mhedzisiro yacho yaisakwanisa kunzi yakabudirira zvachose - pfungwa dzakawanda dzakasiyana dzakaiswa pakutanga dzaive dzisinganyatso nzwisisike kuti dziitwe. be skipped; kutarisa mberi kwezvinhu (nechinangwa chekuisa zvinhu zvekare mumitsva yekutsvaga); kunyangwe isu pachedu kuedza kuita chimwe chinhu senge mataurirwo enguva dzose (ayo ane yakasarudzika syntax). Ndinofanira kutaura kuti izvi zvisati zvaitika ndakanga ndasiya hurongwa (kwemakore masere, kana zvisati zvaitika), saka mukana mutsva wekushandisa unyanzvi hwangu kune basa rinonakidza uye rinodiwa rakatora pfungwa dzangu zvachose. Hazvishamisi kuti mhedzisiro kodhi kodhi - pasina nzira dzakajeka dzemagadzirirwo ayo padivi pangu - nekukurumidza yakave mishmash isingafungidzike yezvidimbu zvakasiyana mumutauro weC nezvimwe zvinhu zveC ++ uye maficha ekuona hurongwa (pakutanga yakasarudzwa kushandisa dhizaini yakadaro seBorland C ++ Builder - "inenge Delphi, asi muC"). Nekudaro, zvese izvi zvakazobereka michero mukuita otomatiki zviitiko zvezuva nezuva zveraibhurari yedu.

Panguva imwe cheteyo, ndakasarudza, zvichida, kutora makosi ekudzidzisa vanogadzira software. Handizive kana zvichikwanisika here kudzidza “kuva programmer” kubva pakutanga, asi tichifunga nezvehunyanzvi hwandaive nahwo panguva iyoyo, ndakakwanisa kuita hunyanzvi matekinoroji aive akakosha panguva iyoyo, akadai. seC#, Visual Studio yekuvandudzwa pasi peNET, pamwe chete nehumwe matekinoroji ane chekuita neJava, HTML neSQL. Kudzidziswa kwese kwakatora makore maviri akakwana, uye kwakashanda sepokutangira imwe purojekiti yangu, iyo yakazotora makore akati wandei - asi iyi inyaya yekudhindwa kwakasiyana. Pano zvingangove zvakakodzera kuziva kuti ndakaedza kugadzirisa budiriro yandakanga ndave nayo pane yakatsanangurwa purojekiti kugadzira yakazara-yakazara hwindo application muC # uye WinForms iyo inoshandisa iyo inodiwa mashandiro, uye nekuishandisa sehwaro hwe. iri kuuya diploma chirongwa.
Nokufamba kwenguva, pfungwa iyi yakatanga kuratidzika kwandiri kuti yakakodzera kutaurwa pamisangano yegore negore nekubatanidzwa kwevamiririri vemaraibhurari akasiyana-siyana se "LIBKOM" uye "CRIMEA". Pfungwa, hongu, asi kwete kuitisa kwangu panguva iyoyo. Ipapo ndaitarisirawo kuti mumwe munhu achainyora patsva achishandisa nzira dzine unyanzvi. Imwe nzira kana imwe, ne2013 ndakasarudza kunyora mushumo pamusoro pebasa rangu rekutanga uye nditumire kuKomiti Yekuronga Musangano nechikumbiro cherubatsiro rwekutora chikamu mumusangano. Kukushamisika kwangu, chikumbiro changu chakabvumirwa, uye ndakatanga kuvandudza purojekiti kuti ndigadzirire kuzoratidzwa pamusangano.

Panguva iyoyo, purojekiti yakanga yatogamuchira zita idzva BIRMA, yakawana akasiyana ekuwedzera (kwete zvakanyanya kuitwa zvizere, asi zvinofungidzirwa) kugona - ruzivo rwese runogona kuwanikwa mushumo yangu.

Kutaura chokwadi, zvakanga zvakaoma kudana BIRMA 2013 chimwe chinhu chakakwana; Kutaura chokwadi, chaive chipenga chakashata chakaitwa nekukasira. Panyaya yekodhi, pakanga pasina hunyanzvi hutsva zvachose, kunze kwekungoedza kusinga batsire kugadzira imwe mhando ye syntax yakabatana yeparser, muchimiro chinoyeuchidza IRBIS 64 fomati mutauro (uye muchokwadi, zvakare ISIS system - ine maparentheses sezvimiro zvecyclic; nei Panguva yandaifunga kuti yaitaridzika zvakanaka). Muparidzi akagumburwa neaya madenderedzwa erudzi rwakakodzera (sezvo maparenthesi akaitawo rimwe basa, kureva, aimaka zvimiro zvesarudzo panguva yekupatsanura anogona kusvetuka). Ini zvakare ndinoreva munhu wese anoda kujairana neiyo ipapo yakaoma kufungidzira, isina kurongeka syntax yeBIRMA mune zvakadzama kune yangu chirevo chenguva iyoyo.

Pakati pese, kunze kwekunetsekana nekwangu parser, handina chimwezve chekutaura maererano nekodhi yevhezheni iyi - kunze kwekutendeutsa kudzoreredzwa kwezviwanikwa zviripo kuita C++ uku tichichengetedza mamwe maficha e.NET code (kutaura chokwadi, ichokwadi. zvakaoma kunzwisisa , chii chaizvo chakaita kuti ndidzosere zvinhu zvese kumashure - pamwe kumwe kutya kwehupenzi kwekuchengeta macode angu akavanzika, sekunge chimwe chinhu chakaenzana neresipi yakavanzika yeCoca-Cola).

Zvichida sarudzo yehupenzi iyi zvakare chikonzero chekuomerwa kwekubatanidza raibhurari yeDLL inoguma neiyo iripo dhizaini yebasa rakagadzirwa pamba rekuisa data mutsamba yemagetsi (hongu, handina kutaura chimwe chinhu chakakosha: kubva zvino zvichienda mberi, zvese. iyo kodhi yeBIRMA "injini" yaive sezvaitarisirwa, inoparadzaniswa kubva kune iyo interface chikamu uye yakaiswa muDLL yakakodzera). Sei zvaive zvakakodzera kunyora imwe nzvimbo yekushandira yezvinangwa izvi, izvo, mukuonekwa kwayo uye nzira yekudyidzana nemushandisi, zvisinganyare kukopa imwechete yebasa "Catalogizer" yeIRBIS 64 system - uyu mubvunzo wakasiyana. Muchidimbu: zvakapa kusimba kunodiwa kune yangu panguva iyoyo budiriro yepurojekiti yangu yekupedza kudzidza (zvikasadaro iyo indigestible parser injini yega yanga isina kukwana). Pamusoro pezvo, ini ndakabva ndasangana nemamwe matambudziko mukuita iyo interface yeCataloger workstation nemamodule angu, akaiswa muC ++ neC #, uye nekuwana injini yangu zvakananga.

Kazhinji, zvisinganzwisisike, yaive iyi isinganzwisisike prototype yeramangwana BIRMA.NET yaizofanirwa kuve "basa rangu" kwemakore mana aitevera. Izvo hazvigone kutaurwa kuti panguva ino ini handina kumboedza kutsvaga nzira dzeimwe nyowani, yakawedzera kuzadzisa zano renguva refu. Pakati pezvimwe zvitsva, panofanira kunge pakatove nested cyclic sequences dzaigona kunge dzakasanganisira sarudzo - aya ndiwo maitiro andaizounza kuhupenyu pfungwa yematemplate epasirese erondedzero yebhaibheri yezvinyorwa uye zvimwe zvakasiyana zvinhu zvinonakidza. Nekudaro, mumabasa angu anoshanda panguva iyoyo, zvese izvi zvaive mukuda kushoma, uye kuita kwandaive nako panguva iyoyo kwaive kwakaringana kuisa matafura ezviri mukati. Uye zvakare, iyo vector yekuvandudza raibhurari yedu yakatanga kutsauka zvakanyanya uye zvakanyanya kuenda kudhijitari yezvinyorwa zvemuseum, kushuma uye zvimwe zviitiko zvisingafadzi kwandiri, izvo pakupedzisira zvakandimanikidza kuti pakupedzisira ndisiye, ndichipa nzira kune avo vaizoda. fadzwa kwazvo nezvose izvi.

Zvinotoshamisa ndezvokuti, mushure mezviitiko izvi zvinoshamisa apo chirongwa cheBIRMA, icho panguva iyoyo chakanga chatova nemhando dzose dzechigadzirwa chenguva refu yekuvaka, chakaita sechakatanga kutora hupenyu hutsva hwakanga hwakamirirwa kwenguva refu! Ndakanga ndine nguva yakawanda yekusununguka yekufunga zvisina basa, ndakatanga zvakare kusanganisa World Wide Web ndichitsvaga chimwe chinhu chakafanana (nerombo rakanaka, ikozvino ndaigona kutofungidzira kutsvaga zvese izvi kwete chero kupi, asi paGitHub), uye kumwe kunhu mukati. kutanga kwegore rino, ndakazosangana nechigadzirwa chinoenderana kubva kune inozivikanwa Salesforce kambani pasi pezita risingakoshi. Gorp. Iyo pachayo, yaigona kuita zvinenge zvese zvandaida kubva kune yakadaro parser injini - kureva, nehungwaru kupatsanura zvimedu kubva kune zvisina tsarukano, asi zvakajeka zvinyorwa zvakarongeka, nepo iine mushandisi-inoshamwaridzika interface yemushandisi wekupedzisira, kusanganisira izvo zvinonzwisisika essences, se. patani, template uye chiitiko, uye panguva imwe chete uchishandisa syntax yakajairwa yezvimiro zvenguva dzose, izvo zvinova zvinoverengeka zvisingaenzaniswi nekuda kwekukamurwa kuita zvikwata zvemasendiki zvakatarwa kuti zvipatsanurwe.

Kazhinji, ndakasarudza kuti uyu ndiye Gorp (Ndinoshamisika kuti zita iri rinorevei? Zvichida imwe mhando ye "general oriented regular parser"?) - chaizvo izvo zvandanga ndichitsvaga kwenguva yakareba. Chokwadi, kuita kwayo ipapo kwezvandinoda kwaive nedambudziko rakadaro zvekuti injini iyi yaida kuomerera zvakanyanya kune kutevedzana kwemaitiro ekwakabva zvinyorwa. Kune mamwe mishumo senge mafaira elogi (kureva, iwo akaiswa nevagadziri semuenzaniso wakajeka wekushandisa purojekiti), izvi zvakanyatsokodzera, asi kune mamwe magwaro eakaongororwa matafura ezviri mukati, hazvigoneke. Mushure mezvose, iro peji rimwechete rine tafura yezviri mukati rinogona kutanga nemashoko okuti "Tafura yeZviri mukati", "Zviri mukati" uye chero imwe tsananguro yekutanga yatisingade kuisa mumibairo yekuongorora kwakarongwa (uye kuzvicheka nemaoko. nguva imwe neimwe zvakare haina kunaka). Pamusoro pezvo, pakati pezvinhu zvinodzokorora zvemunhu, senge zita remunyori, zita uye nhamba yepeji, peji rinogona kunge riine marara akati wandei (semuenzaniso, madhirowa, uye mavara asina kujairika), izvo zvingave zvakare zvakanaka kukwanisa cheka. Zvisinei, chikamu chekupedzisira chakanga chisati chanyanya kukosha, asi nekuda kwekutanga, kushandiswa kuripo hakugone kutanga kutsvaga zvivako zvakakosha muzvinyorwa kubva kune imwe nzvimbo, asi panzvimbo iyo zvakangozvigadzirisa kubva pakutanga, hazvina kuwana. mapeteni akataurwa ipapo uye ... akapedza basa rangu. Zviripachena, kumwe kukwenenzvera kwaidiwa kuti ingobvumidza imwe nzvimbo pakati pezvimiro zvinodzokorora, uye izvo zvakandidzosera kubasa.

Rimwe dambudziko nderekuti iyo purojekiti pachayo yakaitwa muJava, uye kana ndikaronga mune ramangwana kuita dzimwe nzira dzekubatanidza tekinoroji iyi neyakajairwa maapplication ekupinda data mumadhatabhesi aripo (akadai seIrbis's "Cataloguer"), saka zvirinani. ita izvi muC# uye .NET. Hakusi kuti Java pachayo mutauro wakashata - ndakatomboishandisa kushandisa inonakidza hwindo application iyo yakaita mashandiro emumba programmable Calculator (sechikamu chechirongwa chekosi). Uye maererano ne syntax yakafanana zvakanyanya neiyo C-yakapinza. Zvakanaka, izvi zvinongowedzera: zvichave nyore kwandiri kuti ndipedze chirongwa chiripo. Nekudaro, ini ndakanga ndisingade kunyura zvakare mune ino yakasarudzika nyika yehwindo (kana kuti, desktop) Java tekinoroji - mushure mezvose, mutauro pachawo hauna "kurongedzerwa" kushandiswa kwakadaro, uye ini handina kutomboshuva kudzokorora. chiitiko chekare. Zvichida ndizvo chaizvo nokuti C # pamwe chete neWinForms iri pedyo zvikuru neDelphi, iyo vazhinji vedu takambotanga nayo. Neraki, mhinduro inodiwa yakawanikwa nekukurumidza - nenzira yeprojekiti IKVM.NET, izvo zvinoita kuti zvive nyore kushandura mapurogiramu eJava aripo kuti agadziriswe .NET code. Ichokwadi, iyo purojekiti pachayo yakanga yatosiiwa nevanyori panguva iyoyo, asi kuita kwayo kwazvino kwakandibvumira kuti ndiite zvinobudirira zviito zvinodikanwa zvezvinyorwa zvekutanga. Gorp.

Saka ndakaita shanduko dzose dzinodiwa uye ndakazviunganidza zvose muDLL yemhando yakakodzera, iyo inogona "kutorwa" nyore nyore nemapurojekiti e.NET Framework yakagadzirwa muVisual Studio. Zvichakadaro, ini ndakagadzira imwe layer yekuonesa zviri nyore mhedzisiro yakadzoswa Gorp, muchimiro chezvimiro zvedata zvinoenderana izvo zvingave zviri nyore kugadzirisa mukutarisa kwetafura (kutora sehwaro ese ari maviri mitsara nemakoramu; ese makiyi eduramazwi uye manhamba indexes). Zvakanaka, izvo zvinodiwa pachezvazvo zvekugadzirisa uye kuratidza mhinduro zvakanyorwa nekukurumidza.

Zvakare, maitiro ekugadzirisa matemplate einjini nyowani kuitira kuti aidzidzise kuburitsa masampuli aripo etafura yakaongororwa yezvinyorwa hazvina kukonzera matambudziko akakosha. Muchokwadi, ini handina kana kufanirwa kutarisa kune yangu yapfuura matemplate zvachose: Ini ndakangogadzira ese anodiwa matemplate kubva kutanga. Uyezve, kana ma templates akagadzirirwa kushanda neshanduro yapfuura yehurongwa akagadzira chimiro chakamanikana chezvinyorwa zvinogona kukamurwa nemazvo nerubatsiro rwavo, injini itsva yakatoita kuti zvikwanise kugadzira matemplate epasirese akakodzera kune akati wandei marudzi emakapu pa. kamwe. Ndakatomboedza kunyora imwe mhando yetemplate yakazara kune chero tafura yekupokana yezvinyorwa zvemukati, kunyangwe, zvakadaro, kunyangwe nemikana mitsva inondivhurira, kusanganisira, kunyanya, kugona kushomeka kwekuita zvakafanana nested kudzokorora kutevedzana ( senge, semuenzaniso, surnames uye ekutanga vanyori vakati wandei mumutsara), izvi zvakazove utopia.

Zvichida mune ramangwana zvichave zvichigoneka kuita imwe pfungwa yemeta-templates, iyo inozokwanisa kutarisa iyo sosi mameseji kuti inoenderana neakawanda ematemplate aripo kamwechete, uyezve, maererano nemhedzisiro yakawanikwa, sarudza iyo yakanyanya kufanirwa, uchishandisa imwe mhando yehungwaru algorithm. Asi zvino ndakanga ndava kunetseka pamusoro pomumwe mubvunzo. A parser like Gorp, zvisinei nekusiyana-siyana kwayo uye nekugadziridzwa kwandakaita, yakanga ichiri kutadza kuita chinhu chimwe chairatidzika sechiri nyore icho muparidzi wangu akazvinyora akakwanisa kuita kubva mushanduro yekutanga. Kureva: aikwanisa kuwana uye kubvisa kubva muzvinyorwa zvinyorwa zvese zvimedu zvinoenderana nemask inotsanangurwa mukati metemplate yakashandiswa munzvimbo chaiyo, asi asingatombofarire izvo zvinyorwa zvakapihwa mune nzvimbo dziri pakati pezvimedu izvi. Kusvika pari zvino, ini ndangovandudza zvishoma injini itsva, ndichiibvumira kutsvaga kudzokorora kutsva kwekutevedzana kwakapihwa kwemasks akadaro kubva pachinzvimbo chazvino, zvichisiya mukana wekuvapo kwechinyorwa cheseti yeasingabvumirwe mavara aive akazara. isingaverengeki mukuparadzanisa, yakavharirwa pakati pezvakaonekwa zvinodzokorora zvivakwa. Nekudaro, izvi hazvina kuita kuti zvikwanisike kuseta maski anotevera zvisinei nemhedzisiro yekutsvaga chidimbu chakapfuura uchishandisa mask inoenderana: kuomarara kweakatsanangurwa chinyorwa chimiro hachina kusiya nzvimbo yekupokana inclusions yemavara asina kujairika.

Uye kana yemienzaniso yematafura ezviri mukati zvandakasangana nedambudziko iri risati raita kunge rakanyanya, saka kana uchiedza kushandisa nzira nyowani yekuisa kune rimwe basa rakafanana rekupatsanura zviri mukati mewebhusaiti (kureva zvakafanana parsing), yayo miganhu iri pano vakaonekwa nekuonekwa kwavo kwese. Mushure mezvose, zviri nyore kuseta masiki anodiwa ezvimedu zvewebhu markup, pakati peiyo data yatiri kutsvaga (inoda kubviswa) inofanira kuwanikwa, asi tingamanikidza sei muparadzi kuti aenderere mberi kune inotevera. chidimbu chakafanana, kunyangwe zvese zvinokwanisika ma tag uye HTML hunhu hunogona kuiswa munzvimbo dziri pakati pavo?

Mushure mekufunga zvishoma, ndakafunga kusuma maitiro akati wandei ebasa (%zvese_pamberi) и (% all_after), kubatira donzo riri pachena rokuva nechokwadi chokuti chinhu chiri chose chingava murugwaro rwamabvisirwo chinosvetukira patani ipi neipi (masiki) inovatevera. Uyezve, kana (%zvese_pamberi) kungofuratira zvese izvi zvekupokana zvinosanganisirwa, saka (% all_after), pane zvinopesana, vakabvumira kuti vawedzere kune chidimbu chaidiwa mushure mekufamba kubva kune chidimbu chekare. Zvinonzwika zviri nyore, asi kuti ndiite pfungwa iyi ndaifanira kuyananisa gorp masosi zvakare kuti ndigadzirise zvinodiwa kuti ndisatyora iyo yakatoitwa pfungwa. Mukupedzisira, isu takakwanisa kuita izvi (kunyangwe kunyangwe iyo chaiyo, yekutanga, kunyangwe yakapusa, kuitiswa kwepaser yangu kwakanyorwa, uye nekukurumidza - mumavhiki mashoma). Kubva zvino zvichienda mberi, iyo system yakatora fomu yepasi rose - isingasviki makore gumi nemaviri mushure mekuedza kwekutanga kuita kuti ishande.

Zvechokwadi, uku hakusi kuguma kwezviroto zvedu. Iwe unogona zvakare kunyora zvachose iyo gorp template parser muC #, uchishandisa chero anowanikwa maraibhurari ekushandisa emahara girama. Ini ndinofunga iyo kodhi inofanirwa kurerutswa zvakanyanya, uye izvi zvinotitendera kuti tibvise nhaka nenzira yezviripo Java masosi. Asi nemhando iripo yeinjini, zvinogonekawo kuita zvinhu zvakasiyana-siyana zvinonakidza, kusanganisira kuedza kushandisa meta-templates yandambotaura, tisingarevi kuparadzanisa data rakasiyana kubva kune akasiyana mawebhusaiti (zvisinei, ini handirambire kunze. kuti aripo ehunyanzvi maturusi esoftware akakodzera kune izvi - ini handisati ndave neruzivo rwakakodzera rwekuvashandisa).

Nenzira, zhizha rino ndakatogamuchira kukokwa neemail kubva kukambani inoshandisa Salesforce tekinoroji (mugadziri weiyo yekutanga. Gorp), pfuura bvunzurudzo yebasa rinotevera muRiga. Nehurombo, panguva ino ini handisati ndagadzirira kutumirwazve kwakadai.

Kana chinyorwa ichi chikamutsa kumwe kufarira, saka muchikamu chechipiri ndichaedza kutsanangura zvakadzama tekinoroji yekugadzira uye nekuzoparura matemplate uchishandisa muenzaniso wekushandiswa kunoshandiswa muSalesforce. Gorp (zvangu zvekuwedzera, kunze kweati wandei ekushanda mazwi atotsanangurwa, ita chero shanduko kune template syntax pachayo, saka anenge ese magwaro eiyo yekutanga system. Gorp Inokodzera shanduro yangu zvakare).

Source: www.habr.com

Voeg