2009. július 30., csütörtök

Megjelent a Sense/Net 6.0 Beta 4

Kiadásra került a Sense/Net 6.0 negyedik bétája. Az előző, hármas (majd 3.1-es) béta főleg a stabilizálásról és optimalizálásról szólt, ez most inkább egy feature release. Két olyan új funkció is megjelent, ami nagyban megkönnyíti a szájtépítést, illetve közvetlen üzleti hasznot hozhat egy csoportmunkát támogatni kívánó portálnál:

  • Smart Application Modell: segítségével megfordítható a tartalom - megjelenítő viszony. Alapesetben egy oldalt címzek meg, és az jeleníti meg a rajta lévő tartalmat, a Smart Application Modell segítségével viszont lehetőség nyílik arra, hogy a tartalmat címezzem meg, ami aztán tudni fogja, hogy milyen megjelenítővel (oldallal) kell megjelennie.
  • Workspace: egy-egy projektet, feladatot, bármilyen közös (csoport) munkát megtámogatni képes "portál a portálban". Dokumentum-megosztás, feljegyzések, határidők kezelése...

Akinek az egész Sense/Net dolog új lenne: a Sense/Net 6.0 egy nyílt forráskódú, enterprise tartalomkezelő és portálszoftver. Ez a szoftver hajta például a TV2, a Malév és az Invitel szájtját, és több nagyvállalatnál áll bevezetés alatt intranetes funkciók ellátásra.
A szoftverről többet a Sense/Net Wikin tudhatsz meg. Ha a Wiki oldalak túrása helyett inkább az audiovizuális élményt preferálod, akkor látogass el a videos.sensenet.hu oldalra - most ilyen jellegű tartalmakat is találhatsz.

Ja, és a legjobb, hogy az egész szoftver akár bináris verzióban, akár forráskóddal együtt ingyenesen letölthető a sensenet.codeplex.com-ról.

2009. július 3., péntek

Az operátorokrúl

Megesik, hogy egy referencia típusú változó egy referencia típusú tulajdonságára vagyunk kíváncsiak. Aki ezután a mondat után hajlandó tovább olvasni, annak elmondom, hogy ez esetben lehet, hogy a tulajdonság null, de az is megeshet, hogy maga a változónk az. Azt az esetet "le kell védeni" egy jó if-fel, különben jön a csúf nullreference (illetve nem biztos, hogy jön, attól függ, jellemzően pl. lokálban sose nem jön, esküszök, produkciós környezetben meg feszt).
Így néz ez ki (így talán érthetőbb is, mint leírva):

public static void SomeMethod(Car car)
{
    // A car objektum Color tulajdonságára
    // vagyunk kíváncsiak - a car lehet null is
    string carColor = null;
    if (car != null)
        carColor = car.Color;
    ...
}

Na, ezt írhatjuk pl. a C# ? : conditional operátora segítségével így, elegánsan:

public static void SomeMethod(Car car)
{
    string carColor = car == null ? null : car.Color;
    ...
}

Ha pedig mindenképp szeretnénk a carColor változónknak értéket adni, megtoldhatjuk még az egészet a ?? - aka. null-coalescing - operátorral, így (ha a zárójeleket lehagyjuk, akkor is működik, csak valami olyat kapunk, ami a népi bölcselet szerint nem rossz, csak másra jó):

public static void SomeMethod(Car car)
{
    string carColor = (car == null ? null : car.Color) ?? "Ismeretlen";
    ...
}

Ez, ugye, egyfelől remek, tömörebb a kód, elegánsabb, a gyíkek szeretik az ilyet, boldogok tőle. Érdemes azonban gondolni kevésbé gyík embertárainkra is, akik esetleg a szívükhöz kapnak, ha meglátnak egy ilyet.
Vagy magunkra, amikor nekünk kell ezt debugolni.
Ahogy épp a szívünkhöz kapunk.

Nem célszerű tehát túlzásba sem vinni az tömörgetést - könnyen a kód olvashatóságának rovására mehet, pedig a cél pont ennek a javítása lenne. Okosan kell használni, és mindenki boldog lesz.


Egyébként, ha már olvashatóság, ezt ismerik? Próbálják vele megviccelni barátaikat. Ha sikerül, gondolkozzanak el az életükön.