Vlatkovic.NET

Web site o tehnologiji, programiranju, muzici, kuvanju, knjigama, u stvari o svemu i svačemu...
Dizajn: www.studio7designs.com opensource web templates.


Najnovije na blogu

 Saturday, 22 December 2007

Ovo je mali dodatak tekstu o podešavanju Visual Studio-a, ali važan. Nekada je u VS postojala opcija “Synchronize class view” koja je jako korisna kada imate malo složeniji klasni model od običnog Code Front – Code Behind modela. Kada ste u kodu klase i kliknete desnim dugmetom, izborom opcije “Synchronize class view” pozicionirate se u stablu klasa Class View-u. E ta je opcija uklonjena iz kontekstnog menija (onaj na desni klik) ali, 'vala Bogu, nije ukinuta. Evo kako da je vratite tamo gde treba.

Otvorite Visual Studio -> Options -> Customize i kliknite na “Context menus” u list Toolbars

Pređite na Commands, drugi tab u Customize dijalogu. Ujedno će se pojaviti i novi Toolbar.

U listi Categories izaberite View a sa desne strane nađite “Synchronize Class View”. Kliknite na tu stavku, držite miša i prevucite Synchronize Class View komandu na toolbar koji se pojavio u sledećem koraku i to u Editor Context Menu -> Code Window. Spustite komandu gde mislite da vam je najpogodnije, recimo ispod “Go To Reference” komande. 

Zatvorite Customize dijalog i to je to, srećno sinhronisanje.

Saturday, 22 December 2007 23:07:36 (Central Europe Standard Time, UTC+01:00)

Ljudi obožavaju da trpaje sve živo u web.config (uopšte u .config fajlove). To je u principu ok ali ako naletite na projekat u kome ima preko stotinu raznih vrednosti koje treba podesiti da bi radilo onda 'oće i muka da pripadne. E sad, od količine ne može da se pobegne ali ako se ta količina organizuje i sistematizuje onda podešavanje web.cofig-a i ne mora da bude tako mučna operacija. Ovo je moj skromni predlog kako da se reši problem.

Konfiguracioni fajlovi u .Net (web.config, app.config) podržavaju simpatičnu stvar koja se zove <configSections>. Unutar ovih tagova možete proizvoljno da definišete <sectionGroups> i <section> tagove. Ovo znači da možete da kreirate bilo kakvu logičku strukturu podataka i svom .config fajlu. Pretpostavimo da radimo WEB projekat koji u solution-u sadrži DAL (data access layer) projekat zadužen da komunicira sa bazom i tumba podatke i BLL (business logic layer) koji sadrži neku poslovnu logiku između DAL i WEB projekta.

solExpl.gif

Svaki od ovih projekata može potencijalno da vuče vrednosti iz konfiguracionog fajla. Na primer, očigledno je da DAL projektu (onaj što se igra sa bazom) treba string koji mu govori gde je baza podataka i koju bazu gađa. Ili, projektu BLL onaj koji sadrži neku logiku treba podatak sa kog web servisa recimo da vuče neke podatke. Da te tražene vrednosti ne stoje samo kao lista poželjno je da napravimo strukturu koja će odražavati našu logičku organizaciju. I evo primera kako može da izgleda:


Ovako počinje web.config

<configSections>
        <sectionGroup name="VlatkovicNET.TestApp">
            <!-- Common -->
            <section name="CommonApp" type="System.Configuration.NameValueSectionHandler"/>
            <!-- Util -->
            <section name="Util" type="System.Configuration.NameValueSectionHandler"/>
            <sectionGroup name="DAL">
                <section name="ConnectionStrings" type="System.Configuration.NameValueSectionHandler"/>
                <section name="StoragePaths" type="System.Configuration.NameValueSectionHandler"/>
                <section name="XMLStorage" type="System.Configuration.NameValueSectionHandler"/>
            </sectionGroup>
            <sectionGroup name="BLL">
                <section name="WebServices" type="System.Configuration.NameValueSectionHandler"/>
                <section name="CacheServers" type="System.Configuration.NameValueSectionHandler"/>
            </sectionGroup>
        </sectionGroup>
    </configSections>

Šta ovde imamo? Prvi blok “definicija sekcija početak” odnosi se na kreiranje strukture podataka koja će se upisati u .config fajl. Poželjno je da struktura konfiguracije prati strukturu aplikacije. <configSections> definiše grupu koja nosi ime sastavljeno od imena Namespace-a i imena projekta “VlatkovicNET.TestApp” koja u sebi pak definiše grupe koje će da sadrže podešavanja karakteristična za BLL i DAL projekte. Type=”System.Configuration.NameValueSectionHandler” unutar definicije sekcija govori koji handler će da obrađuje našu strukturu parova. U ovom slučaju to je .NET handler NameValueSectionHandler . Možete da pišete i svoj ali to nije predmet ovog teksta. I još jedna napomena, struktura ovde nema nikakve veze sa funkcionalnošću već samo sa organizacijom i preglednošću.

Sledeći blok su same definicije vrednosti za prethodno definisanu strukturu. Na primer:

    <VlatkovicNET.TestApp>
        <CommonApp>
            <add key="CompanyName" value="VlatkovicNET"></add>
            <add key="ContactEmail" value="pera@test.com"></add>
            <add key="SmtpServer" value="127.0.0.1"></add>
        </CommonApp>
        <Util>
            <add key="HelpUrl" value="http://www.helpme.com"></add>
            <add key="Language" value="en"></add>
        </Util>
        <DAL>
            <ConnectionStrings>
                <add key="MSSql"    value="..."></add>
                <add key="MySql"    value="..."></add>
                <add key="Oracle"    value="..."></add>
            </ConnectionStrings>
            <StoragePaths>
                <add key="Images"    value="..."></add>
                <add key="Docs"    value="..."></add>
            </StoragePaths>
            <XMLStorage>
                <add key="path1"    value="..."></add>
                <add key="path2"    value="..."></add>
                <add key="path3"    value="..."></add>                        
            </XMLStorage>
        </DAL>
        <BLL>
            <WebServices>
                <add key="service1" value="http://server1/service1.asmx" ></add>
                <add key="service2" value="http://server1/service2.asmx"></add>
            </WebServices>
            <CacheServers>
                <add key="server1" value="cacheServer1" ></add>
                <add key="server2" value="cacheServer2"></add>
            </CacheServers>
        </BLL>
    </VlatkovicNET.TestApp>

Primer:

<VlatkovicNET.TestApp>
   <DAL>
      <ConnectionStrings>
         <add key="MSSql" value="..."></add>

unutar projekta DAL koji pripada namespace-u VlatkovicNET.TestApp definišemo grupu ConnectionStrings koja sadrži vrednost za MSSql connection string.


Sada ostaje da samo pročitamo ove vrednosti iz .config fajla. Jednostavno, pošto je .config xml file dovoljno je da definišemo XPath izraz do svakog ključa (key) a njegova vrednost je value iz NameValue para koga ćemo da čitamo. Ako niste bliski sa XPath-om nedajte da vas to obeshrabri, bar u ovom slučaju on je jako jednostavan a i nije loše da se nešto novo nauči (brrr ne sviđa mi se ova rečenica, učite ono što volite). So, evo ga primer:


Prvo definišemo metode za dobijanje vrednosti:

    public class ConfigurationManager
    {
        private static object lock_GetIntFromConfig = new object();

        /// <summary>
        /// Gets the int from config.
        /// </summary>
        /// <param name="path2Key">The path to key.</param>
        /// <param name="key">The key.</param>
        /// <param name="defaultValue">The default value.</param>
        /// <returns></returns>
        public static int GetIntFromConfig(string path2Key, string key, int defaultValue)
        {
            lock (lock_GetIntFromConfig)
            {
                string val = GetValueFromConfig(path2Key, key);

                if (val != null)
                    int.TryParse(val, out defaultValue);

                return defaultValue;
            }
        }


        private static object lock_GetDecimalFromConfig = new object();
        /// <summary>
        /// Gets the decimal from config.
        /// </summary>
        /// <param name="path2Key">The path to key.</param>
        /// <param name="key">The key.</param>
        /// <param name="defaultValue">The default value.</param>
        /// <returns></returns>
        public static decimal GetDecimalFromConfig(string path2Key, string key, decimal defaultValue)
        {
            lock (lock_GetDecimalFromConfig)
            {
                string val = GetValueFromConfig(path2Key, key);

                if (val != null)
                    decimal.TryParse(val, out defaultValue);

                return defaultValue;
            }
        }



        private static object lock_GetValueFromConfig = new object();
        /// <summary>
        /// Gets the value from config.
        /// </summary>
        /// <param name="path2Key">The path to key.</param>
        /// <param name="key">The key.</param>
        /// <returns></returns>
        public static string GetValueFromConfig(string path2Key, string key)
        {
            lock (lock_GetValueFromConfig)
            {
                NameValueCollection nvc = (NameValueCollection)ConfigurationSettings.GetConfig(path2Key);
                if (nvc != null)
                    return nvc[key];
                else
                    return null;
            }
        }
    }

Primer: vraćanje vrednosti specifičnog connection stringa za projekat
GetValueFromConfig("VlatkovicNET.TestApp/DLL/ConnectionStrings", "MSSql");

Primer: direktno uzimanje int vrednosti iz .config-a
GetIntFromConfig("VlatkovicNET.TestApp/BLL/Timeouts", "Cache", 5)

Kao što vidite XPath izraz se piše jednostavno, sa znakom “/” odvajate grupe i dodajete sekciju na kraju. I metodama prosledite XPath i key koji obeležava vrednost.

Metode ispisane ovde možete po želji da stavite u osnovnu klasu za vaše strane i kontrole ili u neki zaseban framework koji ćete da vučete sa sobom gde god da krenete. Ovde možete da skinete primer cele aplikacije pa da pogledate. Primer je samo ilustracija, nije reprezentativan :-) Primer možete da proširujete normalno pa da recimo kreirate malli generator klase koja opisuje vašu konfiguraciju u .config fajlu. Gledaću da u budućnosti napišem pravi generator sa code DOM.

Za kraj, nadam se da nisam izmislio toplu vodu i udavio vas u njoj :-) I da ne zaboravim, zahvaljujem se gospodinu Dejanu Miličiću na recenziji i više nego korisnim savetima.

Primer code-a

Saturday, 22 December 2007 13:52:10 (Central Europe Standard Time, UTC+01:00)
 Sunday, 16 December 2007
 #
 
Svašta se dešavalo zadnjih mesec ipo dana pa evo malo foto zapisa.

Beba Miloš, još koji dan pa tri meseca

Krštenje kumčeta Nikole

Festival nauke sa Olgom i Pavlom



Sunday, 16 December 2007 23:49:43 (Central Europe Standard Time, UTC+01:00)
Često sebe uhvatim kako bi napisao po nešto na neku programersku temu pa se predomislim (usput napravim belešku u google notes) misleći da je to verovatno već viđeno i da to samo još ja nisam provalio ;-)...

Onda se tako sretnem sa drugim ljudima i utvrdim da to ponekad nije u potpunosti tačno :-) Ono o čemu sam sada hteo da pišem i istrajao tiče se Visual Studio razvojnog okruženja. Microsoft je ovde napravio sjajan posao, omogućio je programerima brzinu, prilagodljivost i potpunu udobnost u radu. Nažalost nisu sve dobre stvari uključene u osnovnoj postavci VS-a a u zadnje vreme sam viđao vrlo loše primere korišćenja istog pa eto reših da napišem koju reč o tome. Evo par saveta i zapažanja a i meni će dobro doći kao podsetnik.

Jedna od prvih stvari koje su mi zasmetale je da po defaultu VS2005 ne prati aktivne iteme u Solution Exploreru. Video sam slučajeve gde ljudi po strukturi direktorijuma jure po 25 i više otvorenih fajlova, totalni haos.
Rešenje: Tools -> Options -> Projects and Solutions -> General. Uključiti Track Active Item in Solution Explorer.

Prilikom pokretanja build-a ne podiže se Output window koji je neophodan da bi se pratio tok kompajliranja. Zašto nam je to potrebno, pa ukoliko imamo 10 i više projekata u Solution-u može da se desi da prvi projekat koji se kompajlira pukne a da mi sačekamo kompajliranje ostalih devet vezanih i da gledamo stotine grešaka u Error output window dok ugledamo da smo izostavili recimo tačku-zarez u prvom. Ovako prekinemo build mnogo ranije i manje lutamo da dođemo do izvora problema.
Rešenje: Tools -> Options -> Projects and Solutions -> General. Uključiti Show Output window when build starts.

Korisno je od Toolbar-ova imati uključen View -> Toolbars -> Build da bi ste imali bolju kontrolu nad procesom kompajliranjem projekata ili solutiona. Naravno, najbolje je zapamtiti keyboard shortcuts za Build Solution - F6, Build Project - Shift F6, Cancel Build – CTRL Break (Pause dugme ;).

Klikom na url unutar koda odmah odlazite na isti. Teško je uraditi selekciju takvog teksta.
Rešenje: Tools -> Options -> Text Editor -> C# -> General. Isključiti Enable single-click URL navigation.

Po osnovnom podešavanju Tab se pretvara u 4 x space. Upotreba tastature se time ozbiljno ograničava kada počnete da se krećete kroz veću količinu koda a kod postaje mnogo nepreglednije kada vam uvlačenje i ravnjanje teksta negde „pobegne“.
Rešenje: Tools -> Options -> Text Editor -> C# -> Tabs. Indenting:  Smart, uključiti Keep tabs. Tab size podesite po ukusu.

Podesite okruženje da vidite brojeve linija koda.
Tools -> Optiones > Text Editor -> All languages -> General, Display – Line numbers

Da bi ste poboljšali čitljivost možete da naterate VS da u kodu prikaže i vertikalne linije (guides).
Otvorite regedit (Windows taster + R, pa kucajte regedit), nađite sledeći key [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text Editor]. U njega dodajte string value sledećeg formata: RGB(r, g, b) x1, x2, ..., x13. Vrednosti (r, g, b) čine vrednosti crvene, zelene i plave boje čijim mešanjem dobijamo boju kojom će biti ofarbane linije u editoru (moj favorit je 232, 232, 232). Vrednosti x1...x13 su pozicije linija kojih ukupno može da bude 13 (moji favoriti 4, 20, 36, 52, 68, 84, 100, 116, 132, 148, 164). Ako vas mrzi da kucate samo skinite ovu .reg datoteku i dva puta brzo kliknite na nju.

Kad smo već kod čitljivosti toplo preporučujem da skinete neki pravi programerski font i koristite umesto standardnog Currier New. Posetite http://www.proggyfonts.com/ pa probajte.

Primetio sam da dosta ljudi drži otvorenu gomilu toolbarova i prozora koje retko ili nikada ne koriste a vire u prozorče sa kodom veličine 500x600 piksela i muče sa kao da rade na VGA monitoru a ne na 22“. Daklem likvidirajte sve nepotrebne prozore i toolbarove i zadržite samo ono neophodno što se svede na skoro ništa ako dobro naučite keyboard shortcut-ove. Downloadujete i štampajte:  http://www.microsoft.com/downloads/details.aspx?FamilyID=6bb41456-9378-4746-b502-b4c5f7182203&DisplayLang=en.
Moji favoriti:
•    CTRL K C – zakomentariše selektovani blok koda, radi lepo u c#, javascript, html, xml...
•    CTRL K U – odkomenariše selektovani blok koda
•    F5 – debug
•    CTRL  F5 – pokretanje aplikacije bez debug-a, koristite F5 samo kada stvarno debugujete nešto
•    F9 – postavljanje i uklanjanje „brake point“
•    F12 – ide na definiciju svojstva, metoda, klasa...
•     CTRL Space – kompletira tekuću reč u intelisense-u
•    CTRL TAB – kretanje po listi otvorenih fajlova
•    itd


Na kraju kad već podesite okruženje (uklonite nepotrebne i postavite/dodate potrebne Toolbarove i podesite sitnice) lepo bi bilo da to podešavanje negde i sačuvate za pokoljenja. Tools –> Import and Export Settings -> Export selected environment settings pa odaberite koje grupe podešavanja želite da  sačuvate. Ja se ne maltreiram previše, odaberem sve i nosim sa sobom :-)

Sunday, 16 December 2007 23:30:48 (Central Europe Standard Time, UTC+01:00)
 Friday, 02 November 2007
Dragi prijatelji,

prošlo je već mesec i po dana od kada se Miloš Vlatković rodio. Vreme od tada je prošlo fantastično brzo pa eto tek sada sam se opasuljio da napišem koju reč.

Sve je počelo 25.09. ujutru kada smo primetili prve znake početka porođaja. Usledio je odlazak u bolnicu, ostanak u istoj i pripreme za veliki događaj za koga smo tada mislili da neće skoro. Elem 26.09.  posle ponoći je počela prava akcija. Posle 6-7 sati hrabre borbe fantastične mama Ane u 07:10 rodio se Miloš. Visok 51 cm i težak 3350 grama. Ljudina!

Nakon 4 dana u bolnici došli smo kući. Onda je krenulo provaljivanje fora, kada je gladan, žedan, uneređen, nenaspavan, živahan... Posle par dana Ani se ustalilo mleko pa smo tako malo ušli u dnevno noćni ritam. Hm, ritam, dobro, nekad normalan, nekada neparan, ono makedonsko 7/8, 11/8 :). Grčevi nas malo muče (da kucnem u drvo) i to za sada uspešno rešavamo Espumisan kapima u kombinaciji sa Canpol termoformom (www.nea.co.yu, www.canpol.com.pl) koji može da se kupi u Tempu ili Apotekarskoj ustanovi Beograd. Kumovi, fala na savet :).

I posle mesec dana imamo 900gr više, 2 cm smo duži. Da kucnem u drvo Miloš uopšte nije zahtevno dete, za sada. Počinje sve manje da spava uskoro se nadamo da će spojiti noć. Polako istražuje prostor oko sebe, vrlo je radoznao. Čini nam se da je počeo da nas prepoznaje i promene su svakodnevne tako da nas čeka puno zezanja sa njim :).

Evo malo sličica:
http://picasaweb.google.com/pvlatkovic/BebacPrveDveNedelje
http://picasaweb.google.com/pvlatkovic/BebacDrugeDveNedelje

Friday, 02 November 2007 10:20:55 (Central Europe Standard Time, UTC+01:00)
 Sunday, 20 May 2007
 #
 

Mnogi od vas već znaju ali evo i zvanično da objavim (u C# :-))

{
...
   Baby ourBaby = new Baby();
   ourBaby.DeliveryDate = new DateTime (2007, 9, 27);
   ourBaby.Sex = "M";

   Ana_and_Peca.Babies.Add(ourBaby);

}

 

Sunday, 20 May 2007 22:40:31 (Central Europe Standard Time, UTC+01:00)

Šta da kažem sem da je ova poseta naših drugara i kolega iz Švedske bila podjednako uspešna kao i ona prva. Doduše, manje piva je popijeno na samom startu ali je sve to kasnije nadoknađeno samopregornim zalaganjem svih učesnika ovog skupa :-). Program je bio isti s tim da smo sada nešto više vremena proveli u druženju nego u razgledanju grada. Malo smo promenili prioritete očigledno, a i vrućina je udarila (30-32c) što nije previše prijalo Nordijcima nenaviknutim na jako sunce i omorinu.

Beograd se i ovog puta pokazao dostojno titule glavnog grada. Čist, umiven, veseo i lep, ostavio je snažan utisak na naše goste. Čak toliko snažan da ćemo ova druženja pokušati da pretvorimo u tradiciju. E pa ŽIVELI!.

Sunday, 20 May 2007 22:32:03 (Central Europe Standard Time, UTC+01:00)
 Wednesday, 09 May 2007
 #
 
Pogledajte Bebikin novi post, vrrrrlo je poučan!


Wednesday, 09 May 2007 08:41:00 (Central Europe Standard Time, UTC+01:00)
 Tuesday, 08 May 2007

Ove godine su komarci rano krenuli da nas jedu. Jedan me je noćas, bolje reći jutros najstrašnije izmaltretirao. Toliko me je izujedao da sam oko četiri morao da ustanem i krenem da ga lovim. Naravno bezuspešan lov i razbijen san. Umijem se, pogledam na sat i kresnem TV da vidim da li vrli među nama spavaju. Kad ono prozivka. Posle 10 minuta krljanje. Samo je Sloba falio. Horor. Grizi brate, ne možeš ti da grizeš koliko ja mogu da trpim. Na kraju sam ga ucmekao. 

Tuesday, 08 May 2007 22:18:57 (Central Europe Standard Time, UTC+01:00)
 Tuesday, 01 May 2007
Vikinzi (pa i Šveđani) su batalili osvajanja Evrope još pre oko 1000 godina kada su ukapirali da je izvoz čelika i ribe daleko unosniji i bezopasniji posao. No prošlog vikenda sam bio svedok i direktni učesnik jedne mini invazije potomaka Vikinga na Srbiju. Naime, oko 40 kolega i koleginica iz Stokholma, iz kompanije Mogul za koju radim, došlo nam je u posetu sa namerom da se bolje upoznaju sa ovdašnjim kolegama i da se pobliže upoznaju sa životom i lepotama Beograda.

A život i lepote su im se jaaaaaaako svideli! I to od trenutka izlaska iz zgrade aerodroma "Nikola Tesla" kada im je "naše" sunce poželelo najtopliju moguću dobrodošlicu. Kao narod koji pola godine provede u zimskom polumraku bez sunca i toplote Šveđani gaje izvanrednu naklonost prema suncu koje mi skoro uvek prihvatamo tako zdravo za gotovo. Pošto su ipak stigli sa tri na 23 stepena trebalo im je malo hlađenja pa su sa lakoćom slistili jedno šest sanduka piva koje smo mi tako ponosno dovukli. Naravno ovo je bila samo uvertira u mnogo veće podvige koje su nastupajuće večeri učinili za stolovima i barovima beogradskih kafana :-). Biće dovoljno da kažem da se te noći jako malo spavalo.

Narednog jutra smo, podeljeni u nekoliko grupa, pokušali svojim gostima da predstavimo grad i njegove žitelje što je moguće bolje. U tome nam je dosta pomogao i Beogradski maraton koji je na ulice izmamio sve generacije beograđana i beograđanki. Jedan od utisaka naših drugara je direktnost u uspostavljanju kontakta sa nepoznatim osobama. U  Švedskoj imate utisak da je svaki čovek svet za sebe, na ulici, restoranu i uopšte u bilo kakvom socijalnom kontaktu. Ovde su bili jako opušteni. Vrlo brzo su shvatili da je sasvim uobičajeno da se prolaznici normalno promatraju i "merkaju" što se, posebno muškom delu, jako svidelo. Ni arhitektura grada ih nije ostavila ravnodušnima. Fascinirala ih je šarolikost zgrada i stilova i na momente njihova pomalo haotična postavka. Naravno, nakon priče o burnoj više hiljada godina dugoj ratnoj istoriji Beograda, shvatili su zašto je sve tako kako je. Pored uobičajenih turističkih atrakcija trudili smo se da im pokažemo i pravi Beograd, odnosno delove gde turisti slabo zalaze, tamo gde obično živimo, mi. Tako smo završili na Čuburi, jednom od najživopisnijih delova Beograda.Užitak nam je upotpunio ručak u jednom, po meni, od najboljih restorana u Beogradu, Iguani. Hrana je u ovom restoranu svima došla kao osveženje posle rolovanih kalorijskih bombi od prethodne večeri. No više o ovom sjajnom restoranu nekom drugom prilikom. Posle Iguane lagana šetnja kroz procvetale čuburske uličice nas je dovela do Hrama Svetog Save na Vračaru.  Ogroman hram okružen oskudnom okolinom je ostavio na Šveđane veoma snažan utisak. Nisu znali da se još negde u svetu zidaju ovolike crkve. Objasnio sam im da je gradnja počela davno, pre Drugog rata i da sada vraćamo zaostale dugove prema precima i istoriji, kao i koliki je istorijski značaj samog mesta. Stvari koje su se na tom mestu desile davno jako su nas povredile, i gradnja tolikog hrama nije više pitanje samo vere već iskupljenja i završavanje započetih pa zaboravljenih poslova.

Laganom šetnjom nizbrdo kroz delove Kliničkog centra, stigli smo do Američke ambasade. Jak utisak na mene je ostavilo negativno izjašnjavanje naših gostiju prema dotičnoj instituciji i politici zemlje koju ona predstavlja. Naravno, to se ne poklapa sa zvaničnom politikom švedske vođenom u zadnjih stotinak godina koja je nekako uvek bila na strani trenutno najjače sile,bilo da je to Nemačka u drugom svetskom ratu ili Amerika danas. Bože sačuvaj da izjednačavam Ameriku sa nacističkom Nemačkom već želim da istaknem mudrost švedske politike i njenih državnika koji nisu bili samo političari. Pitam se ko je glup a ko pametan ovde i gde je granica onoga što bi neko učinio za svoj narod a da to možda bude i protivno ličnim moralnim ubeđenjima. Ovde bi smo mogli mnogo da naučimo od Šveđana.

Na dva minuta od Američke ambasade se nalazi i hotel Rex koji je bio polazna tačka naše ture tako da smo otpratili goste na kratki odmor i osveženje.

Popodne smo proveli u vožnji Savom i Dunavom i pokazivanju Beograda i okoline iz žablje perspektive. Teško je impresionirati Šveđene vodom pošto su stara pomorska nacija pa je priča o velikim bitkama koje su se događale okolo i domaće, brodsko, pivo "izvuklo" stvar. Pošto je ovo zagrevanje uspešno završeno red je došao na ponavljanje dostignuća od prethodne večeri. Mnogi nisu ni spavali.

Ujutro smo popili jednu omanju plantažu kafe, malo se propržili na jutarnjem suncu  (omiljeni švedski sport) i otišli do aerodroma. Sutradan smo bili zatrpani zahvalnicama na divnom i nezaboravnom boravku. Sledeću turu čekamo uskoro.

Na kraju, lepo smo se proveli. Cilj posete je postignut, upoznali smo se sa kolegama sa kojima smo do sada sterilno komunicirali samo putem MSN-a, Skype-a i email-a. Sada kada smo se videli, popričali ne samo o poslu, kada su videli da smo normalni, komunikativni, nenaoružani ;-) verujem da će komunikacija biti daleko lakša..

Mi kao domaćini smo vrlo ponosni na ceo događaj, mislim da smo uradili sjajan PR za našu zemlju i glavni grad. Mene lično je uhvatio neki romatičarski zanos iz vremena kada su se Srbi vraćali u domovinu, sa sobom dovodili ljude i donosili znanje a zarad opšte dobrobiti. Dobro sam se osećao. Skoro kao na protestima iz 1996 :-)
Tuesday, 01 May 2007 09:23:47 (Central Europe Standard Time, UTC+01:00)