- Ruby on Rails (Ruby)
- Play (Java and Scala)
- ASP.NET MVC (Microsoft)
- Django (Python)
- Sinatra (Ruby) (very light-weight)
- Symfony (PHP)
- Sails.js (Node.js, JavaScript)
Content management systems (CMSs):
WordPress, Drupal, Joomla!
The MVC Design pattern
Model-View-Controller model
- Decouples data (model) and presentation (view)
- A controller handles requests, and coordinates between the model and the view
- More robust applications, easier to maintain
MVC control flow:
1. User interface (view) awaits user input
2. User provides input, e.g., clicks a button
3. Controller handles the input event -> some action (handler or callback) understandable by the model
4. Controller notifies the model, possibly changing the model's state
5. Controller notifies the view (if it needs to be updated). Back to step 1.
Showing posts with label Web. Show all posts
Showing posts with label Web. Show all posts
Tuesday, May 17, 2016
Tuesday, November 10, 2015
Web - Python
Python - Web
Python built-in library for TCP sockets
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
Application:
Write a web browser:
A http request in python:
urllib:
<HTML>
Use beautifulsoup to parse HTML.
Download beautifulsoup.py and put it with your python code.
http://www.crummy.com/software/BeautifulSoup/
<XML>
use xml.etree.elementtree
<JSON>
import json
info = json.loads(data)
info is a dictionary in Python.
So can use dictionary method to access the value associated with some key.
json list -> [{"key1":"v1"}, {"key2":"v2"}]
after loads, it is a list in Python
JSON vs. XML
JSON is easier to use, but XML is more expressive.
js = json.loads(data)
json.dumps(js. indent=4) # good formatting
<WEB Service Technology>
REST - Representational State Transfer - Remote resources which we create, read, update and delete remotely.
Python built-in library for TCP sockets
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
Application:
Write a web browser:
A http request in python:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
while True:
data = mysock.recv(512)
if ( len(data) < 1 ) :
break
print data
mysock.close()
urllib:
import urllib
fhand = urllib.urlopen('http://www.py4inf.com/code/romeo.txt')
for line in fhand:
print line.strip()
<HTML>
Use beautifulsoup to parse HTML.
Download beautifulsoup.py and put it with your python code.
http://www.crummy.com/software/BeautifulSoup/
import urllib
from BeautifulSoup import *
url = raw_input("Enter - ")
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
# Retrieve a list of anchor tags
# Each tag is like a dictionary of HTML Attributes
tags = soup('a')
for tag in tags:
print tag.get('href', None)
<XML>
use xml.etree.elementtree
import urllib
import xml.etree.ElementTree as ET
serviceurl = 'http://maps.googleapis.com/maps/api/geocode/xml?'
while True:
address = raw_input('Enter location: ')
if len(address) < 1 : break
url = serviceurl + urllib.urlencode({'sensor':'false', 'address': address})
print 'Retrieving', url
uh = urllib.urlopen(url)
data = uh.read()
print 'Retrieved',len(data),'characters'
print data
tree = ET.fromstring(data)
results = tree.findall('result')
lat = results[0].find('geometry').find('location').find('lat').text
lng = results[0].find('geometry').find('location').find('lng').text
location = results[0].find('formatted_address').text
print 'lat',lat,'lng',lng
print location
<JSON>
import json
info = json.loads(data)
info is a dictionary in Python.
So can use dictionary method to access the value associated with some key.
json list -> [{"key1":"v1"}, {"key2":"v2"}]
after loads, it is a list in Python
JSON vs. XML
JSON is easier to use, but XML is more expressive.
js = json.loads(data)
json.dumps(js. indent=4) # good formatting
<WEB Service Technology>
REST - Representational State Transfer - Remote resources which we create, read, update and delete remotely.
import json
import urllib
url = raw_input("Enter json location: ")
print "Retrieving ", url
urljson = urllib.urlopen(url)
data = urljson.read()
info = json.loads(data)
print 'Retrieved ', len(data), " characters"
print "Count ", len(info["comments"])
#print json.dumps(info, indent=4)
sumofcount = sum([item["count"] for item in info["comments"]])
print "Sum ", sumofcount
#for item in info["comments"]:
# sumofcount += item["count"]
#print "Sum ", sumofcount
#print type(info["comments"]["count"])
#print "Sum ", sum(info["comments"]["count"])
import urllib
import twurl
import json
TWITTER_URL = 'https://api.twitter.com/1.1/friends/list.json'
while True:
print ''
acct = raw_input('Enter Twitter Account:')
if ( len(acct) < 1 ) : break
url = twurl.augment(TWITTER_URL,
{'screen_name': acct, 'count': '5'} )
print 'Retrieving', url
connection = urllib.urlopen(url)
data = connection.read()
headers = connection.info().dict
print 'Remaining', headers['x-rate-limit-remaining']
js = json.loads(data)
print json.dumps(js, indent=4)
for u in js['users'] :
print u['screen_name']
s = u['status']['text']
print ' ',s[:50]
Subscribe to:
Posts (Atom)





