Labarin wani karamin aiki na tsawon shekaru goma sha biyu (game da BIRMA.NET a karon farko kuma da gaske)

Haihuwar wannan aikin za a iya la'akari da wani karamin ra'ayi wanda ya zo gare ni a wani wuri a karshen 2007, wanda aka ƙaddara don samun ta karshe form kawai 12 shekaru bayan (a wannan lokaci a lokaci - ba shakka, ko da yake a halin yanzu aiwatar, bisa ga). ga marubucin, yana da gamsarwa sosai) .

Hakan ya fara ne lokacin da, a cikin aiwatar da ayyukana na lokacin a cikin ɗakin karatu, na jawo hankali ga gaskiyar cewa tsarin shigar da bayanai daga rubutun da aka bincika na abubuwan da ke cikin littafin (da kiɗa) a cikin bayanan da ke akwai, a fili, za a iya muhimmanci sauƙaƙa da sarrafa kansa, shan amfani da dukiya na orderliness da repeatability na duk bayanan da ake bukata don shigar, kamar sunan marubucin labarin (idan muna magana ne game da tarin articles), da take. labarin (ko subtitle da aka nuna a cikin tebur na abun ciki) da lambar shafi na abun ciki na yanzu. Da farko, a zahiri na gamsu cewa tsarin da ya dace don aiwatar da wannan aikin yana iya samun sauƙin samu a Intanet. Lokacin da wani abin mamaki ya faru saboda ban sami irin wannan aikin ba, sai na yanke shawarar aiwatar da shi da kaina.

Bayan ɗan lokaci kaɗan, samfurin farko ya fara aiki, wanda nan da nan na fara amfani da shi a cikin ayyukana na yau da kullun, tare da cire shi akan duk misalan da suka zo hannuna. Abin farin ciki, a wurin aikina na yau da kullun, inda ba na kasance mai shirya shirye-shirye ba, har yanzu na rabu da “lokacin raguwa” a cikin aikina, wanda a lokacin na ci gaba da zaluntar ɗan yaro na - kusan abu ne wanda ba za a iya zato ba a cikin abubuwan da ke faruwa a yanzu, wanda ke nuni da hakan. rahotannin yau da kullun akan aikin da aka yi a rana. Tsarin goge shirye-shiryen ya ɗauki jimlar bai wuce kusan shekara guda ba, amma ko da bayan haka ba za a iya kiran sakamakon gabaɗaya gabaɗaya ba - an tsara dabaru daban-daban da farko waɗanda ba a bayyana su gaba ɗaya don aiwatarwa ba: abubuwan zaɓi waɗanda za su iya. a tsallake; kallon gaba na abubuwa (don manufar musanya abubuwan da suka gabata zuwa sakamakon bincike); har ma da ƙoƙarin namu na aiwatar da wani abu kamar maganganu na yau da kullum (wanda ke da ma'auni na musamman). Dole ne in faɗi cewa kafin wannan na ɗan daina shirye-shirye (kusan shekaru 8, idan ba haka ba), don haka sabuwar damar yin amfani da basirata zuwa wani aiki mai ban sha'awa da mahimmanci ya ɗauki hankalina gaba ɗaya. Ba abin mamaki ba ne cewa sakamakon lambar tushe - in babu wata fayyace hanyoyin da za a bi don ƙirƙira ta a ɓangarena - da sauri ya zama mishmash ɗin da ba za a iya misaltuwa ba a cikin yaren C tare da wasu abubuwa na C ++ da kuma abubuwan shirye-shiryen gani (da farko shi An yanke shawarar yin amfani da irin wannan tsarin tsarin kamar Borland C ++ Builder - "kusan Delphi, amma a C"). Koyaya, duk wannan a ƙarshe ya haifar da 'ya'ya a sarrafa ayyukan yau da kullun na ɗakin karatu.

A lokaci guda, na yanke shawarar, kawai, don ɗaukar kwasa-kwasan don horar da ƙwararrun masu haɓaka software. Ban sani ba ko yana yiwuwa a zahiri koyan “zama mai tsara shirye-shirye” daga can, amma la’akari da basirar da na riga na samu a wancan lokacin, na sami damar yin wasu fasahohin da suka fi dacewa a wancan lokacin, irin wannan. kamar C#, Visual Studio don haɓakawa a ƙarƙashin NET, da kuma wasu fasahohin da suka shafi Java, HTML da SQL. Gabaɗayan horon ya ɗauki jimillar shekaru biyu, kuma ya zama farkon farkon wani aikin nawa, wanda a ƙarshe ya shimfiɗa tsawon shekaru da yawa - amma wannan batu ne don ɗaba'ar daban. Anan zai dace kawai a lura cewa na yi ƙoƙari na daidaita abubuwan da na riga na samu akan aikin da aka bayyana don ƙirƙirar aikace-aikacen taga cikakke a cikin C # da WinForms wanda ke aiwatar da aikin da ya dace, da kuma amfani da shi azaman tushen tushen. aikin difloma mai zuwa.
Bayan lokaci, wannan ra'ayin ya fara zama a gare ni cewa ya cancanci a bayyana shi a irin waɗannan tarurrukan shekara-shekara tare da halartar wakilai na ɗakunan karatu daban-daban kamar "LIBKOM" da "CRIMEA". Tunanin, eh, amma ba aiwatar da ni ba a lokacin. Sa'an nan kuma na yi fatan cewa wani zai sake rubuta shi ta amfani da hanyoyin da suka dace. Wata hanya ko wata, a shekara ta 2013 na yanke shawarar rubuta rahoto game da aikina na farko kuma in aika da shi ga Kwamitin Shirya Taron tare da neman tallafi don shiga taron. Ga abin mamaki na, an amince da aikace-aikacena, kuma na fara inganta aikin don shirya shi don gabatarwa a taron.

A wannan lokacin, aikin ya riga ya sami sabon suna BIRMA, ya sami ƙarin ƙarin ayyuka daban-daban (ba a aiwatar da shi sosai ba, amma an ɗauka) damar - ana iya samun duk cikakkun bayanai a cikin rahotona.

A gaskiya, yana da wuya a kira BIRMA 2013 wani abu cikakke; Maganar gaskiya, sana'a ce mai ban tsoro da aka yi cikin gaggawa. A cikin sharuddan code, akwai kusan babu musamman sababbin abubuwa ko kadan, sai dai ga wani wajen m ƙoƙari na haifar da wani nau'i na hadin kai syntax ga parser, a cikin bayyanar reminiscent na IRBIS 64 Tsarin harshe (kuma a gaskiya, kuma ISIS tsarin -). tare da baka a matsayin tsarin cyclic; me yasa A lokacin na yi tunanin ya yi kyau sosai). Mai binciken ba da bege ya yi tuntuɓe a kan waɗannan da'irar bakan gizo na nau'in da ya dace (tun da baƙar fata kuma sun yi wani rawar, wato, sun yi alama tsarin zaɓi yayin tantancewa da za a iya tsallakewa). Ina sake mayar da duk wanda yake son sanin ma'anar kalmar BIRMA da ba ta dace ba a lokacin zuwa ga rahotona na wancan lokacin.

Gabaɗaya, ban da gwagwarmaya tare da parser na, ba ni da wani abin da zan ce game da lambar wannan sigar - sai dai jujjuyawar tushen tushen zuwa C ++ yayin da ke adana wasu fasalulluka na .NET code (a gaskiya, yana da wuyar fahimta , abin da daidai ya sa ni in motsa duk abin da baya - watakila wasu wawa tsoro ga kiyaye ta tushen lambobin sirri, kamar dai shi wani abu ne daidai da asirin girke-girke na Coca-Cola).

Watakila wannan wawa yanke shawara kuma ya ta'allaka ne da dalilin matsaloli wajen haɗawa da sakamakon DLL ɗakin karatu tare da data kasance keɓancewa na wurin aiki na gida don shigar da bayanai a cikin kasida ta lantarki (eh, ban ambaci wata muhimmiyar hujja ba: daga yanzu, duk. lambar "injin" BIRMA kamar yadda aka zata, an rabu da shi daga ɓangaren dubawa kuma an shirya shi a cikin DLL mai dacewa). Me ya sa ya zama dole don rubuta wani wurin aiki daban don waɗannan dalilai, wanda duk da haka, a cikin bayyanarsa da kuma hanyar hulɗa tare da mai amfani, ba tare da kunya ba ya kwafi wannan aikin "Catalogizer" na tsarin IRBIS 64 - wannan tambaya ce daban. A taƙaice: ya ba da ƙarfin da ya dace ga ci gaban da na samu a wancan lokacin don aikin kammala karatuna (in ba haka ba injin ɗin da ba zai iya narkewa ba shi kaɗai bai isa ba). Bugu da kari, sai na gamu da wasu matsaloli wajen aiwatar da hanyar sadarwa ta Cataloger workstation tare da nawa kayayyaki, wanda aka aiwatar a duka C++ da C #, da kuma shiga injina kai tsaye.

Gabaɗaya, abin banƙyama, shi ne wannan ƙaƙƙarfan ƙayyadaddun tsarin BIRMA.NET na gaba wanda aka ƙaddara ya zama "dokin aiki" na tsawon shekaru huɗu masu zuwa. Ba za a iya cewa a cikin wannan lokacin ban aƙalla ƙoƙarin nemo hanyoyin da za a bi don sabon, ƙarin cikakkiyar aiwatar da ra'ayin da ya daɗe ba. Daga cikin wasu sabbin abubuwa, ya kamata a riga an kafa jeri na cyclic wanda zai iya haɗa da abubuwan zaɓi - wannan shine yadda zan kawo ra'ayin samfuran samfuran duniya don kwatancin wallafe-wallafen da sauran abubuwa masu ban sha'awa iri-iri. Koyaya, a cikin ayyukana na yau da kullun a wancan lokacin, duk waɗannan ba su da buƙatu kaɗan, kuma aiwatar da ni a wancan lokacin ya isa sosai don shigar da abubuwan ciki. Bugu da kari, vector na ci gaban dakin karatun mu ya fara karkata zuwa ga digitization na gidajen tarihi na tarihi, bayar da rahoto da sauran ayyukan da ba su da sha'awa a gare ni, wanda a ƙarshe ya tilasta ni in bar shi a ƙarshe, yana ba da hanya ga waɗanda za su iya. ku ji daɗin duk wannan.

Abin ban sha'awa, bayan waɗannan abubuwan ban mamaki ne aikin BIRMA, wanda a wancan lokacin ya riga ya kasance yana da duk abubuwan da suka dace na aikin gine-gine na dogon lokaci, ya zama kamar ya fara ɗaukar sabuwar rayuwar da ake jira! Ina da ƙarin lokacin kyauta don tunanin banza, na sake fara haɗa Gidan Yanar Gizo na Duniya don neman wani abu makamancin haka (an yi sa'a, yanzu na riga na iya tunanin neman duk wannan ba kawai a ko'ina ba, amma akan GitHub), kuma wani wuri a cikin A. farkon wannan shekara, a ƙarshe na ci karo da samfurin daidai daga sanannen kamfanin Salesforce a ƙarƙashin sunan da ba shi da mahimmanci. Gorp. Da kanta, zai iya yin kusan duk abin da nake buƙata daga irin wannan injin parser - wato, keɓe kowane guntu cikin hankali daga rubutu na sabani, amma a sarari tsarin rubutu, yayin da yake da kyakkyawar hanyar sadarwa ta mai amfani ga mai amfani da ƙarshen, gami da irin waɗannan mahimman bayanai, kamar tsari, samfuri da abin da ya faru, kuma a lokaci guda ta yin amfani da madaidaicin ma'anar kalmomi na yau da kullum, wanda ya zama mafi iya karantawa ba tare da misaltuwa ba saboda rarrabuwa zuwa ƙungiyoyin ma'ana da aka keɓe don tantancewa.

Gabaɗaya, na yanke shawarar cewa wannan shine Gorp (Ina mamakin abin da wannan sunan yake nufi? Wataƙila wasu nau'ikan "gaba ɗaya mai daidaitawa na yau da kullun"?) - daidai abin da nake nema na dogon lokaci. Gaskiya ne, aiwatar da shi nan da nan don buƙatun kaina yana da irin wannan matsala wanda wannan injin ɗin ya buƙaci tsananin riko da tsarin tsarin rubutun tushe. Ga wasu rahotanni kamar fayilolin log (wato, masu haɓakawa sun sanya su a matsayin bayyanannun misalai na amfani da aikin), wannan ya dace sosai, amma ga rubutun iri ɗaya na allunan abubuwan da aka bincika, ba shi yiwuwa. Bayan haka, wannan shafi tare da tebur na abubuwan da ke ciki na iya farawa da kalmomin "Table of Content", "Abin da ke ciki" da duk wani bayanin farko da ba mu buƙatar sanyawa cikin sakamakon binciken da aka yi niyya (da yanke su da hannu). kowane lokaci kuma bai dace ba). Bugu da ƙari, tsakanin ɗaiɗaikun abubuwa masu maimaitawa, kamar sunan marubucin, take da lambar shafi, shafin na iya ƙunsar ƙayyadaddun shara (misali, zane, da haruffan bazuwar), wanda kuma zai yi kyau a sami damar yin hakan. yanke. Duk da haka, al'amari na ƙarshe bai kasance mai mahimmanci ba tukuna, amma saboda na farko, aiwatar da aikin da ake da shi ba zai iya fara neman tsarin da ake bukata a cikin rubutun daga wani wuri ba, amma a maimakon haka kawai an sarrafa shi tun daga farkon, bai samu ba. ƙayyadaddun alamu a can kuma... sun ƙare aikina. Babu shakka, ana buƙatar wasu tweaking don aƙalla ba da damar ɗan sarari tsakanin tsarin maimaitawa, kuma hakan ya dawo da ni aiki.

Wata matsala kuma ita ce, aikin da kansa an aiwatar da shi ne a cikin Java, kuma idan na shirya nan gaba don aiwatar da wasu hanyoyin yin hulɗa da wannan fasaha tare da aikace-aikacen da aka sani don shigar da bayanai a cikin bayanan da ake da su (irin su "Cataloguer" na Irbis), to akalla akalla. yi wannan a cikin C # da NET. Ba wai Java ɗin kanta ba ce mara kyau ba - Na taɓa amfani da shi don aiwatar da aikace-aikacen taga mai ban sha'awa wanda ya aiwatar da ayyukan ƙididdiga na gida (a matsayin ɓangare na aikin kwas). Kuma dangane da tsarin haɗe-haɗe yana kama da C-kaifi ɗaya. To, wannan ƙari ne kawai: da sauƙi zai kasance a gare ni don kammala aikin da ake da shi. Duk da haka, ban so in sake shiga cikin wannan duniyar da ba a saba gani ba ta taga (ko kuma, tebur) fasahar Java - bayan haka, harshen da kansa ba a "daidaita" don irin wannan amfani ba, kuma ko kaɗan ban yi marmarin maimaitu ba. kwarewar da ta gabata. Wataƙila shi ne daidai saboda C # tare da haɗin gwiwar WinForms ya fi kusa da Delphi, wanda yawancin mu sau ɗaya ya fara. Abin farin ciki, an samo mafita mai mahimmanci da sauri - a cikin nau'i na aikin IKVM.NET, wanda ke sauƙaƙa fassara shirye-shiryen Java da ke akwai zuwa lambar NET da ake sarrafawa. Gaskiya ne, mawallafa sun riga sun yi watsi da aikin da kansa a wancan lokacin, amma aiwatar da shi na baya-bayan nan ya ba ni nasarar aiwatar da ayyukan da suka dace don rubutun tushe. Gorp.

Don haka sai na yi duk canje-canjen da suka dace kuma na tattara su duka a cikin DLL na nau'in da ya dace, wanda za'a iya "ɗauka" ta kowane ayyuka don .NET Framework da aka ƙirƙira a cikin Kayayyakin Kayayyakin Kayayyakin Kayayyakin. A halin yanzu, na ƙirƙiri wani Layer don dacewa da gabatar da sakamakon da aka dawo Gorp, a cikin nau'i na tsarin bayanai masu dacewa waɗanda zasu dace don aiwatarwa a cikin kallon tebur (ɗaukar a matsayin tushen duka layuka da ginshiƙai; duka maɓallan ƙamus da fihirisa lambobi). Da kyau, abubuwan da ake buƙata don sarrafawa da nuna sakamakon an rubuta su cikin sauri.

Hakanan, tsarin daidaita samfura don sabon injin don koyar da shi don tantance samfuran da aka bincika na rubutun abubuwan da ke ciki bai haifar da wata matsala ta musamman ba. A gaskiya ma, ba ma dole in koma ga samfurana na baya kwata-kwata: Na ƙirƙiri duk samfuran da suka dace daga karce. Haka kuma, idan samfuran da aka ƙera don yin aiki tare da sigar da ta gabata ta tsarin sun kafa ƙaƙƙarfan tsari don rubutun da za a iya rarraba daidai da taimakonsu, sabon injin ya riga ya sami damar haɓaka samfuran samfuran duniya waɗanda suka dace da nau'ikan alama da yawa a. sau ɗaya. Har ma na yi ƙoƙarin rubuta wani nau'in samfuri mai mahimmanci ga kowane tebur na rubutu na sabani, kodayake, ba shakka, har ma da duk sabbin damar da za a buɗe a gare ni, gami da, musamman, ƙarancin ikon aiwatar da jeri iri ɗaya na maimaitawa (( kamar, alal misali, sunayen sunaye da baƙaƙen mawallafa da yawa a jere), wannan ya zama abin ban mamaki.

Wataƙila a nan gaba zai yiwu a aiwatar da wasu ra'ayi na samfuran meta, waɗanda za su iya bincika rubutun tushen don bin yawancin samfuran da ake samu a lokaci ɗaya, sannan, daidai da sakamakon da aka samu, zaɓi mafi dacewa, ta amfani da wasu nau'in algorithm na hankali. Amma yanzu na fi damuwa da wata tambaya. A parser kamar Gorp, duk da sauye-sauyensa da gyare-gyaren da na yi, har yanzu ba shi da ikon yin abu ɗaya da alama mai sauƙi wanda parser ɗin da na rubuta da kansa ya iya yi daga sigar farko. Wato: yana da ikon ganowa da fitar da su daga asalin rubutun duk gutsuttsura da suka dace da abin rufe fuska da aka kayyade a cikin samfurin da aka yi amfani da su a wurin da ya dace, alhali ba shi da sha’awar abin da rubutun ya kunsa a cikin sarari tsakanin wadannan guntu. Ya zuwa yanzu, na dan inganta sabon injin, yana ba shi damar bincika duk sabbin maimaitawar da aka ba da jerin irin wannan masks daga matsayi na yanzu, barin yuwuwar kasancewar a cikin rubutun jerin haruffan sabani waɗanda ke gaba ɗaya. wanda ba a ƙididdige shi ba a cikin tantancewa, wanda ke kewaye tsakanin tsarin maimaitawa da aka gano. Duk da haka, wannan bai sa ya yiwu a saita abin rufe fuska na gaba ba tare da la'akari da sakamakon binciken ɓangarorin da suka gabata ta amfani da abin rufe fuska mai dacewa ba: tsananin tsarin rubutun da aka kwatanta har yanzu bai bar wurin shigar da hankali na haruffa marasa tsari ba.

Kuma idan ga misalan tebur na abubuwan da na ci karo da wannan matsala har yanzu ba su yi kama da tsanani ba, to, lokacin ƙoƙarin yin amfani da sabon tsarin tantancewa zuwa wani aiki makamancin haka na tantance abubuwan da ke cikin gidan yanar gizon (watau guda ɗaya), ta. iyakoki suna nan sun bayyana tare da dukkan bayyanannensu. Bayan haka, yana da sauƙi a saita abin rufe fuska da ake buƙata don guntuwar alamar gidan yanar gizo, tsakanin waɗanda bayanan da muke nema (waɗanda ke buƙatar ciro) yakamata a samo su, amma ta yaya za mu tilasta wa mai binciken nan da nan ya matsa zuwa na gaba. irin wannan guntu, duk da yiwuwar tags da HTML halayen da za a iya sanya a cikin sarari tsakanin su?

Bayan na yi tunani kaɗan, na yanke shawarar gabatar da tsarin sabis guda biyu (% duk_da) и (%duk_bayan), yana aiki da manufar tabbatar da cewa duk abin da zai iya ƙunshe a cikin rubutun tushe an tsallake shi kafin kowane tsari (mask) da ke biye da su. Bugu da ƙari, idan (% duk_da) kawai watsi da duk waɗannan abubuwan da aka haɗa na sabani, to (%duk_bayan), akasin haka, ya ba su damar ƙara su zuwa gaɓoɓin da ake so bayan sun motsa daga ɓangaren da ya gabata. Yana da sauƙi mai sauƙi, amma don aiwatar da wannan ra'ayi dole ne in sake tsefe ta hanyar gorp don yin gyare-gyaren da suka dace don kada in karya dabarar da aka riga aka aiwatar. A ƙarshe, mun sami damar yin wannan (ko da yake har ma da farko, duk da haka, an rubuta aiwatar da parser na, har ma da sauri - a cikin makonni biyu). Daga yanzu, tsarin ya ɗauki nau'i na gaske na duniya - bai wuce shekaru 12 ba bayan ƙoƙarin farko na yin aiki.

Tabbas wannan ba shine karshen mafarkinmu ba. Hakanan zaka iya sake rubuta fassarar samfurin gorf gaba ɗaya a cikin C #, ta amfani da kowane ɗayan ɗakunan karatu don aiwatar da nahawu kyauta. Ina tsammanin lambar ya kamata a sauƙaƙa sosai, kuma wannan zai ba mu damar kawar da gadon a cikin nau'ikan tushen Java na yanzu. Amma tare da nau'in injin da ake da shi, yana yiwuwa kuma a iya yin abubuwa masu ban sha'awa iri-iri, gami da yunƙurin aiwatar da samfuran meta da na riga na ambata, ba tare da la'akari da rarraba bayanai daban-daban daga gidajen yanar gizo daban-daban ba (duk da haka, ban yanke hukunci ba. cewa kayan aikin software na musamman na yanzu sun fi dacewa da wannan - Ban sami ƙwarewar da ta dace ta amfani da su ba tukuna).

Af, wannan lokacin rani na riga na sami gayyata ta imel daga kamfani da ke amfani da fasahar Salesforce (mai haɓaka na asali. Gorp), yi hira don aiki na gaba a Riga. Abin takaici, a halin yanzu ban shirya don irin wannan sake turawa ba.

Idan wannan abu ya tayar da sha'awa, to a cikin kashi na biyu zan yi ƙoƙarin bayyana dalla-dalla da fasaha don haɗawa da kuma rarraba samfuran ta amfani da misalin aiwatarwa da aka yi amfani da shi a Salesforce. Gorp (Ƙari na kaina, ban da wasu kalmomi guda biyu na aiki da aka riga aka kwatanta, ba su yi kusan canje-canje ga tsarin haɗin kai da kansa ba, don haka kusan duk takaddun tsarin tsarin asali. Gorp Ya dace da siga na kuma).

source: www.habr.com

Add a comment