Nabídka práce: Hledáme programátora

Problem with nested forms in AngularJs

I had a long form across multiple tabs. Some parts of the form were hidden via ng-if. After some time I’ve noticed that ng-if on <form> element does not work anymore. The parts which were to be hidden, were always visible. When I’ve changed element type to <div> or <div ng-form> it worked again. WTF is happening here??

The problem was that about a week before I’ve added <form> above all those tabs and thus the <form> inside of tabs were nested. Angular has no problem with that, but browsers do. It is invalid HTML. As a result ng-if (or ng-show, ng-hide) was not even called, it was silently ignored.

So the solution is simple. If you need nested forms, always use directive ng-form instead of <form> element. Than you will have valid html and directives will be invoked.

See plunkr for demo.

RTFM :)

Jak se Seznam.cz (ne)stará o své uživatele

Už jsem tady jednou o Seznam.cz psal (Proč už nepoužívám Seznam.cz), a musím bohužel znovu. To, že Seznam nepoužívám, platí stále, ale moje máma potřebovala poradit s jedním mailem, do kterého se nemohla dostat. Místo obsahu mailu se ukázalo jen prázdné místo. Ukázalo se, že se jedná o rozsáhlejší problém. Mnoho lidí reportovalo, že jim zmizel obsah emailů doručených kolem 30.5. (Viz diskuze na seznamáckém fóru zde a zde). Jediná (!) reakce ze strany Seznamu je z 11.5., kde říkají, že “během několika málo dní to opraví”. Neopravili zatím nic (psáno 22.6.2014). Není ani žádné oficiální prohlášení typu “Omlouváme se za chybu, intenzivně na tom pracujeme, blablabla…”. Pokud je, tak o něm nevím. Vypadá to, že Seznam.cz situací nijak neřeší a stížnosti uživatelů ignoruje. Škoda …

Milí uživatelé, tuto zprávu ignorujte... ve skutečnosti to totiž nijak neřešíme

Milí uživatelé, tuto zprávu ignorujte… ve skutečnosti to totiž nijak neřešíme

 

Forum napoveda.seznam 2

Mlčení je asi tak ta nejhorší taktika, co Seznam.cz mohl zvolit. Zajímalo by mě proč.

Skoro to vypadá, že kazit si dobré jméno patří k filosofii Seznamu. Viz Nejhorší inovace roku 2012? Nový email od Seznamu nebo redesign Lide.cz, který v podstatě zařízl stávající službu a nahradil ji seznamkou. Spoustu lidí tím naštval, a následoval propad návštěvnosti na polovinu.  Viz článek Podarilo se Lide.cz zvrátit úbytek uživatelu? na Pooh.cz.

ceske-socnety-2014-05

 

A pro úplnost ještě tragikomický příběh o tom, jak Seznam.cz má na Firmy.cz jen jednu hvězdičku. Článek zde.

PS:  Diskuze pod profilem Seznamu na Firmy.cz je lahůdka…

 

UPDATE

Pokud máte problém se zobrazením emailů, tak nepiště na seznamácké fórum, ale kontaktujte přímo helpdesk.

Link na helpdesk:
http://napoveda.seznam.cz/cz/services/
Pak kliknout na “Přejít na technickou podporu”

What to do when angular controller is initialized over and over?

It is probably a rare case, but it already happened to me at least twice.

The thing is this:

We have rather big angular application, it is more like several semi-independent applications (or modules). Everything works fine except one dialog with specific url, which causes given angular controller to initialize over and over. The browser UI is frozen, javascript engine is working like crazy, until finally page crashes. It turns out that the cause of this problem is rather silly. It is the url specified in base tag.

My buggy code looked like this

Index.html

<base href="/some/path/bleble/" />

Angular

//its typescript
($routeProvider: ng.route.IRouteProvider, $locationProvider: ng.ILocationProvider, $httpProvider: any) => {
 $locationProvider.html5Mode(true);

 $routeProvider.when("/", { templateUrl: "template.html", controller: "SomeCtrl", caseInsensitiveMatch: true });
 $routeProvider.when("/profile", { templateUrl: "template.html", controller: "SomeCtrl", caseInsensitiveMatch: true });
 $routeProvider.otherwise({ redirectTo: "/profile" });
}

Corrected version

<base href="/some/path/bleble" />

See the difference? No? .. i did not see it either. The difference is the slash “/” in the end of the base url. When the slash is present it then angular router can not find a matching url, redirects to default, fails again. So it redirects again, fails to find a match, redirects, fails …, …, over and over.

One stupid slash :)

Happy debugging.

Jak se mi pracuje se stolem Sit2Stand

Jedním slovem: Skvěle

Stůl je robustní, prý unese až 100kg, ale to jsem nezkoušel. Je programovatelný, takže si můžu přednastavit 3 polohy. (využívám ale jen 2 :))

Zhruba rok a pů jsem měl stůl pro práci ve stoje udělaný z papírových krabic. Nebylo to moc estetické, ale bylo to zadarmo a účel to splnilo. Nevýhodou bylo, že vždycky když jsem se chtěl posadit nebo postavit, tak jsem musel vzít notebook a přenést ho na vedlejší stůl. Což zní jako prkotina, ale pokud jsem zrovna zabraný do nějakého problému, tak poslední co chci, je přerušovat si myšlenky nějakým přesunem. Musel jsem vždycky vytáhnout notebook z dokiny, přenést, zapojit do dokiny na druhém stole, to mi samozřejmě rozházelo velikost otevřených oken, zkontrolovat že jsem vypnul zvuk aby při přenášení nezačal notebook hrát nahlas atd…

Teď když si chci sednout, tak jen zmáčknu knoflík a je to. Nepřeruší se mi flow, ve kterém práve jsem, což je velká výhoda.

Chci také tímto poděkovat svému skvělému šéfovi, že mi ten stůl koupil. Platit ho ze svého by se mi nechtělo, byť bych platit jen polovinu.

Jediná nevýhoda je absence poličky na kabely, zdroj a podobné věci. Předchozí, klasický stůl ji měl, a všechny kabely jsem do ní elegantně schoval. U sit2stand mi kabely visí a plandají. Sice jsem si je nějak svázal, ale ideální to není. Jinak všechno skvělé :)

Dojmy z Dart Hackathonu 2014

15.2.2014 byl v Liberci (a na jiných místech) hackathon k příležitosti vydání stabilní verze Dartu. Těšil jsem se, že si zaprogramuju, a udělám nějakou skvělou a zábavnou věc jako minule, Dart Music. Buď, že na ni navážu a udělám další animaci reagující na hudbu nebo nějakou hru nebo něco využívající genetických algoritmů, protože mě láká si je vyzkoušet. Dal jsem se dohromady s Tomášem Jukinem a rozhodli jsme se udělat jednoduchou hru (kosmická loď vyhýbající se asteroidům. Loď by byla částečně řízená multi agentním systémem, Tomáš na tohle téma psal diplomku). Bohužel jsme ve výsledku nenaprogramovali skoro nic. Většinu času jsme zabili na rozcházení různých knihoven. Chtěl jsem použít DartAngular a Box2D nebo StageXL pro kreslení na canvas. Bohužel DartAngular nefungoval. Příklady, které byly v dokumentaci, nám nefungovaly, nešly ani zkompilovat. Po přidání příkazu import ../path/to/angular.dart to chvíli chodilo. Zdůrazňuji, že chvíli. Pak jsem přidal Box2D a DartAngular už zase nefungoval. Po odebrání reference na box2d a tedy vrácení se do původního stavu, to stejně nefungovalo. Bohužel jsem nebyl sám, komu DartAngular nechodil. Nehledě na to, že příklady pro DartAngular používají pro mě dost exotické anotace, které určují, jestli je daná třída direktiva nebo controller nebo service.

Takže paradoxně na minulém hackathonu 2012, kdy nebyly žádné dartí knihovny a všechno jsme si psali sami, jsme byli mnohem produktivnější.

Co se Dart Editoru týče, tak podle mně žádná sláva. IntelliSence moc nenapovídá,  neumí doplnit chybějící import statement při použití třídy definované v jiném souboru (ale to myslím Visual Studio bez Resharperu taky neumí). Kluk vedle měl problém: Dart Editor mu nechtěl zkompilovat validní kód. Poté, co smazal závorku, uložil soubor, přidal ji znovu, zase uložil, tak už to zkompilovat šlo. Jana Moudrá reportovala podobný problém.  Zlatý TypeScript a VisualStudio s Resharperem.

Co se mi líbilo

Dart jako jazyk je pěkný, a když už je ve verzi 1.0, tak se nebude tak překotně měnit. A budoucí verze Chromu by prý měly mít Dart VM přímo v sobě. Takže to možná Google myslí s Dartem vážně. Pokud ho ovšem nezařízne jako jiné projekty.

Hackathony jsou super a za to že tenhle kluci z libereckého Spagetti Code uspořádali jim patří můj dík. Dozvěděl jsem se pár drbů z Heuréky.cz, v jejíchž prostorech se akce konala, o tom, kolik berou programátoři v COBOLu, jaké se kde staly průsery a taky jsem měl dovolenou od dětí, a to se počítá :) Díky, kluci, za uspořádání. Marek z Heuréky říkal, že do budoucna plánují pořádat nebo hostovat přednášky, tak bude na co se těšit.

Obrázek za tisíc slov, aneb ať žije DartAngular :)

dart

PS: Hledáme programátora

Buffer
GetSocial