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

quick thoughts »

[4 kol 2009 | 2 Comments]

Naišao sam na jedan zanimljiv tweet danas, od Jeff Aftwooda, autora Codinghorror bloga i jednog od tvorca i programera Stackoverflow site-a. Naime, Stackoverflow je community site za razmjenu znanja, poput Yahoo Anwersa ili Expert Exchangea, ali za razliku od ovog prvog vezan je za usku tematsku nišu, a od drugog navedenog sitea se razlikuje po poslovnom modelu, koji ne uključuje potrebu plaćanja da bi se vidio točan odgovor na dano pitanje. Znači, free for all!

To dovodi i do osnovnog problema community/social networking siteova; kako otplatiti troškove gomile servera i bandwidtha (dobro ajde, u trenutnu pisanja ovog posta Stackoverflow ima dva-tri servera) i kako se njihovi tvorci mogu obogatiti. Uzeti ću jedan radikalni primjer, a to je Facebook. On ima između 50 do 100 000 servera, i trenutno najveću arhivu fotografija koja troši enormne količine bandwidtha. Slično je i sa YouTubeom, Twitterom, MySpaceom, Flickerom i ostalim. Kako ti svi ogromni servisi plate svoj milionski mjesečni račun za struju? Plaće djelatnika? Da su smješteni u hrvatskoj, sigurno bi mogli pridat i slivne vode, spomeničku rentu i slično. Ja neznam odgovor na ovo pitanje, i stvarno mi je to jedna od većih misterija današnjice, odmah poslije televizije (oni mali ljudi unutra!) i plazma kugle. Više...

quick thoughts »

[29 srp 2009 | 0 Comments]

architectureZadnjih par godina sve više proučavam DDD (Domain driven development) način “razmišljanja” o razvoju aplikacija. Pristup problemu sa stajališta business eksperta i strukturiranje klasa i namespaceova, kao i upotreba različitih objektnih design patterna, tako da budu razumljivi vanjskom konzultantu i stručnjaku iz poslovne domene a ne samo programeru, mi zvuči logičnim i pravilnim. Moglo bi se reći da mi je standardno strukturiranje aplikacije na Sučelje (Interface) – poslovna logika (BLL) – pristup podacima (DAL), te isto takvo nazivlje varijabli i objekata počelo smetati (u nedostatku boljeg objašnjenja; nešto tu smrdi a nije moj overclockirani procesor). Više...

quick thoughts »

[28 srp 2009 | 3 Comments]

Neko vrijeme razmišljam napraviti jednostavni Asp.net MVC web site čiju izradu bi mogao pokriti u nekoliko blog postova, ali najveći problem je osmisliti temu i ideju. Surfanjem uz jutarnju kavu naišao sam na  zanimljiv site UserVoice.com, i pomislio da bi bilo baš zgodno postaviti jedan account za našu polu-propalu vladu; neka ljudi glasaju za pitanja/probleme, i vlada jednostavno uzima one s najviše glasova i rješava ih! Naravno, to je čista utopija, ali i dobra podloga za spomenutu demo aplikaciju u MVC frameworku. Ne samo da je demo aplikacija za upoznavanje s MVC frameworkom, nego je korisna za cijelo društvo :)! Dovoljno jednostavna da se ne zapletem u poslovnu logiku i infrastrukturu, ali pokriva dovoljno featura frameworka da se povremeni developer može upoznati s njegovim mogućnostima. Više...

quick thoughts »

[22 srp 2009 | 0 Comments]

Modificirajući ovaj blog engine (maštovitog imena blogengine.net), primijetio sam da nema ugrađen nikakav caching layer. Da slučajno 10-tak posjetioca bloga dnevno ne bi morali čekati učitavanje, morao sam pod hitno složiti jednostavnu klasu koju mogu upotrijebiti po potrebi bilo gdje u projektu.

Tako je nastalo ovo:

.net framework 2.0 verzija (blogengine.net je u .net 2):

public class CacheService<T> where T:class
{
    public delegate T CallbackHandler();

    public T Get(string key, CallbackHandler callback,DateTime? expiration)  
    {
        T item = HttpContext.Current.Cache[key] as T;
        if (item == null)
        {
            item = callback() as T;
            if(expiration==null)
                HttpContext.Current.Cache.Insert(key,item, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);
            else
                HttpContext.Current.Cache.Insert(key, item, null, expiration.Value, Cache.NoSlidingExpiration);
        }
        return item;
    }
}

ili .net 3/3.5 verzija Više...