Produkcja aplikacji internetowych

81
Produkcja aplikacji internetowych wykorzystywane technologie mgr inż. Tomasz Borowski, 2014-03-22 Cieszyn

description

O zagadnieniu: Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś! Cel i korzyści spotkania: Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.

Transcript of Produkcja aplikacji internetowych

Page 1: Produkcja aplikacji internetowych

Produkcja aplikacji internetowychwykorzystywane technologie

mgr inż. Tomasz Borowski, 2014-03-22 Cieszyn

Page 2: Produkcja aplikacji internetowych

mgr inż. Tomasz Borowski

edukacja: BWS im. Tyszkiewicza, Uniwersytet Jagielońskipraca: Selleo, tbprojectsdoświadczenie: w webdevelopmencie: 7 latprojekty w Php: ~15projekty Ruby: ~10projekty w JS: ~5technologie: Ruby on Rails, SQL, Sencha Touch,

Ember.js, Coffeescript, HAML, Rspec.

Kilka słów o wykładowcy

Page 3: Produkcja aplikacji internetowych

Szeroki wybór

aplikacje mobilne

sterowniki

sieci komputerowe

aplikacje desktopowe

aplikacje internetowe

symulacje

gry wideo

Page 4: Produkcja aplikacji internetowych

część 1: Aplikacje Internetowe

Page 5: Produkcja aplikacji internetowych

Dlaczego właśnie web development?

Mogę stworzyć własna stronę z recenzjami filmów! ;)

Page 6: Produkcja aplikacji internetowych

Dlaczego właśnie web development?

Jest duże zapotrzebowanie - mogę na tym zarobić!

Page 7: Produkcja aplikacji internetowych

Dlaczego właśnie web development?

Cały czas się zmieniają technologie,a ja mogę uczyć się nowych rzeczy!

Page 8: Produkcja aplikacji internetowych

Dlaczego właśnie web development?

Mogę poznać inspirujących ludzi i razem tworzyć open source’owe rozwiązania!

Page 9: Produkcja aplikacji internetowych

Dlaczego właśnie web development?

Wszystko zmierza do internetu...

Page 10: Produkcja aplikacji internetowych
Page 11: Produkcja aplikacji internetowych

Cechy dobrego web developera

Page 12: Produkcja aplikacji internetowych

Cechy dobrego web developera

Wszechstronność umiejętności

admin. serwera

kodowanie server-side

kodowanie client-side

stylowanie + ux

Full Stack Developer

Page 13: Produkcja aplikacji internetowych

Cechy dobrego web developera

Wszechstronność komunikacja

z współpracownikami

z klientem

pisemna i głosowa

ciągła i elastyczna

Page 14: Produkcja aplikacji internetowych

obsługa przypadków brzegowych

Cechy dobrego web developera

Profesjonalizm jakość rozwiązania

stabilność

intuicyjność

Page 15: Produkcja aplikacji internetowych

krótkie, zrozumiałe metody oraz klasy

Cechy dobrego web developera

Profesjonalizm jakość kodu

brak nadmiarowego kodu

testy automatyczne

Page 16: Produkcja aplikacji internetowych

Cechy dobrego web developera

Otwartość

dystans do swego kodu

chęć otrzymania konstruktywnej krytyki

chęć dawania konstruktywnej krytyki

Page 17: Produkcja aplikacji internetowych

Cechy dobrego web developera

Cierpliwość

dziel i zwyciężaj zadania

poznawanie rozwiązań wymaga czasu

porażki to część procesu uczenia się

Page 18: Produkcja aplikacji internetowych
Page 19: Produkcja aplikacji internetowych

Jak zacząć?

Page 20: Produkcja aplikacji internetowych

Jak zacząć?

Dać się czymś zainspirować i zacząć drążyć temat

czym jest grywalizacja?

jakie mogą być jej zastosowania?

jakie są istniejące rozwiązania?

jakich błędów nie popełniać?

Page 21: Produkcja aplikacji internetowych

Jak zacząć?

Wymyślić sobie konkretny projekt do realizacji

jak ma wyglądać?

jakie technologie chcę poznać?

jakie warunki ukończenia?

Page 22: Produkcja aplikacji internetowych

Jak zacząć?

Poświęcić swój czas i zacząć działać

ile godzin... dziennie?

kiedy gotowa pierwsza wersja?

a może potrzebuję pomocy?

Page 23: Produkcja aplikacji internetowych

Jak zacząć?

Zbierz konstruktywny feedback i udoskonalaj

czy kierunek jest dobry?

jakie zmiany są najważniejsze?

Page 24: Produkcja aplikacji internetowych

To działa!

Page 25: Produkcja aplikacji internetowych

Eksperyment

Grywalizacja bywa ciekawa i pożyteczna

Page 26: Produkcja aplikacji internetowych

Eksperyment

Grywalizacja pracy może rozwiązać problemy

Invoicing Module

TODO:

Some Task

Some Task

Backlog In Progress Done

Some Task

Some Task

Page 27: Produkcja aplikacji internetowych

Eksperyment

Chciałbym poznać nowe technologie

Page 28: Produkcja aplikacji internetowych

Eksperyment

Page 29: Produkcja aplikacji internetowych

Eksperyment

Jakie jest zdanie potencjalnych użytkowników

+150exp

+520exp

+330exp

+120exp

+480exp

+90exp

Page 30: Produkcja aplikacji internetowych

Eksperyment

Page 31: Produkcja aplikacji internetowych

Eksperyment

Opowiedzieć innym o zebranym doświadczeniu

Page 32: Produkcja aplikacji internetowych
Page 33: Produkcja aplikacji internetowych

część 2: Technologie Webowez punktu widzenia Ruby on Rails developera

Page 34: Produkcja aplikacji internetowych

Technology Stack

Back-endkod aplikacji, biblioteki, serwer aplikacji

Usługibaza danych, mailing, monitoring aplikacji

Front-endHTML, Javascript (biblioteki), CSS (stylowanie)

Page 35: Produkcja aplikacji internetowych

Front-endwybrane języki

Page 36: Produkcja aplikacji internetowych

HTML HyperText Markup Language

Hipertekstowy język znaczników,definiuje co ma być wyświetlane

<html>

<head>

<title>Awesome strona!</title>

</head>

<body>

<div class=”pink”> Strona o kucykach </div>

</body>

</html>

Page 37: Produkcja aplikacji internetowych

HAML HTML abstraction markup language

Hipertekstowy język znaczników,definiuje co ma być wyświetlane

%html

%head

%title Awesome strona!

%body

.pink Strona o kucykach

Page 38: Produkcja aplikacji internetowych

CSS Cascading Style Sheets

Kaskadowe arkusze stylów,definiuje jak ma być wyświetlane

div {

font-size: 14px;

font-color: black;

}

div.pink {

font- color: pink;

}

Page 39: Produkcja aplikacji internetowych

SASS Syntactically Awesome Stylesheets

Kaskadowe arkusze stylów,definiuje jak ma być wyświetlane

div

font-size: 14px

font-color: black

&.pink

font- color: pink

Page 40: Produkcja aplikacji internetowych

JavaScript

Skryptowy język programowania,definiuje jak ma się zachowywać

var Person;

Person = (function() {

function Person(name) {

this.name = name;

}

Person.prototype.sayHi = function() {

return alert("Hi, I am " + this.name);

};

return Person;

})();

Page 41: Produkcja aplikacji internetowych

CoffeeScript

Skryptowy język programowania,kompilowany do JavaScriptu

class Person

constructor: (name) ->

@name = name

sayHi: ->

alert "Hi, I am #{@name}"

Page 42: Produkcja aplikacji internetowych

Frond-endwybrane biblioteki i frameworki

Page 43: Produkcja aplikacji internetowych

jQuery

Biblioteka dla języka JavaScript

- manipulacje na drzewie DOM- obsługa wydarzeń- obsługa animacji- obsługa zapytań AJAX

jQuery('body').css('color', 'pink');

jQuery('div.pink').append('Awesome!');

Page 44: Produkcja aplikacji internetowych

Bootstrap

Framework CSS, JavaScript

- możliwość wykorzystania gotowych szablonów- responsywne stylowanie- komponenty HTML / JavaScript

Page 45: Produkcja aplikacji internetowych

EmberJS

Framework MVC Javascript

- budowa aplikacji jednostronicowych- zarządzanie danymi po stronie klienta- dynamiczne szablony Handlebars

Page 47: Produkcja aplikacji internetowych

Back-endwybrane języki

Page 48: Produkcja aplikacji internetowych

PHP PHP Hypertext Preprocessor

Skryptowy język programowaniaclass Person {

var $name;

function Person($name)

{

$this->name = $name;

}

function sayHi()

{

return 'Hi, I am '.$this->name;

}

}

Page 49: Produkcja aplikacji internetowych

Ruby

Skryptowy język programowaniaclass Person

def initialize(name)

@name = name

end

def say_hi

"Hi, I am #{@name}"

end

end

Page 50: Produkcja aplikacji internetowych

Python

Skryptowy język programowaniaclass Person:

def __init__(name):

self.name = name

def say_hi:

"Hi, I am %s" % self.name

Page 51: Produkcja aplikacji internetowych

Back-endwybrane frameworki

Page 52: Produkcja aplikacji internetowych

Frameworki MVCMVC to wzorzec architektoniczny służący do organizowania struktury aplikacji posiadających graficzne interfejsy użytkownika.

MVC zakłada podział aplikacji na trzy główne części:● Model: jest reprezentacją problemu bądź logiki aplikacji.

● Widok: opisuje, jak wyświetlić pewną część modelu w ramach interfejsu użytkownika.

● Kontroler: przyjmuje dane wejściowe od użytkownika i reaguje na jego poczynania, zarządzając aktualizacje modelu oraz odświeżenie widoków.

Wikipedia

Page 53: Produkcja aplikacji internetowych

Frameworki MVC

Page 54: Produkcja aplikacji internetowych

Frameworks

Page 55: Produkcja aplikacji internetowych
Page 56: Produkcja aplikacji internetowych

Ruby on Rails

Dlaczego

- mało konfigurowania, mało kodu- przyjemny w kodowaniu i czytaniu- łatwość w instalacji gemów (pakietów)- duże i bardzo aktywne community- wsparcie dla różnorodnych baz danych- szybkie prototypowanie dzięki generatorom kodu- ...

Page 57: Produkcja aplikacji internetowych

Ruby on Rails

Przykładowa aplikacja - otoTeamAplikacja Ruby on Rails do zapraszania znajomych na spotkania z wykorzystaniem kolejki zaproszeń.

Aplikacja jest tworzona podczas warsztatów Ruby on Rails organizowanych przez fundację Mikstura IT.

Repozytoriumhttps://github.com/miksturait/ototeam

Onlinehttp://ototeam-mikstura.herokuapp.com

Page 58: Produkcja aplikacji internetowych

Usługiwybrane aplikacje

Page 59: Produkcja aplikacji internetowych

Heroku

Hosting w platformie chmurowej

- darmowy dla prostych aplikacji- duża skalowalność- proste w instalacji dodatki- nie wymaga wiedzy z administracji serwerami

Page 60: Produkcja aplikacji internetowych

Amazon S3 Simple Storage Service

Hosting plików w chmurze

- darmowy do 1GB wychodzącego transferu miesięcznie- zarządzanie zezwoleniami- usługa niezbędna przy korzystaniu z Heroku

Page 61: Produkcja aplikacji internetowych

PostgreSQL

Relacyjna baza danych SQL

- darmowa (open source)- bardzo wydajna- możliwość definiowania funkcji i widoków- dodatkowe typy danych np. array, hstore

Page 62: Produkcja aplikacji internetowych

Mailgun

API do wysyłania i przekazywania maili

- darmowy do 10 000 maili miesięcznie- tracking wysyłanych maili- przekierowywanie maili

Page 63: Produkcja aplikacji internetowych

New Relic

Monitorowanie aplikacji

- analiza obciążenia serwera- analiza zapytań SQL- analiza ruchu w aplikacji- monitorowanie wydajności aplikacji

Page 64: Produkcja aplikacji internetowych
Page 65: Produkcja aplikacji internetowych

Narzędzia do developmentuwybrane aplikacje

Page 66: Produkcja aplikacji internetowych

Travis-CI

Wykonywanie testów na zdalnym serwerze

- testy uruchamiane przy każdej aktualizacji repozytorium- opcjonalne contiuous deployment- darmowe dla projektów open source

Page 67: Produkcja aplikacji internetowych

Code Climate

Analiza statyczna kodu

- detekcja powtórzeń kodu- detekcja skomplikowanych metod / klas- obliczanie pokrycia kodu testami- darmowa dla projektów open source

Page 68: Produkcja aplikacji internetowych

Gemnasium

Analiza wersji wykorzystywanych bibliotek

- powiadomienia o nowych wersjach bibliotek- ostrzeżenia przed dziurami bezpieczeństwa- listowanie zmian w danej bibliotece

Page 69: Produkcja aplikacji internetowych
Page 70: Produkcja aplikacji internetowych

część 3: Agilezwinne techniki wytwarzania oprogramowania

Page 71: Produkcja aplikacji internetowych

Samozarządzający się zespół

Po co nam Project Manager?

- odpowiedzialni ludzie, wszyscy są równi- każdy może komunikować się z klientem

Page 72: Produkcja aplikacji internetowych

Standup

15 minut dziennie na omówienie “taktyki”

- omówienie postępów z ostatnich 24h- detekcja problemów

Page 73: Produkcja aplikacji internetowych

Sprint

Bo milestone trwa zbyt długo

- krótkie iteracje (np. 2-tygodniowe), częste planowanie- specyfikacja długoterminowa nie ma sensu

Page 74: Produkcja aplikacji internetowych

Interakcja z klientem

Ciągła gotowość na zmiany

- klient jest źródłem informacji- feedback dostarczany regularnie- wspólne planowanie sprintów

Page 75: Produkcja aplikacji internetowych

Test Driven Development

Zanim zaimplementujesz, przetestuj

- kod powinien być automatycznie testowany- testy niezbędne podczas refaktoringu- testy “gwarantem” stabilności aplikacji

Page 76: Produkcja aplikacji internetowych

Pair Programming

Wspólne rozwiązywanie problemu - jedna osoba koduje, druga weryfikuje oraz wyznacza cel- dobra metoda dzielenia się wiedzą- programowanie z “kaczuszką”- częste zmiany roli

Page 77: Produkcja aplikacji internetowych

Code Review

Jakość kodu przede wszystkim - wzajemne analizowanie kodu- detekcja potencjalnych problemów- poznawanie ciekawych rozwiązań

Page 78: Produkcja aplikacji internetowych

Continuous Deployments

Częsta aktualizowanie aplikacji - jeśli wszystkie testy przechodzą, to automatyczny deploy- kilkanaście aktualizacji dziennie

repozytorium serwer integracyjny web serwer

push web hook deploy

nowy kod

Page 79: Produkcja aplikacji internetowych

Retrospektywy

Wyciągajmy wnioski i usprawniajmy - po każdy sprincie analiza “jak poszło”- detekcja problemów i propozycje rozwiązań

Page 80: Produkcja aplikacji internetowych

“Na ogół sprawa nie rozbija się o wpadki, o których tak lubią mówić różni spece, lecz o złe wykonanie. Proste jak drut: nie wystarczy wymyślić co i jak, trzeba jeszcze to zrobić, a raczej dopilnować, żeby inni zrobili”

Ram Charan (“Fortune”, 1999)

Page 81: Produkcja aplikacji internetowych

@TomaszBorowski

tomaszborowski.com

Dziękuję za uwagę