Posts

Showing posts from September, 2010

Vreme je za Linux

Godinama ranije su izlazili tekstovi koji su se pitali da li je ovo godina linux-a ili predviđali da će naredna to biti. I svi su omašili :) Iako isključivo koristim linux već godinama mogu reći da je pitanje godine linux-a stvar prošlosti. Linux je tu među nama i više nije nikakav stranac kog čekamo da se pojavi. Pogledajte IT oglase. Uopšte nije neuobičajeno da se u njima kao jedna od stavki pominje i linux. Web programiranje je usko vezano s njim. Uz programiranje na java platformi često ide linux. Android se ne može zamisliti bez njega. Kad se doda iPhone i Mac OSX, deca Unix-a nikad nisu bila bliža nama. U narednih mesec dana očekuju nas dve velike premijere. Prvo 10.10.'10. izlazili Ubuntu i drugari u verziji 10.10 :) I ne samo da se igra na foru poklapanja datuma i verzije, nego kad se verzija pročita binarno dobija se čista desetka! Taman kad se uhodamo sa Ubuntom a ono već početkom novembra pojaviće se drugi linux div: Fedora 14. Šta nam donosi novi Ubuntu

The state of Java

Stephen Colebourne je u tekstu The next big JVM language izneo nekoliko vrlo zanimljivih opaski i ideja. Prvo se kritički osvrće na javu i nabraja šta u njoj ne valja i na osnovu toga postavlja kriterijume za savršeni JVM jezik. Potom prolazi kroz sve nove JVM jezike i ocenjuje ih na osnovu postavljenih kriterijuma. Na kraju zaključuje da ni jedan jezik ne zadovoljava sve kriterijume. To ga dovodi do ideje da ne treba tražiti novi jezik već popraviti samu javu. Tolika popravka bi svakako značila raskid kompatibilnosti sa ranijim kodom. Ali Colebourne predlaže upotrebu konvertora koda, nešto što je već primenjeno u Pythonu :) Jedna od njegovih kritka jave su Exception klase koje ne nasleđuju RuntimeException (tzv. checked exceptions). U tekstu Checked exceptions dalje razrađuje tezu U vezi sa ovim je i tekst For those naysayers who say Java will be dead… , u kojem se tvrdi Java will be the money-maker for cloud computing over the next few years. i to pokazuje najnovijom pohva

Bazno o bazama

Objašnjenje u slici, reči i tabelama šta su indeksi, čemu služe i kako da znamo na koju kolonu da ih postavimo u tekstu: An Absolute Beginner’s Introduction to Database Indexes Na istom blogu se nalazi i objašnjenje šta je B-tree indeks pomenut u prethodnom postu: A Simple Explanation on How B-Tree Database Indexes Work Pisao sam o korišćenju connection pool-a u Tomcat-u. U toku razvoja se vrlo često mesto Tomcat-a koristi Jetty, a kako se u njemu koristi connection pool i kako se podešava možete pročitati na: http://docs.codehaus.org/display/JETTY/DataSource+Examples Pošto se Jetty uglavnom korisiti u Maven-u preko plugin-a, pročitajte kako da podesite DataSource za tu priliku: http://java.dzone.com/articles/jetty-maven-plugin-running Šta se dešava sa db transakcijama ako se bazi ne pristupa direktno JDBC-om već preko JPA u tekstu Transactions in a JPA World

U slavu naše profesije

Peter Denning u tekstu The Great Principles of Computing koji je napisan za American Scientist razmatra mesto i ulogu računarstva i infromatike. Njegova misao je da infromatika i računarstvo može predstavljati jednu od četiri osnovne oblasti nauke: Computing may be the fourth great domain of science along with the physical, life and social sciences Zato budimo ponosni na našu profesiju :) 12 stvari koje svaki programer treba da zna, brzo, kratko i tačno: Ovo pokazuje kako naša profesija nije ni malo naivna ;)

Projektni obrasci i principi

John Lindquist je došao na genijalnu ideju kako da objasni projeknte obrasce (design patterns) preko screencasta. Upotrebio je analogiju sa igricom StarCraft da pokaže razlog za upotrebu obrazaca. Potom je u screencastu krenuo da rešava razlog na klasičan način i time ukaže na problem, a potom nudi rešenje u obrascu. Fantastično očigledno. Ovo bi trebalo emitovati na Projektovanju softvera na FON-u :) Za sada je opisao 5 obrazaca: http://johnlindquist.blogspot.com/search/label/design%20patterns Kad smo kod obrazaca, evo jednog prostog a vrlo korisnog, pri tom nije toliko poznat jer ne pripada grupi GOF pattern-a: Null object pattern Dobar sajt sa opisom GOF obrazaca kao i projektnih principa na kojima svi obrasci počivaju: http://www.oodesign.com/

Vim - imperator

Pročitao sam jedan izuzetan tekst o Vim editoru. Do tada sam razmišljao o njemu kao arhaičnom editoru iz doba monohromatskih monitora i rada iz konzole, te da je za editovanje bolje koristiti editor sa GUI-om (moja višegodišnja pretraga za dobrim editorom se završila sa jEdit-om ). A ako je potrebno nešto editovati iz konzole tu je MC, nano i joe editor. Izgleda da je uz vežbu moguće jako produktivno koristiti vim editor, daleko produktivnije nego druge koji se koriste mišom, eventualno sa par shortcutova i prolaskom kroz menije preko mnemonika sa tastature. Podešavanjem i instaliranjem dodataka može se svašta uraditi sa Vim-om. Pri tom se troši malo resursa (za razliku od jEdita :)) a stabilnost garantuje to što se Vim razvija skoro 20 godina! Naravno, editor je samo editor. IDE će za neke zadatke ipak biti daleko lakše za korišćenje. No znanje rada sa Vim-om i tu se može iskoristiti. Jer svaki dobri IDE i editor mora da ima Vim mode. Tako je u Eclipse, NetBeans, IDEA, čak i jEdit

Ćirilični slobodni fontovi

Image
Ako vam se čini da nema dovoljno lepih ćiriličnih fontova ili vam je dosadilo da se naša slova p i t u kurzivu ćirilicom ispisuju kao ruska, postoji rešenje! Poslužite se sa 8 naših ćiriličnih fontova koja su potpuno slobodni za korišćenje: Resavska BG Resavska BG Sans Adamant BG Neoplanta BG Lovely BG ПЛАТАН БГ Ниоки БГ Адамант Санс БГ Fontovi su tesitrani na mom linuxu uveženi u OpenType obliku

Tekstovi o skalabilnosti

Stonebraker pionir u razvoju relacionih sistema za upravljanje bazama podataka priča o novinama u polju njegovog rada i o svom novom sistemu kojeg predstavlja kao postrelacioni. Želja mu je da dobije prednosti NoSQL baza a da ne žrtvuje ACID. SciDB: Relational daddy answers Google, Hadoop, NoSQL Malo NoSQL igrarija: Cassandra cluster in a single machine with Ubuntu and VirtualBox Applying Scalability Patterns to Infrastructure Architecture Nešto iz Google kuhinje: Sibyl - Lage scale machine learning NoSQL sistem za upravljanje bazama dokumenata. Learning Mongodb

Blogeri studentima

Predavanja koja povezuje maksima „Open source pristup znanju“ održaće se u oktobru, novembru i decembru. Predavaće Dragan Varagić, Bogdan Kecman, Goran Rakić, Milan Stojanov, Nebojša Radović - Eniac, Stefan Jocić i Istok Pavlović. Organizator ovog događaja je FONIS – udruženje studenata informatike FON-a . Više o predavačima i rasporedu predavanja na: http://b2s.fonis.rs/#b2shome

IT vestii

J2EE transactions explained Oracle set to merge Java virtual machines Why Android Is Stealing Share from iOS Drools JBoss Rules 5.0: Complex Event Processing Ten Things I Hate About Object-Oriented Programming Bilo je i komentara ovih linkova, ali je glupi blogspot to pojeo...

IT vesti

PostgreSQL korača krupnim koracima napred. Posle verzije 8.3 u kojoj je značajno unapređena brzina, verzije 8.4 koja je donela windowing funkcije i neke uobičajene operacije na tabelama pretvorene u izraze, predstojeće verzije 9.0 sa Straming Replication i Hot Standby već je krenulo da se radi na verziji 9.1: PostgreSQL 9.1 Alpha Arrives Ahead of 9.0 GA Nadam se da će ove promene i poboljšanja uz Oracle-ovo preuzimanje MySQL-a doprineti većoj popularnosti ovog sjajnog rdbms. Tekst iz oblasti IT menadžmenta, napisan iz teorije i prakse, a zanimljiv u pristupu i povezivanju sa radovima japanskih stručnjaka iz organizacije u Toyota fabrici (čuveni Šigeo Šingo koji je jednom gostovao na Fakultetu organizocionh nauka): The Seven Wastes of Software Development Mark Reinhold, glavnokomandujući razvojnog tima java platforme u Oracle, objavio je na svom blogu da će doći do odlaganja u planovima za izdavanje JDK u verziji 7. U tekstu se navode 2 mogućnosti: prva da se izdavanje 7. verzije pomer

Scalability udruženje

Grupa entuzijasta, koji vole da rešavaju aktuelne probleme u softverskoj industriji, okupila se na sajtu http://scalability.rs/ . Kao što se iz imena može pretpostaviti najveći deo tema kojim se bave proizilazi iz rešavanja problema obrade ogromne količine podataka u uslovima ograničenih resursa: vremena, procesora, memorije... Scalability grupa je već održala 3 susreta. Možete na blog sekciji sajta videti šta ste propustili, a da se to ne bi više dešavalo prijavite se na mailing listu .

Reddit oglas sa zagonetkom :)

Reddit , sajt za postavljanje linkova ka zanimljivim vestima (vrsta social bookmarking Web 2.0 aplikacije), je objavio vrlo zanimljiv oglas za prijem novih stručnjaka. U oglasu se traži da kandidat za posao reši par izuzetnih mozgalica od kojih je najveća dokaz P = ili != NP. Više o problemu na http://en.wikipedia.org/wiki/P%3DNP A kao šlag na tortu dolazi mail na koji treba poslati CV. On je zadat u vidu zadatka! Pa hajmo ga rešiti :) Adresa konkursa: http://blog.reddit.com/2010/08/reddit-is-hiring.html

DevProTalk roštilj - IT professionals meets[sic] BBQ

Internet forum DevProTalk organizuje susret (čitaj roštilj i pivo) ove subote (11. sep.) od 10 sati na Adi Ciganliji mesto za roštilj kod restorana Oaza. Više o susretu na: http://www.devprotalk.com/t9082-devprotalk-rotilj--it-professionals-meets-bbq.html

Tomcat connection pooling

Dobavljanje konekcije je skupo. Pravljenje globalne konekcije je loše rešenje u uslovima kad postoji više niti (npr. u web aplikaciji) jer se po jednoj konekciji obavlja jedna transakcija, što znači da ako više niti deli istu konekciju one će sa conn.commit() i conn.rollback() da smetaju međusobno. Rešenje je da se ima Connection Pool da kad se zahteva konekcija da se ne prvi novi objekat, a kad se povozove conn.close() da se konekcija ne zatvori već se vrati u pool i reciklira. Tomcat ima ugrađenu podršku za poolove. U webapp/WEB-INF/web.xml (webapp ako je projekat pravljen pomoću Maven -a) fajlu se definiše resurs preko sledećeg taga: <resource-ref> <res-ref-name>jdbc/bankDataSource</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> Ovde se definiše ime resursa, njegov tip i da će autentifikaciju obaviti servlet container (tomcat) Zatim se u webapp/META-INF/context.xml

JPA2/Hibernate kao fil na torti ili kao temelj kuće

JPA je Java persistence API, zvanični standard (ili kako ga oni zovu specifikacija) za objektno-relaciono mapiranje u Javi. Deo je JEE 5 specifikacije iako se može koristiti i u običnoj javi (JSE). Kao svaki standard JPA je tu da uvede red među različitim specifičnim ORM bibliotekama i pruži jedinstven način za rad s njima na dobrobit programera koji sad mogu na isti način da rade sa Hibernate i sa TopLink ORM biblotekama. Prva JPA verzija kao deo JEE 5 je bila prilično siromašna u mogućnostima. Od svih velikih ORM biblioteka uzeto je samo ono što je zajedničko, najveći zajednički sadržalac. Uz JEE6 6 je izašlo drugo izdanje JPA standarda a već je implementiran u Hibernate 3.5+ i EclipseLink 2.0+ (bivšem TopLinku). Nova verzija je donela dosta novina ali i par razočarenja (o tome više u nekom drugom postu). E sad da pokažemo kako nam JPA preko Hibernate (JPA/Hibernate) može pomoći. Nastavljam se na prethodni post. Pokazao sam kako se treba aplikacija podeliti u slojeve i kako se

Staleži u java svetu

Image
Htedoh dati naslov Klasne podele u java svetu u smislu podele na slojeve kako smo učili iz istorije da je svako društvo bilo podeljeno, ali reč klasa ima posebno značenje u programiranju. Čitajući jednu dobru knjigu po prvi put sam video kako se na moderan način vrši raslojavanje programa u nivoe i čime se programeri pomažu da bi to raslojavanje uradili na najbolji način. Svi smo učili da savremena softverska arhitektura podrazumeva najmanje 3 sloja: korisnički interfejs sloj poslovne logike DB orijentisani sloj U praksi se sve klase sistema dele u 4 kategorije: Klase domenskog sloja koje predstavljaju objekte i veze izmađu objekate u poslovnom domenu (npr. u bankarstvu bi to bili računi, korisnici...). Te klase ne treba da znaju ništa o klasama drugih slojeva. Tako da npr. klasa Kupac ne treba da zna ništa o tome kako će se ona predstaviti korisniku sistema (kao web, swing, konzolno i kako u okviru tih mogućnosti). Takođe ne treba da zna kako će se čuvati u bazi niti kako će se koris