mssql replication & log shipping

Acu ceva vreme am instalat la niste oameni niste multe servere de MSSQL pentru niste chestii de logistica.

Anul asta au zis oamenii ca bai, e important sa nu pierdem datele pe care le avem pe servere si hai sa facem un backup offsite.

Backup-ul offsite n-a fost sa fie ca latenta si TCP e picky cu latenta cand vrei sa transferi single-connection fisiere mari si eram intr-o situatie din aia in care dura mai mult de-o zi sa transfer un fisier de backup (mind you, gigabit in ambele parti, da TCP…). “Stiintific” treaba asta se cheama “long fat pipe problem” si necesita un pic de inginerie sa mearga cum trebuie, da’ in cazul de fata n’aveam ce inginerie sa fac ca tehnologia era la impuse.

Long story short, zic hai ca am solutia: facem replicare intre servere de MSSQL si o sa fie aproape realtime datele, eventual o sa se mai piarda cateva tranzactii, da’ nu e un capat de lume.

Si ma apuc eu si instalez un SQL server in alta parte si da-i sa fac replicare. Ma gandeam eu ca e la MySQL undeva faci un master/slave, restaurezi un backup pe ala remote si dupa aia trimiti binlog-urile pe al doilea sa le face replay si aia e. Simplu.

Well… not really, ca Microsoft fiind Microsoft au zis ca de ce sa fie simplu cand poate sa fie complicat si nu poti face replicare asa simplu. Ca de exemplu daca ai tabele fara primary key nu le poti include in replicare. Procedurile stocate nu se replica, because reasons…

Multa muie lor pe tema asta ca mi-au scos peri albi.

Zic bine, facem transaction log shipping care “replica” tot. O sa fie baza de date remote un pic in urma, da’ a zis lumea ca poate trai si daca se pierd 30min de date.

Acum, astia cu logistica sunt mai speciali… cam ca niste autisti de speciali, si ei nu cred in versiuni prea noi de software si asa am ajuns eu sa am si MSSQL 2014 si 2016, ca fiecare producator are versiunea lui de baza de date “suportata”.

Mno, acu aveam servere din astea diferite, zic hai ca pun MSSQL 2017 in locatia remote si stochez acolo toate bazele de date ca fiecare baza de date un Compatibility Level care e in functie de versiunea de SQL Server, gen 2014, 2016 si 2017.

Instalez eu serverul vietii, dau sa setez transcation log shipping: nu se poate prietene ca trebuie upgradata versiunea de baza de date pe serverul remote si ghinion ca tu ai o versiune mai veche. Morti si raniti si muie alora de-au programat mizeria asta.

Se pare ca desi poti bifa acolo Compatibility Level, intern MSSQL mai modifica un pic baza de date ca sa fie compatibila cu noul engine de SQL, da’ la suprafata se comporta ca ala vechi…

Alte ore pierdute aiurea, da-le-as muie la imbecilii pulii. Pai orice esti backward compatible ori nu esti.

Zic bine, hai ca pun un 2014 remote sa se impace cu 2014 local. Pun serverul pulii, setez acolo replicarea, face primul backup mare de pe sursa, il copiaza super repede pe destinatie si imi da prin gura: n-ai destul loc pe C:\ ca sa restaurez baza de date pe destinatie. Mi-au scapat instant multe mui inspre Microsoft pe tema asta…

Asta desi din setup era configurat sa tina bazele de date pe alt disk cu suficient de mult spatiu. Dar nu, el vrea musai pe C:\ pentru ca ma gandesc eu ca acolo are setat “Instance Root Directory” si simte nevoia s-o puna acolo desi ar trebui s-o puna in alta parte.

Varianta complicata a fost sa fac eu un backup full la o baza de date, s-o copiez in 3 ore in partea ailata si s-o restaurez unde trebuie si abia dupa aia sa setez transaction log shipping pe sursa si sa-i zic la sursa ca deja exista baza de date in partea ailalta.

Asta era azinoapte. Dupa un pic de investigatii descoperii ca de fapt nu merge log shipping.

Banuiesc ca e din cauza ca pana s-a copiat baza de date si s-a restaurat a trecut prea mult timp pe sursa si logurile pe care le genereaza nu au logica pe destinatie ca’s la prea mare distanta in timp.

Back to the drawing board. Sa moara in chinuri aia de la MS care in loc sa faca un setup simplu, l-au complicat pana i-au scos mucii pe cur. Unfuckingbelieveable…

(Cateva zile mai tarziu…)

Dupa un pic de desenat am descoperit cum pot sa-l fac sa restaureze baza de date unde trebuie. La Restore are niste optiuni semi-ascunse in care ii zici unde sa restaureze baza de date si unde sa restaureze logurile. La asta cu restauratul evident ca nu e simplu: baza da date pe sursa se cheama ABC si are doua fisiere mari si late: ABC.MDF si ABC_LOG.LDF (baza de date propriuzisa si logurile). Eh, cand le faci restore in alta parte, poti sa schimbi numele bazei de date – asa cum am facut eu, ca poate vrei s-o prefixezi cu ceva. Catch-ul e ca numele de pe disk al fisierelor nu se schimba in noul prefix, gen baza sa fie LS-ABC si fisierele sa se cheme LS-ABC.MDF si LS-ABC_LOG.LDF… Pai ce erau prosti sa-l schimbe? Nu, pe disc ramane la fel. Si daca ai doua servere din medii diferite de productie si cu acelasi nume de baza de date si vrei sa faci log shipping de pe ambele pe un singur server… ghici ce… la a doua restuare o sa-ti dea eroare ca deja exista baza de date si ca bla bla e folosita. Si trebuie sa faci alte directoare pentru baza si pentru loguri ca sa poti face log shipping si pentru al doilea server…

Problema de dinainte era din cauza ca aveam alte job-uri de log backup si MSSQL asta nu e asa inteligent sa nu amestece oalele, si se facea backup la loguri din 2 in 5 si evident ca unele loguri era salvate undeva si alte altundeva si pula continuitate in loguri si n-avea ala la ce sa faca restore.

Fixat asta, dat backup/restore si log shipping si pare sa mearga. Trebuie sa stau cu geana pe el sa vad ca nu sughita, sa dau un reboot pe ici pe colo sa vad cum face cand se mai pierde sursa sau destinatia un pic.

Sa-i chis in freza pe astia de la Microsoft si mai ales pe aia de scriu la MSSQL ca au gandit diverse chestii din puta gandirii…

cheltuieli anualizate

Una din chestiile pe care le-am invatat de cand am de a face in mod constant cu americanii e sa gandesc costurile la nivel anual. Sau cheltuieli cand vine vorba de persoana proprie.

Treaba asta cu anualizarea iti da o alta perspectiva asupra a cat cheltuiesti de fapt si te scuteste de capcane din alea temebele de genul: X este doar 20EUR/luna, nu e mare jmecherie, Y este doar 50EUR/luna si tot asa.

Jmecheria e cand incepi sa inmultesti cu 12 toate chestiile recurente, si atunci incepi sa-ti pui intrebari de genul: merita X 240EUR/an? merita Y 600EUR/an?

Optimizari se pot face la cheltuieli recurente precum abonamente de telefonie mobila, internet si orice alte servicii post-platite.Chiar daca nu pare mult ca scoti 10EUR dintr-o parte si 20 din alta pe luna, la sfarsit de an se aduna ceva :)

Cumva e usor mental sa minimizezi impactul financiar al diverselor cheltuieli, sa zici ca nu se simt 20EUR/luna. “Problema” e ca 20EUR de colo, 15EUR de colo, 50EUR de colo si asa mai departe se aduna la sfarsit de an si te intrebi pe ce rahat ai dat 4000EUR intr-un an si daca a meritat. Eu imi pun intrebarea asta ca de 4000EUR stau in vacanta o luna si ceva :))

ppl(a) – practica – (2)

03/10/2018

Am fost primul la zbor pe ziua asta. Ajutat la scos avionul din hangar, facut walkaround, verificat chestiile din cabina. Venit instructorul si hai sa zburam.

Engine startup checklist bifat, pornit motor, intors pe loc ca era pus prost. Comunicat cu aerodromul ca sunt gata sa intru pe pista pentru rulaj si aliniere pentru decolare pe pista 34.

Facut niste exercitii de luat viraje la sol, am ajuns in capul pistei. Pre take-off check-list bifata, bagat motorul in plin si am inceput rulajul.

Desprindere de la sol pe la 60kt si dupa aia mers un pic aproape orizontal pana pe la 70kt IAS dupa care am inceput urcarea pana la o inaltime de 800ft.

Am ajuns la inaltime, acu hai sa facem virajul doi, facut virajul doi si in asta cerinta era sa stau in straight-and-level-flight. Am tras de mansa aia in toate directiile de parca daduse epilepsia in mine. Uitasem ca avionul are lag de cand dai comanda pana se intampla ceva. Nu e mare, dar nici mic nu e si atunci trebuie sa-l simti un pic.

Ajuns in virajul trei si pe la jumatate am anuntat aerodromul ca vin la aterizare cu touch-and-go pe pista 16. Am ratat un pic alinierea cu pista si am avut o finala mai smucita asa ca trebuia adus avionul sa se incadreze pe pista.

M-am confuzat un pic cu ce tre sa fac si mi-am adus aminte doar ca trebuie sa pierd 100ft altitudine da uitasem un pic de flaps. L-am scos si pe ala pe 10, mi-am verificat viteza si eram pe la vreo 75kt si am zis ca e OK sa-l scot de tot (40). Am mai pierdut ceva viteza, la un moment dat un pic cam mult si a trebuit sa-i mai dau motor si am aterizat, am filat un pic si dupa aia sarit pe acolo pe iarba, rulat un pic si dupa aia motor in plin pentru decolare.

A doua decolare a fost un pic intarziata si am urcat asa mai cu stres. Am uitat sa ridic flapsul, mi-a atras atentia instructorul, l-am ridicat, s-a lasat avionul de bot, l-am redresat, am ajuns iar la 800.

Acu virajul mi-a iesit ok asa, a stat bila aproape cum trebuie. Am mai mestecat iar in mansa incercand sa-l tin straight-and-level la 800ft, da ma-sa, mai tare l-am smucit.

Mi-am adus aminte de capul meu unde sa fac virajul urmator, l-am facut si pe ala OK. Anuntat turnul ca vin iar cu touch-and-go, am intrat in virajul 4 si am dat-o de gard un pic ca in loc sa stau la 700ft m-am dus la 400ft. Am vrut sa-l ridic, da venea pista si nu mai aveam dupa aia timp sa-l cobor si am avut o finala din aia lunga de credeam ca ratez aterizarea.

Am avut un pic de noroc si am atins pista undeva aproape de jumate asa dupa ochi, rulat un pic si dat dupa aia gaz maxim sa decolam.

Iar un pic de smucituri si am ajuns la concluzia ca cel mai bine e sa ma opresc. Facut virajele OK, anuntat turnul ca vin la aterizare cu full-stop. In virajul 4 era sa trec iar de pista si sa nu ma aliniez cum trebuie, da m-a scos instructorul si m-am aliniat cum trebuie.

Macar am fost in stare dupa aterizare sa intorc avionul si sa-l parchez singur in fata hangarului… yey :(

Am stat cu instructorul la sol cu motorul oprit si ne-am jucat de-a pilotatul sa-mi mai intre lucruri in cap.

Intre timp a venit si-un coleg si mi-a dat schita turului de pista s-o invatat pana data viitoare sa n-o mai dau asa de gard.

20 de minute de zbor, macar n-am ars-o aiurea cu timpul.

Today was not a good day for science. Am zburat ca o cizma pe spectru.

05/03/2019

Anul trecut n-am mai apucat sa zbor pentru. Prima oara s-a pizdit motorul la avion si a durat reparatia mega mult timp. Dupa ce s-a reparat era deja Decembrie si evident s-a muit vremea. Long story short, azi fu prima zi de zbor pe anul asta.

Instructor nou, semi-ardelean din Sibiu (dup accent) care e de treaba. bagai azi 1h12min de zbor. Si-mi placu, ca bagai imediat dupa ce ateriza un coleg: trecut in viteza peste take-off checklist, bagat cheia in contact si dat gaz, rulat si aliniat pentru decolare, motor in plin si wee, pana la 1600ft.

Pentru prima oara zburai dupa QNH si nu QFE cum faceam inainte. Acum am putut sa zic la ce altitudine eram. Inainte de asta zburam doar la inaltime :))

Zborul asta fu de re-aclimatizare cu avionul. Dat ture pana la aproape de Targoviste si inapoi, intrari si iesiri din viraje la unghiuri mici. Adica avionul era inclinat asa cred ca vreo 15 maxim 20 de grade. Statui cu ochii pe bila aia de coordinare de viraje de ma plictisii.

Pe langa astea, fu’ vant destul de mult. Si ma umfla asa pe nepregatite si ma trezeam instant de la 1600 la 2000ft fara sa stiu ce se intampla. Si da-i si impinge de mansa sa-l duc iar la 1600ft.

Porni instructorul GPS-ul sa vedem cam ce vant e, in sensul ca puteam sa compar IAS cu GS aratat de GPS. 20-23kts. Si in functie de cum mergeam, ajungeam mai greu sa mai usor la destinatie :))

Cel mai dubios fu’ cand aveam vant din travers (crosswind) si trebuia sa stau cu piciorul pe palonierul drept ca sa compensez deriva. Cu ocazia asta intelesei mai bine ce tot zicea intructorul de la navigatie cu deriva si unghiul de corectie si chestii. Nu inseamna ca am stat eu sa-mi fac calcule mentale in cap, ci doar ca ma uitam la reperele de pe sol si incercam sa mentin o linie dreapta catre ele. Noroc ca e o sosea care e dreapta pe langa aerodrom si pot sa-mi calibrez drumul dupa ea.

Dupa ce-am terminat cu plimbatul peste sate, am fost la Targoviste ca nu vazusem niciodata Turnul Chindiei de sus. Daduram vreo doua-trei ture de 360 de grade sa apuc sa fac si eu niste poze.

Dupa aia ma dusei pe deasupra la niste turnuri de racire ca n-am vazut niciodata ce e pe dinauntru la unul din ala. Pretty nifty.

Dupa aia mai daduram niste ture peste niste lacuri care par a fi ferme de peste.

La aterizare am venit pe pista 16 si am facut cea mai lunga aterizare ever, ca aveam cumva vant de fata tribord asa si am filat mai mult de jumate de pista pana s-a pus avionul jos si dupa aia aproape ne-am oprit in capatul pistei. Asa tare era avionul umflat de vant.

Fu misto plimbarea asta la liber fara neaparat un scop anume. Sa mai vad maine ce facem.

Ca si recapitulare de la teorie, cam asa arata arata fotele in viraj, in functie de cat de aplecat e avionul.

06/03/2019

Azi dupa un pic mers de voie incepuram sa facem exercitii cu viraje:

  • 90 de grade pe stanga si pe dreapta. Adica aliniat avionul cu soseaua si dupa aia desenat un dreptunghi imaginar in aer.
  • 180 de grade. Mers “inainte” si dupa aia intors de unde am venit.
  • 360 de grade. Cercuri in aer :))

Ametii maxim :)

Catch-ul la astea e sa ai repere cum trebuie si sa iti vezi dupa aia de viraj pana iti vine reperul in linia orizontului.

Alta treaba de-o invatai e sa mentin altitudinea constanta in timp ce sunt in viraj. Cred ca o invatai, ca inca mai am de lucrat mental (sa zicem asa) sa nu ma mai uit in jos si sa nu ma mai gandesc la pozitia mansei.

Asta e din cauza ca o data ce inclini avionul pentru viraj, daca nu tragi in directia opusa de mansa el o sa mearga inclinat. Virajul se realizeaza din carma de pe stabilizatorul vertical si cu mansa dupa doar o impingi sau o tragi sa mentii altitudinea. Insa ea trebuie sa stea dreapta relativ la planul avionului, ca altfel incepi sa te inclini mai mult sau daca tragi in directia opusa sa sa indrepta avionul si dupa aia sa ai un viraj derapat. La treaba asta ajuta daca stai un pic cu ochii pe coordonatorul de viraj care e o bila intr-un tub in semicerc si daca aia sta pe mijloc inseamna ca fortele sunt echilibrate in avion si ca virajul e facut corect.

Pe aerodromul asta in general e vant lateral mai tot timpul si azi fu si un pic e ploaie la vreo 15-17km de el si se facu un pic de vijelie si se simtea in avion de parca mergeam pe un drum denivelat. Dupa ce incepu sa se incalzeaza pamantul fu si mai naspa ca incepura sa apara unde termice ascendente si un pic nu fusei atent la altitudine si ma trezii de la 1700ft la 2200ft. Bine ca nu eram mai spre Bucuresti ca ma intrebau aia de la Otopeni ce caut in TMA-ul lor :))

Azi zburai super relaxat, si ieri la fel, mi-au iesit chestiile.

07/03/2019

Viraje si iar viraje. 90, 180, 360. Ba pe stanga, ba pe dreapta.

Azi am bagat din alea la inclinare mare, de 20 de grade. Ocazie cu care le-am facut mai repede, ca se invarte mai repede avionul cand ai inclinatie mare. Si pierde altitudine si mai repede.

Si ca sa nu pierd altitudine trebuie sa trag de mansa oblic spre mine, ca sa mentin inclinatia si in acelasi timp sa mentin elevatorul cum trebuie sa impinga avionul in sus. E un pic dubios, dar dupa ce le-am facut pe alea cu instructorul, am facut si de capul meu si in mare parte mi-au iesit.

Mai descoperii azi, ca cre’ca ieri mi-a scapat, ca atunci cand ies din viraj si redresez avionul, se duce de bot un sus si schema e sa imping mansa in fata in timp ce il scot din inclinare si o sa ramana orizontal cum trebuie. Altfel se duce super repede in sus si daca il imping in jos simti asa cum te umfla, de parca te ridica un val pe mare.

Mai e o treaba care ma confuzeaza: cand sunt intr-un viraj, variometrul are tendinta sa arate o coborare sau o urcare, dar altimetrul sta nemiscat. Cam abia dupa ce variometrul se duce la peste 500fpm in jos de exemplu incepe si altimetrul sa indice faptul ca am inceput sa pierd altitudine si sa incep sa micsorez inclinarea avionului si in acelasi timp sa trag de mansa sa incep sa-l stabilizez si sa-l ridic la altitudinea dorita.

Asta si faptul ca instrumentele au o intarziere, la fel si comenzile. Adica daca tragi sau impingi incet de mansa, trebuie sa astepti un pic pana se intampla ceva. Si cam uit de treaba asta si ma mai apuca mestecatul in ciorba :))

Alta treaba de-am inteles-o azi e cum e cu izohipsa. Adica am inteles-o si la meteorologie, dar practica era un pic abstracta ideea. Ieri cand am zburat, era frig si dupa QNH de 1005 aveam vreo 100 si ceva de picioare altidutine la nivelul solului. Azi a fost mai cald ca ieri si QNH-ul era 1015 si la nivelul solului aveam altitudine de vreo 700 si ceva de picioare. Aproximativ asa, ca ieri nu m-am uitat cum trebuie, dar ochiometric cam astea sunt diferentele.

Si ieri si azi am zburat pe la vreo 1800-1900 de picioare dupa QNH, dar in realitate ieri am zburat mai sus decat azi in termeni absoluti :)

All-in-all a fost o zi buna, zburat relaxat si fara probleme.

08/03/2018

Lalele, lalele… viraje, viraje. Azi am petrecut iar o ora facand viraje. 90 de grade pe stanga si pe dreapta, 180 de grade, 360 de grade.

In pauza de viraje am dat o tura pana la Titu unde au aia de la Dacia circuitul de testat masini. Erau unii p’acolo de sa dadeau. Nu stiu daca testau ceva sau doar se distrau ca eram destul de sus pe la vreo 1500ft.

Azi am inteles ca nu e bine sa ma uit jos cand sunt in viraj ca se duce si avionul jos. Nu stiu exact de ce, dar inconstient cred ca apas pe mansa :) Asa reusii sa pierd 300ft intr-un viraj in care nu trebuia sa pierd nimic.

Cam pe toate le-am tinut +/- 100ft si unul sau doua la zero – adica mi-am mentinut altidutine in viraj.

Voiam sa scriu ieri da am uitat, da’ de la teorie cu viteza diferita a aripilor in viraj, acum cand sunt inclinat la 20 de grade parca vad cum aripa de pe interior se misca mai incet decat aia de pe interior. Si se simte si in mansa ca trebuie sa tragi calumea de ea sa compensezi toata distractia asta cu elevatorul.

Alte viraje de le-am incercat a fost sa crosetez prin aer, adica sa o dau cand pe stanga cand pe dreapta… sa merg ondulat asa. E mai dificil decat pare sa iesi dintr-un viraj si sa intri intr-altul.

Apucai sa vorbesc si cu FIR Bucuresti ca nu prea ii mergea butonul de vorbit la instructor.

Nu vazui nimic la stiri, de pe la munte pe la Brasov era un elicopter plecat intr-o misiune de cautare si salvare.

Patru zile de scoala si vreo aproape 4h20m de zburat. Nu e rau deloc.


Ca o paranteza, m-a spart saptamana asta. Trezit pe la 07:30-08:00, imbracat, plecat pana la Targoviste, zburat, intors in Bucuresti. 1h30 la dus, 1h30 la intors si o ora de zburat. Plus asteptat… am cam futut juma de zi in fiecare zi cu distractia asta. Bai si e mega obositor. Mai e si primavara asta cand dorm ca pula. Ce voiam sa zic e ca miercuri pe la birou m-am trezit mirosind un capsator de prajit ce eram.

next-gen retail

Ca si consultant nimeresc in tot felul de proiecte, unele la care nu m-as fi gandit vreodata. Una din cauze ar fi ca nu m-am gandit ca in anumite industrii ar fi nevoie de ce stiu eu sa fac, dar cateodata se pare ca e :)

Un exemplu de proiect din asta ar fi magazine fizice in mall-uri:)) Iar anul trecut am participat la deschiderea primelor doua magazine (din cateva sute) de la niste oameni. Pentru unul ca mine care nu s-a plimbat niciodata prin spatele magazinelor, toata treaba a fost super interesanta.

Super interesant pentru ca am apucat sa vad tot procesul cap coada a ceea ce inseamna deschiderea unui magazin de la un spatiu gol pana la primii clienti in magazin. Si este exagerat de multa munca sa te intelegi cu toata lumea, de la arhitecti la vopsitori. Ca si anecdota din multe altele, a trebuit sa vina un contractor sa traga cabluri de retea pentru niste senzori si s-a gandit sa fie de ajutor si a tras 16 cabluri in loc de 8 ca s-a gandit el ca sa fie acolo trase in caz ca se strica vreo unul.

Acum, de ce “next-gen” retail? Pai pentru ca spre deosebire de restul magazinelor din mall-uri, astea de le-am deschis sunt mai high-tech asa:

WiFi pe bune + security si nu o petarda de $50 aruncata in vre-un colt. Asta a fost mana mea, ca daca sa ai conexiune buna de date si acoperire calumea nu poti s-o faci “el cheapo”. La fel si cu segmentarea retelei, ca fiecare producator are o idee de ce vrea sa faca si nu e bine sa-l lasi de capul lui cu acces peste tot. Treaba asta o pusei prima sa ma laud :)

RFID: toata marfa are tag-uri de RFID si in felul asta stii exact ce si cate SKU-uri sunt intr-un magazin. Dupa ce am vazut cate zeci de mii de produse pot intra in cateva sute de metri patrati de magazin, n-as vrea eu sa fiu ala care face inventarul manual ca in cazul unui magazin clasic. Cu un scanner portabil de RFID poti face in doua-trei ore inventarul la tot magazinul cu o rata de eroare neglijabila. O alta utilitate a tag-urilor este sistemul de antifurt, ca nu mai trebuie sa gauresti marfa sa-i pui chestii din alea mari cu vopsea inauntru.

Cabine de proba inteligente: fiecare cabina de proba are o tableta conectata la un mic server local care la randul lui este conectat la niste cititoare de RFID de la distanta si cand intri intr-o cabina de proba, poti vedea pe tableta exact ce ai luat cu tine in cabina si daca ceva nu se potriveste poti vedea in timp real daca este pe stoc in magazin si daca da, “apesi” pe un buton pe tableta si un asistent de vanzari primeste un mesaj pe telefon cu ce ai nevoie si iti aduce in cateva minute. Eu m-am bucurat maxim de optiunea asta ca numai eu stiu de cate ori m-am dus sa probez ceva si dupa aia a trebuit sa ma imbrac la loc sa ma duc sa caut alta masura sau stil si dupa aia sa stau iar la coada la cabina de proba sa mai bag o fisa sa vad daca acu se potriveste ce cautam.

In urmatoarele magazine o sa fie niste oglinzi mari cu touch screen integrat pe aproape jumatate din suprafata si experienta o sa fie si mai high-tech ca o sa fie ca’n Star Trek sau orice alt SF de calitate, cam ca in poza de mai jos (care poza e pe bune, doar persoana de probeaza e un model retusat sa dea bine la reclama):

Treaba cu versiunile noi de magazine e misto ca poti itera prin concepte pana gasesti unul sau mai multe care se potrivesc zonei geografice unde se deschide fizic magazinul.

Traffic counters: niste camera inteligente puse la intrarea in magazin si in interiorul sau pot identifica persoanele (adica faptul ca prin magazin se plimba o persoana si nu o pisica) si fac analiza aproape in timp real pentru niste metrici de genul:

  • cati oameni au trecut pe langa magazin si cati din ei au intrat in magazin (cred ca se numeste rata de conversie sau pe acolo)
  • heatmaps cu ce zone din magazin s-au oprit cei mai multi oameni
  • vanzari medii per persoana intrata in magazin (in combinatie cu informatiile transmise de POS)
  • trail heatmaps care arata cum s-au plimbat oamenii prin magazin. asta arata interesant ca incepe cu niste liniii subtiri si se tot ingroasa in functie de cat de multi oameni se plimba.

Asta cu numaratul de persoane este foarte misto, ca daca pui harta magazinului in sistem si descrii ce se afla in fiecare zona poti sa afli super usor care sunt cele mai interesante produse pe care le ai de vanzare.

Acum toate astea sunt in sisteme diferite pentru ca fiecare producator a avut focus pe o nisa, dar prin niste API-uri cred ca se pot agrega toate informatiile astea sub o singura umbrela si doar trebuie sa dai un click sa vezi cum sta treaba intr-un magazin anume. Mai ramane de vazut daca exista acele API-uri…

Ma fascineaza tehnologia asta, ca te ajuta sa optimizezi lucrurile in cele mai mici detalii si sa faci experienta pentru clienti cat mai placuta, dar in acelasi timp ajuta si asistentii de vanzari sa fie mai eficienti. Si n-as fi stiut de ea si cum functioneaza daca nu eram implicat activ in jucaria asta cu retail-ul.

Suna naiv prima fraza din paragraful de mai sus, dar tot procesul de cumparare este mult mai simplu cand ai un pic de tehnologie la indemana.

Desi nu prea te gandesti la ce inseamna logistica din spate cand intri intr-un magazin sa-ti cumperi pantofi sau haine, este tare interesant domeniul asta pentru ca daca vrei sa fii eficient ai tot felul de dileme, de la cum atragi clienti sa intre la tine in magazin pana la cum calculezi la cat stoc sa ai si cum sa-l refaci cand se mai vand produse fara sa ai prea multa marfa blocata intr-un magazin – marfa care costa s-o produci si sa o stochezi.

alita: battle angel

Din trailer era super jmecher filmul. Finalul insa a fost mega dezamagitor. La fel si unele bucati din film. In ultima vreme filmele astea SF sufera de prostie maxima. La fel cum a fost si Mortal Engines, efecte misto dar n-au mai avut bani si de poveste si de un final calumea si au futut distractia.

the basics

Ca si prostituata intelectuala, sau consultant in exprimare acceptata public, am tot felul de situatii printre care design, implementari sau depanari. Cu cateva exceptii, mai toate se invart in jurul a: trebuie sa facem un sistem sa mearga, sa fie rezilient si preferabil sa nu se strice asa des. Ca e vorba de o infrastructura, de o retea sau de ceva de securitate, mai mult sau mai putin toate se invart in jurul unor concepte de baza care trebuie aplicate intr-un anume fel sau anume ordine pentru a ajunge la rezultatul final.

Pe langa asta, am mai prins si chestii de programat pentru a realiza integrari intre sisteme. Da si acolo am un API intr-o parte si alta si trebuie sa fac API-urile astea sa se inteleaga intre ele.

Ca sa mi-o ard asa filozofic, daca ai o fundatie solida, poti sa construiesti oricat pe ea.

Ce vreau sa zic cu asta? Pai faptul ca toate lucrurile se bazeaza pe niste standarde si pe niste principii.

Standardele sunt facute pentru interoperabilitate. Cum e de exemplu pentru TCP, UDP, HTTP, DNS, SMTP, VLAN, 802.11a/b/n/ac/ax etc.

Si daca sunt privite un pic de la distanta, sunt ca niste caramizi de lego cu care poti construi ce ai nevoie. Important e sa stii ce face fiecare caramida si cum se poate combina cu alte caramizi. Chiar nu e nimic special sau magic in asta, trebuie doar sa cunosti foarte bine caramizile astea.

Pentru ca lucrurile pot functiona doar intr-un fel, indiferent de implementare. Si Chrome si Firefox si alte browsere tot GET o sa faca sa ceara o resursa de la un server web la intamplare din Internet. TCP numai SYN o sa trimita primul pachet cand initiaza o conexiune si o sa astepte un SYN/ACK. Si exemplele pot continua.

Si atunci, daca intelegi lucrurile astea super bine, poti face aproape orice, ca diferentele sunt doar de configurare sau de implementare. Si Apache si Nginx sunt servere web, fac aceleasi lucruri, doar ca se configureaza diferit si au o filosofie de implementare un pic diferita, dar pana la urma tot HTTP vorbesc. La fel si BIND si PowerDNS… vorbesc DNS, nimic altceva.

Pe langa partea de design/implementare mai ai si partea de depanare, care e foarte importanta. Pentru ca trebuie sa repari pisatul stricat cat mai repede si preferabil sa-l faci sa nu se mai strice la fel si a doua oara.

Cand ai un serviciu de DNS care nu merge, e simplu sa stii cum functioneaza protocolul si implementarea aleasa sa stii de unde s-o apuci.

Si uite asa te intorci la “the basics”: ce ar trebui sa se intample si ce se intampla de fapt. Si daca stii astea, atunci poti sa-ti faci un plan de cum sa rezolvi problema sau daca e complicat, sa stii in ce directii sa te indrepti ca sa nu pierzi exagerat de mult timp dand de cap unei probleme.

La fel si cu retelestica: pachetele alea merg doar intr-un anume fel, nu pot merge altfel. Si daca stii cum ar trebui sa mearga, poti s-o iei de la OSI Level 1 pana la OSI level 5-6-7 si sa vezi unde da cu virgula.

Sau la WiFi, daca intelegi care e treaba cu cate canale ai disponibile in 2.4Ghz si ce e aia co-channel interference si de ce SNR e mai important decat “signal strength” poti rezolva problema.

Chiar nu e mare filosofie daca stii lucrurile de baza. Si n-o zic condescendent.

Acu vreo zece ani imi pierdeam noptile debugand firewall-uri de GTP. Si dupa ce am invatat un pic cum functioneaza un GGSN, un SGSN si alte chestii pe langa, puteam sa ma prind unde se impotmolea treaba si ce trebuia sa fac sa mearga iar. Suna telefonul la 4 dimineata, stiam sa zic imediat lucruri.

Azi am bunghit ce ma-sa avea un HBase de nu mergea cum trebuie luand-o de la baza: cum functioneaza, ce e aia un Region Server, ce face un Data Node sau un Master Node si dupa aia citind ce mai zicea prin log-uri si cum se manifesta.

Ce vreau sa zic asa in multe cuvinte, e ca important e sa stii cum functioneaza un protocol si pe ce standarde se bazeaza.

Cel mai daunator pentru o persoana e sa invete cum functioneaza un produs care implementeaza un protocol si sa se rezume la ce stie produsul ala sa faca sau cum. Ca de la standardul protocolului pana la o implementare reusita e cale lunga si multi nervi. Si multe presupuneri gresite.

De nu stiu cate ori a trebuit sa explic la tot felul de gigei de la producatorii unui produs sau al altuia ca lucrurile nu functioneaza cum isi inchipuiau ei si ca lumea reala e un pic diferita de aia imaginara in care traiau ei.

E OK sa stii si cum functioneaza un produs anume prin prisma intelegerii cum un producator a implementat un standard sau altul si cum faci sa-l configurezi si sa-l depanezi, dar mai mult de atat, nu.

the abcs
Don’t forget the A B C