diff --git a/README.basque.md b/README.basque.md index d940fb4c..d9e508a9 100644 --- a/README.basque.md +++ b/README.basque.md @@ -112,7 +112,7 @@ Irakurri beste hizkuntza batzuetan: [**CN**](/README.
-# `2. Akatsen kudeaketa` +# `2. Erroreen kudeaketa` ## ![✔] 2.1 Erabili Async-Await edo errore asinkronoak kudeatzeko promesak @@ -174,7 +174,7 @@ Irakurri beste hizkuntza batzuetan: [**CN**](/README.@@ -36,7 +36,7 @@ Errorea: bueltatuItxaronGabe falta da pilaren aztarnan
@@ -68,7 +68,7 @@ Error: zati guztiak edukiz
@@ -102,7 +102,7 @@ Error: syncFn falta da pilaren aztarnan
@@ -139,7 +139,7 @@ Error: zati guztiak edukiz
-### Kodearen adibidea Anti-eredua #3: callback asinkrono baten erabilera zuzena callback sinkrono bat espero zen lekuan
+### Kode adibidea, anti eredua #3: callback asinkronoen erabilera zuzena callback sinkronoa espero zen lekuan
@@ -170,7 +170,7 @@ Error: pilaren aztarna falta da berreskuratuErabiltzailea deitu den lekuan
@@ -225,33 +225,35 @@ Error: [...]
-### Kodearen adibidea Anti-Eredua: promesa bat bueltatu funtzio bat asinkronotzat etiketatu gabe
+### Anti ereduaren kode adibidea: itzuli promesak funtzioak asinkronotzat etiketatu gabe
Javascript
Javascript
Javascript
Javascript
-zero-kostuko pila aztarna asinkronoak" deitzen den v8 funtzionalitate bat
+Zero kostuko pila aztarna asinkronoak" deitzen den v8 funtzionalitate bat
## Azalpen aurreratua
-Funtzio sinkronoen pila aztarnen eta funtzio asinkronoen pila aztarnen meknismoak v8ren ezarpenetan oso ezberdinak dira:
-pila aztarna asinkronoa Node.js martxan dagoen sistema eragileak emandako **pila**n oinarritua dago (programazio lengoaia gehienetan bezala). Funtzio asinkrono bat exekutatzen ari denean, sistema eragileko **pila** agerian jartzen da funtzioa bere lehen `await`era iristen den momentuan. Beraz, pilaren aztarna, sistema eragilearen **pila**ren eta baztertutako **promesa ebazpen katea**ren nahasketa bat da. Zero-kostuko pila aztarna asinkronoen ezarpenak **promesa ebazpen katea**ren du jatorria soilik promesa `itxaroten` [¹](#1) ari den bitartean. Nola bakarrik funtzio `asinkrono`ek (`async`) `itxaron`go (`await`) duten, beti galduko da funtzio asinkronoa pilaren aztarna asinkrono batean, operazio asinkronoren bat egina izan bada funtzioa deitu eta gero [²](#2)
+Oso ezberdinak dira funtzio sinkronoen pila aztarnen eta funtzio asinkronoen pila aztarnen mekanismoak v8ren ezarpenetan: pila aztarna asinkronoa oinarritua dago Node.js martxan dagoen sistema eragileak emandako **pila**n (programazio lengoaia gehienak bezala). Funtzio asinkrono bat exekutatzen ari denean, sistema eragileko **pila** agerian jartzen da funtzioa bere lehen `await`era iristen den momentuan. Beraz, pilaren aztarna nahasketa bat da, hain zuzen, sistema eragilearen pilaren eta baztertutako **promesa ebazpen katea**rena. Zero kostuko pila aztarna asinkronoen ezarpenak **promesa ebazpen katea** luzatzen du bakarrik promesa `itxaroten` [¹](#1) ari den bitartean. Funtzio asinkronoek bakarrik (`async`) itxaron (`await`) ahal dutenez, beti galduko da funtzio asinkronoa pilaren aztarna asinkrono batean, operazio asinkronoren bat izan bada funtzioa deitu eta gero [²](#2)
### The tradeoff (sektorea)
-`await` bakoitzak mikro ataza berri bat sortzen du ebentuen begiztan, beraz `await` gehiago gehitzeak errendimendu isunak sortu ditzake. Hala ere, sareak edota datu baseak sortutako errendimendu isuna [ikaragarri handiagoa](https://colin-scott.github.io/personal_website/research/interactive_latency.html) da, beraz gehitutako `await`aren isuna ez da zerbitzariak edo CLIak garatzeko orduan kontutan hartu beharreko zerbait, eskaera edo komando zailen kodearentzat ez bada behintzat. Orduan, `await` ezabatzea `return await`etan errendimendu bultzada nabarmenak bilatzeko azken lekua izan beharko lukete eta, zalantzarik gabe, inoiz ez lirateke aldez aurretik eginak izan beharko
+`await` bakoitzak mikro ataza berri bat sortzen du gertaeraren begiztan. Beraz `await` gehiago gehitzeak errendimendu zigorra ekarriko luke. Hala ere, sareak edota datu baseak sortutako errendimendu isuna [ikaragarri handiagoa](https://colin-scott.github.io/personal_website/research/interactive_latency.html) da, eta, beraz gehitutako `await`aren zigorra ez da zerbitzariak edo CLIak garatzeko orduan kontutan hartu beharreko zerbait, eskaera edo komando bakoitzeko oso kode beroa izan ezean behintzat. Orduan, `await` ezabatzeak `return await`etan errendimendu bultzada nabarmena bilatzeko azken lekua izan beharko luke eta, zalantzarik gabe, inoiz ez litzateke aldez aurretik egin beharko
-### Zergatik await bueltatazea anti eredutzat jotzen zen iraganean
-[Artikulu bikain](https://jakearchibald.com/2017/await-vs-return-vs-return-await/) ugari daude zergatik `return await`ak inoiz `try` bloke baten kanpoan erabili behar diren azaltzen dutenak, eta [ESLint arau](https://eslint.org/docs/rules/no-return-await) bat ere hau ezesten duena. Honen arrazoia async/await Node.js 0.10ko transpilatzaileekin (eta berezko sostengua lortu du Node.js 7.6n) erabilgarri bihurtu izana eta "zero kostuko pila aztarna asinkronoak" Node.js 10en gehitua izana eta ondoren Node.js 12n kenua, `return await` eta `return` guztiz parekoak ziren, edozein `try` kode bloketik kanpo. Oraindik ere berdina izaten jarraituko du seguraski ES motoreentzat. Honegatik, promesak kalkulatzea berauek bueltatu aurretik Node.jsentzat jarraibide egokiena da eta ez orokorrean EcmaScriptentzat
+### Zergatik jotzen zen await bueltatzea anti eredutzat iraganean
+[Artikulu bikain](https://jakearchibald.com/2017/await-vs-return-vs-return-await/) ugari daude azaltzen dutenak zergatik `return await`ak ez diren inoiz `try` bloketik kanpo erabili behar, bai eta [ESLint arau](https://eslint.org/docs/rules/no-return-await) arau bat ere hori debekatzen duena. Horren arrazoia da async/await Node.js 0.10ko transpilagailuekin erabilgarri bihurtu izana (eta jatorrizko laguntza lortu dutela Node.js 7.6 bertsioan) eta "zero kostuko pila aztarna asinkronoak" Node.js 10en gehitua izana eta ondoren Node.js 12tik kendua, `return await` eta `return` guztiz parekoak ziren, edozein `try` kode bloketik kanpo. Oraindik ere berdina izaten jarraituko du seguraski ES motoreentzat. Horregatik, Node.jsentzat jardunbide egokiena da promesak kalkulatzea beraiek bueltatu aurretik. EcmaScriptentzat, ordea, hori ez jardunbide egokiena.
### Oharrak:
-1. Pila aztarna asinkronoak halako ezarpen korapilatsua izatearen beste arrazoietako bat pila aztarna beti modu sinkronoan eraiki behar izanaren muga da, ebentuaren begiztaren [¹](#1) momentu berean
-2. `throwAsync` barruan `await` gabe, kodea ebentu begiztaren fase berean exekutatuko litzateke. Hau, sistema eragilearen **pila** hustutzen ez deneko eta pila aztarna esplizituki funtzioaren emaitza itxaron gabe ere betetzen deneko kasu degeneratua da. Normalean, promesen erabilerak operazio asinkrono batzuk edukitzen ditu, non pilaren aztarnaren zati batzuk galduak izango diren
-3. Zero-kostuko pila aztarna asinkronoek promesa erabilera kasu konplikatuentzat ez dute funtzionatuko, adibidez askotan eta leku ezberdinetan itxarondako promesa bakarra
+1. Pila aztarna asinkronoak halako ezarpen korapilatsua izatearen beste arrazoi bat da pila aztarna beti modu sinkronoan eraiki behar dela, gertaeraren begiztaren [¹](#1) momentu berean
+
+2. `throwAsync` barruan `await` gabe, gertaera begiztaren fase berean exekutatuko litzateke kodea. Hori, degeneratutako kasua da: sistema eragilearen **pila** ez litzateke hustuko, eta pila aztarna beteko litzateke funtzioaren emaitzari berariaz itxaron gabe ere. Normalean, promesen erabilerak operazio asinkrono batzuk edukitzen dituenez, pilaren aztarnaren zati batzuk galdu egingo lirateke
+
+3. Zero kostuko pila aztarna asinkronoek ez lukete funtzionatuko promesa erabileren kasu korapilatsuetan: promesa bakar bati hainbat aldiz eta leku ezberdinetan itxaron beharra dagoenean, adibidez.
+
### Erreferentziak:
- 1. [v8ko zero-kostuko pila aztarna asinkronoak blog argitarapena](https://v8.dev/blog/fast-async)
+ 1. [v8ko zero kostuko pila aztarna asinkronoak blog argitarapena](https://v8.dev/blog/fast-async)
- 2. [zero-kostuko pila aztarna asinkronoei inguruko dokumentazioa ezarpen xehetasunekin hemen](
+ 2. [zero kostuko pila aztarna asinkronoei inguruko dokumentazioa ezarpen xehetasunekin hemen](
https://docs.google.com/document/d/13Sy_kBIJGP0XT34V1CV3nkWya4TwYx9L3Yv45LdGB6Q/edit
)
diff --git a/sections/errorhandling/shuttingtheprocess.basque.md b/sections/errorhandling/shuttingtheprocess.basque.md
index 2047c28f..835b3494 100644
--- a/sections/errorhandling/shuttingtheprocess.basque.md
+++ b/sections/errorhandling/shuttingtheprocess.basque.md
@@ -2,9 +2,9 @@
### Azalpen paragrafoa
-Zure kodearen lekuren batean, errore kudeaketa objektua errore bat gertatzen denean nola jokatu erabakitzearen arduradun da, errorea konfiantzazkoa bada (adibidez operazio errorea, irakurri azalpen osatuagoa #3 jarraibide egokian) erregistro fitxategian idaztea nahikoa izango da. Gauzak okertzen dira errorea ezezaguna denean, honek osagairen bat egoera txarrean dagoela eta hurrengo eskaera guztiek huts egiteko aukera handia dutela esan nahi du eta. Adibidez, singleton bat edukiaz, token batek exzepzio bat jaurti eta ondoren bere egoera galdu duen zerbitzu batekin arazoa du, hemendik aurrera ustekabean joka dezake eta eskaera guztiek huts egitea eragin. Egoera honen aurrean, prozesua gelditu eta 'Berrekite tresna' erabili (Forever, PM2, etab. bezalakoak) egoera garbi batekin berriz hasteko.
+Zure kodearen lekuren batean, erroreren bat gertatzen denean erroreen kudeaketa objektuaren ardura da erabakitzea nola jokatu, eta, errorea konfiantzazkoa bada, nahikoa izango da erregistro fitxategian idaztea; errorea operazionala bada, berriz, irakurri azalpen osatuagoa #3 jarraibide egokian). Gauzak okertzen dira errorea ezezaguna denean, horrek osagairen bat egoera txarrean dagoela eta hurrengo eskaera guztiek huts egiteko aukera handia dutela esan nahi du eta. Adibidez, eman dezagun, singleton bat edukita, token batek salbuespen bat igorri duela eta ondoren bere egoera galdu duen zerbitzu batekin arazoa duela; hortik aurrera ustekabean joka dezake eta eskaera guztiek huts egitea eragin. Egoera horren aurrean, prozesua gelditu eta 'Berrekite tresna' erabili (Forever, PM2, etab. bezalakoak) egoera garbi batekin berriz hasteko.
-### Kodearen adibidea: krak egin ala ez erabakitzen
+### Kode adibidea: huts eragin ala ez erabakitzen
Javascript
@@ -77,23 +77,23 @@ export const kudeatzailea = new ErroreKudeatzailea();
```
Javascript
diff --git a/sections/errorhandling/usematurelogger.basque.md b/sections/errorhandling/usematurelogger.basque.md
index f6ffff3b..d0fbd865 100644
--- a/sections/errorhandling/usematurelogger.basque.md
+++ b/sections/errorhandling/usematurelogger.basque.md
@@ -2,18 +2,18 @@
### Azalpen paragrafoa
-Gustuko dugu console.log, baina [Pino][pino] (errendimenduan zentratutako aukera berriago bat)a newer option focused on performance) bezalako erregistratzaile tresna ospetsu eta iraunkor bat ezinbestekoa da proiektu serioetarako.
-Errendimendu handiko erregistratze tresnek erroreak eta arazoa posibleak identifikatzen laguntzen dute. Erregistratze aholkuen artean:
-1. Maila ezberdinak (debug, info, error) erabiliz erregistratze maistasuna
-2. Erregistratzerako orduan, kontextuaren informazioa eman JSON objektu eran
-3. Erregistro kontsulta API batekin (erregistro sistema ezberdinetarako erabilgarria) edota erregistro bistaratze software batekin monitorizatu eta filtratu erregistroak
-4. Erregistroen informazioa [Splunk][splunk] bezalako operazio inteligentzia tresnekin erakutsi eta landu
+Gustuko dugu console.log, baina [Pino][pino] bezalako erregistratzaile tresna ospetsu eta iraunkorra (errendimenduan zentratutako aukera berriagoa) ezinbestekoa da proiektu serioetarako. Errendimendu handiko erregistratze tresnek erroreak eta arazo posibleak identifikatzen laguntzen dute. Erregistratze aholkuen artean:
+
+1. Maiz erregistratu maila ezberdinak erabiliz (debug, info, error)
+2. Erregistratzerako orduan, eman testuinguruaren informazioa JSON objektu eran
+3. Monitorizatu erregistro kontsultak API batekin (erregistro sistema ezberdinetarako erabilgarria) edota erregistro ikustailearen software batekin
+4. Erakutsi erregistroen informazioa [Splunk][splunk] bezalako operazio inteligentzia tresnekin
[pino]: https://www.npmjs.com/package/pino
[splunk]: https://www.splunk.com/
-### Kodearen adibidea
+### Kode adibidea
```JavaScript
const pino = require('pino');
@@ -25,18 +25,19 @@ const erregistratzailea = pino();
erregistratzailea.info({ anything: 'Hau metadatua da' }, 'Frogatu Erregistro Mezua %s parametroren batekin', 'parametroren bat');
```
-### Blogeko aipua: "Erregistratzailearen Betebeharrak"
+### Blogeko aipua: "Erregistratzailearen betebeharrak"
-StrongLoop blogetik ("Winston eta Bunyanen Node.js Erregistratzaile sistemak konparatzen" Alex Corbatcheven eskutik, 2014ko ekainaren 24a):
+StrongLoop blogetik hartua ("Winston eta Bunyanen Node.js Erregistratzaile sistemak konparatzen" Alex Corbatcheven eskutik, 2014ko ekainaren 24a):
> Identifika ditzagun betebehar gutxi batzuk (erregistratzaile batentzat):
>
> 1. Denboran seilatu erregistro ilara bakoitza. Nahiko argi dago, erregistroko sarrera bakoitza noiz gertatu den esateko gai izan behar duzu
> 2. Erregistro formatua ulergarria izan behar da bai gizakientzat eta baita makinentzat ere
-> 3. Korronte ezberdin ugari onartu behar ditu. Adibidez, errore erregistroak fitxategi batean idazten egon zintezke eta momentu horretan errore bat antzematen bada, fitxategi beraren barruan idatzi, errorearen fitxategian ere idatzi, eta posta elektroniko bat bidali, dena aldi berean, egiteko aukera eman behar du
+> 3. Korronte ezberdin ugari onartu behar ditu. Adibidez, errore erregistroak fitxategi batean idazten ari den unean errorereb bat atzemanez gero, fitxategi beraren barruan idatzi, errorearen fitxategian ere idatzi, eta posta elektronikoa bidali, dena aldi berean, egiteko aukera eman behar du
### Non dago Winston?
-Zergatik ohizko gustukoak hemengo aholkatutako jarraibide hoberenen zerrendan agertu beharko ez liratekeela jakiteko, begiratu [#684][#684].
+Zergatik ohiko faboritoak (adibidez, Winston) ez dauden aholkatutako jardunbide
+onenen egungo zerrendan jakiteko, begiratu [#684][#684]an
[#684]: https://github.com/goldbergyoni/nodebestpractices/issues/684
diff --git a/sections/errorhandling/useonlythebuiltinerror.basque.md b/sections/errorhandling/useonlythebuiltinerror.basque.md
index b35896ad..407c7ea6 100644
--- a/sections/errorhandling/useonlythebuiltinerror.basque.md
+++ b/sections/errorhandling/useonlythebuiltinerror.basque.md
@@ -2,9 +2,9 @@
### Azalpen paragrafoa
-JavaScripten permisibitate naturalak, bere kode fluxuaren aukera guztiekin (adibidez EventEmitter, Callbackak, Promesak ...) garatzaileek erroreak kudeatzeko modu anitzak edukitzea eragiten du: batzuek stringak erabiltzen dituzte, besteek beren mota pertsonalizatuak zehazten dituzte. Node.jsen "Errorea" objektu kapsulatua erabiltzeak zure kodearen eta bestelako liburutegien arteko uniformetasuna gordetzen laguntzen du, eta gainera StracTracea bezalako informazio esanguratsua gordetzen du. Exzepzio bat jaurtitzean, errorearen izena edo erlazionatutako HTTP errore kodea bezalako kontextu ezaugarriekin osatzeza jarraibide egokia da. Uniformetasun eta praktika hau lortzeko, saiatu "Errorea" objektua beharrezko ezaugarriekin osatzen, baina kontu izan gehiegitan ez egitearekin. Orokorrean ideia ona da "Errorea" objektu kapsulatua behin bakarrik osatzea AppErrore batekin aplikazioaren maila guztietako erroreentzat, eta beharrezko duzun informazioa argumentu gisa pasatuz errore mota ezberdinak ezberdintzeko. Ez da beharrezkoa "Errorea" objektua askotan osatzea (errore kasu bakoitzerako behin, adibidez DbError, HttpError...). Begiratu ondorengo kode adibideak
+JavaScriptek berezko permisibitatea du, eta, bere kode fluxuaren aukera ugariarekin (adibidez EventEmitter, Callbackak, Promesak ...), garatzaileek erroreak kudeatzeko modu anitzak edukitzea eragiten du: batzuek stringak erabiltzen dituzte, besteek beren mota pertsonalizatuak zehazten dituzte. Node.jsen "Errorea" objektu kapsulatua erabiltzeak zure kodearen eta bestelako liburutegien arteko uniformetasuna gordetzen laguntzen du, eta gainera StracTracea bezalako informazio esanguratsua gordetzen du. Salbuespen bat jaurtitzean, jarraibide egokia da errorearen izena edo erlazionatutako HTTP errore kodea bezalako testuinguru ezaugarriekin osatzea. Uniformetasun eta praktika hau lortzeko, saiatu "Errorea" objektua beharrezko ezaugarriekin osatzen, baina kontu izan gehiegitan ez egiten. Orokorrean ideia ona da "Errorea" objektu kapsulatua behin bakarrik osatzea AppErrore batekin aplikazioaren maila guztietako erroreentzat, eta beharrezko duzun informazioa argumentu gisa pasatuz errore klase ezberdinak ezberdintzeko. Ez da beharrezkoa "Errorea" objektua askotan osatzea (errore kasu bakoitzerako behin, adibidez DbError, HttpError...). Begiratu ondorengo kode adibideak
-### Kodearen adibidea: era zuzenean egin
+### Kode adibidea: era zuzenean egin
```javascript
// ohizko funtzio batean Error objektua jaurti, sinkronoa dela edo asinkronoa dela (sync async)
@@ -30,7 +30,7 @@ const gehituProduktua = async (gehitzekoProduktua) => {
};
```
-### Kodearen adibidea: anti Jarraibidea
+### Anti jarraibidearen kode adibidea
```javascript
// string baten jaurtiketak edozein pila informazio eta datu ezaugarri garrantzitsu falta ditu
@@ -38,7 +38,7 @@ if (!gehitzekoProduktua)
throw "Nola gehi dezaket produktu bat baliorik ez duenean?";
```
-### Kodearen adibidea: oraindik ere era zuzenagoan egin
+### Kode adibidea: oraindik ere era zuzenagoan egin
Javascript
@@ -111,26 +111,26 @@ if (erabiltzailea == null)
_`Object.setPrototypeOf`ri buruzko azalpena Typescripten: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget_
-### Blogeko aipua: "Ez dut mota ezberdin ugari edukitzean interesik ikusten"
+### Blogeko aipua: "Ez diot interesik ikusten mota ezberdin ugari edukitzeari"
-Ben Nadel blogetik, “Node.js errore objektua” 5 hitz gakori esker sailkatua
+Ben Nadel blogeko “Node.js errore objektua” 5 hitz gakori esker sailkatua
-> …”Modu pertsonalean, ez dut mota ezberdin ugari edukitzean interesik ikusten [bakarra edukitzearekin alderatuz] - Ez dirudi JavaScriptek, lengoaia gisa, eraikitzailez-oinarritutako errore-harrapaketa hornitzerik. Horrela, objektu baten ezaugarriak bereizteak Eraikitzaile motak bereiztea baino errazagoa dirudi…
+> …”Nik neuk, ez diot interesik ikusten errore objektu klase ezberdin ugari edukitzeari [bakarra edukitzearekin alderatuz]. Ez dirudi JavaScriptek, lengoaia gisa, eraikitzailez oinarritutako errore harrapaketa hornitzen duenik. Horrela, objektu baten ezaugarriak bereizteak Eraikitzaile klaseak bereiztea baino errazagoa dirudi…
### Blogeko aipua: "String bat ez da errore bat"
-devthought.com blogetik, “Node.js errore objektua” 6 hitz gakori esker sailkatua
+devthought.com blogeko “Node.js errore objektua” 6 hitz gakori esker sailkatua
-> …String baten ordez errore bat pasatzeak moduluen arteko elkarreragintasuna murrizten du. `instanceof` errore egiaztapen arrakastatsuak izan litezken kontratuak apurtzen ditu APIekin. Errore objektuek, ikusiko dugun bezala, Javascript motore modernoetan ezaugarri interesgarriak dituzte eraikitzaileari pasatutako mezua kontserbatzeaz gain…
+> …String baten ordez errore bat pasatzeak moduluen arteko elkarreragintasuna murrizten du. instanceof errore egiaztapen arrakastatsuak izan litezken kontratuak apurtzen ditu APIekin. Ikusiko dugun bezala, errore objektuek, eraikitzaileari pasatutako mezua kontserbatzeaz gain, Javascript motore modernoetan ezaugarri interesgarriak dituzte…
### Blogeko aipua: "Erroretik jaraunsteak ez du balio askorik gehitzen"
-machadogj blogetik
+machadogj blogetik hartua
-> …Error klasearekin daukadan arazo bat jaraunsteko erraza ez izatea da. Noski, klasea jarauntsi dezakezu eta zure HttpError, DbError, etab. bezalako Error klase propioak sortu. Hala ere, horrek denbora eskatzen du eta ez du balio askorik gehitzen[AppError batentzat behin bakarrik jaraunsteaz alderatuz] baldin eta motekin zerbait egiten ez bazabiltza. Batzuetan, soilik mezu bat gehitu nahi duzu eta barruko errorea mantendu, beste batzuetan ordea, errorea parametro edo bestelako informazioekin osatu nahi zenezake…
+> …Errore klasea jaraunsteko erraza ez izatea arazo bat da. Noski, klasea jaraunts dezakezu eta zure HttpError, DbError, etab. bezalako Error klase propioak sortu. Hala ere, horrek denbora eskatzen du, eta ez du balio askorik gehitzen [AppError batentzat behin bakarrik jaraunsteaz alderatuz], baldin eta klaseekin zerbait egiten ez bazabiltza. Batzuetan, soilik mezu bat gehitu nahi duzu eta barruko errorea mantendu; beste batzuetan, ordea, errorea parametroekin edo bestelako informazioekin osatu nahi zenezake…
### Blogeko aipua: "Node.jsek jaurtitako JavaScript eta System errore guztiak "Error" objektutik datoz"
-Node.js dokumentazio ofizialetik
+Node.js dokumentazio ofizialetik hartua
-> …Node.jsek jaurtitako JavaScript eta System errore guztiak JavaScripten "Error" klase estandarretik datoz edo "Error" objektuaren instantziak dira eta gutxienez klase horretako ezaugarri erabilgarriak hornitzea bermatzen dute. Errorea zergatik gertatu den inolako berariazko baldintzarik adierazten ez duen JavaScript Error objektu generikoa. Error objektuek "pila aztarna" bat atzematen dute, Error instantziatua izan den kodearen lekua zehaztuz, eta errorearen testu deskribapena eduki dezakete. Node.jsek sortutako errore guztiak, System eta JavaScript erroreak barne, Error klasetik eratorritakoak edo Error klasearen instantziak izango dira…
+> …Node.jsek jaurtitako JavaScript eta System errore guztiak JavaScripten "Error" klase estandarretik datoz edo "Error" objektuaren instantziak dira, eta gutxienez horrelako ezaugarri erabilgarriak hornitzea bermatzen dute. JavaScript Error objektu generiko bat da, errorea zergatik gertatu den inolako berariazko baldintzarik adierazten ez duena. Error objektuek "pila aztarna" bat atzematen dute, Error instantziatua izan den kodearen lekua zehaztuz, eta errorearen testu deskribapena eduki dezakete. Node.jsek sortutako errore guztiak, System eta JavaScript erroreak barne, Error klasetik eratorritakoak edo Error motaren instantziak izango dira…
diff --git a/sections/projectstructre/breakintcomponents.basque.md b/sections/projectstructre/breakintcomponents.basque.md
index e06f9c1f..0b3124a4 100644
--- a/sections/projectstructre/breakintcomponents.basque.md
+++ b/sections/projectstructre/breakintcomponents.basque.md
@@ -4,8 +4,7 @@
### Azalpen paragrafoa
-Tamaina ertaineko nahiz handiko aplikazioetarako, monolitoak benetan kaltegarriak dira. Menpekotasun asko dituen software handi bat edukitzea zaila da hausnartzeko eta maiz espageti kodea eragiten du. Arkitektu azkarrek ere, piztia mantsotzeko eta zatikatzeko haina gaitasun dituztenek, diseinuan esfortzu mental handiak egiten dituzte, eta aldaketa bakoitzak menpeko beste objektuekiko eragina arretaz aztertzea eskatzen du. Azken irtebidea software txikia garatzean datza: banandu kode pila osoa fitxategiak beste inorekin partekatzen ez dituzten aparteko osagaietan, bakoitza fitxategi gutxi batzuekin osatua egonik (APIa, zerbitzuak, datuen sarbidea, egiaztatzeak, etab.) oso erraza da hausnartzeko. Askok mikrozerbitzu' egitura deitzen diote horri, garrantzitsua da ulertzea mikrozerbitzuak oinarri sorta bat direla eta ez derrigorrez jarraitu beharreko zehaztapenak. Printzipio ugari erabil ditzakezu mikrozerbitzudun egitura handi batean edota gutxi batzuk soilik. Biak dira zuzenak zure softwarearen konplexutasuna baxua den bitartean. Gutxienez, egin zenezakeen beste zerbait da osagaien artean oinarrizko mugak sortzea, zure proiektuaren erroan karpeta bat egokitzea osagai logiko bakoitzarentzat eta autonono bihurtzea: beste osagaiek haren funtzionalitatea erabili ahal izango dute soilik bere interfaze publikotik edo APItik pasatuz. Hau oinarrizkoa da zure osagaiak sinpleak izateko, menpekotasunen korapiloa ekiditeko eta zure aplikazioa mikrozerbitzu egitura handietarako prestatzeko.
-
+Tamaina ertaineko nahiz handiko aplikazioetarako, monolitoak benetan kaltegarriak dira. Menpekotasun asko dituen software handi bat edukitzea zaila da hausnartzeko eta maiz espageti kodea eragiten du. Arkitektu azkarrek ere, piztia mantsotzeko eta zatikatzeko haina gaitasun dituztenek, diseinuan esfortzu mental handiak egiten dituzte, eta aldaketa bakoitzak menpeko beste objektuekiko eragina arretaz aztertzea eskatzen du. Azken irtebidea software txikia garatzean datza: banandu kode pila osoa fitxategiak beste inorekin partekatzen ez dituzten aparteko osagaietan, bakoitza fitxategi gutxi batzuekin osatua egonik (APIa, zerbitzuak, datuen sarbidea, egiaztatzeak, etab.) oso erraza da hausnartzeko. Askok 'mikrozerbitzu' egitura deitzen diote horri, garrantzitsua da ulertzea mikrozerbitzuak oinarri sorta bat direla eta ez derrigorrez jarraitu beharreko zehaztapenak. Printzipio ugari erabil ditzakezu mikrozerbitzudun egitura handi batean edota gutxi batzuk soilik. Biak dira zuzenak zure softwarearen konplexutasuna baxua den bitartean. Gutxienez, egin zenezakeen beste zerbait da osagaien artean oinarrizko mugak sortzea, zure proiektuaren erroan karpeta bat egokitzea osagai logiko bakoitzarentzat eta autonono bihurtzea: beste osagaiek haren funtzionalitatea erabili ahal izango dute soilik bere interfaze publikotik edo APItik pasatuz. Hau oinarrizkoa da zure osagaiak sinpleak izateko, menpekotasunen korapiloa ekiditeko eta zure aplikazioa mikrozerbitzu egitura handietarako prestatzeko.
### Blogeko aipua: "Eskalatzeak aplikazio osoaren eskalatzea eskatzen du"
@@ -13,7 +12,6 @@ Tamaina ertaineko nahiz handiko aplikazioetarako, monolitoak benetan kaltegarria
MartinFowler.com blogetik hartua
> Aplikazio monolitikoak arrakastatsuak izan daitezke, baina jendeak gero eta frustrazio gehiago ditu beraiekin, batez ere gero eta aplikazio gehiago inplementatzen direlako lainoan. Aldaketa zikloak elkarrekin lotuta daude: aplikazioaren zati txiki batean egindako aldaketak monolito osoa bersortzea eta inplementatzea eskatzen du. Askotan zaila da denbora aurrera joan ahala moduluzko egitura egokia mantentzea, modulu batean bakarrik eragina izango dituzten aldaketak mantentzea. Eskalatzeak aplikazio osoaren eskalatzea eskatzen du
-
### Blogeko aipua: "Zergatik egiten du garrasi zure aplikazioaren egiturak?"
diff --git a/sections/projectstructre/configguide.basque.md b/sections/projectstructre/configguide.basque.md
index 83254c98..086bd2b7 100644
--- a/sections/projectstructre/configguide.basque.md
+++ b/sections/projectstructre/configguide.basque.md
@@ -20,7 +20,7 @@ Konfigurazio liburutegi batzuek aipatutako funtzionalitate gehienak dohainik esk
-### Kodearen adibidea: konfigurazio hierarkikoak balioak aurkitzen eta konfigurazio fitxategi handiak mantentzen laguntzen du
+### Kode adibidea: konfigurazio hierarkikoak balioak aurkitzen eta konfigurazio fitxategi handiak mantentzen laguntzen du
```json5
{
diff --git a/sections/projectstructre/separateexpress.basque.md b/sections/projectstructre/separateexpress.basque.md
index 435190ab..ed404e84 100644
--- a/sections/projectstructre/separateexpress.basque.md
+++ b/sections/projectstructre/separateexpress.basque.md
@@ -8,7 +8,7 @@ Azken Express sorgailuak mantentzea merezi duen sekulako jardunbide bikain bat d
-### Kodearen adibidea: APIaren deklarazioak app.js/app.ts-en barruan egon beharko luke
+### Kode adibidea: APIaren deklarazioak app.js/app.ts-en barruan egon beharko luke
```javascript
const app = express();
@@ -17,7 +17,7 @@ app.use("/api/events", events.API);
app.use("/api/forms", forms);
```
-### Kodearen adibidea: zerbitzari sarearen deklarazioak /bin/www-en barruan egon beharko luke
+### Kode adibidea: zerbitzari sarearen deklarazioak /bin/www-en barruan egon beharko luke
Javascript
@@ -53,7 +53,7 @@ const server = http.createServer(app);
Javascript
diff --git a/sections/projectstructre/wraputilities.basque.md b/sections/projectstructre/wraputilities.basque.md
index 98f46e48..7a225073 100644
--- a/sections/projectstructre/wraputilities.basque.md
+++ b/sections/projectstructre/wraputilities.basque.md
@@ -4,7 +4,8 @@
### Azalpen paragrafoa
-Hazten hasi eta zerbitzari ezberdinetan antzeko baliabideak erabiltzen dituzten gero eta osagai ezberdin gehiago dituzun heinean, menpekotasunak kudeatzen hasi beharko zenuke. Nola gorde zenezake zure baliabidearen iturburu kodearen kopia bat eta beste osagaiei hura erabiltzen eta inplementatzen utzi? Bada, npm izeneko tresna bat badago horretarako... Hasi baliabide paketeetan zure kodea jartzen, etorkizunean kodearen ordezkapena errazteko eta argitaratu zure kode propioa npm pakete pribatu gisa. Horrela, zure kodeak beste kode hori inportatu ahal izango du, debaldeko menpekotasun kudeaketa tresnari esker. Posible da zure erabilera pribaturako npm paketeak argitaratzea, haiek publikoki partekatu gabe, [modulu pribatuak](https://docs.npmjs.com/private-modules/intro), [erregistro pribatua](https://npme.npmjs.com/docs/tutorials/npm-enterprise-with-nexus.html) edo [npm pakete lokalak](https://medium.com/@arnaudrinquin/build-modular-application-with-npm-local-modules-dfc5ff047bcc) erabili
+Hazten hasi eta zerbitzari ezberdinetan antzeko baliabideak erabiltzen dituzten gero eta osagai ezberdin gehiago dituzun heinean, menpekotasunak kudeatzen hasi beharko zenuke. Nola gorde zenezake zure baliabidearen iturburu kodearen kopia bat eta beste osagaiei hura erabiltzen eta inplementatzen utzi? Bada, npm izeneko tresna bat badago horretarako... Hasi baliabide paketeetan zure kodea jartzen, etorkizunean kodearen ordezkapena errazteko eta argitaratu zure kode propioa npm pakete pribatu gisa. Horrela, zure kodeak beste kode hori inportatu ahal izango du, debaldeko menpekotasun kudeaketa tresnari esker. Posible da zure erabilera pribaturako npm paketeak argitaratzea,haiek publikoki partekatu gabe, [modulu pribatuak](https://docs.npmjs.com/private-modules/intro), [erregistro pribatua](https://npme.npmjs.com/docs/tutorials/npm-enterprise-with-nexus.html) edo [npm pakete lokalak](https://medium.com/@arnaudrinquin/build-modular-application-with-npm-local-modules-dfc5ff047bcc) erabiliz
+
diff --git a/sections/testingandquality/3-parts-in-name.basque.md b/sections/testingandquality/3-parts-in-name.basque.md
index 10c724ad..110394f8 100644
--- a/sections/testingandquality/3-parts-in-name.basque.md
+++ b/sections/testingandquality/3-parts-in-name.basque.md
@@ -4,17 +4,17 @@
### Azalpen Paragrafoa
-Proben txostenak, aplikazioaren berrikuspenak kodea ezagun ez dutenentzako baldintzak betetzen dituen aipatu behar du: saiatzailea, inplementazioa egiten ari den DevOpsa eta hemendik bi urterako etorkizuneko zu. Hau hoberen lor daiteke probak eskatutako baldintzak kontuan hartzen baditu eta hiru zatiz osatua badago:
+Proben txostenak esan behar du aplikazioaren berrikuspenak erantzuten dien kodea nahitaez ezagutzen ez duten pertsonen beharrei: probatzailea, inplementazioa egiten ari den DevOps injinaria eta zu zeu hemendik bi urtera. Hori errazago lortuko duzu probak eskatutako baldintzak kontuan hartzen baditu eta hiru zatiz osatua badago:
-(1) Zer ari gara frogatzen? Adibidez, ProduktuZerbitzua.gehituProduktuBerria funtzioa
+(1) Zer ari gara probatzen? Adibidez, ProduktuZerbitzua.gehituProduktuBerria funtzioa
-(2) Zein egoera eta kasutan? Adibidez, ez zaio preziorik pasatu funtzioari
+(2) Zein egoera eta agertokitan? Adibidez, ez zaio preziorik pasatzen funtzioari
-(3) Zein da esperotako emaitza? Adibidez, produktu berria ez da onartua
+(3) Zein da espero den emaitza? Adibidez, produktu berria ez dago onartua
-### Kodearen adibidea: 3 zati dituen proba izena
+### Kode adibidea: 3 zati dituen proba izena
```javascript
//1. unitatea frogapean
@@ -31,8 +31,7 @@ describe('Produktu Zerbitzua', () => {
-### Kodearen adibidea, Anti Eredua: norberak proba osoaren kodea irakurri behar du eta asmoa ulertu
-
+### Kode adibidea, anti eredua: norberak proba osoaren kodea irakurri behar du eta asmoa ulertu
```javascript
describe('Produktu Zerbitzua', () => {
describe('Produktu berria gehitu', () => {
@@ -47,9 +46,9 @@ describe('Produktu Zerbitzua', () => {
-### "Zuzen Egitearen Adibidea: Proben txostenak dokumentuaren baldintzak biltzen ditu"
+### "Zuzen egiteko adibidea: proben txostenak dokumentuaren baldintzak biltzen ditu"
-["30 Node.jsen proba jarraibide egokiak" blogetik, Yoni Goldbergen eskutik](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347)
+["30 Node.jsen proba jardunbide egokiak" blogetik hartua, Yoni Goldbergen eskutik](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347)

diff --git a/sections/testingandquality/aaa.basque.md b/sections/testingandquality/aaa.basque.md
index 28072ac8..a981f29b 100644
--- a/sections/testingandquality/aaa.basque.md
+++ b/sections/testingandquality/aaa.basque.md
@@ -4,14 +4,13 @@
### Azalpen Paragrafoa
-Probak egiterakoan daukagun erronka handiena memoria espazio falta da, iada badugu asko lanpentzen gaituen ekoizpen kodea. Honegatik, proba kodea sinplea eta ulergarria izan behar da. Proba kasu bat irakurtzean, ez du kode inperatiboa (begiztak, ondoretasun) irakurtzearen irudia eman behar, HTML moduan, esperientzia deklaratibo bat baizik. Hau lortzeko, erabili AAA eredua irakurtzaileek probaren asmoa esfortzu gabe uler dezaten. Eredu hau bezalako beste batzuk ere badaude, XUnit 'Prestatu, Aritu, Egiaztatu, Eraitsi' ('Setup, Excercise, Verify, Teardown') bezalakoak. Hauek dira hiru Ak:
+Probak egiterakoan daukagun erronka handiena memoriako espazio falta da, dagoeneko ekoizpen kodeak oso lanpetuta gauzka. Horregatik, proben kodeak sinplea eta ulergarria izan behar du. Probak irakurtzean, ez luke eman beharko kode inperatiboa irakurtzen ari zarela (begiztak, oinordetza), HTML moduan, esperientzia deklaratibo bat baizik. Hori lortzeko, erabili AAA eredua, irakurtzaileek probaren asmoa esfortzu gabe uler dezaten. Badaude hori bezalako beste eredu batzuk ere, adibidez: XUnit 'Prestatu, Aritu, Egiaztatu eta Eraitsi' ('Setup, Excercise, Verify, Teardown'). Hauek dira hiru Ak:
-Lehenengo A, Prestatu (Arrange): Sistema, proba kasuak simulatu nahi duen egoeran jartzeko, egin beharreko kodearen prestakuntza. Honek, eraikitzailearen unitate proba egitea eska lezake, datu-basean datuak gehitzea, objektuak antzeratuz (mock) eta beste edozein prestakuntza kode
+Lehenengo A, prestatu (Arrange): hau da, prestatu kodea lortzeko sistema jartzea probak simulatu nahi duen egoeran. Horrek, besteak beste, eraikitzailearen unitate proba egitea eska lezake, datu basean erregistroak gehitzea, objektuak mock/stub eta beste edozein prestakuntza kode eranstea
-Bigarren A, Jokatu: zure unitate proba exekutatko. Normalean kode ilara bat
-
-Hirugarren A, Baieztatu: Jasotako balioak esperotakoa errespetatzen duela ziurtatu. Normalean kode ilara bat
+Bigarren A, jokatu: exekutatu zure unitate proba. Normalean kode ilara bat izaten da
+Hirugarren A, baieztatu: ziurtatu jasotako balioak espero ziren modukoak direla. Normalean kode ilara bat izaten da
### Kode adibidea: AAA ereduaz egituratutako proba bat
@@ -38,7 +37,7 @@ describe.skip("Bezero klasifikatzailea", () => {
-### Kodearen adibidea, Anti Eredua: bereizketarik ez, bloke bakarra, ulertzeko zailagoa
+### Kode adibidea, anti eredua: bereizketarik ez, bloke bakarra, ulertzeko zailagoa
```javascript
test("Premium gisa klasifikatua izan beharko litzateke", () => {
@@ -57,7 +56,7 @@ test("Premium gisa klasifikatua izan beharko litzateke", () => {
### "Erabili 6 zati proba bakoitzean"
-["30 Node.jsen proba jarraibide egokiak" blogetik, Yoni Goldbergen eskutik](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347)
+["30 Node.jsen proba jarraibide egokiak" blogetik hartua, Yoni Goldbergen eskutik](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347)

diff --git a/sections/testingandquality/avoid-global-test-fixture.basque.md b/sections/testingandquality/avoid-global-test-fixture.basque.md
index c38e46a4..3510936a 100644
--- a/sections/testingandquality/avoid-global-test-fixture.basque.md
+++ b/sections/testingandquality/avoid-global-test-fixture.basque.md
@@ -4,11 +4,11 @@
### Azalpen paragrafoa
-Hau da urrezko proba araua: egin proba kasuak sinpleak, proba bakoitzak bere datu-baseko ilarak sortu eta erabili behar ditu menpekotasunak ekiditeko eta probaren fluxua ondo ulertzeko. Egia esan, garatzaileek hau askotan urratzen dute, datu-baseak beteaz probak exekutatu aurretik (‘test instalazioa‘ bezala ere ezagutuak), errendimendua hobetzeko xedearekin. Errendimendua gai garrantzitsua izan arren arindua izan daiteke (adibidez Memoria Datu-Baseak, begiratu "Osagarrien probrak" atala), baina proben konplexutasuna da kontutan hartu beharreko gai mingarriena. Praktikan, sortu proba kasu bakoitza explizituki datu-basean beharrezko informazioa gehitzeko eta jokatu bakarrik datu horiekin. Errendimendua arazo larria bihurtzen bada, oreka akordio bat aurki daiteke soilik datuak gehituko dituen proba bat idazten eta ondoren hau bikoizten beste probentzat (adibidez queries)
+Urrezko proba arauari jarraituz egin proba kasu/eredu sinpleak: proba bakoitzak bere datu baseko ilarak sortu eta erabili behar ditu menpekotasunak ekiditeko eta probaren fluxua ondo ulertzeko. Egia esan, garatzaileek askotan urratzen dute hori, datu baseak betez probak exekutatu aurretik (‘test instalazioa‘ bezala ere ezagutuak), errendimendua hobetzeko xedearekin. Errendimendua gai garrantzitsua izan arren, arindua izan daiteke (adibidez, begiratu Memoria Datu Baseak "Osagarrien probak" atalean), baina proben konplexutasuna da buruko min asko ematen dituen gai, kontutan hartu beharrekoa. Praktikan, sortu proba kasu bakoitza berariaz datu basean beharrezko informazioa gehitzeko eta jokatu bakarrik datu horiekin. Errendimendua arazo larria bihurtzen bada, adostasun orekatua aurki daiteke soilik datuak gehituko dituen proba bat idatziz eta ondoren hori bikoiztuz beste probentzat (adibidez queries)
-### Kodearen adibidea: proba bakoitzat bere datu multzoa bakarrik ikutzen du
+### Kode adibidea: proba bakoitzak bere datu multzoarekin bakarrik egiten du lan
```javascript
it("Webgune baten izena eguneratzerakoan, baieztapen arrakastatsua izan", async () => {
@@ -26,7 +26,7 @@ it("Webgune baten izena eguneratzerakoan, baieztapen arrakastatsua izan", async
-### Kodearen adibidea, Anti Erdua: probak ez dira independenteak eta aurrez konfiguratutako datuak egotea aintzat hartzen dute
+### Kode adibidea, anti eredua: probak ez dira independenteak eta aurrez konfiguratutako datuak daudela supotzen dute
```javascript
before(() => {
diff --git a/sections/testingandquality/citools.basque.md b/sections/testingandquality/citools.basque.md
index 07391b8c..647bf29c 100644
--- a/sections/testingandquality/citools.basque.md
+++ b/sections/testingandquality/citools.basque.md
@@ -1,14 +1,15 @@
-# Zure CI plataforma arretaz aukeratu
+# Aukeratu arretaz zure IE plataforma
### Azalpen paragrafoa
-CIaren munduak [Jenkins](https://jenkins.io/)en malgutasuna versus SaaS honitzaileen sinpletasunaren arteko lehia ohi izan zen. Egoera aldatzen ari da [CircleCI](https://circleci.com/) eta [Travis](https://travis-ci.org/) bezalako hornitzaileek prestatze-denbora minimodun Docker kontainerrak bezalako soluzio irmoak proposatzen dituztenetik, Jenkins 'sinpletasunean' ere lehiatzen den bitartean. Edozeinek hodeiean CI soluzio aberats bat prestatu ahal dezan arren, oraindik ere plataformaren erabakia da Jenkinsen xehetasun finenak kontrolatu behar izatea ala ez. Erabakia askotan CI prozesua pertsonalizatua izan beharrak zehazten du: hodeieko dohaineko hornitzaileek shell komando pertsonalizatuak exekutatzea ahalbidetzen dute, docker irudi pertsonalizatuak, lan fluxuaren doitzea, matrize eraikitzeak exekutatzea eta bestelako funtzionalitate aberatsak dituzte . Hala ere, infraestruktura edo Java bezalako programazio lengoaia formal bat erabiliaz CIaren logika programatzea nahi bada, Jenkins izan daiteke oraindik aukera hoberena. Bestela, aukeratu dohainekoa eta sinplea den hodeirako soluzio bat
+IEaren mundua [Jenkins](https://jenkins.io/)en malgutasuna versus SaaS hornitzaileen sinpletasunaren arteko lehia izan ohi zen. Jokoa aldatzen ari da, [CircleCI](https://circleci.com/) eta [Travis](https://travis-ci.org/) bezalako SaaS hornitzaileek irtenbide sendoak eskaintzen baitituzte Docker edukiontziak barne, gutxieneko konfigurazio denborarekin Jenkins-ek "soiltasun" segmentuan ere lehiatzen saiatzen den bitartean. Hodeian edozeinek IE irtenbide aberatsa presta dezakeen arren, prozesua xehetasun handiz kontrolatu beharra izanez gero, Jenkins da oraindik ere aukeratutako plataforma. Erabakia askotan IE prozesua zenbateraino pertsonalizatu behar den zehazten du: hodeiko dohaineko hornitzaileek/ doako eta konfiguratutako doako hodei saltzaileek ahalbidetzen dute shell komando pertsonalizatuak, docker irudi pertsonalizatuak, lan fluxu doitua, matrizearen eraikuntzak exekutatzea, eta bestelako funtzionalitate aberats batzuk dituzte. Hala ere, Java bezalako programazio lengoaia formal bat erabiliz azpiegitura kontrolatu edo IE logika programatu nahi izanez gero, Jenkins izan daiteke oraindik aukera. Bestela, aukeratu dohainekoa eta sinplea den hodeko soluzioren bat.
+
-### Kodearen adibidea: hodeieko CI ezarpen arrunta. .yml fitxategi bakar bat besterik ez
+### Kode adibidea: hodeiko IE ezarpen arrunta. .yml fitxategi bakarra besterik ez
```yaml
version: 2
@@ -40,11 +41,11 @@ jobs:
```
-### Circle CI - ia zero prestakuntzadun hodeieko CIa
+### Circle CI: ia zero prestakuntzadun hodeieko IEa

-### Jenkins - CI sofistikatu eta sendoa
+### Jenkins - IE sofistikatu eta sendoa

diff --git a/sections/testingandquality/refactoring.basque.md b/sections/testingandquality/refactoring.basque.md
index 2f12e070..608bf346 100644
--- a/sections/testingandquality/refactoring.basque.md
+++ b/sections/testingandquality/refactoring.basque.md
@@ -4,24 +4,26 @@
### Azalpen paragrafoa
-Garapen iteratiboaren fluxuan, berregituratzea prozesu garrantzitsua da. "Kodearen usainak" (kode-garatze praktika okerrak) ezabatzen, Bikoiztutako Kodea, Funtzio Luzeak, Parametro Zerrenda Luzeak bezalakoak, zure kodea hobetuko dute, mantentzea erreztuz. Analisi estatikoko tresnak erabiltzeak kode usain hauek aurkitzen eta berregiturazio prozesu bat eraikitzen lagunduko dizu. Tresna hauek zure CI eraikitzean gehitzeak kalitate egiaztapenaren prozesua automatizatzen lagunduko du. Zure CIak Sonar edo Code Climate bezalako tresnak integratzen baditu, eraikitzeak huts egingo du kode usainen bat aurkitzen badu, eta egilea arazoaren konponbideaz jakinaraziko du. Analisi estatikoko tresna hauek ESLint bezalako tresnen osagarri izango dira. Linting tresna gehienak fitxategi bakoitzeko indentazioa eta ahaztutako azpituzabeak (hala ere, batzuek funtzio luzeak bezalako kode usainak aurkituko dituzte) bezalako kode estiloetan zentratuko dira, analisi estatikoko tresnak berriz, fitxategi bakarreko edo anitzetako kode usainak (bikoiztutako kodea, analisi konplexitatea, etab.) aurkitzen saiatuko dira
+Garapen iteratiboaren fluxuan, berregituratzea prozesu garrantzitsua da. "Kodearen usainak" (kodetze jardunbide okerrak) ezabatzen badituzu –hala nola, Bikoiztutako Kodea, Funtzio Luzeak, Parametro Zerrenda Luzeak-, zure kodea hobetuko duzu, eta mantentzea erreztuko. Analisi estatikoko tresnak erabiltzeak kode usain horiek aurkitzen eta berregiturazio prozesu bat eraikitzen lagunduko dizu.
+
+Tresna horiek zure IE eraikuntzari gehitzeak kalitatea egiaztatzeko prozesua automatizatzen lagunduko dizu. Zure IEak Sonar edo Code Climate bezalako tresnak integratzen baditu, eraikuntzak huts egingo du kode usainak antzematen baditu, eta egileari arazoa nola konpondu jakinaraziko dio. Analisi estatikoko tresna hauek ESLint bezalako tresnen osagarri izango dira. Linting tresna gehienak fitxategi bakoitzeko indentazioa eta ahaztutako puntu eta komak bezalako kode estiloetan zentratuko dira (hala ere, batzuek funtzio luzeen moduko kode usainak aurkituko dituzte); analisi estatikoko tresnak, berriz, fitxategi bakarreko edo anitzetako kode usainak aurkitzen saiatuko dira (bikoiztutako kodea, analisi konplexitatea, etab.)
-### Martin Fowler - ThoughtWorkseko Zientzilari Burua
+### Martin Fowler, ThoughtWorkseko zientzilari burua
- "Berregituratzen - Bizi Den Kodearen Diseinua Hobetzen" liburutik
+ "Berregituratzen - Bizi Den Kodearen Diseinua Hobetzen" liburutik hartuta
> Berregituratzea, bizi den kodearen diseinua hobetzeko teknika kontrolatua da
-### Evan Burchard - Web Garapen Aholkulari eta Autorea
+### Evan Burchard, web garapeneko aholkulari eta idazlea
- "JavaScript Berregituratzen: Kode Okerra Kode Ona Bilakazen" liburutik
+ "JavaScript Berregituratzen: Kode Okerra Kode Ona Bilakazen" liburutik hartuta
- > Berdin dio zein framework edo "JSen-konpilatzen-du" lengoaia edo liburutegi erabiltzen duzun, akatsen eta errendimendua beti izango dira arazo bat zure JavaScripta pobrea bada
+ > Berdin dio zein framework edo "JSen-konpilatzen-du" lengoaia edo liburutegi erabiltzen duzun, erroreak eta errendimendua beti izango dira arazo bat zure JavaScripta pobrea bada
diff --git a/sections/testingandquality/test-middlewares.basque.md b/sections/testingandquality/test-middlewares.basque.md
index ea2e61a2..71bfeda3 100644
--- a/sections/testingandquality/test-middlewares.basque.md
+++ b/sections/testingandquality/test-middlewares.basque.md
@@ -4,7 +4,8 @@
### Azalpen paragrafoa
-Askok Middlewarearen probak alde batera uzten dituzte sistemaren zati txiki bat adierazten dute eta zuzeneko Express zerbitzari bat edukitzea eskatzen dute. Bi arrazoi hauek okerrak dira, Middlewareak txikiak dira baina eskaera guztietan edo gehienetan eragina dute eta `{req,res}` JS objektuak berreskuratzen dituzten funtzio puru gisa errez probatu ahal dira. Middlewareko funtzio bat probatzeko, norberak funtzioa bera deitu behar du eta {req,res} objektuekin dagoen elkarrekintza espiatu (spy) ([erabili Sinon adibide gisa](https://www.npmjs.com/package/sinon)), funtzioak ekintza zuzena egin duela ziurtatzeko. [node-mock-http](https://www.npmjs.com/package/node-mocks-http) liburutegia oraindik ere urrutiago doa eta {req,res} objektuak faktorizatzen ditu beraien jokaera espiatuz. Adibidez, res objektuan zehaztutako http estatus bat esperotako balioarekin bat datorren baieztatu dezake (Ikusi beheko adibidea)
+Askok middlewarearen probak alde batera uzten dituzte sistemaren zati txiki bat adierazten dutelako eta zuzeneko Express zerbitzaria edukitzea behar dutelako. Bi arrazoi horiek okerrak dira: middlewareak txikiak dira, baina eskaera guztiei edo gehienei eragiten diete, eta erraz probatu daitezke {req,res} JS objektuak berreskuratzen dituzten funtzio huts gisa. Middleware funtzioak probatzeko, norberak funtzioa deitu behar du eta {req,res} objektuekin dagoen elkarrekintza espiatu (spy) ([erabili Sinon adibide gisa](https://www.npmjs.com/package/sinon)), funtzioak ekintza zuzena egin duela ziurtatzeko. [node-mock-http](https://www.npmjs.com/package/node-mocks-http) liburutegia oraindik ere urrutiago doa eta {req,res} objektuak faktorizatzen ditu beraien jokaera espiatuz. Adibidez, res objektuan zehaztutako http estatus bat espero den balioarekin bat datorren baiezta dezake (ikusi beheko adibidea)
+