Controller for views in root

0

Yesterday while developping ukazbobra I realized, that I don’t know how to map controller for my index view in root of Spring MVC project. I searched and experimented a bit and here is a solution. Please note I’m using Spring Roo and annotation driven setup.

First thing is to create controller, for example simple one like this:

@RequestMapping("/")
@Controller
public class RootController {

	@RequestMapping(method = RequestMethod.GET)
	public String index(Model model) {
		model.addAttribute("foo", "bar");
		return "index";
	}
. . .

Now you have to turn off thing named ParameterizableViewController, which staticaly selects a view for for rendering. So open up webmvc-config.xml and remove line with mapping for index view:

<mvc:view-controller path="/" view-name="index"/>

That is all, nothing more, nothing less – you have working controller for your index page in root and also for other views.

Proc delam svou praci spatne?

2

Jak tak sjizdim videa z letosniho brnenskeho Barcampu, chtel jsem okomentovat zaznam prednasky Jana Martinka (@endlife) – Proc delam svou praci spatne. Na komentar to vsak bylo moc dlouhe, tak to davam sem a trochu rozsiruju.

Zacina casti nazvanou spatny odhad, kde rika neco jako „prihlasovani je jedna trida v modelu, to bude jednoduchy.“ Zminuje, jak se postupne nabaluji dalsi veci – login se meni na email, pridava validaci, jednotne zobrazovani chyb, moznost resetu hesla… Pokud pominu fakt, ze nepouzil nekterou z moznosti existujicich validaci (napr. z frameworku dojo), napada me otazka, proc tohle resit v nejake pomerne ranne fazi projektu? Shodou okolnosti o tom nedavno psal Jirka Knesl (blogpost Minimal Viable Product), dokonale to popsali tez panove z 37signals v knize Restart, volne cituji: “protoze platby za profi program maji probihat az koncem mesice, odlozili jsme implementaci modulu na provadeni plateb a venovali se dulezitejsim vecem.“ S tim se neda nesouhlasit – proc implementovat funkci pro obnoveni hesla? Vzdyt to muze pockat, kolik bude navstevniku, kteri zapomenou heslo chvili po registraci? Dulezite je spustit ASAP – featury se mohou pridavat casem – obrovska vyhoda webovych projektu.

Cast nazvana Matrix – administracni rozhrani (Adminer) pripomina Matrix – cisla, data, znaky… Nepovolany vubec netusi, ktera bije. Nevyhoda KISS pristupu, ale samozrejme – pokud to adminovi vyhovuje, neni to zadny problem, taky mam radsi Midnight commandera, nez okynka :-) . Kdo ne, at zkusi googlit alespon termin Scaffold. V Nette tohle opravdu neni?

Pokryti aplikace testy – uvedl naprosto ukazkovy priklad toho, proc je vhodne testy psat: zakomentoval cast kodu pri ladeni a zapomnel pote komentar odstranit. Jestli tohle cloveka neprinuti o psani testu aspon premyslet, tak uz nevim co :-) . Testovat, testovat, testovat! Dekuji.

Napiste nam – plural, vs. singular? To je jedno, hlavne byt profesional a verit tomu, co delam! Pekne receno, pekne tipy (odpovidat na mejly, profesional zna sve limity, cenu…).

Pointa prednasky je – hledani partaka na projekt. Jan to zjistil po roce, co vyvijel sam. Jak to zjistil? Potreba jineho pohledu na vec – kdyz clovek dela projekt sam, jiny pohled na danou vec ziska az s odstupem casu, partak muze mit jiny pohled na vec hned. Pravdive, velmi prakticke. No a pak i dalsi veci…

Takze pokud nekdo kombinuje do CV veci jako nette, TDD ci Git, muze mu poslat mejl. No a ja mu timto preju hodne stesti v nalezeni partaka i v uspechu projektu ;-) .

Pisou judiste jako prasata?

0
Zvykam si delat veci jednoduse. Byvaly doby, kdy jsem psal univerzalni kousky kodu, protoze „co kdyz nahodou nekdy“. Dlouze a zbytecne jsem ladil genericke tridy, metody pro ruzne jine obecne vstupy atd. V posledni dobe si vsimam, ze kdyz pisu rychle a jednoduse (neboli jako prase), vubec to nevadi – proste dany fragment napisu presne na telo dane situaci a kdyz ho nahodou budu potrebovat v budoucnu modifikovat, tak jej udelam univerzalnim az tehdy (v mnoha pripadech to nebude vubec potreba a ja diky tomu usetrim spoustu casu).
Uvedomil jsem si to pri cteni Restartu – stavam se Judistou. V knize je uveden krasny priklad: „Dejme tomu, ze chceme ziskat pohled na zem z ptaci perspektivy. Jednou z moznosti je vylezt na Mount Everest. Druha moznost je vyvezt se vytahem na vyhlidkovou terasu vyskove budovy.“ V knize se to sice tyka neceho trochu jineho a navic jsem to vytrhl z kontextu, ale presne takhle to citim a od ted se tim budu ridit.

Problemy s chromiem na Ubuntu LucidLynx

0

Po jistem update systemu pred nekolika mesici mi zacalo kolabovat Chromium, ale mira kolapsu byla jeste tolerovatelna – cca 2x za den jsem provadel killall a myslel jsem, ze je to nejakym pluginem ci chybou v konfiguraci. Od vcerejska to zacalo kolabovat nepretrzite a stalo se temer nepouzitelnym, tak jsem se rozhodl s tim zacit neco delat a co s tim delam budu psat prubezne sem, protoze jsem se stale nedobral reseni.

Stale jsem mel za to, ze je chyba v konfiguraci meho pocitace, protoze na jinem mi vsechno fungovalo bez problemu (totozna distribuce, verze…), pak jsem ale udelal update virtualu a stalo se mi to stejne, takze jsem si uvedomil, ze na onom jinem stroji mam novejsi verzi Ubuntu a tento problem tudiz postihuje verzi 10.04, takze jsem mel prvotni keywords pro reseni situace. Jeste predtim jsem pro jistotu odinstaloval flash. Napadu a rad jsem potom postupne vyzkousel nekolik:

  • Smazat ~/.config/chromium a ~/.cache/chromium a po nastartovani nepovolovat synchronizaci s google uctem. Provedl jsem a skoncil s vysledkem, ktery ilustruje nasledujici obrazek (a aspon me to docela rozesmalo). V kazdem pripade mazani techto adresaru jsem provadel v kazdem mezikroku, kdyby nahodou neco… Nejzajimavejsi na tomto celem je, ze i kdyz jsem smazal veskere konfiguracni soubory a nepovoloval synchronizaci, presto obcas se mi stalo, ze byly predvyplneny formulare!!! Tento jev si nedokazu nijak vysvetlit.
Zdechly chrome

Zdechly chrome

  • V dalsim kroku jsem si vzal k ruce seznam prepinacu pro spousteni chromia a pokusil jsem se ho spustit v debug rezimu s vypnutymi vsemi pluginy, javascriptem, javou… a mam z toho dojem, ze za vsechny ty problemy muze javascript. Ale web byl totalne nepouzitelny – nemluvim o tom, ze zmizelo pohodli, ale obrovske mnozstvi sajt bylo naprosto neovladatelnych, takze taky tudy cesta nevede.
chromium-browser --log-level=0 --enable-logging=stderr --disable-3d-apis --disable-accelerated-plugins --disable-webgl --disable-java --disable-extensions --disable-plugins --disable-javascript
  • Jako mezikrok jsem zauvazoval o debugovani, ale proboha – copak mam jako uzivatel mit cas instalovat gdb a vrtat se v tom? Z toho uz jsem vyrostl, kdyz jsem dal do haje Gentoo!
  • Jedeme dal – na ubuntu foru to par lidi resilo, vyzkousel jsem vsechny jejich tipy: purge, alternativni repozitar (ne doporucovany beta, ale daily builds, takze jsem vyzkousel i verzi 17.0.926.0) a nakonec jsem zkusil stahnout i primo chrome od Googlu.
  • Na jinem foru lidi zkouseli dalsi alternativni repozitar pro updaty Xek, takze jsem taky zkusil updatovat Xorg a ovladace, odstranit nepouzivane… A vysledek? Haha!
  • Dalsi mezikrok bylo zkusit to zbuildovat, ale ty prerequisities a predevsim naroky hardwarove (10G na disku, 4G pameti, 8G swapfile) a casove (uz ted s tim zabijim vice nez dost casu) – takze strucne receno: „srsly, wtf?“
  • Ve vyse uvedenem foru byl zminovan i upgrade jadra, na coz me privedla i jina diskuze, takze jsem stahnul nejprve 2.6.35-30 a ono (pro zmenu) nic. Dalsim jadrem na zkousku je 2.6.34…a nic. Mam dojem, ze uz delam zoufale kroky, ktere s tim nemaji nic spolecneho.

Vzhledem k tomu, ze na to nemam nekonecne mnozstvi casu, tak asi udelam upgrade systemu na nejakou vyssi verzi, coz jsem nechtel, protoze 10.04 ma byt LTS. Jak vidno, tak zrejme neni a rozumneho reseni se nemuzu dogooglit. Otazka je – je to ostuda pro me, nebo pro Ubuntu?

Google Developer Day 2011

0

Chtěl jsem zblognout celkový průběh akce, ale už to určitě dělají desítky dalších a mnohem lépe (+fotky a videa na Google blogu), takže asi jen pár postřehů a vysvětlení důvodů, proč jsem byl z celé akce poměrně nesvůj (pěkně po sokratovsku - budu tu pochybovat, kritizovat a klást otázky, snad kvůli nim nebudu do budoucna odepsán z dalších akcí).

GDD Prague 2011

GDD Prague 2011

Začal bych onou divnou pachutí v ústech – pokud to má být akce pro vývojáře a lidi znalé, proč byl z tolika míst slyšet údiv nad „novinkami“? Proč bylo tolik lidí paf z věcí, jako je google checkout, tolik lidí dělalo wow při předvádění dem postavených na html5, když všechno tohle je tu už nějakou dobu? Nebo študákům v bláznění ze všech těch „startup buzzs“ šibe, že sledují jenom @startupreport a blog davida grudla (promiň, že si tě beru tak často do huby, ale ten Nette je všudypřítomný :-) )?
Nadšení je pěkná věc, ale když v rámci občerstvovacích pauz člověk neslyší nic jiného, než že „to rozjedeme“ a pak slyší tisíckrát omílanej nápad (ideálně nějaký další klon grouponu), slyší, jak se dotyčný údajně bavil s tím a s tím známým, který dělá investora a že stačí jen tohle a tohle a je za vodou, tak už se nedá jenom tak nasmívat. Uhrovatí mladíci skrytí za monitory by se měli probrat do reality – nikdo jim nedá peníze jen za to, že mají nápad a k realizaci daleko, protože přece musí ještě dělat tu školu a večer už něco mají. Ale ok, taky jsem byl mladý a potřeboval peníze :-D .

Teď něco k akcím – jak jsem se už zmínil, novinky veškeré žádné. Škoda, že akce proběhla den před zveřejněním ICS, možná by to potom mohlo být o něco zajímavější, ale dojem recyklace přednášek z minulého roku byl určitě na místě. Neříkám, že témata nebyla zajímavá, ale v dnešním světě, kdy má člověk možnost sledovat vývoj novinek prakticky v reálném světě jsem měl z celé akce dojem, jako z návštěvy Invexu těsně před jeho smrtí…

Excellence in the android user experience

Omílání nezajímavých a všeobecně známých věcí, které si vývojechtivý jedinec může dohledat ve výborné dokumentaci na developer.android.com, případně na některém z mnoha blogů zabývajících se vývojem. Celkový dojem – snažte se sjednotit UI, aby to ladilo s dalšími aplikacemi. Kdyby na konci přednášející nezmínil pár konkrétních případů a tipů, byla by to čtverka jak vyšitá, takhle hodnotím cca za tři.

Integrating with google apps: new apis, new features and best practices

Zaujaly mě následující věci: api console, explorer, discovery service a UI builder. API console je jakési analytics pro jednotlivá api, navíc s možností jednoduché správy daných služeb. API explorer mi připadla jako jakási devconsole, kterou ma Facebook – umožňuje postupně vytvářet požadavek a sledovat, jak se mění výstup na něj. Discovery service je založeno na stejném principu, jako Webscripty Alfresca – každý webscript má descriptor, ve kterém jsou veškeré informace o daném skriptu a tyto soubory prochází služba, která z nich vytváří „dokumentaci“ – praktické a pěkné. Perličkou je, že i discovery service takto popisuje sama sebe :-) . No a UI builder, jestli jsem dobře pochopil, umožňuje tvořit UI stylem drag and drop nad Google Apps Script, což jsou „makra“ v tabulkach Google Docs – tady jsem si vzpomněl, jak jsme na střední škole „kódovali“ v Microsoft Accessu (když k tomu všemu přidám ještě možnost běhu nativního kódu v prohlížeči pomocí NaCl, tak mě začíná pomalu ale jistě mrazit).

How to build kick ass games in the cloud

Začátek přednášky se nesl v duchu prezentace nějaké logické hříčky uváděné tak, jako by dotyčný chtěl dětem ve školce vysvětlit princip pexesa. Wtf? My jsme vývojáři, nás zajímá, jak se co dělá, a ne jak se má co hrát. Tady jsem dost váhal navštívit OAuth and OpenID for Data acces and identity in web apps, ale na té jsem byl loni (a bláhově si myslel, že se tam dovím něco nového) a tak jsem ji opominul, musím mrknout na video, jestli za něco stála. Každopádně mě tu zaujaly následující projekty (frameworky?): Box2d, což je simulátor fyziky a byl mimo jiné použit třeba při vývoji Angry Birds, či Crayon Physics, resp odpovídající port tohoto frameworku, takže nám byl předveden GWTbox2D. Dalším frameworkem, který mi utkvěl v poznámkách, je PlayN, což by měla být multiplatformní (Java, HTML5, Android, Flash) knihovna pro psaní her (taky byla použita u Angry Birds).

VC Panel: Enterpreteurship, Incubation and Venture Capital

Odpočinková panelovka, ze které jsem měl dojem, že vítek vrba konečně dospěl a trochu zmoudřel (nebo mu pomohl Centralway :-D ). V sále moc lidí nebylo, všichni mlaďoši asi už mají jasno (teď je ovšem na místě dotaz, proč jsem tam byl já?) Don Dodge zmínil, že jsou dneska in aplikace sociální, mobilní, geolokační a hry. Protože geoNesting splňuje všechna tato kritéria, pokusím se urychlit rozdělané projekty a soustředím se pouze na tento asi :-) .

(Na Bleeding edge HTML5 jsem asi usnul, nějak si nemůžu na nic vzpomenout. Nebo ty webintents byli na této přednášce? Jestli jo, tak se mi to velice líbilo.)

DevTools Tips and Tricks

Představení developer toolboxu z chromu. Utkvělo mi v mysli především reformátování javascriptu, což je věc více než praktická a v poznámkách odkaz na Apiary.io. Dotazy z publika ve stylu „takže to je firebug“ apod. Srsly, wtf? Proč ten matoucí název? Těšil jsem se na nějaké obecné tipy a triky a místo toho byla vysvětlována práce s nástrojem, se kterým by dokázala poslepu pracovat i moje babička. Zvedám se a prchám pryč na

Ignite, a series of Lightning talks

a dobře dělám, asi největší pecka z celého GDD. Jednotlivé „talks“ mě nabíjejí pozitivní energií a dávají chuť se pustit do dlouho opomíjených projektů :-) . Takovouhle celodenní akci bych si dal líbit – dopoledne pár hodin takovéhodle povzbuzování a potom 48h hackaton a bylo by vymalováno :-) .

Nojo, aktivista v první řade :-)

Nojo, aktivista v první řade :-)

Celkový dojem? Dojem, že google umí dělat bombastické akce, ale vypadá to skoro až, že je neumí naplnit bombastickým obsahem. Možná kdybych byl megaFanGoogler, tak bych zažil pár orgasmů i mimo obžérstvení. Možná, že až budu rok zalezlý v Kanadě ve srubu a pak přijedu, spadne mi čelist. Možná, kdybych zůstal doma, udělám líp a ještě stihnu nějakou práci – přednášky jsem si mohl sjet na U2B. Možná, možná. Jedinou výhodou asi byla možnost střetout se se známými a především neznámými, se kterými jsme si zanadávali na kvalitu akce (s pocitem nenávistných pohledů študáků u stejných stolů, kteří se o 106 ládovali hamburgerama a byli ze všeho dění okolo celí paf :-) . Ale aspoň jsem vyhrál knížku… (jejich výběr taky moc nechápu – vše „for beginners“ – teda ne, že bych byl nějaký profesionál, ale knížky „začínáme s bashem, androidem, html…“ imho moc dobrým výběrem nejsou. Příjemnější by byla třeba možnost získat nějaký procesorový čas na GAE, případně možnost telefonické či osobní konzultace některé z mnoha google technologií, přece jen by to bylo praktičtější jak pro výherce, tak pro google a šíření jeho produktů. V této souvislosti bych si na závěr ještě dovolil jednu citaci, když jsem něčím takovým tento blogpost začal, tentokrát Rousseau: „dobro i zlo proudí z téhož pramene“. Možná je na čase otevřít oči a přestat Googlu všechno tak slepě baštit.

Go to Top