Hanes un prosiect bach deuddeg mlynedd o hyd (am BIRMA.NET am y tro cyntaf a dweud y gwir yn uniongyrchol)

Gellir ystyried genedigaeth y prosiect hwn yn syniad bach a ddaeth i mi rywle ar ddiwedd 2007, a oedd i fod i ddod o hyd i'w ffurf derfynol dim ond 12 mlynedd yn ddiweddarach (ar hyn o bryd - wrth gwrs, er bod y gweithrediad presennol, yn ôl i'r awdwr, yn foddhaol iawn).

Dechreuodd y cyfan pan oeddwn, yn y broses o gyflawni fy nyletswyddau swyddogol ar y pryd yn y llyfrgell, wedi tynnu sylw at y ffaith bod y broses o fewnbynnu data o destun sganio tablau cynnwys cyhoeddiadau llyfrau (a cherddoriaeth) i'r gronfa ddata bresennol, mae'n debyg, yn gallu cael ei symleiddio'n sylweddol ac awtomeiddio, gan fanteisio ar yr eiddo o drefnusrwydd ac ailadroddadwyedd yr holl ddata sy'n ofynnol ar gyfer mewnbwn, megis enw awdur yr erthygl (os ydym yn sôn am gasgliad o erthyglau), teitl yr erthygl (neu'r is-deitl a adlewyrchir yn y tabl cynnwys) a rhif tudalen yr eitem tabl cynnwys cyfredol. Ar y dechrau, roeddwn yn gwbl argyhoeddedig y gellid dod o hyd i system sy'n addas ar gyfer cyflawni'r dasg hon yn hawdd ar y Rhyngrwyd. Pan achoswyd rhywfaint o syndod gan y ffaith na allwn ddod o hyd i brosiect o'r fath, penderfynais geisio ei roi ar waith ar fy mhen fy hun.

Ar ôl cyfnod eithaf byr, dechreuodd y prototeip cyntaf weithio, a dechreuais ei ddefnyddio ar unwaith yn fy ngweithgareddau dyddiol, gan ei ddadfygio ar yr un pryd ar yr holl enghreifftiau a ddaeth i'm llaw. Yn ffodus, yn fy ngweithle arferol, lle nad oeddwn yn rhaglennydd o bell ffordd, deuthum wedyn i ffwrdd ag “amser segur” gweladwy yn fy ngwaith, pan oeddwn yn dadfygio fy syniad yn ddwys - peth annirnadwy bron yn y realiti presennol, sy'n awgrymu adroddiadau dyddiol ar waith a wneir yn ystod y dydd. Cymerodd y broses o gaboli'r rhaglen gyfanswm o ddim llai na tua blwyddyn, ond hyd yn oed ar ôl hynny prin y gellid galw'r canlyniad yn gwbl lwyddiannus - gosodwyd gormod o gysyniadau gwahanol i ddechrau nad oeddent yn gwbl ddealladwy i'w gweithredu: elfennau dewisol a all cael ei hepgor; edrych ymlaen ar elfennau (at ddiben amnewid elfennau blaenorol i ganlyniadau chwilio); hyd yn oed ein hymgais ein hunain i weithredu rhywbeth fel ymadroddion rheolaidd (sydd â chystrawen unigryw). Rhaid dweud fy mod wedi rhoi’r gorau i raglennu rhywfaint cyn hyn (am tua 8 mlynedd, os nad mwy), felly fe ddaliodd y cyfle newydd i gymhwyso fy sgiliau at dasg ddiddorol ac angenrheidiol fy sylw yn llwyr. Nid yw'n syndod i'r cod ffynhonnell a ddeilliodd o hynny - yn absenoldeb unrhyw ddulliau clir o'i ddyluniad ar fy rhan i - ddod yn gymysgfa annirnadwy o ddarnau gwahanol yn yr iaith C gyda rhai elfennau o C ++ ac agweddau ar raglennu gweledol (i ddechrau). Penderfynwyd defnyddio system ddylunio o'r fath â Borland C ++ Builder - “bron yn Delphi, ond yn C”). Fodd bynnag, fe wnaeth hyn oll ddwyn ffrwyth yn y pen draw wrth awtomeiddio gweithgareddau dyddiol ein llyfrgell.

Ar yr un pryd, penderfynais, rhag ofn, i gymryd cyrsiau i hyfforddi datblygwyr meddalwedd proffesiynol. Wn i ddim a yw'n bosibl dysgu “i fod yn rhaglennydd” o'r dechrau yno, ond gan gymryd i ystyriaeth y sgiliau oedd gennyf yn barod bryd hynny, roeddwn yn gallu meistroli technolegau a oedd yn fwy perthnasol erbyn hynny, i raddau. fel C#, Visual Studio i'w ddatblygu o dan .NET, yn ogystal â rhai technolegau sy'n gysylltiedig â Java, HTML a SQL. Cymerodd yr hyfforddiant cyfan gyfanswm o ddwy flynedd, a gwasanaethodd fel man cychwyn ar gyfer prosiect arall i mi, a oedd yn y pen draw yn ymestyn dros nifer o flynyddoedd - ond mae hwn yn bwnc ar gyfer cyhoeddiad ar wahân. Yma ni fyddai ond yn briodol nodi i mi geisio addasu'r datblygiadau a gefais eisoes ar y prosiect a ddisgrifiwyd i greu cymhwysiad ffenestr llawn yn C# a WinForms sy'n gweithredu'r swyddogaeth angenrheidiol, a'i ddefnyddio fel sail ar gyfer y prosiect diploma sydd ar ddod.
Dros amser, dechreuodd y syniad hwn ymddangos i mi yn deilwng o gael ei leisio mewn cynadleddau blynyddol o'r fath gyda chyfranogiad cynrychiolwyr o wahanol lyfrgelloedd fel "LIBKOM" a "CRIMEA". Y syniad, ie, ond nid fy ngweithrediad ohono bryd hynny. Yna roeddwn hefyd yn gobeithio y byddai rhywun yn ei ailysgrifennu gan ddefnyddio dulliau mwy cymwys. Un ffordd neu’r llall, erbyn 2013 penderfynais ysgrifennu adroddiad ar fy ngwaith rhagarweiniol a’i anfon at Bwyllgor Trefnu’r Gynhadledd gyda chais am grant i gymryd rhan yn y gynhadledd. Er mawr syndod i mi, cymeradwywyd fy nghais, a dechreuais wneud rhai gwelliannau i’r prosiect i’w baratoi i’w gyflwyno yn y gynhadledd.

Erbyn hynny, roedd y prosiect eisoes wedi derbyn enw newydd BIRMA, wedi caffael amrywiol alluoedd ychwanegol (nid cymaint wedi'u gweithredu'n llawn, ond yn hytrach tybiedig) - mae'r holl fanylion i'w cael yn fy adroddiad.

A dweud y gwir, roedd yn anodd galw BIRMA 2013 yn rhywbeth cyflawn; A siarad yn blwmp ac yn blaen, roedd yn grefft haclyd iawn a wnaed ar frys. O ran cod, nid oedd bron unrhyw ddatblygiadau arbennig o gwbl, ac eithrio ymgais braidd yn ddiymadferth i greu rhyw fath o gystrawen unedig ar gyfer y parser, mewn ymddangosiad sy'n atgoffa rhywun o iaith fformatio IRBIS 64 (ac mewn gwirionedd, hefyd y system ISIS - gyda cromfachau fel strwythurau cylchol; pam Ar y pryd roeddwn i'n meddwl ei fod yn edrych yn eithaf cŵl). Roedd y parser yn anobeithiol yn baglu ar y cylchoedd hyn o gromfachau o'r math priodol (gan fod cromfachau hefyd yn cyflawni rôl arall, sef eu bod yn nodi strwythurau dewisol yn ystod dosrannu y gellir eu hanwybyddu). Unwaith eto, cyfeiriaf yn fanylach bawb sydd am ddod yn gyfarwydd â chystrawen BIRMA, sy'n anodd ei dychmygu, na ellir ei chyfiawnhau ar y pryd, at fy adroddiad ar y pryd.

Yn gyffredinol, ar wahân i gael trafferth gyda'm parser fy hun, nid oes gennyf ddim mwy i'w ddweud ynglŷn â chod y fersiwn hon - heblaw am drawsnewid y ffynonellau presennol yn C++ yn ôl tra'n cadw rhai nodweddion nodweddiadol o god .NET (i fod yn onest, mae'n anodd ei ddeall , beth yn union a'm hysgogodd i symud popeth yn ôl - peth ofn gwirion yn ôl pob tebyg am gadw fy nghodau ffynhonnell yn gyfrinachol, fel pe bai'n rhywbeth sy'n cyfateb i rysáit gyfrinachol Coca-Cola).

Efallai mai'r penderfyniad gwirion hwn hefyd yw'r rheswm dros yr anawsterau wrth baru'r llyfrgell DLL sy'n deillio o hynny gyda'r rhyngwyneb presennol o weithfan gartref ar gyfer mewnbynnu data i gatalog electronig (do, ni soniais am ffaith bwysig arall: o hyn ymlaen, i gyd roedd cod “injan” BIRMA yn ôl y disgwyl, mae wedi'i wahanu o'r rhan rhyngwyneb a'i becynnu yn y DLL priodol). Pam roedd angen ysgrifennu gweithfan ar wahân at y dibenion hyn, a oedd beth bynnag, yn ei ymddangosiad a'i ddull o ryngweithio â'r defnyddiwr, yn copïo'r un gweithfan “Catalogizer” o system IRBIS 64 yn ddigywilydd - mae hwn yn gwestiwn ar wahân. Yn fyr: rhoddodd y cadernid angenrheidiol i'm datblygiadau bryd hynny ar gyfer fy mhrosiect graddio (fel arall nid oedd yr injan parser anhreuladwy yn unig yn ddigon). Yn ogystal, cefais rai anawsterau wedyn wrth weithredu rhyngwyneb gweithfan Cataloger gyda fy modiwlau fy hun, a weithredwyd yn C++ a C#, a chael mynediad uniongyrchol at fy injan.

Yn gyffredinol, yn rhyfedd ddigon, y prototeip braidd yn drwsgl hwn o'r dyfodol BIRMA.NET oedd i fod i fod yn “geffyl gwaith” i mi am y pedair blynedd nesaf. Ni ellir dweud na cheisiais yn ystod y cyfnod hwn o leiaf ddod o hyd i ffyrdd o weithredu syniad hirsefydlog newydd, mwy cyflawn. Ymhlith arloesiadau eraill, dylai fod yna ddilyniannau cylchol nythu eisoes a allai fod wedi cynnwys elfennau dewisol - dyma sut roeddwn i'n mynd i ddod â'r syniad o dempledi cyffredinol yn fyw ar gyfer disgrifiadau llyfryddol o gyhoeddiadau ac amryw o bethau diddorol eraill. Fodd bynnag, yn fy ngweithgareddau ymarferol ar y pryd, nid oedd llawer o alw am hyn i gyd, ac roedd y gweithredu a gefais bryd hynny yn eithaf digonol ar gyfer nodi tablau cynnwys. Yn ogystal, dechreuodd fector datblygiad ein llyfrgell wyro fwyfwy tuag at ddigideiddio archifau amgueddfeydd, adroddiadau a gweithgareddau eraill nad oedd fawr o ddiddordeb i mi, a oedd yn y diwedd yn fy ngorfodi i'w gadael o'r diwedd, gan ildio i'r rhai a fyddai'n dymuno gwneud hynny. byddwch yn fwy bodlon gyda hyn i gyd.

Yn baradocsaidd, ar ôl y digwyddiadau dramatig hyn yr ymddangosodd prosiect BIRMA, a oedd eisoes â holl nodweddion nodweddiadol prosiect adeiladu tymor hir nodweddiadol, fel pe bai'n dechrau cymryd ei fywyd newydd hir-ddisgwyliedig! Roedd gen i fwy o amser rhydd ar gyfer meddyliau segur, dechreuais gribo'r We Fyd Eang eto i chwilio am rywbeth tebyg (yn ffodus, nawr gallwn eisoes ddyfalu edrych am hyn i gyd nid yn unig yn unrhyw le, ond ar GitHub), ac yn rhywle yn y ddechrau'r flwyddyn hon, o'r diwedd deuthum ar draws cynnyrch cyfatebol gan y cwmni adnabyddus Salesforce o dan yr enw di-nod Gorp. Ar ei ben ei hun, gallai wneud bron popeth yr oeddwn ei angen o beiriant parser o'r fath - sef, ynysu darnau unigol yn ddeallus o destun mympwyol, ond wedi'i strwythuro'n glir, tra'n cael rhyngwyneb eithaf hawdd ei ddefnyddio ar gyfer y defnyddiwr terfynol, gan gynnwys hanfodion dealladwy o'r fath, fel patrwm, templed a digwyddiad, ac ar yr un pryd defnyddio cystrawen gyfarwydd ymadroddion rheolaidd, sy'n dod yn fwy darllenadwy i'r un graddau oherwydd rhannu'n grwpiau semantig dynodedig ar gyfer dosrannu.

Yn gyffredinol, penderfynais mai dyma'r un Gorp (Tybed beth mae'r enw hwn yn ei olygu? Efallai rhyw fath o “dosrannwr rheolaidd cyffredinol â gogwydd"?) – yn union beth rydw i wedi bod yn chwilio amdano ers amser maith. Yn wir, roedd gan ei weithrediad ar unwaith ar gyfer fy anghenion fy hun gymaint o broblem fel bod angen cadw'r injan hon yn rhy gaeth at ddilyniant strwythurol y testun ffynhonnell. Ar gyfer rhai adroddiadau megis ffeiliau log (sef, fe'u gosodwyd gan y datblygwyr fel enghreifftiau clir o ddefnyddio'r prosiect), mae hyn yn eithaf addas, ond ar gyfer yr un testunau o dablau cynnwys wedi'u sganio, mae'n annhebygol. Wedi’r cyfan, gall yr un dudalen gyda thabl cynnwys ddechrau gyda’r geiriau “Tabl Cynnwys”, “Cynnwys” ac unrhyw ddisgrifiadau rhagarweiniol eraill nad oes angen i ni eu gosod yng nghanlyniadau’r dadansoddiad arfaethedig (a’u torri i ffwrdd â llaw mae pob tro hefyd yn anghyfleus). Yn ogystal, rhwng elfennau ailadrodd unigol, megis enw'r awdur, teitl a rhif tudalen, gall y dudalen gynnwys rhywfaint o sothach (er enghraifft, lluniadau, a dim ond cymeriadau ar hap), y byddai hefyd yn braf gallu ei wneud. torri i ffwrdd. Fodd bynnag, nid oedd yr agwedd olaf mor arwyddocaol eto, ond oherwydd y cyntaf, ni allai'r gweithrediad presennol ddechrau chwilio am y strwythurau angenrheidiol yn y testun o le penodol, ond yn hytrach ei brosesu'n syml o'r cychwyn cyntaf, ni ddaeth o hyd i'r patrymau penodol yno a... daeth fy swydd i ben. Yn amlwg, roedd angen rhywfaint o newid i o leiaf ganiatáu rhywfaint o le rhwng y strwythurau ailadroddus, ac fe wnaeth hynny fy arwain yn ôl i'r gwaith.

Problem arall oedd bod y prosiect ei hun wedi'i roi ar waith yn Java, a phe bawn i'n bwriadu gweithredu rhyw fodd yn y dyfodol i ryngwynebu'r dechnoleg hon â chymwysiadau cyfarwydd ar gyfer mewnbynnu data i gronfeydd data presennol (fel “Cataloguer Irbis”), yna o leiaf O leiaf gwnewch hyn yn C# a .NET. Nid yw Java ei hun yn iaith anweddus - fe wnes i ei ddefnyddio unwaith hyd yn oed i weithredu cymhwysiad ffenestr diddorol a oedd yn gweithredu swyddogaeth cyfrifiannell rhaglenadwy domestig (fel rhan o brosiect cwrs). Ac o ran cystrawen mae'n debyg iawn i'r un C-miniog. Wel, mantais yw hyn: yr hawsaf fydd hi i mi gwblhau prosiect sy'n bodoli eisoes. Fodd bynnag, doeddwn i ddim am blymio eto i mewn i’r byd eithaf anarferol hwn o dechnolegau Java ffenestr (neu bwrdd gwaith) – wedi’r cyfan, nid oedd yr iaith ei hun wedi’i “theilwra” ar gyfer defnydd o’r fath, ac nid oeddwn yn dyheu am ailadrodd o gwbl. y profiad blaenorol. Efallai ei fod yn union oherwydd bod C# ar y cyd â WinForms yn llawer agosach at Delphi, y dechreuodd llawer ohonom ag ef unwaith. Yn ffodus, darganfuwyd yr ateb angenrheidiol yn eithaf cyflym - ar ffurf y prosiect IKVM.NET, sy'n ei gwneud hi'n hawdd trosi rhaglenni Java presennol yn god .NET a reolir. Yn wir, roedd yr awduron eisoes wedi rhoi'r gorau i'r prosiect ei hun erbyn hynny, ond roedd ei weithrediad diweddaraf yn fy ngalluogi i gyflawni'r camau angenrheidiol ar gyfer y testunau ffynhonnell yn eithaf llwyddiannus. Gorp.

Felly gwnes i'r holl newidiadau angenrheidiol a'i roi at ei gilydd i DLL o'r math priodol, y gallai unrhyw brosiectau ar gyfer y Fframwaith .NET a grëwyd yn Visual Studio ei “godi” yn hawdd. Yn y cyfamser, creais haen arall ar gyfer cyflwyno'r canlyniadau a ddychwelwyd yn gyfleus Gorp, ar ffurf strwythurau data cyfatebol a fyddai'n gyfleus i'w prosesu mewn golwg tabl (gan gymryd y ddwy res a cholofn fel sail; y ddau allwedd geiriadur a mynegeion rhifiadol). Wel, ysgrifennwyd y cyfleustodau angenrheidiol eu hunain ar gyfer prosesu ac arddangos y canlyniadau yn eithaf cyflym.

Hefyd, ni achosodd y broses o addasu templedi ar gyfer yr injan newydd er mwyn ei ddysgu i ddosrannu samplau presennol o destunau wedi'u sganio o dablau cynnwys unrhyw gymhlethdodau arbennig. Mewn gwirionedd, nid oedd yn rhaid i mi gyfeirio at fy nhempledi blaenorol o gwbl hyd yn oed: yn syml, creais yr holl dempledi angenrheidiol o'r dechrau. Ar ben hynny, pe bai'r templedi a ddyluniwyd i weithio gyda fersiwn flaenorol y system yn gosod fframwaith eithaf cul ar gyfer testunau y gellid eu dosrannu'n gywir gyda'u cymorth, roedd yr injan newydd eisoes yn ei gwneud hi'n bosibl datblygu templedi eithaf cyffredinol sy'n addas ar gyfer sawl math o farcio yn unwaith. Ceisiais hyd yn oed ysgrifennu rhyw fath o dempled cynhwysfawr ar gyfer unrhyw destun tabl cynnwys mympwyol, er, wrth gwrs, hyd yn oed gyda'r holl bosibiliadau newydd yn agor i mi, gan gynnwys, yn benodol, y gallu cyfyngedig i weithredu'r un dilyniannau ailadrodd nythu ( megis, er enghraifft, cyfenwau a blaenlythrennau sawl awdur yn olynol), trodd hyn yn iwtopia.

Efallai yn y dyfodol y bydd yn bosibl gweithredu cysyniad penodol o feta-templedi, a fydd yn gallu gwirio'r testun ffynhonnell i weld a yw'n cydymffurfio â nifer o'r templedi sydd ar gael ar unwaith, ac yna, yn unol â'r canlyniadau a gafwyd, dewiswch y un mwyaf addas, gan ddefnyddio rhyw fath o algorithm deallus. Ond yn awr yr oeddwn yn poeni mwy am gwestiwn arall. Parser fel Gorp, er gwaethaf ei holl amlochredd a'r addasiadau a wneuthum, roedd yn dal i fod yn gynhenid ​​​​analluog i wneud un peth a oedd yn ymddangos yn syml i'w weld yn yr un modd ag y gallai fy mharser hunan-ysgrifenedig ei wneud o'r fersiwn gyntaf un. Sef: roedd ganddo'r gallu i ddarganfod a thynnu allan o'r testun ffynhonnell bob darn sy'n cyd-fynd â'r mwgwd a nodir yn y templed a ddefnyddir yn y lle iawn, heb ddiddordeb o gwbl yn yr hyn y mae'r testun a roddwyd yn ei gynnwys yn y bylchau rhwng y darnau hyn. Hyd yn hyn, dim ond ychydig yr wyf wedi gwella'r injan newydd, gan ganiatáu iddo chwilio am yr holl ailadroddiadau newydd posibl o ddilyniant penodol o fasgiau o'r fath o'r sefyllfa bresennol, gan adael y posibilrwydd o bresenoldeb setiau o gymeriadau mympwyol a oedd yn gwbl fympwyol yn y testun. heb gyfrif amdano yn y dosrannu, wedi'i amgáu rhwng y strwythurau ailadrodd a ganfuwyd. Fodd bynnag, nid oedd hyn yn ei gwneud hi'n bosibl gosod y mwgwd nesaf waeth beth fo canlyniadau chwilio am y darn blaenorol gan ddefnyddio'r mwgwd cyfatebol: nid oedd llymder y strwythur testun a ddisgrifiwyd yn gadael lle i gynnwys cymeriadau afreolaidd yn fympwyol.

Ac os nad oedd y broblem hon yn ymddangos mor ddifrifol ar gyfer yr enghreifftiau o dablau cynnwys y deuthum ar eu traws eto, yna wrth geisio cymhwyso mecanwaith dosrannu newydd at dasg debyg o ddosrannu cynnwys gwefan (h.y. yr un dosrannu), mae'n gwneud hynny. cyfyngiadau yn cael eu yma maent yn ymddangos gyda'u holl amlwg. Wedi'r cyfan, mae'n eithaf hawdd gosod y masgiau angenrheidiol ar gyfer darnau o farcio gwe, y dylid lleoli'r data yr ydym yn chwilio amdano (y mae angen ei dynnu) rhyngddynt, ond sut allwn ni orfodi'r parser i symud ymlaen ar unwaith i'r nesaf darn tebyg, er gwaethaf yr holl dagiau posibl a phriodoleddau HTML y gellir eu gosod yn y bylchau rhyngddynt?

Ar ôl meddwl ychydig, penderfynais gyflwyno cwpl o batrymau gwasanaeth (%_cyn) и (%_ar ôl), gan gyflawni'r pwrpas amlwg o sicrhau bod popeth a all fod yn y testun ffynhonnell yn cael ei hepgor cyn unrhyw batrwm (mwgwd) sy'n eu dilyn. Ar ben hynny, os (%_cyn) yn syml anwybyddu'r holl gynnwys mympwyol hyn, felly (%_ar ôl), i'r gwrthwyneb, yn caniatáu iddynt gael eu hychwanegu at y darn a ddymunir ar ôl symud o'r darn blaenorol. Mae'n swnio'n eithaf syml, ond i weithredu'r cysyniad hwn roedd yn rhaid i mi gribo trwy'r ffynonellau gorp eto i wneud yr addasiadau angenrheidiol er mwyn peidio â thorri'r rhesymeg a weithredwyd eisoes. Yn y diwedd, rydym yn llwyddo i wneud hyn (er bod hyd yn oed y cyntaf iawn, iawn, er yn bygi iawn, gweithredu fy parser ei ysgrifennu, a hyd yn oed yn gyflymach - mewn ychydig wythnosau). O hyn ymlaen, cymerodd y system ffurf wirioneddol gyffredinol - dim llai na 12 mlynedd ar ôl yr ymdrechion cyntaf i wneud iddi weithredu.

Wrth gwrs, nid dyma ddiwedd ein breuddwydion. Gallwch hefyd ailysgrifennu'r parser templed gorp yn C# yn llwyr, gan ddefnyddio unrhyw un o'r llyfrgelloedd sydd ar gael ar gyfer gweithredu gramadeg rhad ac am ddim. Rwy'n credu y dylai'r cod gael ei symleiddio'n sylweddol, a bydd hyn yn caniatáu inni gael gwared ar yr etifeddiaeth ar ffurf ffynonellau Java presennol. Ond gyda'r math presennol o injan, mae hefyd yn eithaf posibl gwneud pethau diddorol amrywiol, gan gynnwys ymgais i weithredu'r meta-templedi a grybwyllais eisoes, heb sôn am ddosrannu data amrywiol o wefannau amrywiol (fodd bynnag, nid wyf yn diystyru bod offer meddalwedd arbenigol presennol yn fwy addas ar gyfer hyn - nid wyf wedi cael y profiad priodol o'u defnyddio eto).

Gyda llaw, yr haf hwn rwyf eisoes wedi derbyn gwahoddiad trwy e-bost gan gwmni sy'n defnyddio technolegau Salesforce (datblygwr y gwreiddiol Gorp), pasio cyfweliad ar gyfer gwaith dilynol yn Riga. Yn anffodus, ar hyn o bryd nid wyf yn barod ar gyfer adleoli o'r fath.

Os bydd y deunydd hwn yn ennyn rhywfaint o ddiddordeb, yna yn yr ail ran byddaf yn ceisio disgrifio'n fanylach y dechnoleg ar gyfer llunio templedi a'u dosrannu wedyn gan ddefnyddio'r enghraifft o'r gweithredu a ddefnyddir yn Salesforce. Gorp (Nid yw fy ychwanegiadau fy hun, ac eithrio cwpl o eiriau swyddogaeth a ddisgrifiwyd eisoes, yn gwneud fawr ddim newidiadau i gystrawen y templed ei hun, felly bron pob dogfennaeth ar gyfer y system wreiddiol Gorp Yn addas ar gyfer fy fersiwn i hefyd).

Ffynhonnell: hab.com

Ychwanegu sylw