<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.mscommunity.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Zvonimir Vanjak</title><subtitle type="html" /><id>http://blogs.mscommunity.net/blogs/zvonimir_vanjak/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.mscommunity.net/blogs/zvonimir_vanjak/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.mscommunity.net/blogs/zvonimir_vanjak/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2007-10-18T19:26:00Z</updated><entry><title>Visual Studio 2008 - bug u STL/CLR implementaciji</title><link rel="alternate" type="text/html" href="http://blogs.mscommunity.net/blogs/zvonimir_vanjak/archive/2008/02/22/visual-studio-2008-bug-u-stl-clr-implementaciji.aspx" /><id>http://blogs.mscommunity.net/blogs/zvonimir_vanjak/archive/2008/02/22/visual-studio-2008-bug-u-stl-clr-implementaciji.aspx</id><published>2008-02-22T14:57:00Z</published><updated>2008-02-22T14:57:00Z</updated><content type="html">&lt;p&gt;Ccccc ...&lt;/p&gt;&lt;p class="MsoNormal"&gt;Microsoftu je trebalo nekoliko godina da napravi port STLa (Standard
&lt;span&gt;&amp;nbsp;&lt;/span&gt;Template Library) da se može koristiti i
na .NET platformi &lt;b&gt;i onda naprave ovako
traljavi release !!!&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Za neupućene, kratka rekapitulacija. Dakle, STL &lt;a href="http://en.wikipedia.org/wiki/Standard_Template_Library"&gt;http://en.wikipedia.org/wiki/Standard_Template_Library&lt;/a&gt;
je biblioteka za programski jezik C++ u kojoj se nalaze implementacije
mnooooogobrojnih izrazito korisnih struktura podataka (što bi rekli –
„kolekcija“ iliti &lt;i&gt;containera&lt;/i&gt; –
vector, list, map, set, hash, queue, stack) i &lt;b&gt;algoritama&lt;/b&gt; za operiranje nad njima.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Prije nešto više od destak godina, kad sam se prvi put
upoznao s STLom, to je bilo vauuuu :-))))). Dinamičke i &lt;b&gt;strogo tipizirane&lt;/b&gt; strukture podataka, s ugrađenim efikasnim
algoritmima – što je više mogao poželjeti C/C++ programer !?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Klasični ArrayList iz .NET-a je u usporedbi s time bio čisti
smijeh ...&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;









&lt;p class="MsoNormal"&gt;Nažalost (u stvari &lt;b&gt;na
sreću &lt;/b&gt;;-), .NET je imao „poneku“ :-) drugu prednost pred native C++om tako
da je danas broj developera na .NET razvojnom okruženju vjerojatno puno veći od
broja developera koji koriste C++. Treba priznati i da se situacija &lt;b&gt;značajno&lt;/b&gt; popravila s uvođenjem &lt;i&gt;generics&lt;/i&gt;a
u C# 2.0 i ugrađivanjem tipiziranih kolekcija podataka pa je ArrayList (ne
koristite ga više, je&amp;#39;l da ;-) zamijenjen s List&amp;lt;T&amp;gt; i onda se dalo nekako
živjeti bez STL-a.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Stoga, kad sam vidio da je STL/NET konačno postao dio Visual
Studio 2008 okruženja, nisam mogao dočekati da ga malo okušam.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;Pa sam lijepo kreirao novi Visual C++ projekt (tab CLR pa CLR
Console Application) i ukucao najtrivijalniji mogući primjer:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;





&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;#include&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt; &lt;span&gt;&amp;quot;stdafx.h&amp;quot;&lt;/span&gt;&lt;br /&gt;#include&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; &lt;span&gt;&amp;lt;cliext/vector&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; &lt;span style="color:blue;"&gt;namespace&lt;/span&gt; &lt;span&gt;System&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;







&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; &lt;span&gt;main&lt;/span&gt;(&lt;span style="color:blue;"&gt;array&lt;/span&gt;&amp;lt;&lt;span&gt;System&lt;/span&gt;::&lt;span&gt;String&lt;/span&gt;
^&amp;gt; ^&lt;span&gt;args&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;cliext&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;::&lt;span&gt;vector&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;wchar_t&lt;/span&gt;&amp;gt; &lt;span&gt;c1&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;







&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&amp;nbsp;&lt;span&gt; &lt;/span&gt;c1&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;.&lt;span&gt;push_back&lt;/span&gt;(&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&amp;#39;a&amp;#39;&lt;/span&gt;); &lt;br /&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;c1&lt;/span&gt;.&lt;span&gt;push_back&lt;/span&gt;(&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&amp;#39;b&amp;#39;&lt;/span&gt;); &lt;br /&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;c1&lt;/span&gt;.&lt;span&gt;push_back&lt;/span&gt;(&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&amp;#39;c&amp;#39;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;





&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&amp;nbsp; &lt;span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;for&lt;/span&gt; &lt;span style="color:blue;"&gt;each&lt;/span&gt; (&lt;span style="color:blue;"&gt;wchar_t&lt;/span&gt; &lt;span&gt;elem&lt;/span&gt; &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span&gt;c1&lt;/span&gt;) &lt;span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;::&lt;span&gt;Console&lt;/span&gt;::&lt;span&gt;Write&lt;/span&gt;(&lt;span&gt;&amp;quot; {0}&amp;quot;&lt;/span&gt;, &lt;span&gt;elem&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;&amp;nbsp;&lt;span&gt;&lt;/span&gt;return&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; 0;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Pravi C++ gurui će ovdje odmah graknuti da „kakav for each“,
da nema toga u STLu i gdje su const_iterator, begin i end ? OK, može i tako,
ali for each je idiom koji je u .NET svijetu &lt;i&gt;bread-and-butter&lt;/i&gt; i ruku na srce, ima puno manje kucati :-)))) I
mislim da je sasvim zgodno da su implementatori STL/CLRa omogućili korištenje
tog idioma sa STL/NET kolekcijama. Uostalom, to je ionako &lt;i&gt;syntactic sugar&lt;/i&gt; ...&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Ostalo je manje više jasno. Treba uključiti header
cliext/vector da bi kompajler imao potrebne deklaracije (nešto ala „Add
reference“ za C# programere), push_back je „klasičan“ način za dodavanje
elementa na kraj kolekcije (Add za C#ovce) i tu bi sve trebalo biti jasno.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;F7 i ...&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;1&amp;gt;C:\Program
Files\Microsoft Visual Studio 9.0\VC\include\cliext/xutility(9) : &lt;b&gt;fatal error C1107: could not find assembly
&amp;#39;Microsoft.VisualC.STLCLR.dll&amp;#39;:&lt;/b&gt; please specify the assembly search path
using /AI or by setting the LIBPATH environment variable&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Neba ti nebeskog ... ???&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Što je sad ?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Otvaranjem xutility headera (.h nastavak za headere standardnih
biblioteka je „izgubljen“ u zadnjoj inkarnaciji C++ standarda) i odlaskom na
liniju 9 se nađe „uzrok“ pogreške i tamo piše:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;#using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; &lt;span&gt;&amp;lt;Microsoft.VisualC.STLCLR.dll&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;U redu, jer TO JE TOČNO NO ŠTO BI TREBALO PISATI !!!???&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Dotični dll-u je library u kojem je duša STL/CLR i #using
direktiva je nužna kao pointer kompajleru. Taj dll se fizički nalazi u C:\Program
Files\Microsoft Visual Studio 9.0\VC\lib direktoriju, gdje se nalaze i
mnogobrojne druge biblioteke za Visual C++ kompajler, i referenciran je kroz
Libraries setting.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Dakle, &lt;b&gt;kompajler bi ga
morao vidjeti !!!&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;A on kaže da ga nema ?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Pokušao sam nekoliko trikova (npr. staviti ga ručno u
referencirane biblioteke za projekt) ali nije mi baš išlo :-(. Ipak, na kraju
sam našao spasonosno rješenje.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;U xutility headeru sam dotičnu liniju promijenio u:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Consolas;color:blue;"&gt;#using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt; &lt;span&gt;&amp;quot;C:\Program Files\Microsoft Visual Studio
9.0\VC\lib\Microsoft.VisualC.STLCLR.dll&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;I sve je proradilo kako treba ... Prijavio sam bug
Microsoftu, i sad se na miru mogu (možete) poigrati sa STL/CLRom ...&lt;/p&gt;

&lt;img src="http://blogs.mscommunity.net/aggbug.aspx?PostID=2026" width="1" height="1"&gt;</content><author><name>Zvonimir Vanjak</name><uri>http://blogs.mscommunity.net/members/Zvonimir-Vanjak.aspx</uri></author></entry><entry><title>Pozdrav svima :-)</title><link rel="alternate" type="text/html" href="http://blogs.mscommunity.net/blogs/zvonimir_vanjak/archive/2007/10/18/pozdrav-svima.aspx" /><id>http://blogs.mscommunity.net/blogs/zvonimir_vanjak/archive/2007/10/18/pozdrav-svima.aspx</id><published>2007-10-18T08:26:00Z</published><updated>2007-10-18T08:26:00Z</updated><content type="html">&lt;p&gt;Hello everybody. And, as they say, better late than never ;-)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;My name is Zvonimir Vanjak and I work as an assistant at Faculty of Electrical Engineering and Computing in Zagreb, teaching courses Programming, Algorithms and Data Structures, Object-Oriented Programming and Operational Research (yeah, that&amp;#39;s a lot of stuff, I know ;-). I like to think of myself as a &amp;quot;C++ guy&amp;quot; (15 years of experience is hard to &amp;quot;wear off&amp;quot;) but, alas, in last few years most of the money has been coming from C# Department ;-). Which is JUST FINE, since .NET is absolutely fantastic development platform (and there is always C++/CLI ;-).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I&amp;#39;m primarily interested in development of desktop-based (client-server) solutions and keywords that make me tick are: domain-driven design, test-driven development and agile development. I&amp;#39;m very excited about ADO vNext Entity Framework and it&amp;#39;s promise to bridge object-relational divide. And if recent efforts in implementing Model-View-Controller framework on top of ASP.NET succeed (as they undoubtfully will ;-), I will consider some serious web development also ...&lt;/p&gt;&lt;p&gt;I think this is enough for introduction.&lt;/p&gt;Živili :-))&lt;br /&gt;&lt;p&gt;Zvone&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.mscommunity.net/aggbug.aspx?PostID=277" width="1" height="1"&gt;</content><author><name>Zvonimir Vanjak</name><uri>http://blogs.mscommunity.net/members/Zvonimir-Vanjak.aspx</uri></author><category term="personal" scheme="http://blogs.mscommunity.net/blogs/zvonimir_vanjak/archive/tags/personal/default.aspx" /></entry></feed>