Async Digital / Iris
Astudiaeth achos

Drafft wedi’i baratoi o un URL

Y safon asiantaidd

Nid y cynllun URL yw pwynt dolen ddofn. Y pwynt yw y gall unrhyw beth sy’n gallu tanio un (sgript, Shortcut, system bell, LLM yn gyrru’r ffôn) gyflwyno cyflwr sydd eisoes ar ganol ei olygu, yn barod i’r defnyddiwr, mewn un alwad. Nid canlyniad chwilio. Nid dolen ddi-gyd-destun i sgrin. Drafft sydd eisoes wedi’i deipio, yn eistedd yn y lle iawn, yn barod i’w adolygu a’i anfon.

Crynodeb

Mae’r rhan fwyaf o ddolenni dwfn yn agor sgrin ac yn stopio. Mae’r astudiaeth achos hon, sy’n cloi cyfres Iris, yn dilyn un URL heibio’r pwynt hwnnw: lansiad oer sy’n glanio ar ddrafft cyfansoddi sydd eisoes wedi’i deipio, yn eistedd o dan ddalen templedi ddwy haen i lawr, gyda’r templed a ddewiswyd wedi’i amlygu a dim cyflwr llwytho yn unman rhwng y ddau. Taniwch ddau o’r URLau hyn ar unwaith ac maent yn datrys i un enillydd ar y rhes wedi’i hamlygu a chorff y drafft fel ei gilydd, yr un ymddygiad ysgrifennwr-olaf-yn-ennill sy’n llywodraethu pob wyneb rasio arall yn y pecyn. Cyrhaeddir y dyfnder nid trwy fath newydd o lywio ond trwy un cam ychwanegol yn yr un llif trefnedig y mae pob dolen yn ei ddefnyddio, cam sy’n amlygu’r rhes ac yn llenwi’r drafft gyda’i gilydd. Yr hyn y mae’n ei gostio: ni ellir mwyach brofi’r amlygiad a’r drafft ar wahân, mae ras yn dangos trosglwyddiad byr canol-hedfan, ac mae’n rhaid i ddolen mor ddwfn â hyn gadarnhau bod y templed yn bodoli cyn caniatáu i unrhyw ran o’r symud redeg.


Safon

Drafft yw’r safon, nid drws

Tyfodd dolennu dwfn fel ffordd o ganfod llwybr. Roedd URL yn cynrychioli lle yn yr ap, a holl rwymedigaeth yr ap oedd mynd â chi yno. Agor y sgrin iawn, dewis y tab iawn efallai, gorffen. Problem y defnyddiwr oedd beth bynnag a ddigwyddai nesaf.

Mae awtomeiddio yn newid beth mae’r galwr ei eisiau. Sgript yn llwyfannu demo, Shortcut wedi’i wifro i drefn ddyddiol, asiant yn gyrru’r ffôn ar ran rhywun: nid oes yr un ohonynt eisiau drws. Maent eisiau trosglwyddo cyd-destun gorffenedig, tasg sydd eisoes ar ei hanner, fel mai penderfyniad yw cyffyrddiad cyntaf y person, nid chwilio. Mae’r cwestiwn defnyddiol yn peidio â bod yn “a all URL agor y sgrin gyfansoddi?” ac yn dod yn “a all URL adael drafft ynddi?”

Mae Iris wedi’i adeiladu fel mai “gall” yw’r ateb i’r ail gwestiwn, heb ildio dim o’r ddisgyblaeth y mae gweddill y gyfres hon yn ei disgrifio. Mae’r ymddygiad rasio isod yn pwyso ar y gwarantau a fesurwyd yn erthygl y prawf straen; y dyfnder y mae’r darn hwn yn ei ychwanegu yw’r hyn sy’n gwneud y gwarantau hynny’n werth eu cael. Po bellaf y caniateir i URL gyrraedd heibio’r drws ffrynt, y mwyaf sy’n gorfod bod yn wir am y bensaernïaeth sy’n ei gario.


Dilyniant

Pum curiad o lansiad oer

Mae’r honiad ar ei hawsaf i’w ddangos. Un URL, wedi’i danio at ap nad yw’n rhedeg:

botmessages://compose/bot/design/templates/design-feedback

Mae’r ap yn lansio’n oer ac yn ei ddatrys yn bum curiad, wedi’u cymhwyso mewn trefn fel un symudiad di-dor:

  1. Gwthio rhagolwg y bot ar stac llywio’r cyfansoddi.
  2. Tyfu dalen y rhagolwg i wneud lle i gyflwr cyfansoddi gweithredol.
  3. Cyflwyno’r ddalen templedi dros y rhagolwg.
  4. Amlygu rhes y templed a enwyd, gyda sgrolio animeiddiedig sy’n ei chanoli.
  5. Paratoi’r drafft oddi tano gyda chorff y templed hwnnw, wedi’i adael yn weladwy uwchben ymyl y ddalen.

Y recordiad isod yw defnyddiwr demo’r pecyn, wedi’i lansio’n oer gan yr URL uchod. Mae’r rhes a ddewiswyd yn eistedd wedi’i hamlygu yn y ddalen, ac mae’r drafft a baratôdd (“Could you take a pass on the latest mocks…”) yn sbecian uwchben y ddalen, eisoes wedi’i deipio. Mae’r datrysiad yn chwarae fel un pas animeiddio o tua 200 milieiliad. Dim cyflwr llwytho, dim ail dap, ac nid yw’r defnyddiwr wedi cyffwrdd â’r sgrin.

Ffig 1 Un URL, lansiad oer. Mae’r rhagolwg yn gwthio, y ddalen yn tyfu, y ddalen templedi’n cyflwyno, y rhes yn amlygu, ac mae’r drafft uwch ei phen eisoes wedi’i baratoi.

Rasys

Dau URL, un enillydd, ar y ddau wyneb

Mae drafft wedi’i baratoi yn haeddu’r un craffu ag unrhyw wyneb arall y gall URL ei gyffwrdd. Mae erthygl y prawf straen yn mesur beth sy’n digwydd pan fydd URLau’n cyrraedd yn gyflymach nag y gall yr UI animeiddio; y fersiwn fer yw bod URLau sy’n rasio yn cywasgu i’r ysgrifennwr olaf yn ennill, gyda chanslo cydweithredol a dim cyflwr hanner-gymhwysedig ar ôl. Mae’r paratoi cyfansoddi yn ymuno â’r cytundeb hwnnw yn hytrach na negodi ei gytundeb ei hun. Taniwch ddau URL templed yn olynol:

botmessages://compose/bot/design/templates/release-notes
botmessages://compose/bot/design/templates/hero-copy-review

Mae’r cyntaf yn cyrraedd cyn belled â sgrolio ei res i’r golwg. Yng nghanol yr animeiddiad mae’r ail yn ei ganslo, yn ail-redeg yr un llif gyda’i dempled ei hun, ac yn glanio. Mae’r ddau wyneb yn adlewyrchu’r enillydd newydd: mae’r rhes wedi’i hamlygu a’r drafft rhannol weladwy uwchben y ddalen yn cytuno ynghylch pa URL a enillodd. Y cytundeb hwnnw yw’r pwynt. Mae’r amlygiad a chorff y drafft yn cael eu gosod gyda’i gilydd mewn un cam, felly nid oes ffenestr lle mae’r rhes yn enwi un templed a’r drafft yn dal un arall.

Ffig 2 Dau URL yn rasio am yr un drafft. Mae’r ail yn canslo’r cyntaf yng nghanol y sgrolio ac yn ennill yr amlygiad a chorff y drafft fel ei gilydd.

Cynllun

Un achos effaith yw’r paratoi

Y tu mewn i’r ap sy’n defnyddio’r pecyn, mae’r llif sy’n berchen ar yr wyneb cyfansoddi yn mapio’r bwriad hwn i ddilyniant wedi’i dynnu o’r un set gaeedig o weithrediadau y mae pob pwynt mynediad arall yn ei defnyddio. Nid oedd angen math newydd o lywio i gyrraedd drafft wedi’i baratoi ddwy haen o ddalennau i lawr. Un achos effaith newydd oedd ei angen:

case .openBotPreviewTemplate(let pid, let tid):
    return [
        .nav(.popToRoot),
        .effect(.clearTemplateHighlight),
        .nav(.dismissSheet),
        .nav(.push(.botPreview(pid))),
        .nav(.present(.templates(pid))),
        .effect(.highlightTemplate(tid))
    ]

A chymhwyso’r effaith, sy’n gwneud dau beth yn hytrach nag un:

case .highlightTemplate(let id):
    highlightedTemplateID = id
    if let template = DemoData.template(id: id) {
        selectTemplate(template)
    }

Mae dewis y templed yn ei osod yn weithredol ac yn rhag-lenwi’r drafft. Mae’r defnyddiwr yn gweld y rhes wedi’i hamlygu yn gyntaf am fod y ddalen templedi ar y brig; mae cau’r ddalen yn datgelu wyneb cyfansoddi a oedd yn barod cyn i’r defnyddiwr edrych. Mae dyfnder y canlyniad wedi’i gyfansoddi’n gyfan gwbl o weithrediadau yr oedd y pecyn eisoes yn gwybod sut i’w trefnu, eu canslo, a’u hailchwarae.

Ffig 3 Un bwriad, chwe gweithrediad trefnedig. Mae effaith highlightTemplate yn gwneud dau beth mewn un cymhwyso: mae’n gosod y rhes wedi’i hamlygu ac yn dewis y templed, sy’n rhag-lenwi’r drafft.
Rhybudd

Cyplu yw’r paratoi cyfunol, ac mae’n ymddangos mewn tri lle. Am fod yr amlygiad a’r drafft yn cael eu gosod mewn un cam, mae prawf sy’n gwirio’r amlygiad yn gwirio’r drafft hefyd; os bydd angen i’r ddau symud yn annibynnol ryw ddydd, mae’n rhaid hollti’r cam yn ddau. O dan ras mae’r cyplu’n weladwy: mae sgrolio’r templed cyntaf yn dechrau cyn i’r ail URL ennill, felly mae defnyddiwr sy’n gwylio’n ofalus yn gweld trosglwyddiad byr canol-hedfan yn hytrach na thoriad glân. A pho ddyfnaf y caniateir i URL gyrraedd, y mwyaf sy’n rhaid bod yn wir cyn iddo redeg. Rhaid gwrthod drafft wedi’i baratoi yn erbyn templed nad yw’n bodoli pan ddosrennir yr URL, cyn i’r un o’r curiadau redeg, oherwydd byddai dilyniant sy’n hanner-gymhwyso yn gadael y ddalen ar agor dros ddrafft na chafodd erioed ei lenwi.


Cyfres

Beth mae un alwad yn ei drosglwyddo

Dyma ddarn olaf y gyfres. Mae gan y pum honiad arall (y rasys, yr ôl troed, y datrys ymwybodol o gyflwr, y wyneb mewnbwn, ac un datrysydd i dapiau ac URLau) erthygl yr un, ac mae tudalen y gyfres yn dal y map.

Y patrwm y maent yn ei greu gyda’i gilydd yw’r un y dechreuodd y dudalen hon ag ef. Galwad i mewn i’r ap yw URL, a mesur y bensaernïaeth y tu ôl iddi yw’r hyn y caniateir i’r alwad honno ei drosglwyddo. Yma mae’n trosglwyddo drafft sydd eisoes wedi’i deipio, ddwy ddalen i lawr, yn aros am benderfyniad dynol. Y sgrin a agorodd oedd y peth lleiaf.