arhive lunare: Aprilie 2008

Simplă şi rapidă: Face doar o citire formular InfoPath (InfoPath formează servicii în MOSS)

Este un scenariu de afaceri comune ca acest:

  • Utilizator completează un formular InfoPath.
  • Depune formularul.
  • Procesul de flux de lucru îndelungate lovi cu piciorul off.
  • În timp ce fluxul de lucru se execută, nu vrem ca cineva să schimbe conţinutul de forma.

Acest exemplu office.microsoft.com descrie cum se creează o vizualizare separată"" şi marca întreaga Vezi ca doar-în-citire. Aceasta este o abordare funcţional, dar are dezavantajul că vă eficient creat două versiuni tot de aceeaşi formă şi trebuie acum să le păstreze în sincronizare manual. Dacă adăugaţi un câmp editabil Vezi, apoi trebuie să adăugaţi aceasta la vizualizarea nu este editabil, precum şi. În timp, cu dezvoltatorii de diferite, pot exista unele divergenţe.

Această alternativă ar putea să funcţioneze mai bine, în unele cazuri:

  • Adauga un nou câmp în formularul numit "IsEditable".
  • Setaţi valoarea sa implicită la true.
  • Ea promova atunci când publicarea MOSS.
  • În fluxul de lucru, setaţi valoarea IsEditble false.
  • Du-te înapoi la forma.
  • Adăuga o regulă că "la deschidere a formularului", Dezactivare salvare butonul când IsEditable este fals.

Dezavantaj la această abordare este că toate câmpurile vor fi încă editabil pe ecran. Utilizatorul îşi poate accesa o falsa impresie că ei de fapt pot modifica conţinutul. Tu care pot atenua prin punerea în text că formularul este dezactivat, eventual, litere mari rosu peste partea de sus a paginii.

Într-un singur proiect, Am creat o stare de"flux de lucru" Vezi. Fluxul de lucru progresat, Acesta va actualiza câmpurile statut special care a fost promovat la forma. Când utilizatorul deschide formularul, "Deschideţi formularul" regula automat trecut la că Vezi şi utilizatorul a avut un statut frumos mic rezumat.

</scop>

Aboneaza-te la blog-ul meu.

Utilizaţi semafoare în flux de lucru SharePoint Designer pentru a preveni buclele Infinitului

Este posibil să provoace o buclă nesfârşită într-un flux de lucru SharePoint Designer. Un model comun de aplicare ca aceasta cauzează problema:

  • Creaţi un flux de lucru şi asociaţi cu o listă.
  • Indică faptul că acesta ar trebui să începe pe crearea de elemente noi şi actualizarea de articole existente.
  • Un pas în fluxul de lucru actualizează un câmp în "Elementul curent".
  • Deoarece elementul curent au schimbat, fluxul de lucru începe din nou.

Pentru a preveni această buclă nesfârşită, pune în aplicare un semafor simplu:

  • Adăugaţi o coloană de site-ul (sau o coloană în lista/Biblioteca dacă nu utilizaţi tipuri de conținut).
  • Ascunde-l de pe pagina de editare (uşor de făcut dacă o coloană de site-ul prin proprietăţile sale, nu la fel de uşor dacă o coloană de listă).
  • În fluxul de lucru, Verificaţi pentru a vedea dacă valoarea din coloana de semafor este necompletat.
  • Dacă este gol, setat la o valoare nevidă și continua.
  • Dacă este nu este necompletat, ieşi imediat.

Acest lucru poate deveni o soluţie destul de nuanţată, în funcţie de cerinţele de afaceri şi aşa mai departe, dar a fost un model viabil atunci când I-am nevoie de el.

</scop>

Technorati Tags:

Aboneaza-te la blog-ul meu.

Dezvoltatori: Cum învăţ SharePoint?

ACTUALIZARE: 04/25/08: A fost prins pe unele posturi de blog şi a găsit un link la acest articol: http://www.networkworld.com/news/2008/032608-microsoft-sharepoint.html?page=1. Face nota de ea pentru că pe lângă cer, "cum am invata sharepoint?", Unii oameni întreb "de ce ar trebui să învăţ sharepoint?". Acest articol răspunde parţial mai târziu.

În ultimele câteva luni, oameni de o duzină sau mai multe din întreaga planetă au fost Email-mă şi cere întrebare generală, "Cum am invata SharePoint?"

Sunt greu de autoritate, dar am avut oarecare succes (şi încercarea de a obţine mai bine tot timpul) m-am gândit eu ar documentul meu personale road hartă. Alţii pot considera că este valoros.

Înainte de a face asta, Vreau doar pentru a observa că este evident pentru mine, bazat pe aceste e-mailuri personale şi numărul mai mare de MSDN / SharePoint Universitatea posturi de aceeaşi natură, că există un interes imens dezvoltator în Noţiuni de bază până la viteza cu AAC/MOSS. Mă întreb ce se va fi ca un an de acum … mai uşor de a găsi bune SharePoint talent? acelaşi? Oameni buni comit ei înşişi la platforma într-un ritm suficient pentru a ţine pasul cu cererea pentru resurse bune? Cum ar putea tine chiar dau ceva ca asta o WAG?

Paul pe parcurs

Am fost angajat de populare bun la Conchango, în timp ce am urmat acest parcurs cu normă întreagă. Acest lucru înseamnă că dintr-o perspectivă de învăţare, Am fost implicat activ în proiecte ca am urmat pasi am contur sub.

Unii termeni de bază

Pentru oamenii intră această lume, Există două acronime cheie:

  • WSS: Windows SharePoint Services
  • MOSS: Microsoft Office SharePoint Server

AAC este "gratuit" în care ea are la pachet cu windows server 2003 (sau cel puţin poate fi descărcat de la MS). Am pus ghilimele în jurul gratuit, pentru că aveţi nevoie de o cutie, o licenţă valabilă/s şi, probabil, SQL (Deşi este o "gratuit" fel de SQL, precum şi).

MOSS este construită deasupra AAC şi se extinde. Nu există nici un muşchi fără AAC. MOSS nu este gratuit.

Poate că nu o zi, dar imediat dupa ce le-aţi luat unele bază de familiarizare cu platforma, este important pentru a afla diferenţele. De exemplu, o parte web puternic, Partea Web de interogare conținut, este o caracteristică de MOSS şi AAC nu este disponibil. Oamenii fac adesea incorect presupunerea că CQWP este disponibil in AAC şi apoi termina codare pentru o măsură de stop-gap, atunci când au dat seama de eroare lor.

Lovit de cărţi

Am început să lucrez cu AAC/MOSS pe despre 01/02/2007. Am avut un pic de experienţă anterioară cu SPS 2003 dar foarte putin. Pentru a obţine mine a început, Am cumpărat două cărţi enumerate aici (http://paulgalvin.spaces.live.com/lists/cns!1CC1EDB3DAA9B8AA!203/).

Am inceput cu cartea mare albastru administraţiei. În mod natural, Acesta acoperă administraţiei. În acelaşi timp, Acesta oferă un sondaj de toate caracteristicile de MOSS (şi AAC caracteristici, precum şi).

Pentru mine, nu este atât de important să vă amintiţi toate detaliile diverse (până când este timpul pentru a obţine certificate) dar este bine de stiut limitele. (Am urmat acest aceeaşi abordare în prima persoană Trăgători juca pe xbox sau PC-ul — Am introduce o cameră şi au tendinţa de a face o buclă de ceasornic până când mă întorc în cazul în care am început. Ma simt mai bine stiind forma de caseta sunt în.)

După ce a citit cartea mare albastru, Mi-ar Citi întreaga carte în interiorul AAC. Aceasta dives profund în problemele că dezvoltatorii de îngrijire cel mai despre.

Creeze un mediu Virtual

Pentru a face orice dezvoltare sau de a folosi în mod corespunzător mediului, aveţi nevoie de un sistem de operare windows cu sufletul la gură plin cu SharePoint Designer, Visual Student 2005 (2008 lucrări, dar unele instrumente utile au fost încă să fie portat ca a scris acest articol), InfoPath 2007 si alte chestii. Există mai multe intrări de blog bun descrie acest proces. Aş avea o privire la aceste două:

în plus, Andrew Connell împărtăşit experienţele sale cu VMWare aici:

Utilizaţi motorul de căutare preferat pentru a vedea ce alte persoane. Acesta este un exerciţiu util de învăţare la şi de la sine.

Petrece câteva minute furios denunţând faptul că aveţi nevoie de un mediu de server pe care se face de dezvoltare. dar … nu deranja blogging despre asta sau postaţi-l la forumuri MSDN. A fost deja făcut 🙂. În schimb, Imbratisati-l si muta. Veţi fi mai bine pentru ea.

Obţine certificate

Eu cred că calea de certificare MS SharePoint, care constă în patru examene, este exhaustivă. Vă sugerez să urmaţi Ghidul lor de pregătire on-line şi nu cel mai bun pentru a intelege fiecare dintre zonele de testare.

I nu sugerează că vă ia examenul doar pentru a trece-l. I nu sugerăm să utilizaţi unul dintre creier dump"" stil 3rd petrecere "instrumente" pentru a trece testele de MS. Dacă puteţi lua testul, trece se bazează pe o combinaţie de propriul regizat de studiu şi de experienta hands-on, vei fi un candidat mai puternic dezvoltator şi locuri de muncă pentru it.

Există patru teste în două "piese":

Dezvoltator:

Admin:

Vă recomandăm că dezvoltatorii de studiu pentru toate aceste examene. Vei fi puternic pentru ei, Deşi cred că dacă ai sarit la examene de admin, te-ar lua.

Am găsit versiunea AAC să fie considerabil mai dificilă decât versiunile de muşchi corespunzătoare, mult spre surprinderea mea. Am fost într-o clasă recent şi mai multe altele făcut acelaşi punct.

În timp ce studiam pentru 70-542 examen (MOSS dezvoltare) Am urmarit resursele mele de studiu. Acestea pot fi de ajutor pentru tine, precum şi: http://paulgalvin.spaces.live.com/Blog/cns!1CC1EDB3DAA9B8AA!192.entry

Conectaţi-vă în Comunitate

Comunitatea SharePoint este vibrantă, puternic şi în creştere mai mare tot timpul.

Vrei să te uiţi la următoarele pentru a începe:

  • Blogurile
  • Forumuri
  • CodePlex
  • Stare de nervozitate

Blogurile

Dacă nu înţelegeţi RSS, oprim totul şi să înveţe o. Se va lua 10 minute să-l înveţe, poate un alt 10 minute pentru a găsi un web bazat RSS reader (Îmi place google reader, www.Google.com/ cititor).

Începeți prin adăugarea acestui blog pentru cititorul RSS 🙂

Următoarea, Adauga www.sharepointblogs.com la reader ta. Ei agregate multe bloguri într-o singură feed.

În timp, veţi găsi bloguri care nu sunt agregate astfel. Doar adăugaţi-le individual.

Am abona la câteva Bloguri de duzină, care mi-am acumula în ultimul an. dacă vrei, Pot exporta lista mea şi e-mail-l.

În cele din urmă, poate doriţi să începeţi un blog. Eu personal cred că o serie de înregistrări blog descrie un "newbie" progresul de învăţare AAC/MOSS ar fi o serie de interesante. Doresc am făcut că eu.

Forumuri

Particip activ la două grupuri de forum: MSDN şi SharePoint Universitatea.

Forumurile sunt locuri excelente pentru a învăţa. Oamenii întreabă întrebări variind de la foarte simplu ("Cum se creează o coloană de site-ul") a intrat în panică ("Serverul meu este în jos!") să mai ipotetic design întrebări.

O dată tu a lua un gust de mediu, Aventuraţi-vă şi de a începe un răspuns. Scurt de interacţionează direct cu un client, nimic nu este mai bine decât acest lucru pentru mâinile pe experienţă.

CodePlex

du-te la www.CodePlex.com.

Check it out şi căutaţi pentru proiecte de SharePoint.

Aboneaza-te la Sumar zilnic Codeplex feed în feed-cititor.

Adăugaţi orice noi proiecte SharePoint la feed-cititor.

În cele din urmă, după citind forumuri şi cu care se confruntă în jos proprii demoni AAC/MOSS, ia în considerare punerea împreună propriul proiect de codeplex.

Stare de nervozitate

După cum am scrie acest blog intrare, o mulţime de SharePoint populare au început să folosească Stare de nervozitate.

Este greu pentru a caracteriza pe Twitter. Veţi avea doar pentru a verifica it afară tu însuţi.

Concluzia

Asta wraps până meu foaia de parcurs si ma face curent. Tocmai am început folosind Twitter acum două săptămâni.

AAC/MOSS este o platformă foarte cool şi Comunitatea este în creştere tot timpul. Utilizarea resurselor comunitare pentru a îmbunătăţi abilităţile dumneavoastră şi bucuraţi-vă de călătorie!

</scop>

Aboneaza-te la blog-ul meu.

Manager de protecţia datelor: Se pare ca o soluţie de mare SharePoint copiere de rezervă/restaurare

La Grup de utilizatori New Jersey SharePoint ultima noapte de întâlnire, Microsoft Sr. produs de specialitate prezentate DuWayne Harrison Manager de protecţie date Microsoft 2007. DuWayne a fost mare (şi el a fost sprijinit de unul sau doi colegi din partea publicului, ale căror nume nu-mi amintesc). Puteţi obţine materialele de prezentare aici.

Până la ultima noapte, Nu am mai auzit de PDM.

Eu nu sunt o persoană de tip sistem de admin, aşa că am scris acest lucru din perspectiva consultant de SharePoint şi poate lua unele cuvinte gresit. pentru mine, PDM este o solutie de backup/restaurare pentru Microsoft "chestii":

  • Fişiere
  • SQL
  • O/S
  • Masini virtuale (Live backup de VM, chiar în cazul în care VM se execută Unix).
  • Recuperarea metalice goale (adică. eşec catastrofal hardware).

Dincolo de chestia asta, care aş considera a fi cerinţele minime pentru orice fel de "real" produs de copiere de rezervă/restaurare, PDM de asemenea has clădire-înăuntru inteligenta pentru SharePoint. Se înţelege despre fermele server şi vă permite să vă restauraţi:

  • Întregii baze de date (ex. conţinut, config, etc).
  • Site-ul colecţii
  • Site-uri individuale
  • Elemente individuale (ex. documente).

Procesul de restaurare reale presupune extragerea ţintă datele din copia de rezervă şi salvaţi-l într-o fermă de"restaurare" si apoi de acolo, Mutarea-l în mediul de producţie (sau ori de câte ori doriţi să restauraţi). Cred că acest lucru este fără sudură, dar acolo a fost o mulţime de accentul pe necesitatea pentru o ferma de"restaurare". Ferma de restaurare nu are nevoie pentru a se potrivi mediul de producţie în toate amănuntele (în principal în topologia fizice) dar trebuie să se potrivească în termeni de template-uri, versiuni, etc.

Nu am vedea un demo complet de la capăt, dar DuWayne Arată capturi de ecran şi unele demonstraţii live. Se pare a fi la fel de bun ca acesta trebuie să fie, cel puţin pentru un moderat de dimensiuni mediu.

Am fost lovit mai ales de stabilire a preţurilor. În mod evident, nu ţineţi-mă la acest lucru, dar cred că cel mai scump de preţuri este de aproximativ după cum urmează (în USD):

  • $600 pentru PDM în sine.
  • Hardware pentru un server de PDM (şi chestii asociate pentru mass-media şi tot ceea ce).
  • $450 pentru fiecare server pe care doriţi să spate sus ("întreprindere" a da un permis).

O fermă de servere cinci ar costa cel:

  • $600 pentru PDM
  • $450 x 5 servere = $2,250

Costul total în licenţe: $2,850

În practică, ar fi mai puţin. Nu trebuie neapărat să aveţi DPM instalate pe fiecare front end web, de exemplu. Nu trebuie neapărat Intreprindere licente fie.

Interfaţa cu utilizatorul este pare foarte simplu, probabil, ar avea nevoie de orice pregătire specială pentru a obţine până la viteza. Am întrebat despre faptul că în mod specific şi se pare că există o 1.5 clasa de zile disponibile, Deşi nu este evident pentru mine că cineva ar într-adevăr nevoie să-l ia.

Toate, în toate, Cred că este cu siguranţă în valoare de investigare în cazul în care sunteţi afară acolo în căutarea pentru o soluţie de protecţie a datelor pentru SharePoint.

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Stare de nervozitate: http://twitter.com/pagalvin

Plimbare prin: Fix angajat de formare şablon disponibile locuri retrage Bug

Cât de mulţi oameni ştiu, şablonul de angajat de formare furnizat de Microsoft aici are un bug care ne poate reproduce urmând aceşti paşi:

  • Crea o clasă cu o dimensiune max de 10 elevii.
  • Înregistrează-te –> Total disponibile locuri în mod corespunzător decrements de unul. Rezultatul: 9 locuri disponibile.
  • Anulare înregistrare: –> Bug-ul. Total de locuri disponibile ar trebui să incrementaţi unu. Nu. Rezultatul: 9 locuri disponibile ca pe SharePoint, dar de fapt, Există 10 locuri disponibile.

Soluție: Utilizaţi SharePoint Designer pentru a corecta fluxul de lucru.

Prima, deschide site-ul. Lista de foldere pentru mine arata cam asa:

imagine

Dacă avem o privire la înregistrarea"participant" flux de lucru, vom vedea că nu există un pas etichetate "Pune în aplicare politica de relaxare". Se pare ca acest lucru:

imagine

Acest pas în fluxul de lucru actualizări element de incrementing "umplut scaunele" coloană de metadate pe parcursul. Dacă vom trage că în detaliu, vedem acest lucru:

imagine

Care sunt toate informațiile de care avem nevoie pentru a repara retragerea fluxul de lucru.

Dacă le flip peste pentru fluxul de lucru retragerea, nu există nici un pas de flux de lucru similare. Adăugaţi-l după cum urmează:

1: Extinde "participant retragerea" şi deschide-XOML (a se vedea primul ecran shot daca esti pierdut).

2: Adăugaţi o variabilă nou flux de lucru, "Noi de locuri umplute" de tip "Număr".

3: Asociaţi o valoare "noi umplute scaune" ca:

imagine

4: Decrement locuri pline de 1:

imagine

5: Actualizare elementul legate de curs:

imagine

6: Asiguraţi-vă că toate demersurile sunt în secvenţa dreapta. Pentru mine, se pare ca asta:

imagine

7: Termina fluxul de lucru pentru a re-construi-o.

8: Test.

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags: ,

Aleatoare sambata dimineata de observare

Am fost în clasele aceste ultimele două săptămâni şi este un lucru care mi se pare că există o mulţime de grijuliu, inteligent oameni de lucru SharePoint (ca consultanţi sau personalului IT) Cine nu blog-ul, stare de nervozitate, par a fi conştienţi de placi publice mesaj ca MSDN forum sau SharePoint Universitatea, menţine profile de Facebook sau LinkedIn, etc. Ele sunt pur informaţii consumatorilor. nu e rău, doar interesante.

</scop>

Technorati Tags:

Aboneaza-te la blog-ul meu.

Conţinut parte de interogare Web: Vorbind la New York grup de utilizatori SharePoint

Voi fi vorbind cu colegul meu, Natalya Voskresenskaya, la Grup de utilizatori New York SharePoint întâlnire miercuri 7 mai.

Vă mulţumim pentru Bob Fox pentru aruncarea numele noastre în pălărie şi ajutându-ne obţine această oportunitate!

Subiectul nostru general este partea Web de interogare conținut şi sperăm să dea câteva informaţii utile pentru publicul distincte două:

  • Utilizatorii de afaceri (non-dezvoltatorii): Arată cum CQWP poate fi configurat pentru a rezolva anumite probleme de business comune fără orice codificare.
  • Dezvoltatori: Arată cum CQWP poate fi extins pentru a face unele lucruri destul de interesant că un utilizator de afaceri în mod normal nu ar simţi confortabil se face. Această parte a prezentării va ajuta utilizatorii de afaceri să înţeleagă ceea ce este posibil folosind această parte web, astfel încât să puteţi oferi mai bună şi mai realistă cerinţele pentru partenerii lor de dezvoltator.

Iată anunţul NYSPUG trimis afară mai devreme în această săptămână:

"Folosind conţinut interogare Web Part pentru a rezolva problemele de afaceri".

Muşchi 2007 parte Web de interogare conținut (CQWP) permite utilizatorilor să creeze vizualizări particularizate de date interogate din mai multe surse, şi să prezinte date într-un singur loc. În ciuda sale puternice interogare & opţiuni de conţinut rafinament, CQWP este adesea o caracteristică subestimate şi trecute cu vederea. CQWP este atât un "date extracţie motor" (găsi documente sau elemente de listă oriunde într-o colecţie de site-ul) şi, de asemenea, un instrument de prima clasa de prezentare care permite utilizatorilor sa controleze modul de conţinut este prezentat de ambalaj HTML şi stiluri pentru a formata ecran aproape orice mod doriţi.

În această sesiune demo-grele, ei va arăta cum să utilizaţi CQWP pentru a rezolva problemele de afaceri de manifestare off caracteristicile de bază.

  • utilizaţi implicit CWQP caracteristici, inclusiv audienţă de orientare

  • utilizarea CWQP ca un instrument de raportare oriunde într-o colecţie de site-ul prin intermediul criteriilor de filtrare, cum ar fi "toate documentele create azi".

  • schimba uite & simt de rezultatele interogării pentru a evidenţia date de afaceri, Arată coloane suplimentare de informaţii, afişează informaţii într-un format de grilă, şi altele.

  • Arată cum CQWP poate ajuta în administrarea de tip de conținut (adică. găsi toate documentele de un anumit tip de conţinut pentru a înţelege impactul potenţial de a schimba o definiţie de CT).

  • descrie unele limitări de CQWP

  • oferă o listă de resurse pentru tehnici avansate de CQWP, inclusiv Blogurile, Proiectul ECQWP Codeplex & Documentaţia MSDN.

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Integrare rapida SharePoint: Executa o interogare simplă

Aceasta este o continuare în meu rapid codificare mini-serie pentru SharePoint folk. Pic de codul de mai jos a executa o căutare pentru termenul "testa" în rapid printr-o aplicaţie consolă. În mod evident, este un hop, săriţi şi să sară departe pentru a încheia această logică în interiorul o parte web sau pagina de cerere:

folosind Sistem;
folosind System.Collections.Generic;
folosind System.Linq;
folosind System.Text;
folosind System.Collections.Specialized;
folosind Com.FastSearch.Esp.Search;
folosind Com.FastSearch.Esp.Search.Http;
folosind Com.FastSearch.Esp.Search.Navigation;
folosind Com.FastSearch.Esp.Search.Query;
folosind Com.FastSearch.Esp.Search.Result;
folosind Com.FastSearch.Esp.Search.View;
folosind System.Collections;

spaţiu de nume Conchango
{
    Clasa InvokeSimpleFASTQuery
    {
        statice nule Main(şir[] args)
        {

            #regiune Iniţializa noastre de comunicare cu rapid
            ISearchFactory searchFactory;

            NameValueCollection nameValueCollection = noi NameValueCollection();

            nameValueCollection. Adauga("fastsearchengine", "Cu. FastSearch. Esp. Căutaţi. Http. HttpSearchFactory");
            nameValueCollection. Adauga("Cu. FastSearch. Esp. Căutaţi. Http. QRServers", "fastdemoback:15100");
            nameValueCollection. Adauga("Cu. FastSearch. Esp. Căutaţi. Http. RequestMethod", "A LUA");

            searchFactory = SearchFactory.NewInstance(nameValueCollection);

            #endregion #region Lansa o interogare

            şir queryString = "test";

            Interogare interogare = noi Interogare(queryString);

            interogare. SetParameter(BaseParameter.GRUPAREA, fals);
            interogare. SetParameter(BaseParameter.NAVIGARE, adevărat);
            interogare. SetParameter(BaseParameter.NAVIGATION_DEEPHITS, 100);

            ISearchView searchView;
            searchView = searchFactory.GetSearchView("sharepointconn");

            IQueryResult rezultat = searchView.Search(interogare);

            Consola.WriteLine("Total de rezultate de căutare: [" + rezultatul.DocCount + "].");

            int docCounter = 0;

            în timp ce (docCounter < rezultatul.DocCount)
            {

                docCounter   ;

                IDocumentSummary thisDocSummary = rezultatul.GetDocument(docCounter);

                Consola.WriteLine("[" + docCounter + "]: " + thisDocSummary.GetSummaryField("URL-ul").StringValue);

            } // în timp ce

            Consola.ReadLine();
            #endregion

        }
    }
}

Acesta generează următorul rezultat:

imagine

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags: ,