SlideShare a Scribd company logo
1 of 19
Rozpraszanie offline aplikacji
zcentralizowanej online
O mnie
● Łukasz Piotr Łuczak
● Ojciec i mąż
● 8/12/18 lat doświadczenia w IT
● Software Engineer / Architect
● Technical Leader / CTO
● Doktorant
Rozpraszanie offline aplikacji zcentralizowanej
online
czyli
Jak zejść z chmury
Klient
● Obsługuje zawody konne w zakresie
przygotowania list startowych, przebiegu
konkursów, przygotowywania list wynikowych
oraz komunikacji z organizacjami związkowymi
● Robi to od wielu lat
● Posiada desktopowe rozwiązanie, które spełnia
swoją rolę choć nie jest doskonałe
Wersja 1
● Potrzebne rozwiązanie umożliwiające
zapisywanie się na zawody oraz przetwarzanie
tych zapisów
● Potrzebne rozwiązanie pozwalające na
prezentowanie na żywo wyników konkursu
● Niech to rozwiązanie korzysta z bazy danych
zawodników oraz niech zawodnicy sami mogą
się dodawać do bazy
Wersja 1 cd
● Niech to rozwiązanie komunikuje się z
chronometrem
● W sumie możemy napisać aplikację od nowa
Wersja 1 cd
● Niech to rozwiązanie komunikuje się z
chronometrem
● W sumie możemy napisać aplikację od nowa
● Robimy aplikację webową!
● PHP (ZF2, Doctrine, DoctrineExtensions),
MySQL, JavaScript (jQuery), Twitter Bootstrap
Wersja 2
● „Wygląda świetnie, ale co z przypadkami kiedy nie
będę mieć dostępu do internetu na zawodach”
● „Nie, ta aplikacja nigdy nie będzie sprzedawana
chcę ją mieć tylko dla siebie!”
● Weźmy xamp'a!
● Ale co z synchronizacją danych?
● Dopiszmy moduł do Doctrine
Moduł Doctrine
● Bazując na Doctrine Extenstions
● Dodając sporo ręcznych wywołań filtrów w
kodzie oraz uzupełniając widok o logikę
● Opracowujemy rozwiązanie pozwalające na
logiczne blokowanie wierszy oraz obsługę ich
synchronizacji
Wersja 2 cd
● „Jest dobrze ale podczas zawodów uzupełniam
dane zawodników, koni i klubów. Chciałabym te
dane mieć synchronizowane z centralą”
● Skorzystajmy z rozwiązania jakie
przygotowaliśmy
● Dołóżmy do niego moduł różnicowy i niech
operator się martwi
Wersja 3
● „A czy nie można tego zrobić jakoś inaczej. Nie
zawsze mam dostępne laptopy na zawodach”
● „Aha i jeszcze jak są zawody WKKW to
operatorzy pracują na kilku stanowiskach nad
jednym konkursem”
● Hmm... to może jakiś lokalny serwer
dedykowany? A może jakieś rozwiązanie
boksowe?
Wersja 3 cd
● „Aha, przy rozpręrzalni potrzebuję wyświetlać
informacje kto będzie jechał a także bieżący
ranking.”
● „W sumie sędziowie też powinni to widzieć”
● Na rozprężalnie można dać smart tv i niech
wyświetla, a dla sędziów albo komputery albo
posy albo ….
● Ok. Bierzemy Raspberry Pi!
Hardware
● Zainstalowane środowisko
● MySQL robi problemy – zmieniamy na PostgreSQL
● Rozwiązanie udostępnia stronę po sieci na potrzeby
zawodów
● Rozwiązanie potrafi komunikować się z serwerem i
synchronizować informacje
● Ale pod rozwiązanie nie można podłączyć monitora,
myszki i klawiatury
● Już można
Wersja 4
● „A gdybym chciała sprzedać to klientom”
● „Ok, rozwiązanie na stronie jest dobre ale wiesz
konkurencja ma takie co się instaluje”
● Jak zabezpieczyć PHP'a?
● IonCube?
● Klucze Hasp?
Stan obecny
● Gotowa aplikacja webowa z modułami: zapisy,
wyniki, obsługa zawodów
● Moduł obsługa zawodów opracowany jako moduł
dostępny w sieci lokalnej i zamknięty w boksie
● Dostępny boks dla monitorów w rozprężalni,
sędziów i spikera
● W testach używanie online przez klientów
● W opracowaniu rozwiązanie do użytku offline przez
klientów
Stan obecny
● Gotowa aplikacja webowa z modułami: zapisy,
wyniki, obsługa zawodów
● Moduł obsługa zawodów opracowany jako moduł
dostępny w sieci lokalnej i zamknięty w boksie
● Dostępny boks dla monitorów w rozprężalni,
sędziów i spikera
● W testach używanie online przez klientów
● W opracowaniu rozwiązanie do użytku offline przez
klientów
Kontakt
● Twitter: lukasz_luczak
● LinkedIn: lukaszluczak
● About.me: lukasz.piotr.luczak
● Web: lukaszluczak.pl
● Mail: lukasz.luczak@onet.pl
Pytania
Dziękuję

More Related Content

Similar to 4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łukasz Łuczak

Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćmonterail
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?GameDesire Company
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiKrzysztof (Chris) Ozog
 
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz ŁuczakPROIDEA
 
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & AnsibleCodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & AnsibleCodiLime
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITGOG.com dev team
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Droptica
 
Architektura serwisu gg.pl 2 przemek łącki (2)
Architektura serwisu gg.pl 2   przemek łącki (2)Architektura serwisu gg.pl 2   przemek łącki (2)
Architektura serwisu gg.pl 2 przemek łącki (2)Cendoo
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
Modelowanie i weryfikacja w programie MATLAB i Simulink
Modelowanie i weryfikacja w programie MATLAB i SimulinkModelowanie i weryfikacja w programie MATLAB i Simulink
Modelowanie i weryfikacja w programie MATLAB i SimulinkJadwiga Horoszkiewicz
 
Tworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychTworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychGameDesire Company
 
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...asquelt
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPPiotr Horzycki
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsThe Software House
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaGameDesire Academy
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl 3camp
 

Similar to 4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łukasz Łuczak (20)

Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | Codesushi
 
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak
4Developers2015: Serwis z kamerkami - pole minowe wydajności - Łukasz Łuczak
 
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & AnsibleCodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible
CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com IT
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
 
Architektura serwisu gg.pl 2 przemek łącki (2)
Architektura serwisu gg.pl 2   przemek łącki (2)Architektura serwisu gg.pl 2   przemek łącki (2)
Architektura serwisu gg.pl 2 przemek łącki (2)
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
Modelowanie i weryfikacja w programie MATLAB i Simulink
Modelowanie i weryfikacja w programie MATLAB i SimulinkModelowanie i weryfikacja w programie MATLAB i Simulink
Modelowanie i weryfikacja w programie MATLAB i Simulink
 
Tworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychTworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnych
 
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
university day 1
university day 1university day 1
university day 1
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) Deployments
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 

4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łukasz Łuczak

  • 2. O mnie ● Łukasz Piotr Łuczak ● Ojciec i mąż ● 8/12/18 lat doświadczenia w IT ● Software Engineer / Architect ● Technical Leader / CTO ● Doktorant
  • 3. Rozpraszanie offline aplikacji zcentralizowanej online czyli Jak zejść z chmury
  • 4. Klient ● Obsługuje zawody konne w zakresie przygotowania list startowych, przebiegu konkursów, przygotowywania list wynikowych oraz komunikacji z organizacjami związkowymi ● Robi to od wielu lat ● Posiada desktopowe rozwiązanie, które spełnia swoją rolę choć nie jest doskonałe
  • 5. Wersja 1 ● Potrzebne rozwiązanie umożliwiające zapisywanie się na zawody oraz przetwarzanie tych zapisów ● Potrzebne rozwiązanie pozwalające na prezentowanie na żywo wyników konkursu ● Niech to rozwiązanie korzysta z bazy danych zawodników oraz niech zawodnicy sami mogą się dodawać do bazy
  • 6. Wersja 1 cd ● Niech to rozwiązanie komunikuje się z chronometrem ● W sumie możemy napisać aplikację od nowa
  • 7. Wersja 1 cd ● Niech to rozwiązanie komunikuje się z chronometrem ● W sumie możemy napisać aplikację od nowa ● Robimy aplikację webową! ● PHP (ZF2, Doctrine, DoctrineExtensions), MySQL, JavaScript (jQuery), Twitter Bootstrap
  • 8. Wersja 2 ● „Wygląda świetnie, ale co z przypadkami kiedy nie będę mieć dostępu do internetu na zawodach” ● „Nie, ta aplikacja nigdy nie będzie sprzedawana chcę ją mieć tylko dla siebie!” ● Weźmy xamp'a! ● Ale co z synchronizacją danych? ● Dopiszmy moduł do Doctrine
  • 9. Moduł Doctrine ● Bazując na Doctrine Extenstions ● Dodając sporo ręcznych wywołań filtrów w kodzie oraz uzupełniając widok o logikę ● Opracowujemy rozwiązanie pozwalające na logiczne blokowanie wierszy oraz obsługę ich synchronizacji
  • 10. Wersja 2 cd ● „Jest dobrze ale podczas zawodów uzupełniam dane zawodników, koni i klubów. Chciałabym te dane mieć synchronizowane z centralą” ● Skorzystajmy z rozwiązania jakie przygotowaliśmy ● Dołóżmy do niego moduł różnicowy i niech operator się martwi
  • 11. Wersja 3 ● „A czy nie można tego zrobić jakoś inaczej. Nie zawsze mam dostępne laptopy na zawodach” ● „Aha i jeszcze jak są zawody WKKW to operatorzy pracują na kilku stanowiskach nad jednym konkursem” ● Hmm... to może jakiś lokalny serwer dedykowany? A może jakieś rozwiązanie boksowe?
  • 12. Wersja 3 cd ● „Aha, przy rozpręrzalni potrzebuję wyświetlać informacje kto będzie jechał a także bieżący ranking.” ● „W sumie sędziowie też powinni to widzieć” ● Na rozprężalnie można dać smart tv i niech wyświetla, a dla sędziów albo komputery albo posy albo …. ● Ok. Bierzemy Raspberry Pi!
  • 13. Hardware ● Zainstalowane środowisko ● MySQL robi problemy – zmieniamy na PostgreSQL ● Rozwiązanie udostępnia stronę po sieci na potrzeby zawodów ● Rozwiązanie potrafi komunikować się z serwerem i synchronizować informacje ● Ale pod rozwiązanie nie można podłączyć monitora, myszki i klawiatury ● Już można
  • 14. Wersja 4 ● „A gdybym chciała sprzedać to klientom” ● „Ok, rozwiązanie na stronie jest dobre ale wiesz konkurencja ma takie co się instaluje” ● Jak zabezpieczyć PHP'a? ● IonCube? ● Klucze Hasp?
  • 15. Stan obecny ● Gotowa aplikacja webowa z modułami: zapisy, wyniki, obsługa zawodów ● Moduł obsługa zawodów opracowany jako moduł dostępny w sieci lokalnej i zamknięty w boksie ● Dostępny boks dla monitorów w rozprężalni, sędziów i spikera ● W testach używanie online przez klientów ● W opracowaniu rozwiązanie do użytku offline przez klientów
  • 16. Stan obecny ● Gotowa aplikacja webowa z modułami: zapisy, wyniki, obsługa zawodów ● Moduł obsługa zawodów opracowany jako moduł dostępny w sieci lokalnej i zamknięty w boksie ● Dostępny boks dla monitorów w rozprężalni, sędziów i spikera ● W testach używanie online przez klientów ● W opracowaniu rozwiązanie do użytku offline przez klientów
  • 17. Kontakt ● Twitter: lukasz_luczak ● LinkedIn: lukaszluczak ● About.me: lukasz.piotr.luczak ● Web: lukaszluczak.pl ● Mail: lukasz.luczak@onet.pl