Wczoraj (w sobotę, 19 marca 2011) odbyło się kolejne z serii meet.js spotkanie, tym razem w stolicy. Spotkania front-endowe nastawione na JavaScript organizują Damian Wielgosik i Paweł Czerski - osoby, które stoją za zeszłoroczną konferencją Front Trends. Jest to bardzo ciekawa inicjatywa, a co także istotne, wstęp jest całkowicie darmowy.

meet.js w Warszawie

Spotkanie odbyło się w PJWSTK, trwało około trzy godziny. W tym czasie udało się zmieścić aż cztery interesujące prezentacje. Oto i one:

Kontekst wywołania w JavaScript [Robert Tomaszewski, Hyper Media]

Robert opowiedział krótko o historii języka, by za chwilę przejść do głównej części prezentacji dotyczącej kontekstu. Opowiedział o kontekście globalnym, lokalnym oraz leksykalnym (przysłanianie zmiennych). Pokazał, jak samemu można wskazać wybrany kontekst. Przedstawił różnice w kontekście podczas różnego wywoływania funkcji, a także zastosowania słowa kluczowego this. Nieoficjalny dowcip końcówki tej prezentacji brzmi: "Twoja stara nie ma Add Event Listenera".

Nowe sposoby na obiekty w JavaScript 1.8.5 i ECMAScript 5 [Marek Stępień, Aviary, Mozilla]

Marek przedstawił Object i całą masę nowych, ciekawych funkcji, które przydadzą się głównie do zwiększenia bezpieczeństwa naszych skryptów. JavaScript 1.8.5 rozwiąże problemy obchodzone do tej pory między innymi za pomocą domknięć (closures). Globalny Object.* będzie miał do dyspozycji następujące metody:

  • - defineProperty - ustala czy własności można zapisywać, zobaczyć w wyliczeniu, czy są konfigurowalne
  • - getOwnPropertyDescriptor - pobiera deskryptor istniejącej własności
  • - preventExtensions - blokuje możliwość dodawania nowych własności do obiektu (isExtensible)
  • - seal - zapieczętowuje obiekt, nie można go konfigurować, usuwać jego własności (isSealed)
  • - freeze - całkowicie zamraża obiekt, nic nie można na nim zrobić, nie można go już odmrozić (isFrozen)
  • - create - tworzy nowy obiekt
  • - keys - zwraca tablicę wyliczalnych nazw własności obiektu, zamiast hasOwnProperty w pętli

Na te wszystkie bajery trzeba będzie jednak trochę poczekać, wspierane przeglądarki to: Firefox 4+, Chrome 5+, IE 9+, Safari 5+, Opera obiecuje wprowadzić to jak najszybciej. Więcej informacji o obiektowości w ECMAScript5 znaleźć można w tym wpisie, natomiast prezentacja znajduje się tutaj.

Konkurs

W przerwie odbył się szybki konkurs, w którym do wygrania była wejściówka na Falsy Values oraz weekend w Karpaczu. Zwycięzcą okazał się być świetny javascriptowiec Michał Budzyński, co akurat nie było zaskoczeniem. Wybrał oczywiście Karpacz, a wejściówkę zdobył po chwili Marek Stępień. Na czym polegało zadanie?
var adder = (function() {
	// kod
})();
adder(2)(3)(4).get(); // 9

Należało uzupełnić powyższy kod tak, by funkcja dodawała przekazane liczby. Oto i rozwiązanie:
var adder = (function() {
	var i = 0;
	var fn = function(j) {
		i += j;
		return fn;
	};
	fn.get = function() {
		return i;
	}
	return fn;
})();
adder(2)(3)(4).get();

Einie framework [Tomasz Tunik]

Einie nie jest frameworkiem do wizualizacji (jak processingJS), nie jest także frameworkiem do tworzenia gier (jak cocos2d). Czym w takim razie jest Einie? Jak tłumaczy autor, po trochu jednym i drugim. To framework do prototypowania i szybkiego budowania aplikacji HTML5 opartych na scenach i widokach, taka swoista piaskownica do zabawy JavaScriptem. Projekt Einie jest w 100% otwarty, na licencji MIT, jednak jak mówi sam twórca - mocno niestabilny jeśli chodzi o strukturę kodu. To taki prywatny projekt-zabawka, który zaczyna wychodzić na światło dzienne. Einie ma całkiem ciekawe możliwości: dobre zarządzanie zasobami, obsługę onUnload (zapisywanie stanu Canvas przy zamykaniu przeglądarki i ustawianie go przy ponownej wizycie), requestAnimationFrame (rysowanie po Canvas dopiero wtedy, gdy rzeczywiście jest coś nowego do narysowania), globalCompositeOperation (rysowanie warstw jedna na drugiej), czy obsługa bufora, który można szybko i łatwo zrzucić na Canvas. Przykładem gry stworzonej w 48 godzin (!) na konkurs HTML5 Game Jam przy pomocy Einie jest PewPewTowers.

Liczby pseudolosowe w JavaScript [Michał Budzyński]

Pseudolosowość w JavaScript na sam koniec spotkania przedstawił Michał. Opowiedział o steganografii, jednym ze sposobów wykorzystania liczb losowych w praktyce. Pokazał dość niekonwencjonalny sposób zakodowania wiadomości tekstowej w zwykłym obrazku, oraz sposób na odzyskanie tej wiadomości za pomocą tej samej funkcji losowej z identycznym ziarnem. Jest to także ciekawy pomysł na generowanie map do gier.

Podsumowanie

Warto było pojawić się na tym spotkaniu. Nie dość, że tematyka ciekawa, to jeszcze wejście za darmo. No i można brać czynny udział we front-endowej społeczności na naszym rodzimym podwórku. Mam nadzieję, że meet.js w Warszawie będzie od teraz spotkaniem cyklicznym.