

{"id":31851,"date":"2025-07-03T03:26:55","date_gmt":"2025-07-03T02:26:55","guid":{"rendered":"https:\/\/catalinx.ro\/wordpress\/?p=31851"},"modified":"2025-06-25T15:42:19","modified_gmt":"2025-06-25T14:42:19","slug":"cine-e-imbecil-in-cazul-asta","status":"publish","type":"post","link":"https:\/\/catalinx.ro\/wordpress\/?p=31851","title":{"rendered":"Cine e imbecil \u00een cazul asta"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n\n<p>Practicile \u00een domeniu, la corpora\u021bii, nu \u00ee\u021bi permit s\u0103 transpor\u021bi cod \u00een sistemul productiv f\u0103r\u0103 s\u0103 testezi. <br \/>Glumesc, plm ,normal c\u0103-\u021bi permit, cum crede\u021bi c\u0103 sunt a\u0219a de proaste  softurile pe care le folosi\u021bi. <\/p>\n\n\n\n<p>Dar nu \u00ee\u021bi permit s\u0103 trimi\u021bi cod \u00eenspre productiv f\u0103r\u0103 s\u0103-\u021bi fac\u0103 cineva review la code-ul \u0103la. <\/p>\n\n\n\n<p>\u0218i sunt ni\u0219te criterii de performan\u021b\u0103 pe care trebuie s\u0103 le \u00eendeplineasc\u0103 codul \u0103la, printre alte criterii. <br \/>\u00cen lumea mea, unul din criteriile \u0103lea sunt s\u0103 nu ai \u201dselect \u00een loop\u201d. Nu o s\u0103 pierd prea mult s\u0103 explic asta, pe scurt,  \u00eentr-o bucl\u0103 de execu\u021bie \u00een care procesezi, s\u0103 zicem , toate \u00eenregistr\u0103rule dintr-o tabel\u0103 pe care ai le-ai selectat cumva anterior, nu ai voie s\u0103 scrii cod care s\u0103 fac\u0103 alt\u0103 selec\u021bie. <\/p>\n\n\n\n<p><br \/>Adic\u0103 la fiecare itera\u021bie \u00een bucl\u0103 s\u0103 faci tu un select. Imagineaz\u0103-\u021bi c\u0103 ai o tabel\u0103 cu 100,000 de clien\u021bi \u0219i vrei pentru fiecare CNP-ul dintr-o tabel\u0103 de CNP-uri. Nu e cea mai bun\u0103 idee s\u0103 buclezi prin to\u021bi clien\u021bii \u0103ia \u0219i s\u0103 execu\u021bi de fiecare dat\u0103 \u201dselecteaz\u0103-mi CNP-ul pentru clientul  de la linia asta din tabela de CNP-uri\u201d c\u0103 presupun c\u0103 e intuitiv c\u0103 nu-i cea mai str\u0103lucit\u0103 idee s\u0103 execu\u021bi  100,000 de query-uri, fa\u021b\u0103 de s\u0103 zicem  un query \u00een care specifici to\u021bi clien\u021bii pentru care vrei CNP-urile. <\/p>\n\n\n\n<p>Dar e mai comod s\u0103 scrii logica a\u0219a, cu select \u00een loop, a\u0219a c\u0103 de ce nu. <\/p>\n\n\n\n<p>\u0218i de aia st\u0103 code reviewer-ul cu b\u00e2ta, la v\u00e2nat de juniori. <br \/>Problema e c\u00e2nd \u0103la are doar lista de verific\u0103ri \u0219i nu \u0219tie s\u0103 te \u00eendrume mai departe. <br \/>Am descoperit o dat\u0103 o gre\u0219eal\u0103 c\u00e2nd pentru o tabel\u0103 se procesa doar prima intrare. Am observat c\u0103 era \u00eenlocuit \u201dloop\u201d-ul ( adic\u0103 ciclarea prin toat\u0103 tabela ) cu o citire a primei linii din tabel\u0103. <br \/>Le-am deschis alora un defect \u0219i le-am spus ce s\u0103 schimbe. A schimbat tipul care a scris codul ini\u021bial. Lux. <\/p>\n\n\n\n<p>Apoi am scris eu o specifica\u021bie, \u0219i pentru c\u0103 era o situa\u021bie similar\u0103 m-am g\u00e2ndit s\u0103-i explic omului, vezi c\u0103 aici avem nevoie de o buclare, nu de doar procesarea unei singure intr\u0103ri, c\u0103 na, s\u0103 fie clar. <\/p>\n\n\n\n<p>A zis c\u0103 da, da &#8211; c\u00e2nd am testat, se procesa o singur\u0103 intrare. B\u0103nuiam de ce.  \u0218i colegul care se ocupa de asta i-a zis , b\u0103i, dar \u00eenlocuie\u0219te,  \u201dPROCESEAZ\u0102 PRIMA INTRARE  \u201d cu \u201dCICLEAZ\u0102 \u201d ( nu v\u0103 scriu acuma codul exact). <br \/>Iar developericiul cic\u0103  : \u201dP\u0103i a fost a\u0219a , dar nu s-a aprobat la code review, c\u0103 era un select \u00een bucla aia. \u201d<\/p>\n\n\n\n<p>Cristoaseee!<\/p>\n\n\n\n<p>\u0218i zice: Ce-ar fi dac\u0103 citesc \u00eenainte de \u201dloop\u201d TOATE intr\u0103rile din tabela cu pricina?<\/p>\n\n\n\n<p>N-am mai zis nimic, s-a ocupat colegul meu c\u0103 e mai t\u00e2n\u0103r \u0219i mai are r\u0103bdare, cred. <br \/><br \/>Dar m\u0103 g\u00e2ndesc  c\u0103 toat\u0103 schema asta cu \u201dcode review\u201d e ca s\u0103 nu scrii c\u0103caturi, \u00eens\u0103 c\u00e2nd omul nu \u00een\u021belege nimic din nimic oricum numai c\u0103caturi ajung.  A cui e vina?<br \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Practicile \u00een domeniu, la corpora\u021bii, nu \u00ee\u021bi permit s\u0103 transpor\u021bi cod \u00een sistemul productiv f\u0103r\u0103 s\u0103 testezi. Glumesc, plm ,normal c\u0103-\u021bi permit, cum crede\u021bi c\u0103&hellip;<\/p>\n","protected":false},"author":2,"featured_media":25017,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[1171,1474,6531],"class_list":["post-31851","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general-trash","tag-it","tag-programare","tag-safety-checks"],"views":438,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2023\/06\/lupul-infinit-aka-the-infinite-loop.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4Eq23-8hJ","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/31851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=31851"}],"version-history":[{"count":2,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/31851\/revisions"}],"predecessor-version":[{"id":31854,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/31851\/revisions\/31854"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/25017"}],"wp:attachment":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=31851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=31851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=31851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}