WWW-ohjelmointi ANTTI SAND TIETA12
Krssin kvas 2 Työkrssi WWW-sovellsten totettamisesta selain- ja palvelinympäristöissä Kerroksittainen arkkitehtri Client-server arkkitehtri Cookies, sessions, athentication, athorization Tietotrva: CSRF, XSS, Injections, Escaping, Encrypting, Defensive programming Paikka: lennot ls A2B, harjoitkset B0016 Lento-opets: 11 lentoa Harjoitstapaamiset: 11-12 kertaa Edellytykset:TIEP1, TIEP5, TIEA2.1, TIEP3, (TIETA7), TIETA9, Opintopisteet:10 op Hyviä käytäntöjä ja yleisiä vaaran paikkoja
Krssin tavoitteet 3 Opintojakson soritettaan opiskelija ymmärtää arkkitehtrin merkityksen ylläpidettävyydelle www-sovellsten ohjelmoinnissa, osaa snnitella www-sovellkselle arkkitehtrin, joka eriyttää tietokantakerroksen ja esityskerroksen toimintalogiikasta, osaa snnitella www-sovellksen transaktiorakenteen, ymmärtää eri tekniikoiden rooleja www-sovellksen rakentamisessa, ja osaa totettaa snnittelemansa arkkitehtrin mkaisen www-sovellksen ymmärtää selainohjelmoinnin persteet ja kykenee tottamaan dynaamisia selainsovellksia.
Krssin aihealeet 4 HTTP protokolla Front controller PHP -ohjelmointikieli MVC I/O, inpt/otpt, syötteet ja tlosteet Reititys Työskentely tietokantojen kanssa Tietotrva, atentikaatio, athorisaatio Templating Active Record, ORM Soveltvat snnittelmallit XSS, CSRF, SQL Injektiot REST APIs Istnnot ja evästeet Tila ja tilattoms Client server -arkkitehtri
Krssin sorittaminen 5 Lennot Harjoitstapaamiset Tentti Harjoitstyö 11 tapaamiskertaa Teorian ja käytännön tasapainoila 11-12 tapaamiskertaa Käydään läpi viikon aihetta Määrittelyä Arkkitehtria Krssin keskeisin opetsmoto Ohjelmointia oppii vain ohjelmoimalla
Aikatal 6 Viikko Aihe Tehtävä/projekti Viikko 1 Intro Kehitysympäristö kntoon Viikko 2 Basics PHP persteet Viikko 3, 4, 5 Core FW Simple PHP Framework Viikko 6 Secrity Secring PHP applications Viikko 7 & 8 Laravel Fll PHP Framework Viikko 9 & 10 Ve Client Server -applications Viikko 11 Excercise Harjoitstyöstä
Arviointipersteet 7 Krssi arvioidaan harjoitstyön persteella Viikkoharjoitsaktiivisdella voi vaikttaa arvosanaan Tentti pitää sorittaa hyväksytysti Jos harjoitstyön arvosana on 5, krssin arvosana on 5 Mssa tapaksessa viikkoharjoitsaktiivisdella voidaan vaikttaa arvosanaan
Harjoitstyö 8 Harjoitstyö on krssin keskeisin työkal Käyttäjätilit, käyttäjien oikedet, istnnot Ohjelmoimaan voi oppia vain ohjelmoimalla Harjoitstyön tlee olla riittävän laaja ja siinä tlee ratkaista wwwohjelmoinnin keskeisiä ongelmia Varatminen yleisimpiin tietotrvaongelmiin Työskentely tietokannan kanssa (CRUD) Työskentely verkkolomakkeiden datan kanssa, validointi, virheilmoitkset käyttäjälle Selainohjelmointi, XHR
Opettajan yhteystiedot 9 En ole vakitisessa työshteessa, ei viikoittaista vastaanottoa, ei työhonetta, ei työphelinnmeroa Mrheisiin voi hakea helpotsta harjoitstapaamisissa tai hätätapaksessa sähköpostilla: antti.sand@staff.ta.fi Paljon opiskelijoita -> sähköpostiin ei välttämättä ehdi paljoa vastailemaan Moodlessa on keskstelale, josta voi hakea vertaistkea ongelmien ratkaisn Työskentelyn ongelmiin vastas löytyy sein myös malta Interinteistä
10 KURSSIN TYÖKALUT KÄYTETTÄVÄT TEKNIIKAT JA OPISKELIJAN KEHITYSTYÖKALUT
Krssin työkalt 11 Krssilla ttsttaan palvelinohjelmointiin PHP kielellä ja lopssa ttsttaan Laravel -ohjelmointikehykseen. Selainohjelmoinnissa ja palvelin-selain kommnikaatiossa käytetään JavaScript kieltä ja ttsttaan Ve.js JavaScript kirjastoon. Krssilla käydään läpi arkkitehtrisia ja toimialakohtaisia vaatimksia, jotka ovat isoilta osin mttmattomia ohjelmointikielestä riippmatta. TIETA12-2017 - A.S.
Opiskelijan työkalt 12 Koodieditori on koodarin läheisin työkaveri pidä holta, että editorisi on jri sinlle paras mahdollinen Omia sositksia: Sblime Text (nagware) ja Atom (ilmainen) kevyitä ja mokattavia / laajennettavia PhpStorm (ilmainen opiskelijalle) monipolinen, oikea IDE. Trhan raskas, jos et opettele käyttämään kaikkia ominaisksia. Homaa, että srin hyöty löytyy kstomoinnin ja laajennsten katta
Opiskelijan työkalt 13 SQL tietokannat PostgreSQL, MySQL / MariaDB, SQLite Tietokantaeditori helpottaa elämää: PostgreSql MySql / MariaDB SQLite macos PSeqel Seqel Pro Windows HeidiSQL SQLiteBrowser
Opiskelijan kehitysympäristö 14 PHP, *SQL, Server daemon Palvelinohjelmointi vaatii laajoja oikeksia säätää palvelimen asetksia. Paikallinen kehitys voidaan tehdä omalla koneella, mtta jlkaisversiot vaativat oikeksia. Paikallisen kehityskoneen asetkset macos ja Linx käyttäjät voivat asentaa omalle koneelleen kaikki vaadittavat ohjelmat melko vaivattomasti (apt-get ja brew). Trvallisempi vaihtoehto on virtalisoida kehitysympäristö
Virtalisoit 15 kehitysympäristö Oracle VirtalBox virtalisointiin (https://www.virtalbox.org/) Vagrant virtaalikoneiden hallintaan (https://www.vagrantp.com/) Valmiit VM Imaget jri halamasi laiselle kehitysympäristölle, tai phdas käyttöjärjestelmä image ja itse asennett sovellkset (https://atlas.hashicorp.com/boxes/search?pr ovider=virtalbox)
Sositeltavaa lettavaa 16 Verkossa kasapäin ohjeita PHP kielelle Mtta iso osa näistä sisältää vanhentneita käytäntöjä ja honoja nevoja Jos olet ttstnt kieleen mtamia vosia sitten ja kaipaat tietojen päivittämistä tämän hetken sositeltihin käytäntöihin, sositeltavaa lettavaa on https://phpbestpractices.org/ www.phptherightway.com Modern PHP New Featres and Good Practices, (2015), JOSH LOCKHART
Sositeltavaa lettavaa 17 Jos kaipaat kattavampaa materiaalia PHP kielestä, olio-ohjelmoinnista ja snnittelmalleista, hanki PHP Objects, Patterns, and Practice 5 th edition (2017), MATT ZANDSTRA Hom! 5 th edition Kirjaa päivitetty kielen kehityksen mkana, aiemmissa painoksissa osin vanhentneita käytäntöjä
Sositeltavaa lettavaa 18 The Clean Architectre in PHP (2016), Kristopher Wilson CLEAN arkkitehtri SOLID snnittelmalli BDD Jos et ole vielä lkent, niin kannattaa: Design Patterns: Elements of Resable Object-Oriented Software - Gang of For Patterns of Enterprise Application Architectre Martin Fowler
19 PHP HYPERTEXT PREPROCESSOR
PHP Historia 20 PHP development began in 1995 when Rasms Lerdorf wrote several Common Gateway Interface (CGI) programs in C, which he sed to maintain his personal homepage. He extended them to work with web forms and to commnicate with databases, and called this implementation "Personal Home Page/Forms Interpreter" or PHP/FI. - yep, Wikipedia Haltaan toiminnallistta staattisille siville Olemassa olevat työkalt harvassa Syöte käyttäjältä lomakkeilla Tiedon käsittely tietokannoissa WWW-ohjelmoinnin persteet
PHP hyvässä ja pahassa 21 PHP:n oss tnnetista palvelinsovellksista Kaikki mt 18 % PHP 82 % PHP: a Fractal of Bad Design https://eev.ee/blog/2012/04/09/phpa-fractal-of-bad-design/ PHP Scks, Bt It Doesn't Matter https://blog.codinghorror.com/phpscks-bt-it-doesnt-matter/ Kitenkin, PHP on seimmin saatavilla oleva palvelinpolen kieli ja se on saatavilla koln palvelimilla
PHP kritiikkiä 22 Toimintaympäristön mtos on ollt merkittävää Kieltä on kitenkin vaikea distaa rikkomatta olemassa olevaa Todaan sia toiminnollisksia edellisten rinnalle, knnes pelkästään A- kirjaimella alkavia fnktioita on 124 Moni fnktio tekee miltei samaa asiaa erilaisilla parametrijärjestyksillä
Tastoja tälle 23 Aln perin fnktionaalinen, löyhästi tyypitetty kieli Myöhemmin tot mkaan lokat ja OOP:n persteet Sittemmin laajennett nimiavarksilla, rajapinnoilla, abstrakteilla lokilla, Ja nyt jopa vahvalla tyypityksellä (7.0 ja 7.1 toivat mahdollisden parametrien ja palarvojen tyypittämiselle) TIETA12-2017 - A.S.
Helpon, dynaamisen kielen ongelma 24 Koska PHP on valmiiksi asennettna niin moneen palvelimeen ja koska se on melko helposti lähestyttävä kieli ja koska dynaaminen tyypitys saattaa tottaa välillä oikein toimivan ohjelman vähemmällä vaivalla, monet, joilla ei ole laajaa osaamista alasta saattavat lähteä totettamaan visioitaan Tämä on johtant honosti toimiviin, tietotrvattomiin ohjelmiin Ja PHP:n honoon maineeseen Ja toisaalta isoon määrään verkkomateriaalia, jonka avlla det skpolvet ovat totettaneet honosti toimivia, tietotrvattomia ohjelmia Toisaalta kielen lähtökohdat ovat olleet pragmaattisia ja se on kehittynyt askeleittain, josta syystä iso osa materiaalista kvaa vanhentneita toimintatapoja
PHP elää renessanssiaan 25
Zend 26 PHP Engine on se osa, joka parsii (tlkitsee) koodin Perinteisesti tähän käytetään Zend Engineä PHP:n kehitys ei ole ollt hidasta 1998 se oli osana 1% domaineista, nyt 82% tnnetista Samalla kieli kehittyi shteellisen nopeasti shteessa klneeseen aikaan Mtta omassa erityiskentässään liian hitaasti shteessa kentän kehittymiseen http://php.net/manal/en/history.php.php
Enter Facebook 27 Facebookin sren sosion myötä tarvittiin tehokkaampi engine ja sia ominaisksia Facebook jlkaisi oman HHVM:n (HipHop Virtal Machine), joka oli nopeampi kin Zend Engine Facebook laajensi PHP kieltä omalla taaksepäin yhteensopivalla Hack kielellä, joka mm. toi kieleen mkaan mahdollisden staattiselle tyypitykselle Facebook kiritti kielen ja enginen kehitystä Nyt Zend on päässyt samalle viivalle HHVM:n kanssa nopedessa Ja PHP 7.1 toi mkanaan ten staattiselle tyypitykselle
Tämän päivän WWW-ohjelmointi 28 https://www.yotbe.com/watch?v=mdots5bdqrm&t=500s (8:20 21:00)
Langage Wars 29 Verkkokeskstelissa jäädään sein kinastelemaan kielten paremmdesta Faktapohjainen vertail on järkevää parhaan valinnan tekemiselle mtta loplta asiakasta kiinnostaa enemmän lopptlos, kin käytetty tekniikka Ja loplta sien kielten toma (koodaajan) tehokkshyöty lähenee nollaa http://blog.cleancoder.com/ncle-bob/2016/05/21/blenoyellow.html Ja kiidettäessä aina kohti seraavaa srta jtta menetetään paljon hyvää aiemmista http://blog.cleancoder.com/ncle-bob/2016/07/27/thechrn.html
Hello, World! 30
Sinlla saattaa olla PHP jo asennettna 31 Etenkin jos sinlla on macos tai Linx. Voit tarkistaa sen komennolla > php -v Kvassa versio 7.0.12, mtta 5.6.x riittää hyvin ja on yleisemmin käytössä
32 PHP omalle koneelle macos: asenna homebrew, sitten brew install homebrew/php/php70 Windows/macOS/Linx: XAMPP https://www.apachefriends.org XAMPP asentaa Apachen, PHP:n ja MariaDB:n TIETA12-2017 - A.S.
Hello World! 33 PHP:n tlkattava oss alkaa <?php Jos tiedostossa on vain php-koodia, ei tarvita slkevaa määrettä, mssa tapaksessa tlkattava oss lopetetaan?> Echo tlostaa rdlle Ajetaan php tiedosto.php
Löyhästi tyypitetty kieli 34 Java / C# String mystring; mystring = fbar ; Int myint; myint = 42; PHP $mystring = fbar ; $myint = 42; $myint = [ f, bar, baz ]; myint = [ f, bar, baz ]; Vahvasti tyypitetyssä kielessä mttja alstetaan tietotyyppiin, eikä sitä voi enää mttaa. PHP:ssa mttjaa ei alsteta, sen tyyppi määräytyy vasta sijoittamisen yhteydessä ja se voi vaihtaa tyyppiään.
Löyhästi tyypitetty kieli 35 Java / C# pblic String themeaningoflife(int a) { retrn It was + a; } PHP fnction themeaningoflife($a) { retrn It was. $a; } Vahvasti tyypitetyt kielet määrittelevät palarvon tyypin ja parametrien tyypit. (PHP 7.1 tkee myös vahvaa tyypitystä.)
36 Live koodasta AIKATAULUN SALLIESSA
Ensi kerraksi 37 Kehitysympäristö kntoon! Tarkista, että sinlla on kelvolliset työkalt (editorit) Paikallinen kehitysympäristö (PHP, *SQL, Server daemon) Sositelt vaihtoehto on asentaa VirtalBox ja Vagrant ja käyttää ScotchBox tai laravel/homestead Vagrant-konetta Näin kaikilla on sama paikallinen kehitysympäristö riippmatta oman koneen käyttöjärjestelmästä Varmista, että sinlla on virtaalikoneessa PostgreSql, koska sitä käytetään koln palvelimella Pystyt jlkaisemaan ja ajamaan koodia koln palvelimella
Kysymyksiä? 38