

{"id":10729,"date":"2018-03-09T13:44:49","date_gmt":"2018-03-09T11:44:49","guid":{"rendered":"http:\/\/catalinx.ro\/wordpress\/?p=10729"},"modified":"2018-03-09T14:16:31","modified_gmt":"2018-03-09T12:16:31","slug":"problema-de-munca","status":"publish","type":"post","link":"https:\/\/catalinx.ro\/wordpress\/?p=10729","title":{"rendered":"Problema de munca"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Mi s-a cerut sa fac o chestie, va explic mai jos. Pe care n-o s-o fac ca &#8220;nu e timp&#8221; si ca e aiurea sa ma plateasca si pe mine si pe un coleg pentru cat ar dura s-o fac. ROI mic. Daca nu cumva se poate mai usor si nu stiu eu.<\/p>\n<p>Eu lucrez acum (si) cu un modul\u00a0 din SAP care se numeste Master Data Governance.\u00a0 Care e foarte misto dar un pic under-developed pentru deceniul asta. Ceea ce e si mai misto, ca asa castig eu bani multi.<\/p>\n<p>Introducere, pentru aia care s-au pierdut din momentul in care am scris SAP, companiile au nevoie de calitatea datelor din sistemele lor.\u00a0 Secolul ( sau poate doar deceniul) asta este\u00a0 despre date si calitatea datelor. Ca sa poti sa faci analize si proiectii competente.<\/p>\n<p>Datele tranzactionale generate automatizat de sisteme sunt ok. Robotii nu-s prosti si handicapati ca noi.<\/p>\n<p>Celelalte generate de &#8220;mana omului&#8221; sunt ca &#8230;penis.<\/p>\n<p>Imaginati-va companii in care oamenii introduc date despre materiale, despre clienti. Despre.\u00a0 \u00a0De capul lor.\u00a0 Asa te trezesti cu 17000 de adrese fara zipcode, in conditiile in care in mai multe aplicatii , unele legale,\u00a0 codul asta postal e obligatoriu. Si vrei sa muti datele astea dintr-un sistem unde n-ai niciun fel de reguli intr-unul &#8220;compliant&#8221; ( sunt Raducioiu, nu stiu cuvantul potrivit) cu standardele. Si nu merge.<\/p>\n<p>Asa ca companiile\u00a0 au evoluat de la Master Data Management la Master Data Governance. Adica baga\u00a0 un apasaci datele alea &#8220;in calculator&#8221;, dar nu devin active si folosite in toata compania imediat. Nu, ca poate a introdus cacaturi. Intra intr-un proces de aprobare, isi mai dau si altii cu parerea, mai experti decat el si daca e ok, intra in sistem.\u00a0 Despre procesul asta de aprobare e vorba in &#8220;Governance&#8221; si din asta sug bani.<\/p>\n<p>Ajunge cu introducerea.<\/p>\n<p>In MDG ai\u00a0 modele de date. Va arat acum unu &#8220;standard&#8221; dezvoltat deja de SAP, pentru Business Partner ( clienti si furnizori ). Din motive de discretie si contract nu va pot arata fix ce lucrez, adica un model custom.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10730\" data-permalink=\"https:\/\/catalinx.ro\/wordpress\/?attachment_id=10730#main\" data-orig-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL.png\" data-orig-size=\"1690,923\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"BP_MODEL\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL-1024x559.png\" class=\"alignnone size-large wp-image-10730\" src=\"http:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL-1024x559.png\" alt=\"\" width=\"758\" height=\"414\" srcset=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL-1024x559.png 1024w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL-300x164.png 300w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL-768x419.png 768w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/BP_MODEL.png 1690w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/p>\n<p>Entity types alea sunt un concept complex, pe care nu am sa-l dezvolt, dar ganditi-va la ele ca la niste structuri de date. Ca sunt linii, ca sunt doar un camp,\u00a0 nu conteaza &#8211; structuri, nu intram in detalii.<\/p>\n<p>Cand introduci date, mii si zeci de mii de intrari si cand sunt mai multi care fac asta, ar trebui sa te asiguri ca nu introduci duplicate. Si ar trebui sa rulezi ceva queries, sau sa cauti prin datele introduse cumva ca sa te asiguri ca nu a introdus deja cineva clientul ala, in cazul de sus. Doar ca nu asa functioneaza angajatii. Pe angajati ii doare in pula. Nici un select nu stiu sa scrie, nici un excel n-ar deschide. Consuma timp.\u00a0 Motiv pentru care tre&#8217; sa faci un proces automat care verifica el si le arata la prosti pe ecran, ba, eu cred ca esti pe cale ssa introduci un duplicat, ia da o geana\u00a0 ici ( sub ici , pui un link unde da omu&#8217; tau click si ii aduce potentialul duplicat). Si ala vede mai departe ce face.<\/p>\n<p>Sapu&#8217; s-a gandit si la asta,\u00a0 si are ceva &#8220;built in&#8221;, ca sa nu stai sa scrii cod gramada, ca handicapatu'( asa li se spunea in Romania la programatori, pe vremea cand nu plateau impozit pe venit) .<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10731\" data-permalink=\"https:\/\/catalinx.ro\/wordpress\/?attachment_id=10731#main\" data-orig-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1.png\" data-orig-size=\"918,633\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MDG_DUPLICATE_CHECK_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1.png\" class=\"alignnone size-full wp-image-10731\" src=\"http:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1.png\" alt=\"\" width=\"918\" height=\"633\" srcset=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1.png 918w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1-300x207.png 300w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/MDG_DUPLICATE_CHECK_1-768x530.png 768w\" sizes=\"auto, (max-width: 918px) 100vw, 918px\" \/><\/p>\n<p>Si clicka-clicka, iti faci o aplicatie de cautare, cu un profil pe care il configurezi cam ca mai jos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10732\" data-permalink=\"https:\/\/catalinx.ro\/wordpress\/?attachment_id=10732#main\" data-orig-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile.png\" data-orig-size=\"1766,459\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"search_profile\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile-1024x266.png\" class=\"alignnone size-large wp-image-10732\" src=\"http:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile-1024x266.png\" alt=\"\" width=\"758\" height=\"197\" srcset=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile-1024x266.png 1024w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile-300x78.png 300w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile-768x200.png 768w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/search_profile.png 1766w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/p>\n<p>Ai niste campuri , un mod de cautare, vezi aici HA, de la Hanna, care stie cu fuzzy search si alte manele .<\/p>\n<p>Gen\u00a0 distanta dintre cuvinte (Damerau &#8211; Levenshtein) pe care am implementat-o si eu manual acum vreo 5 ani si care era un chin pentru baza de date.\u00a0 Not anymore.<\/p>\n<p>Mai vedeti acolo ceva pondere in relevanta penru stabilirea candidatului la a fi duplicat si ordinea de cautare.<\/p>\n<p>Boon.\u00a0 Asta a fost introducerea de fapt.<\/p>\n<p>Vedeti acolo LATITUDE SI LONGITUDE.\u00a0 S-a cerut sa verific daca o locatie e duplicat.\u00a0 In afara de nume, astea-s doua coordonate utile in stabilirea acestui fapt. Ar mai fi tara si oras, dar sa nu ne pierdem in detalii.<\/p>\n<p>Si-am zis simplu: Faci exact match pe geolocatie si daca e match, hai cu duplicatul. Acolo nu-i chiar exact match ca e exact match pe fiecare coordonata, ceea ce nu-i corect. Deloc. Da-n fine pot sa concatenez campurile alea intr-unu, iar apoi am exact match pe locatie.<\/p>\n<p>Clientul vine si zice ca nu e asa, ca vrea fuzzy match, fie, merge si aia. dar vrea o toleranta cu raza de 5km .<\/p>\n<p>Suna simplu, si eu as pune conditii d-astea daca as fi client. Dar.<\/p>\n<p>Coordonatele\u00a0 geografice standard de GPS sunt in radiani ( nu au\u00a0 subunitatile de grad in minute si secunde &#8211; care-i o porcarie, intre noi fie vorba) ci in\u00a0 fractiune de grad (decimals), dar tot aia e.<\/p>\n<p>Problema cu Pamantul\u00a0 e doua. Una e ca e rotund ( azi mi-as dori sa fie plat,\u00a0 unde-s aia cu Societatea Pamantului Plat sa fac un lobby cu ei ca sa fie plat) , a doua e ca\u00a0 nici chiar asa de rotund nu e.<\/p>\n<p>Pe a doua o trecem la toleranta si ramanem cu prima.<\/p>\n<p>Si daca e rotund ai sistemul asta de impartire de sfera.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10733\" data-permalink=\"https:\/\/catalinx.ro\/wordpress\/?attachment_id=10733#main\" data-orig-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/longitude-latitude.png\" data-orig-size=\"750,591\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"longitude-latitude\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/longitude-latitude.png\" class=\"alignnone size-full wp-image-10733\" src=\"http:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/longitude-latitude.png\" alt=\"\" width=\"750\" height=\"591\" srcset=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/longitude-latitude.png 750w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/longitude-latitude-300x236.png 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Linii paralele pe latitudine si nu asa de paralele pe longitudine.<\/p>\n<p>Ceea ce inseamna\u00a0 ca latitudinea se poate transforma in mod direct in km &#8211; vreo 110 mii si ceva pe grad,\u00a0 dar longitudinea nu.\u00a0 Ca daca esti la polul\u00a0 geografic ai toate gradele intr-un milimetru (punct).<\/p>\n<p>Desigur ca exista transformare matematica pentru a calcula\u00a0 longitudinea in km de la un punct de referinta, si nu-i chiar complicata. Long. Km =\u00a0 Cosinus ( Lat. Rad. ) x\u00a0 Lungimea unui grad de longitudine la ecuator\u00a0 &#8211; adica unde latitudinea e 0.<\/p>\n<p>La prima vedere nu-i greu. La a doua vedere trebuie sa mai fac 2 campuri\u00a0 cu\u00a0 Latitudine si Longitudine in KM. Sa le calculez la introducere pentru fiecare locatie.\u00a0 Si sa le normez\u00a0 tot la 5km. Adica\u00a0 deplasarea pe linia ecuatorului ,\u00a0 din punctul de longitudine 0, va avea valoarea , nu 5, ci 1.<\/p>\n<p>Si sa le compar pe alea &#8211; DAAAR, tot nu e ok, ca o raza de 5km in jurul unui punct nu are\u00a0 multe de aface cu fuzzines si cu\u00a0 Damerau &#8211; Levenshtein. E alta matematica.<\/p>\n<p>Eu obtin o granularite exprimata in spatii patrate, ca patratul negru de mai jos. Ei vor o continuitate determinata de raza unui cerc.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10734\" data-permalink=\"https:\/\/catalinx.ro\/wordpress\/?attachment_id=10734#main\" data-orig-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/granularitate_distanta.png\" data-orig-size=\"430,414\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"granularitate_distanta\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/granularitate_distanta.png\" class=\"alignnone size-full wp-image-10734\" src=\"http:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/granularitate_distanta.png\" alt=\"\" width=\"430\" height=\"414\" srcset=\"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/granularitate_distanta.png 430w, https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2018\/03\/granularitate_distanta-300x289.png 300w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/p>\n<p>Eh, nu pot sa construiesc o transformare matematica prin care sa mapez o proiectie plana in cercuri. Ca fie se suprapun fie am zone de &#8220;umbra&#8221;. Daca nu intelegeti ce spun ar cam fi fost momentul sa inchideti pagina acum 20 de randuri.<\/p>\n<p>Pot sa rezolv problema cu o matrice de distante, intre fiecare si fiecare locatie. Sau la momentul la care se calculeaza duplicatele sa scriu eu\u00a0 propria functie care\u00a0 verifica coordonatele introduse\u00a0 versus toate celelalte , sau versus toate intr-un range, ca nu suntem idioti. Dar asta nu mai e clicka-clicka, stiu s-o fac, dar pe urma tre&#8217; sa integrez cu standardul de clicka-clicka si aci nu mai e usor si prin urmare nu merita sa platesti niste\u00a0 mii de euro ( vorbesc de client) pentru diferenta de precizie.<\/p>\n<p>Nu, nu va cer sfatu&#8217;, doar ma laud si va intreb daca jobul vostru&#8217; e la fel de mishteaux.<\/p>\n<p>Asta ca sa aveti ce face pana la down time, ca eu sigur am.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mi s-a cerut sa fac o chestie, va explic mai jos. Pe care n-o s-o fac ca &#8220;nu e timp&#8221; si ca e aiurea sa&hellip;<\/p>\n","protected":false},"author":2,"featured_media":9954,"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":[434],"tags":[235,2357,2358],"class_list":["post-10729","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-despre-munca","tag-abap","tag-sap-mdg","tag-transformare-longitudine-in-km"],"views":3291,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/catalinx.ro\/wordpress\/wp-content\/uploads\/2017\/11\/cu_sapa.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4Eq23-2N3","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10729","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=10729"}],"version-history":[{"count":5,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10729\/revisions"}],"predecessor-version":[{"id":10739,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10729\/revisions\/10739"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/9954"}],"wp:attachment":[{"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catalinx.ro\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}