Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

(P) Editorul de text EditPlus

Cea mai utilizata categorie de programe sunt editoarele de text. Nu cred sa existe vre-o alta categorie de programe la fel de des utilizate. Chiar daca e vorba de trimis un email, sau de scris o lucrare de licenta, o pagina html, sau un program c++, pe undeva exista un editor de text. Aceste aplicatii – editoarele de text – sunt folosite indiferent de scopul in care folosim calculatorul: programare, secretariat, jocuri (ne notam o parola, o adresa, un tric), navigare pe internet, editate de imagini, inginerie, educatie etc.

Cel mai simplu editor de text, cunoscut, cred, de toata lumea, este notepad. Insa acest editor, desi este rapid si oarecum eficient, este prea simplu, si uneori nu este suficient pentru necesitatile tuturor.

Un editor de text cu adevarat bun si usor de utilizat este EditPlus. De ce as inlocui simplul notepad cu altceva? Pai sa aruncam o privire – ca o imagine spune mai mult decat niste cuvinte:

Continue reading

System.Text – operatii cu siruri de caractere

   Dezvoltatorii au nevoie foarte des de a procesa text pentru ca interactiunea aplicatiei cu utilizatorul se bazeaza  pe introducerea textului. Acesta trebuie sa fie validat, reformatat.

   O expresie regulata reprezinta un set de caractere care este comparat cu un string pentru a determina daca string-ul respectiv indeplineste cerintele unui anumit format. O expresie regulata mai poate fi utila in extragerea/inlocuirea unor portiuni de text. Exemplu: stringuri care au numere, siruri de caractere doar cu litere mici, siruri cu format hexadecimal.

   Exemplu: vom creea doua siruri de caractere (pe primul il vom considera expresie regulata) si vom determina daca primul sir de caractere se va potrivi cu al doilea sir de caractere.

Continue reading

Internet Explorer si Problemele MS in Europa

Tot citesc de ceva vreme ca Uniunea europeana si-a terminat toate problemele cu care se confrunta si nu are altceva de facut decat sa se ia de Microsoft si sistemele ei de operare ca vin cu browser “obligatoriu” Internet Explorer! Asa? Si? Care e problema? Windows-ul este un produs Microsoft, Internet Explorer la fel. Care e problema?

Acum cateva zile am citit ca s-a ajuns la un acord prin care Microsoft va lasa utilizatorul sa aleaga browserul pe care doreste sa il instaleze. Nu inteleg de ce s-a ajuns la asta! Internet Explorer, la fel ca si windows Explorer sunt componente ale pachetului Windows. Si ar trebui sa vina impreuna, sa se instaleze impreuna. Iar pentru cei care nu sunt multumiti de performantele sau optiunile oferite de acestea, au o gama larga de alternative.

Continue reading

Hash – introducere in criptare cu c#

O functie hash este o procedura bine definita sau o functie matematica ce converteste o cantitate de date de dimensiuni varibile intr-o secventa de date de dimensiuni mici, de obicei de dimensiune fixa, care depinde de tipul algoritmului folosit si nu de cantitatea (lungimea) datelor de intrare.

O functie hash are (ar trebui sa aiba) urmatoarea proprietate: este imposibil de gasit, prin calcule, un alt bloc de date care sa aiba aceeasi valoare hash. Cu alte cuvinte, daca pentru un bloc se date dat calculam valoarea hash, este imposibila gasirea prin intermediul unui calcul a unui alt bloc a carui valoare hash sa fie aceeasi. Functiile hash sunt folosite in semnaturi digitale sau pentru verificarea integritatii datelor.

Valoarea hash are o lungime fixa indiferent de lungimea datelor pentru care a fist calculata. Valoarea hash a doua blocuri de date ar trebui sa fie identica daca cele doua blocuri de date sunt identice. Modificari minore in blocul de date duce la aparitia de modificari nepredictibile si importante in valoarea hash calculata.

O functie Hash nu este inversabila. Este imposibila reconstituirea satelor care au generau o anumita valoare hash.

.Net, in namespace-ul System.Security.Cryptography contine o serie de clase care implementeaza divesi algoritmi hash. HashAlgorithm este o clasa abstracta, folosita ca baza pentru diversi algoritmi de hash. In exemplul pe care vreau sa il prezint aici o sa folosesc 4 clase, derivate din HashAlgorithm care implementeaza 4 lgoritmi de criptare: SHA1, SHA256, SHA384, SHA512. Aceste clase sunt: SHA1Managed, SHA256Managed, SHA384Managed si SHA512Managed.

Pentru inceput am construit un enum, in care am introdus cei 4 algoritmi pe care il voi folosi, si cu ajutorul caruia userul va putea alege functia de hash dorita:

Continue reading

spatiul de nume System.Diagnostics

   .Net Framework contine spatiul de nume System.Diagnostics, care permite interactiunea cu event log din Windows, monitorizeaza proceselor sistem din retea, monitorizeaza proceselor locale, monitorizarea performantei sistemului.

   Administratorii de sistem folosesc foarte mult Windows event log, un centralizator cu informatii despre sistemul de operare, activitatile aplicatiilor si erori. Un exemplu: sistemul de operare Windows creeaza event logs la pornire si inchidere.

   Exista 3 tipuri de event log foarte des intalnite: system (stocheaza evenimente care nu sunt legate de securitatea sistemului), securitate (stocheaza evenimente care legate de sesiunile utilizatorilor, accesul la fisiere si registri), application (stocheaza evenimente de la toate aplicatiile care nu au deja creat un event log specific).

Continue reading

Spatiul de nume System.Collection.Generic

   Conceptul de generic este unul foarte puternic in limbajul C#. O introducere in aceasta caracteristica a C# 2.0 am facut in acest articol, despre List. 

   Spatiul de nume System.Collection.Generic contine  interfete care isi au corespondente non-generice in spatiul de nume System.Collections. Acestea sunt: ICollection<T>, IComparer<T>, IDictionary<K,V>, IEnumerable<T>, IEnumerator<T>, IEqualityComparer(T), IList<T>.

   In ceea ce priveste clasele din cele doua spatii de nume, o corespondenta ar fi:

Generic NonGeneric
Collection<T> CollectionBase
Comparer<T> Comparer
Dictionary<K,V> Hashtable
List<T> ArrayList
SortedDictionary<K,V> SortedList
Stack<T> Stack
Queue<T> Queue
ReadOnlyCollection<T> ReadOnlyCollectionBase

   Reamintim ca despre clasa Dictionary<K,V> am scris in acest articol.

Continue reading

Inserarea unui script in pagina din asp.net

Un post scurt si la obiect acum, despre cum se poate executa un cod javascript in browserului clientului in momentul in care se intampla anumite conditii pe server.
Ca sa se inteleaga, mai pe romaneste, vorbesc despre asp.Net si cum se folseste ClientScriptManager.RegisterClientScriptBlock. Nu o sa exemplific la ce e bun, pentru ca exemplele ar fi personale, ci doar o sa exemplific folosirea Page.ClientScript.RegisterClientScriptBlock. Ce face si la ce e bun? Inregistreaza in pagina html generata de asp.net un cod javascript. Simplu si util.
Parametrii acestei metode sunt:

Continue reading