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

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

Speed up Visual Studio by disabling SourceControl plugin

My Visual Studio 2013 Professional with Resharper 8 was considerably slow and sluggish. Sometimes it took several moments for typed character to appear on screen. After trying several things, including disabling Resharper, which did not help, my colleague found a solution: Disable Source Control plugin. For some reason it was enabled after installation. That is OK with me, I understand that some people might be afraid of Git command line interface, so they use gui plugin instead. What makes me angry is the fact the Visual studio re-enables this plugin after restart. So I have to disable it again and again.

Git Source plugin

SLOW | Default Setting of Source Control plugin in Visual Studio

SLOW | Default Setting of Source Control plugin in Visual Studio

FAST | Disable Source control plugin

FAST | Disable Source control plugin

 

Buffer
GetSocial