Showing posts with label lodz. Show all posts
Showing posts with label lodz. Show all posts

Wednesday, June 11, 2014

2014-05-06 Pisanie i testowanie programów pod kątem integralności danych

Na ostatnim spotkaniu JUG Łódź Marek Strejczek z firmy Rule Financial wprowadził nas w ważny świat integralności danych. Prostymi przykładami oraz przystępnym wstępem teoretycznym przedstawił co to znaczy integralność danych, kiedy potrzebujemy takiej integralności i jakie są sposoby by ją osiągnąć.

Przypomnieliśmy sobie co znaczy ACID, oraz jak działają transakcje. Marek przedstawił też model BASE, który rozwinąć można do Basic Availability, Soft-state, Eventual consistency. Dowiedzieliśmy się jak do integralności danych podchodzą banki na przykładzie bankomatu a jak podchodzi Amazon na przykładzie kupowania książek.

Na spotkaniu nie obyło się bez działającego przykładu. Marek przedstawił nam prosty system zbudowany w oparciu o kilka interesujących technologii:

  • Active MQ
  • MySQL
  • JBoss
  • JBehave
  • Apache Camel

System składał się z dwóch kolejek, serwisu oraz bazy danych. Serwis miał na celu pobranie danych z kolejki wejściowej, umieszczenie danych w bazie danych a potem wrzucenie odpowiedzi na kolejkę wyjściową.

Za pomocą narzędzia Byteman Marek doprowadził do błędów w działającym systemie przez co została uszkodzona integralność danych w przykładowej bazie. Zaprezentowane zostały specjalne historyjki BDD napisane w JBehave sprawdzające reakcję systemu na wypadek porażki jak i sukcesu.

Na koniec prezentacji rozmawialiśmy o Shared Resource Pattern i jakie problemy rozwiązuje.

Jako, że było to pierwsze spotkanie w miesiącu, rozlosowaliśmy jedną licencję na jeden z produktów JetBrains. Na najbliższym spotkaniu JUG Łódź będziemy mieli okazję posłuchać wujka Boba na temat Dependancy Injection.

Jeżeli jesteście zainteresowani koniecznie zarejestrujcie się na spotkanie na naszym JUG-owym meetupie. Link do meetup-a:

http://www.meetup.com/Java-User-Group-Lodz/events/184627302/

Do zobaczenia na spotkaniu.

Saturday, May 24, 2014

2014-05-22 - Flash Talki - pierwsze starcie



Usain Bolt będzie w sierpnu w Warszawie na mitingu Kamili Skolimowskiej, my mamy swoich reprezentantów sprintu w kategorii prelekcji. Pierwsza odsłona Flash Talków - krótkich, wręcz sprinterskich prelekcji (20 minutowych wystąpień) za nami. Skrócona forma pozwala na jednym spotkaniu poznać większą liczbę tematów w pigułce.

 

 

Krzysztof Telka - Nauka jako proces ciągłej ewolucji programisty

Pierwszym prelegentem był Krzysztof Telka z firmy Cybercom, który zaprezentował temat Nauka - jako proces ciągłej ewolucji programisty. Prezentacja miała charakter motywacyjny. Krzysiek bazował na modelu kompetencji wg. Dreyfusa, który wyróżnia poniższe stopnie kompetencji:
  1.  Nowicjusz - skupiony na szybkim ukończenia zadania, potrzebuje dokładnych wskazówek i reguł.
  2. Zaawansowany nowicjusz - formułuje proste zasady, ciągle potrzebuje szybkich wskazówek, brak całościowego obrazu problemu.
  3. Kompetentny - nastawiony na cel, samodzielnie składa kroki, posiada zwykle jeden pomysł na rozwiązanie danego problemu.
  4. Profesjonalista - biegły, rozumie celu zależnie od kontekstu, zauważa analogie
  5. Ekspert - myśli inter-dyscyplinarnie, syntezuje pojęcia na wyższym poziomie abstrakcji, stosuje metafory, podejmuje decyzje intuicyjnie
Następnie prelegent zachęcał nas do zadania sobie pytania na jakim etapie kompetencji jesteśmy i pokazał w jaki sposób możemy kontrolować nasz proces uczenia się - rozwijania. Zaprezentował  pasję w tym co robi i dzięki mu za to. Jeśli ktoś zapomniał o potrzebie rozwoju to po tej prelekcji z pewnością wrócił na dobry tor. Prezentacja Krzyśka dostępna tutaj.

Więcej o modelu kompetencji możemy zobaczyć w prelekcji guru od aspektów miękkich w IT Sławka Sobótki z firmy Bottega - film, slajdy oraz artykuł dla SDJ.


Łukasz Lisowski - ZABBIX


Druga prelekcja Łukasza Lisowskiego o ZABBIXie odnosiła się poniekąd do wcześniejszej prelekcji Mariusza Panka z firmy TomTom - Javamelody - co mi w Javie gra!. Odniesienie polegało na zaprezentowaniu narzędzia alternatywnego dla JavaMelody. Łukasz już na wstępie zaznaczył różnicę między tymi narzędziami. JavaMelody potrzebuje konfiguracji bezpośrednio w trakcie implementacji aplikacji (trzeba dodać jakoś liby JavaMelody w kodzie), tymczasem ZABBIX może działać z dowolną zdeployowaną już apką, czyli może pomóc tam gdzie nie mamy czasu bądź możliwości wpiąć dodatkową bibliotekę. ZABBIX umożliwia korzystanie z wbudowanego w JVM  JMXa (Java Management Extensions). Dzięki takiemu rozwiązaniu może korzystać z dowolnych liczników wystawionych przez tego magicznego JMXa:). I tu bym się chętnie popisał jakąś wiedzą, której nie posiadam, więc pozostawię ten temat w błogiej ciszy albo zadam pytanie: komu dzisiaj kibicujecie? - Ja jestem za Madrytem!


Paweł Michalski - Eclipse tips & tricks

Paweł Michalski z firmy TomTom zademonstrował jak ważne w naszym rzemiośle programisty są narzędzia i ich znajomość. Na wstępie zademonstrował akcje podczas zapisywania, które mogą być przydatne i powinny być wspólne dla całego zespołu. W celu konfiguracji idziemy do preferencji i wyszukujemy "save actions". Paweł korzysta z formatera podczas zapisu oraz dodatkowych poleceń, które można modyfikować. Dobrze, żeby te ustawienia były wspólne dla całego zespołu, wtedy unikniemy problemów ze zmianami jedynie formatowania w repo.

Następnie pokazał możliwości konfiguracyjne błędów oraz ostrzeżeń, które pomagają za wczasu wykryć błąd lub problem w kodzie. Konfigurację możemy przeprowadzić w Preferences a następnie korzystając z wyszukiwarki wpisać "warnings" i dla wybranego języka programowania możemy zmodyfikować domyślne zachowanie. Dla przykładu eclipse doskonale wie, że przypisanie boola w środku ifa to zwykle błąd i nie robi nic tylko po cichu się z nas nabija. Nie wiem jak wy, ale ja spędziłem na takim błędzie któryś wieczór. Warto więc spojrzeć na listę - w przypadku Javy jest ona dość rozbudowana.


Paweł pokazał kolejną fajną funkcjonalność - quick diff w edytorze sprzęgnięty z ostatnią wersją z SVNa. Wyszukujemy frazy "quick diff", konfigurujemy jak na screenie poniżej i delektujemy się diffem w edytorze.

 
Następnie to co na wszyscy czekają, czyli magiczne skróty klawiszowe. Jako leniwy programista nie lubię wykonywać czynności, które mogłyby się same wykonać (a ja będę mieć więcej czasu na wybór piwnego repertuaru na wieczór). Tak więc jeśli jeszcze nie znacie, to musicie spróbować:
  • ALT + SHIFT + ↑ (lub ↓) - WOW, po prostu spróbuj w edytorze, np. będąc w środku nazwy zmiennej ;)
  • CTRL + O - outline z wyszukiwarką bez użycia myszki
  • ALT + ← (lub →) - następne/poprzednie miejsce w którym byliśmy
  • CTRL + SHIFT + P - idź do odpowiadającej klamry (trzeba się ustawić za klamrą początkową lub przed kończącą
  • i inne których nie zanotowałem lub nie pamiętam ;)

Na koniec wspomnę o losowaniu nagrody. Ebooka od Manninga wygrał Jarek - dziękujemy wydawnictwu manning.com za sponsorowanie nagrody oraz prelegentom za poświęcony czas i chęci.



Wednesday, May 14, 2014

Clean Coders Episode 12 - The Interface Segregation Principle

Nieuchronnie zbliżamy się do końca omawiania zasad SOLID, albowiem za nami już czwarty odcinek tym razem o zasadzie segregacji interfejsów.

1. Single responsibility principle
2. Open/closed principle
3. Liskov substitution principle
4. Interface segregation principle
5. Dependency inversion principle
Dobra frekwencja jak na Wujka Boba - 30 osób



Sponsorem tego odcinka była firma Samsung, która przedstawiła 4 oferty pracy w Łodzi. Polityka firmy nie pozwoliła na podanie widełek płacowych.
Prezentacja firmy Samsung

Co ciekawego w odcinku?

Nie obyło się bez przebierania. Tym razem wujek Bob wystąpił w roli sensei, w swoim dojo. Przedstawił nam projekt systemu obsługującego bankomat i pokazał co dzieje się gdy klasa "wie" za dużo. Co to znaczy wie za dużo? Chodziło głównie o zależności jakie mamy w projekcie, nie obyło się więc bez wspomnień i cofneliśmy się do czasów C. Jedna klasa, wykorzystywana w nieomalże wszystkich elementach systemu była często zmieniana przez co podczas kompilacji przebudowywany był cały projekt, a to trwało wieki.

Na przykładzie bankomatu wujek pokazał nam jak ciężko jest niedopuścić do opisanego wyżej stanu. Oraz, że często w pogoni za doprowadzeniem do zgodności z jedną z zasad SOLID możemy złamać inną (w przykładzie
była to open/close principle).
Wujek Bob zza krzaka
Co zrobić aby obejrzeć następny odcinek:

- najważniejsze to przyjść na spotkanie JUG Łódź
- przekonać swoją firmę do zasponsorowania kolejnego odcinka (60USD) - szczegóły juglodz@gmail.com
- zarejestrować się na naszym meetupie