W tym tygodniu na pewno pamiętać o przygotowaniu niespodzianek dla babci i dziadka z okazji ich święta (kartki w końcu trochę dochodzą). A co warto sprawdzić w świecie IT?
Cykl #main to punkt początkowy Waszego tygodnia, prasówka, w której zbieramy ciekawe linki, dzielimy się informacjami, a także podsyłamy programistyczne zadanie. Mamy nadzieję, że w ten sposób umilimy Wam poniedziałkowy powrót do rzeczywistości ;)
HackSummit
Streamowana konferencja z największymi szychami programowania, na którą bilet może być dla Ciebie za tweeta albo donacje na super inicjatywy wspierające rozwój w IT. A do tego hackaton z sporą kasą do wygrania … Nie przegap!
Elevator Saga
Kath podesłała nam na facebooku grę i przyznajemy — przepadliśmy. Jak zaprogramować windę, by działała optymalnie? Spróbuj, ale tylko gdy masz trochę wolnego czasu :)
PS. Śmiało dziel się z nami ciekawymi linkami, z przyjemnością dodamy je do kolejnego #maina!
Spis technologii do aplikacji real-time
Robiąc reserch do pracy znaleźliśmy naprawdę fajną listę wszystkiego, co można użyć by komunikacja w twojej aplikacji była w real-time’ie. Warto spojrzeć, poczytać, bo nie wiadomo, czy nie przyda się w przyszłym projekcie.
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: jak działa Spring (a dokładniej jego kontener IoC)?
W momencie uruchomienia aplikacji Spring tworzy tzw. kontekst. W uproszczeniu można powiedzieć, że jest to kolekcja beanów i związanych z nią konfiguracji. Wewnątrz takiego kontekstu beany ‘widzą się’, ale nie widzą obiektów poza nim.
Początkowo znajdują się tam tylko springowe obiekty — w tym sam kontekst. W zależności od konfiguracji w pierwszym kroku inicjowane są kolejne beany — czyli po prostu tworzone są nowe obiekty i rejestrowane w kontekście (można o nim myśleć także jak o swoistej mapie — kontekst bowiem mapuje nazwy (id) na właściwe obiekty). Ten etap realizuje implementacja interfejsu BeanFactory, która często jest samym kontekstem (np. ClasspathXmlApplicationContext).
Po zakończeniu tego kroku do ‘pracy’ wkraczają implementacje BeanPostProcessor — są one odpowiedzialne za ‘automagię’ springa, czyli np nadawanie wartości polom z adnotacją @Autowired (za to odpowiedzialny jest akurat AutowiredAnnotationBeanPostProcessor). Jest to także sposób, w jaki możemy modyfikować domyślne zachowanie Springa wg własnych potrzeb. W międzyczasie, po wykonaniu pracy przez wszystkie znane kontekstowi implementacje tego interfejsu, wywoływana jest metoda init() beanów (jeśli istnieje), po czym obiekty te mogą wykonać dodatkowe zadania (większość tego nie robi).
W tym momencie inicjowanie jest uznane za zakończone, a aplikacja za uruchomioną. To oczywiście nieco uproszczony obraz, zainteresowanych póki co odsyłamy do dokumentacji Spring, i prosimy o chwile Cierpliwości — Springowi, także bardziej zaawansowanym aspektom, poświęcimy w przyszłości niejeden artykuł na blogu :)
Jon Skeet
Podejrzewam, że o nim nie słyszałaś, ale to naprawdę Postać ;) Jon ma numer jeden w rankingu na StackOverflow — odpowiedział na 32,693 pytań! Wow, prawda?
Jon aktualnie pracuje jako programista Java w Google, jest autorem książek i blogerem (w większości o tematyce C#) i najaktywniejszą osobą na stackoverflow. Jego kod nie podąża za żadną konwencją — on jest konwencją (cytując podaną dalej stronę ;) ). Bywa nazywany ‘najlepszym programistą świata’, choć sam raczej z pokorą podchodzi do swoich umiejętności. Ale przede wszystkim — ma ogromne doświadczenie, którym chętnie dzieli się ze światem, polecamy zapoznać się z blogiem lub odpowiedziami na stackoverflow!