-
Folosind DataGrid-ul din .NET, de multe ori realizam că nu se comportă tocmai cum mă asteptam şi căutam soluţii la problema mea pe forumuri şi in documentaţia de pe MSDN. Rezolvarea era de multe ori un atribut de care n-am auzit pănă atunci. Poate aş fi descoperit mai repede ce era in neregulă dacă ştiam de disponibilitatea codului sursa de .NET (1.1, 2.0, 3.5... ). Codul e disponibil de ceva vreme ( din Jan 2008) prin programul Shared Source Initiative. Am aflat doar recent de acest lucru, paşii care trebuie să-i urmezi pentru a putea face "Step In" in metodele de .NET o gasiti la linkul acesta. Eu am incercat... Merge ! 
Technorati tags: .NET Surse Shared Source Initiative
-
Salut !
Voi organiza un laborator de ASP.NET in acest weekend, Sambata, 3 Noiembrie 2007, intre orele 10-14 pentru studentii din UPT. Oricine interesat de tehnologii web este invitat sa participe, in functie de cum ne vom incadra in timp vom atinge urmatoarele puncte cheie:
- Ce este o aplicatie web ? Exemplificare pe ASP.NET
- Tendinte actuale in dezvoltarea web: AJAX, AJAX Control Toolkit
- Servicii web
Desfasurarea laboratorului va avea loc la sediul MAP din UPT ( sala este nou dotata cu calculatoare Intel Core Duo si Windows Vista
). Pentru inscrieri va rog sa trimiteti un email cu subiectul "Participare laborator ASP.NET" la adresa chioreantiberiu at yahoo dot com iar in corpul mesajului sa completati numele vostru, anul si facultatea.
Va astept !
Technorati tags: lab, asp.net, map
-
Citind de curand un paragraf dintr-o carte am aflat raspunsul la o intrebare care mi-am pus-o mai demult, dar nu am fost suficient de curios sa caut un raspuns la ea, deoarece nu era pe lista mea de prioritati si toate lucrurile mergeau si fara ca eu sa stiu ce se intampla acolo
. Este vorba despre clasele din .NET care lucreaza cu stream-uri (StreamWriter, Console, ... ).
De fiecare data cand apelam metoda Write sau WriteLine de la aceste clase am observat o lista lunga de supraincarcari ale aceleasi metode. Fiecare tip de baza are metoda supraincarcata asociata, cum ar fi Console.WriteLine(int param), Console.WriteLine(double param) etc. Am vazut dar nu i-am acordat prea mare importanta, am crezut ca e o chestiune de "stil" mai degraba decat de utilitate. O intrebare ar fi daca ar exista o singura metoda Console.WriteLine(System.Object param) nu ar fi de ajuns ? Deoarece tipul generic System.Object are metoda ToString() si ar putea sa scrie in Stream orice parametru cu care as invoca functia. Din punct de vedere functional ar fi de ajuns o singura metoda care accepta parametrul generic System.Object, insa se pierde la capitolul performanta. Explicatia acestui fenomen este urmatoarea: System.Object este de tip referinta iar primitivele sunt tipuri valoare. Daca apelam cu un parametru de tip valoare o functie care e definita doar pentru tipul generic System.Object, atunci acest parametru trebuie intai sa treaca prin mecanismul de boxing/unboxing, ducand la pierderi de performanta.
Am facut si o mica aplicatie de test, pe care o puteti folosi pentru a va convinge de rezultate. Cresterile de performanta care le-am observat se situeaza undeva pe la 5% pentru varianta cu metoda suprascrisa pentru tipurile de baza fata de metoda generica care accepta doar System.Object.
-
A ajuns in ograda mea. E interesant jocul asta, exact ce aveam nevoie dupa examenul de Finanate de azi. As fi vrut sa pun un logo cu imaginea cartii de finanate din care am invatat, fiindca am un sentiment ca va deveni un lucru cotidian dupa afisarea rezultatelor.... :) .
Editorul meu preferat de imagini este Paint, pana acum nu m-am lovit de bariere cand a fost vorba de arta digitala si am reusit sa folosesc Paint cu succes, insa de data asta am constatat foarte repede neajunurile lui Paint si artistul din mine a certut o unealata profesionista: Entering Photoshop. Intotdeauna am fost curios sa vad ce unelte folosesc profesionistii dar niciodata n-am avut un motiv serios sa deschid o aplicatie de acest gen. "Microbul" m-a impins sa-l folosesc si am obtinut ce se vede
Cand mi-a fost pasat microbul in dreptul numelui meu a aparut sintagma geek. Recunosc - sunt unul ! Ce poate face un geek decat sa-si gaseasca alti geek la care sa le paseze mai departe: Calin, Adi
PS: Imi place foarte mult Live Search (am scormonit logo-uri), prin eliminarea paginarilor nu am senzatia de "intrerupere" de la cautarile mele, e foarte cool facilitatea de scroll la "infinit" !
Technorati tags: Personal
-
Sunt oameni care isi folosesc timpul liber pentru a face lucruri utile, care pot fi folosite si de altii. Uite a aplicatie mica si compacta care rezolva o problema comuna in lumea publicarii articolelor tehnice care implica cod. Cand publici un articol in HTML nu e tot una sa ai cod de genul
public class AmSiEuOClasa {
public int AmSiOMetoda() {
return 2007;
}
}
In comparatie cu
public class AmSiEuOClasa {
public int AmSiOMetoda() {
return 2007;
}
}
Solutia pentru a face transformarea asta magica este publica. Multumiri autorului !
Technorati tags: Format Code, Code Beautifier, C#
-
Cele mai interesante lucruri in viata le descoperi cand esti pus in situatii iesite din comun - cum mi s-a intamplat si mie intr-una din zilele care au trecut.
A trebuit sa scriu un serviciu windows. Pentru mediul de dezvoltare am folosit Visual Studio. Dupa cum bine se stie, serviciile windows sunt procese care nu au interfata cu utilizatorul si ruleaza in spate executand sarcini. Acest serviciu trebuia sa citeasca fisiere de configurare, sa se conecteze la un server, sa monitorizeze evenimente (multe multe locuri unde treburile puteau merge prost ... si au mers prost :-). A fost necesara interventia unui debugger. Visual Studio este un debugger extraordinar pentru toate categoriile de programe, de la progame scrise in limbaj de asamblare pana la cele managed. VS are optiunea de a te atasa la procese care ruleaza, si serviciul meu era un proces pana la urma, deci n-ar fi trebui sa am probleme. Dar mare mi-a fost mirarea cand am vazut ca VS nu permite rularea serviciilor direct din IDE ci trebuie intai instalate si pornite cu consola de administrare de la servicii. Portiunea de cod care imi facea probleme era situata in metoda de OnStart a serviciului, care se executa de fiecare data cand porneste serviciul.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// AICI a fost zona cu probleme
// simulez cu o exceptie urata... :)
throw new Exception("Exceptie urata !");
}
protected override void OnStop()
{
}
}
}
Este aproape imposibil sa te atasezi din VS de acest proces inainte de momentul in care intra in metoda OnStart. Solutia ar fi sa flosim un Thread.Sleep(10000) inainte de orice alta metoda astefel am avea suficient timp sa ne atasam din visual studio de acest proces, insa aceasta solutie nu e eleganta si trebuie sa stai cateva secunde bune de fiecare data cand vrei sa faci debug.... suficient ca sa-ti pierzi atentia de la ce ti-ai propus sa faci.
Si asta a fost momentul in care am zis ca trebuie sa cercetez namespaceul System.Diagnostics - trebuia sa existe o solutie pentru problema mea. Nu a durat foarte mult si metoda mea OnStart arata in felul urmator:
protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
// aici a fost zona cu probleme
throw new Exception("Exceptie urata !");
}
Acea metoda de System.Diagnostics.Debugger.Launch() are ca efect afisarea unei ferestre ( imaginea de jos ) unde pot sa aleg ce instanta de debugger doresc sa pornesc si sa il atasez de procesul meu. Aplicatia isi va pastra starea si nu va rula pana nu termin de selectat un debuger.
Dupa ce am selectat primul debugger din lista am putut sa execut pas cu pas programul de la linia unde am pus apelul catre Debugger.Launch()
Ce am realizat aici a fost cumva procesul invers de la procesul obisnuit in care din debugger te atasezi de proces. M-am atasat din aplicatie la un debugger extern. Superb ! Technorati tags: Debug, Visual Studio, Windows Service
-
Salutare ! RONUA este acronimul de la Romanian .NET user association. Dupa cum spune si numele, incearca sa adune comunitatea dezvoltatorilor pe platforma .NET la prezentari, discutii libere si alte activitati asemanatoare. Joi, 30.11.2006, se organizeaza un astfel de eveniment in Timisoara. Detalli pentru inscriere si loc de desfasurare aici..
Pentru mine o sa fie a doua intalnire RONUA la care particip, insemnand ca prima mi-a lasat o impresie buna deoarece am vazut tehnologii noi si am cunoscut cativa programatori de marca din Romania.
-
Va multumesc pentru participarea la laborator. Asa cum am promis am pus prezentarea pe server. Urmariti acest
link
pentru download si nu uitati de Student Club-ul de Vineri de la ora 16:00, unde Mihai, nu demult intors de la TechEd '06, va vorbi despre ultimele tendinte in domeniu.
-
Sambata, 18 noiembrie intre orele 10,00-12,00 voi organiza un laborator despre multithreadingul in .NET 2.0. Subiectele abordate vor fi:
Aceasta activitate se va desfasura la laboratorul Microsoft, cei care nu stiu unde se afla pot downloada un scurt film cu indrumari la acest link. Pentru inscrieri va rog sa trimiteti un mail cu subiectul [Inscriere Laborator] in care sa precizati numele si anul de studiu la adresa tibic at ms dot upt dot ro.
Selectia participantilor se va face in ordinea inscrierilor in limita locurilor disponibile. Evenimentul va fi repetat si Duminica, 19 noiembrie intre orele 14,00-16,00, in functie de numarul celor inscrisi Dupa inscriere, veti primi un mail in care va voi anunta data la care veti fi repartizati. Va astept!
-
Duminica, 05 Noiembrie 2006, intre orele 10-12 se va tine un laborator la MAP in care se va discuta si se vor face exemple practice legate de securitatea aplicatiilor in ASP.NET. Printre subiectele abordate vor fi urmatoarele:
- Metode de autentificare in ASP.NET 2.0
- Page Lifecycle in ASP.NET
- SQL Injection
- Session Hijack
- Cross Site Scripting
Aceste subiecte vor fi prezentate pe scurt si in Student Club #1 de Vineri. Pentru inscrierea la laborator va rog sa trimiteti un mail la tibic at ms dot upt dot ro cu subiectul "[Inscriere laborator]"
-
Multe concepte din ASP.NET ( securitate, session-state management, ... ) pot fi intelese mai usor daca se au in vedere evenimentele care se succed pentru a produce dintr-o cere web de la un browser un fisier html. Aceste evenimente apar la nivelul serverului si coordoneaza activitatea enginului de ASP.NET. Un punct de plecare in intelegerea acestora ar fi acest link.
-
MSDN Magazine este o revista destinata dezvoltatorilor pe tehnologii Microsoft, contine articole tehnice care dau solutii pentru multe aplicatii practice. Revista se poate comanda sa vina lunar prin posta ( contra cost ) sau se poate vedea online la adresa asta. Prima editie a revistei a aparut prin anul 2000 si de atunci au fost lansate lunar cate o editie. Sectiunea mea preferata din revista este "Cutting Edge".
-
In viata oricarui proiect mediu spre mare intervine la un moment dat nevoie de modularizare, modularizare care poate fi realizata prin crearea de controale definite de utilizator. Ideea din spatele acestei tehnici nu este noua, dar modul in care Visual Studio iti permite sa lucrezi cu aceste controale cred ca este o noutate. Controale pe care le faceti trebuie sa arate foarte bine atat la rulare cat si la design time. Prima cerinta este destul de usor de realizat, a doua insa prezinta dificultati, deoarece atata timp cat controlul se afla in design-mode, Visual Studio lanzeaza mai multe evenimete care pot sa dea peste cap functionarea corecta a controlului. Pentru a avea un control mai bun asupra evenimentelor care se lanseaza la desing time de catre Visual Studio, acesta ne permite sa depanam controlul in design mode. Detalii despre acesta tehnica gasiti aici.
-
Sa ne imaginam o situatie ipotetica. Ati ajuns la concursul "Vrei sa fii miliardar ( in ROL ) " la ultima etapa, si intrebarea care va desparte de statutul de miliardar e urmatoarea:
La ce anume se refera urmatoarea declaratie in C++: double ( *var( double (*)[3] ) )[3]; ... da :) si eu m-as fi retras din concurs daca nu as fi citit acest articol. Pe mine m-a ajutat acest articol sa inteleg "misterul" din spatele declaratiei de pointeri in C++. Spuneti-mi si mie ce parere aveti despre el dupa ce il cititi.
-
Ca veni vorba de open source, de cate ori ati fost in situatia de a deschide un fisier care contine cod sursa ( c#, vb.net, php, asm .... orice va trece prin minte ) si nu ati avut tool-ul potrivit pentru asta. Desigur, notepad e la indemana, dar devine super nasol daca trebuie sa editezi un xml sau stiu eu ce altceva... Solutia ? Notepad++. Eu il folosesc cu voiosie de ceva timp si sunt multumit de el. Se integreaza perfect in explorer si stie multe multe formate. Oh da, si e micut de tot. Incercati-l !
-
In aceasta prezentare am facut un model de aplicatie pentru Windows Forms, dar care nu se foloseste de formuri clasice pentru interfata cu utilizatorul. Am ales varianta asta pentru ca formurile "clasice" de windows nu permit efectuarea anumitor operatii. Luati aplicatia de la linkul urmator si convingeti-va.