Prije nekoliko dana sam naletio na tweet od Spring Sourcea gdje su dali link na njihov tjedni pregled vijesti: http://www.springsource.org/node/3466
Hrpa korisnih linkova, informacija i ostalog što ti srce poželi. Premda jedan paragraf mi je odvukao pozornost. Spring In Practice - upcoming book! Hmm dali to postoji knjiga o Springu koja je prošla nezamijećena ispod mog radara?!? Nemoguće, ali ipak moguće. Ono što me tješi je da je knjiga još uvijek u nastajanju i da se može nabaviti kao early edition. Hmmm za ovo nikad nisam čuo. Otišao sam na stranice izdavača Manninga da saznam nešto više.
http://www.manning.com/wheeler/
Ono što sam saznao me nadasve oduševilo. Knjiga sadrži 14 poglavlja i sva su više manje gotova. Gledajući poglavlja vidim da je to knjiga koja veoma obećava. Ali još uvijek sam oprezan (ipak iskustvo me naučilo nešto), jer previše knjiga obećava, ali jako mali broj i ispuni obećanja. Zato sam odlučio baciti oko na besplatno poglavlje, za što se treba dati svoju e-mail adresa. Poglavlje je stiglo na mail uz dodatak - kod koji mi odobrava 35% popusta kod kupnje.
Još malo googlanja po netu o recenzijama i odluka je pala. Kupujem knjigu! Na originalnu cijenu od 35.99$ sam odlučio primijeniti svoj popust od 35% i konačna cijena je pala na 23.39$ što je super cijena. Plus kupnjom knjige sam dobio 35% popusta na svoju sljedeću kupnju :)
Pošto je e-knjiga dostupna preko Manning Early Access Programa za sad je dostupna samo e-knjiga i to u tekućem izdanju. Ono što to zapravo znači ako kupite takvu knjigu dobivate ona poglavlja koja su do tada napisana, a kod svake promjene/izmjene/dodavanja novih poglavlja ista automatski dobivate na svoj mail. Spring In Practice ima sva poglavlja manje više završena, ali ipak nedostaje uvod, sadržaj, index... i još neke stitnice. Onoga dana kada knjiga bude završena dobiti ću i gotovu verziju.
A sada ono što me navelo da kupim knjigu, a to je njen sadržaj. Kreće se od neke osnovne web stranice i sa svakim poglavljem se uči nešto novo.
1 Introducing Spring: the dependency injection containe
2 Data persistence, ORM & transactions
3 Building web applications with Spring Web MVC
Part 2 Application Recipes
4 Basic web forms
5 Enhancing Spring MVC applications with Web Flow
6 Authenticating users
7 Authorizing user requests
8 Communicating with users and customers
9 Creating a rich text comment engine
10 Integration testing
11 Product search and image management
12 Building an article delivery engine
13 Enterprise integration
14 Create a Spring-based "site-up" framework
Razlog zbog čeka sam kupio knjigu je zato što je knjiga puna primjera, a ti primjeri nisu tipa "hello world". Pokriven je Hibernate, web forme, validacija, Spring Security, pa čak i Hibernate Search što me jako iznenadilo i razveselilo.
Još jedna stvar me iznimno oduševila, a to je da knjiga ima i svoj forum. Forum održavaju sami autori knjige, pa ako uočite bilo kakvu pogrešku slobodno im javite, a prema onome što sam našao oni uvijek to u najkraćem roku poprave. Čak je netko napisao da zašto je source kod dostupan sa hrpom jar-ova a nije napravljen pomoću Mavena. Zato si je jedan autor dao truda i napravio zavisnosti pomoću Mavena i sav source kod stavio na GitHub (od sada tog autora pratim na GitHubu) tako da ću o svakoj promjeni biti pravovremeno obaviješten.
Jedan zanimljiv detalj je onaj o načinu kojim su se odlučili zaštiti od piratstva. U footeru knjige je otisnuto moje ime i moja e-mail adresa, pa ako bi se netko odlučio podijeliti knjigu vrlo lako bi se pronašao "krivac". Dobar trik, u ovo doba piratstva, ali imajući na umu da sam knjigu platio 23$ dolara potpuno se slažem s njima. Više ćete platiti 2 pizze i sok nego ovu knjigu. A ako je svladate napraviti ćete vrlo veliki korak za svoju karijeru i moći ćete kupiti više pizza :D
Jedino što mi sada preostaje je i pročitati knjigu pa prenijeti cijelu i detaljnu recenziju. Premda imam neki osjećaj da će mi knjiga dati puno materijala za postove.
My personal blog about Java web programming, Spring MVC, Spring framework, Hibernate ORM...
nedjelja, 12. veljače 2012.
ponedjeljak, 6. veljače 2012.
HTTP Status 500 - pa ti pogoditi što je pošlo po krivu?
Upravo sam se igrao sa errorom HTTP Status 500. Naslov koji sam stavio proizlazi iz ovog objašnjenja na webu:
"This is a 'catch-all' error generated by the Web server. Basically something has gone wrong, but the server can not be more specific about the error condition in its response to the client..."
To je prvi rezultat koji je prikazao google, objašnjenje je malo poduže od ovoga, ali ove dve rečenice su mi se urezale u rožnicu! Na svu sreću otklonio sam svoj problem, ali sam išao istražiti što to znači taj status 500. Sva sreća da sam išao tim putem i da tomcat osim statusa 500 ispiše i root cause. Zamislite samo situaciju gdje bi morali naći bug na samo osnovi ovog statusa 500 - vjerojatno netko može, ali to ipak ulazi u kategoriju hard core mazohizma.
Sada da objasnim kako sam se uopće našao u ovoj situaciji. Naime pošto je ovaj petak počela opsada snijegom i nije baš bilo preporučljivo izlaziti u duge šetnje pejzažom, odlučio sam napraviti nešto što sam jako dugo odgađao - instalirati Mac OS na svoj PC. Malo googlanja, malo youtube, malo blogova i wiki i par sati kasnije imao sam verziju 10.6.6. na svom PC-u. Samo mogu reći da sam oduševljen i da mi je žao što ovo nisam prije napravio. Zašto nije padao snijeg tako malo ranije. :D
Šalu na stranu, to sam napravio kako bih proširio svoje znanje. Naime sav svoj development (oko 90%) uvijek radim na Windowsima 7, pa je došlo vrijeme da vidim kako se to radi i na Mac OS. Linux sam probao, Mac je jedini preostao.
Oduševljen sam svime što najnapredniji OS na svijetu nudi. Ali trebalo je instalirati neke stvari koje su mi od iznimne važnosti - MySQL, PosgreSQL, Eclipse, Tomcat...
PostgreSQL i Eclipse dio je odrađen s lakoćom, s MySQL-om sam se malo pomučio. Ali jedno gledanje youtube clipa je sve riješilo. Naime nisam znao da se mora paliti pod System Preferences. Jedini pravi problem i taj problem bi trebao biti pod navodnicima, je bio instalacija Tomcata. Malo truda i malo prčkanja po terminalu je dalo ploda. Još jedna stvar koja postoji za Mac je Tomcat controller, genijalni mali besplatni programičić s kojim se lako pokreće ili stopira tomcat.
Kažu da slika vrijedi 1000 riječi, pa nadam se da je i s ovom tako. Imate 3 gumba koji sami sebe objašnjavaju. Gumb View vas odvodi na http://localhost:8080. Jednostavno i savršeno radi! Obožavam jednostavne stvari, kao npr. program Skitch pomoću koga je i nastao ovaj screen capture. Ali o tom i sličnim programima bez kojih ne znam kako sam do sada živio u nekom drugom postu.
Vrijeme je da se vratim statusu 500. Ovako je izgledao jedan dio:
Pomoću strjelica sam označio neke stvari na koje treba obratiti pozornost kod traženja bugova koji su doveli do errora. Prva strijelica nam govori da nije otvoren session od hiberante, što nam daje do znanja da je problem u ORM dijelu aplikacije a ne sa Spring MVC-om. Druga strjelica nam govori da ne može otvoriti konekciju što me je uvelike dovelo do rješenja. Da bi se konekcija otvorila moramo imati dobar url definiran za JDBC, imati ispravne podatke za username i password te moramo imati napravljenu bazu na MySQL serveru (jer kao što sam već pisao u blogu, Hibernate ne može stvoriti bazu na serveru. Tablicu može ali bazu ne, u protivnom baca exception). Treća i četvrta strjelica potvrđuju prve dvije. Nakon druge mi je bilo jasno u čemu je problem. Aplikaciju sam razvijao na Window 7 gdje mi je MySQL server imao root password, a kod instalacije MySQL na Mac OS-u po defaultu on je nema.
Tako je i bilo. Maknuo sam navedeni password u konfiguraciji hibernatea, napravio Maven build, stavio war na Tomcat i voila, aplikacija radi! Zanimljivo kako mala sitnica može izazvati veliki exception report :)
Mislim da bi si svako toliko trebao napraviti neki namjerni bug tipa ovoga passworda da si istreniram oko u pronalaženju i otklanjanju errora. Naime prije nekoliko dana krenuo sam raditi 2 klase koje ću mapirati pomoću Hibernatea. Istina napravio sam obadvije, ali kada sam krenuo raditi prvu uspio sam staviti samo @Entity anotaciju i ništa više. Zaključio sam da je logičnije da prvo napravim drugu klasu do kraja pa da se onda vratim na prvu, nekakav zakon logike mi je to nalagao. Zaboravio sam uopće na prvu klasu, i smaknuo sam je s uma. Kada sam krenuo pokrenuti aplikaciju dobio sam veliki error report gdje sam morao tražiti i iščitavati sve i svašta. Brza google pretraga mi je dala polovični odgovor, ali mi se onda upalila lampica. Stavio sam @Entity anotaciju a nisam @Id, naime Hiberante ove dve anotacije smatra minimum koji mora postojati u suprotnom baca error. Nevjerojatno kako mala stvar može stvoriti veliki problem ako se ne pazi. Doduše ja to sve smatram dobrim treningom.
"This is a 'catch-all' error generated by the Web server. Basically something has gone wrong, but the server can not be more specific about the error condition in its response to the client..."
To je prvi rezultat koji je prikazao google, objašnjenje je malo poduže od ovoga, ali ove dve rečenice su mi se urezale u rožnicu! Na svu sreću otklonio sam svoj problem, ali sam išao istražiti što to znači taj status 500. Sva sreća da sam išao tim putem i da tomcat osim statusa 500 ispiše i root cause. Zamislite samo situaciju gdje bi morali naći bug na samo osnovi ovog statusa 500 - vjerojatno netko može, ali to ipak ulazi u kategoriju hard core mazohizma.
Sada da objasnim kako sam se uopće našao u ovoj situaciji. Naime pošto je ovaj petak počela opsada snijegom i nije baš bilo preporučljivo izlaziti u duge šetnje pejzažom, odlučio sam napraviti nešto što sam jako dugo odgađao - instalirati Mac OS na svoj PC. Malo googlanja, malo youtube, malo blogova i wiki i par sati kasnije imao sam verziju 10.6.6. na svom PC-u. Samo mogu reći da sam oduševljen i da mi je žao što ovo nisam prije napravio. Zašto nije padao snijeg tako malo ranije. :D
Šalu na stranu, to sam napravio kako bih proširio svoje znanje. Naime sav svoj development (oko 90%) uvijek radim na Windowsima 7, pa je došlo vrijeme da vidim kako se to radi i na Mac OS. Linux sam probao, Mac je jedini preostao.
Oduševljen sam svime što najnapredniji OS na svijetu nudi. Ali trebalo je instalirati neke stvari koje su mi od iznimne važnosti - MySQL, PosgreSQL, Eclipse, Tomcat...
PostgreSQL i Eclipse dio je odrađen s lakoćom, s MySQL-om sam se malo pomučio. Ali jedno gledanje youtube clipa je sve riješilo. Naime nisam znao da se mora paliti pod System Preferences. Jedini pravi problem i taj problem bi trebao biti pod navodnicima, je bio instalacija Tomcata. Malo truda i malo prčkanja po terminalu je dalo ploda. Još jedna stvar koja postoji za Mac je Tomcat controller, genijalni mali besplatni programičić s kojim se lako pokreće ili stopira tomcat.
Kažu da slika vrijedi 1000 riječi, pa nadam se da je i s ovom tako. Imate 3 gumba koji sami sebe objašnjavaju. Gumb View vas odvodi na http://localhost:8080. Jednostavno i savršeno radi! Obožavam jednostavne stvari, kao npr. program Skitch pomoću koga je i nastao ovaj screen capture. Ali o tom i sličnim programima bez kojih ne znam kako sam do sada živio u nekom drugom postu.
Vrijeme je da se vratim statusu 500. Ovako je izgledao jedan dio:
Pomoću strjelica sam označio neke stvari na koje treba obratiti pozornost kod traženja bugova koji su doveli do errora. Prva strijelica nam govori da nije otvoren session od hiberante, što nam daje do znanja da je problem u ORM dijelu aplikacije a ne sa Spring MVC-om. Druga strjelica nam govori da ne može otvoriti konekciju što me je uvelike dovelo do rješenja. Da bi se konekcija otvorila moramo imati dobar url definiran za JDBC, imati ispravne podatke za username i password te moramo imati napravljenu bazu na MySQL serveru (jer kao što sam već pisao u blogu, Hibernate ne može stvoriti bazu na serveru. Tablicu može ali bazu ne, u protivnom baca exception). Treća i četvrta strjelica potvrđuju prve dvije. Nakon druge mi je bilo jasno u čemu je problem. Aplikaciju sam razvijao na Window 7 gdje mi je MySQL server imao root password, a kod instalacije MySQL na Mac OS-u po defaultu on je nema.
Tako je i bilo. Maknuo sam navedeni password u konfiguraciji hibernatea, napravio Maven build, stavio war na Tomcat i voila, aplikacija radi! Zanimljivo kako mala sitnica može izazvati veliki exception report :)
Mislim da bi si svako toliko trebao napraviti neki namjerni bug tipa ovoga passworda da si istreniram oko u pronalaženju i otklanjanju errora. Naime prije nekoliko dana krenuo sam raditi 2 klase koje ću mapirati pomoću Hibernatea. Istina napravio sam obadvije, ali kada sam krenuo raditi prvu uspio sam staviti samo @Entity anotaciju i ništa više. Zaključio sam da je logičnije da prvo napravim drugu klasu do kraja pa da se onda vratim na prvu, nekakav zakon logike mi je to nalagao. Zaboravio sam uopće na prvu klasu, i smaknuo sam je s uma. Kada sam krenuo pokrenuti aplikaciju dobio sam veliki error report gdje sam morao tražiti i iščitavati sve i svašta. Brza google pretraga mi je dala polovični odgovor, ali mi se onda upalila lampica. Stavio sam @Entity anotaciju a nisam @Id, naime Hiberante ove dve anotacije smatra minimum koji mora postojati u suprotnom baca error. Nevjerojatno kako mala stvar može stvoriti veliki problem ako se ne pazi. Doduše ja to sve smatram dobrim treningom.
Pretplati se na:
Komentari (Atom)

