Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

Size: px
Start display at page:

Download "Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University"

Transcription

1 Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University 1

2 Objectives You will learn about: Python WSGI programming Web app frameworks in general (briefly) The Bottle web app framework The MVC architecture 2

3 Agenda 1. WSGI Programming 2. Web Application Frameworks 3. The Bottle Web Application Framework 3

4 CGI Problem Problem: CGI apps are slow For each request, HTTP server forks/execs a new process OK for low-volume website Maybe not OK for high-volume website 4

5 CGI Example Browser HTTP Server 5

6 CGI Example Browser request for searchform page HTTP Server Browser process asks HTTP server process for searchform page 6

7 CGI Example Browser HTTP Server request for searchform page searchform HTTP server process forks child process, execs searchform program 7

8 CGI Example Browser HTTP Server searchform page searchform Searchform process passes searchform page to HTTP server process Searchform process exits 8

9 CGI Example Browser searchform page HTTP Server HTTP server process passes searchform page to browser 9

10 CGI Example Browser request for searchresults page HTTP Server Browser process asks HTTP server process for searchresults page 10

11 CGI Example Browser HTTP Server request for searchresults page searchresults HTTP server process forks child process, execs searchresults program 11

12 CGI Example Browser HTTP Server searchresults page searchresults Searchresults process passes searchresults page to HTTP server process Searchresults process exits 12

13 CGI Example Browser searchresults page HTTP Server HTTP server process passes searchresults page to browser 13

14 Embedding Solution 1: Embed apps in HTTP server process HTTP server does not fork processes HTTP server spawns threads in its process (See Threads lecture later in course) 14

15 Embedding Example Browser request for searchform page HTTP Server Browser process asks HTTP server process for searchform page 15

16 Embedding Example Browser HTTP Server searchform Thread HTTP server process spawns new thread (See upcoming Threads lecture) Thread generates searchform page 16

17 Embedding Example Browser searchform page HTTP Server searchform Thread Searchform thread exits HTTP server process sends searchform page to browser process 17

18 Embedding Example Browser request for searchresults page HTTP Server Browser process asks HTTP server process for searchresults page 18

19 Embedding Example Browser HTTP Server searchresults Thread HTTP server process spawns new thread Thread generates searchresults page 19

20 Embedding Example Browser searchresults page HTTP Server searchresults Thread Searchresults thread exits HTTP server process sends searchresults page to browser process 20

21 Embedding Assessment Embedding assessment (simplified): (pro) Faster than CGI Spawning a tread is faster than forking a process (con) Inflexible Poor load balancing; better for HTTP server to delegate work to pool of app servers, maybe running on distinct computers (con) Insecure HTTP server typically runs as root Apps run with same permissions as HTTP server 21

22 Fast CGI Solution 2: Fast CGI HTTP server forks processes As with CGI Typically one for each app es persist Unlike CGI 22

23 Fast CGI Example Browser HTTP Server 23

24 Fast CGI Example Browser request for searchform page HTTP Server Browser process asks HTTP server process for searchform page 24

25 Fast CGI Example Browser HTTP Server request for searchform page Penny HTTP server process forks child process, execs Penny program 25

26 Fast CGI Example Browser HTTP Server searchform page Penny Penny process passes searchform page to HTTP server process Penny process persists 26

27 Fast CGI Example Browser searchform page HTTP Server Penny HTTP server process passes searchform page to browser 27

28 Fast CGI Example Browser request for searchresults page HTTP Server Penny Browser process asks HTTP server process for searchresults page 28

29 Fast CGI Example Browser HTTP Server request for searchresults page Penny HTTP server process sends request to existing Penny process 29

30 Fast CGI Example Browser HTTP Server searchresults page Penny Penny process passes searchresults page to HTTP server process Penny process persists 30

31 Fast CGI Example Browser searchresults page HTTP Server Penny HTTP server process passes searchresults page to browser 31

32 Fast CGI Assessment Fast CGI assessment (simplified): (pro) Faster than CGI (pro) Flexible Good load balancing; HTTP server can delegate work to pool of app servers, maybe running on different computers Etc. (pro) Secure Apps can run with more limited permissions than HTTP server has 32

33 Python Solution: WSGI Python solution: Web Server Gateway Interface (WSGI) A specification of two interfaces 33

34 Python Solution: WSGI Environment info Callback function Browser HTTP Server Your App Response via callback function WSGI server-side Defines messages your app Can send to HTTP server WSGI client-side Defines messages HTTP server can send to your app 34

35 Python Solution: WSGI Browser Recall Decorator pattern HTTP Server WSGI Middleware WSGI Middleware Your App Optional middleware provides: App persistence (as with fast CGI) Load balancing among multiple app processes Maybe on multiple computers Authentication 35

36 Python Solution: WSGI Web Server Gateway Interface (WSGI) Allows architectural flexibility Unknown to web app developer Facilitates separation of concerns: Programmers (and others) compose web apps System administrators deploy web apps The way to structure Python web apps 36

37 PennyPythonWsgi App See PennyPythonWsgi app penny.sql, penny.sqlite, book.py, database.py runserver runserver.bat common.py penny.py 37

38 PennyPythonWsgi App Observation: Programmers don t use WSGI directly Instead: Programmers use web app frameworks Many Python web app frameworks use WSGI Suggestion: Don t be concerned about WSGI details Unless you intend to compose a Python web app framework! 38

39 Agenda 1. WSGI Programming 2. Web Application Frameworks 3. The Bottle Web Application Framework 39

40 Motivation for Frameworks Ancient approach to building a website: Write ad hoc client-side code In HTML, CSS, JavaScript, etc. Write ad hoc server-side code In Python, Java, PHP, etc. Write ad hoc code to access DB 40

41 Motivation for Frameworks Problem: Common patterns within and among web apps Replicated code within and among web apps Web app development involves lots of tedious/ replicated effort Solution: Web app frameworks Web app frameworks mechanize (parts of) the development process 41

42 Popular Frameworks According to h,ps://ho1rameworks.com/ on 6/21/17 Stack Github Overflow Overall Score Score Score ASP.NET (C#) AngularJS (Javascript) Ruby on Rails (Ruby) ASP.NET MVC (C#) React (JavaScript) Django (Python) Laravel (PHP) Angular (JavaScript) Spring (Java) Express (JavaScript) Meteor (JavaScript) CodeIgniter (PHP) Symfony (PHP) Vue.js (JavaScript) Flask (Python)

43 Popular Frameworks According to h,ps://ho1rameworks.com/ on 6/21/17 Stack Github Overflow Overall Score Score Score Ember.js (JavaScript) JSF (Java) Flex (ActionScript) CakePHP (PHP) Google Web Toolkit (Java) Play (Scala) Zend (PHP) Sails.js (JavaScript) Yii (PHP) Tornado (Python) Sinatra (Ruby) Grails (Groovy) Aurelia (JavaScript) Phoenix (Elixir) Phalcon (PHP)

44 Popular Frameworks According to h,ps://ho1rameworks.com/ on 6/21/17 Stack Github Overflow Overall Score Score Score Koa (JavaScript) Dropwizard (Java) Struts (Java) Bottle (Python) Wicket (Java) Dojo (JavaScript) Nancy (C#) Vert.x (Java) web.py (Python) Elm (Elm) Pyramid (Python) Vapor (Swift) beego (Go) Gin (Go) Kohana (PHP)

45 Popular Python Frameworks According to on 6/21/17 Some popular Python frameworks: Django, Flask*, Tornado, Bottle*, web.py, Pyramid, web2py, CherryPy*, Grok, Zope * micro-framework 45

46 Popular Java Frameworks According to on 6/21/17 Some popular Java frameworks: Spring MVC, JSF, Google Web Toolkit, Dropwizard, Struts, Wicket, Vert.x, Vaadin 46

47 Popular PHP Frameworks According to on 6/21/17 Some popular PHP frameworks: Laravel, CodeIgniter, Symfony, CakePHP, Zend, Yii 47

48 Framework Assessment Positives Yield reliable code Framework code has been thoroughly tested Yield consistent code Code has uniform structure across apps Make efficient use of programmer time Framework handles repetitive parts DRY (don t repeat yourself) is encouraged 48

49 Framework Assessment Negatives Can yield systems that are: Large Slow See Joel Spolsky s Why I Hate Frameworks joel

50 Agenda 1. WSGI Programming 2. Web Application Frameworks 3. The Bottle Web Application Framework 50

51 The Bottle Web App Framework Who: Marcel Hellkamp Descrip: Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library. -- Wikipedia 51

52 Why Bottle? Why study Bottle? (Instead of some other Python framework) Easy to learn Simple ( micro-framework ) Good documentation and tutorial Reasonable to use for Assignments 3 & 4 Installed on CourseLab Easy to install on your personal computer Has test web server Allows flat directory structure; easy to submit P.S. I have Penny in Django; ask if you want it 52

53 PennyBottle1Fund App See PennyBottle1Fund App penny.sql, penny.sqlite, book.py, database.py runserver runserver.bat common.py penny.py Generalizing... 53

54 PennyBottle1Fund App Bottle separates URL from file name (Unlike CGI) Can use pretty URLs Bottle separates URL from function name Can map multiple URLs to same function Can change function name without changing URL, or vice versa 54

55 PennyBottle1Fund App Bottle provides utility functions Functions to fetch name=value pairs Functions to fetch/create cookies Function to implement HTTP redirect 55

56 Aside: Python Decorators def sqr(i): return i * i def main(): print sqr(5) if name == ' main ': main() Wanted: sqr() prints sqr was called each time it is called 56

57 Aside: Python Decorators def sqr(i): print 'sqr was called' return i * i def main(): print sqr(5) if name == ' main ': main() OK, but Doesn t generalize Requires edit of def of sqr() 57

58 Aside: Python Decorators One approach: def printnamedecorator(f): def fwrapper(i): print f. name, 'was called' return f(i) return fwrapper def sqr(i): return i * i sqr = printnamedecorator(sqr) Prints: sqr was called 25 def main(): print sqr(5) if name == ' main ': main() 58

59 Aside: Python Decorators Using a decorator def printnamedecorator(f): def fwrapper(i): print f. name, 'was called' return f(i) return def sqr(i): return i * i Prints: sqr was called 25 def main(): print sqr(5) if name == ' main ': main() 59

60 PennyBottle1Fund App Bottle uses Python decorators Using a def searchform(): Same code without using a decorator... def searchform():... searchform = default_app().route( \ path='/searchform', callback=searchform)... 60

61 Toward PennyBottle2Templates Problem: Code contains many assignment statements to compose HTML code Bulky; awkward; error prone Solution: Templates 61

62 PennyBottle2Templates App See PennyBottle2Templates App runserver, runserver.bat, penny.sql, penny.sqlite, book.py, database.py header.tpl footer.tpl index.tpl searchform.tpl searchresults.tpl penny.py Generalizing... 62

63 PennyBottle2Templates App Template (informally) HTML doc with placeholders Each placeholder is identified by a key hello.tpl Hello <strong>{{username}}</strong> and welcome 63

64 PennyBottle2Templates App To instantiate a template: template('somefile.tpl', dict) dict contains key/value pairs For each placeholder identified by key in somefile.tpl, replaces the placeholder with the value associated with key in dict Returns the resulting str 64

65 PennyBottle2Templates App To instantiate a template: Example: hello.tpl Hello <strong>{{username}}</strong> and welcome dict = {'username': 'Bob'} s = template('hello.tpl', dict) equivalent to s = 'Hello <strong>bob</strong> and welcome' 65

66 PennyBottle2Templates App Template can contain: Inline expressions {{expr}} expr usually is a key in the provided dict... {{prevauthor}}... expr can be any expression that evaluates to a str or has a str representation... {{book.getauthor()}}... 66

67 PennyBottle2Templates App Embedded pseudo-python code % line of Python code Indentation is ignored Blocks that are normally indented must be closed with end keyword % for book in books: {{book.getauthor()}}, {{book.gettitle()}}, ${{book.getprice()}}<br> % end 67

68 PennyBottle3Templates App Includes of other templates % include('other.tpl')... % include('header.tpl')... 68

69 Toward PennyBottle3Templates Problem??? Computation of morning/afternoon is in penny.py; better to move it to header.tpl? Computation of current time is in penny.py; better to move it to footer.tpl? Solution??? Move more Python code to templates 69

70 PennyBottle3Templates App See PennyBottle3Templates App runserver, runserver.bat, penny.sql, penny.sqlite, book.py, database.py, common.py, index.tpl, searchform.tpl, searchresults.tpl header.tpl footer.tpl penny.py Generalizing... 70

71 MVC Architecture Bottle encourages... The Model-View-Controller (MVC) architecture Model: The system s data access code View: The system s data presentation code Controller: (vague) The system s business code; the logic that connects the model with its view(s) 71

72 MVC Architecture In a Bottle app Views: template files In Penny apps: *.tpl files Controller: main Python file In Penny apps: penny.py Model: DB-related Python files In Penny apps: database.py, book.py Many non-micro frameworks facilitate model dev 72

73 MVC Assessment Positives Allows separation of concerns: Model: DB administrator (SQL, normalization,...) Views: Web designer (HTML, CSS,...) Controller: Programmer (Python, Java, ) 73

74 MVC Assessment Positives (cont.) Facilitates parallel development Can develop model, views, controller concurrently Facilitates maintenance Framework provides loose coupling (To some extent) can change model, views, controller independently 74

75 MVC Suggestions Suggestions: Use MVC!!! But keep views simple Avoid embedded code in views/templates when you reasonably can Is PennyBottle3Templates app better or worse than PennyBottle2Templates app? 75

76 Aside: ORMs Problem: Impedence mismatch Relational DB data model: tables, rows, columns OO data model: objects, object composition, classes, class inheritance Very different! 76

77 Aside: ORMs Solution 1: Cursor Relational DB driver fetches (sub)table from DB, presents it to OO code as a cursor OO code uses cursor to traverse table 77

78 Aside: ORMs Solution 2: Object-relational mappers (ORMs) Provided stand-alone (see Wikipedia) Provided by many full-featured frameworks Not provided by micro-frameworks (e.g., Bottle) Through config files, map relational DB tables to classes/objects OO code fetches/stores data by sending messages to objects, not by executing SQL statements Facilitates model development 78

79 Aside: Django and COS 333 Django Use for COS 333 assignments? (pro) The most popular Python framework (pro) Has ORM (con) More complex/powerful than necessary (con) Requires non-flat directory structure (con) ORM requires control of DB Django s ORM requires control fields in tables Could not use Django s ORM to access Penny DB Limitation beyond COS 333??? 79

80 More Bottle! There is much more to Bottle Bottle user s guide: Bottle tutorial: 80

81 Summary We have covered: Python WSGI programming Web app frameworks in general (briefly) The Bottle web app framework The MVC architecture 81

Server-Side Web Programming: Java. Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

Server-Side Web Programming: Java. Copyright 2017 by Robert M. Dondero, Ph.D Princeton University Server-Side Web Programming: Java Copyright 2017 by Robert M. Dondero, Ph.D Princeton University 1 Objectives You will learn about: Server-side web programming in Java, via Servlets The Spark web app framework

More information

Server-Side Web Programming: Python (Part 1) Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Server-Side Web Programming: Python (Part 1) Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University Server-Side Web Programming: Python (Part 1) Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Objectives You will learn about Server-side web programming in Python Common Gateway Interface

More information

Client-Side Web Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Client-Side Web Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University Client-Side Web Programming Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Objectives You will learn about: Client-side web programming, alias programming the browser, via JavaScript

More information

widgets, events, layout loosely similar to Swing test browser, or plugin for testing with real browser on local system

widgets, events, layout loosely similar to Swing test browser, or plugin for testing with real browser on local system Web [Application] Frameworks conventional approach to building a web service write ad hoc client code in HTML, CSS, Javascript,... by hand write ad hoc server code in [whatever] by hand write ad hoc access

More information

Front End Programming

Front End Programming Front End Programming Mendel Rosenblum Brief history of Web Applications Initially: static HTML files only. Common Gateway Interface (CGI) Certain URLs map to executable programs that generate web page

More information

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University COS 333: Advanced Programming Techniques Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly)

More information

Backend Web Frameworks

Backend Web Frameworks Backend Web Frameworks How do we: inspect the requested URL and return the appropriate page? deal with POST requests? handle more advanced concepts like sessions and cookies? scale the application to

More information

Etanova Enterprise Solutions

Etanova Enterprise Solutions Etanova Enterprise Solutions Server Side Development» 2018-06-28 http://www.etanova.com/technologies/server-side-development Contents.NET Framework... 6 C# and Visual Basic Programming... 6 ASP.NET 5.0...

More information

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears About the Tutorial TurboGears is a Python web application framework, which consists of many modules. It is designed around the MVC architecture that are similar to Ruby on Rails or Struts. TurboGears are

More information

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. Tooling for Ajax-Based Development Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. 1 Agenda In The Beginning Frameworks Tooling Architectural Approaches Resources 2 In The Beginning 3

More information

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul CIS192 Python Programming Web Frameworks and Web APIs Harry Smith University of Pennsylvania March 29, 2016 Harry Smith (University of Pennsylvania) CIS 192 March 29, 2016 1 / 25 Quick housekeeping Last

More information

COS 333: Advanced Programming Techniques

COS 333: Advanced Programming Techniques COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D. Princeton University Please pick up handouts at the back of the room 1 COS 333: Course Overview Copyright 2018 by Robert M. Dondero, Ph.D.

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Laravel

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Laravel About the Tutorial Laravel is a powerful MVC PHP framework, designed for developers who need a simple and elegant toolkit to create full-featured web applications. Laravel was created by Taylor Otwell.

More information

generates scaffolding/framework for models, views

generates scaffolding/framework for models, views Django by Adrian Holovaty and Jacob Kaplan-Moss (released July 2005) a collection of Python scripts to create a new project / site generates Python scripts for settings, etc. configuration info stored

More information

Tomasz Szumlak WFiIS AGH 23/10/2017, Kraków

Tomasz Szumlak WFiIS AGH 23/10/2017, Kraków Python in the Enterprise Django Intro Tomasz Szumlak WFiIS AGH 23/10/2017, Kraków Going beyond Django is a Web framework very popular! It is not the only one, and cannot do wonders There are many others:

More information

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin, To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry Tony Erwin, aerwin@us.ibm.com Agenda Origins of the Bluemix UI Demons of the Monolith Slaying Demons with

More information

(p t y) lt d. 1995/04149/07. Course List 2018

(p t y) lt d. 1995/04149/07. Course List 2018 JAVA Java Programming Java is one of the most popular programming languages in the world, and is used by thousands of companies. This course will teach you the fundamentals of the Java language, so that

More information

Lecture 10(-ish) Web [Application] Frameworks

Lecture 10(-ish) Web [Application] Frameworks Lecture 10(-ish) Web [Application] Frameworks Minimal Python server import SocketServer import SimpleHTTPServer class Reply(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_get(self): # query arrives

More information

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an  with the URL Grading: CS 183 4/6/2010 Build a simple HTML page, topic of your choice Will use this as a basis and gradually and add more features as the class progresses Need to be done with your favorite text editor, no visual

More information

Html5 Css3 Javascript Interview Questions And Answers Pdf >>>CLICK HERE<<<

Html5 Css3 Javascript Interview Questions And Answers Pdf >>>CLICK HERE<<< Html5 Css3 Javascript Interview Questions And Answers Pdf HTML5, CSS3, Javascript and Jquery development. There can be a lot more HTML interview questions and answers. free html interview questions and

More information

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make

More information

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems Distributed Architectures & Microservices CS 475, Spring 2018 Concurrent & Distributed Systems GFS Architecture GFS Summary Limitations: Master is a huge bottleneck Recovery of master is slow Lots of success

More information

Website Design and Development CSCI 311

Website Design and Development CSCI 311 Website Design and Development CSCI 311 Learning Objectives Understand good practices in designing and developing web sites Learn some of the challenges web design Activity In pairs: describe how you d

More information

29-27 May 2013 CERN WEB FRAMEWORKS. Adrian Mönnich

29-27 May 2013 CERN WEB FRAMEWORKS. Adrian Mönnich First Indico Workshop 29-27 May 2013 CERN WEB FRAMEWORKS Adrian Mönnich Framework? What? Do we have one? Do we need one? A web application framework is a software framework that is designed to support

More information

COS 333: Advanced Programming Techniques. Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques. Robert M. Dondero, Ph.D. Princeton University COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D. Princeton University 1 Agenda Introductions General Information Topics Assignments Project (briefly) Schedule Policies The Programming

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

CIS192 Python Programming

CIS192 Python Programming CIS192 Python Programming Web Servers and Web APIs Raymond Yin University of Pennsylvania November 12, 2015 Raymond Yin (University of Pennsylvania) CIS 192 November 12, 2015 1 / 23 Outline 1 Web Servers

More information

Overview of Web Application Development

Overview of Web Application Development Overview of Web Application Development Web Technologies I. Zsolt Tóth University of Miskolc 2018 Zsolt Tóth (University of Miskolc) Web Apps 2018 1 / 34 Table of Contents Overview Architecture 1 Overview

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

Modern Web Application Frameworks

Modern Web Application Frameworks MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Modern Web Application Frameworks MASTER S THESIS Bc. Jan Pater Brno, autumn 2015 Declaration Hereby I declare, that this paper is my original

More information

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015 Fundamentals of Website Development CSC 2320, Fall 2015 The Department of Computer Science Review Web Extensions Server side & Where is your JOB? 1 In this chapter Dynamic pages programming Database Others

More information

DATABASE SYSTEMS. Introduction to web programming. Database Systems Course, 2016

DATABASE SYSTEMS. Introduction to web programming. Database Systems Course, 2016 DATABASE SYSTEMS Introduction to web programming Database Systems Course, 2016 AGENDA FOR TODAY Client side programming HTML CSS Javascript Server side programming: PHP Installing a local web-server Basic

More information

Smartphone Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Smartphone Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University Smartphone Programming Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Objectives We will cover: Smartphone programming Android smartphone programming Resources Synchronous server interaction

More information

Programming the World Wide Web by Robert W. Sebesta

Programming the World Wide Web by Robert W. Sebesta Programming the World Wide Web by Robert W. Sebesta Tired Of Rpg/400, Jcl And The Like? Heres A Ticket Out Programming the World Wide Web by Robert Sebesta provides students with a comprehensive introduction

More information

ICOM 5016 Database Systems. Database Users. User Interfaces and Tools. Chapter 8: Application Design and Development.

ICOM 5016 Database Systems. Database Users. User Interfaces and Tools. Chapter 8: Application Design and Development. Chapter 8: Application Design and Development ICOM 5016 Database Systems Web Application Amir H. Chinaei Department of Electrical and Computer Engineering University of Puerto Rico, Mayagüez User Interfaces

More information

INFORMATION AND TECHNOLOY Over 200 tests to evaluate IT skills

INFORMATION AND TECHNOLOY Over 200 tests to evaluate IT skills INFORMATION AND TECHNOLOY Over 200 tests to evaluate IT skills 1. Web Design and Development The Web Design and Development tests allow you to assess your candidates IT skills and knowledge level: beginner,

More information

CS50 Quiz Review. November 13, 2017

CS50 Quiz Review. November 13, 2017 CS50 Quiz Review November 13, 2017 Info http://docs.cs50.net/2017/fall/quiz/about.html 48-hour window in which to take the quiz. You should require much less than that; expect an appropriately-scaled down

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer S.NO Technologies 1 HTML5 &CSS3 2 JavaScript, Object Oriented JavaScript& jquery 3 PHP&MYSQL Objective: Understand the importance of the web as a medium of communication. Understand

More information

CS 155 Project 2. Overview & Part A

CS 155 Project 2. Overview & Part A CS 155 Project 2 Overview & Part A Project 2 Web application security Composed of two parts Part A: Attack Part B: Defense Due date: Part A: May 5th (Thu) Part B: May 12th (Thu) Project 2 Ruby-on-Rails

More information

Web Frameworks MMIS 2 VU SS Denis Helic. March 10, KMI, TU Graz. Denis Helic (KMI, TU Graz) Web Frameworks March 10, / 18

Web Frameworks MMIS 2 VU SS Denis Helic. March 10, KMI, TU Graz. Denis Helic (KMI, TU Graz) Web Frameworks March 10, / 18 Web Frameworks MMIS 2 VU SS 2011-707.025 Denis Helic KMI, TU Graz March 10, 2011 Denis Helic (KMI, TU Graz) Web Frameworks March 10, 2011 1 / 18 Web Application Frameworks MVC Frameworks for Web applications

More information

Jackalope Documentation

Jackalope Documentation Jackalope Documentation Release 0.2.0 Bryson Tyrrell May 23, 2017 Getting Started 1 Create the Slack App for Your Team 3 2 Deploying the Slack App 5 2.1 Run from application.py.........................................

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW page 1 / 5 page 2 / 5 javascript jquery ajax file pdf I marked it as a duplicate despite the platform difference, because as far as I can see the solution is the same (You can't and don't need to do this

More information

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software Groovy & Grails Scripting for Modern Web Applications Rohit Nayak Talentica Software Agenda Demo: Quick intro to Grails Scripting, Web Applications and Grails/Groovy REST service in Grails Demo Internals

More information

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array Introduction to PHP Evaluation of Php Basic Syntax Defining variable and constant Php Data type Operator and Expression Handling Html Form With Php Capturing Form Data Dealing with Multi-value filed Generating

More information

MEAN & LAMP. Technical Capability Document MEAN & LAMP. our competencies : All rights reserved: DynaWEB An ADI Group Company

MEAN & LAMP. Technical Capability Document MEAN & LAMP. our competencies : All rights reserved: DynaWEB An ADI Group Company Technical Capability Document MEAN & LAMP Executive Summary : Web development and our competencies : MEAN & LAMP DynaWEB Technical skills and capabilities credibility are build and DynaWEB is the IT and

More information

Byte Academy. Python Fullstack

Byte Academy. Python Fullstack Byte Academy Python Fullstack 06/30/2017 Introduction Byte Academy pioneered industry-focused programs beginning with the launch of our FinTech course, the first of its type. Our educational programs bridge

More information

Architectural patterns

Architectural patterns Architectural patterns Open Source & DOTNET platform Understanding architectural design patterns (like MVC, MVP, MVVM etc.) is essential for producing a maintainable, clean, extendable and testable source

More information

welcome to BOILERCAMP HOW TO WEB DEV

welcome to BOILERCAMP HOW TO WEB DEV welcome to BOILERCAMP HOW TO WEB DEV Introduction / Project Overview The Plan Personal Website/Blog Schedule Introduction / Project Overview HTML / CSS Client-side JavaScript Lunch Node.js / Express.js

More information

Remote Health Service System based on Struts2 and Hibernate

Remote Health Service System based on Struts2 and Hibernate St. Cloud State University therepository at St. Cloud State Culminating Projects in Computer Science and Information Technology Department of Computer Science and Information Technology 5-2017 Remote Health

More information

CSC309: Introduction to Web Programming. Lecture 8

CSC309: Introduction to Web Programming. Lecture 8 CSC309: Introduction to Web Programming Lecture 8 Wael Aboulsaadat Front Layer Web Browser HTTP Request Get http://abc.ca/index.html Web (HTTP) Server HTTP Response .. How

More information

Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE

Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE Let's take a look at how we can accomplish this with AJAX in Rails. Overall, I was quite surprised at how easy it is

More information

If you don't know how to code, then you can learn even if you think you can't. Thousands of people have learned programming from these fine books:

If you don't know how to code, then you can learn even if you think you can't. Thousands of people have learned programming from these fine books: Become a Programmer, Motherfucker If you don't know how to code, then you can learn even if you think you can't. Thousands of people have learned programming from these fine books: Learn Python The Hard

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer About the Tutorial PyCharm is the most popular IDE for Python, and includes great features such as excellent code completion and inspection with advanced debugger and support for web programming and various

More information

Concurrent Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Concurrent Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University Concurrent Programming Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Objectives You will learn/review: What a process is How to fork and wait for processes What a thread is How to spawn

More information

Web Development for Dinosaurs An Introduction to Modern Web Development

Web Development for Dinosaurs An Introduction to Modern Web Development Web Development for Dinosaurs An Introduction to Modern Web Development 1 / 53 Who Am I? John Cleaver Development Team Lead at Factivity, Inc. An Introduction to Modern Web Development - PUG Challenge

More information

Asp Net Mvc Framework Unleashed

Asp Net Mvc Framework Unleashed We have made it easy for you to find a PDF Ebooks without any digging. And by having access to our ebooks online or by storing it on your computer, you have convenient answers with asp net mvc framework

More information

CDM.DEPAUL.EDU MASSIMO DI PIERRO

CDM.DEPAUL.EDU MASSIMO DI PIERRO CDM.DEPAUL.EDU 90 full time faculty 300 courses/quarter 1858 graduate students in 20 programs (CS, IS,...) 1763 undergraduate students in 16 programs DHS and NSA center of excellence MASSIMO DI PIERRO

More information

Open Source Library Developer & IT Pro

Open Source Library Developer & IT Pro Open Source Library Developer & IT Pro Databases LEV 5 00:00:00 NoSQL/MongoDB: Buildout to Going Live INT 5 02:15:11 NoSQL/MongoDB: Implementation of AngularJS INT 2 00:59:55 NoSQL: What is NoSQL INT 4

More information

Comparing Java Web Frameworks

Comparing Java Web Frameworks Comparing Java Web Frameworks JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket Matt Raible matt@raibledesigns.com http://raibledesigns.com Today's Agenda Introductions Pros and Cons Smackdown Conclusion

More information

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/

More information

Future Web App Technologies

Future Web App Technologies Future Web App Technologies Mendel Rosenblum MEAN software stack Stack works but not the final say in web app technologies Angular.js Browser-side JavaScript framework HTML Templates with two-way binding

More information

Application Design and Development: October 30

Application Design and Development: October 30 M149: Database Systems Winter 2018 Lecturer: Panagiotis Liakos Application Design and Development: October 30 1 Applications Programs and User Interfaces very few people use a query language to interact

More information

Boldface numbers indicate illustrations, code listings, and tables.

Boldface numbers indicate illustrations, code listings, and tables. Index Boldface numbers indicate illustrations, code listings, and tables. A ActiveRecord, class in Ruby, 80-82, 84, 86, 88, 90 ActiveXMLService, class in Ruby, 80-82, 84, 90 Agile development, 109-110

More information

Working with the Seagull Framework. By Demian Turner, Seagull Systems

Working with the Seagull Framework. By Demian Turner, Seagull Systems Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:

More information

Python web frameworks

Python web frameworks Flask Python web frameworks Django Roughly follows MVC pattern Steeper learning curve. Flask Initially an April Fools joke Micro -framework: minimal approach. Smaller learning curve http://flask.pocoo.org/docs/0.12/quickstart/#a-minimalapplication

More information

Database Applications

Database Applications Database Applications Database Programming Application Architecture Objects and Relational Databases John Edgar 2 Users do not usually interact directly with a database via the DBMS The DBMS provides

More information

Cloud Computing Platform as a Service

Cloud Computing Platform as a Service HES-SO Master of Science in Engineering Cloud Computing Platform as a Service Academic year 2015/16 Platform as a Service Professional operation of an IT infrastructure Traditional deployment Server Storage

More information

Templates and Databinding. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Templates and Databinding. SWE 432, Fall 2017 Design and Implementation of Software for the Web Templates and Databinding SWE 432, Fall 2017 Design and Implementation of Software for the Web Today What are templates? What are frontend components? How can I use these with React? 2 What s wrong with

More information

HOW TO FLASK. And a very short intro to web development and databases

HOW TO FLASK. And a very short intro to web development and databases HOW TO FLASK And a very short intro to web development and databases FLASK Flask is a web application framework written in Python. Created by an international Python community called Pocco. Based on 2

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer Course Contents: Introduction to Web Development HTML5 and CSS3 Introduction to HTML5 Why HTML5 Benefits Of HTML5 over HTML HTML 5 for Making Dynamic Page HTML5 for making Graphics

More information

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system

More information

Standard 1 The student will author web pages using the HyperText Markup Language (HTML)

Standard 1 The student will author web pages using the HyperText Markup Language (HTML) I. Course Title Web Application Development II. Course Description Students develop software solutions by building web apps. Technologies may include a back-end SQL database, web programming in PHP and/or

More information

Company Overview. Company based in the heart of Silicon Valley. Sources best talent around the world in order to deliver highest quality product.

Company Overview. Company based in the heart of Silicon Valley. Sources best talent around the world in order to deliver highest quality product. Game Development UE Company Overview Company based in the heart of Silicon Valley Sources best talent around the world in order to deliver highest quality product. Ensures projects are delivered in the

More information

Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (Swift, Apps, Javascript, PHP, Python, Sql, HTML) By Os Swift

Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (Swift, Apps, Javascript, PHP, Python, Sql, HTML) By Os Swift Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (Swift, Apps, Javascript, PHP, Python, Sql, HTML) By Os Swift If searching for the book Programming: C ++ Programming

More information

P a g e 1. Danish Technological Institute. Scripting and Web Languages Online Course k Scripting and Web Languages

P a g e 1. Danish Technological Institute. Scripting and Web Languages   Online Course k Scripting and Web Languages P a g e 1 Online Course k72853 Scripting and Web Languages P a g e 2 Title Estimated Duration (hrs) JsRender Fundamentals 2 Advanced JsRender Features 3 JavaScript SPA: Getting Started with SPA in Visual

More information

Lecture 9a: Sessions and Cookies

Lecture 9a: Sessions and Cookies CS 655 / 441 Fall 2007 Lecture 9a: Sessions and Cookies 1 Review: Structure of a Web Application On every interchange between client and server, server must: Parse request. Look up session state and global

More information

Information Retrieval CS Lecture 13. Razvan C. Bunescu School of Electrical Engineering and Computer Science

Information Retrieval CS Lecture 13. Razvan C. Bunescu School of Electrical Engineering and Computer Science Information Retrieval CS 6900 Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Web Search Interfaces Web search engines need a web-based interface. Search page accepts

More information

Signals Documentation

Signals Documentation Signals Documentation Release 0.1 Yeti November 22, 2015 Contents 1 Quickstart 1 2 What is Signals? 3 3 Contents 5 3.1 Get Started................................................ 5 3.2 Try the Demo Server...........................................

More information

Start of the site or web application development

Start of the site or web application development Web applications and multimedia technologies Lecture 2 Start of the site or web application development Prof. N.K. Trubochkina Department of computer engineering, HSE 2015 Lecture 02 Start of the site

More information

Anatomy of a SPA: Client-side MVC

Anatomy of a SPA: Client-side MVC 11/12/11 10:35 AM Anatomy of a SPA: Client-side MVC SPA: Single Page Application MVC: Model-View-Controller file:///users/baguirre/downloads/rubyconf-slides/index.html#1 11/12/11 10:36 AM My name is Alvaro

More information

Java Applets, etc. Instructor: Dmitri A. Gusev. Fall Lecture 25, December 5, CS 502: Computers and Communications Technology

Java Applets, etc. Instructor: Dmitri A. Gusev. Fall Lecture 25, December 5, CS 502: Computers and Communications Technology Java Applets, etc. Instructor: Dmitri A. Gusev Fall 2007 CS 502: Computers and Communications Technology Lecture 25, December 5, 2007 CGI (Common Gateway Interface) CGI is a standard for handling forms'

More information

Modern frameworks, modern vulnerabilities. Florent Nicolas

Modern frameworks, modern vulnerabilities. Florent Nicolas Modern frameworks, modern vulnerabilities Florent Batard @Shenril Nicolas Oberli @Baldanos w Both working for SCRT 0daysober CTF team members 2 ToC Known secret YAML vulnerabilities Routing vulnerabilities

More information

Tutorial Php Coding Projects Pdf Beginners With Examples

Tutorial Php Coding Projects Pdf Beginners With Examples Tutorial Php Coding Projects Pdf Beginners With Examples Learning PHP Basic With project 2015 part 1,Beginner PHP Tutorial This is an php. Programming Tutorials. SubscribeSubscribed php tutorial for beginners

More information

Isomorphic Kotlin. Troy

Isomorphic Kotlin. Troy Isomorphic Kotlin Troy Miles @therockncoder Troy Miles @therockncoder Troy Miles, aka the Rockncoder, began writing computer games in assembly language for early computers like the Apple II, Commodore

More information

PHP Object-Relational Mapping Libraries in action

PHP Object-Relational Mapping Libraries in action PHP Object-Relational Mapping Libraries in action Apr 14, 2010 O'Reilly MySQL Conference and Expo Santa Clara, CA Fernando Ipar & Ryan Lowe Percona Inc. -2- Agenda What are ORM libraries Object Oriented

More information

Technology modeling. Ralf Lämmel Software Languages Team University of Koblenz-Landau

Technology modeling. Ralf Lämmel Software Languages Team University of Koblenz-Landau Technology modeling Ralf Lämmel Software Languages Team University of Koblenz-Landau Technologies are at the heart of software development. Let s model them for understanding. 1 Different kinds of software

More information

Unable To Access An Error Message Corresponding To Your Field Name. Codeigniter Callback

Unable To Access An Error Message Corresponding To Your Field Name. Codeigniter Callback Unable To Access An Error Message Corresponding To Your Field Name. Codeigniter Callback I get field was not set error when I'm validating a form. Here is my view Unable to access an error message corresponding

More information

Lecture 4. Ruby on Rails 1 / 49

Lecture 4. Ruby on Rails 1 / 49 Lecture 4 Ruby on Rails 1 / 49 Client-Server Model 2 / 49 What is it? A client (e.g. web browser, phone, computer, etc.) sends a request to a server Request is an HTTP request Stands for HyperText Transfer

More information

Static Webpage Development

Static Webpage Development Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction

More information

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University The COS 333 Project Robert M. Dondero, Ph.D. Princeton University 1 Overview A simulation of reality In groups of 3-5 people... Build a substantial three tier software system 2 Three-Tier Systems "Three

More information

CSC 443: Web Programming

CSC 443: Web Programming 1 CSC 443: Web Programming Haidar Harmanani Department of Computer Science and Mathematics Lebanese American University Byblos, 1401 2010 Lebanon Today 2 Course information Course Objectives A Tiny assignment

More information

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION page 1 / 5 page 2 / 5 html css javascript web pdf We have curated a list of free development

More information

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first. As per the today s scenario, companies not only desire to test software adequately, but they also want to get the work done as quickly and thoroughly as possible. To accomplish this goal, organizations

More information

CMPE 131 Software Engineering. Ruby on Rails Introduction

CMPE 131 Software Engineering. Ruby on Rails Introduction CMPE 131 Software Engineering September 5, 2017 Ruby on Rails Introduction Presented By Melvin Ch ng Agenda Native App vs Web App What is Ruby on Rails? MVC Architecture What can you do with Rails? What

More information

Full Stack Developer with Java

Full Stack Developer with Java Full Stack Developer with Java Full Stack Developer (Java) MVC, Databases and ORMs, API Backend Frontend Fundamentals - HTML, CSS, JS Unit Testing Advanced Full Stack Developer (Java) UML, Distributed

More information

What s new in Spring Web Flow 2.0

What s new in Spring Web Flow 2.0 What s new in Spring Web Flow 2.0 Agim Emruli SpringSource Germany Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. About me Senior Consultant

More information

Tuesday, January 13, Backend III: Node.js with Databases

Tuesday, January 13, Backend III: Node.js with Databases 6.148 Backend III: Node.js with Databases HELLO AND WELCOME! Your Feels Lecture too fast! Your Feels Lecture too fast! Too many languages Your Feels Lecture too fast! Too many languages Code more in class

More information

Online. Course Packet PYTHON MEAN.NET

Online. Course Packet PYTHON MEAN.NET Online Course Packet PYTHON MEAN.NET Last updated on Nov 20, 2017 TABLE OF CONTENTS 2 ONLINE BOOTCAMP What is a Full Stack? 3 Why Become a Full Stack Developer? 4 Program Overview & Prerequisites 5 Schedule

More information

Helpline No WhatsApp No.:

Helpline No WhatsApp No.: TRAINING BASKET QUALIFY FOR TOMORROW Helpline No. 9015887887 WhatsApp No.: 9899080002 Regd. Off. Plot No. A-40, Unit 301/302, Tower A, 3rd Floor I-Thum Tower Near Corenthum Tower, Sector-62, Noida - 201309

More information