poniedziałek, 7 października 2013

szkola, tornister i dziecko

Tak ostatnio widze, ze znow media sie obudzily, ze tornistry ciezkie. Ja pamietam swoj tornister jako mega ciezki, zwlaszcza w liceum, gdzie objetosc ksiazek byla calkiem spora, przez co waga tez niczego sobie. Do tego atlasy, zeszyty, czesto zbiory zadan itp. Majac 7-8 roznych przedmiotow w ciagu dnia - tornister pekal w szwach. Koszty tez nie male.

Koszty ksiazek do obecnej pierwszej klasy technikum to wydatek rzedu 500 pln, do tego lista potrzebnych narzedzi na praktyki (klasa o profilu fryzjerskim) kolejne 500 pln. koszt takiej wyprawki - 1k pln. Masakra.

Moja najmlodsza corka wlasnie rozpoczela przygode ze szkola (w Niemczech, gdzie mieszkamy). Koszt wyprawki (podreczniki, cwiczenia i zeszyty) na nastepne 2 lata - 90 euro. Koszt wszystkich potrzebnych dodatkowych pomocy (tez na 2 lata) - czyli plastelina, rozne rodzaje kredek, bloki roznej wielkosci, olowki, dlugopisy, papier kolorowy, jakies folie i naklejki - 60 euro. W sumie 150 euro, ktore zaplacilismy naszej nauczycielce, bo to ona zajmuje sie zakupem podrecznikow (w ilosci wiekszej niz ilosc dzieci w klasie, bo wiadomo, dzieci gubia niszcza itp). Dodam, ze limit wynosi 100 euro/dziecko/rok - limit ten dotyczy kwoty, jaka rodzice wydaja na ksiazki dla swoich pociech.

Jak to wyglada w praktyce? W pierwszej klasie dzieci maja zadawane niewiele o ile w ogole. Ksiazki sa przeznaczone na mniej wiecej 2-3 miesiace uzywania, wiec sa cieniutkie, maja miekkie okladki. WSZYSTKIE ksiazki i zeszyty zostaja w szkole. Jesli dziecko nie odrobi lekcji w swietlicy, to bierze potrzebne materialy do domu, jesli odrobi ksiazka/zeszyt/cwiczenia z odrobiona praca domowa trafia w odpowiednie miejsce w sali lekcyjnej.

Tak na prawde ja niewiele wiem o tym, jak i czego uczy sie moje dziecko. Moge tylko powiedziec, ze przed rozpoczeciem roku szkolnego (co nastapilo 10 sierpnia) Mala umiala czytac powoli i sylabizujac po polsku. Miala problem z niemieckimi regulami, wiec niechetnie probowala czytac niemieckie teksty, mimo, ze mowi plynnie po niemiecku. Na chwile obecna (po 2 miesiacach nauki) pisze i czyta po niemiecku. Wciaz miesza litery (male i duze), ale na tym etapie nacisk jest kladziony na umiejetnosc napisania i przeczytania, styl nie jest wazny, zasady ortograficzne tez nie. Wazne, ze dziecko moze sie komunikowac w formie pisemnej.

Dzieciaki maja taki specjalny zeszyt, gdzie rysuja np co robili w weekend, albo wyrazaja na ryskunku, czy im sie podobala ksiazka, w ktorej ostatnio pracowali. Dzieci chetnie dodaja opisy do swoich tekstow. Nauczycielka ma ich 23 w klasie i sprawdza kazda taka prace z osobna, pisze swoje komentarze (pieknymi wyraznymi, pisanymi literkami, ktorych zazdroszcza jej wszystkie dzieci). Czasami poprawia pisownie, ale nie kreslac tekstow dziecka, ale dodajac swoj komentarz i proszac by dziecko napisalo to samo obok, ale juz poprawnie.

A wracajac do tornistra. Mloda ma wielki, wypasiony i wymarzony tornister. Wazy on cos kolo 2-3kg. Razem z zawartoscia (piornik, teczka i zeszyt do komunikacji z nauczycielami, kanapki i butla z woda) jakies 4kg. Mloda musi go wniesc na 2 pietro po schodach (ma klase na 2 pietrze), po lekcjach musi go przeniesc do swietlicy (na tym samym pietrze, moze 15 metrow od klasy), jesli odbieram ja po 16:30 to musi go zniesc na parter do drugiej sali. Zaprowadzajac ja do szkoly lub odbierajac zawsze sama niose plecak. Stanowczy plus z lekcji w jednej sali.

Starsze dzieci tez maja ksiazki w szkole. Szkola sama sponsoruje ksiazki, ktore nie mieszcza sie w ustawowych 100 euro (czyli zasadnicza wiekszosc). W praktyce jest kilka sztuk w bibliotece i nauczyciele kseruja odpowiednie rozdzialy. Do kazdego przedmiotu jest miekki segregator, do ktorego wpina sie xerowki + kartki do notatek. Po zakonczeniu dzialu xerowki i zapisane kartki zostawia sie w domu, a do szkoly nosi sie pusty segregator przygotowany na nowe xerowki. W ten spsob plecaki sa lekkie.

Uwazam to za bardzo dobre rozwiazania. Podoba mi sie wersja z kilkoma cienkimi ksiazkami na rok, bo jesli nawet trzeba cos odrobic w domu, to ciezar takiej ksiazki jest niewielki. Podobaja mi sie lekcje w jednym miejscu (wyjatkiem jest religia i gimnastyka, ale i tak dzieci zostawiaja tornistry w swojej klasie). Podoba mi sie pomysl z xerowaniem potrzebnych materialow i noszeniem do szkoly tego, co jest w chwili obecnej potrzebne, a nie calej wielkiej ksiazki do tego oprawionej w twarda okladke. Podoba mi sie system zapewniajacy miejsce do odrabiania lekcji i fachowa opieke w swietlicy. Dodam, ze panie pracujace w swietlicy sa oplacane przez miasto, a nie przez szkole. Podoba mi sie praca z uczniem w szkole, gdzie odrabianie prac domowych jest sporadyczne i sluzy glownie pochwaleniu sie rodzicom co dziecko juz umie.

środa, 2 października 2013

przemyslenia po pol roku pracy w DH

Pol roku minelo szybciutko. Ale od poczatku. Co to jest DH? Porownujac do firm, w jakich pracowalam w PL powiedzialabym - korpo! Ale nie. To holding zatrudniajacy ponad 600 osob na calym swiecie. Wciaz ma status start-upu, bo istnieje 3 lata (dokladnie, co do miesiaca). Dzial IT w HQ w Berlinie liczy sobie, bagatela, jakies 70-80 osob. W tym mnie.

W poniedzialek zakonczylam oficjalnie okres probny, trwajacy pol roku, od 1 kwietnia. Przez ten czas zaliczylam Bootcamp, czyli robilam proste zadania z roznych dzialow, zeby zapoznac sie z aplikacja. Mialam swojego supervisora, ktory mi pomagal, mowil co i jak i wspieral w nierownej walce z nowa aplikacja. Zmienilam przynaleznosc chapterowa. Po kilku tygodniach doszlam do wniosku, ze bardziej bawi mnie frontend niz backend (zwlaszcza w jezyku ktorego nie znam) i zrobilam transfer z BE (backend) do FE (frontend). Z punktu widzenia obowiazkow zawodowych, nic sie nie zmienilo. Natomiast 10% naszego czasu pracy (4h/tydzien) mamy przeznaczac na samodoskonalenie, w czym nas wspieraja tzw Chapter Leaderzy. Najczesciej organizuja nam warsztaty, na ktorych cos cwiczymy (np pisanie testow jednostkowych), ogladamy i dyskutujemy (nagrania z konferencji czy innych wydarzen) czy dzielimy sie wiedza zdobyta na warsztatach/konferenacjach w ktorych uczestniczylismy (najczesciej finansowane to bylo przez firme). Wiec przeskok z Pythona na JS widze jako wielki plus :)

Udalo mi sie rowniez udowodnic swoja skutecznosc rozwiazujac mnostwo problemow, umiejetnosc wspolpracy z wieloma zespolami, i zaskarbic sobie sympatie najwyzszego technicznego bossa. To wszystko umozliwilo mi wywalczenie podzialu mojego czasu pracy pomiedzy dwa zespoly projektowe. Pierwsze pol roku uwazam wiec, za bardzo udane :)

A czym sie zajmuje na codzien? Pracuje w tzw. Country Team, czyli jednostce finansowanej przez kraje, w ktorych prowadzimy dzialanosc (w moim przypadku oplaca mnie Australia). Na poczatku bylam jedyna osoba dbajaca o Australie, od kilku miesiecy mam "wspolnika", ktory przejal backend a ja sie skupiam na sprawach frontendowych. Na poczatku zajmowalam sie glownie bugfixingiem, ale teraz wiekszosc mojej pracy to dokonywanie zmian lub dodawanie nowej funkcjonalnosci. Najbardziej mnie bawi grzebanie w istniejacej strukturze JS (Backbone, node.js i milion bibliotek) i dodawanie nowych rzeczy tak, zeby sie ladnie komponowaly z caloscia, bez utraty modularnosci.

wtorek, 1 października 2013

CSS Flexible box layout module - part 3 - Positioning on main and cross axis

Positioning flex items alongside main axis we should to remember this image:



It means we should forget about float and use just justify-content property:

justify-content: flex-start; /* aligns flex item to main start */
justify-content: center; /* centers flex item alongside main axis */
justify-content: flex-end; /* aligns flex item to main end */
justify-content: space-between; /* puts space between flex items and spreads them on all available space*/




justify-content: space-around; /* puts space around flex items and spreads them on all available space */




For cross-axis it is similar as for main axis, but some properties change:



align-items: flex-start; /* aligns flex item to cross start */
align-items: center; /* centers flex item alongside cross axis*/
align-items: flex-end; /* aligns flex item to cross end */









align-items: baseline; /* all flex items are aligned such that their baselines align. The item with the largest distance between its cross-start margin edge and its baseline is flushed with the cross-start edge of the line. */




align-items: stretch; /* flex items are stretched such as the cross-size of the item's margin box is the same as the line while respecting width and height constraints. */


środa, 19 czerwca 2013

CSS Flexible box layout module - part 2 - Basics

In the beginning...

In the beginning we would like to know some vocabulary:
Flex container – DOM element which contains flex items. It defines available spaces for its children.

To create a flex container use display property with “flex” or “inline-flex” value;

section {
  display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */
  display: -moz-box; /* OLD: Firefox (buggy) */
  display: -ms-flexbox; /* MID: IE 10 */
  display: -webkit-flex; /* NEW, Chrome 21+ */
  display: flex; /* NEW: Opera 12.1, Firefox 22+ */
}


Because it is still Candidate Recommendation, browsers implement it as an experiment, so we need to use prefixes. There are 3 syntaxes – new (standard), old and mid (legacy syntax). In the end of this article I've added some links explain syntax for some of properties. In this article I use standard syntax without prefixes.

flex item – child element of flex container
main axis – axis defined by flex-direction property in flex container, by default it is X-axis (row/row-reverse value)
cross-axis – perpendicular to the main axis.

CSS Flexible box layout module - part 1 - Introduction

Long long time ago...

Maybe not so long, but some years ago all layouts used tables as a base. It was nice time and almost everything was possible using table cells. But document structure and semantic were completely unreadable and layouts were not flexible. So we got “CSS box model” which we still use today. It is semantic way (especially if use HTML5 tags) to create layout. But it still generates problems. Especially related to calculation of width/height of elements. Setting width of element on 10% and adding border and padding increases element width from 10% to 10% + border + padding.



Flexbox

Flexible box layout is like an answer for all those troubles. It is flexible, semantic and uses available space without specific units. Sounds great, but what exactly does it mean?

Imagine you have a DOM element like section, inside it you want to position n children elements, and you want every of those children to have the same width. As long as you don't know number of children elements it is hard to code. But flexbox gives a possibility to do this without any calculation. How? It is quite simple, but first we need to know how flexbox works.

piątek, 8 marca 2013

Zatrudniamy webdeva - kwiatki

Przeprowadzam rozmowy z kandydatami. Czasami Ci ludzie chyba sami nie wiedza co mowia :D

Jednym z wymagan jest bardzo dobra znajomosc JavaScriptu...
Ja: Prosze podac przyklad na roznice w interpretowaniu kodu JavaScript przez IE7 i inne przegladarki. Wystarczy jakis jeden, z jakim spotkal sie pan w trakcie swojej pracy.
Kandydat: Ja pisze w jQuery i nie mialem takich przypadkow, bo ta biblioteka zapewnia zgodnosc z IE7...

wtorek, 19 lutego 2013

zatrudniamy webdeva, cz. 2

W zeszlym tygodniu nasza firma zaprosila dwoch kandydatow na moje stanowisko wydelegowanych przez agencje. Babka z Hiszpanii, facet z Meksyku. Jako, ze to byl moj pierwszy tydzien w pracy po chorobie nie bylam zapoznana z tematem. Udalo mi sie nawet rzucim okiem w CV.

Babka sensowna, z frontendowym doswiadczeniem, wygladalo ze pasuje. Facet wydal mi sie dziwny, zajmowal sie developerka backendu, administrowaniem serverami luínuxowymi i pisaniem aplikacji na telefony komorkowe. Nasi dwaj backendowcy odebrali to calkiem inaczej. Po rozmowie z facetem, jak na skrzydlach przylecieli zeby dac mu test i juz prawie witali go w teamie. Oczywiscie na moje 'ale', ze facet nie ma slowa o frontendzie w CV, zostalo zakrzyczane, ze przeciez uzywal mobile jquery w swoim projekcie... I ze jak ktos uzywa biblioteki napisanej w JS to musi znac JS...

No coz, chwile pozniej przezylam szok. Jakims cudem udalo im sie zaprosic oboje kandydatow nie tylko na ten sam dzien, ale i na te sama godzine. Babke posadzili przy komputerze, dali kartke z zadaniem i zaprosili faceta na interview. Patrzylam na to lekko zaskoczona. Interview w sprawie stanowiska dla webdeva przeprowadzali: project manager i dwaj backend developerzy. No coz. Doszlam do wniosku, ze tak ma byc, nie potrzebuja mnie przeciez, zeby sprawdzic pozioom wiedzy kandydata.

Babka posadzona przy tescie walczyla z linuxem, wieszajacym sie nano i myszka ergonomiczna (ktora dla osoby niewprawnej w jej uzywaniu jest koszmarem). Oczywiscie przy zapraszaniu na rozmowe nikt nie spytal o srodowisko, w jakim najchetniej pracuje kandydat, bo skoro nasi backendowcy pracuja na linuxie, to reszta swiata tez musi. Pierwsze zadanie dosc proste, ot wczytac plik csv i cos tam z danymi zrobic w php. Tylko po co frontendowcowi umiejetnosc wczytywania plikow csv w php? Niewazne. Drugie zadanie - ten sam plik csv tylko wczytac go w jquery i wyswietlic w html. Do tego nie zdazyla dotrzec. Nano zwiesilo jej terminal, trzeba bylo wszystko restartowac. Po 15 minutach panowie wrocili z rozmowy z kandydatem, posadzili go przy kompie i zabrali panienke na rozmowe.

A ja z koleznka wybralam sie do sklepu po cos na obiad. Jak wrocilam Meksykanin wciaz biedzil sie nad zadaniem, babka zniknela. Po skonczeniu pierwszego zadania kandydat trafil na rozmowe z nasza dyrektor zarzadzajaca, po czym posadzili go do drugiego zadania. Moi backendowcy byli coraz mniej szczesliwi. Poziom ich euforii siegnal gruntu w momencie, gdy facet objasniajac jak zrobil zadanie drugie rzucil haslem odnosnie jakiesj funkcji w jQuery ze on nie wie jak to dziala. Pelna zalamka.

Koniec koncow dowiedzialam sie, ze babka uciekla. Nie czula sie komfortowo z niedzialajacym linuxem i praca z backendem.

cdn...

niedziela, 17 lutego 2013

zatrudniamy webdeva...

Jako, ze odchodze z koncem marca z mojej obecnej firmy, wlasnie zaczela sie polka zwiazana z zatrudnieniem kogos na moje miejsce. Ale zacznijmy od poczatku.

Radosna nowine przekazalam mojemu szefowi w tygodniu poprzedzajacym swieta. Oczywiscie mailowo, bo przez 3 dni nie moglam go zlapac osobiscie. Zlozylam w sekretariacie papier, wyslalam mu maila i zadowolona usiadlam za biurkiem. 3 miesiace wypowiedzenia w perspektywie.

Pozniej byly swieta, na 3 dni po nowym roku nie bralam urlopu chcac miec go wiecej na koniec marca. Tak wiec przydreptalam do pracy i dziarsko wzielam sie za zadania z jiry. Moj szef zaprosil mnie na rozmowe, na ktorej dosc dokladnie wypytal mnie co to za firma (toz to nie tajemnica, umowe mam podpisana, to moge mu powiedziec :P), jakie warunki (i nawet nie o finanse pytal, tylko o czas pracy, bo z racji posiadania przedszkolaka w domu czasami siedze dluzej, a czasami wychodze wczesniej i gnam na zlamanie karku do przedszkola, zeby ja odebrac przed 17). W koncu padlo sakramentalne pytanie, czy moga cos zrobic, zeby mnie zatrzymac. Z lekkim usmiechem odpowiedzialam, ze chyba nie bardzo, bo juz podpisalam umowe. Przyjal do wiadomosci

Pracuje nad jednym z najwazniejszych projektow frontendowych od dosc dlugiego czasu. I jeszcze kilka miesiecy sie na to zejdzie. Projekt polega na przedarcie sie przez gaszcz warunkow w kodzie php, ktory produkuje kod html i js, i zmiane html i js na cos, co sie pieknie nazywa responsive design. Cel jest dosc prosty, bez tworzenia subdomeny dla urzadzen mobilnych dac dwa layouty w jednym. Pracy tyle, ze czasami to juz mi sie nie chce. Ale jestem na finishu, wiekszosc zrobiona. Przynajmniej dla jednej podstrony.

Na poczatku stycznia okazalo sie, ze:
a) nasz CEO znika na urlop wychowawczy do konca marca
b) nasza dyrektor zarzadzajaca wraca z macierzynskiego, ale tylko na jeden dzien w tygodniu, ale za to bedzie pod mailem i telefonem!
c) nikomu sie nie spieszy z zatrudnieniem nowej osoby na moje miejsce (przeciez maja tyle czasu).

I owszem napisalismy oferte i wywiesilsmy ja na naszej stronie. I sobie wisi, porawie w sumie niewidoczna. Moja propozycja umieszczenia oferty na LinkedIn czy innym Xing wywolala entuzjazm (co to jest 150€ za miesiac wiszenia ofertty w porownania do prowizji, jaka agencje pobieraja) i na entuzjazmie sie skonczylo.

Mamy juz luty. Poki co nie mamy zadnego konkretnego kandydata. Mimo olbrzymich kosztow dyrektor zarzadzajaca sie zlamala i dala zlecenie agencjom.

cdn...

czwartek, 7 lutego 2013

lamanie zasad widzialnosci zmiennych w JavaScript

W poscie zasieg zmiennych (scope) w JavaScript opisalam jak wyglada widocznosc zmiennych w JavaScript. Podstawowa regula jest dosc jasna. Konkretny zasieg jest ograniczony przez funkcje. To co jest w srodku moze korzystac z tego co jest na zewnatrz, ale to co jest na zewnatrz nie ma dostepu do tego co jest w srodku.

var abc = "abc";

function xyz() {
  var def = "def";
}

console.log(abc);
console.log(def);

Wykonanie powyzszego kodu wyswietli abc oraz blad: ReferenceError: def is not defined. Zmienna def zostala zdefiniowana ze slowkiem var, przez co nie jest zmienna globalna, tylko lokalna we wlasnym scopie oraz scopach wewnetrznych. Z zewnatrz jej nie widac. Takie podejscie nazywamy zakresem statycznym lub leksykalnym (lexical scope). Tak na prawde o tym, gdzie sa jakie zmienne i jaki maja zasieg mozemy sie dowiedziec analizujac kod programu.

To na tyle powtorzenia. Czy istnieje sposob na udostepnienie zmiennych z wnetrza funkcji do globalnej przestrzeni nazw? Sprawdzmy.

Zalozmy, ze mamy taka strukture:

var a = "a";

function foo1 () {

  var b = "b";
  console.log(b);

  function foo2 () {

    var c = "c";
    console.log(c);

    console.log(b);

  }
}

foo1();
foo2();

Zasieg globlany wie o istnieniu zmiennej a i funkcji foo1. Reszta jest przed nim ukryta o czym swiadczy blad: ReferenceError: foo2 is not defined. Naszym celem jest wyciagniecie foo2 i jej zawartosci na swiatlo dzienne czyli do globalnej przestrzeni zmiennych.

Przede wszystkim zeby to zrobic musimy zmienic troszke podejscie. Statyczna prezentacja zakresow widzialnosci zmiennych nam tu nie pomoze. Do problemu trzeba podejsc dynamicznie!! Jedno z wielu rozwiazan podalam w poscie funkcje w JavaScript, part 5 - funkcje moga zwracac funkcje:

var a = "a";

function foo1 () {

  var b = "b";
  console.log("foo1 " + b);

  return function () {

    var c = "c";
    console.log("foo2 " + c);
    console.log("foo2 " + b);
  };
}

var foo2 = foo1();
foo2();

Jak widac na konsoli mamy wypisane foo1 b, ktore pochodzi z wykonania foo1 podczas przypisania tego co ona zwraca do foo2. Nastepnie wywolanie foo2 wypisuje foo2 c oraz foo2 b. Czyli z poziomu zasiegu globalnego mamy dostep do "wnetrznosci" foo1. Takie pamietanie przez funkcje swojego kontekstu nazywamy domknieciem (closure).

Innym sposobem na wykorzystanie domkniecia jest operowanie na zmiennych globalnych wewnatrz funkcji. Czym rozni sie zmienna globalna od zmiennej lokalnej w JavaScript? Slowkiem var:

var a = "a";

function foo1 () {

  var b = "b";
  console.log("foo1 " + b);

  foo2 = function () { // nie ma var

    var c = "c";
    console.log("foo2 " + c);
    console.log("foo2 " + b);
  };
}

foo1();
foo2();

Tutaj tak samo jak w poprzednim przykladzie istnienie foo2 zalezy od wykonania foo1. Foo2 nie istnieje, dopoki nie zostanie utworzone w foo1 jako zmienna globalna. Tutaj tez mamy domnkniecie, nasza zmienna globalna foo2 pamieta kontekst w ktorym zostala utworzona i wyswietla prawidlowo zmienna b.

środa, 6 lutego 2013

funkcje w JavaScript, part 5 - funkcje moga zwracac funkcje

Funkcje zawsze zwracaja jakas wartosc, nawet jesli jawnie nie jest zdefiniowane return (wtedy zwracaja undefined). Funkcja moze zwrocic tylko jedna wartosc, na przyklad tablice obiektow lub... inna funkcje:

function a() {
  console.log('A!');
  return function(){
    console.log('B!');
  };
}

a();

Jak widac, funkcja a() zwraca funkcje anonimowa. W momencie, gdy wywolamy a() na konsoli wypisze sie A!, kazde kolejne wywolanie a() ponownie wypisze tylko A! na konsoli. To co jest w return nie jest wykonywane w trakcie wolania funkcji, to jest to, co funkcja zwraca. To jak sie dobrac do tego co zwraca return?

var b = a();

a();
b();

Rozwiazaniem jest przypisanie wyniku dzialania funkcji do zmiennej. W tej sytuacji wywolanie a() nadal bedzie wypisywac A!, natomiast b(), do ktorego zostala przypisana funkcja anonimowa, ktora zwraca funkcja a(), bedzie wypisywac B!.

W ten sam sposob mozna zrealizowac nadpisanie (czy przepisanie) sie funkcji. Wystarczy pod wynik dzialania funkcji a() podstawic zmienna... a:

var a = a();

a();
a();

Tylko za pierwszym razem, w momencie przypisania wykonuje sie cialo oryginalnej funkcji a() i na konsoli pojawia sie A!. Po przypisaniu, funkcja a() przy kazdym wywolaniu na konsoli pisze B!, poniewaz teraz jej cialem stala sie funkcja anonimowa zwracana przez oryginalna funkcje a().

No dobrze, wszystko pieknie, ale co jesli funkcja anonimowa zwracana przez oryginalna funkcje a() korzysta z zakresu zmiennych dostepnych w oryginalnej funkcji a()? Ot, na przyklad:

function a() {
  console.log('A!');
  var abc = "abc";
  return function(){
    console.log(abc);
  };
}

Otoz, wszystko bedzie dzialac. Dla funkcji anonimowej scope zostanie zachowany (jak i dlaczego, o tym za chwile, w innym poscie):

var a = a();

a();
a();

Przy pisaniu na konsoli zobaczymy A!, natomiast kazde kolejne wywolanie a() wypisze juz na konsoli abc.

w sprawie samowywolujacych sie funkcji

Do postu o samowywolujacych sie funkcjach dostalam komentarz, bardzo trafny zreszta. Wiec postanowilam napisac kilka slow na ten temat.

Faktem jest, ze polskie tlumaczenie self-invoking nie jest jakos specjalnie udane, ale z braku lepszego uzywamy wlasnie okreslenia samowolajaca sie funkcja. Ale tak na prawde, dziekuje Ci Anonimowy Czytelniku, za podniesienie tej kwestii, ta funkcja jest wykonywana w miejscu w ktorym zostala w kodzie wstawiona. Sama sie nie wola, jest od razu wykonywana przez przegladarke. Oczywiscie dzieje sie tak dzieki dwom parom nawiasow okraglych, z ktorych jedna para obejmuje funkcje (jako calosc) a druga wskazuje ze jest to funkcja, dzieki czemu przegladarka ja wykonuje.