Un pic biased catre King Kong (cre’ca din cauza de asemanarea cu oamenii), dar, spoiler, nu e Godzilla ala care pierde. Pentru ca nimeni nu-l face pe Godzilla.
Prima juma de film e un pic retardata, dar a doua jumatate e cool.
Cateodata mai am si zile din alea in care chiar trebuie sa muncesc, nu doar sa am opinii despre ce ar trebui altii sa faca. Da stiu, maxim de trist, da’ cateodata mai trag paiu’ scurt…
Cand am mult de lucru, mai ales pe implementari, incerc s-o dau pe automatizare cat se poate de mult din vreo doua motive mari si late:
Pentru asta ma dau in general cu Python ca mi-e la indemana si so far mi se pare tata’lor la structuri de date. Adica pentru ca pentru un fisier de intrare de genul:
smc3r01-t1,11.12.13.14,tf
snc4l01-t1,15.16.17.18,t
snt3b02-e1,19.20.21.22,f
tmc5o04-c1,23.24.25.26,tf
pot sa scot o structura de date de tip key/value intr-o linie de cod (bine, 3, da’ oricum):
#!/usr/bin/python3
import csv
with open('t.csv', mode='r') as t_infile:
reader = csv.reader(t_infile)
t_nodes = {rows[0]: [rows[1], rows[2]] for rows in reader}
Si dupa aia sa fac chestii cu t_nodes gen:
for n in t_nodes:
print(n,t_nodes[n][0],t_nodes[n][1])
Pentru ca de fapt t_nodes arata de fapt asa:
{'smc3r01-t1': ['11.12.13.14', 'tf'],'snc4l01-t1': ['15.16.17.18', 't'], 'snt3b02-e1': ['19.20.21.22', 'f'], 'tmc5o04-c1': ['23.24.25.26', 'tf']}
Pai sa ai un key/value store (sau dictionary cum ii zice de fapt) in 3 linii de cod in care valorile sa fie o lista, genius. Sa nu mai zic ca poti avea un dictionare de dictionare pentru cand lucrurile chiar sunt complicate.
Exemplul asta l-am dat ca ca mi-a dat clientul un Excel cu cateva mii de linii si un alt Excel cu doar cateva sute de linii si mi-a zis sa fac sa fie bine :)
Varianta aia indiana era sa zic ca mai am nevoie de cativa oameni care sa utilizeze un GUI, unde dureaza minim 30-40 de secunde de dat click-uri, introdus date si validat sumar pentru fiecare linie din aia din fisier, si asta dupa ce intri intr-un ritm cat de cat decent de lucru.
Varianta mea dureaza 2 secunde pe linie ca e API-ul un pic incet. Si nici nu face greseli. Scriptul meu adica, ca API-ul nu e scris de mine sa fie perfect =)))
Alteori lucrurile sunt mai complicate decat a citi stuff dintr-un CSV, dar alea’s povesti pentru alte alta data.
O alta chestie de vreau sa zic, ca tot am adus vorba de Python, ala de a inventat f” string sa aiba noroc de-un harem de tinere si sa dea la buci pana o sa-i cada pula, ca e absolut geniala functionalitatea asta.
def mkgeneric(what, element):
if element == '':
return f' {what} "Any"'
if len(element.split(',')) == 1:
return f' {what} "{element.strip()}"'
if len(element.split(',')) > 1:
element = element.split(',')
el = []
for i in range(len(element)):
el.append(f'{what}.{i+1} "{element[i].strip()}"')
return ' '.join(el)
Fara asta scriam la .format() de-mi ieseau ochii, asa il bag direct pe unde trebuie fara nici o treaba, si asta e un exemplu simplu…
Tot pentru automatizare, dar mai mult pentru prototipare (da’ gay mai e cuvantul asta in romana) folosesc Postman, care este genial – mai ales ca poate sa iti zica si cam cum ar trebui sa arate codul intr-un limbaj de programare, gen Python, pentru ce incerci sa faci.
Pe langa treaba de mai sus, cu Postman poti face super debugging cand vrei sa vorbesti cu un API. M-a scos de cateva ori cand vorbeam cu API-uri necunoscute si cu documentatie scrisa de autisti…
Si e bun si cand iti faci singur API si vrei sa-l validezi ca si merge :))
Long story short, lucrurile devin un pic mai usoare daca le faci programatic.
Ma screm la postul asta de vreo luna si ceva. Nu ca ar fi greu, da’ nu pleacau cuvintele din degete spre taste sa ajunga pe ecran.
La fizica e un capitol in care te invata de scripeti si parghii, gen cum sa depui mai putin efort ca sa obtii ceva. Un sistem destept de scripeti sau parghii iti dau posibilitatea sa obtii foarte mult depunand cat mai putin efort.
Cateodata e filosofica asa fizica asta. Si nu, nu baui nimic de scriu asta. M-am mai desteptat un pic pe masura ce am mai imbatranit.
Din comunism am ramas cu punga cu pungi si sertarul in care pui chestii pe principiul ca niciodata nu stii cand iti trebuie o tubulara e 13 sudata intr-o cheie de 16.
Eu am dat sertarul de tubulare pe sertarul cu cunostinte. Punga cu pungi inca e acolo, si la modul ala de “cum recunosti un roman in strainatate”, am punga cu pungi in hotelul unde stau de ceva vreme. Pe principiul ca poti sa scoti romanul din romania, da’ nu poti sa scoti romania din roman.
Dar sa revenim la sertar. Scriam pe la inceputul lui 2019 despre lucrurile de baza. Si nu s-a schimbat nimic de atunci, doar ca am realizat ca nu toate problemele le poti rezolva cu cheia de 13, cateodata trebuie s-o prinzi de aia de 22 sa poti aplica mai multa forta sa insurubezi cum trebuie ceva sau sa desurubezi ceva strans bine. La fel cum cum 2-3 scripeti si un pic de sfoara face anumite lucruri sa fie mai usoare de cat sunt.
Anyways, cu cat ai mai multe cunostinte din cat mai multe domenii sau subdomenii, cu atat poti sa faci mai repede inferinte si sa iti dai seama cum poti rezolva o problema complexa. Asa cum o forta poti s-o desparti in vectorii componenti, asa si o problema complexa o desparti in problemele mai mici si le rezolvi pe toate alea si cand o rezolvi pe ultima mica ai rezolvat si problema mare :) Gen ca atunci cand rezolvi un sistem de necunoscute multiple la algebra.
Cumva ce incerc sa zic e ca cu cat stii mai mult, cu atat poti sa-ti faci treaba mai bine si fara sa ai nevoie de prea mult ajutor din exterior. Problema e ca toata distractia asta nu scaleaza nici vertical si nici orizontal, adica nici nu pot tasta mai repde si nici nu ma pot clona.
Mi-a venit sa scriu asta cumva legat de un proiect in care m-a mancat in cur anul trecut sa ma bag unde toata lumea si-o arde foarte enterprise si corporatist, unde sunt echipe si echipe care stiu doar anumite lucruri si nu e treaba lor sa stie si altceva si gen sunt singurul care nu are nevoie de nimic – independent si autonom ca ungurii, si mai am timp sa le explic si la altii una alta, ca specializarile astea nasc monstri si monstrii cand se imperecheaza nasc nu neparat fotomodele… ca sa termin asa asa pe un ton filosofic subtil.
Pe scurt, cu cat stii mai multe, cu atat lucrurile devin mai usoare si mai simple si au mai multa logica ;)