+ All Categories
Home > Technology > Cu codul în "nori"

Cu codul în "nori"

Date post: 23-Feb-2017
Category:
Upload: sabin-buraga
View: 2,104 times
Download: 1 times
Share this document with a friend
92
Dr. Sabin Buraga Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” Iași www.purl.org/net/busaco Cu c o dul în nori
Transcript
Page 1: Cu codul în "nori"

Dr. Sabin BuragaFacultatea de Informatică, Universitatea „Alexandru Ioan Cuza” Iași

www.purl.org/net/busaco

☁☁

Cu c o dul în nori☀

Page 2: Cu codul în "nori"

…în „excursiile” noastre (virtuale), recurgem la aplicații – în general: software

Page 3: Cu codul în "nori"

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

Page 4: Cu codul în "nori"

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,…

Page 5: Cu codul în "nori"
Page 6: 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)

Page 7: Cu codul în "nori"

detalii despre licențele de utilizare a software-ului/datelor la tldrlegal.com

Page 8: Cu codul în "nori"

aplicații Web

colecție interconectată de pagini Webcu conținut generat dinamic,

oferind o funcționalitate specifică

Page 9: Cu codul în "nori"

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,…)

Page 10: Cu codul în "nori"

☁☁⛭

Clientinterfață cu utilizatorul

Serversit/aplicație Web

Datestocate

persistent

Internet(Web)

Page 11: Cu codul în "nori"

La ce-am putea recurge pentru a dezvolta aplicații Web?

Page 12: Cu codul în "nori"

server de aplicații Web

scop:eficientizarea proceselor de dezvoltare

a aplicațiilor Web de anvergură

Page 13: Cu codul în "nori"

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

Page 14: Cu codul în "nori"

server de aplicații Web

poate fi integrat în unul/mai multe servere Web

de asemenea, poate oferi propriul server Websau mediu de execuție

Page 15: Cu codul în "nori"

server de aplicații Web

simplifică maniera de invocarede programe (script-uri) ale unei aplicații Web

generarea de conținut dinamic pe partea de server

Page 16: Cu codul în "nori"

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, ZopeRuby – Cramp, Ruby on Rails, Sinatra,…

Scala – Apache Spark, Akka, Finagle, Play etc.

disponibile cu licențe de utilizare liberă

Page 17: Cu codul în "nori"

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ă

Page 18: Cu codul în "nori"

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++)

Page 19: Cu codul în "nori"

cadru de lucru (framework)

oferă suport pentru implementări JavaScriptla nivel de client

exemple populare: AngularJS, Backbone.JS, Ember

de studiat și www.infoq.com/research/javascript-frameworks-2015

Page 20: Cu codul în "nori"

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

Page 21: Cu codul în "nori"

bibliotecă (library)

poate fi referită de alt cod-sursă (software): server de aplicații, framework, bibliotecă,

serviciu, API ori componentă Web

Page 22: Cu codul în "nori"

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

Page 23: Cu codul în "nori"

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

Page 24: Cu codul în "nori"

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)

Page 25: Cu codul în "nori"

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

Page 26: Cu codul în "nori"

interfață de programare (API)

API publicdisponibil pe baza unei licențe de utilizare

API privatpentru uz intern

Page 27: Cu codul în "nori"

mash-ups

API-ul de la FitBit oferă acces la date în formatele JSON și XML

Page 28: Cu codul în "nori"

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ă)

Page 29: Cu codul în "nori"

privire pragmatica

exemplu: acces la API-uri în Python – www.pythonapi.com

Page 30: Cu codul în "nori"

implementare

De la aplicații la API-uri și servere de aplicații

Brian Mulloy, Web API Design, Apigee, 2012http://offers.apigee.com/web-api-design-ebook/

Page 31: Cu codul în "nori"

Care-s elementele software ce pot fi

reutilizate în contextul

interacțiunii cu clientul Web?

Page 32: Cu codul în "nori"

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

Page 33: Cu codul în "nori"

componentă Web

dezvoltare pe baza unei biblioteci sau framework

soluții „clasice” – uzual, la nivel de client:

Dojo Toolkit, jQuery UI,…

Page 34: Cu codul în "nori"

componentă Web

cadrul general:

Web Components (în lucru la Consorțiul Web)recurgând la diverse tehnologii HTML5

http://webcomponents.org/

Page 35: Cu codul în "nori"

widget

aplicație – de sine-stătătoare sau inclusă într-un container (e.g., un document HTML) –

ce oferă o funcționalitate specifică

Page 36: Cu codul în "nori"

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

Page 37: Cu codul în "nori"

(Web) app

o aplicație (Web) instalabilă care folosește API-urile oferite de o platformă:

browser, server de aplicații, sistem de operare,…

Page 38: Cu codul în "nori"

(Web) app

a distributed computer software application designed for optimal use on specific screen sizes

and with particular interface technologies

Robert Shilston, 2013

Page 39: Cu codul în "nori"

(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

Page 40: Cu codul în "nori"

Web browser

app store

single page app

platform(OS + device)

native app

HTTP

WebSockets

adaptare după Adrian Colyer (2012)

aplicații Web

șiservicii

(API-uri)

☁ ☁

Page 41: Cu codul în "nori"

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.)

Page 42: Cu codul în "nori"

exemplificare: addons.mozilla.org

Page 43: Cu codul în "nori"

⛈Recurgând la tehnologiile din „nori”, n-am putea studia, dezvolta și/sau

contribui la software liber?

Page 44: Cu codul în "nori"

cod-sursă stocat(code repositories)

instrumente de dezvoltare (IDE)

mediu de execuție (runtime environment)

dezvoltare

rulare

adap

tare

du

A. I

qb

al,

M.

Hau

nse

nb

las,

S. D

ecke

r (2

012

)

procesul actual de dezvoltare și exploatare a aplicațiilor Web – Development As A Service

☁ ☁

Page 45: Cu codul în "nori"

cod-sursă stocat(code repositories)

instrumente de dezvoltare (IDE)

mediu de execuție (runtime environment)

dezvoltare

rulare

adap

tare

du

A. I

qb

al,

M.

Hau

nse

nb

las,

S. D

ecke

r (2

012

)

☁ ☁

DigitalOcean, Google App Engine, Heroku, Jelastic, OpenStack,…

BitBucket, GitHub,…

Web: Cloud9, Koding și alteledesktop: Eclipse, KDevelop etc.

Page 46: Cu codul în "nori"

precondiția #1:calculator tradițional (desktop)

și/saudispozitiv portabil – de dorit, dotat cu tastatură reală

Page 47: Cu codul în "nori"

precondiția #2:acces la Internet

Page 48: Cu codul în "nori"

precondiția #3:existența unui navigator Web modern

Page 49: Cu codul în "nori"

Pentru început, să experimentăm sau să ne familiarizăm cu diverse

limbaje/paradigme de programare…

Page 50: Cu codul în "nori"

editare, rulare, partajare de programe cu Ideone – http://ideone.com/

Page 51: Cu codul în "nori"

un alt instrument Web, inclusiv oferind propuneri de concursuri:CodeChef – www.codechef.com/ide

Page 52: Cu codul în "nori"

trasarea execuției codului – Python, Java, JavaScript, Ruby – pentru

a înțelege semantica instrucțiunilorwww.pythontutor.com

Page 53: Cu codul în "nori"

invocarea de cod PHP PhpFiddle – http://phpfiddle.org/

Page 54: Cu codul în "nori"

interogări asupra bazelor de dateSQL Fiddle – http://sqlfiddle.com/

Page 55: Cu codul în "nori"

entuziaștii altor limbaje/tehnologii pot consulta lista de la https://fiddles.io/

Page 56: Cu codul în "nori"

alte soluții vizând programarea în „nori”www.tutorialspoint.com/codingground.htm

Page 57: Cu codul în "nori"

EDA Playground – www.edaplayground.com

mediu online pentru proiectarea și simularea comportamentului circuitelor electronice

Page 58: Cu codul în "nori"

Ce-ar fi (să învățăm) să creăm pagini/interfețe Web?

Page 59: Cu codul în "nori"

editarea on-line a codului HTML/CSS/JavaScriptcu instrumentul JS Bin – jsbin.com

Page 60: Cu codul în "nori"

experimente CSS (Cascading Style Sheets)CSSDesk – cssdesk.com

Page 61: Cu codul în "nori"

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

Page 62: Cu codul în "nori"

…și puțin amuzament educativCSS Diner – http://flukeout.github.io/

Page 63: Cu codul în "nori"

un instrument pentru designeri și dezvoltatori Web pe partea de client (front end)

pentru realizarea de exemple demonstrativeCodePen – http://codepen.io/

Page 64: Cu codul în "nori"

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

Page 65: Cu codul în "nori"

experimente practice de realizare a designului Web responsiv (aici cu Bootstrap)

www.codeply.com/go

Page 66: Cu codul în "nori"

…cochetând cu grafica 3D pentru Webhttp://webglplayground.net/

WebGLîn conjuncție cu jQuery

Page 67: Cu codul în "nori"

WebGLStudio – http://webglstudio.org/

o platformă Web pentru creat scene 3D interactive

Page 68: Cu codul în "nori"

Dar dacă dorim să realizăm aplicații tradiționale/Web/mobile (mai complexe)?

Page 69: Cu codul în "nori"

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)

Page 70: Cu codul în "nori"

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

Page 71: Cu codul în "nori"

studiul de caz #1: Koding – https://koding.com/

Page 72: Cu codul în "nori"

acces la o mașină disponibilă în „nori”

Page 73: Cu codul în "nori"

spațiu de lucru oferind consultarea sistemului de fișiere și editarea codului-sursă

Page 74: Cu codul în "nori"

…inclusiv cu rularea și testarea unor programe (aplicații Web) concepute în PHP, Python, Ruby,…

Page 75: Cu codul în "nori"

…sau realizarea unor aplicații Internet(aici, editarea, compilarea și rularea în terminal

a unui server TCP și clientul aferent concepute în C)

Page 76: Cu codul în "nori"

parcurgerea interactivă a sistemului de fișiere+ testarea în terminal a suportului pentru Java

Page 77: Cu codul în "nori"

suport inclus pentru ajutor și conversațiide vizitat și http://learn.koding.com/

Page 78: Cu codul în "nori"

studiul de caz #2: Cloud9 – https://c9.io/

Page 79: Cu codul în "nori"

crearea unui spațiu de lucru (specific)

Page 80: Cu codul în "nori"

…și bine-cunoscuta pagină de întâmpinare

Page 81: Cu codul în "nori"

după plasarea codului-sursă (eventual, via SFTP ori prin drag & drop), îl putem edita și rula

aici, testarea suportului pentru Node.js

Page 82: Cu codul în "nori"

generarea dinamică a conținutului (i.e. marcaje HTML) via un program PHP

+ ilustrarea istoricului modificărilor codului-sursă

Page 83: Cu codul în "nori"

rularea unui program Python ce procesează un document XML inclus în spațiul de lucru

Page 84: Cu codul în "nori"

facilități de configurare a mediului de execuțieși inspectarea listei proceselor sistemului

Page 85: Cu codul în "nori"

pentru posibilități de ajutor + discuții tehnice a se vizita docs.c9.io

Page 86: Cu codul în "nori"

Altceva care ar putea fi de interes pentru dezvoltatori?

Page 87: Cu codul în "nori"

proiectarea interfeței cu utilizatorul (sketching, wireframing, mockups & prototyping)

unelte în „nori”: FluidUI, Invision, MarvelApp, Moqups, UXPina se parcurge și http://uxdesign.cc/ux-tools/

Page 88: Cu codul în "nori"

testare automată a programelor cu instrumentul TDD Bin: http://tddbin.com/

inițiativă: studierea noilor practici ES6 – http://es6katas.org/

Page 89: Cu codul în "nori"

realizarea diagramelor și schemelor graficeDraw.io – www.draw.io

Gliffy – www.gliffy.com

MindMup – www.mindmup.com

www.websequencediagrams.com

Page 90: Cu codul în "nori"

redactarea (e.g., în LaTeX) și publicarea documentațieiAuthorea, OverLeaf, Papeeria

Page 91: Cu codul în "nori"

open participationopen dataopen softwareopen app developmentopen webopen cloudopen (computing) hardware

Page 92: Cu codul în "nori"

Spor la dezvoltat aplicații în „nori”!

ilustrații: Sleeveface – www.sleeveface.com


Recommended