Arhiva de etichete: c#

Cu boxa bluetooth la dentist

Mi-am luat la un moment dat, de curând, un Marshall Acton III. Boxă bună, alimentată sănătos direct de la rețea, la care te poți conecta inclusiv prin bluetooth. Frumos, elegant, însă doar cât de cât, pentru că are o meteahnă extrem de supărătoare: după zece minute de nefolosire întră-n stand-by, se deconectează de la calculator și rămâne așa până fie rotesc un buton oarecare, fie o reconectez explicit din Vindoză.

Inovare-n tehnologie

Inovare-n tehnologie

Mare păcat, mai ales că intrarea-n stand-by nu poate fi nici dezactivată, nici configurată la un interval mai mare. Ajung, astfel, să mă reconectez manual de fiecare dată când opresc sunetul dintr-un oarecare motiv. Nu e singurul model gândit cu zonele mai întunecate ale părților dorsale, ba mai mult, se pare că au scos posibilitatea de-a dezactiva acest iritant stand-by.

Citește mai departe

Agerimi cu Asp.Net MVC Clasic, XSS și Kendo DataSourceRequest

Asemeni cangrenei numite lege și ocârmuire, în afara cărora omul modern nu mai are valoare individuală, și cu libăriile software secretul e o balanță fină între ce oferi cu titlu opțional, ce oferi cu titlu obligatoriu, ce pretinzi cu titlu opțional și, în sfârșit, ce pretinzi cu titlu obligatoriu. Ca-n banc, ai mai mult succes dacă pui și carne, nu doar căcat:

Ițic și Ștrul și-au deschis restaurante.
La Ștrul e coada zi și noapte la mititei, iar la Ițic bate vântul și, odată cu dânsul, falimentul.
– Mai Ștrul, spune-mi și mie, cum faci tu mititei, că la tine lumea da buzna și la mine nu calca nimeni.
– Pai cum să-i fac, jumătate carne, jumătate rahat.
– Ah, tu pui și carne?

Că să intru direct în… pâine, cei care au învățat inginerie software în perioada-n care încă nu devenise ceva mișto-caracașto practicat la propriu pe jenunche-n poziție de semizen, cu zâmbet hlizit până la urechi, își amintesc de vremurile mai vechi ale ASP.Net MVC, care-a-ndulcit dictatura ideologică bazată pe valori europene propovăduită de WebForms, reținând, probabil din nostalgie, câteva apucături neplăcute.

Hai că merge

Hai că merge

Una din numitele metehne este răgălia numită request validation: cum detecta că-n parametrii cererii HTTP există o fărâmă de cod HTML, jmaf, eroare, excepție, sfârșitul lumii, sabotaj al rușilor, început de anti-democrație și anti-valori-europene, adică HttpRequestValidationException. Este marginal un lucru bun și ilustrarea perfectă (una din ele), a dictonului logudurez Drumul spre Iad e pavat cu intenții bune.

Citește mai departe

Librărie .NET/C# pentru verificarea contribuabililor pe baza CIF-ului

Din diverse proiecte s-a condensat în timp o mică librărie pentru consumarea serviciului web ANAF prin care se poate verifica existența unui contribuabil, precum și dacă este-nregistrat în scopuri de TVA. De fapt, funcționalitatea oferită este cea din urmă, dar implicit poate fi folosit și pentru verificarea existenței unui cod fiscal.

Detalii

Detalii

Librăria este scrisă pentru .NET 6.0 și a fost gândită pentru serviciul sincron, versiunea 8, a cărui specificație poate fi găsită aici. Cred că poate fi consumată și versiunea 7, dar nu am încercat. În tot cazul, am acoperit toată structura de date oferită de răspuns; n-am avut personal nevoie de toate datele acolo, dar dacă tot am publicat codul, am zis să fie o treabă făcută nu musai cap-coadă, ci măcar cu un cap și cu o coadă.

Citește mai departe

Știu ce este, dar ce reprezintă?

Mai întâi, desigur, trebuie să stabilim coordonatele discuției. Este vorba despre situația în care lucrăm (fie pentru că am ales ca atare, fie că nu avem de-ales) la un proiect unde accesul la date este abstractizat:

– printr-un model de date implementat printr-un set de clase (entități);
– folosind un ORM oarecare pentru gestionarea corespondenței dintre entități și diversele artefacte din baza de date (tabele, dar nu numai);
– folosind repository-uri pentru a accesa entitățile respective;
– în sfârșit, ca să adăugăm o dimensiune concretă, folosind C# ca limbaj de bază și Entity Framework drept ORM.

Care-cum?

Care-cum?

Folosind Entity Framework, se pune problema gestionării DbContext-ului, adică a modului în care trebuie distribuit între diversele repository-uri implicate într-o singură tranzacție. Dintre toate variantele, m-am oprit în cele din urmă pe cele descrise aici (și vă recomand să citiți înainte de a continua).

Citește mai departe

Manțocării cu Mono Cecil

Să presupunem că, total benign și mânat de duhul blândeții, ai nevoie să ajustezi capabilitățile oferite de o aplicație la al cărei cod sursă nu ai acces neam. Să mai presupunem că aplicația este scrisă-n .NET (ce convenabil!) și că ajustarea capabilităților e controlată direct dintr-o clasă anume dintr-un assembly oarecare, prin niște proprietăți ce returnează un simplu true/false (cel puțin legat de aspectele care importă).

Motanul Patraulea, făcându-mi code review

Motanul Patraulea, făcându-mi code review

Poți să livrezi la rândul tău scuze sau poți… să-ți creezi o variantă modificată a assembly-urilor în cauză astfel încât să-ți poți vedea mai departe de lucru, de viață și de facturile care te vor îmbogăți dincolo de cele mai umede visuri ale avarului.

Și, de 10 Euro, poți să iei un ecler și un cico nevesti-tii că te suportă așa programator cum ești (ah, drama fiecărui om ce face umbră pământului, unii cu folos, alții fără: vrea să fie primit de semenii lui așa cum e, dar nimeni nu-i obligat să o facă!). Iar dacă nu ai sau e prea cățea independentă ca să merite, poți lua de 10 Euro bobițe pentru motanul Patraulea.

Citește mai departe

Kobyashi Maru

Am încheiat recent un proiect având interacțiunea cu o bază de date SQL Server prin Entity Framework (EF) 6.3, elemente care nu puteau fi supuse modificării. Nu că ar fi ceva rău, nu că as avea ceva de obiectat, dar este important de menționat pentru restul povestirii.

Ilustrație - DALL-E2

Ilustrație – DALL-E2

Pe lângă legătura standard dintre entități și tabele (sau view-uri) din baza de date, am fost nevoit să folosesc și interogări construite, folosind, Database.SqlQuery<TSmuff>(), pe baza unor funcții SQL ce returnează date tabelare, dar cu parametri ceva mai… deosebiți – TVP, adică Table Valued Parameters.

Acest fapt necesită crearea explicită a unor instanțe de DbParameter; nu pot fi transmise pur și simplu valorile, fapt ce-ar lăsa-n sarcina EF crearea instanțelor de DbParameter atunci când este momentul. Și, ca o restricție suplimentară: Database.SqlQuery<>() acceptă drept argumente ori doar valori, ori doar instanțe de DbParameter; nu poți să le combini.

Citește mai departe

Stakhanovise.NET – Sau cum să-ndeplinești cincinalul în patru ani

Motto
Stahanovismul n-a murit, doar un pic s-o răspândit.

Stahanovismul a fost o mare găselniță. A rămas în lume precum râia – nici în ziua de azi nu și-a luat liber, nici măcar o zi. Atât de mare a fost impactul său civilizațional încât prin anii ’60 sau ’70 CIA a desfășurat o operațiune specială pentru extragerea sa pe șestache din Uniunea Sovietică, deîmpreună cu coaiele lui Lenin păstrate-n formol (mai mult despre Dânsele într-un studiu istoric de primă clasă pe care-l voi publica în timp util).

Cele două artefacte au clădit practic întreaga lume nouă de o parte și de alta a oceanului. Marile corporații de azi ar fi fost practic de neimaginat fără sarabanda derivatelor motivaționale sintetice din această mare filozofie de viață.

Politicile publice de sănătate, de gen, transgen și contragen, administrative, întreg Sovietul European, toate se bazează pe stahanovism și aerul doct degajat de acele două Biluțe care-au schimbat lumea așa cum o știm.

Dacă ar trăi astăzi, Vasile Roaită ar mai sta o dată cu mâna pe sonerie, dar acum de fericire. Din păcate, Dânsul nu mai este cu noi și, într-un act de insuficientă compensare, dar cu sincere Sentimente Proletare, anunț cu tremur în voce un nou proiect marca Atelierele Boia: Stakhanovise.NET.

Citește mai departe