Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

O LambdaJ i Guavie i mojej prelekcji na JUG

Autor: Krzysztof Nielepkowicz o piątek 13. Kwiecień 2012

    Witam pod dłuższej przerwie. Dzisiejszy wpis będzie trochę inny niż pozostałe, dlatego iż nie będzie typowo technicznym wpisem. Przez ostatnie tygodnie, „po godzinach” przygotowywałem się do prelekcji którą wygłosiłem 03.04.2012. Dzięki mojemu osobistemu fotografowi, Annie Mazińskiej, mogę pokazać również parę zdjęć 🙂

 

    Nie obyło się bez pewnych perturbacji logistycznych – sala, w której mieliśmy się spotkać (3180 MIMUW) okazała się być zajęta i musieliśmy się przemieść piętro niżej.  Jednak mimo to przyszło 46 osób 🙂 4 osoby więcej i bym dostał licencję na Ideę , ale się nie udało 🙁

 

 

    Pierwszą część prezentacji stanowiło przedstawienie większości konstrukcji z biblioteki LambdaJ, gdzie dużą uwagę poświęciłem domknięciom – zarówno w klasycznej wersji jak i domknięciom „leniwym” (delayed closures). Nie bez powodu poświęciłem temu zagadnieniu więcej czasu. Po pierwsze – domknięć nie ma w standardzie, przez co nie są naturalnym dla języka tworem, przez co są trudniejsze do zrozumienia. Drugi powód to konkurs a poniżej nagroda.

 

    Nagrodą była butelka wina własnej produkcji, wina „Rajskiego”. konkurs dotyczył domknięć „leniwych”. Klasyczna wersja domknięć z LambdaJ jest prosta, łatwa i przyjemna, gdyż domknięcia zostały tam stworzone po to by uniknąć definiowania nieczytelnych wewnętrznych klas anonimowych. Natomiast domknięcia „leniwe” odwracają kolejność i sposób definiowania. Najpierw definiujemy treść domknięcia, nie robiąc nic innego niż stworzenie anonimowej klasy wewnętrznej a dopiero później określamy zmienne, które będziemy domykać i wolne zmienne. Idea jest wyjątkowo pokrętna, jednak, z technicznego punktu widzenia udało mi się wszystkim wyjaśnić jak napisać taką konstrukcję i co wewnątrz się dzieje. Konkurs polegał na tym by do końca spotkania uczestnicy wymyślili praktyczne zastosowanie dla tej idei, wygra ten którego pomysł zdobędzie największe uznanie uczestników. Nie było łatwo, temat trudny oraz skomplikowana idea domknięć leniwych, postawiły poprzeczkę bardzo wysoko. Zwycięzca zaproponował by tej konstrukcji używać gdy potrzebujemy wykonać ciąg operacji na obiekcie/kolekcji, lecz w danym momencie nie znamy ani obiektu ani typu, dodatkowo, „produkt”, który chcemy domknąć pojawia się w środku tego ciągu instrukcji. Przykład to obróbka iteracja po elementach grupy (grupa w LambdaJ jest czymś w rodzaju listy map) i zapisywanie wyników w różny sposób – czy to na dysku, czy do bazy lub wypisanie na ekran. Wiem że to nie jest proste, dlatego temu tematowi poświęcę osobny wpis. Wróćmy do prezentacji, po LambdaJ zaprezentowałem biblioteki Guavy gdzie omówiłem filtrowanie oraz transformacje – są to konstrukcje mające odpowiedniki w LambdaJ, jednak nie tylko gdyż Guava ma wiele innych funkcjonalności niedostępnych w LambdaJ. Ostatnią częścią prelekcji było rozstrzygnięcie konkursu.

 

    Czas na krótkie posumowanie. Była to moja pierwsza prelekcja przy publiczności innej niż ludzie z zakładu, co spowodowało pewną tremę – ale nie było źle 😉 Popełniłem parę błędów. Wiem, dziwne że piszę o błędach, lecz po to by wykazać czego należy się wystrzegać będąc prelegentem. Pierwsza rzecz to zapomniałem się przedstawić. Każdy prelegent powinien się przedstawić, nawiązać kontakt z publicznością i stać się kimś więcej niż tylko „wykładowcą”, warto powiedzieć choćby trochę o hobby swoim czy opowiedzieć anegdotkę związaną z prezentacją/jej genezą – powiedzieć dlaczego tutaj jestem. Kolejnym błędem było przeplatanie części teoretycznej z praktyczną. Otóż na prelekcji po pierwsze nie ma czasu na odszukiwanie konkretnych fragmentów kodu a po drugie zbyt niska rozdzielczość projektora skutecznie utrudnia przełączanie się  między treścią prezentacji a kodem w IDE. Co mi się udało? Hmmm cała reszta 🙂

 

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>