<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nikola Plejić &#187; (Web) Development</title>
	<atom:link href="http://nikola.plejic.com/blog/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://nikola.plejic.com/blog</link>
	<description>Open Source (&#38;) Science</description>
	<lastBuildDate>Mon, 21 Mar 2011 13:10:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Developing and Deploying ASP.NET MVC Applications On Ubuntu Linux with Mono, nginx and MySQL</title>
		<link>http://nikola.plejic.com/blog/asp-net-mvc-on-ubuntu-linux-mono-nginx-mysql/</link>
		<comments>http://nikola.plejic.com/blog/asp-net-mvc-on-ubuntu-linux-mono-nginx-mysql/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 13:10:34 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[English posts]]></category>
		<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=386</guid>
		<description><![CDATA[Mono is moving forward at an impressive pace: the team at Novell and the Mono community deserve some massive respect. In the more recent versions, support for ASP.NET MVC emerged and the new Microsoft library became a part of the core. Combined with XSP (the Mono web server) and its FastCGI server, it became possible [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-408" title="Mono" src="http://nikola.plejic.com/blog/wp-content/uploads/2011/03/mono.png" alt="Mono" width="167" height="41" align="left" />Mono is moving forward at an impressive pace: the team at Novell and the Mono community deserve some massive respect. In the more recent versions, support for ASP.NET MVC emerged and the new Microsoft library became a part of the core. Combined with XSP (the Mono web server) and its FastCGI server, it became possible to serve ASP.NET MVC applications from your Linux machines.</p>
<p><strong>This post is a quick summary of my first steps in creating a development environment and setting up a server for ASP.NET MVC on Linux.</strong> Tools of the trade will be Ubuntu 10.04 (Lucid Lynx), the nginx web server and XSP&#8217;s FastCGI server. I&#8217;ll assume you have a working setup featuring nginx and MySQL on your server &#8211; configuring these is beyond the scope of this article.<span id="more-386"></span></p>
<div style="padding-left: 30px;">
<p style="border-left: 3px solid #000; padding-left: 5px;">Much of this was never tested in a production environment. I have yet to develop a non-trivial application running on top of all of this and I can&#8217;t guarantee everything is bug-free and 100% functional. <a href="http://www.mono-project.com/Companies_Using_Mono">People are using Mono in production</a>, the whole thing looks and feels really solid, but definitely make sure you test everything before diving in.</p>
</div>
<h2>Mono.GetLastVersion();</h2>
<p><strong>Ubuntu depends on Mono quite a lot, so don&#8217;t expect to find the latest and greatest version in your package manager.</strong> There is some comfort in the form of <a href="http://badgerports.org/">Badgerports</a>, but it&#8217;s LTS-only, and it&#8217;s usually a bit behind the latest Mono stable. The solution is to compile Mono from source, which is actually a lot easier than it sounds.</p>
<div style="padding-left: 30px;">
<p style="border-left: 3px solid #000; padding-left: 5px;">If you feel you can live with an older version of Mono and are using a long-term supported release of Ubuntu, go ahead and grab the Badgerports repository and install their Mono packages. The crew is doing awesome work and the backport works great. Compiling stuff from scratch means you have to keep an eye out for security updates and recompile when necessary to keep your server safe, which can be stressful. If you really like living on the edge, follow the instructions below.</p>
</div>
<p>The whole process is made easy by a <a href="https://github.com/firegrass/mono-installer-script">nice shell script written by Patrick McEvoy</a> which does all the heavy lifting. The script is nicely written, so if you don&#8217;t like running random stuff from the web as root (and you shouldn&#8217;t!), feel free to take a peek, see what it does and do the whole thing by hand.</p>
<p>Clone the Git repo or fetch the script directly from GitHub and see what the script does by typing <code>./mono_build.sh -h</code> (you&#8217;ll have to <code>chmod +x mono-build-sh</code> if you already didn&#8217;t). <strong>The choice between the correct flags depends on what you&#8217;re configuring</strong>:</p>
<ul>
<li>for my development machine, I chose to build &#8220;just Mono&#8221; (the -r flag), and then added gnome-sharp and monodevelop afterwards (-m mono-addins gnome-sharp gnome-desktop-sharp monodevelop);</li>
<li>for my VPS, I chose to build &#8220;just Mono&#8221;, without any additional modules.</li>
</ul>
<p>Run the script with your selected parameters (don&#8217;t forget to specify the prefix!) and grab a cup of coffee as it could definitely take a while.</p>
<div style="padding-left: 30px;">
<p style="border-left: 3px solid #000; padding-left: 5px;">You may get compile errors while installing MonoDevelop. Depending on your current Mono configuration, you may need to uncheck certain MonoDevelop packages in the configure phase: I only checked &#8220;main&#8221;, &#8220;extras/MonoDevelop.Database&#8221; and &#8220;extras/MonoDevelop.Debugger.Gdb&#8221;; the &#8220;extras/BooBinding&#8221; and &#8220;extras/MonoDevelop.MonoDroid&#8221; packages I tried to install caused the compiler to choke. If you make a mistake in this phase, go to the MonoDevelop source directory, and do a <code>sudo ./configure --select</code>;  choose the packages and then try to recompile with <code>mono_build.sh</code>.</p>
</div>
<p>When finished, <strong>you should have a fully-functioning version of Mono in a directory of your own choice.</strong> Follow the instructions to enable and test your new installation, and buy Patrick a beer for his awesome work.</p>
<h2>Setting up nginx and FastCGI</h2>
<div style="padding-left: 30px;">
<p style="border-left: 3px solid #000; padding-left: 5px;">You don&#8217;t need to set up FCGI on your development machine &#8211; you can happily use the standalone XSP which was built as a development server. XSP loads automatically when you run your app from MonoDevelop.</p>
</div>
<p><strong><img class="alignleft size-full wp-image-412" title="nginx" src="http://nikola.plejic.com/blog/wp-content/uploads/2011/03/nginx.gif" alt="nginx" width="121" height="32" align="left" />XSP provides a FastCGI server, which is an excellent way to make Mono and nginx talk.</strong> For this to work, you&#8217;ll need to know the exact location of the <code>fastcgi-mono-serverX</code> (where X is one of { &#8220;&#8221;, &#8220;2&#8243;, &#8220;4&#8243; }, depending on the ASP.NET version you&#8217;d like to use). If you installed the Badgerports backport, it&#8217;s probably in your <code>PATH</code>; if you compiled from source, it&#8217;s in <code>$PREFIX/bin/fastcgi-mono-serverX</code>.</p>
<p>Now we need to point nginx to the FastCGI binary. <strong>Here&#8217;s a sample configuration file</strong>:</p>
<p><code> </code></p>
<pre><code>server {
  server_name {SERVER};
  access_log {ACCESSLOG};
  root {ROOT};

  # magick start!
  location / {
    index index.html index.htm default.aspx Default.aspx;
    # DEFAULTROUTE is the default route of your app; e.g. Home/Index
    fastcgi_index {DEFAULTROUTE};
    # choose a free port; e.g. 9001
    fastcgi_pass 127.0.0.1:{PORT};
    include /etc/nginx/fastcgi_params;
  }

  # /Content contains just static files - we don't need
  # no FCGI to serve those!
  location /Content/ {
  }
}</code></pre>
<p>You can easily deploy your ASP.NET application to {ROOT} by using MonoDevelop&#8217;s &#8220;Deploy to Web&#8221; functionality (Tools &#8211; Deploy to Web).</p>
<p>Now, edit /etc/nginx/fastcgi_params and add the following two lines defining certain environment variables the FastCGI server expects to find:</p>
<p><code>fastcgi_param  PATH_INFO          "";<br />
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;</code></p>
<p>Finally, start the FastCGI server itself:</p>
<p><code>$PREFIX/bin/fastcgi-mono-server2 /applications={SERVER}:/:{ROOT} /socket=tcp:127.0.0.1:{PORT} &amp;</code></p>
<p>Restart nginx and your application should be ready at the server_name of your choice. However, <strong>manually starting up FCGI isn&#8217;t too exciting.</strong> Fortunately, there&#8217;s an <a href="http://tomi.developmententity.sk/Blog/Post/2">awesome script written by Tomas Bosak</a> which automates that part &#8211; follow Tomas&#8217; instructions to install the script, but make sure to update the path to the FastCGI binary if you compiled from source.</p>
<p style="text-align: center;"><a href="http://nikola.plejic.com/blog/wp-content/uploads/2011/03/aspnetlinux.png" rel="lightbox[386]"><img class="size-medium wp-image-416 aligncenter" title="ASP.NET on Mono - we have proof!" src="http://nikola.plejic.com/blog/wp-content/uploads/2011/03/aspnetlinux-300x73.png" alt="ASP.NET on Mono" width="300" height="73" /></a></p>
<p>Another option would be to use nginx to proxy requests to a standalone XSP instance: it should be fairly straightforward, but I didn&#8217;t try it at all.</p>
<h2>Mono &lt;3 MySQL and Fluent NHibernate</h2>
<p><img class="alignleft size-full wp-image-414" title="mysql" src="http://nikola.plejic.com/blog/wp-content/uploads/2011/03/mysql.png" alt="mysql" width="110" height="57" align="left" />Web applications usually work with some kind of a database. <strong>There are several <a href="http://mono-project.com/Database_Access">ADO.NET providers working with Mono</a> for different database servers like MySQL, PosgreSQL and Microsoft SQL Server.</strong> MySQL provides the <a href="http://dev.mysql.com/downloads/connector/net/">Connector/Net library</a>, which is a fully-managed ADO.NET provider. Setting it up is easy: download the library, unzip and add a reference to <code>mysql.data.dll</code> in MonoDevelop. Also note you&#8217;ll have to use the DLL from the &#8220;v2/&#8221; folder. There&#8217;s a <a href="http://mono-project.com/MySQL">quick &amp; dirty tutorial on the Mono project website</a>, and <a href="http://dev.mysql.com/doc/refman/5.1/en/connector-net.html">in-depth documentation on the MySQL website</a> which should have enough information to get you up &amp; running.</p>
<div style="padding-left: 30px;">
<p style="border-left: 3px solid #000; padding-left: 5px;">If you run into a &#8220;connection refused&#8221; message while trying to connect with MySQL, take a peek in your /etc/mysql/my.cnf: you should either have an uncommented line in there saying &#8220;skip-networking&#8221;, or  a directive which says &#8220;bind_address = 127.0.0.1&#8243;, depending on your MySQL version.</p>
</div>
<p><strong>If you&#8217;d like to use Fluent NHibernate with Mono &#8211; good news!</strong> It works perfectly without any hacks: just <a href="http://fluentnhibernate.org/">download Fluent NHibernate</a> and reference it in your project. Here&#8217;s a sample CreateSessionFactory() method for MySQL:</p>
<p><code> </code></p>
<pre><code>private static ISessionFactory CreateSessionFactory() {
  string connStr = "server=localhost;user={USER};database={DB};port={PORT};password={PWD}";
  return Fluently.Configure()
    .Database(
      MySQLConfiguration.Standard.ConnectionString()
    )
    .Mappings(m =&gt; m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
    .BuildSessionFactory();
}</code></pre>
<p>Voilà.</p>
<h2><strong>ASP.NET MVC 3, WebMatrix, future&#8230;</strong></h2>
<p><a href="http://www.mono-project.com/Release_Notes_Mono_2.10#ASP.NET_MVC3_Support">Mono 2.10 should support ASP.NET MVC 3</a>, although it&#8217;s not yet bundled with Mono as is the case with previous versions. There is also some preliminary support for <a href="http://blog.neteril.org/2011/01/22/webmatrix-data-on-mono/">WebMatrix in the form of WebMatrix.Data.dll</a> and <a href="http://www.mono-project.com/Release_Notes_Mono_2.10#Razor_and_WebPages">Razor</a>. I didn&#8217;t have the time to play with any of these, so if you have some experience in setting it up, please share them in the comments.</p>
<p>I really like C# and ASP.NET MVC and <strong>I enjoy the idea of running .NET web applications on top of my preferred OS</strong>. This is something I&#8217;ll definitely be tinkering with in the future. For any questions, comments, advice or suggestions, feel free to use the comment form below, <a href="http://twitter.com/nikolaplejic">mention me on Twitter</a> or contact me by e-mail on <a href="mailto:nikola@plejic.com">nikola@plejic.com</a>.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/asp-net-mvc-on-ubuntu-linux-mono-nginx-mysql/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>File upload in Clojure &amp; Compojure</title>
		<link>http://nikola.plejic.com/blog/file-upload-in-clojure-compojure/</link>
		<comments>http://nikola.plejic.com/blog/file-upload-in-clojure-compojure/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:47:50 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[English posts]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=315</guid>
		<description><![CDATA[Compojure is coming to be a really nice framework which is, together with the excellent Enlive templating/transformation library, enough to make this Lisp n00b take a shot at developing a toy project or two in a Lisp dialect. I struggled a bit today to do a file upload: it&#8217;s a relatively recent feature in the framework [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p><a href="http://compojure.org/">Compojure</a> is coming to be a really nice framework which is, together with the excellent <a href="http://github.com/cgrand/enlive">Enlive</a> templating/transformation library, enough to make this Lisp n00b take a shot at developing a toy project or two in a Lisp dialect. I struggled a bit today to do a file upload: it&#8217;s a relatively recent feature in the framework and although it&#8217;s pretty straightforward, it took me a while to get it up to speed. Here&#8217;s a really basic and primitive example which assumes you have clojure.contrib, Ring, Compojure and Enlive installed.</p>
<p><span id="more-315"></span></p>
<p>The key step is to wrap your upload handling route with the <code>wrap-multipart-params</code> middleware from the <code>ring.middleware.multipart-params</code> namespace. The route responsible for the file upload is the latter one:</p>
<pre lang="lisp">(defroutes public-routes
  (GET "/" [] (render (index)))
  (mp/wrap-multipart-params
    (POST "/file" {params :params} (upload-file (get params "file")))))</pre>
<p>(<code>file</code> in the <code>(get params "file")</code> call is the name of the <code>input</code> field.)</p>
<p>Next, here&#8217;s the <code>upload-file</code> handler function called by the route which just takes the file and copies it to a file named <code>file.out</code> in the current project directory:</p>
<pre lang="lisp">(defn upload-file
      [file]
      (ds/copy (file :tempfile) (ds/file-str "file.out"))
      (render (upload-success)))</pre>
<p>(<code>ds</code> is an alias for the <code>clojure.contrib.duck-streams</code> namespace, and <code>render</code> is a function which takes a template and returns its string representation. <code>upload-success</code> is an Enlive template.)</p>
<p>Voila! Not hard at all. Also check out the <a href="http://gist.github.com/562624">gist with complete code and template files</a>.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/file-upload-in-clojure-compojure/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>(G)Vim: postavljanje opcija u ovisnosti o direktoriju</title>
		<link>http://nikola.plejic.com/blog/gvim-postavljanje-opcija-u-ovisnosti-o-direktoriju/</link>
		<comments>http://nikola.plejic.com/blog/gvim-postavljanje-opcija-u-ovisnosti-o-direktoriju/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:58:17 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=274</guid>
		<description><![CDATA[Paralelni rad na nekoliko različitih projekata1 može biti zanimljiv, ali i frustrirajuć ukoliko ti projekti koriste različite konvencije za pisanje koda. Vim spašava stvar sa svojih nekoliko načina za korištenje paralelnih konfiguracija. Svako rješenje ima svojih prednosti, no najjednostavnijim se i najefikasnijim u mojem slučaju pokazalo dodavanje sljedeće linije u ~/.vimrc: au BufRead,BufNewFile /path/do/foldera/* setl [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p>Paralelni rad na nekoliko različitih projekata<sup>1</sup> može biti zanimljiv, ali i frustrirajuć ukoliko ti projekti koriste različite konvencije za pisanje koda. Vim spašava stvar sa svojih <a href="http://stackoverflow.com/questions/1889602/multiple-vim-configurations/1889707">nekoliko načina za korištenje paralelnih konfiguracija</a>.<span id="more-274"></span></p>
<p>Svako rješenje ima svojih prednosti, no najjednostavnijim se i najefikasnijim u mojem slučaju pokazalo dodavanje sljedeće linije u ~/.vimrc:</p>
<pre lang="vim">
au BufRead,BufNewFile /path/do/foldera/* setl noexpandtab
</pre>
<p>Gornji primjer će za sve fileove koji se nalaze unutar foldera /path/do/foldera (i ispod njega) koristiti &#8220;prave&#8221; tabove umjesto spaceova koji su moja defaultna konfiguracija. Hvala, Vim.</p>
<p><sup>1</sup> <i>(&#8220;Paralelni rad na nekoliko različitih projekata&#8221; ujedno i vrlo dobro opisuje razloge radi kojih je ovaj blog mrtav više od pola godine.)</i></p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/gvim-postavljanje-opcija-u-ovisnosti-o-direktoriju/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xmonad &#8211; recept za produktivno radno okruženje na GNU/Linuxu</title>
		<link>http://nikola.plejic.com/blog/xmonad-recept-za-produktivno-radno-okruzenje-na-gnulinuxu/</link>
		<comments>http://nikola.plejic.com/blog/xmonad-recept-za-produktivno-radno-okruzenje-na-gnulinuxu/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 12:20:31 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[window manager]]></category>
		<category><![CDATA[xmonad]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=83</guid>
		<description><![CDATA[GNOME, koji je uz KDE najpopularnije desktop okruženje za GNU/Linux, koristim gotovo od samih početaka ozbiljnijeg korištenja Linuxa. Nedavno sam još malo tweakao svoju konfiguraciju i složio vrlo ugodan desktop. Kako sam počeo pratiti Haskell, naletio sam na jedan zanimljiv window manager napisan upravo u njemu &#8211; Xmonad. Xmonad je tzv. &#8217;tiling&#8217; window manager, što [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p>GNOME, koji je uz KDE najpopularnije desktop okruženje za GNU/Linux, koristim gotovo od samih početaka ozbiljnijeg korištenja Linuxa. Nedavno sam još malo tweakao svoju konfiguraciju i složio vrlo ugodan desktop. <span id="more-83"></span></p>
<p>Kako sam počeo pratiti Haskell, naletio sam na jedan zanimljiv window manager napisan upravo u njemu &#8211; <a href="http://xmonad.org/">Xmonad</a>. Xmonad je tzv. &#8217;tiling&#8217; window manager, što bi značilo da on sam raspoređuje prozore na vašem desktopu prema konfigurabilnim algoritmima i parametrima.</p>
<p><a rel="lightbox" href="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-firefox.png"><img class="size-medium wp-image-98 alignleft" title="xmonad-firefox" src="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-firefox-300x187.png" alt="Dva prozora Firefoxa u Xmonadu" width="300" height="187" align="left" /></a> Tiling window manageri nisu ništa novo, no ovo je bio moj prvi susret s njima. Konceptualno mi je cijela stvar izgledala dosta interesantno, te sam ih odlučio i isprobati. Rezultat: krajnje oduševljenje i gotovo potpuna migracija na Xmonad za sve moje potrebe.</p>
<p>Instalacija na Ubuntuu je poprilično jednostavna: <code>sudo apt-get install xmonad</code> instalira najosnovnije potrebne pakete, a da bi povukli sve pakete koji su potrebni za konfiguraciju sličnu mojoj, instalirajte sljedeće: <code>xmonad</code>, <code>libghc6-xmonad-contrib-dev</code>, <code>libghc6-xmonad-dev</code> i <code>dzen2</code>.</p>
<p>Samo pokretanje se može izvršiti na više načina, a onaj kojeg ja koristim je jednostavni one-liner u .xsessionu (<code>echo xmonad &gt; .xsession</code>) i odabir &#8216;Run Xclient script&#8217; prilikom logiranja u GDM-u. Ostali načini su opisani u odličnoj <a href="http://xmonad.org/documentation.html">dokumentaciji</a>. Prije samog Xmonada, dodatno pokrenem i <code>gnome-settings-daemon</code> (treba dodati <code>gnome-settings-daemon &amp;</code> na početak .xsession datoteke), da bi mi GTK aplikacije izgledale prema mojim GNOME postavkama (jer inače izgledaju ružno :)).</p>
<p>Prvi susret nije najugodniji &#8211; dočeka vas apsolutno prazan ekran, a miš ne odgovara ni na što drugo osim micanja po ekranu. Kombinacija <code>ALT+Shift+Enter</code> otvara terminal, a ukoliko ste instalirali dzen2, <code>ALT+P</code> će vam otvoriti <code>dmenu</code>, vrlo jednostavan i minimalističan launcher. Tipkanjem prvih par znakova imena aplikacije (npr. &#8216;fire&#8217; za Firefox) i pritiskom na Enter nakon odabira pokrećete aplikaciju.</p>
<p><a rel="lightbox" href="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-pidgin.png"><img class="size-medium wp-image-104" style="margin-left: 5px;" title="xmonad-pidgin" src="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-pidgin-300x187.png" alt="Pidgin, IM klijent za GNU/Linux, na odvojenom virtualnom desktopu u Xmonadu" width="300" height="187" align="right" /></a> Kombinacijom <code>ALT+1</code> do <code>ALT+9</code> se prebacujete između devet virtualnih desktopa. Ukoliko otvorite više od jednog prozora na jednom virtualnom desktopu (npr. dva prozora Firefoxa), vidjet ćete stvarnu moć Xmonada&#8211;automatski dijeli prozore za maksimalnu iskoristivost desktopa. Između raznih tiling algoritama se prebacujete kombinacijom ALT+Space. Ostale kombinacije tipki za raznoraznu manipulaciju prozorima su opisane u kratkom i informativnom Xmonad <a href="http://xmonad.org/tour.html">tutorialu</a>.</p>
<p>Samo prilagođavanje Xmonada se vrši preko datoteke ~/.xmonad/xmonad.hs koja je obična Haskell source datoteka. Poznavanje Haskella za konfiguraciju nije potrebno, s obzirom da na službenim stranicama ima <a href="http://haskell.org/haskellwiki/Xmonad/Config_archive">nekoliko primjera</a> raznih konfiguracija koje nije teško prilagoditi vlastitim potrebama. Nakon editiranja xmonad.hs datoteke, dovoljno je pritisnuti ALT+q za reload konfiguracije bez resetiranja Xmonada.</p>
<p>S obzirom da Xmonad sam po sebi nema nikakvog status bara, nije moguće saznati na kojem ste  virtualnom desktopu i koji prozor gledate. Ovo posljednje je posebno neugodno, budući da po defaultu ne vidite tzv. ukrase za prozore (tj. title bar). U Xmonadu su uobičajena dva status bara: dzen2 (kojeg ste već vjerojatno instalirali radi dmenu launchera) i Xmobar. U trenutku konfiguracije, dzen2 mi je bio lagano prekompleksan za proučavanje, pa sam odabrao Xmobar koji mi služi sasvim dobro. U Ubuntu repozitorijima ga nema, pa ćete ga morati kompajlirati sami&#8211;potreban vam je Haskell kompajler (GHC je u repozitorijima) i Xmobar source kojeg, zajedno s uputama, možete naći na <a href="http://code.haskell.org/%7Earossato/xmobar/">službenim stranicama</a>.</p>
<p>Moja konfiguracija se nalazi <a href="http://nikola.plejic.com/dotfiles/xmonad.hs">ovdje</a>&#8211;ono što je drugačije od defaultne je:</p>
<ul>
<li>Remapiranje &#8216;modifier&#8217; tipke (po defaultu gore spominjani ALT) u Win tipku, da bi se izbjegli konflikti s drugim aplikacijama koje koriste slične shortcute.</li>
<li>Firefox, Gnome-Terminal, Pidgin, Rhythmbox, Liferea (RSS reader) i Nautilus se otvaraju na za to predviđenim virtualnim desktopima, koji su adekvatno preimenovani za tu svrhu.</li>
<li>Xmobar, vrlo jednostavan i konfigurabilan status bar, se pokreće zajedno s Xmonadom i uzima informacije o virtualnim desktopima, imenu trenutnog prozora i tiling algoritmu. Također, nevezano uz Xmonad, pokazuje trenutno zauzeće memorije, procesorskog vremena, stanje baterije i mreže te datum i vrijeme. Moja konfiguracijska datoteka se nalazi <a href="http://nikola.plejic.com/dotfiles/.xmobar">ovdje</a>.</li>
<li>Print screen tipka pokreće <a href="http://linuxbrit.co.uk/scrot/">scrot</a>, mali programčić za uzimanje screenshotova.</li>
<li>Win+CTRL+X otvara Xmonadov launcher koji je vizualno ugodniji od dzenovog.</li>
</ul>
<p><a rel="lightbox" href="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-gvim.png"><img class="size-medium wp-image-108" style="text-align: center;" title="xmonad-gvim" src="http://nikola.plejic.com/blog/wp-content/uploads/2008/12/xmonad-gvim-300x187.png" alt="GVim u Xmonadu s Gnome-Terminalom" width="300" height="187" align="left" /></a> Ukoliko vam nedostaje panel i popis prozora koje trenutno imate otvorene, možete koristiti Gnome-Panel ili instalirati neki alternativni. Pokretanje panela je analogno pokretanju gnome-settings-daemona, opisanog gore.</p>
<p>Vrijedi napomenuti da Xmonad odlično radi u kombinaciji s <a href="http://vimperator.org/trac/wiki/Vimperator">Vimperatorom</a>, pluginom koji Firefox pretvara u browser koji se ponaša i funkcionira kao i svima omiljeni editor Vim. Vimperator dodatno smanjuje potrebu za korištenjem miša, što ovisno o vašoj volji za navikavanjem, može ubrzati rad s browserom.</p>
<p>Xmonad, a i tiling window manageri općenito, definitivno nisu za svakoga&#8211;niti izgledaju pretjerano lijepo, niti imaju jednostavan learning curve&#8211;no Xmonad svoj posao radi odlično i nevjerojatno stabilno i brzo. Svakako isprobati.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/xmonad-recept-za-produktivno-radno-okruzenje-na-gnulinuxu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creative Commons knjige o informatici i programiranju</title>
		<link>http://nikola.plejic.com/blog/creative-commons-knjige-o-informatici-i-programiranju/</link>
		<comments>http://nikola.plejic.com/blog/creative-commons-knjige-o-informatici-i-programiranju/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 10:34:45 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[funkcionalno programiranje]]></category>
		<category><![CDATA[knjige]]></category>
		<category><![CDATA[programiranje]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=56</guid>
		<description><![CDATA[Na internetu je moguće pronaći mnoštvo tutoriala o širokom spektru tema iz informatike, no rijetko što može zamijeniti dobru knjigu. S druge strane, knjige mogu biti (pre)skupe i vrlo teško dostupne, pogotovo ako nemate luksuz posjedovanja kreditne kartice za online kupovinu. Zahvaljujući dobroj volji autora (i izdavača), neke su od knjiga koje se smatraju klasicima [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p>Na internetu je moguće pronaći mnoštvo tutoriala o širokom spektru tema iz informatike, no rijetko što može zamijeniti dobru knjigu. S druge strane, knjige mogu biti (pre)skupe i vrlo teško dostupne, pogotovo ako nemate luksuz posjedovanja kreditne kartice za online kupovinu.</p>
<p>Zahvaljujući dobroj volji autora (i izdavača), neke su od knjiga koje se smatraju klasicima literature iz područja informatike i programiranja dostupne besplatno, a ponekad i pod vrlo liberalnim licencama. Donosim tri takve: dvije <em>hardcore</em> programerske i jednu pravno-filozofsku.<span id="more-56"></span></p>
<h3><a href="http://mitpress.mit.edu/sicp/full-text/book/book.html">Abelson &amp; Sussman: Structure and Interpretation of Computer Programs</a></h3>
<p>Tzv. <em>wizard book</em> (po čarobnjaku na naslovnoj stranici) je definitivno jedan od <em>the</em> udžbenika iz programiranja po kojemu su uvodne kolegije iz programiranja učile generacije na <a href="http://www.mit.edu/">MIT</a>-ju. Koristeći Scheme (dijalekt Lispa), objašnjava temeljne koncepte iz računalnih znanosti, npr. apstrakciju i rekurziju.</p>
<p>U <a href="http://nikola.plejic.com/blog/linkdump-funkcionalno-programiranje-u-pythonu-uvod-u-haskell/">jednom</a> od prethodnih linkdumpova sam objavio i link na video zapise Abelsonovih i Sussmanovih predavanja koja, nažalost, slijede prvo izdanje knjige. Autori napominju da će predavanja biti korisna i vlasnicima drugog izdanja.</p>
<p>Knjiga je objavljena pod <a href="http://creativecommons.org/licenses/by-nc/3.0/">Creative Commons Attribution-Noncommercial 3.0</a> licencom, čime je dopušteno nesmetano modificiranje i distribuiranje rada za nekomercijalnu uporabu, uz navođenje izvornih autora.</p>
<h3><a href="http://thinking-forth.sourceforge.net/">Leo Brodie: Thinking Forth</a></h3>
<p>Još jedna knjiga koja se smatra klasikom—možda u manjoj mjeri od prethodne, što vjerojatno duguje opskurnijem jeziku za kojeg je napisana. No, principi koje objašnjava su univerzalni i neki od njih su nedavno ponovno otkriveni u tzv. eXtreme Programming paradigmi.</p>
<p>Podnaslov knjige je <em>A Language and Philosophy for Solving Problems</em>, i bavi se upravo time—dizajnom, analizom i implementacijom rješenja problema. Uz smiješne ilustracije i puno humora, vrlo detaljno opisuje razvoj programa, ali i neke stvari koje se u ovakvoj knjizi ne očekuju, npr. odnos s klijentima.</p>
<p>Knjiga je skenirana, OCR-ana, obrađena u LaTeXu i objavljena pod <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">Creative Commons Attribution-Noncommercial-Share Alike 2.0</a> licencom.</p>
<h3><a href="http://www.free-culture.cc/freecontent/">Lawrence Lessig: Free Culture</a></h3>
<p>Iako nije direktno povezana s programiranjem, s informatikom definitivno jest. Lawrence Lessig je jedan od osnivača <a href="http://creativecommons.org/">Creative Commonsa</a>, organizacije koja je &#8216;izmislila&#8217; licence pod kojima su gore navedene knjige izdane.</p>
<p>U ovoj se knjizi Lessig bavi copyrightom, intelektualnim vlasništvom i ostalim stvarima za koje nas &#8216;digitalno doba&#8217; tjera na razmišljanje i redefiniranje. Dostupna je pod <a href="http://creativecommons.org/licenses/by-nc/1.0/">Creative Commons Attribution-Noncommercial 1.0</a> licencom.</p>
<p>Ove tri knjige bi vas u svakom slučaju trebale držati zauzetim neko vrijeme. Ukoliko sam propustio neku vrijednu spomena, svakako mi javite u komentarima.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/creative-commons-knjige-o-informatici-i-programiranju/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zašto neki developeri misle da su pametniji od drugih</title>
		<link>http://nikola.plejic.com/blog/zasto-neki-developeri-misle-da-su-pametniji-od-drugih/</link>
		<comments>http://nikola.plejic.com/blog/zasto-neki-developeri-misle-da-su-pametniji-od-drugih/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 08:01:22 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[edukacija]]></category>
		<category><![CDATA[programiranje]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=25</guid>
		<description><![CDATA[Relativno sam nedavno na Redditu pronašao interesantan dokument pod nazivom Programmer Competency Matrix. Par dana nakon toga sam se ponovno sjetio dotičnog i &#8211; zaboravivši link &#8211; krenuo u potragu na Googleu. Usput sam naletio na nekoliko članaka na blogovima koji komentiraju tablicu, od kojih mi je jedan posebno zapeo za oko. Autor, naime, opravdava [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p>Relativno sam nedavno na Redditu pronašao interesantan dokument pod nazivom <a href="http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm">Programmer Competency Matrix</a>. Par dana nakon toga sam se ponovno sjetio dotičnog i &#8211; zaboravivši link &#8211; krenuo u potragu na Googleu. Usput sam naletio na nekoliko članaka na blogovima koji komentiraju tablicu, od kojih mi je <a href="http://gadgetopia.com/post/6452">jedan</a> posebno zapeo za oko.<span id="more-25"></span></p>
<p>Autor, naime, opravdava svoj nezadovoljavajući uspjeh na &#8220;testu&#8221; činjenicom da je on web developer, dok je tablica dizajnirana za <em>čiste programere</em>. Ne ulazeći u semantiku pojma &#8220;čisti programer&#8221; (koja mi nikako nije jasna), stav članka me izrazito iznenadio. Imam osjećaj kao da autor smatra da je njegovo neznanje sasvim prirodno i opravdano samo zato jer se on bavi &#8211; webom.</p>
<p>Zadnji put kad sam ja provjeravao, svi smo mi pisali <strong>programe</strong>. I web i offline aplikacije ovise o gotovo identičnim resursima &#8211; obje koriste CPU vrijeme, memoriju i prostor na disku. I u web aplikacijama se podaci mogu provlačiti kroz kompleksne algoritme kod kojih je itekako bitna potrošnja tih resursa.</p>
<p>Svakako, neke od stvari navedenih u tablici nisu <em>neophodne</em> prosječnom web developeru. Čemu onda sve to? Dublje (teorijsko) poznavanje područja kojim se bavite nerijetko nagrađuje mnogim stvarima koje možete primijeniti u praksi i razumijevanjem stvari koje već primjenjujete. Uostalom, <a href="http://www.joelonsoftware.com/">Joel</a> je o potrebi poznavanja low-level stvari pisao već <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">nekoliko</a> <a href="http://www.joelonsoftware.com/articles/fog0000000319.html">puta</a> i sve to objasnio puno bolje od mene.</p>
<p>U proteklih tjedan-dva sam pročitao nekoliko <a href="http://itmanagement.earthweb.com/entdev/article.php/11070_3761921_1">članaka</a> u kojima se na web development gleda s visoka, kao na manje vrijedan dio programiranja (link samo na jedan jer sam ostale zaboravio bookmarkirati &#8211; tko prati <a href="http://www.reddit.com/">Reddit</a> i <a href="http://www.dzone.com/">DZone</a> će se sigurno sjetiti još pokojeg). Stavovi slični onima u gore navedenom postu autorima tih članaka sigurno nisu odmogli u formiranju takvog mišljenja.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/zasto-neki-developeri-misle-da-su-pametniji-od-drugih/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Programiranje i informatika &#8211; Je li fakultet potreban?</title>
		<link>http://nikola.plejic.com/blog/programiranje-i-informatika-je-li-fakultet-potreban/</link>
		<comments>http://nikola.plejic.com/blog/programiranje-i-informatika-je-li-fakultet-potreban/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 12:40:36 +0000</pubDate>
		<dc:creator>Nikola Plejić</dc:creator>
				<category><![CDATA[(Web) Development]]></category>
		<category><![CDATA[fakultet]]></category>
		<category><![CDATA[obrazovanje]]></category>
		<category><![CDATA[programiranje]]></category>

		<guid isPermaLink="false">http://nikola.plejic.com/blog/?p=6</guid>
		<description><![CDATA[U posljednje vrijeme po raznim forumima relativno često naletim na thread gdje mladi (budući) developeri razmišljaju o odabiru srednje škole ili fakulteta. S obzirom da nerijetko dobivam takva pitanja od svojih poznanika, a u sličnoj situaciji sam nedavno bio i sam, imao sam prilike dugo i intenzivno razmišljati o toj temi. Prosječan razgovor s dotičnom [...]

<h3>Povezani postovi:</h3>
Nema povezanih postova.]]></description>
			<content:encoded><![CDATA[<p>U posljednje vrijeme po raznim forumima relativno često naletim na thread gdje mladi (budući) developeri razmišljaju o odabiru srednje škole ili fakulteta. S obzirom da nerijetko dobivam takva pitanja od svojih poznanika, a u sličnoj situaciji sam nedavno bio i sam, imao sam prilike dugo i intenzivno razmišljati o toj temi. Prosječan razgovor s dotičnom žrtvom sada izgleda nekako ovako.<span id="more-6"></span></p>
<h3>Želite li programirati?</h3>
<p><img class="alignright size-medium wp-image-8" style="float: right;" title="sxc_progfaksevi02" src="http://nikola.plejic.com/blog/wp-content/uploads/2008/07/sxc_progfaksevi02.jpg" alt="" width="250" height="188" />Prvo što savjetujem svima je da dobro razmisle je li programiranje nešto s čime se žele baviti do kraja života. Programiranje može biti vrlo zabavno, no pojam zabave jednog četrnaestogodišnjaka i dvadesetpetogodišnjaka zasigurno nije identičan.</p>
<p>Naravno, očekivati od osnovnoškolca (pa čak i ponekog maturanta) da pokuša zamisliti bi li ga/ju dotični posao ispunjavao u srednjim godinama je nerealno, ali svatko s malo iskustva u ovom području mu/joj može dati okvirnu sliku nekakvog prosječnog posla u IT sektoru.</p>
<h3>Fakultet možda nije bitan, ali&#8230;</h3>
<p>Nadalje, naglasim da formalno obrazovanje u ovom području ljudske djelatnosti na kraju krajeva i nije toliko bitno. Profil ljudi koje sam imao prilike upoznati, a koji se profesionalno bave webom i programiranjem općenito je impresivno raznolik: tu ima sociologa, matematičara, fizičara, fitness trenera, filozofa, informatologa, elektrotehničara (visokog i srednjeg stupnja obrazovanja), ekonoma&#8230;</p>
<p>U biti, puno je lakše navesti struke koje nisam susreo tijekom proteklih nekoliko godina &#8211; veterinari mi prvi padaju napamet, ali sam siguran da ćete me ubrzo razuvjeriti.</p>
<p>Nakon početnog šoka &#8220;pa u biti taj fakultet ti baš i nije tol&#8217;ko bitan&#8221; stavom, ravnotežu u svemiru održi činjenica da je, bez obzira na faks, potrebno uložiti puno (ovo obično izrazito naglasim i popratim grotesknim gestama čime pokušavam naglasiti koliko je puno to &#8220;puno&#8221;) <em>ex privata diligentia</em> rada na vlastitom skupu vještina koji, naravno, ovisi u području u koje se predmet ove rasprave želi usmjeriti (web, desktop, znanost&#8230;).</p>
<h3>Hrvatski fakulteti za programere</h3>
<p>Oni koji prežive do ovog trenutka i ustraju u razgovoru, ovdje obično zahtijevaju neku konačnu preporuku srednje škole ili fakulteta, unatoč mom silnom trudu da konačni odgovor izbjegnem i &#8220;brigo moja prijeđi na drugoga&#8221; metodom taj savjet prepustim nekome drugom.</p>
<p>Što se srednje škole tiče, tu obično preporučim neku gimnaziju &#8211; ne nužno prirodoslovno-matematičku, iako ta jest najprirodnije usmjerenje u ovom slučaju. Gimnazija, koliko god nepraktična bila, ipak koliko-toliko drži ljude podalje od nekog fah-idiotizma i fah-elitizma, a nudi dovoljno prostora za manevriranje i ako se početno usmjerenje promaši.</p>
<p>Moj izbor fakulteta je sljedeći, i to ovim redoslijedom:</p>
<ol>
<li><a href="http://www.math.hr/Default.aspx?art=2011&amp;sec=297">Matematika i računarstvo</a> na <a href="http://www.math.hr/Default.aspx">Matematičkom odjelu</a> <a href="http://www.pmf.hr/">Prirodoslovno-matematičkog fakulteta</a> u Zagrebu</li>
<li><a href="http://www.fer.hr/diplomski_studij/rac">Računarstvo</a> na <a href="http://www.fer.hr/">Fakultetu elektrotehnike i računarstva</a> u Zagrebu (kroz neki od ponuđenih profila)</li>
<li><a href="http://www.foi.hr/studiji/ipi.html">Informacijsko i programsko inženjerstvo</a> na <a href="http://www.foi.hr/index.html">Fakultetu organizacije i informatike</a> u Varaždinu</li>
<li><a href="http://informatika.tvz.hr/">Informatika</a> na <a href="http://www.tvz.hr/">Tehničkom veleučilištu</a> u Zagrebu</li>
</ol>
<p>N.B. da su svi gornji studiji, izuzev zadnjeg, diplomski (onih +2 u 3+2 &#8220;bolonjskom&#8221; sustavu). Prijedlozi pod brojevima 2, 3 i 4 su poprilično očiti i vjerujem da ih ne treba dodatno pojašnjavati. To je ono što otprilike svatko tko dođe po savjet želi čuti, i ono što sam zna.</p>
<p>Na prvi navedeni prijedlog se većina zgnuša, ili ga šutke zanemari. No, nakon dvije godine na PMF-u (doduše, na <a href="http://www.phy.hr/">drugom odsjeku</a>) smatram da je to fakultet koji može oblikovati stvarno kvalitetnog developera.</p>
<p>Program na Matematičkom odsjeku mi se čini jako kvalitetnim, a stečeno znanje matematike je nešto što se nikako ne smije podcijeniti. Također, matematika je osnova svih informacijskih znanosti i poznavanje te (subjektivno, predivne) znanosti osobi koja se planira baviti programiranjem nikako neće biti na odmet.</p>
<h3>﻿<span style="font-size: small;">Koju srednju školu / fakultet odabrati?</span></h3>
<p><img class="alignleft alignnone size-medium wp-image-7" style="float: left;" title="sxc_progfaksevi01" src="http://nikola.plejic.com/blog/wp-content/uploads/2008/07/sxc_progfaksevi01.jpg" alt="" width="250" height="214" />Odabir dobre srednje škole i fakulteta je svakako nešto što budućem developeru može pomoći, no nikako nije presudno. U zadnje vrijeme sam svjedok sve većem broju ljudi koji su inače jako dobri u ovom području, a biraju srednje škole i fakultete koji nisu nužno vezani uz informatiku.</p>
<p>Razloga je mnogo &#8211; neki od njih stvarno žele graditi karijeru u nekom drugom području, neke izrazito zanima &#8220;taj drugi&#8221; fakultet i smatraju da i uz to mogu ostati konkurentni kao developeri, neki žele imati plan B u slučaju da im se ovaj posao zgadi, propadne i sl.</p>
<p>Iz moje perspektive, to nikako nije loša praksa. Činjenica je da, i uz fakultet vezan uz informacijske znanosti, treba mnogo raditi na vlastitom skillsetu; ja još čekam na obrazovnu ustanovu koja će osobu pripremiti na situacije s kojima se prosječan developer svakodnevno susreće u &#8220;stvarnom svijetu&#8221;.</p>
<h3>Iz komentara</h3>
<p>Komentatori su mi skrenuli pozornost na dva članka koja se bave sličnom problematikom. Jedan je članak <a href="http://www.softwave.info/">Berislava Lopca</a>, pod nazivom <a href="http://www.softwave.info/business/kodiranje-i-obrazovanje/">Kodiranje i obrazovanje</a>, a drugi <a href="http://snaxors.com/blog">Tonija Aničića</a> <a href="http://snaxors.com/blog/koji-fakultet-skolu-tecaj-da-zavrsim-ako-zelim-raditi-web-stranice/">Koji fakultet / školu / tečaj da završim ako želim raditi web stranice?</a>. Oba su popraćena interesantnim raspravama koje svakako vrijedi pročitati.</p>
<p>Ukoliko vas programiranje toliko ne zanima i više ste marketinški tip, Mario Frančešević donosi <a href="http://www.seekandhit.com/blog/opcenito/koja-znanja-treba-imati-internet-marketing-strucnjak/">pregled vještina</a> koje osoba koja se planira baviti internet marketingom. Mario je u komentarima također poslao link na interesantan članak iz Wall Street Journala pod nazivom <a href="http://online.wsj.com/article/SB121858688764535107.html?mod=rss_Today%27s_Most_Popular">For Most People, College Is a Waste of Time</a>.</p>
<p>Također, u <a href="http://nikola.plejic.com/blog/programiranje-i-informatika-je-li-fakultet-potreban/#comments">komentarima</a> možete pročitati i iskustva nekih ljudi koji su kroz fakultet (ili njegov nedostatak) već prošli, pa skoknite do tamo, pročitajte što kažu i pridružite se raspravi.</p>


<h3>Povezani postovi:</h3><p>Nema povezanih postova.</p>]]></content:encoded>
			<wfw:commentRss>http://nikola.plejic.com/blog/programiranje-i-informatika-je-li-fakultet-potreban/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.324 seconds -->

