Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Sunday, September 7, 2014

2014-09-03 Firmao - czyli od startupu do produktu komercyjnego - recenzja

3 września w 6 dzielnicy mieliśmy okazję gościć Rafała Namiecińskiego. Współzałożyciela "Firmao".


Czym jest Firmao?
Jest to kompleksowy CMS/CRM w wersji przeglądarkowej, z bardzo rozbudowanymi opcjami konfiguracyjnymi pod indywidualne potrzeby danego klienta czy firmy

Prelekcja pomimo głównie aspektów biznesowych, miała całkiem dobrą publikę i padało wiele ciekawych pytań.
Zainteresowanych ciekawiło w jakich technologiach jest stworzone Firmao i chyba się nie zawiedli, bo padały
Java, Spring, Hibernate, Angular itp a także inne

Rafał przybliżył nam tajniki i udzielał dobrych rad odnośnie startupu, na czym się skupić a co sobie odpuścić i określił to powiedzeniem :

"Do what you do the best, outsource the rest".

Firmao swoją działalność zaczęło od dofinansowania z UE, gdzie jak podkreślał prowadzący nie warto pukać po pieniążki gdyż cała procedura i papierkologia oraz decyzja "czy projekt jest innowacyjny czy nie" podejmuje osoba, która kompletnie się może na tym nie znać.
Wracając do sedna sprawy, Rafał zdradził nam też kilka kruczków odnośnie składowania danych, a także bardzo sprytny patent na tanie międzynarodowe rozmowy telefoniczne do firmy.
Wystarczy mieć swoją centralkę oraz telefony VOIP i odpowiednio to skonfigurować. Klient np z Niemiec dzwoni na infolinię Firmao na numer, który wydaje się być numerem z Hamburga, a w rzeczywistości dzwoni do "serwera"

Sukces Firmao jak określił Rafał jest wynikiem wsłuchiwania się w potrzeby i uwagi klientów (schemat japońskiego koła jakośći i filozofia Kaizen), a także nie dawanie wszystkich dostępnych fajerwerków klientowi od razu, gdyż się wystraszy i pogubi.

Czym wyróżnia się Firmao na tle innych tego typu usług?

Przede wszystkim ceny są przystępne, szeroki wachlarz opcji, konfiguracji, oraz niezawodność (serwery Amazon) + bardzo dobry support (multilanguage: polski, angielski, niemiecki), który w ciągu kliku minut od założenia konta dzwoni do klienta, a także pomaga skonfigurować całość pod swoje potrzeby.

Firmao ma się dobrze, świadczy o tym liczba ponad 15000 zadowolonych klientów z Polski, Niemiec, Kanady i wielu innych krajów.

Padło pytanie o kilka dobrych rad dla planujących swój biznes udzielił bardzo cennych wskazówek np:

- skupianie się na głównych zadaniach i celach firmy (resztę jeżeli to wymaga zbyt dużych nakładów czasu i pieniędzy zlecić firmom zewnętrznym)

- szukanie środków finansowych u osób i firm, których projekt/pomysł może zaciekawić, niż liczyć na decyzję o przyznaniu dofinansowania ze środków z UE

- przede wszystkim - biznes wymaga poświęceń, a dokładniej rzecz biorąc, poświęcanie masy czasu na rozwój własnego biznesu.


Dziękujemy bardzo Rafałowi Namiecińskiemu za poświęcony czas i ciekawą prezentację oraz bardzo cenne wskazówki jak rozkręcić swój własny biznes w branży usług IT.

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.

Monday, June 2, 2014

2014-05-29 - Vaadin on tour - przystanek Łódź

W czwartek 29.05.2014 mieliśmy zaszczyt gościć Macieja Przepiórę z firmy Vaadin, który nam przybliżył nieco tajniki tego frameworka.

Vaadin - w języku fińskim oznacza samicę łosia (klępa), stąd charakterystyczny znaczek }> mający kojarzyć się z łosiem, będący jednocześnie logiem Vaadina.

Wracając do rzeczywistości, sam Vaadin jest przeznaczony do aplikacji typu Rich Client / Fat Client oraz tak zwanych single page application z wykorzystaniem wzorca projektowego MVP (Model-View-Presenter).
Vaadin sam w sobie nie nadaje się na typową "stronę" html. Vaadin jest frameworkiem do pisania aplikacji internetowych.
Prowadzący podkreślał, że Vaadin ma masę widgetów, kontrolek które wyróżniają go z tłumu (ponad 400) i tylko wyobraźnia programisty co chce osiągnąć przy użyciu kontrolek jest jego ograniczeniem (Sky is the limit....)

Vaadin jest aplikacją podobną w działaniu do GWT, lecz jak przekonywał autor prelekcji nie jest tak do końca.
Otóż w GWT mamy różne części kodu
- serwer - wykonywany na serwerze,
- shared - współdzielony między klientem a serwerem
- client - wykonywany po stronie klienta

    Natomiast Vaadin ma kod serwerowy, którego klient to de facto kod Javy kompilowany do JavaScriptu, a następnie kompresowany i wykonywany przez przeglądarkę.
    Co jest dodatkowym plusem Vaadina kod serwerowy jest napisany w dowolnym języku opartym na JVM (Java,Scala, Groovy). Warte podkreślenia jest to, że całość wykonywanego kodu odbywa się po stronie serwera.

    Bardzo ciekawie wygląda prezentacja i objaśnianie "jak to działa" - po stronie serwera cały nasz kod to są komponenty, natomiast to co prezentowane jest po stronie klienta - to widgety. Gdy zechcemy zrobić jakiś widget niekonwencjonalny, wtedy musimy rozszerzyć klasę Widget z GWT, dość ciekawie Maciek zaprezentował temat działania aplikacji na load balancerach i dużym obciążeniu oraz podał przykładowo ile aktywnych sesji jest w stanie obsłużyć Vaadin bez wyraźnego spowolnienia.

    Podczas prelekcji prowadzący był bombardowany pytaniami z publiczności i wyjaśnianiem "how to", oraz porównań i analogii do GWT.
    Ogólnie poziom merytoryczny prelekcji był bardzo wysoki o czym może świadczyć interakcja na linii publika - prowadzący oraz bardzo duża frekwencja (71 osób - bardzo dziękujemy !!!) a także czas prezentacji (2 godziny !!)
    Chyba najlepsza frekwencja na JUGu!


    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