Trice i kučine, quick thoughts, bizz »

[20 stu 2009 | 0 Comments]

Advanced technology day 5 logo

Svečano objavljujem, najavljujem i obavještavam svekolikom Microsoft tehnologiji naklonjenom pučanstvu (bogu mili, a niti vragu nisu mrski), da će se 1.12 u Zagrebu održati Advanced Technology Day konferencija na kojoj će biti prezentirane umotvorine gomile štrebera zatvorene u prostorije sa gomilom kompjutera. Da ne spominjem nemali iznosi tekućih racuna tih istih štrebera, koji su ne samo dobro plaćeni, nego im još i titraju na radnom mjestu sa bespatnim kavama, jeftinim jelika iz 57 svjetskih kuhinja, izvrsnim zdravstvenim, i još par sitnica. To je kao da plaćate crnogorca da spava (figurativno rečeno, bez nacinalnih konotacija molim!). Taj višegodišnji proces, ili eksperiment, je rezultirao sa nekoliko izvrsnih softwareskih alata i frameworka koji će biti prezentirani od strane stručnjaka iz Microsofta i par renomiranih domaćih tvrtki.
Izdvojio bi neke naslone redom:

  • ASP.NET 4: nakon godina zanovjetanja puritanaca konačno će stranice prolaziti W3C validaciju. To znači mogučnost potpunog isključivanja ViewState input taga, kontrole nad ID-evima serverskih kontrola. itd. Ali to je samo manji dio novosti!
  • Entity Framework 4- skok sa verzije 1 u .net 3.5 na verziju 4 u .net 4. Uvođenje POCO, Lazy loading i još mnogo toga. Dali će nHibernate konačno dobiti dostojnu konkurenciju?
  • Silverlight 3 – RIA platforma postala još bolja: 3D perspektiva, validacija podataka, nove mogučnosti streaminga,…
  • .NET 4 – dynamic objekti - statički c# dobiva dinamičke tipove, asinkrono izvršavanje, poboljšanje Garbage Collectora za višejezgrene sustave
  • MVC 2 – probajte pogoditi tko će prezentirati novu verziju MVC-a? Tako je, autor ovog bloga, glavom i brkovima! Od bitnih novosti u trenutnoj beta 2 verziji: Area, predlošci, klijent/server validacija podataka. Nešto su mi malo vremena dali, valjda ih nisam naljutio necim? Svejedno, nadam se da ću zaintrigirati barem nekolicinu koja nebude spavala, i spasiti pokoju dušu izgubljenu u WebForms moru isprepletene logike i nepreglednog code-behindea
  • Windows 7 – što donosi novoga za developere
  • Web platform installer – zgodni programčić za instalaciju drugih programa, od CMSova preko SDKova do IDEa
  • IE8 – razvoj pluginova, predpostavljam

Na službenim stranicama možete pronaći prijavu. Nadam se da se vidimo!

quick thoughts, bizz »

[31 kol 2009 | 1 Comments]

NDC 2009 videos

Norwegian Developers Conference je uz Mix i PDC vjerojatno najjača developerska konferencija za .NET zajednicu. Bitna razlika, što po meni gura ovu konferenciju ispred drugih, su projektno/inženjerska predavanja o arhitekturi i dobrim praksama razvoja, uz naglasak na agilne tehnike (ALT.NET). I ove godine su predavači bili redom poznata imena, što iz Microsoft tabora (Scott Hanselman, Phil Haack, Glenn Block), što razni poznati konzultanti i razvijatelji Open Source .NET rješenja (Ayende Rahien, Robert C. Martin,  Jeremy D. Miller, Scott Bellware, Rockford Lhotka, Jimmy Nilsson).

Sve video prezentacije možete skinuti u jednom paketu preko ovog torrent linka.

quick thoughts »

[28 kol 2009 | 0 Comments]

Što nam novoga donosi MVC 2:

quick thoughts »

[17 kol 2009 | 0 Comments]

LINQPad Jedna od glavnih značajki Silverlight i WPF aplikacija je implementacija INotifyPropertyChanged interfacea, pomoću kojega se obavještava da je promijenjena vrijednost nekog property-a. Jedan tipični primjer "pretplatnika" na takve obavijesti je sučelje aplikacije; ukoliko se deklarativno u XAMLu poveže klasa, odnosno njen property za neki UI element, prilikom promjene vrijednosti propertya unutar te klase sučelje će automatski ispisati promijenjene vrijednosti. U propertyu klase kod set operacije moramo podignuti event i obavijestiti sve zainteresirane da je došlo do promjene :

public string PropertyName
{
    get { return _propertyName;  }
    set { 
        _propertyName=value; 
        NotifyPropertyChanged("PropertyName"); 
    }
}
Metoda NotifyPropertyChanged i parametar u obliku stringa je standardni način obavještavanja o promjeni vrijednosti. Takav način upotrebe "Magic stringova" je podložan bugovima, jer zamislimo da promijenimo naziv samog property-a ali ne i string unutar poziva metode NotifyPropertyChanged. Kompajler bi uredno obavio svoj posao bez dojave greške, a aplikacija bi se počela čudno ponašati. Baš zbog toga ja želim ovako pisati podizanje eventa:
public string PropertyName
{
    get { return _propertyName;  }
    set { 
        _propertyName=value; 
        this.RaisePropertyChanged(x=>x.PropertyName); 
    }
}
Ovo je c# 3.0 izraz (Expression), s kojim dobijemo potpuni Intellisense i compile time provjeru. Metoda RaisePropertyChanged je sada izvedena kao extension metoda. Cijeli kod ovako izgleda:
public abstract class ViewModelBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

public static class ViewModelExtension
{
    public static void RaisePropertyChanged<T , TProperty>(this T observableBase, Expression<Func<T, TProperty>> expression) where T : ViewModelBase
    {
        observableBase.RaisePropertyChanged( observableBase.GetPropertyName(expression) );
    }

    public static string GetPropertyName<T , TProperty>(this T owner, Expression<Func<T, TProperty>> expression)
    {
        var memberExpression = expression.Body as MemberExpression;
        if (memberExpression == null)
        {
            var unaryExpression = expression.Body as UnaryExpression;
            if (unaryExpression != null)
            {
                memberExpression = unaryExpression.Operand as MemberExpression;
                if (memberExpression == null)
                    throw new NotImplementedException();
            }
            else
                throw new NotImplementedException();
        }
        var propertyName = memberExpression.Member.Name;
        return propertyName;
    }
}
ViewModelBase je apstraktna klasa koju mora nasljeđivati klasa koja je bindana na sučelje. Ovaj kod sam preuzeo iz Silverlight MVVM toolkita, jer je puno ljepši od moje implementacije :) Ali glavna značajka je da se zasniva na izrazu Func<T, TProperty>, preko kojega se dođe do tijela izraza, odnosno naziva propertya (expression.Body, castano u MemberExpression, i onda Member.Name metoda tog MemberExpression-a, koja pomoću refleksija čita sam naziv propertya!).

Ovaj ...  [Više]

quick thoughts, Trice i kučine »

[6 kol 2009 | 0 Comments]

Napravljeno je osvježenje odlične i besplatne knjige o programiranju autora Karl Seguina, pa vas želim sve pozvati da ju pročitate, bez obzira dali ste matori c++ guru iz doba bušenih kartica, ili spadate u Visual Basic/ASP/PHP generaciju! Knjiga je relativno kratka (80-tak stranica), a govori o dobrim praksama programiranja, poput design patterna, arhitekture, rada sa bazama, unit testovima i slično. Također govori o razlici između MSDN i ALT.NET načina projektiranja i programiranja, i naravno promovira ovaj drugi uz sasvim dobe i čvrste argumente, barem po mome mišljenju.

Knjigu možete skinuti ovdje: http://openmymind.net/FoundationsOfProgramming.pdf