Jump to content
php.lv forumi

Recommended Posts

  • Replies 228
  • Created
  • Last Reply

Top Posters In This Topic

Kā tu nodrošini konsistenci starp modeļiem un shēmām, ja shēmas maini "ar roku" ?

shēmu nemaina, nu piemēram, postgresql pamata shēma - core paliek, iedomājies apli - kopu, tur iekšā ir tīras tabulas - kodols, pie viņām var tikt klāt tikai caur kverijiem, atpakaļ kodols arī dod skatus, tur vēl ir netīrās tabulas, bet tās ir citā shēmā, starp kodolu un netīrajām tabulām ir uzrakstīti filtri - procedūras, tā pat uz output ir procedūras, kas taisa views. db procedūra mainās - filtrs, tikai nemaini core struktūru un moduļi Tev nav teorētiski jāmaina, teorētiski, praktiski Tev jāpieraksta klāt ir jauns reports, ja mainās output, nu jāuzraksta jauns pieprasījums, jauna kontroliera apstrāde un views, kas saturu atrādīs. Bet kodols visu laiku paliek inkapsulēts!

 

Postgresql Tu vari rakstīt visu, kaut vai C tīrā valodā, tāpēc tā testēšana ir komplekss process, jauni gurķi tikai skatās kodu, bet bieži viss slēpjas dziļāk, jā ir tāda profesija parādījusies Latvijā - tester, ļoti grūta profesija, gan psiholoģiski, gan fiziski, testētājam jābūt vēl gudrākam, kas kodu uzrakstīja, amen!

 

Atbildība liela, jo pēdējais vārds būs tieši testētājam, nauda laba, sirmi mati un liela pieredze ... izvēle paliek jebkad - samurajam vienmēr ir 2 izvēles, samurajs nevar nodot ne sevi ne savu saimnieku - ideāla sistēma, mo

ž to der atcerēties. Protams testētājam jālasa kods rakstīts jebkurā valodā

Edited by vbz
Link to comment
Share on other sites

Pilnīgas muļķibas. Testētājam nevajadzētu mācēt programmēt, kur nu vēl jāredz kods.

 

Testētājs, jeb QA, ir cilvēks, kurš pārbauda, vai implementētā sistēma dara to, ko ir prasījis bizness, — tas, kas ir aprakstīts specifikācijā. Viņš to lieto no tāda skatpunkta, kā to redzēs potenciālais klients. Web gadījumā, tas ir caur browseri. Testētājs cenšas salauzt sistēmu.

 

Iemesls, kāpēc QA neredz kodu ir tāds, ka testus, kuri zina par kodu un tā struktūru, raksta programmētāji. Progremmātāji raksta kodu un raksta testus, kas testē viņu uzrakstīto kodu. Sistēma, kurā cilvēks, kurš kodam raksta testus ir cits, nekā tas, kurš rakstīju kodu, ir ļoti neefektīva, jo uzrakstītam kodam uzrakstīt testus un daudzreiz grūtāk.

 

Ja tu biji domājis, ka ir QA, kurš dara to, ko es aprakstīju, — attiecīgi testē kā to redzēs klients, bet viņam ir pieejams kods — tas arī ir ļoti neefektīvi. Ja QA var redzēt kā sistēma strādā, tas ir tāds pats simple testings, ko veic programmētājs jau rakstot kodu — pārbaude rakstot, ka kods dara to, ko tam vajadzētu darīt.

 

Jebkurā gadījumā, diezgan absurdi.

 

Par to, kas “ir normāli“ vai nē, — nesmuki izteicos.

 

Datu struktūrai, kas ir datubāzē, vajadzētu būt aprakstītai kodā, kaut vai tikai tāpēc, lai tā būtu versiju kontrolē un visa vēsture būtu redzama. Tam obligāti nevajag būt ORM, SQL faili ar CREATE TABLE būtu pietiekami (neērti, bet pietiekami).

 

Tas, ka tu kko modelē gudrā veidā nenozīmē, ka tam, ko esi uzmodelējis, nevajag būt nekur aprakstītam, izņemot reālo produkcijas datubāzi. Es arī tabulas un to relācijas zīmēju uz whiteboard, pirms tās pārkonvertēju uz modeļiem.

 

Tas, ko vēlējos teikt — datubāzei ar datiem nevajadzētu būt original source par to kāda ir datubāzes struktūra.

Link to comment
Share on other sites

Tas, ko vēlējos teikt — datubāzei ar datiem nevajadzētu būt original source par to kāda ir datubāzes struktūra.

 

Nu piedod bet dumības, Tu pats saprati ko uzrakstīji?

dati vienmēr būs pirmie, tie arī būs orginal source

 

Toč jāsāk domāt, ka kkas nav ar implementāciju Tavās smadzenēs ....

 

Datu struktūru mēs uz lapas veidojam, tad tikai kodu sāk rakstīt!

Jāsāk lamāties, nu kur var būt tik aptaurēts

 

Vienmēr viss sākas ar entītijām - paskaidrošu entītija ir reālās dzīves abstrakts objekts, tad, kad saprot, kas ir lācim vēderā, tikai tad sāk rakstīt abstrakciju lai redzētu, nu šajā gadījumā browsers

 

Nu vienalga, pastāv arī desktop app, nav nozīmes, ok liekam to browserī, kāda tam nozīme, es arī desktop app programmēju, anyway viss sākas ar abstrakciju - kā Tu to reālās dzīves objektu digitalizēsi!

 

Datu struktūra vienmēr būs pirmā, tad Tu zinošais vari rakstīt savu kodu

Nē, viss sākas ar abstrakciju, ko tas nozīmē, blje man te teorija jāraksta, tad kad reālie objekti ir salikti uz lapas, tad tikai domājam kā to baitos pārvērst, kur glabāt - var visumā arī glabāt, protams nākošais solis ir kā un kur glabāt. parasti mēs izvēlamies cietos diskus, man pohuj kur tu glabā, bet tāds ir scenārijs

 

un nevajag salīdzināt QA ar testeri, tur ir liela atšķirība, starp citu

Edited by vbz
Link to comment
Share on other sites

Datu struktūrai, kas ir datubāzē, vajadzētu būt aprakstītai kodā, kaut vai tikai tāpēc, lai tā būtu versiju kontrolē un visa vēsture būtu redzama

Vēl lielākas muļķības nevari uzrakstīt! Mēs liekam datu struktūras izmaiņas repozitorijā, normāli uzraksta patch, kad tas vajadzīgs, atdala kodu no b

azes. bāzei savs repozitorijs, kodam tur labi daudz branch. Kaut ko vēl muļķīgāku Tu vari no sevis izpiest, nu pacenties, bet toch nāk smiekli

 

"Datu struktūrai vajadzētu būt aprakstītai kodā" ... viss man vairāk nav komentāru! 

Edited by vbz
Link to comment
Share on other sites

labi viss, manis pēc varat te njemties, moderators by default ir dumjš, nu nekas, lai puika cīnās

Labi piedodiet, bet kretinē, kad raksta tādas muļķības

 

Nu viņš nav dumjš bet mums nesakrīt viedokļi

Edited by vbz
Link to comment
Share on other sites

Tā kā lietoju laravel, tad vienmēr sāku ar tabulas modelešanu.

 

Modelēšana tiek veikta izmantojot migrācijas, kas atrodas versiju kontrolē.

Migrācija izskatās ~ šāda:

51ft9dX.png

Ir UP un DOWN metodes, kas izipldās veicot migrāciju/rollback.

 

Teiksim, ja kādam vajag replicēt lapu savā vidē, viņš noklonē repozitoriju un vienkārši palaiž visas migrācijas - tiek uzbūvēta db.

 

Pēc tabulas izveides, tiek izveidots attiecīgais modelis (ORM). To var darīt ar roku, var arī izmantot ģenerētāju, kas pēc tabulas uzbūvē klasi.

 

ORM/Modelis izskatās tāds:

inoEdB2.png

 

Pēc tam tiek veidots interfeiss, kas satur metodes, kas nodrošinās apiešanos ar šo modeli, labošanas, dzēšanas.

Vwmuqvp.png

 

 

Tālāk izveidoju repozitoriju, kas manto šo interfeisu.

PWCibt0.png

 

 

Kontrolieri sazinās tikai caur repozitoriju (kontrolieris nemaz neredz repozitoriju, viņš zina tika interfeisu), tādējādi kontrolieris nav coupled ar datubāzi.

 

Šis, tā saucamais, repozitoriju patterns ļauj arī vieglāk testēt - mēs vienkārši mock'ojam šos repozitoriju interfeisus, un varam unittestos (un ne tikai) testēt visu nemaz neaiztiekot datubāzi.

Link to comment
Share on other sites

Nu bļin ja tu esi atpalicis, savā kantorī sežot un neko nedarot, plus vēl nemāki izstāstīt kāpēc tev ir taisnība un kāpēc man nav, nemaz nerunājot par apvainojumiem, kas vienkārši parāda tavu nožēlojamo līmeni, tad nav jēgas nemaz te runāt. Wannabe nolādētais...

Edited by daGrevis
Link to comment
Share on other sites

datubāzes shēmas definīcija labāk ir sourcē.

Diez vai tur ir "labāk" vai "sliktāk". Dažādos projektos bizness var prasīt dažādu pieeju. Tiesa, PHP gadījumā biežāk tiešām labāk varētu būt, ka definīcijas glabā sourcē, bet diez vai 100% gadījumu. Lielos projektos un to apakšprojektos tas varētu arī nebūt spēkā.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...