Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Vokiel, dodany: 22.05.2011 01:32, tagi: javascript

Falsy Values Logo

source: falsyvalues.com

Falsy Values === A True JavaScript Event

(18-20 May, 2011, Warsaw, Poland). Again Paweł Czerski and Damian Wielgosik (organizers of the Front Trends 2010 Conference) prepared high-level front-end conference. As before on FT, with names that requires no introduction: Zbigniew Braniecki, Douglas Crockford, Tantek Çelik, Tom Hughes-Croucher, Andrea Giammarchi, Christian Johansen, Michał Budzyński and more.

This time, the event was not only a conference (1 day) but also (or mostly – 2 days) – a workshops. On the first two days participants could feel live coding on seven different workshops. Beginning from „Introduction to JavaScript”, „HTML5/CSS3″ through „Game Development”, „node.js”, „Desktop applications with Javascript” ending with „ECMAScript 5″ and „TDD/JavaScript testing”.

The conference venue

The third and last day of this event – was the conference day. It took place in Kino Femina – yes the speakers was presenting theirs speeches in a cinema. It was really comfortable for the listeners during the presentations, but not so much at breaks. The cinema hall was a bit too tight for such big group of people. Fortunately there was only one track of the speeches, we didn’t have to choose between two great presentations, like it was on Front Trends, so all the presentations could be heard.

Conference schedule

  1. Douglas Crockford – Styling for success
  2. Dmitry Soshnikov – ECMAScript 6
  3. Juriy „kangax” Zaytsev – Fabric.js – building a canvas library
  4. Tom Hughes-Croucher – node.js
  5. Zbigniew Braniecki – Javascript compilation
  6. Brian LeRoux – PhoneGap
  7. Tantek Çelik – CASSIS

src: falsyvalues.com

Douglas Crockford – Styling for success

Douglas started his speech from showing some psychological research. Told us about Head vs Gut, how and why it works. After this introduction he was talking about readable code, perfection, consistent style, explicitness, avoiding confusion, writing in language you are writing in. He brought some info about JSLint – The JavaScript Code Quality Tool. If your code is written by the gut not head – be careful with this tool – it will hurt your feelings. "There will be bugs"

dmitry-soshnikov

src: falsyvalues.com

Dmitry Soshnikov – ECMAScript 6

Dmitry was talking about new features planned in ECMAScript 6 (ES6). There was a long list of changes they are preparing for us with Harmony. Highlights to read about: let: block scope, constants (variables and functions), function parameters default values, destructing, object arguments (…rest), short notations, proxy objects, modules system, generators (iterators, coroutines/multi-tasks, array comprehensions. You should see his slides with bunch of code examples on slideshare

juriy-zaytsev

src: falsyvalues.com

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: singles, dodany: 21.05.2011 14:58, tagi: javascript, php

FalsyValues to drugi event w Polsce organizowany przez Pawła Czerskiego oraz Damiana Wielgosika – organizatorów zeszłorocznego FrontTrends 2010. A z racji, że na FalsyValues także byłem (i piwo, a raczej sok piłem) pozwolę sobie na ocenę części konferencyjnej FalsyValues i porównanie jej do FrontTrends ([FV:FT]). W warsztatach nie uczestniczyłem, tak więc ten fragment pomijam.

Speakerzy

Z racji, że część konferencyjna trwała jeden dzień i nie była podzielona na ścieżki, do Warszawy przyjechało zdecydowanie mniej osobistości niż na FT. Nie znaczy to jednak, że były to osobistości nieznane albo nieodpowiednie – co to to nie. Kilku speakerów mieliśmy okazję widzieć już rok temu – Douglas Crockford, Tantek Çelik czy też Zbigniew Braniecki (a na warsztatach dodatkowo Andrea Giammarchi oraz Christian Johansen). Najlepiej jako prowadzący wypadli moim zdaniem Tom Hughes-Croucher oraz Brian LeRoux – prezentacje prowadzone humorystycznie (ah te docinki w kierunku Douglasa), a w przypadku Toma ze świetnymi slajdami ;) Jeśli chodzi o zawartość merytoryczną, to za najciekawsze uważam prezentacje na temat ECMA6 (który wygląda jak połączenie ECMA5 z JavaScriptem 1.8), fabric.js, JIT w przeglądarkach oraz CASSIS – na temat to którego popełniłem (wpis)[/2011/05/cassis-jeden-aby-wszystkimi-rzadzic/]. Merytorycznie było jak najbardziej w porządku, dlatego w walce FV vs FT jest remis [1:1].

Miejscówka

Konferencja odbyła się w Kinie Femina znajdującego się w centrum miasta. Wykłady prowadzone były w jeden z sal kina, co dobrze wpłynęło na odbiór przez słuchaczy – wygodne siedzenia, każdy widział ekran. Jednakże, nie rozumiem dlaczego prowadzący musieli klękać, aby napisać kawałek kodu podczas pokazywania przykładów (nie było krzeseł? nie chceli?). A już w ogóle nie rozumiem, dlaczego w takich momentach za statyw mikrofonu robili Damian albo Paweł – tzw. „lovely assistant”. Tutaj jak dla mnie jakieś nieporozumienie.

No i nie można zapomnieć o reflektorze świecącym cały czas na prowadzących – mam na myśli momenty, kiedy prowadzący podczas sesji Q&A prosili o zgaszenie światła, które dosłownie raziło ich w oczy, a operator momentami nic sobie z tego nie robił.

Mało było także miejsca na jedzenie oraz poczęstunek – kino Femina to nie jest duży multipleks – tak więc było ciasno, zwłaszcza podczas obiadu. Sumarycznie jednak, miejscówka bardziej podobała mi się na FT – typowo przeznaczona na konferencje. Tak więc punkt dla FT – [1:2].

WI-FI

Podczas konferencji w sali WI-FI nie było – co nie dziwne. Podobno było piętro niżej, tam gdzie podawany był lunch. Wydaje mi się, że brak WiFi w sali kinowej nie powinien nikogo dziwić, ale mam uwagę dla organizatorów: tekst „WiFi nie ma, bo chcemy żebyście słuchali prezentacji” jest moim zdaniem jak najbardziej nie na miejscu. Jeśli nie było możliwości technicznych, to trzeba było po prostu powiedzieć. A jeśli naprawdę Panowie chcieliście mówić nam co mamy robić – to z całym szacunkiem, ale ludzie płacili za konferencję, tak więc od nich moim zdaniem zależy, co będą na niej robić – byle nie przeszkadzali innym. A korzystanie z WiFi chyba się do przeszkadzania nie kwalifikuje.

Na FT WI-FI praktycznie też nie było, tak więc remis [1:2], aczkolwiek za ww. tekst to powinno -1 być ;]

Catering

Standardowo – stały dostęp do ciastek, kawy, herbaty i napojów. Lunch smakowo bez zastrzeżeń – mi bardzo smakowało. Jednakże z powodu tego, że sala gdzie serwowano lunch była bardzo mała, a nie chcieliśmy się pchać, to deseru dla nas zabrakło – co mnie bardzo zaskoczyło – nie przypominam sobie, aby na FT czegokolwiek zabrakło, a ludzi wydawało się być zdecydowanie więcej. Ale i tak po jednym punkcie dla każdej strony [2:3].

Gadżety dla uczestników

– kilka naklejek od sponsorów, długopis, opaska na rękę, notatnik. W porównaniu do FT były koszulki konferencji – co prawda do zakupu a nie w ramach wejściówki, ale to i tak plus. No i nie można zapomnieć o roznoszonych puszkach RedBulla :) Tak więc tutaj plus dla FV [3:3].

Rozpoczęcie, gifty i zakończenie konferencji

Rozpoczęcie? Krótko, konkretnie – lekcja wyciągnięta z ostatniego razu:) Zakończenie? Planowo o 17. Aczkolwiek wydawało się takie bez składu i ładu – nie wyglądało to dla mnie na oficjalne pożegnanie. Ludzie po prostu wyszli, równocześnie chodziły słuchy o jakimś piwie po konferencji. Niestety, byłem już w drodze na pociąg. W międzyczasie rozdano, a konkretniej mówiąc rozrzucono kilkanaście koszulek (Firefox + Pusher) oraz toreb od Mozilli. Tutaj jednakże punkt dla FT: fajniejsze nagrody(X-Box 360 + 40x JavaScript Good Parts), oficjalne zakończenie. [3:4]

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: singles, dodany: 21.05.2011 13:23, tagi: javascript, php

Wyjazdy na różnego rodzaju konferencje mają to do siebie, że oprócz możliwości poznania developerów z całego świata, to czasami jeden z prelegentów zaprezentuje rozwiązanie/ideę, która budzi sporo kontrowersji. Moim zdaniem, na wczorajszym FalsyValues projekt, który wzbudził najwięcej kontrowersji przedstawił Tantek Çelik. Dlaczego? Najpierw chciałbym zacytować kilka opinii z Twittera:

Still not sure whether @t’s @cassisjs is (a) EVIL incarnate, (b) awesome stuff or (c) the greatest JS/PHP prank ever. :-)

bądź

I forgot to say, that @t’s talk caused my jaw drop. The most clever use I’ve seen recently. Without a doubt – the best talk of

Na żywo słyszałem jeszcze:

Większego gó*** dawno nie widziałem.

oraz

No kurde, programowanie przez komentarze – tego jeszcze nie było.

O co taki szum? O projekt CASSIS.

Napisz raz, użyj wiele razy

Motywacją do stworzenia projektu CASSIS dla Tanteka był fakt, iż wiele razy musiał pisać ten sam kod po stronie przeglądarki (JS) oraz po stronie backendu (PHP) – niestety na obecną chwilę nie jest możliwe łatwe korzystanie z JavaScript po stronie serwera, ponieważ praktycznie nie istnieją firmy udostępniające takowy hosting. Stąd też wyszła koncepcja wyodrębnienia takiego podzbioru elementów obu języków, które zadziałałby tak samo interpretowane przez silnik JS oraz przez PHP. I tym właśnie jest CASSIS. Jedenego pliku możemy użyć dwukrotnie w następujący sposób:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 21.05.2011 08:00, tagi: javascript

Kilka dni temu wookieb podesłał linka do zestawu darmowych ikon stworzonych przy pomocy SVG (lub VML), które możemy osadzić na naszej stronie. Okazało się, iż same ikony to nic innego jak ciąg nic niemówiących krzaczków, a za wszystkim stoi interesująca biblioteka o nazwie Raphaël. Celem przyświecającym powstaniu biblioteki było uproszczenie korzystania z grafiki wektorowej na stronach internetowych. W myśl tej zasady elementy graficzne generowane są przy pomocy wspomnianych wcześniej SVG lub VML (w zależności od przeglądarki). Co więcej każdy z utworzonych w ten sposób elementów graficznych jest elementem drzewa DOM, dzięki czemu możemy robić z nim wszystko to, co robimy z pozostałymi elementami. Najciekawszą informacją będzie fakt, że biblioteka ta działa również w przeglądarce IE6.

Użycie biblioteki jest niezwykle proste i sprowadza się do dodania skryptu do naszej strony i utworzenia obiektu, na którym będziemy pracować. Do skorzystania z tytułowych ikon wystarczy skopiować kod odpowiedzialny za ich narysowanie do metody obiektu.

Strona projektu – http://raphaeljs.com/ Darmowe ikony – http://raphaeljs.com/icons/

Autor wpisu: Tomasz Kowalczyk, dodany: 20.05.2011 20:06, tagi: javascript

Wtorkowy wpis był poświęcony integracji biblioteki CKEditor z polami formularzy wygenerowanymi poprzez konsolowe polecenia biblioteki "admin generator" frameworka symfony. W ogólnej pracy jest on bardzo przyjemny - nawet pisanie rozszerzeń nie sprawia większych kłopotów ze względu na dobrze zdefiniowany interfejs wtyczek i ogólny porządek w kodzie. Nie znaczy to jednak, że nie ma problemów wcale, [...]

Autor wpisu: batman, dodany: 20.05.2011 12:00, tagi: jquery

Vegas Background jest pluginem jQuery wyświetlającym tło na stronie. Niby nic, ale przy odrobinie wysiłku i pomocy zaprzyjaźnionego grafika można stworzyć niesamowicie wyglądającą stronę. Dokładnie taką, jak strona projektu.

vegas-background

Plugin działa poprawnie we wszystkich nowoczesnych przeglądarkach.

Strona projektu – http://vegas.jaysalvat.com/ Repozytorium na gitubie – https://github.com/jaysalvat/vegas

Autor wpisu: batman, dodany: 19.05.2011 18:00, tagi: zend_framework

Zend_Acl jest jednym z komponentów Zend Frameworka, bez których tworzenie rozbudowanych aplikacji byłoby znacznie trudniejsze. W skrócie Zend_Acl dostarcza informację o tym, czy rola ma dostęp do zasobu. Utworzenie zależności między rolami oraz zasobami spoczywa na naszych barkach, podobnie jak wykonanie odpowiedniej akcji w przypadku braku dostępu. Manual świetnie opisuje sposoby dodawania ról, zasobów oraz zależności między nimi. Niestety ani słowem nie wspomina o sposobie wykorzystania tej wiedzy w prawdziwej aplikacji.

Definiowanie zasobów i ról

Pierwszym etapem w tworzeniu aplikacji korzystającej z Zend_Acl jest określenie ról oraz zasobów występujących w aplikacji. Sposobów przechowywania tych informacji jest kilka, od plików ini począwszy, na bazie danych kończąc. Ponieważ sposoby te różnią się od siebie tylko sposobem przechowywania danych, do przykładów będę stosował pliki ini.

Zdefiniujmy najpierw zasoby.

acl.resources[] = "index_index"
acl.resources[] = "user_list"
acl.resources[] = "user_edit"
acl.resources[] = "user_add"
acl.resources[] = "user_delete"

Jak zapewne się domyślacie, pierwszy człon nazwy zasobu określa nazwę kontrolera, drugi nazwę akcji. Jeśli w aplikacji występują moduły, przez nazwą kontrolera można dodać kolejny człon oznaczający nazwę modułu.

Role definiujemy w podobny sposób.

acl.roles[] = "admin"
acl.roles[] = "user"
acl.roles[] = "guest"

Na koniec pozostaje zdefiniowanie praw dostępu

acl.privileges.admin[] = "index_index"
acl.privileges.admin[] = "user_list"
acl.privileges.admin[] = "user_edit"
acl.privileges.admin[] = "user_add"
acl.privileges.admin[] = "user_delete"
acl.privileges.user[] = "index_index"
acl.privileges.user[] = "user_list"
acl.privileges.guest[] = "index_index"

Powyższy schemat dodawania ról, zasobów oraz uprawnień ma ta zaletę, iż w przypadku szybko rosnącej aplikacji można go bez problemowo przenieść np. do bazy danych, napisać prosty panel do zarządzania i zapomnieć o uzupełnianiu danych “z palca”.

Tworzymy ACL

Najlepszym miejscem do utworzenia Zend_Acl jest bootstrap.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAcl()
    {
        $acl = new Zend_Acl();
        $aclOptions = $this->getOption('acl');

        foreach($aclOptions['roles'] as $role) {
            $acl->addRole(new Zend_Acl_Role($role));
        }

        foreach($aclOptions['resources'] as $resource) {
            $acl->addResource(new Zend_Acl_Resource($resource));
        }

        foreach($aclOptions['privileges'] as $role => $resource) {
            $acl->allow($role, $resource);
        }

        return $acl;
    }
}

Dlaczego właśnie bootstrap? Ponieważ w prosty sposób bez konieczności korzystania z rejestru możemy dostać się do obiektu Zend_Acl oraz bootstrap wykonuje się zawsze wykonuje jako pierwszy.

Warto wykorzystać tutaj cache, ponieważ generowanie całej listy ACL przy każdym żądaniu może mieć wpływ na wydajność aplikacji.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.