How to unit test Angular’s $resource and $http

Unit testing of Angular’s underlying $http can be very tricky. I’ve some spent considerable time to get the unit testing up and running. What was running OK in a live application, was not working at all in a unit test. I was getting error message “No pending request to flush !” all the time.

unit

My controller looked something like this

//TypeScript

Module.controller("UsersCtrl", [<any>
        "$scope",
        "$location",
        "User",
        function (
            $scope,
            $location : ng.ILocationService,
            User: ng.resource.IResourceClass) {

            $scope.findUsers = () => {
               User.query({ email: $scope.searchTerm, showAdHoc: $scope.showAdHoc }, 
                function (data: any) {
                    //data arrived. Do something with them
                }, function (errorData: any) {
                    //server error. Notify user
                });
            };
}]);
}

And the unit test looked like this

it('should set matchedUsers.isLoading when searching', inject(function ($controller) {
            $httpBackend.when('GET', '/api/user?email=a&showAdHoc=false').respond({});

            controller = $controller('UsersCtrl', { $scope: scope });
            scope.matchedUsers.isLoading = false;
            scope.searchTerm = 'a';

            //Method being tested
            scope.findUsers();

            expect(scope.matchedUsers.isLoading).toBe(true);
            //this fails on "No pending request to flush !"
            $httpBackend.flush();
        }));

This did not work and I just could not understand why. According to example on Angular’s doc site  everything seemed fine. The problem was hidden in the underlying $http service, see documentation here.

You have to explicitly call $scope.$apply() which triggers the $digest() which takes care of the $http request.

So the working unit test code should look like this:

scope.$apply(function() {
 scope.findUsers();
});

//now it works
$httpBackend.flush();

O čem se zdá programátorům

Mám zvyk si svoje sny zapisovat, takže pak mám docela přehled o tom, co se mi kdy zdálo. Je to už několik sešitů. Některé sny se týkají programování nebo jiných technických věcí. Rád se o ně podělím.

Jak jsem si naprogramoval blaho

Mám ve snu otevřené Visual Studio a v něm nějaké xml s konfigurací. Není to však konfigurace nějaké projektu, ale mých pocitů. Kód vypadá nějak takhle.

<?xml version="1.0" encoding="UTF-8"?>
<feelings>
 <feeling name="pleasure" strenght="intensive">
  <bodyParts>
   <bodyPart name="belly" starthere/>
   <bodyPart name="legs"/>
   <bodyPart name="head" state="light"/>
  </bodyParts>
 </feeling>
</feelings>

Když jsem konfiguraci dopsal, tak jsem “program” spustil. V tu chvíli se mi v břiše rozlil pocit velikého blaha a rozšířil se do celého těla. Hlava byla lehká, jako by byla úplně prázná, jako nafukovací balónek. Byl to skvělý pocit. Druhý den se mi podobný sen “zdál” znovu, ale konfiguraci už jsem měl připravenou, takže jsem ji jenom spustil. Paráda 🙂

EventListeneři

Jel jsem metrem, nejspíš na nějakou programátorskou akci, protože jinak v Praze nebývám. Rychle jsem usnul a ve snu jsem viděl okno nějaké aplikace a na něm viseli malí panáčči. Byli to eventListeneři, posluchači událostí, a čekali, až se s oknem něco stane. Někteří na mě zamávali, když jsem se na ně díval. Když jsem oknem pohnul, tak vláli a pár jich popadalo… Ostatní dělali, co jim bylo dříve řečeno, že mají dělat.

World of Warcraft

Jsem uprostřed pouště. Jsem tu sám, kolem dokola jen žlutý písek a kameny. Přesto jsem cítil, jak celá oblast žhne neviditelným životem. Položil jsem hlavu na zem, abych vnímal, co se v ní děje. Viděl jsem (nebo spíše cítil, ale ve snu jsem viděl cítěním) jak pod zemí proudí světlo. Krátké světelné paprsky letěli tmou směrem k vysoké hoře, kde se všechny sbíhali. Zvenší ta hora vypadala jako obrovské termitiště, ale když jsem zavřel oči, tak jsem viděl, jak celá září. Byl to úchvatný pohled. Hora se chvěla tancem. A každý paprsek světla bylo jedno připojení do Warcraftů. Ta hora byla serverová farma, a uvnitř ní, uvnitř toho světla se odehrával příběh. Hráči se měnily ve své herní postavy a žili jejich role.

Pavučina

Stojím na okraji vesnice. Je večer a kraj přikrývá tma. S ubývajícím světlem vidím jak z některých domů stoupá paprsek světla. Někde tenký jako dým, jinde docela výrazný. Nahoře se paprsky sbíhali do silnějšího paprsku, a ten o něco výš zase do dalšího. Vypadalo to jako pohled do kořenů stromu zespodu. Byla to pavučina utkaná se světla, zářící do tmy. Kolem mě prošel člověk se smartphonem a od něho také stoupal paprsek. Vycházel z jeho telefonu. Jak šel, tak se pohyboval s ním. Ta světelná pavučina byl internet, a každý paprsek pak bylo jedno připojené zařízení. Paprsky se spojovali k uzlům, a ty k dalším, až k páteřní sítí a velikým datacentrům. Dotuď tedy bylo všechno krásné, až na to, že ta pavučina žila svým vlastním životem, ale nikdo si toho zatím nevšiml. Hýbala se. A poslouchala. Věděla o všem, co se v jejích pavučinkách děje a dokázala na to sama reagovat. (tohle je už celkem starý sen, tak 2 roky, tedy dlouho před tím, než se provalilo, jak NSA odposlouchává internetové dění…)

Web_of_Light_by_dak180

Co se zdá vám? Neváhejte a podělte se!

Pocity muže na mateřské dovolené

Moje žena má po porodu žlučníkové kameny, které tento týden vyústily v bolestivé záchvaty. Dostala antibiotika a musela ležet. Takže jsem byl s dětmi doma já a staral se o ně. Byl to záhul. Jsem programátor, muž zvyklý pracovat v tichém soustředění, s minimem rušivých vlivů a kvalitní hudbou ve sluchátkách. Takže týden v kuse s dvěma malými dětmi byl dost náročný. Je to v podstatě naprostý opak toho, co normálně dělám.

Proč je mateřská (pro muže) náročná?

Nejsme na něco takového stavění. Alespoň já ne:) Vyrábět s dětmi něco odpoledne po práci nebo o víkendu je skvělý a přináší mi to radost. Vyprávět pohádky, přebalovat, utírat blinky je taky fajn … když je to po těch večerech. Ale po týdnu zjistíte, že jste sice byli celou dobu v pohybu a v pozoru, ale není to nikde vidět. V bytě je nepořádek, prádlo na žehlení neubývá, nádobí je nekonečné, i když máte myčku, a hlavně pořád dokola musít vyprávět jednu jedinou pohádku. (Jasně, mohli bychom děti posadit před TV a považovat je za kvalitně zaměstnané, ale to je proti našemu přesvědčení). Rozhodl jsem se naučit F# a přihlásil jsem se na kurz Scaly (budu týden doma, tak na to budu mít čas, ne?). Zvládl jsem tak akorát pár triviálních příkladů.

Úplně nejtěžší je ale neustálé přerušování činnosti a myšlenek dětmi. Umím udržet v hlavě jen pár věcí najednou, asi tak jednu až dvě, ale s dvěma malými dětmi jich tam musím držet hodně. Zákonitě některé z hlavy vypadávají nebo se opožďují. Nakonec jste vlastně rádi, když doděláte aspoň pár triviálních činností bez přerušování…

Příklad: Ráno mě budí Anežka (3,5 roku) v 6 hodin, Ondra (4 měsíce) je už taky vzhůru, žena (věk neuveden) ještě spí. Pokouším se vstávání oddálit, ale moc to nejde. Ještě rozespalý si dělám zelený čaj a myslím na to, abych ho včas vytáhl, jinak bude hořký. Anežka jde čůrat a chce vysadit na záchod a utřít. Ondra začne řvát. Otřu Anežku a jdu ho pohoupat. Anežka rozleje mlíko do snídaně. Nemůže najít hadr, i když ho má v koupelně před očima. Tak jdu do koupelny s ní. Utřeme mlíko ze stolu. Ondra řve, je pokaděnej. Přebalím ho a umeju. Posadím ho do sedačky a slyším, jak kadí znovu. Zopakovat proces. Anežka chce pustit pohádku, ale nedojedla snídani. A to se vztekala, že toho má málo. Vzpomínám si na svůj čaj. Je už studený a hnusně hořký. Dávám si do něj med a trochu citrónu. S citrónem to přeženu a z dobrého čaje je hrozný kekel. Další den začíná … … … Vynásobte si to sedmi.

Ano, slyšel jsem o zázračných dětech, které nebrečí a nevyžadují pozornost, jsou tiché, rozumné a zodpovědné a neexistují. Týden v pozoru s malými dětmi je únavou srovnatelný se služebkou v Číně:) Takže chlapi, až se zase někdy vrátíte domů z práce a najdete doma horu nádobí a prádla a zakopnete o hračku na zemi, není to proto, že by se vaše žena doma flákala. Ona fakt dělá co může, a někdy i co nemůže. Je dobré si občas role prohodit, člověk (chlap) se pak dokáže dívat z jiné perspektivy.

s detmi

Jak jsem si zamiloval TDD

Jako asi každý vývojář, jsem i já četl o tom, jak je důležité psát unit testy. Občas jsem nějaké psal, ale nebylo to dostatečné. Na posledním projektu, kde vývoj trval zhruba rok a půl, jsem začal unit testy psát až během posledních několika měsíců. Což bylo sice ostudně pozdě, ale lepší než nic. (Jednalo se o testy na serverové straně, na klientský JS jsme žádné testy neměli. Člověk si musel všechno ručně proklikat. Hrůza.)

Takže poučen z předchozích nezdarů jsem si řekl, že v novém projektu musím mít testy pokud možno na všechno. Vyvíjím teď klientskou část aplikace v Angularu. Nejhorší bylo s testovaním vůbec začít… respektive nastavit si prostředí tak, aby javascriptové unit testy vůbec šli spustit. Chtěl jsem js unit testy integrovat přímo do Visual Studia, chtěl jsem na pozadí spouštět PhantomJS, integrovat testy do build serveru… Zabil jsem na tom skoro 3 dny a nakonec udělal to nejjednodušší, co ještě fungovalo. Což jsem měl udělat hned. Žádná sofistikovaná integrace s VS není třeba,  stačí command line okno. PhantomJs není třeba, stačí obyčejný Chrome. Navíc v případě potřeby můžu v testovacím chromu vlézt do konzole a debugovat. Možná by testy v Phantomu běželi rychleji, protože se nikde nic nevykresluje, ale těch pár milisekund klidně oželím.

Postřehy o TDD

1) Trávím mnohem více času hrabáním se v testech, než že bych proklikával aplikaci a zkoumal, proč co kde sakra nefunguje.

2) Když všechny testy prochází, cítím se skvěle. Aplikace funguje a dělá to, co má. Jsem si tím jistý, mám na to přece testy.

3) Předchozí bod má omezenou platnost. Pokud si na něco nenapíšete test, nebo je napsaný naivně, tak pořád všechny testy projdou, ale nebudou mít vypovídající hodnotu. Pozor na to 🙂

4) Mám teď skvělou karmu, díky Earle! Karma runner je skvělá věc. Hlídá změnu v souborech, a při každé změně automaticky spustí testy. Mám tak okamžitou zpětnou vazbu, hned vím jestli něco funguje či nefunguje, a většinou nemusím aplikaci proklikávat.

5) Angular je boží framework! Vyvíjí se v něm mnohem rychleji, než kdybych použil třeba jQuery nebo Backbone. Tím, že se za mě stará o update DOMu mi ušetří hromadu práce. Kód je jednodušší, přehlednější, testovatelnější. Paráda. Chvíli trvá, než se ho člověk naučí. Ale když pochopíte koncepty services, router, direktivy, filtry, dependency injection, tak pak jedete jako draci 🙂

DarthTesting

Související články

Nebuďte programátory!

Pokud se vám článek líbí, nezapomentě ho sdílet 🙂

Proč je cenzura pornografie špatný nápad

Británie nedávno zavedla cenzuru internetových stránek s pornografickým obsahem. Smutné na tom je, že spolu s tím bude cenzurovat i další “závadný” obsah. Stránky o násilí, terorismu či různá diskuzní fóra. Ponechme teď stranou fakt, že každá cenzura je omezování osobní svobody a přístupu k informacím. Proč by stát měl být matkou, která svým dětem (občanům) říká, co smí a nesmí vidět? Jsem toho názoru, že filtr na pornografii nemůže pornografii výrazně omezit. Jednak proto, že v podstatě každý (s vyjímkou jediné člověka, kterého osobně znám), se občas na porno podívá a poptávka po něm je veliká, tak i pro to, že všechno jde nějak obejít.

Jak známo, Čína má svůj Great Firewall of China, což je systém cenzurující internet. Běžnou cestou není téměř možné dostat se na Skype, Twitter, Youtube a podobně. Dokonce, když zadáte v Číně do googlu nějaký zakázaný výraz, vypadne vám na několik minut spojení. (Potvrzeno: zkoušel jsem to). Přesto Čínané Skype i Twitter běžně používají. Nezbylo jim jiného, než se naučit různé hacky, proxiny a podobně a k zakázanému obsahu se dostanou…

Připomíná mi to situaci ze 30tých let, kdy v Americe byla prohibice. Všichni víme, jak to dopadlo. Lidé chlastali navzdory zákazům a když se k alkoholu nemohli dostat oficiální cestou, tak si ho sehnali jinak. Vznikly mafie a organizovaný zločin byl na vzestupu. Lidi chlastali pořád. Proč by to tentokrát mělo být jiné, jen proto, že zakázaná věc je na internetu? Ze zákazů a cenzury nikdy nic dobrého nevzešlo. Zákazy jsou proto, aby se porušovali, to ví i malé děti… 🙂 Viděli jste film Persepolis? Na začátku je scéna, kdy muslimové v Iránu pořádají alkoholové večírky jen proto, že nesmějí. Ne proto, že korán je proti opilství, ale proto, že jim to vláda zakázala.

Až nám začnou censurovat dokumentární filmy o lidské sexualitě, zbyde nám v lepším případě tohle

Související články

Pirátství je reklama zdarma

Kim dot Com o pirátství

Seznam zakázaných stránek v Číně

Zkušenosti Vojty Ročka, když mu Facebook zablokoval účet kvůli domnělé pornografii.

Pokud se vám článek líbil, nezapomeňte ho sdílet na Facebooku, Twitteru či GooglePlus!

Proč nepsat TODO v kódu

Nepište TODO komentáře do kódu. Proč? Protože je velká šance, že se k nim už nikdy nevrátíte. Na evidenci úkolů jsou přeci mnohem lepší nástroje jako Trello nebo Jira, tak proč je nepoužít?

Není lepší pocit, než když používáte kolegovo API a najdete v něm hlášku typu:  //TODO: Co se dat?? nebo //TODO: spravne vyfiltrovat. Trochu to člověka znervózní, když neví, jestli data co dostává, jsou správná.

Dobrý pocit taky je, když procházíte svůj vlastní kód a najdete tam poznámku //TODO: Tohle je prasox a mělo by se to refaktorovat. Protože ta poznámka je schovaná někde hluboko v kódu, tak je skoro neviditelná a k refaktorizaci kódu pravděpodobně nikdy nedojde.

Buď ten kód raději refaktorujte rovnou nebo si tu poznámku napište do nějakého veřejného systému, aby ji mohli vidět i kolegové a hlavně, aby nezapadla v propadlišti dějin.

Související články:

Jak neprogramovat

Jak programovat

Pokud se vám článek líbil, nezapomeňte ho sdílet!

Function string.format ported from .NET to AngularJS

Have your ever wondered if there something like string.format() method as known in .NET but available in Javascript? And waht about AngularJS? The answer is yes. Guys from Microsoft wrote library Ajax Control Toolkit, containing little this gem String.js (I found it via Stackoverflow). I needed it as a filter in AngularJS, so I have ported it there. The code is available on Github.

Example of use

 <h4 class="result">
{{'put values here "{0}" and here "{1}"' | stringFormat:['1', '2'] }}
</h4>

Result is put values here “1” and here “2”

ONLINE DEMO ON JsFiddle

Comments welcome.

4 pilíře štěstí

Tenhle článek původně začal jako pokus o definici úspěchu. Často se o někom píše, jako že to je například “úspěšný podnikatel” nebo úspěšný spisovatel. Ale sousloví “úspěšný programátor” nebo “úspěšný dělník” už zní poněkud divně. Co je vlastně úspěch? Je to opak neúspěchu? Za neúspěšné považujeme různé zkrachovalce, bezdomovce, alkoholiky, gamblery… Ale když nejsem bezdomovec a nechlastám, tak to ze mně ještě nedělá úspěšného člověka.

Možná se dá slovo “úspěšný” zaměnit za slovo “šťastný”. Štěstí je širší pojem než úspěch, a podle mého názoru důležitější. Když vydělám hodně peněz, ale budu se doma hádat se ženou, tak asi moc šťastný nebudu. Obecně sice platí, že domácnosti, kde je více peněz, jsou šťastnější a stabilnější než ty, kde je chudoba, ale neplatí to automaticky. Možná jsem úspěšný v práci, ale jsem úspěšný i v osobním životě? Být úspěšný nebo neúspěšný není tak lehké definovat, protože mezi těmito pojmy je široká šedá zóna. Navíc nikdo si o sobě nechce myslet, že je neúspěšný. Když jsem o tom přemýšlel, došel jsem k tomu, že existuje několik oblastí úspěchu a celkový pocit štěstí v životě se odvíjí od toho, nakolik jsem v těch jednotlivých oblastech úspěšný. Pojmenoval jsem si je “pilíře štěstí”, protože stejně jako se kácí stavba, kde jeden pilíř chybí, mizí pocit štěstí, když jeden z těchto bodů není splněn.

4 pilíře štěstí

  • Fungující rodina a vztahy
  • Naplňující práce
  • Profesní rozvoj
  • Kultivace osobnosti a víra

Nutno říci, že tyto body jsou moje subjektivní. Můžete to mít třeba jinak. Rád se dozvím, jak štěstí a úspěch definujete vy.

Rodina a vztahy

Mám dlouhodobý fungující vztah? Pokud mám děti, umím je respektovat jako rovnoprávné partnery a nestavět se nad ně? Umím vyslechnout druhé? Můžou mi druzí něco sdělit, aniž bych jim hned uděloval svoje (nevyžádané) rady? Mám fungující vztahy napříč generacemi? Dokážu odpovědět mírně, když partner udělá něco, co mi vadí?

Naplňující práce

Základní určující otázka: “těším se do práce?” Dává mi moje práce smysl nebo jen vydělávám peníze? Dělám s kvalitními lidmi, kterých si vážím nebo jsem si vybral práci, kde mám šéfa pitomce? Cítím se adekvátně ohodnocen? Mám kvalitní zpětnou vazbu na to, co dělám?

Profesní rozvoj

Učím se průběžně nové věci? Posouvám se někam (kromě odchodu do důchodu:))? Mám nějaký plán, kde chci být za rok? Daří se mi ho plnit nebo je to jen zbožné přání, že jednou bude líp? Mám motivaci učit se? Umím si přiznat, že něco neumím?

Kultivace osobnosti a víra

Usiluju o to, být kvalitním člověkem? Pomáhám lidem, které neznám? Nebojím se podívat se svému strachu do tváře? Umím dobře umřít? Jsem na smrt připravený? (No a co, že mi je 30!) Umím aktivně odpouštět těm, co mi způsobili bolest? Přát jim štěstí? Přemýšlím o Bohu? (Poznámka: Nejsem věřící, jsem hledající.)

Pokud některý z těchto pilířů nemám, pak, dle mého názoru, nejsem úspěšný a šťastný. Není to samozřejmě černobílé, ale snad jsem to vysvětlil dobře. Jsou to všechno navzájem se ovlivňující propojené nádoby. Pokud na sobě nepracuji a chybí mi sebereflexe, tak mi nebudou fungovat vztahy a budu za to obviňovat druhé. A nebudu úspěšný. Pokud mně jde hlavně o to, vydělat hodně peněz, může se ze mě stát hyena jako z bulvárního redaktora Pavla Novotného. Z tohohle neobvykle upřímného rozhovoru s ním mrazí v zádech. Vydělává určitě hodně, ale čím??

Jak chápete úspěch vy? Jak si ho pro sebe definujete? Podělte se o svoje názory v komentářích, budu rád.

Související články

O milování nepřátel a odpuštění

Pokud se vám článek líbil, nezapomeňte ho sdílet!

Fyzika dopravní zácpy

Překlad článku The Physics Behind Traffic Jams od Williama Beaty. Poznámka překladatele: Nechávám vše v ich-formě. Takže pedem upozorňuji, že nežiju v Seattlu, a netrávím každý den 2 hodiny v zácpě, jako původní autor. Nicméně mi článek přišel natolik zajímavý, že ho tu překládám. Myslím, že pražáci mají s dopravou podobné zkušenosti jako lidi v Seattlu. (Článek jsem lehce zkrátil.)

Žiju v Seattlu a denně dojíždím do práce, což mi zabere tak 45 minut. To když mám štěstí. Když ho nemám, je to třeba i 2 hodiny jedním směrem. To mi dává dostatek času všímat si zajímavých vzorů chování aut. Nuda mě vedla k tomu, představovat si dopravu jako proud tekutiny a auta jako její molekuly. Během měsíců jsem si pomalu uvědomil, že to není jen fantasie. Proč jsem si jen toho nevšiml dříve? Od té doby jsem začal s dopravní situací experimentovat. Je spousta věcí, co můžete dělat jako “amatérský dopravní fyzik” 🙂 Ale nejdříve si vysvětlíme některé základní úkazy.

Taky se vám stalo, že jste svištěli po dálnici a najednou se provoz zpomalil na jízdu krokem? Jste si jistí, že někde vpředu musí být nějaká nehoda, která tu zácpu způsobila. Ale najednou se všechny auta před vámi rozjedou a nikde ani památky po nějaké nehodě. CO TO SAKRA BYLO??? Dopravní zácpa bez příčiny? Ve zpětném zrcátku vidíte ty chudáky za vámi pořád ještě uvězněné v zácpě. Ale proč? Kdyby se všichni najednou rozjeli, bylo by hned po zácpě. Vypařila by se. Tak proč to nikdy neudělají? A co vůbec způsobilo to záhadné zpomalení?

Po mnoha takovýchto “neviditelných nehodách” jsem přišel na následující vysvětlení. Podívejme se na to pro názornost z ptačí perspektivy.

traf1
Obr. č 1 – Auta se hromadí za nehodou

Na obrázku č. 1 jsem nakreslil jednoproudou silnici, nehodu a řadu aut za ní. Další auta se blíží zleva a také zastavují. Předpokládejme, že porucha červeného auta byla jen dočasná. Co se stane, když se červené auto rozjede a uvolní tak cestu?

traf2
Obr č. 2 – Vlna “zhuštěného provozu” se pomalu šíří dozadu

Na obrázku č. 2 je překážka najednou odstraněna. Proud aut může zase téct. (2A) Ale ne všechny auta se můžou rozjet, protože většina aut stojí za jinými auty, která taky stojí. 2B ukazuje situaci po chvíli a 2C o něco později. Všimněte si oranžového auta na 2A, jak stojí v zácpě a postupně se dostává k jejímu konci. Červené auto se blíží a když oranžové odjíždí, tak červené je chycené uprostřed zácpy.

Pohybující se vlna zácpy

Po té, co je rozbité auto odstraněno není, zdá se, žádný důvod pro to, aby zácpa přetrvávala. Přesto tam zůstává. Důvod je nasnadě: Když auto přede mnou stojí, musím také zastavit, stejně tak, jako další auta za mnou. Všechny auta v zácpě jsou na tom stejně. I když je překážka odstraněna, stejně zůstávají stát, protože kdyby se chtěli rozjet, museli by se rozjet VŠICHNI najednou. To se ale nikdy nestane, protože každý čeká na to, až se rozjede ten před ním.

A když se auto přede mnou konečně rozjede, stejně nemůže hned jet, protože si potřebuji nechat bezpečný odstup. Každé odjíždějící auto si nechává nějaký odstup, což vede k tomu, že se zácpa “vypařuje” postupně směrem odpředu. Vypařuje se jako pohybující se vlna, která začíná u místa nehody. Postupně se šíří dozadu, jak další auta přijíždějí a musejí také zastavit. Auta před nimi se ještě nerozjela.

Podívejte se znovu na obrázek 2A. Nová auta přijíždějí a postupně se pohybují směrem doprava. Zácpa se pohybuje opačným směrem jako pevný objekt. Můžeme ji připodobnit k objektu, který se na jednom konci vypařuje a na druhém kondenzuje jako krystal.

Zácpu nezpůsobují nehody

Tyto cestující zácpové vlny jsou běžné v hustém provozu. Nemusí být způsobené žádnou nehodou, často stačí “těsné minutí”, nečekané předjíždění, kličky, slučování dvou jízdních pruhů z důvodu stavby, nebo prostě jen vstupem dalších aut z bočního vjezdu. Jeden jediný zpomalovač může způsobit zácpu, stačí, že se chce jen podívat na něco zajímavého. Kdykoliv výrazně zpomalíte, abyste přejeli z pruhu do pruhu a dostali se tak na svůj exit, můžete to být VY, kdo právě způsobil zácpu.

Někdy nemají žádnou příčinu. Jsou jako vzory v písku nebo písečné duny objevující se bez důvodně. Jako vlny na moři způsobené větrem nebo látka vlajky třepotající se ve větru. Prostě se najednou spontánně objeví. V jazyce nelineární dynamiky se tomu říká “Emergent phenomenon” (Nevím, jak to přeložit, něco jako spontánní úkaz.)

Jak dlouho vydrží “zácpová vlna” po odstranění překážky? To závisí na hustotě provozu a na počtu aut, které v zácpě uvízly, ale někdy může vydržet spoustu hodin. Když je provoz řídký, tak se většinou zácpa rozptýlí velmi rychle. Ale pokud provoz zůstává hustý, tak se zácpa taky nemusí vůbec rozptýlit. Když jsou podmínky tak akorát (tedy, když “kondenzace” nastává rychleji než “vypařování”), tak i malaá zácpová vlna může růst a růst. Podobně jako když ponoříte krystal do přesyceného roztoku. Když je provoz dostatečně hustý, tak jeden jediný řidič může způsobit že provoz zatuhne v jeden obrovský krystal.

Takže příště až se budete blížit k zácpě, neberte ji jako pitomou posr***nou zácpu. Berte ji jako tlakovou vlnu, která vás dostihla a pohltila. Zkuste si ji představit jako žijící organismus, který má místo buňek automobily a doufejte, že vás  ta améba zase brzy vyplyvne. Podívejte se na ni seshora jak se jako vlna pohybuje dozadu, zatímco vy se pohybujete kupředu.

Jednoduchý lék na zácpy vznikající sloučením pruhů

slomerg1

fasmerg1<<<<< VLEVO: BĚŽNÍ ŘIDIČI, KTEŘÍ JEDOU VELMI TĚSNĚ U SEBE KDYKOLIV SE PROVOZ VÝRAZNĚ ZPOMALÍ. NIKDO NEMŮŽE Z PRUHU DO PRUHU, JEDINĚ AŽ NA KONCI ZÁCPY. VŠIMNĚTE SI JEJICH NÍZKÉ RYCHLOSTI

VPRAVO >>>> NEOBVYKLÍ ŘIDIČI POUŠTÍ DRUHÉ PŘED SEBE A UDRŽUJÍ SI PŘED VOZEM VELKÝ PROSTOR, A TO I KDYŽ SE PROVOZ ZPOMALÍ NA RYCHLOST CHŮZE. SLUČOVÁNÍ JÍZDNÍCH PRUHŮ JE HLADKÉ. VŠIMNĚTE SI, JAK JEDOU RYCHLE.

Zácpy se objevují kdykoliv se 2 pruhy musí sloučit do jednoho. Řada aut nemá kam vjet, když mezi ostatními auty nejsou žádné mezery. Je vidět, že řidiči, kteří si udržují před vozem velkou mezeru pomáhají zácpu odlehčit.

Jak odlehčit tento typ zácpy

  • Udržujte si velký prostor před autem
  • Pusťte před sebe jedno, dvě, klidně i tři auta z vedlejšího pruhu
  • Když se provoz zastaví úplně, DRŽTE SI PŘED SEBOU PROSTOR NA DVĚ AUTA
  • Nikdy “netrestejte” řidiče z bočního pruhu tím, že zavřete mezeru

Skvělé na tom je, že není nutné, aby to tak dělali všichni. Když i jen pár řidičů si udržuje velký prostor před autem, tak umožní plynulé slučování jízdních pruhů a pomůžou tak zabránit situaci na obrázku vlevo.

POKRAČOVÁNÍ PŘÍSTĚ …

 

Pokud se vám článek líbil, nezapomeňte ho sdílet na Facebooku, Twitteru či jinak 🙂

Jak rozhýbat vodu myšlenkami (a trochou EEG)

Umělkyně Lisa Park přišla se skvělým nápadem, jak rozhýbat vodu myšlenkami. Používá k tomu malý EEG scanner, který snímá její delta, theta, alfa a beta vlny v mozku. Data jdou následně do počítače, který je převádí na zvuk. Pod každou nádobou je pak reproduktor, který hraním vodu rozhýbává.

park-1 park-3 park-4

Ještě zajímavější propojení elektroniky a počítačů zkoumá britský vědec Kevin Warwick. V roce 2008 postavil malého robota s krysím mozkem. Používá vyšlechtěné krysí neurony jako “řídící jednotku”. Výhodou tohoto řešení je to, že neuronová síť je schopná se sama učit. Je to její přirozenost se učit. Neurony v robotovi přežívají (nyní) asi 3 měsíce, takže již bylo několik “generací” těchto robotů. Každý se choval trochu jinak…