Consulting Work Blogi Kontakt
← Tagasi blogisse

Juhis, mis kustutas kakskümmend kuus vale keelt

Juhis, mis kustutas kakskümmend kuus vale keelt

Andsin oma saidi automatiseeringule korralduse kärpida blogi nelja keelele. Kaks päeva hiljem selgus, et see oli vaikselt kustutanud kakskümmend kuus keelt ka avalehelt, ning ei mina ega ükski külastaja polnud seda tähele pannud.

TL;DR

  • Üks juhis, mis oli mõeldud vaid blogile, rakendus hoopis kogu saidile.
  • 26 keelt 30-st kadusid avalehelt, CV lehelt ja kõigist navigatsiooni tekstidest.
  • Miski ei jooksnud kokku ja ühtegi 404 viga ei tekkinud, seega ei märganud keegi seda kaks päeva.
  • Parandus tuli git ajaloost, mitte mälestusest, milline sait varem välja nägi.
  • Tegelik õppetund: enne automatiseeritud muudatuse käivitamist tuleb nimetada täpselt, milliseid faile see puudutab, ja see nimekiri läbi lugeda, enne kui midagi kustutatakse.

Miks ma üldse tahtsin vähem keeli

Minu sait oli mõne kuuga kasvanud kolmekümne keeleni: avaleht, CV leht ja blogi, mida uuendan peaaegu iga paari päeva tagant. Olen sellest ohust juba varem kirjutanud: masintõlge on piisavalt sujuv, et näida korras, ja piisavalt vale, et sind piinlikku olukorda panna, seda keeles, mida sa ise kontrollida ei oska. Avaleht ja CV muutuvad harva, nii et seal sain selle riskiga leppida. Blogiga oli lugu teine. Uued postitused ilmuvad tihti ja ma ei saa ausalt öelda, et vastutaksin värske artikli tõlkekvaliteedi eest eesti keeles samal päeval, mil see avaldatakse.

Nii otsustasingi kärpida keelte hulka, millesse blogi tõlgitakse, nelja peale, mida ma ise usaldan kontrollida: inglise, vene, saksa, tšehhi. Kõik muu jääb blogist eemale, kuni mul on parem viis seda kontrollida. See osa plaanist oli mõistlik. Vale läks see, kuidas ma seda küsisin.

Üks lause, vale ulatus

Andsin ühe korralduse: hoia blogi nelja keeles. Lühike ja täpne, nii ma vähemalt arvasin. Tegelikult käivitatu puudutas korraga kolme erinevat asja. See kärpis õigesti blogi enda sisukaustad nelja keeleni, mida ma tahtsin. Aga see kirjutas ümber ka saidi peamise keelte nimekirja, konfiguratsioonifaili, mis määrab, millised keeled üldse olemas on, ning kustutas avalehe sisu ja navigatsiooni tekstid ülejäänud kahekümne kuue keele jaoks.

Probleem on selles, et „blogi" ja „kogu saidi keelte nimekiri" elavad samas konfiguratsioonifailis. Miski selles failis ei erista, milliseid keeli blogi toetab, ja milliseid keeli sait tervikuna toetab. Kui keel sellest nimekirjast eemaldada, kaotab selle korraga iga sektsioon, mis sealt andmeid loeb, sealhulgas avaleht. Minu korraldus nimetas ühe sektsiooni. Muudatus, mis tegelikult käivitus, hõlmas kõike.

Just see osa muutis asja ohtlikuks, mitte ainult valeks: miski ei läinud valjuhäälselt katki. Ei mingit viga, ei 404, ei build’i ebaõnnestumist. Sait lihtsalt lõpetas vaikselt avalehe ja CV lehe genereerimise kahekümne kuue keele jaoks ning keelevalija ei pakkunud neid enam. Külastaja, kes luges saiti varem portugali keeles, sattus lihtsalt märkamatult inglise keelele. Kustutamise tõttu puudumine näeb täpselt samasugune välja nagu see, et keelt polnudki kunagi olemas, ja kumbki neist ei viska veateadet.

Kaks päeva läks, enne kui ma selle avastasin, ja sedagi juhuslikult, ühe hoopis teise paranduse käigus, kui navigatsiooni „Blog" link viis kummalisse kohta ühe keele puhul, mille ma arvasin olevat endiselt elus. See üksainus katkine link oli ainus nähtav niit, mis viis kogu probleemi juurde.

Mida diff tegelikult näitas

Aus tõde on see, et viga ei olnud iseenesest vale ulatus. Viga oli see, et ma ei kontrollinud kunagi failide nimekirja, mida muudatus tegelikult puudutama hakkas, enne kui lasin selle käima. Ma lugesin üherealist kirjeldust sellest, mida see pidi tegema, ja eeldasin, et see kirjeldab ka seda, mida see tegi. Ei kirjeldanud.

Parandamine algas ühest küsimusest: mis muutus ja kus. Võrdlesin diffiga töös olevat saiti viimase commit’iga enne „kärbi blogi" korraldust, ning vastus oli kohene ja üheselt mõistetav: peamine keelte konfiguratsioon, avalehe sisukaust ja kakskümmend kuus keelepõhist tekstifaili, millest ükski polnud blogi kataloogi lähedalgi. Git hoidis kõiki neid faile täpselt sellisena, nagu need olid. Midagi ei läinud tegelikult kaotsi, see lihtsalt kirjutati üle.

Taastasin sellest ajaloost avalehe, CV ja navigatsiooni tekstid kõigi kolmekümne keele jaoks ning jätsin blogi kausta täpselt nii kärbituks, nagu tahtsin: neli keelt, meelega. Üks lahtine ots jäi. Taastatud keele „Blog" link viitas varem selles keeles blogi väljaandele, mida enam ei eksisteeri. Nelja postituse dubleerimine veel kahekümne kuude keelde ainult selle ühe lingi täitmiseks poleks olnud seda väärt, seega seadistasin malli suunama selle hoopis ingliskeelsele blogile ja jätsin nii.

Üks juhis, vale ulatus: avalehe/CV keeled kahanesid nelja peale ja hüppasid kaks päeva hiljem tagasi kolmekümneni, samal ajal kui blogi jäi nelja keelde, mis oligi algselt kavatsetud

Mida ma järgmine kord teisiti kontrolliksin

Nüüd, enne kui lasen ühelgi automatiseeritud muudatusel puudutada elavat, mitmest sektsioonist koosnevat saiti, esitan endale valjusti ühe lisaküsimuse: nimeta täpsed failid, mida see puudutab, mitte funktsioon, mida see peaks parandama. Kui vastus jääb häguseks, on see märk, et tuleb peatuda ja kontrollida, mitte käivitada ja vaadata, mis juhtub. Ja enne kui midagi kustutatakse, tahan ma näha tegelikku failide nimekirja, mitte üherealist kokkuvõtet sellest, mida korraldus pidi tähendama. Ulatust määrav sõna korralduses, „blogi", „see meeskond", „ainult frontend", ei ole automaatselt sama, mis selle muudatuse tegelik ulatus, mille see korraldus käivitab, ja need kaks langevad kokku ainult siis, kui keegi on seda tegelikult kontrollinud: mis ongi täpselt see küsimus, mille ma sulle vastu esitaksin. Mis on kõige väiksem, kõige enesekindlamalt piiritletud korraldus, mille sa hiljuti andsid ja mida kunagi ei kontrollitud selle vastu, mida see tegelikult puudutas?

Need something like this for your own business? See how I can help →