<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8138694</id><updated>2012-02-16T13:23:17.243+01:00</updated><category term='firefox'/><category term='hack'/><category term='tools'/><category term='javascript'/><category term='java'/><category term='Free SMS'/><category term='web 2.0'/><category term='ajax'/><category term='programming'/><category term='prevodilac'/><category term='firebug'/><category term='games'/><category term='fun'/><category term='metak.com'/><category term='google'/><title type='text'>Damjanov blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8138694.post-7003981009844958479</id><published>2007-07-30T03:32:00.000+02:00</published><updated>2007-07-30T03:30:32.181+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Dynamic generation of  javascript code</title><content type='html'>One of the biggest problems for every developer/software architect is the level of generalization/specialization of their code.&lt;br /&gt;If the code is more coupled to the problem , it solves the problem better, but when the problem changes it is harder to change the code. And the oposite .. when the code is more abstract it is easier to change it, but then (generally speaking) the solution is not so good (as it could be in first case).&lt;br /&gt;&lt;br /&gt;I am not going to write about the right level of abstraction, because I don’t know it :)&lt;br /&gt;Instead, I am going to write about javascript and some of its interesting features.&lt;br /&gt;&lt;br /&gt;Assume that we have the following problem:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;We need to write a function that calculates the sum of first n integers.&lt;/span&gt;&lt;br /&gt;The first solution that would probably come to everyone’s mind would be the classic for loop that loops from 1 to n and adds value of the counter to some variable..&lt;br /&gt;It could be written as:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function getSum1(n)&lt;br /&gt;{&lt;br /&gt;var s = 0;&lt;br /&gt;for(var i = 1; i &amp;lt;= n; i++)&lt;br /&gt;s += i;&lt;br /&gt;return s;&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is, of course, totally correct solution, but is it the best one?&lt;br /&gt;Well, it solves the problem.. and is flexible enough to calculate the sum for every given integer.. so, it probably is the best.&lt;br /&gt;But!&lt;br /&gt;What if we know the number that will be passed to the function before it is called?&lt;br /&gt;If so, it would be better if we wrote the function like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function getSum2()&lt;br /&gt;{&lt;br /&gt; return 1+2+3+4+5+6+7+8+9+10; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It would be much faster than the first one.&lt;br /&gt;But, as the beginning of this post says.. it is not flexible. It solves the problem, but it is very coupled to it, so when the problem changes (the number n) it is useless.&lt;br /&gt;We have 2 solutions. Which is better? Well, it depends on the fact how many times  is function going to be called with the same parameter, and the importance of the execution speed.&lt;br /&gt;&lt;br /&gt;I wrote some tests that can be found &lt;a href="http://tomdam.googlepages.com/javascript_test.html"&gt;here&lt;/a&gt;.&lt;br /&gt;There are functions that calculate sum of  the first 100 integers, and are called 100000 times.&lt;br /&gt;&lt;br /&gt;First one calls the function with the &lt;b&gt;classic for loop&lt;/b&gt; (getSum1):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var howManyTimes = 100000;&lt;br /&gt;timeStart = new Date();&lt;br /&gt;for (var i = 0; i&amp;lt;howManyTimes; i++)&lt;br /&gt;{&lt;br /&gt; result = getSum1(100);&lt;br /&gt;}&lt;br /&gt;timeStop = new Date();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It then prints duration and the result.&lt;br /&gt;&lt;br /&gt;The second test calls the function that generates the code for getSum2 function. After generating , the code is evaluated using the &lt;b&gt;eval function&lt;/b&gt; (so the new function is created dynamically):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function createFunction1(val,functName)&lt;br /&gt;{&lt;br /&gt;   var code = "function "+functName+"\n{ \n return 0";&lt;br /&gt;   for (var i=1; i&amp;lt;=val;i++)&lt;br /&gt;       code+="+"+i;  &lt;br /&gt;   code += "; \n }";  &lt;br /&gt;   return code;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;timeStart = new Date();  &lt;br /&gt;&lt;b&gt;var code = createFunction1(100,"getSum2()");&lt;br /&gt;eval(code);&lt;/b&gt;&lt;br /&gt;for (var i = 0; i&amp;lt;howManyTimes; i++)&lt;br /&gt;{&lt;br /&gt;   result = getSum2();&lt;br /&gt;}&lt;br /&gt;timeStop = new Date();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that it also prints duration and the result.&lt;br /&gt;And finally the third test generates the function using javascript &lt;b&gt;Function object&lt;/b&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function createFunction2(val)&lt;br /&gt;{&lt;br /&gt;   var code = " return 0";&lt;br /&gt;   for (var i=1; i&amp;lt;=val;i++)&lt;br /&gt;       code+="+"+i;  &lt;br /&gt;   code += ";";  &lt;br /&gt;   return code;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;timeStart = new Date();  &lt;br /&gt;&lt;b&gt;var code = createFunction2(100);&lt;br /&gt;var getSum3 = new Function(code);&lt;/b&gt;&lt;br /&gt;for (var i = 0; i&amp;lt;howManyTimes; i++)&lt;br /&gt;{&lt;br /&gt;   result = getSum3();&lt;br /&gt;}&lt;br /&gt;timeStop = new Date();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can see the results of the tests if you run the test file in your browser.&lt;br /&gt;My average results are:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;In firefox:   getSum1 ~ 4900ms&lt;br /&gt;  getSum2 ~ 550ms&lt;br /&gt;  getSum3 ~ 450ms&lt;br /&gt;In IE6:   getSum1 ~ 4800ms&lt;br /&gt;  getSum2 ~ 840ms&lt;br /&gt;  getSum3 ~ 740ms&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After all this you can say… ok, this is fine, but.. is there any chance that we can use this in real world, in something more complex than the sum of n numbers?&lt;br /&gt;Well, there might be.&lt;br /&gt;Some of today’s most popular java and .NET frameworks (Spring, Spring.NET) use dynamic code generation in their AOP libraries.&lt;br /&gt;&lt;br /&gt;I think that in near future some applications could have &amp;quot;smart execution controllers&amp;quot; that would know whether to call an abstract code or to generate concrete code and call it. Especially in applications where performance (speed) is bottle neck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-7003981009844958479?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/7003981009844958479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=7003981009844958479' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/7003981009844958479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/7003981009844958479'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2007/07/dynamic-generation-of-javascript-code.html' title='Dynamic generation of  javascript code'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-1523946269851733671</id><published>2007-07-27T01:05:00.000+02:00</published><updated>2007-07-27T14:57:17.866+02:00</updated><title type='text'>Trick Google Calendar and send free SMS!</title><content type='html'>You have probably heard about google calendar's option for sending free SMS notifications about your calendar events. &lt;br /&gt;Some time ago, while playing with &lt;a href="http://code.google.com/apis/gdata/calendar.html"&gt;google-calendar-data-api&lt;/a&gt; , I got an idea to write a program that would allow its users to send sms for free.&lt;br /&gt;Sender and recipient both must have their google calendar account.&lt;br /&gt;Recipient MUST set up her/his account for receiving SMS messages(This can be done in google calendar in "Settings-&gt;Mobile Setup") and then for receiving SMS notifications (in "Settings-&gt;Calendars-&gt;Notifications" check the "New invitations: SMS" checkbox).&lt;br /&gt;&lt;br /&gt;So, how it works..&lt;br /&gt;When a sender wants to send sms, she/he enters the text of the message and email address(es) of the recipient(s). Then the program, using google-calendar-data-api, tricks google calendar by creating an event (with no body, just the subject (text of the message)) and invites recipient(s) to that event (by sending the event notification to all email addresses user entered).&lt;br /&gt;&lt;br /&gt;After that, the google calendar account of every recipient informs her/him about the event she/he is invited to by sending the sms notification which contains the event's subject.&lt;br /&gt;&lt;br /&gt;And that is it. &lt;br /&gt;Google Calendar becomes the free sms service  :)&lt;br /&gt;&lt;br /&gt;Of course there are some limitations.&lt;br /&gt;Anyone can receive up to 20 messages per day, up to 150 per month. (Number of messages the user can send is unlimited)&lt;br /&gt;The format of the message is: "SENDER'S NAME invites you to: MESSAGE TEXT @time and date"&lt;br /&gt;The sms is sent by google, so my program can't do anything to format it. &lt;br /&gt;The number of the characters for MESSAGE TEXT depends on the length of sender's name.&lt;br /&gt;There are about 60 characters available in my case.&lt;br /&gt;If your text contains more than that number, the program will split the text and create as much the events as necessary and send several sms messages.&lt;br /&gt;&lt;br /&gt;The program (written in java) can be downloaded from &lt;a href="http://tomdam.googlepages.com/freesmssender.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;note:&lt;br /&gt;You can't send sms to yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-1523946269851733671?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/1523946269851733671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=1523946269851733671' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/1523946269851733671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/1523946269851733671'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/12/trick-google-calendar-and-send-free-sms.html' title='Trick Google Calendar and send free SMS!'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-2955239260994134728</id><published>2007-02-16T10:32:00.000+01:00</published><updated>2007-02-16T10:51:36.422+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>alat:firebug - žrtva: google calendar</title><content type='html'>Kada sam pre nekog vremena napisao programčić za besplatno slanje SMS poruka korišćenjem Google Calendar-ovog servisa za SMS notifikacije, mnogim ljudima se svidela ideja i hteli su da probaju kako radi program, ali kada su se ulogovali na svoj Google Calendar i pokušali da ga podese dočekalo ih je neprijatno iznenađenje. Srbije nije bilo u spisku podržanih zemalja.&lt;br /&gt;U razgovoru sa &lt;a target="_blank" href="http://www.insaned.net/"&gt;Ivanom&lt;/a&gt; i još nekim ljudima zaključio sam da, verovatno zbog skorašnjeg raskida Srbije i Crne Gore ekipa koja održava Google Calendar baš tih dana razdvaja i podatke o zemljama iz bivše zajednice. Međutim, izgleda da im mnogo treba za jednu tako prostu operaciju :)&lt;br /&gt;&lt;br /&gt;U međuvremenu sam, igravši se sa Firebug extenzijom za Firefox, došao na ideju da probam da prevarim GCalendar, da iako Srbije nema na spisku pokušam da je na silu ubacim i registrujem broj za slanje SMS poruka. Kolega sa posla mi je pomogao, ustupivši mi svoj nalog na kome nije imao registrovane SMS notifikacije.&lt;br /&gt;Uspeli smo iz prve :)&lt;br /&gt;Pokazalo se da i svemoćni google ponekad nešto zaboravi, tj. da su promenili podatke na serveru, ali da nisu update-ovali korisnički interface.&lt;br /&gt;&lt;br /&gt;Za one koji žele da urade istu stvar sledi malo uputstvo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Instalirajte Firefox (ukoliko ga imate pređite na sledeći korak)&lt;/li&gt;&lt;li&gt;Instalirajte &lt;a target="_blank" href="https://addons.mozilla.org/firefox/1843/%20"&gt; Firebug&lt;/a&gt; add-on za Firefox&lt;/li&gt;&lt;li&gt;Ulogujte se na svoj Google calendar i otvorite Settings-&gt;Notifications&lt;/li&gt;&lt;li&gt;Aktivirajte firebug.&lt;/li&gt;&lt;li&gt;U firebug-u kliknite na dugme Inspect i potom na listu zemalja koja se nalazi na otvorenoj   Notifications stranici&lt;br /&gt;Time u firebug-u dobijate označen HTML kod tačne lokacije te liste (HTML select tag)&lt;/li&gt;&lt;li&gt;U firebug-u u select tag-u pronađite bilo koju zemlju (npr. Andorra , ona je među prvima na spisku) i izmenite polje value. Umesto AD (Andorra) stavite RS (Republika Srbija) i pritisnite Enter.&lt;br /&gt;Time ste završili sa firebug-om.&lt;/li&gt;&lt;li&gt;Sada u spisku zemalja na stranici odaberite Andoru, u polje za unos broja telefona unesite svoj broj telefona (+3816...) i kliknite na dugme Send verification code.&lt;/li&gt;&lt;li&gt;Kada vam na telefon stigne SMS sa kodom ukucajte ga u polje Verification code i kliknite Finish setup.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Time je vaše hakovanje uspelo :)&lt;br /&gt;Sad možete da koristite Google Calendar-ov servis za slanje SMS poruka.&lt;br /&gt;&lt;br /&gt;Ukoliko želite da probate gore pomenuti programčić uputstvo možete naći &lt;a href="http://damjan.blogspot.com/2006/12/besplatan-sms.html"&gt;ovde&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-2955239260994134728?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/2955239260994134728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=2955239260994134728' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/2955239260994134728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/2955239260994134728'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2007/02/alatfirebug-rtva-google-calendar.html' title='alat:firebug - žrtva: google calendar'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-4875802389620369798</id><published>2007-02-10T01:21:00.001+01:00</published><updated>2008-04-22T16:32:25.664+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='prevodilac'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='metak.com'/><title type='text'>prevodjenje reči sa dva klika</title><content type='html'>Ukoliko često koristite internet i čitate sajtove na engleskom verovatno vam se dosta puta desi da vam zatreba rečnik. Meni se desi.&lt;br /&gt;Kod mene je do sada situacija bila takva da na brzinu kopiram reč za koju mi treba prevod, otvorim u novom tab-u &lt;a href="http://www.metak.com"&gt;www.metak.com&lt;/a&gt;, paste-ujem reč i sačekam malo dok dobijem prevod.&lt;br /&gt;U principu, i to mi je bilo prihvatljivo jer imam brze prste...&lt;br /&gt;&lt;br /&gt;Pre par dana mi je pala na pamet ideja da napravim nešto, uz pomoć čega biste , dok se nalazite &lt;span style="font-weight:bold;"&gt;na bilo kom&lt;/span&gt; sajtu mogli sa dva klika da prevedete željenu reč. Bez otvaranja dodatnih strana i kucanja bilo čega.&lt;br /&gt;I posle malo mučenja to mi je pošlo za rukom.&lt;br /&gt;&lt;br /&gt;Napisao sam greasemonkey skriptu koja, kada na bilo kojoj stranici, bilo kog sajta duplo kliknete na neku reč i selektujete je, uzme tu reč, izvrši upit na &lt;a href="http://www.metak.com"&gt;www.metak.com&lt;/a&gt; i prikaže vam rezultat (prevod te reči).&lt;br /&gt;Ova skripta će mnoogo ubrzati moje surfovanje, kao i surfovanje svih ljudi koji je budu koristili.&lt;br /&gt;&lt;br /&gt;Uputstvo za instalaciju:&lt;br /&gt;1.Instalirajte &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Mozilla FireFox&lt;/a&gt; (ukoliko ga imate predjite na korak 2)&lt;br /&gt;2.Instalirajte greasemonkey Add-on za Firefox. Možete ga naći na &lt;a href="https://addons.mozilla.org/firefox/748/"&gt;ovoj adresi&lt;/a&gt;&lt;br /&gt;3.Instalirajte skriptu za prevodjenje. Skriptu možete naći &lt;a class="snap_nopreview"   href="http://damjantomic.net/projects/translator/metakprevodilac.user.js"&gt;ovde&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;I to je to. Na prvoj stranici koju otvorite posle instalacije skripte moći ćete, duplim klikom na bilo koju reč istu i da prevedete sa engleskog na srpski ili srpskog na engleski.&lt;br /&gt;&lt;br /&gt;Voleo bih da čujem utiske.&lt;br /&gt;Inače imam još neke idejice u glavi.. pa će uskoro biti još novosti :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-4875802389620369798?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/4875802389620369798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=4875802389620369798' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/4875802389620369798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/4875802389620369798'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2007/02/prevodjenje-rei-sa-dva-klika.html' title='prevodjenje reči sa dva klika'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-3054816020407261527</id><published>2007-01-24T11:14:00.000+01:00</published><updated>2007-01-24T11:15:56.994+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>cool javascript</title><content type='html'>Otvorite bilo koji sajt (npr. www.google.com) i u address bar svog browser-a ukucajte&lt;br /&gt;javascript:document.body.contentEditable='true'; document.designMode='on'; void 0&lt;br /&gt;(ili prosto kliknite na ovaj &lt;a href="javascript:document.body.contentEditable='true'; document.designMode='on'; void 0"&gt;link&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Pošto to uradite moći ćete u browser-u da menjate sadržaj otvorene stranice :)&lt;br /&gt;&lt;br /&gt;Na istu foru radi i sledeći script. &lt;br /&gt;Otvorite neku stranicu sa više slika (npr. http://www.b92.net/sport/) i u adress bar ukucajte:&lt;br /&gt;javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0); &lt;br /&gt;&lt;br /&gt;(ili &lt;a href="javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0); "&gt;link&lt;/a&gt;) i posmatrajte sta se desava :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-3054816020407261527?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/3054816020407261527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=3054816020407261527' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/3054816020407261527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/3054816020407261527'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2007/01/cool-javascript.html' title='cool javascript'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-137566406126084328</id><published>2006-12-24T03:38:00.000+01:00</published><updated>2006-12-24T04:26:28.003+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Free SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Besplatan SMS!</title><content type='html'>Pre par meseci sam otkrio da google calendar ima opciju za besplatno slanje SMS notifikacija. Može se podesiti da šalje SMS kao podsetnik za događaj iz kalendara ili kao obaveštenje da vas je neko pozvao da prisustvujete nekom događaju.&lt;br /&gt;Ova opcija me je baš obradovala, naročito kad sam video da među zemljama koje su podržane za slanje SMS poruka ima i Srbija.&lt;br /&gt;Nešto posle ovog otkrića sam naleteo na &lt;a href="http://code.google.com/apis/gdata/calendar.html"&gt;google-calendar-data-api&lt;/a&gt;. Pomoću tog API-ja možete napisati aplikaciju za pristupanje google calendar-u. Za igranje sa događajima. Za &lt;span style="font-weight:bold;"&gt;dodavanje&lt;/span&gt;, brisanje, pregled i sl.&lt;br /&gt;Čim sam video na ovaj api, sinula mi je ideja da možda mogu napisati aplikaciju koja će, koristeći isti i gore pomenutu opciju google calendara da služi za besplatno slanje SMSova. I posle malo eksperimentisanja uspeo sam (u nekoj meri) u tome.&lt;br /&gt;Aplikaciju možete preuzeti &lt;a href="http://tomdam.googlepages.com/FreeSMSSender.zip"&gt;ovde&lt;/a&gt;.&lt;br /&gt;Da biste je mogli koristiti potrebno je da uradite par stvari.&lt;br /&gt;Za slanje poruka potrebno je da imate GMail nalog i kreiran google calendar. &lt;br /&gt;Da biste mogli da primate poruke, potrebno je u podešavanjima google calendar-a da ostavite vaš broj telefona i otkačite opciju za slanje SMS notifikacije za "New invitations".&lt;br /&gt;Što se tiče broja poruka koje mogu da se prime, google ga je ograničio na max 20 dnevno, odnosno 150 mesečno po jednom nalogu. Možete poslati beskonačno mnogo poruka.&lt;br /&gt;Format poruke je malo problematičan, jer ne može iz aplikacije da se utiče na njega. Pošto google šalje poruku ona je oblika: "Damjan Tomic invites you to: TEKST VASE PORUKE @vreme i datum"  (ako sa mog naloga nekom šaljem), što znači da ne može svih 160 karaktera da se iskoristi za tekst poruke. Veličina zavisi od duzine imena i prezimena onoga ko šalje poruku. Ja sam stavio da default veličina poruke bude 60 karaktera, ali to svako može promeniti u aplikaciji u zavisnosti od dužine imena i prezimena. Ukoliko je poruka koju želite poslati veća od pomenute dužine, program će je izdeliti na više manjih poruka.&lt;br /&gt;Aplikacija je trenutno u verziji 1.0 :) tako da nema neke od realno potrebnih opcija, kao što su snimanje podešavanja ili spiska kontakata. To će nadam se uskoro biti ubačeno.&lt;br /&gt;&lt;br /&gt;Aplikacija je pisana u javi. Potrebno je da imate jre 5.0 na vašem računaru. Ukoliko nemate, možete je skinuti &lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;odavde&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source će uskoro biti postavljen na http://gnu.fon.bg.ac.yu/subversion/ pa će svako ko želi moći da se igra sa ovim.&lt;br /&gt;&lt;br /&gt;Očekujem komentare sa utiscima i novim predlozima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-137566406126084328?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/137566406126084328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=137566406126084328' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/137566406126084328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/137566406126084328'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/12/besplatan-sms.html' title='Besplatan SMS!'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-115892836538020815</id><published>2006-09-22T14:19:00.000+02:00</published><updated>2006-10-24T15:08:04.940+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>bez alata nema zanata : aptana - The Web IDE</title><content type='html'>Oduvek  su me narodne poslovice oduševljavale.&lt;br /&gt;Toliko mudrosti u samo par reči! Mudrosti koja traje večno. Mudrosti koja može da se primeni na veliki broj problema sa kojima se ljudi sreću, bez obzira na trenutak u kome se ljudi i problemi nalaze.&lt;br /&gt;Iako znam da su te poslovice primenljive na dosta situacija iz prostog razloga što su jako apstraktne, ta rima im nekako daje dušu i čini ih večnim.&lt;br /&gt;Elem.&lt;br /&gt;Verovatno Vam se desilo da treba da pišete neki JavaScript kood.&lt;br /&gt;U principu bilo ko, ko je ikada pravio neku web stranicu imao je potrebu da napiše, ako ništa drugo onda nekakav validator za unos e-maila i sl. U takvim situacijama za pisanje tog JavaScripta se naravno koristi okruženje u kome pravite i ostatak sajta.. dreamweaver, zend, visual studio, notepad... I to je OK.&lt;br /&gt;Ali šta sa situacijom kada stranica treba da ima dosta klijentskog kooda. Dosta ~ 1000 linija ili nekoliko hiljada linija..!? Tada dolazi do izražaja činjenica da ni jedno od pomenutih okruženja nema dobru podršku za pisanje JavaScripta.&lt;br /&gt;Nekako mi se čini da su svi ti alati , pošto su pravljeni za html + php,asp,jsp...(ili šta već) , JavaScript shvatili kao nužno zlo, i pravili samo neke osnovne stvari vezane za to nužno zlo...&lt;br /&gt;&lt;br /&gt;Sa razvojem Web 2.0 priče naglo je porasla potreba za okruženjem koje je &lt;span style="font-weight: bold;"&gt;napravljeno za JavaScript&lt;/span&gt;. Moram priznati da sam se oduševio kada sam naleteo na &lt;a href="http://www.aptana.com/"&gt;Aptana&lt;/a&gt;-u.&lt;br /&gt;To je IDE zasnovan na Eclipse platformi. Postoji standalone varijanta, kao i plugin za Eclipse, ukoliko ga već imate na računaru.&lt;br /&gt;Ne bih sada da nabrajam opcije koje poseduje Aptana, jer postoji dokumentacija na zvaničnom sajtu, samo bih napomenuo da ima jako dobar &lt;span style="font-weight: bold;"&gt;Code Assist&lt;/span&gt; ili &lt;span style="font-weight: bold;"&gt;Intelli Sense &lt;/span&gt;(ako tako neko više voli ;) )&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.aptana.com/images/code_assist.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.aptana.com/images/code_assist.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neke od stvari koje uskoro planiraju da dodaju okruženju su:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internationalization&lt;/li&gt;&lt;li&gt;PHP Colorizing  &lt;/li&gt;&lt;li&gt;PHP Code Assist  &lt;/li&gt;&lt;li&gt;JavaScript Debugging  &lt;/li&gt;&lt;li&gt;Refactoring&lt;/li&gt;&lt;li&gt;....&lt;/li&gt;&lt;/ul&gt;Sve u svemu, ozbiljno preporučujem da probate Aptana-u, jer će Vam sigurno uštedeti dosta vremena u radu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-115892836538020815?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/115892836538020815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=115892836538020815' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/115892836538020815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/115892836538020815'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/09/bez-alata-nema-zanata-aptana-web-ide.html' title='bez alata nema zanata : aptana - The Web IDE'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-115139348931046365</id><published>2006-06-27T09:26:00.000+02:00</published><updated>2006-12-24T02:36:09.031+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>sudoku</title><content type='html'>&lt;p&gt;&lt;br /&gt;Verovatno ste svi čuli za igru Sudoku.&lt;br /&gt;Pravila su vrlo jednostavna:&lt;br /&gt;Dobijete matricu dimenzija 9x9, koja je dodatno izdeljena na 9 manjih matrica (3x3), u neka polja su upisani brojevi od 1 do 9 i vi treba da popunite celu matricu tako da se u svakom redu i koloni, ali i u unutrašnjoj matrici od 3 x 3 polja, nađu brojevi od 1 do 9, pri čemu se oni ne smeju ponavljati.&lt;br /&gt;Jedan nemački matematičar izračunao je da je ukupan broj kombinacija u ovoj igri 6.670.903.752.021.072.936.960, što, kako negde pročitah, odgovara broju mikrona do najbliže zvezde.&lt;br /&gt;Više o igri naravno možete pročitati na: &lt;a href="http://en.wikipedia.org/wiki/Sudoku"&gt;http://en.wikipedia.org/wiki/Sudoku&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Imao sam priliku da se igram malo sa ovim, i ono što sam napravio možete videti &lt;a href="http://tomdam.googlepages.com/sudoku"&gt;ovde&lt;/a&gt;.&lt;br /&gt;U pitanju je JAVA aplet koji rešava bilo koji sudoku zadatak (koji ima rešenje, naravno). Ukoliko ima više rešenja, prikazaće prvo na koje naiđe.&lt;br /&gt;Što se algoritma tiče, program prvo pokušava da na "pametan" način dođe do rešenja, znači gleda da li je vrednost nekog polja očigledna, zatim za sva ostala polja računa kandidate za vrednosti, pa na osnovu pravila (da u 1 vrsti, koloni ili maloj matrici svi elementi moraju biti različiti) poljima koja imaju samo 1 kandidata fiksira vrednost. I to se tako vrti dok ne dođe do trenutka u kome sva ne rešena polja imaju više kandidata, tako da ne postoji način da se utvrdi koje vrednosti treba fiksirati.&lt;br /&gt;U tom trenutku u priču se uključuje backtracking algoritam, koji rekurzivno pokušava da pronađe prave vrednosti.&lt;br /&gt;On radi tako što uzme prvo ne rešeno polje i fiksira mu prvog kandidata, zatim za takvu matricu pokušava da nadje rešenje. Ukoliko u nekom trenutku, posle primene svih gore pomenutih pravila bilo koje ne rešeno polje ostane bez kandidata, to je signal da nešto ne valja, i rekurzivna funkcija se vraća nazad i uzima prvog sledećeg kandidata.&lt;br /&gt;Ukoliko neko želi, okačiću source , pa da ga zajedno prodiskutujemo. (naravno, pošto nisam koristio nikakav obfuscator, oni sa malo više znanja mogu i sami da vide source :))&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-115139348931046365?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/115139348931046365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=115139348931046365' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/115139348931046365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/115139348931046365'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/06/sudoku.html' title='sudoku'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-114998215903989613</id><published>2006-06-11T00:40:00.000+02:00</published><updated>2006-10-24T15:02:27.936+02:00</updated><title type='text'>world cup</title><content type='html'>Počelo je!&lt;br /&gt;Sećam se Italije '90... To je bilo moje prvo svetsko prvenstvo. Imao sam 8 godina i toliko sam upijao utakmice da se i danas sećam dosta detalja..&lt;br /&gt;Prošli smo grupu... Mateus nam zagorčao život, al ipak Kolumbija i Emirati nisu toliko jaki..&lt;br /&gt;Onda Španija... Dva predivna gola Piksija Stojkovića... Ne sećam se da sam posle ikad video da je neki naš igrač dao lepše golove od tih.&lt;br /&gt;Onda Argentina. I čuveni penali. Šta reći.. Valjda nismo imali sreće. Nisu ni Argentinci u finalu protiv Švaba. A mnogo bi bilo da jesu :) . Penal im je došao glave.&lt;br /&gt;&lt;br /&gt;Ameriku '94 pamtim po Bebetu i Romariju i naravno po Robertu Bađu i čuvenom promašenom penalu u finalu. I ništa više. Valjda zbog toga što je bio rat, pa su mi sećanja iz tog perioda malo čudna..&lt;br /&gt;&lt;br /&gt;Onda dolazi Francuska '98.&lt;br /&gt;Gledao sam sve utakmice do polufinala. I onda se razbolim. Dobijem mononukleozu i završim u bolnici. A tamo nema televizora. Aaaaaaaaaa. Strašno. Sećam se da sam pitao doktora kad je ujutru došao da me obiđe.. i da mi je rekao za Francuze. Bilo mi je žao Brazila. Njih sam oduvek voleo. Naši standardno dobri :) Mijatova prečka iz  penala i gol Davidsa u 93 minutu su bili dovoljni za povratak kući.&lt;br /&gt;&lt;br /&gt;Koreje i Japana '02 skoro da se i ne sećam.. Znam se da su Senegalci dobili Francuze, da su Korejanci daleko dogurali, Turci isto, da su Brazilci dobili Švabe u finalu i da je Ronaldo bio najbolji. i to je to.&lt;br /&gt;&lt;br /&gt;I sada konačno Nemačka '06. Lepo je počelo. Od 7 utakmica gledao sam 4 cele, ostale po malo. Od naših očekujem da pobede Holandiju sutra. Ako njih ne dobijemo mislim da nemamo šta da tražimo dalje. Realno smo bolji. Sa Argentinom će biti gusto, ako izvučemo remi biće ok. Obale Slonovače se najviše bojim. Jesu izgubili danas od Argentine, ali su pokazali da znaju jaako dobro da igraju.&lt;br /&gt;Drago mi je da ovaj put nemamo neke velike zvezde u timu kao ranije. Čini mi se da su momci složni. Da znaju da igraju su pokazali u kvalifikacijama. Sad je samo bitno da budu hladnih glava. Bez ikakvog straha da udju u duele. I sve će doći na svoje mesto. Petko je strašan lik. Verujem u njega da ih je dobro pripremio.&lt;br /&gt;&lt;br /&gt;I jedan link za kraj :)&lt;br /&gt;&lt;a href="http://www.largestonlinestadium.com/fan/damjan"&gt;http://www.largestonlinestadium.com/fan/damjan&lt;/a&gt;&lt;br /&gt;oduvek su me kreativni ljudi oduševljavali. Likovi koji su pravili ovaj sajt su mnoogo dobri. Svaka im čast.&lt;br /&gt;&lt;br /&gt;Pridružite se ljudi. Da navijamo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-114998215903989613?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/114998215903989613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=114998215903989613' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114998215903989613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114998215903989613'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/06/world-cup.html' title='world cup'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-114963672513587064</id><published>2006-06-07T00:41:00.000+02:00</published><updated>2006-10-24T15:31:11.149+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>google - web office</title><content type='html'>&lt;div style="text-align: left;"&gt;Google nastavlja svoj put unapred.&lt;br /&gt;&lt;/div&gt;Nova stvarčica iz njihove kuhinje se nalazi na &lt;a href="http://spreadsheets.google.com/"&gt;http://spreadsheets.google.com/&lt;/a&gt; . Ne znam da li su se do sada palile crvene alarmne lampe u Redmondu, ali mi se čini da je sad krajnje vreme za to. Kupovinom &lt;a href="http://www.writely.com/"&gt;writely&lt;/a&gt;-a  i izbacivanjem nove gore pomenute  usluge MS dobija žestoku konkurenciju za svoja dva najbolja programa.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.google.com/googlespreadsheets/images/tour3.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 381px; height: 250px;" src="http://www.google.com/googlespreadsheets/images/tour3.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Realno, mogućnosti pomenutih googleovih web usluga teško da mogu da dostignu Word i Excel u nekim zahtevnijim radnjama, ali mislim da će bar 80% korisnika biti potpuno zadovoljno njima. Ja hoću :)&lt;br /&gt;Jedva čekam da vidim šta će biti odgovor ekipe iz Redmonda, mada mi se čini da neće uspeti da odgovore na ovo. Bar ne sa ovoliko različitom filozofijom od one koju fura google. MS, kao tipična kapitalistička firma, ako želi da vlada i u narednih 20 godina, mora polako da menja strategiju. Da se što više otvori. To je, čini mi se, neminovnost.&lt;br /&gt;Postali su jako tromi. Poput svake velike organizacije. Nisu spremni na promene koje se dešavaju mnooogo brzo.&lt;br /&gt;Već 5 godina nisu izbacili novu verziju Internet Explorer-a!!! Sve se svodi na krpljenje postojećih stvari.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-114963672513587064?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/114963672513587064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=114963672513587064' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114963672513587064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114963672513587064'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/06/google-web-office.html' title='google - web office'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-114144660722925089</id><published>2006-03-04T05:25:00.000+01:00</published><updated>2006-10-24T15:05:39.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>ajax revolucija - deo drugi</title><content type='html'>Pošto ljudi, generalno, ne vole baš mnogo nove stvari, bar ne vole da ih probaju na svojoj koži, trebalo je dosta vremena da prođe od pojave IE5.0 koji je prvi ponudio mogućnost korišćenja ajax-a do toga da široke web developerske mase počnu da koriste isti.&lt;br /&gt;&lt;br /&gt;Poslednjih meseci na svim iole posećenijim forumima ili blogovima ljudi koji se bave web developing-om, skoro svaka druga napisana reč je ajax. Naravno kao i u svakoj priči, postoje ljudi koji se oduševljavaju, i oni koji na sve gledaju sa rezervom, zatim oni koji pljuju ove prve, i neki sasvim treći koji uzvraćaju , braneći prve...&lt;br /&gt;Sve u svemu mnogo se priča o ovome. I mislim da je to dobro.&lt;br /&gt;&lt;br /&gt;Kao i posle svake revolucije , web developeri će , ukoliko uvide dobre strane ajax-a, početi da ga upotrebljavaju u svim situacijama. Gde je to moguće i gde je nemoguće, gde je potrebno i gde nije potrebno. Bar je tako do sada bilo sa svim novim stvarima.&lt;br /&gt;Ono što mene lično nervira u ovakvim situacijama, je to što će , iako se zna u ovakvoj klijent-server (web browser – web server) arhitekturi šta treba da budu odgovornosti klijenta, a šta servera da nastane totalna zbrka, u kojoj se ne zna ko šta radi. Kad kažem „da se znaju odgovornosti“, naravno da mislim na postojeće design pattern-e. Kad kažem da će “da nastane zbrka”, naravno da mislim na to da će mnogi ponovo da izmišljaju toplu vodu, i da neće uspeti da je izmisle.&lt;br /&gt;Posledica toga će biti da će više od pola započetih projekata (web aplikacija) opet da propadne, pola ostatka da se završi sa gomilom bug-ova i probijenim terminima, pola preostalog dela ostatka da se završi „uspešno” ... naravno , ne kažem da je do sada situacija u softverskom poslu bila bolja što se izvršenja zadataka tiče, već da to da je spisak tehničkih razloga za propadanje sw projekata verovatno dobio još jednog velikog člana.&lt;br /&gt;&lt;br /&gt;Šta je u stvari problem?&lt;br /&gt;Pa problem je u tome kako naći pravu meru izmedju dve krajnosti. Između toga da se sve dešava na serveru (klijent samo prikazuje &lt;span style="font-weight: bold;"&gt;od jednom&lt;/span&gt; dobijeni sadržaj) i toga da je klijent toliko pametan da zna šta mu treba i kada mu to treba i da se u tim situacijama obrati serveru i zatraži to od njega.&lt;br /&gt;Prva varijanta je ona od koje se krenulo. Ona koja se koristila na početku web priče. Vremenom su se odredjene odgovornosti prebacivale na stranu klijenta. JavaScript je postao idealna stvar za skoro svaku vrstu validacije, kao i za druge klijentske poslove vezane za prikaz sadržaja. Ubrzani rast sposobnosti klijentske strane da obradjuje podatke, vrši validacije, prikazuje podatke, vuče web priču ka gore pomenutoj , drugoj varijanti.&lt;br /&gt;Druga varijanta na prvu loptu zvuči super, ali se u njoj krije dosta toga.&lt;br /&gt;Prvo, ne možete biti sigurni da svaki browser podržava vaš pametni klijentski kood iz onog ili ovog razloga, i drugo, bitnije, je to što ovakav pristup može da dovede do narušavanja osnovnih principa klijent-server arhitekture i da bude uvod u propast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-114144660722925089?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/114144660722925089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=114144660722925089' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114144660722925089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/114144660722925089'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/03/ajax-revolucija-deo-drugi.html' title='ajax revolucija - deo drugi'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8138694.post-113842187676058699</id><published>2006-01-28T04:45:00.000+01:00</published><updated>2007-09-10T22:40:45.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>ajax revolucija!</title><content type='html'>Mnogo prašine se diglo oko stvari zvane AJAX u poslednje vreme. Na žalost ljubitelja fudbalskog kluba iz Amsterdama, ne ponavlja se uspešna serija njihovih ljubimaca iz 60ih i 70ih godina prošlog veka kada su harali evropom na čelu sa našim Veliborom Vasovićem. Iako google na reč "ajax" odgovara sa &lt;a href="http://www.ajax.nl/"&gt;http://www.ajax.nl/&lt;/a&gt; na prvom mestu, jedan drugi ajax opasno preti da potisne holandjane.&lt;br /&gt;Ja lično ne volim mnogo nove reči, tj. ne volim kad ljudi olako daju imena stvarima. Na pitanje drugara "šta je to ajax?" od pre par meseci sam naravno odgovorio sa FC, iako sam pretpostavio da su opet smislili novo ime za staru stvar. I naravno da sam bio u pravu. Ali ovoga puta je to bilo malo drugačije.&lt;br /&gt;Ovaj AJAX je akronim od Asinhroni JavaScript i XML (Asynchronous JavaScript and XML). U stvari to je tehnika kojom se HTML strana koja se nalazi u browseru može osvežiti novim podacima bez osvežavanja cele strane. Ništa novo, rekli bi neki (da li su u pravu!?).&lt;br /&gt;Ovo je moguće ostvariti na dva načina. Prvi je umetanjem u HTML stranu nevidljivog &lt;span style="color: rgb(51, 102, 255);"&gt;iframe &lt;/span&gt;taga u kome bi bila odredjena stranica koja bi se osvežavala posle određenog vremena, i koja bi na onLoad događaj pozivala neku JavaScript funkciju koja bi mogla nešto pametno da uradi.  Svako ko se razume u web programiranje zna da ono što sam napisao u  rečenici iznad iako zvuči prosto i nije baš tako lako izvodljivo.&lt;br /&gt;Druga varijanta je u stvari i ona prava.&lt;br /&gt;Ona se svodi na korišćenje &lt;span style=""&gt;XMLHttpRequest objekta.&lt;br /&gt;Ovaj objekat je po prvi put video svetlo dana kao ActiveX kontrola u verziji &lt;/span&gt;5.0. Microsoft Internet Explorer-a.  Veoma brzo, pošto su uočene izvanredne mogućnosti i ostali browser-i dobijaju podršku za njega.&lt;br /&gt;Trenutno &lt;span style=""&gt;XMLHttpRequest podržavaju svi aktuelni browser-i, bar u novijim verzijama.&lt;br /&gt;&lt;br /&gt;E sad, pitanje je šta je to toliko pametno, važno, dobro, loše, kako god hoćete, vezano za taj &lt;/span&gt;&lt;span style=""&gt;XMLHttpRequest? I zašto su ljudi koji se ne razumeju u fudbal od jednom počeli toliko da pričaju o ajaxu?&lt;br /&gt;Odgovor je, naravno, svima koji su ikada napisali (ili napravili ako više volite) par html strana koje se generišu na serveru pomoću asp-a, php-a, jsp-a ili čega već, jako prost.&lt;br /&gt;Mene interesuje samo jedna stvar. Zašto tek sad?!!!&lt;br /&gt;Zašto nešto tako očigledno korisno nije ranije uvedeno u web priču?&lt;br /&gt;Pa, odgovor je opet vrlo prost. Moralo je da se desi nešto veliko. To "nešto veliko" je google !!!&lt;br /&gt;Google je medju prvima u svim svojim servisima počeo da koristi ajax.&lt;br /&gt;Da li zbog toga što je to &lt;/span&gt;&lt;span style=""&gt;nešto &lt;/span&gt;&lt;span style=""&gt;"novo i fancy"? Sumnjam.&lt;br /&gt;LJudi su, jednostavno, uvideli (kao što mnogi sada uvidjaju) da je, ukoliko želite da sa serverom razmenite malu količinu podataka dovoljno da pošaljete zahtev za tim podacima i dobijete ih, bez ponovnog generisanja kilobajta i kilobajta HTML kooda koji je već na klijentskoj strani.&lt;br /&gt;&lt;br /&gt;Znači standardna priča. Mora neko da bude prvi.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8138694-113842187676058699?l=damjan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damjan.blogspot.com/feeds/113842187676058699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8138694&amp;postID=113842187676058699' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/113842187676058699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8138694/posts/default/113842187676058699'/><link rel='alternate' type='text/html' href='http://damjan.blogspot.com/2006/01/ajax-revolucija.html' title='ajax revolucija!'/><author><name>Damjan</name><uri>http://www.blogger.com/profile/02201297910253584960</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://tomdam.googlepages.com/Damjan_003.jpg'/></author><thr:total>3</thr:total></entry></feed>
