Analiza przedwdrożeniowa portalu latarnicy.pl Powód zmian Cele Możliwości techniczne Opis modułów Rejestracja Kalendarz wydarzeń oraz rejestracja na wydarzenia Interaktywna mapa Forum Treści statyczne Newsletter Baza wiedzy Napisane moduły Integracja z zewnętrznymi serwisami Koncepcja wdrożenia
Powód zmian W związku z rozwojem programu Miasta w internecie zaistniała potrzeba stworzenia serwisu wspomagającego oraz usprawniającego wymianę oraz udostępnianie informacji na temat projektu oraz powiązanym z nim działalności, jak również przepływu wiadomości między osobami zaangażowanymi w projekt od strony merytorycznej. Portal który do tej pory służył jako serwis MWI z względu na swoją prostą strukturę oraz rozwiązanie technologiczne oparte na prostym systemie CMS Joomla nie był w stanie sprostać ww. funkcjionalnościom, co zrodziło potrzebę stworzenia serwisu dedykowanego o dużo większych możliwościach.
Cele Podstawowymi celami portalu od strony technicznej są: *intuicyjna obsługa *nowoczesny i przejrzysty layout *szybkość działania i obsługi *wygodne administrowanie wszystkimi funkcjionalnościami
Laboratorium.ee 2012 strona 1
*wysoka wydajność systemu Cele funkcjionalne: * stworzenie infrastruktury ułatwiającej wsparcie i działanie latarników * ułatwienie kontaktu Latarników z różnych regionów kraju * ułatwienie kontaktu z latarnikami osób z grupy 50+ * stworzenie miejsca do wymiany informacji dla latarników * tworzenie statystyk latarników , odwiedzin
Możliwości techniczne Przeglądając możliwości wyboru technologii w jakiej mógły powstać nowy portal, braliśmy przedewszystkicm pod uwagę nowoczesność, dostępność bibliotek programistycznych oraz możliwość prostego jak również efektywnego rozwijania i modyfikowania aplikacji. Wyborem jest framework Django bazujący na języku programowania Python. Powody decyzji: * Python jest nowoczesnym jezykiem programowania, znacznie przewyższającym popularny w programowaniu sieciowym język PHP * Rozbudowana biblioteka standardowa oraz bardzo duża ilość niezależnych bibliotek wysokiej jakości * Przejrzysta i klarowna składnia pozwalająca szybko oraz skutecznie programować * Licencja open-source ( również frameworka Django ) * Django to wysokopoziomowy frameworkiem który w przeciągu ostatniego czasu zajmuje czołowe miejsca na zestawieniach frameworów do programowania stron www * Zawiera przyjazne adresu url * Prosty i czytelny format szablonów * Wyraźne oddzielenie logiki aplikacji od logiki biznesowej oraz wyglądu * Duża skalowalność i wydajność * Systemu cachowania odciązające serwer przy większych obciążeniach * ORM Wysokiego poziomu ( Mapowanie relacyjno obiektowe ) Poniżej porównanie Pythona z PHP: PHP - zalety ● łatwo znaleźć taniego programistę(duże wysycenie rynku) ● popularność na hostingach - praktycznie każdy oferuje interpreter PHP ● niski poziom wejścia dla nowych programistów ● kilka rozbudowanych i aktywnie rozwijanych gotowych rozwiązań (Symfony, Drupal, Typo3) PHP - wady ● bałagan w bibliotece standardowej języka - trudności w opanowaniu kodu dużych projektów ● łatwo napisać zły kod, bardzo trudno dobry kod
Laboratorium.ee 2012 strona 2
●
bardzo słaby model obiektowy nie pozwala na wdrożenie zaawansowanych technik projektowania aplikacji ● powolność w stosunku do innych dostępnych rozwiązań - wyższy koszt utrzymania aplikacji ● większa trudność w utrzymaniu i rozwoju dużych aplikacji ● powstał jako prosty “wspomagacz” do obsługi formularzy, rozdmuchał sie do dużej nieuporządkowanej chmury zlepiającej nieskładnie wiele róznych pomysłów (które często nie są spójne) Python - wady ● za “pseudo” wadę można uznać jedynie mniejszą dostępność tanich programistów ● mniejsza dostępność tanich serwerów Python - zalety ● bardzo dobrze zaprojektowany język udostępniający wiele zaawansowanych idei projektowania obiektowego(metaklasy, dekoratory) ● rozwijany przez stałe środowisko doświadczonych i zaawansowanych programistów ● wykorzystywany do wielkich rozwiązań - indeks wyszukiwania google, youtube, instagram, pinterest, facebook, … ● nie da się napisać kompletnie złego kodu - po prostu się nie uruchomi ● wymaga większego wykształcenia i obycia informatycznego programistów - którzy piszą lepszy kod ● “coś” napisane w pythonie na 200 linijek kodu wymaga często kilka razy więcej kodu w PHP aby osiągnąć tą samą funkcjonalność ● duża wyjdaność serwisów - kod nie jest uruchamiany za kazdym żądniem a jedynie raz ● dostępne frameworki są napisane i zaprojektowane w sposób wymuszający poprawność i wybór najlepszych rozwiązań ● projekty implementuje się niekiedy kilka razy szybciej niż w PHP ● łatwe utrzymanie i rozwój istniejących projektów
Strona frontend-owa bazuje na bibliotece jQuery oraz jej rozszerzeniach zapewniających odpowiedni zakres funkcjionalności frontend-u oraz bibliotece Google Maps. Poniżej znajduje się opis technologii jakie stosujemy po stronie front-endu: * jQuery - lekka biblioteka programistyczna dla języka JavaScript, ułatwiająca korzystanie z JavaScript (w tym manipulację drzewem DOM). Kosztem niewielkiego spadku wydajności w stosunku do profesjonalnie napisanego kodu w niewspomaganym JavaScripcie pozwala osiągnąć interesujące efekty animacji, dodać dynamiczne zmiany strony, wykonać zapytania AJAX. Większość pluginów i skryptów opartych na jQuery działa na stronach nie wymagając zmian w kodzie HTML (np. zamienia klasyczne galerie złożone z miniatur linkujących do obrazków w dynamiczną galerię). * AJAX - technika tworzenia aplikacji internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu, w sposób asynchroniczny. Ma to umożliwiać bardziej dynamiczną interakcję z użytkownikiem niż w tradycyjnym modelu, w którym każde żądanie nowych danych wiąże się z przesłaniem całej strony HTML. * HTML5 - język wykorzystywany do tworzenia i prezentowania stron internetowych www. Jest rozwinięciem języka HTML 4. Niewątpliwie zaletą jest to, iż nie dąży on do wyparcia poprzednich języków, ale wspiera je, dając przy tym możliwość zastępowania nowości starymi odpowiednikami ( wstecznej kompatybilności ze starszymi przeglądarkami ). HTML5 wychodzi
Laboratorium.ee 2012 strona 3
również naprzeciw potrzebie dodawania na strony www plików graficznych czy multimedialnych. Wprowadzenie w HTML5 elementu <canvas> pozwala na utworzenie obszaru grafiki rastrowej, w którym możliwe jest rysowanie dokonywane z poziomu JavaScript. Użycie <canvas> pozwala na wykonanie grafik, wykresów czy gier. Zastosowanie w HTML5 znaczników <video> i <audio> eliminuje konieczność używania technologii Flash. Zaletą tego rozwiązanie jest możliwość wstawiania w prosty sposób nieskomplikowanych elementów, takich jak odtwarzacze video czy audio.
Opis modułów Portal składa się następujących modułów, których ogólna specyfikacja techniczna została opisana poniżej:
Rejestracja Autorski moduł rejestracji użytkowników , pozwalający na rejestrację zarówno użytkowników zwykłych, jak i kandydatów na latarników, gdzie dodatkowo jest podpięty 2 etap rejestracji oraz ankieta on-line do wypełnienia.
Kalendarz wydarzeń oraz rejestracja na wydarzenia Autorki kalendarz bazujący na 3 widokach ( miesięczny, tygodniowy, dzienny) w wariantach ( listy oraz kafelkowym ). Istnieje możliwość dodawania zdarzeń z panelu administratora lub poprzez użytkownika z odpowiednimi uprawnieniami. Do wydarzeń użytkownicy mogą się zapisywać.
Interaktywna mapa Mapa oparta o bibliotekę Google Maps, zawierająca możliwość wyświetlania warstw opisanych w specyfikacji w zależności od uprawnień. Mapa korzysta również z dodatkowych pluginów odpowiedzialnych m.in za grupowanie punktów dla czytelnego podglądu całości.
Forum Forum bazujące na enginie pybbm, mocno modyfikowane przez nas tak by funkcjionalność w pełni dostosować do wymagań klienta. Całkowita integracja z portalem ( korzystanie z tej samej bazy użytkowników, profili itd. )
Treści statyczne Treści statyczne oparte o customowany moduł feinCMS odpowiedzialny za prawidłowe budowanie struktury drzewa statycznych artykułów oraz poprawność contentu.
Laboratorium.ee 2012 strona 4
Newsletter Dedykowany moduł pisany na potrzeby klienta, specjalnie skonstruowany do wysyłania mailingu za pomocą tasków żeby nie generować obciążeń serwera.
Baza wiedzy Moduł dedykowany opracowany specjalnie pod kątem wymagań klienta.
Napisane moduły W pierwszy etapie napisaliśmy 4 moduły: * Rejestracja * Kalendarz wydarzeń oraz rejestracja na wydarzenia * Interaktywna mapa * Forum Dodatkowo zostały oprogramowane skrypty importujące dane ze poprzedniej strony, umożliające użytkownikom logować się i korzystać z serwisu bez ponownego zakładania konta, co pozwala na bardzo prostą migrację stron. Docelowa lista modułów będzie zawierać dodatkowo: Profil użytkownika Treści statyczne (strony, wpisy) Repozytorium plików Baza wiedzy (w tym Niezbędnik Latarnika) Platforma e-learningowa Newsletter Statystyki
Integracja z zewnętrznymi serwisami Portal będzie posiadał integrację z systemem CRM dostarczanym przez firmę itcube.pl. Lista eksportowanych użytkowników będzie zawężona do latarników grantowych, których lista będzie na bierząco aktualizowana poprzez synchronizację serwisu z systemem CRM poprzez ITCUBE API.
Koncepcja wdrożenia Strona testowa zostanie umieszczona pod adresem beta.latarnicy.pl, gdzie będzie zamieszczana aktualna najnowsza wersja. Wszystkie uwagi będzie można zgłaszać poprzez system bugtrackera oparty na serwisie www.assembla.com. pod adresem https:/ /www.assembla.com/spaces/miasta-w-internecie/tickets, gdzie zostaną utworzone konta
Laboratorium.ee 2012 strona 5
dla użytkowników wersji beta ( będziemy potrzebowali listy adresów e-mail-owych których użytkownicy będą upoważnieni do zgłaszania błędów ).
Laboratorium.ee 2012 strona 6