SlideShare uma empresa Scribd logo
1 de 92
Baixar para ler offline
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,…
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

Mais conteúdo relacionado

Mais procurados

Media queries A to Z
Media queries A to ZMedia queries A to Z
Media queries A to ZShameem Reza
 
Web development using HTML and CSS
Web development using HTML and CSSWeb development using HTML and CSS
Web development using HTML and CSSSiddhantSingh980217
 
Practical file on web technology(html)
Practical file on web technology(html)Practical file on web technology(html)
Practical file on web technology(html)RAJWANT KAUR
 
CSS Dasar #5 : Text Styling
CSS Dasar #5 : Text StylingCSS Dasar #5 : Text Styling
CSS Dasar #5 : Text StylingSandhika Galih
 
CSS Dasar #4 : Font Styling
CSS Dasar #4 : Font StylingCSS Dasar #4 : Font Styling
CSS Dasar #4 : Font StylingSandhika Galih
 
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)Nuzhat Memon
 
Web Technology Lab File
Web Technology Lab FileWeb Technology Lab File
Web Technology Lab FileKandarp Tiwari
 
Concept of CSS unit3
Concept of CSS unit3Concept of CSS unit3
Concept of CSS unit3SURBHI SAROHA
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by MukeshMukesh Kumar
 
Tables and forms with HTML, CSS
Tables and forms with HTML, CSS  Tables and forms with HTML, CSS
Tables and forms with HTML, CSS Yaowaluck Promdee
 
Html links
Html linksHtml links
Html linksJayjZens
 
Introducing CSS Grid Layout
Introducing CSS Grid LayoutIntroducing CSS Grid Layout
Introducing CSS Grid LayoutRachel Andrew
 

Mais procurados (20)

HTML Tutorials
HTML TutorialsHTML Tutorials
HTML Tutorials
 
Media queries A to Z
Media queries A to ZMedia queries A to Z
Media queries A to Z
 
Web development using HTML and CSS
Web development using HTML and CSSWeb development using HTML and CSS
Web development using HTML and CSS
 
Practical file on web technology(html)
Practical file on web technology(html)Practical file on web technology(html)
Practical file on web technology(html)
 
CSS Dasar #5 : Text Styling
CSS Dasar #5 : Text StylingCSS Dasar #5 : Text Styling
CSS Dasar #5 : Text Styling
 
CSS Dasar #4 : Font Styling
CSS Dasar #4 : Font StylingCSS Dasar #4 : Font Styling
CSS Dasar #4 : Font Styling
 
BEM - CSS, Seriously
BEM - CSS, SeriouslyBEM - CSS, Seriously
BEM - CSS, Seriously
 
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)
Std 10 Computer Chapter 3 Handling Images in HTML (Part 1)
 
Web Technology Lab File
Web Technology Lab FileWeb Technology Lab File
Web Technology Lab File
 
Bootstrap ppt
Bootstrap pptBootstrap ppt
Bootstrap ppt
 
Lab#9 graphic and color
Lab#9 graphic and colorLab#9 graphic and color
Lab#9 graphic and color
 
Concept of CSS unit3
Concept of CSS unit3Concept of CSS unit3
Concept of CSS unit3
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by Mukesh
 
Tables and forms with HTML, CSS
Tables and forms with HTML, CSS  Tables and forms with HTML, CSS
Tables and forms with HTML, CSS
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
Web technology lab manual
Web technology lab manualWeb technology lab manual
Web technology lab manual
 
Bootstrap ppt
Bootstrap pptBootstrap ppt
Bootstrap ppt
 
Html links
Html linksHtml links
Html links
 
Introducing CSS Grid Layout
Introducing CSS Grid LayoutIntroducing CSS Grid Layout
Introducing CSS Grid Layout
 
Asp objects
Asp objectsAsp objects
Asp objects
 

Destaque

Web Technologies (1/12): World Wide Web – Architectural Aspects
Web Technologies (1/12): World Wide Web – Architectural AspectsWeb Technologies (1/12): World Wide Web – Architectural Aspects
Web Technologies (1/12): World Wide Web – Architectural AspectsSabin Buraga
 
SNAS - CGS - MobilPRO2016
SNAS - CGS - MobilPRO2016SNAS - CGS - MobilPRO2016
SNAS - CGS - MobilPRO2016Sorina Chirilă
 
Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga
 
(ex-student) Life as... (FII Graduation 2016)
(ex-student) Life as... (FII Graduation 2016)(ex-student) Life as... (FII Graduation 2016)
(ex-student) Life as... (FII Graduation 2016)Sabin Buraga
 
Proiectarea jocurilor electronice
Proiectarea jocurilor electroniceProiectarea jocurilor electronice
Proiectarea jocurilor electroniceSabin Buraga
 
Object-Oriented Analysis And Design With Applications Grady Booch
Object-Oriented Analysis And Design With Applications Grady BoochObject-Oriented Analysis And Design With Applications Grady Booch
Object-Oriented Analysis And Design With Applications Grady BoochSorina Chirilă
 

Destaque (7)

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

Semelhante a Cu codul în "nori"

Limbajul java
Limbajul javaLimbajul java
Limbajul javaCromina
 
Referat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfReferat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfCreangaMadalina1
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Webdanielnastase
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Sabin Buraga
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptSabin Buraga
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxrefewe9176
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteanaandreiiovan
 
2 Software Retele
2 Software Retele2 Software Retele
2 Software Reteleclcziprok
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Sabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
Realizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceRealizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceDragos Tudor Acostachioaie
 
Cacoo vs Mockingbird
Cacoo vs MockingbirdCacoo vs Mockingbird
Cacoo vs MockingbirdGeorgiana
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispicostagiipebune
 

Semelhante a Cu codul în "nori" (20)

Curs java
Curs javaCurs java
Curs java
 
Limbajul java
Limbajul javaLimbajul java
Limbajul java
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Referat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfReferat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdf
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptx
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteana
 
2 Software Retele
2 Software Retele2 Software Retele
2 Software Retele
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...
 
Licenta web aplicatie.pptx
Licenta web aplicatie.pptxLicenta web aplicatie.pptx
Licenta web aplicatie.pptx
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
Realizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceRealizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-source
 
Cacoo vs Mockingbird
Cacoo vs MockingbirdCacoo vs Mockingbird
Cacoo vs Mockingbird
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispico
 

Mais de Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)Sabin Buraga
 

Mais de Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
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 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
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 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
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 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
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
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. 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 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
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 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
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 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 

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,…
  • 5.
  • 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