SlideShare a Scribd company logo
Dr. Sabin Buraga
Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” Iași
www.purl.org/net/busaco
☁
☁
Cu c o dul în nori☀
☁
☁
☁
…în „excursiile” noastre (virtuale),
recurgem la aplicații – în general: software
aplicații native
instalabile pe un calculator/dispozitiv (mobil)
rulate grație unui mediu de execuție – uzual, oferit
de un sistem de operare (e.g., Linux, iOS,…) –
pe un procesor real/virtual
aplicații native
prezintă una/mai multe modalități
de interacțiune cu utilizatorul:
linia de comandă (CLI – Command Line Interface)
manipulare directă: WIMP (Window Icon Menu Pointer)
naturală – e.g., gesturi, voce, mișcare, ubicuitate, 3D,…
Cu codul în "nori"
aplicații native
pot recurge la platforme/tehnologii/limbaje
proprietare și/sau libere
pot fi utilizate conform unei licențe
(proprietare sau deschise)
detalii despre licențele de utilizare a software-ului/datelor la
tldrlegal.com
aplicații Web
colecție interconectată de pagini Web
cu conținut generat dinamic,
oferind o funcționalitate specifică
aplicații Web
prezintă o interfață cu utilizatorul exploatabilă
la nivel de client (i.e. navigator Web)
recurg la standarde/formate de date deschise
(HTTP, URL, HTML, CSS, JSON, SVG, XML, RDF,…)
☁☁⛭
⛭
Client
interfață cu
utilizatorul
Server
sit/aplicație Web
Date
stocate
persistent
Internet
(Web)
La ce-am putea recurge
pentru a dezvolta aplicații Web?
server de aplicații Web
scop:
eficientizarea proceselor de dezvoltare
a aplicațiilor Web de anvergură
server de aplicații Web
se bazează pe interfețe de programare
(API – Application Programming Interface)
și/sau pe componente reutilizabile
puse la dispoziție de server ori de alți ofertanți
server de aplicații Web
poate fi integrat în unul/mai multe servere Web
de asemenea, poate oferi propriul server Web
sau mediu de execuție
server de aplicații Web
simplifică maniera de invocare
de programe (script-uri) ale unei aplicații Web
generarea de conținut dinamic pe partea de server
server de aplicații Web
adoptă unul sau mai multe limbaje de programare
Erlang/Elixir – Chicago Boss, Phoenix, Sugar,…
Java – AppFuse, Play, Wicket etc.
JavaScript – Node.js + framework-uri: Express, Locomotive ș.a.
PHP – PHP + framework-uri: CakePHP, CodeIgniter, Symfony,…
Python – Django, Flask, Grok, Pyramid, Zope
Ruby – Cramp, Ruby on Rails, Sinatra,…
Scala – Apache Spark, Akka, Finagle, Play etc.
disponibile cu licențe de utilizare liberă
cadru de lucru (framework)
facilitează dezvoltarea de aplicații Web complexe,
simplificând operații uzuale (e.g., acces la baze
de date, generare de cod, management de sesiuni,
asigurarea performanței/securității)
și/sau încurajând reutilizarea codului-sursă
cadru de lucru (framework)
vizează dezvoltarea de aplicații la nivel de server
alte exemplificări:
Cuba (Ruby), Laravel (PHP), Meteor (Node.js),
Mojolicious (Perl), Ninja (Java), ObjectWeb (Python),
Revel (Go), Wt (C++)
cadru de lucru (framework)
oferă suport pentru implementări JavaScript
la nivel de client
exemple populare:
AngularJS, Backbone.JS, Ember
de studiat și www.infoq.com/research/javascript-frameworks-2015
bibliotecă (library)
colecție de resurse computaționale reutilizabile
– i.e., structuri de date + cod –
oferind funcționalități specifice
implementate într-un limbaj de programare
bibliotecă (library)
poate fi referită de alt cod-sursă (software):
server de aplicații, framework, bibliotecă,
serviciu, API ori componentă Web
bibliotecă (library)
diverse exemple „notorii” cu acces liber la codul-sursă:
Beautiful Soup – www.crummy.com/software/BeautifulSoup
D3.js – http://d3js.org/
ImageMagick – www.imagemagick.org
libcurl – http://curl.haxx.se/
Libxml2 – www.xmlsoft.org
Mustache – http://mustache.github.io/
OpenCV – opencv.org
Redland – http://librdf.org/
zlib – www.zlib.net
serviciu Web
software – utilizat la distanță de alte aplicații
și/sau servicii – ce oferă o funcționalitate specifică,
a cărui implementare nu trebuie cunoscută
de către dezvoltator
serviciu Web
recurge la tehnologii deschise, standardizate
adresare via URI (Uniform Resource Identifier)
acces prin HTTP (HyperText Transfer Protocol)
formate de date:
CSV (Comma Separated Values)
JSON (JavaScript Object Notation)
XML (Extensible Markup Language)
…
interfață de programare (API)
orice interfață bine-definită ce specifică operațiile
pe care o componentă, un modul ori o aplicație
le oferă altor elemente software
interfață de programare (API)
API public
disponibil pe baza unei licențe de utilizare
API privat
pentru uz intern
mash-ups
API-ul de la FitBit oferă acces la
date în formatele JSON și XML
ansamblu de dezvoltare
(SDK – software development kit)
încapsulează funcționalitățile API-ului
într-o bibliotecă ori colecție de module
(implementată într-un limbaj de programare,
pentru o platformă software/hardware specifică)
privire pragmatica
exemplu: acces la API-uri în Python – www.pythonapi.com
implementare
De la aplicații la API-uri și servere de aplicații
Brian Mulloy, Web API Design, Apigee, 2012
http://offers.apigee.com/web-api-design-ebook/
Care-s elementele
software ce pot fi
reutilizate
în contextul
interacțiunii cu
clientul Web?
componentă Web
parte a unei aplicații Web
ce încapsulează o suită de funcții înrudite
e.g., calendar, cititor de fluxuri de știri,
buton de partajare a URL-ului în altă aplicație
componentă Web
dezvoltare pe baza unei biblioteci sau framework
soluții „clasice” – uzual, la nivel de client:
Dojo Toolkit, jQuery UI,…
componentă Web
cadrul general:
Web Components (în lucru la Consorțiul Web)
recurgând la diverse tehnologii HTML5
http://webcomponents.org/
widget
aplicație – de sine-stătătoare sau inclusă
într-un container (e.g., un document HTML) –
ce oferă o funcționalitate specifică
widget
rulează la nivel de client
(platformă pusă la dispoziție de sistemul
de operare și/sau de navigatorul Web)
implementare pe baza standardelor: HTML, CSS, JS
(Web) app
o aplicație (Web) instalabilă
care folosește API-urile oferite de o platformă:
browser, server de aplicații, sistem de operare,…
(Web) app
a distributed computer software application
designed for optimal use on specific screen sizes
and with particular interface technologies
Robert Shilston, 2013
(Web) app
uzual, se poate obține via un app store
(centralizat sau descentralizat)
exemple notabile:
Chrome Apps
aplicații Web (mobile) pentru Firefox/Firefox OS
Web browser
app store
single
page
app
platform
(OS + device)
native
app
HTTP
WebSockets
adaptare după Adrian Colyer (2012)
aplicații
Web
și
servicii
(API-uri)
☁ ☁
add-on
denumire generică a aplicațiilor asociate unui
navigator Web (extensii, teme vizuale, dicționare,
maniere de căutare pe Web, plug-in-uri etc.)
exemplificare: addons.mozilla.org
⛈
Recurgând la tehnologiile din „nori”,
n-am putea studia, dezvolta și/sau
contribui la software liber?
cod-sursă stocat
(code repositories)
instrumente de
dezvoltare (IDE)
mediu de execuție
(runtime environment)
dezvoltare
rulare
adaptaredupăA.Iqbal,M.Haunsenblas,S.Decker(2012)
procesul actual de dezvoltare și exploatare
a aplicațiilor Web – Development As A Service
☁
☁ ☁
cod-sursă stocat
(code repositories)
instrumente de
dezvoltare (IDE)
mediu de execuție
(runtime environment)
dezvoltare
rulare
adaptaredupăA.Iqbal,M.Haunsenblas,S.Decker(2012)
☁
☁ ☁
DigitalOcean, Google App Engine,
Heroku, Jelastic, OpenStack,…
BitBucket,
GitHub,…
Web: Cloud9, Koding și altele
desktop: Eclipse, KDevelop etc.
precondiția #1:
calculator tradițional (desktop)
și/sau
dispozitiv portabil – de dorit, dotat cu tastatură reală
precondiția #2:
acces la Internet
precondiția #3:
existența unui navigator Web modern
Pentru început, să experimentăm
sau să ne familiarizăm cu diverse
limbaje/paradigme de programare…
editare, rulare, partajare de programe
cu Ideone – http://ideone.com/
un alt instrument Web, inclusiv
oferind propuneri de concursuri:
CodeChef – www.codechef.com/ide
trasarea execuției codului – Python,
Java, JavaScript, Ruby – pentru
a înțelege semantica instrucțiunilor
www.pythontutor.com
invocarea de cod PHP
PhpFiddle – http://phpfiddle.org/
interogări asupra bazelor de date
SQL Fiddle – http://sqlfiddle.com/
entuziaștii altor limbaje/tehnologii
pot consulta lista de la https://fiddles.io/
alte soluții vizând programarea în „nori”
www.tutorialspoint.com/codingground.htm
EDA Playground – www.edaplayground.com
mediu online pentru proiectarea și simularea
comportamentului circuitelor electronice
Ce-ar fi (să învățăm) să creăm
pagini/interfețe Web?
editarea on-line a codului HTML/CSS/JavaScript
cu instrumentul JS Bin – jsbin.com
experimente CSS (Cascading Style Sheets)
CSSDesk – cssdesk.com
studierea unor construcții CSS +
posibilități de partajare și comentarii
CSSDeck – http://cssdeck.com/
aici sistemul solar animat: cssdeck.com/labs/css-only-solar-system-model
…și puțin amuzament educativ
CSS Diner – http://flukeout.github.io/
un instrument pentru designeri și dezvoltatori Web
pe partea de client (front end)
pentru realizarea de exemple demonstrative
CodePen – http://codepen.io/
editare, testare, rulare și partajare de cod JavaScript,
inclusiv cu posibilitatea includerii de biblioteci:
AngularJS, Bonsai, D3.js, jQuery, Kinect.js, React, svg.js,…
JSFiddle – http://jsfiddle.net/
ca alternative, de survolat kodtest ori Liveweave
experimente practice de realizare
a designului Web responsiv (aici cu Bootstrap)
www.codeply.com/go
…cochetând cu grafica 3D pentru Web
http://webglplayground.net/
WebGL
în conjuncție cu jQuery
WebGLStudio – http://webglstudio.org/
o platformă Web pentru creat scene 3D interactive
Dar dacă dorim să realizăm aplicații
tradiționale/Web/mobile (mai complexe)?
mediu integrat de dezvoltare
(IDE – Integrated Development Environment)
oferă instrumente și mijloace specifice ingineriei
software: depanarea, documentarea, testarea,
managementul codului-sursă, gestiunea pachetelor
software, integrare cu alte componente, exploatare,
suport privind lucrul în echipă și altele
în contextul nostru, în „nori” (cloud computing)
o serie de soluții în „nori”
Cloud9 – c9.io
Codeanywhere – codeanywhere.com
Codenvy – codenvy.com
Codio – codio.com
Koding – koding.com
Nitrous – www.nitrous.io
Orion – orionhub.org
studiul de caz #1: Koding – https://koding.com/
acces la o mașină disponibilă în „nori”
spațiu de lucru oferind consultarea sistemului
de fișiere și editarea codului-sursă
…inclusiv cu rularea și testarea unor programe
(aplicații Web) concepute în PHP, Python, Ruby,…
…sau realizarea unor aplicații Internet
(aici, editarea, compilarea și rularea în terminal
a unui server TCP și clientul aferent concepute în C)
parcurgerea interactivă a sistemului de fișiere
+ testarea în terminal a suportului pentru Java
suport inclus pentru ajutor și conversații
de vizitat și http://learn.koding.com/
studiul de caz #2: Cloud9 – https://c9.io/
crearea unui spațiu de lucru (specific)
…și bine-cunoscuta pagină de întâmpinare
după plasarea codului-sursă (eventual, via SFTP
ori prin drag & drop), îl putem edita și rula
aici, testarea suportului pentru Node.js
generarea dinamică a conținutului
(i.e. marcaje HTML) via un program PHP
+ ilustrarea istoricului modificărilor codului-sursă
rularea unui program Python ce procesează
un document XML inclus în spațiul de lucru
facilități de configurare a mediului de execuție
și inspectarea listei proceselor sistemului
pentru posibilități de ajutor +
discuții tehnice a se vizita docs.c9.io
Altceva care ar putea fi de interes
pentru dezvoltatori?
proiectarea interfeței cu utilizatorul
(sketching, wireframing, mockups & prototyping)
unelte în „nori”: FluidUI, Invision, MarvelApp, Moqups, UXPin
a se parcurge și http://uxdesign.cc/ux-tools/
testare automată a programelor
cu instrumentul TDD Bin: http://tddbin.com/
inițiativă: studierea noilor practici ES6 – http://es6katas.org/
realizarea diagramelor și schemelor grafice
Draw.io – www.draw.io
Gliffy – www.gliffy.com
MindMup – www.mindmup.com
www.websequencediagrams.com
redactarea (e.g., în LaTeX)
și publicarea documentației
Authorea, OverLeaf, Papeeria
open participation
open data
open software
open app development
open web
open cloud
open (computing) hardware





⛈
Spor la dezvoltat aplicații în „nori”!
ilustrații: Sleeveface – www.sleeveface.com

More Related Content

PDF
HTML5 în XXX de minute
PDF
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
PDF
Sabin Buraga: Dezvoltator Web?! (2019)
PDF
Design (Web) responsiv
PDF
L. Alboaie, S. Buraga: "Servicii Web. Concepte de bază și implementări" (2006)
PDF
HTML and CSS Basics for SEO Professional
PPTX
Css ppt
PDF
Lab#9 graphic and color
HTML5 în XXX de minute
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Sabin Buraga: Dezvoltator Web?! (2019)
Design (Web) responsiv
L. Alboaie, S. Buraga: "Servicii Web. Concepte de bază și implementări" (2006)
HTML and CSS Basics for SEO Professional
Css ppt
Lab#9 graphic and color

What's hot (13)

PPT
Introduction to HTML5
PDF
CSS: Introduction
PPTX
Accessibility introduction
PDF
An Introduction to RDF and the Web of Data
PPTX
Html5 tutorial for beginners
PDF
CSS Font & Text style
PPT
RDF : une introduction
PPT
Span and Div tags in HTML
PPTX
Building Next-Generation Web APIs with JSON-LD and Hydra
PDF
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
PDF
Html,javascript & css
PDF
Linked Data의 RDF 어휘 이해하고 체험하기 - FOAF, SIOC, SKOS를 중심으로 -
PPTX
RDF Data Model
Introduction to HTML5
CSS: Introduction
Accessibility introduction
An Introduction to RDF and the Web of Data
Html5 tutorial for beginners
CSS Font & Text style
RDF : une introduction
Span and Div tags in HTML
Building Next-Generation Web APIs with JSON-LD and Hydra
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
Html,javascript & css
Linked Data의 RDF 어휘 이해하고 체험하기 - FOAF, SIOC, SKOS를 중심으로 -
RDF Data Model
Ad

Viewers also liked (7)

PDF
Web Technologies (1/12): World Wide Web – Architectural Aspects
PDF
SNAS - CGS - MobilPRO2016
PDF
Sabin Buraga – Dezvoltator Web (...în 2017)
PDF
Why 5-Star Data?
PDF
(ex-student) Life as... (FII Graduation 2016)
PDF
Proiectarea jocurilor electronice
PDF
Object-Oriented Analysis And Design With Applications Grady Booch
Web Technologies (1/12): World Wide Web – Architectural Aspects
SNAS - CGS - MobilPRO2016
Sabin Buraga – Dezvoltator Web (...în 2017)
Why 5-Star Data?
(ex-student) Life as... (FII Graduation 2016)
Proiectarea jocurilor electronice
Object-Oriented Analysis And Design With Applications Grady Booch
Ad

Similar to Cu codul în "nori" (20)

PDF
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
PDF
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
PPTX
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
PDF
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
PDF
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
PDF
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
PDF
STAW 01/12: Arhitectura aplicaţiilor Web
PDF
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
PDF
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
PDF
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
PDF
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
PDF
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
PDF
PPT
Proiect Programare Web
PDF
Dezvoltator Web?! – ...în 2016
PDF
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
PPT
Programare Web - Arhitectura WWW
PDF
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
PPTX
PDF
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
STAW 01/12: Arhitectura aplicaţiilor Web
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
Proiect Programare Web
Dezvoltator Web?! – ...în 2016
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Programare Web - Arhitectura WWW
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

More from Sabin Buraga (20)

PDF
Web 2020 01/12: World Wide Web – aspecte arhitecturale
PDF
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
PDF
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
PDF
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
PDF
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
PDF
Web 2020 09/12: Servicii Web. Paradigma REST
PDF
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
PDF
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
PDF
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
PDF
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
PDF
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
PDF
STAW 04/12: Programare Web: Node.js
PDF
STAW 05/12: Arhitectura navigatorului Web
PDF
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
PDF
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
PDF
STAW 08/12: Programare Web. Suita de tehnologii HTML5
PDF
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
PDF
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
PDF
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
PDF
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 04/12: Programare Web: Node.js
STAW 05/12: Arhitectura navigatorului Web
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...

Cu codul în "nori"

  • 1. Dr. Sabin Buraga Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” Iași www.purl.org/net/busaco ☁ ☁ Cu c o dul în nori☀ ☁ ☁ ☁
  • 2. …în „excursiile” noastre (virtuale), recurgem la aplicații – în general: software
  • 3. aplicații native instalabile pe un calculator/dispozitiv (mobil) rulate grație unui mediu de execuție – uzual, oferit de un sistem de operare (e.g., Linux, iOS,…) – pe un procesor real/virtual
  • 4. aplicații native prezintă una/mai multe modalități de interacțiune cu utilizatorul: linia de comandă (CLI – Command Line Interface) manipulare directă: WIMP (Window Icon Menu Pointer) naturală – e.g., gesturi, voce, mișcare, ubicuitate, 3D,…
  • 6. aplicații native pot recurge la platforme/tehnologii/limbaje proprietare și/sau libere pot fi utilizate conform unei licențe (proprietare sau deschise)
  • 7. detalii despre licențele de utilizare a software-ului/datelor la tldrlegal.com
  • 8. aplicații Web colecție interconectată de pagini Web cu conținut generat dinamic, oferind o funcționalitate specifică
  • 9. aplicații Web prezintă o interfață cu utilizatorul exploatabilă la nivel de client (i.e. navigator Web) recurg la standarde/formate de date deschise (HTTP, URL, HTML, CSS, JSON, SVG, XML, RDF,…)
  • 11. La ce-am putea recurge pentru a dezvolta aplicații Web?
  • 12. server de aplicații Web scop: eficientizarea proceselor de dezvoltare a aplicațiilor Web de anvergură
  • 13. server de aplicații Web se bazează pe interfețe de programare (API – Application Programming Interface) și/sau pe componente reutilizabile puse la dispoziție de server ori de alți ofertanți
  • 14. server de aplicații Web poate fi integrat în unul/mai multe servere Web de asemenea, poate oferi propriul server Web sau mediu de execuție
  • 15. server de aplicații Web simplifică maniera de invocare de programe (script-uri) ale unei aplicații Web generarea de conținut dinamic pe partea de server
  • 16. server de aplicații Web adoptă unul sau mai multe limbaje de programare Erlang/Elixir – Chicago Boss, Phoenix, Sugar,… Java – AppFuse, Play, Wicket etc. JavaScript – Node.js + framework-uri: Express, Locomotive ș.a. PHP – PHP + framework-uri: CakePHP, CodeIgniter, Symfony,… Python – Django, Flask, Grok, Pyramid, Zope Ruby – Cramp, Ruby on Rails, Sinatra,… Scala – Apache Spark, Akka, Finagle, Play etc. disponibile cu licențe de utilizare liberă
  • 17. cadru de lucru (framework) facilitează dezvoltarea de aplicații Web complexe, simplificând operații uzuale (e.g., acces la baze de date, generare de cod, management de sesiuni, asigurarea performanței/securității) și/sau încurajând reutilizarea codului-sursă
  • 18. cadru de lucru (framework) vizează dezvoltarea de aplicații la nivel de server alte exemplificări: Cuba (Ruby), Laravel (PHP), Meteor (Node.js), Mojolicious (Perl), Ninja (Java), ObjectWeb (Python), Revel (Go), Wt (C++)
  • 19. cadru de lucru (framework) oferă suport pentru implementări JavaScript la nivel de client exemple populare: AngularJS, Backbone.JS, Ember de studiat și www.infoq.com/research/javascript-frameworks-2015
  • 20. bibliotecă (library) colecție de resurse computaționale reutilizabile – i.e., structuri de date + cod – oferind funcționalități specifice implementate într-un limbaj de programare
  • 21. bibliotecă (library) poate fi referită de alt cod-sursă (software): server de aplicații, framework, bibliotecă, serviciu, API ori componentă Web
  • 22. bibliotecă (library) diverse exemple „notorii” cu acces liber la codul-sursă: Beautiful Soup – www.crummy.com/software/BeautifulSoup D3.js – http://d3js.org/ ImageMagick – www.imagemagick.org libcurl – http://curl.haxx.se/ Libxml2 – www.xmlsoft.org Mustache – http://mustache.github.io/ OpenCV – opencv.org Redland – http://librdf.org/ zlib – www.zlib.net
  • 23. serviciu Web software – utilizat la distanță de alte aplicații și/sau servicii – ce oferă o funcționalitate specifică, a cărui implementare nu trebuie cunoscută de către dezvoltator
  • 24. serviciu Web recurge la tehnologii deschise, standardizate adresare via URI (Uniform Resource Identifier) acces prin HTTP (HyperText Transfer Protocol) formate de date: CSV (Comma Separated Values) JSON (JavaScript Object Notation) XML (Extensible Markup Language) …
  • 25. interfață de programare (API) orice interfață bine-definită ce specifică operațiile pe care o componentă, un modul ori o aplicație le oferă altor elemente software
  • 26. interfață de programare (API) API public disponibil pe baza unei licențe de utilizare API privat pentru uz intern
  • 27. mash-ups API-ul de la FitBit oferă acces la date în formatele JSON și XML
  • 28. ansamblu de dezvoltare (SDK – software development kit) încapsulează funcționalitățile API-ului într-o bibliotecă ori colecție de module (implementată într-un limbaj de programare, pentru o platformă software/hardware specifică)
  • 29. privire pragmatica exemplu: acces la API-uri în Python – www.pythonapi.com
  • 30. implementare De la aplicații la API-uri și servere de aplicații Brian Mulloy, Web API Design, Apigee, 2012 http://offers.apigee.com/web-api-design-ebook/
  • 31. Care-s elementele software ce pot fi reutilizate în contextul interacțiunii cu clientul Web?
  • 32. componentă Web parte a unei aplicații Web ce încapsulează o suită de funcții înrudite e.g., calendar, cititor de fluxuri de știri, buton de partajare a URL-ului în altă aplicație
  • 33. componentă Web dezvoltare pe baza unei biblioteci sau framework soluții „clasice” – uzual, la nivel de client: Dojo Toolkit, jQuery UI,…
  • 34. componentă Web cadrul general: Web Components (în lucru la Consorțiul Web) recurgând la diverse tehnologii HTML5 http://webcomponents.org/
  • 35. widget aplicație – de sine-stătătoare sau inclusă într-un container (e.g., un document HTML) – ce oferă o funcționalitate specifică
  • 36. widget rulează la nivel de client (platformă pusă la dispoziție de sistemul de operare și/sau de navigatorul Web) implementare pe baza standardelor: HTML, CSS, JS
  • 37. (Web) app o aplicație (Web) instalabilă care folosește API-urile oferite de o platformă: browser, server de aplicații, sistem de operare,…
  • 38. (Web) app a distributed computer software application designed for optimal use on specific screen sizes and with particular interface technologies Robert Shilston, 2013
  • 39. (Web) app uzual, se poate obține via un app store (centralizat sau descentralizat) exemple notabile: Chrome Apps aplicații Web (mobile) pentru Firefox/Firefox OS
  • 40. Web browser app store single page app platform (OS + device) native app HTTP WebSockets adaptare după Adrian Colyer (2012) aplicații Web și servicii (API-uri) ☁ ☁
  • 41. add-on denumire generică a aplicațiilor asociate unui navigator Web (extensii, teme vizuale, dicționare, maniere de căutare pe Web, plug-in-uri etc.)
  • 43. ⛈ Recurgând la tehnologiile din „nori”, n-am putea studia, dezvolta și/sau contribui la software liber?
  • 44. cod-sursă stocat (code repositories) instrumente de dezvoltare (IDE) mediu de execuție (runtime environment) dezvoltare rulare adaptaredupăA.Iqbal,M.Haunsenblas,S.Decker(2012) procesul actual de dezvoltare și exploatare a aplicațiilor Web – Development As A Service ☁ ☁ ☁
  • 45. cod-sursă stocat (code repositories) instrumente de dezvoltare (IDE) mediu de execuție (runtime environment) dezvoltare rulare adaptaredupăA.Iqbal,M.Haunsenblas,S.Decker(2012) ☁ ☁ ☁ DigitalOcean, Google App Engine, Heroku, Jelastic, OpenStack,… BitBucket, GitHub,… Web: Cloud9, Koding și altele desktop: Eclipse, KDevelop etc.
  • 46. precondiția #1: calculator tradițional (desktop) și/sau dispozitiv portabil – de dorit, dotat cu tastatură reală
  • 48. precondiția #3: existența unui navigator Web modern
  • 49. Pentru început, să experimentăm sau să ne familiarizăm cu diverse limbaje/paradigme de programare…
  • 50. editare, rulare, partajare de programe cu Ideone – http://ideone.com/
  • 51. un alt instrument Web, inclusiv oferind propuneri de concursuri: CodeChef – www.codechef.com/ide
  • 52. trasarea execuției codului – Python, Java, JavaScript, Ruby – pentru a înțelege semantica instrucțiunilor www.pythontutor.com
  • 53. invocarea de cod PHP PhpFiddle – http://phpfiddle.org/
  • 54. interogări asupra bazelor de date SQL Fiddle – http://sqlfiddle.com/
  • 55. entuziaștii altor limbaje/tehnologii pot consulta lista de la https://fiddles.io/
  • 56. alte soluții vizând programarea în „nori” www.tutorialspoint.com/codingground.htm
  • 57. EDA Playground – www.edaplayground.com mediu online pentru proiectarea și simularea comportamentului circuitelor electronice
  • 58. Ce-ar fi (să învățăm) să creăm pagini/interfețe Web?
  • 59. editarea on-line a codului HTML/CSS/JavaScript cu instrumentul JS Bin – jsbin.com
  • 60. experimente CSS (Cascading Style Sheets) CSSDesk – cssdesk.com
  • 61. studierea unor construcții CSS + posibilități de partajare și comentarii CSSDeck – http://cssdeck.com/ aici sistemul solar animat: cssdeck.com/labs/css-only-solar-system-model
  • 62. …și puțin amuzament educativ CSS Diner – http://flukeout.github.io/
  • 63. un instrument pentru designeri și dezvoltatori Web pe partea de client (front end) pentru realizarea de exemple demonstrative CodePen – http://codepen.io/
  • 64. editare, testare, rulare și partajare de cod JavaScript, inclusiv cu posibilitatea includerii de biblioteci: AngularJS, Bonsai, D3.js, jQuery, Kinect.js, React, svg.js,… JSFiddle – http://jsfiddle.net/ ca alternative, de survolat kodtest ori Liveweave
  • 65. experimente practice de realizare a designului Web responsiv (aici cu Bootstrap) www.codeply.com/go
  • 66. …cochetând cu grafica 3D pentru Web http://webglplayground.net/ WebGL în conjuncție cu jQuery
  • 67. WebGLStudio – http://webglstudio.org/ o platformă Web pentru creat scene 3D interactive
  • 68. Dar dacă dorim să realizăm aplicații tradiționale/Web/mobile (mai complexe)?
  • 69. mediu integrat de dezvoltare (IDE – Integrated Development Environment) oferă instrumente și mijloace specifice ingineriei software: depanarea, documentarea, testarea, managementul codului-sursă, gestiunea pachetelor software, integrare cu alte componente, exploatare, suport privind lucrul în echipă și altele în contextul nostru, în „nori” (cloud computing)
  • 70. o serie de soluții în „nori” Cloud9 – c9.io Codeanywhere – codeanywhere.com Codenvy – codenvy.com Codio – codio.com Koding – koding.com Nitrous – www.nitrous.io Orion – orionhub.org
  • 71. studiul de caz #1: Koding – https://koding.com/
  • 72. acces la o mașină disponibilă în „nori”
  • 73. spațiu de lucru oferind consultarea sistemului de fișiere și editarea codului-sursă
  • 74. …inclusiv cu rularea și testarea unor programe (aplicații Web) concepute în PHP, Python, Ruby,…
  • 75. …sau realizarea unor aplicații Internet (aici, editarea, compilarea și rularea în terminal a unui server TCP și clientul aferent concepute în C)
  • 76. parcurgerea interactivă a sistemului de fișiere + testarea în terminal a suportului pentru Java
  • 77. suport inclus pentru ajutor și conversații de vizitat și http://learn.koding.com/
  • 78. studiul de caz #2: Cloud9 – https://c9.io/
  • 79. crearea unui spațiu de lucru (specific)
  • 80. …și bine-cunoscuta pagină de întâmpinare
  • 81. după plasarea codului-sursă (eventual, via SFTP ori prin drag & drop), îl putem edita și rula aici, testarea suportului pentru Node.js
  • 82. generarea dinamică a conținutului (i.e. marcaje HTML) via un program PHP + ilustrarea istoricului modificărilor codului-sursă
  • 83. rularea unui program Python ce procesează un document XML inclus în spațiul de lucru
  • 84. facilități de configurare a mediului de execuție și inspectarea listei proceselor sistemului
  • 85. pentru posibilități de ajutor + discuții tehnice a se vizita docs.c9.io
  • 86. Altceva care ar putea fi de interes pentru dezvoltatori?
  • 87. proiectarea interfeței cu utilizatorul (sketching, wireframing, mockups & prototyping) unelte în „nori”: FluidUI, Invision, MarvelApp, Moqups, UXPin a se parcurge și http://uxdesign.cc/ux-tools/
  • 88. testare automată a programelor cu instrumentul TDD Bin: http://tddbin.com/ inițiativă: studierea noilor practici ES6 – http://es6katas.org/
  • 89. realizarea diagramelor și schemelor grafice Draw.io – www.draw.io Gliffy – www.gliffy.com MindMup – www.mindmup.com www.websequencediagrams.com
  • 90. redactarea (e.g., în LaTeX) și publicarea documentației Authorea, OverLeaf, Papeeria
  • 91. open participation open data open software open app development open web open cloud open (computing) hardware      ⛈
  • 92. Spor la dezvoltat aplicații în „nori”! ilustrații: Sleeveface – www.sleeveface.com