Merge branch 'main' of git.mcssliberia.org:jelkner/elknernet
commit
0e4f91891c
@ -0,0 +1,46 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import quotes
|
||||||
|
from bottle import route, run, template, static_file
|
||||||
|
|
||||||
|
|
||||||
|
# get current location, set as current location, and append to path
|
||||||
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
os.chdir(current_dir)
|
||||||
|
sys.path.append(current_dir)
|
||||||
|
|
||||||
|
# get absolute path of database file
|
||||||
|
dbfile = current_dir + '/quotes.db'
|
||||||
|
print(dbfile)
|
||||||
|
|
||||||
|
|
||||||
|
@route('/')
|
||||||
|
def index():
|
||||||
|
quote = quotes.get_random_quote(dbfile)
|
||||||
|
return template('templates/index.tpl', text=quote[0], author=quote[1])
|
||||||
|
|
||||||
|
|
||||||
|
@route('/static/<filename:path>')
|
||||||
|
def server_static(filename):
|
||||||
|
return static_file(filename, root=os.path.join(current_dir, 'static'))
|
||||||
|
|
||||||
|
|
||||||
|
@route('/contact')
|
||||||
|
def contact():
|
||||||
|
quote = quotes.get_random_quote(dbfile)
|
||||||
|
return template('templates/contact.tpl', text=quote[0], author=quote[1])
|
||||||
|
|
||||||
|
|
||||||
|
def get_port():
|
||||||
|
description = 'A bottle server for the HILT Institute'
|
||||||
|
parser = argparse.ArgumentParser(description)
|
||||||
|
parser.add_argument('-p', '--port', type=int,
|
||||||
|
help="The port number the server will run on")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
return args.port if args.port else 8080
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
run(host='0.0.0.0', port=get_port(), reloader=True, debug=True)
|
@ -0,0 +1,77 @@
|
|||||||
|
import sqlite3
|
||||||
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
def query(db, stmnt):
|
||||||
|
con = sqlite3.connect(db)
|
||||||
|
cur = con.cursor()
|
||||||
|
cur.execute(stmnt)
|
||||||
|
results = cur.fetchall()
|
||||||
|
con.close()
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def get_authors(db):
|
||||||
|
return query(db, 'SELECT * FROM Author ORDER BY lname')
|
||||||
|
|
||||||
|
|
||||||
|
def get_quotes(db):
|
||||||
|
stmnt = """SELECT qtext, fname, lname, source, qdate FROM Quote
|
||||||
|
NATURAL JOIN Author ORDER BY RANDOM()"""
|
||||||
|
return query(db, stmnt)
|
||||||
|
|
||||||
|
|
||||||
|
def format_quote(raw_quote):
|
||||||
|
"""
|
||||||
|
Return a tuple containing (text, source) for a quote given a raw quote
|
||||||
|
containing [text, author first name, author last name, source document,
|
||||||
|
quote date] where all fields accept text are possibly None values. Source
|
||||||
|
should be set to "Anonymous" if no other info is provided.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
>>> format_quote(['Quote', 'F', 'L', 'Source', 'Date'])
|
||||||
|
('Quote', 'F L, Source, Date')
|
||||||
|
>>> format_quote(['Quote', 'F', 'L', None, None])
|
||||||
|
('Quote', 'F L')
|
||||||
|
>>> format_quote(['Quote', 'F', 'L', 'Source', None])
|
||||||
|
('Quote', 'F L, Source')
|
||||||
|
>>> format_quote(['Quote', 'F', 'L', None, 'Date'])
|
||||||
|
('Quote', 'F L, Date')
|
||||||
|
>>> format_quote(['Quote', None, 'L', None, None])
|
||||||
|
('Quote', 'L')
|
||||||
|
>>> format_quote(['Quote', None, None, 'Source', None])
|
||||||
|
('Quote', 'Source')
|
||||||
|
>>> format_quote(['Quote', None, None, None, None])
|
||||||
|
('Quote', 'Anonymous')
|
||||||
|
"""
|
||||||
|
text = raw_quote[0]
|
||||||
|
source = []
|
||||||
|
|
||||||
|
# append author name (first and last) to source list if provided
|
||||||
|
if raw_quote[1] and raw_quote[2]:
|
||||||
|
source.append("%s %s" % (raw_quote[1], raw_quote[2]))
|
||||||
|
elif raw_quote[2]: # only last name provided
|
||||||
|
source.append(raw_quote[2])
|
||||||
|
|
||||||
|
# append source document and date to source list if provided
|
||||||
|
for item in raw_quote[-2:]:
|
||||||
|
if item:
|
||||||
|
source.append(item)
|
||||||
|
|
||||||
|
# join the pieces into a string seperated by comma and space
|
||||||
|
if source:
|
||||||
|
source = ", ".join(source)
|
||||||
|
else: # no source information provided, so make it "Anonymous"
|
||||||
|
source = "Anonymous"
|
||||||
|
|
||||||
|
return text, source
|
||||||
|
|
||||||
|
|
||||||
|
def get_random_quote(db):
|
||||||
|
return format_quote(get_quotes(db)[0])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
@ -0,0 +1,66 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Abduction Form</title>
|
||||||
|
<style>
|
||||||
|
@import url(style.css);
|
||||||
|
form {
|
||||||
|
display: block;
|
||||||
|
margin-left: 30vw;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Abduction Form</h1>
|
||||||
|
<main>
|
||||||
|
<p>
|
||||||
|
Share your story of alien abduction:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form action="report.php" method="post">
|
||||||
|
<label for="firstname">First name:</label>
|
||||||
|
<input type="text" id="firstname" name="firstname"><br>
|
||||||
|
<label for="lastname">Last name:</label>
|
||||||
|
<input type="text" id="lastname" name="lastname"><br>
|
||||||
|
<label for="email">What is your email address?</label>
|
||||||
|
<input type="text" id="email" name="email"><br>
|
||||||
|
<label for="occurred">When did it happen?</label>
|
||||||
|
<input type="text" id="occurred" name="occurred"><br>
|
||||||
|
<label for="howlong">How long were you gone?</label>
|
||||||
|
<input type="text" id="howlong" name="howlong"><br>
|
||||||
|
<label for="howmany">How many did you see?</label>
|
||||||
|
<input type="text" id="howmany" name="howmany"><br>
|
||||||
|
<label for="description">Describe them:</label>
|
||||||
|
<input type="text" id="description" name="description"><br>
|
||||||
|
<label for="whattheydid">What did they do to you?</label>
|
||||||
|
<input type="text" id="whattheydid" name="whattheydid"><br>
|
||||||
|
<label for="tabbyspotted">Have you seen my cat Tabby?</label>
|
||||||
|
Yes <input id="tabbyspotted" name="tabbyspotted" type="radio" value="yes">
|
||||||
|
No <input id="tabbyspotted" name="tabbyspotted" type="radio" value="no"><br>
|
||||||
|
<img src="images/tabby.jpg" height="175" alt="My abducted cat Tabby"><br>
|
||||||
|
<label for="other" name="other">Anything else you want to add?</label>
|
||||||
|
<textarea id="other" name="other"></textarea><br>
|
||||||
|
<input type="submit" value="Report Abduction" name="submit">
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,45 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
<style>
|
||||||
|
@import url(style.css);
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1></h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<?php
|
||||||
|
$dir = 'sqlite:/home/jelkner/Data/phpliteadmin/alien_abductions.sqlite';
|
||||||
|
$dbh = new PDO($dir) or die("Cannot open the database");
|
||||||
|
$query = "SELECT * FROM Abductions";
|
||||||
|
foreach ($dbh->query($query) as $row)
|
||||||
|
{
|
||||||
|
echo $row[1];
|
||||||
|
}
|
||||||
|
$dbh = null; //This is how you close a PDO connection
|
||||||
|
?>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,15 @@
|
|||||||
|
DROP TABLE IF EXISTS Abductions;
|
||||||
|
|
||||||
|
CREATE TABLE Abductions(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
firstname TEXT NOT NULL,
|
||||||
|
lastname TEXT NOT NULL,
|
||||||
|
email TEXT NOT NULL,
|
||||||
|
occured TEXT NOT NULL,
|
||||||
|
howlong TEXT NOT NULL,
|
||||||
|
howmany TEXT NOT NULL,
|
||||||
|
description TEXT NOT NULL,
|
||||||
|
whattheydid TEXT NOT NULL,
|
||||||
|
tabbyspotted INTEGER NOT NULL,
|
||||||
|
other TEXT NOT NULL
|
||||||
|
);
|
Binary file not shown.
After Width: | Height: | Size: 166 KiB |
@ -0,0 +1,46 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Head First PHP & MySQL</title>
|
||||||
|
<style>
|
||||||
|
@import url(../main.css);
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Head First PHP & MySQL</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<h2>Projects</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="abduction_form.html">Alien Abduction</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Who Am I?</h2>
|
||||||
|
<p>
|
||||||
|
<?php
|
||||||
|
print shell_exec( 'whoami' );
|
||||||
|
?>
|
||||||
|
</p>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,48 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Aliens Abducted Me - Abduction Report</title>
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Aliens Abducted Me - Abduction Report</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<?php
|
||||||
|
$when_it_happened = $_POST['when'];
|
||||||
|
$how_long = $_POST['howlong'];
|
||||||
|
$alien_description = $_POST['description'];
|
||||||
|
$tabby_spotted = $_POST['tabbyspotted'];
|
||||||
|
$email = $_POST['email'];
|
||||||
|
|
||||||
|
echo '<p>Thanks for submitting the form.<br>';
|
||||||
|
echo 'You were abducted ' . $when_it_happened;
|
||||||
|
echo ' and were gone for ' . $how_long . '<br>';
|
||||||
|
echo 'Describe them: ' . $alien_description . '<br>';
|
||||||
|
echo 'Was Tabby there? '. $tabby_spotted . '<br>';
|
||||||
|
echo 'Your email address is ' . $email . '</p>';
|
||||||
|
?>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,16 @@
|
|||||||
|
main {
|
||||||
|
margin: 30px;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px dotted #555;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a, a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Book List</title>
|
||||||
|
<style>
|
||||||
|
@import url(style.css);
|
||||||
|
header > nav {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Book List</h1>
|
||||||
|
<nav>
|
||||||
|
<a href="index.php">Home</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<?php
|
||||||
|
$dir = 'sqlite:database/acclib.db';
|
||||||
|
$dbh = new PDO($dir) or die("Cannot open the database");
|
||||||
|
$query = "SELECT * FROM Books";
|
||||||
|
foreach ($dbh->query($query) as $row)
|
||||||
|
{
|
||||||
|
echo $row[1];
|
||||||
|
}
|
||||||
|
$dbh = null; //This is how you close a PDO connection
|
||||||
|
?>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,12 @@
|
|||||||
|
.mode column
|
||||||
|
.headers on
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
title, class, subclass, cutter, suppl
|
||||||
|
FROM
|
||||||
|
Books
|
||||||
|
ORDER BY
|
||||||
|
class ASC,
|
||||||
|
subclass ASC,
|
||||||
|
cutter ASC,
|
||||||
|
suppl ASC;
|
@ -0,0 +1,501 @@
|
|||||||
|
INSERT INTO Books VALUES(
|
||||||
|
1,
|
||||||
|
'Good Faith Collaboration: The Culture of Wikipedia',
|
||||||
|
'AE',
|
||||||
|
100,
|
||||||
|
'R43',
|
||||||
|
'2010',
|
||||||
|
'9780262014472',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
2,
|
||||||
|
'Algorithms to Live By: The Computer Science of Human Decisions',
|
||||||
|
'BF',
|
||||||
|
39,
|
||||||
|
'C4885',
|
||||||
|
'2016',
|
||||||
|
'9781627790369',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
3,
|
||||||
|
'Ours to Hack and to Own: The Rise of Platform Cooperativism, A New Vision for the Future of Work and a Fairer Internet',
|
||||||
|
'HM',
|
||||||
|
851,
|
||||||
|
'O973',
|
||||||
|
'2016',
|
||||||
|
'9781944869335',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
4,
|
||||||
|
'The Mathematics of Elections and Voting',
|
||||||
|
'JF',
|
||||||
|
1001,
|
||||||
|
'W35',
|
||||||
|
'2014',
|
||||||
|
'9783319098098',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
5,
|
||||||
|
'Beyond Transparency: Open Data and the Future of Civic Innovation',
|
||||||
|
'JK',
|
||||||
|
468,
|
||||||
|
'T7 B49',
|
||||||
|
'2013',
|
||||||
|
'9780615889085',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
6,
|
||||||
|
'Trusting Teachers with School Success: What Happens when Teachers Call the Shots',
|
||||||
|
'LB',
|
||||||
|
2806.45,
|
||||||
|
'F36',
|
||||||
|
'2013',
|
||||||
|
'9781610485104',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
7,
|
||||||
|
'Murphy''s Law and Other Reasons Why Things Go Wrong',
|
||||||
|
'PN',
|
||||||
|
6231,
|
||||||
|
'M82 B57',
|
||||||
|
'',
|
||||||
|
'0843104287',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
8,
|
||||||
|
'The Annotated Alice: Alice''s Adventures in Wonderland & Through the Looking Glass',
|
||||||
|
'PR',
|
||||||
|
4611,
|
||||||
|
'A7',
|
||||||
|
'1960',
|
||||||
|
'9780452010413',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
9,
|
||||||
|
'Gödel, Escher, Bach: An Eternal Golden Braid',
|
||||||
|
'QA',
|
||||||
|
9.8,
|
||||||
|
'H63',
|
||||||
|
'1980',
|
||||||
|
'0394745027',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
10,
|
||||||
|
'Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More!',
|
||||||
|
'QA',
|
||||||
|
20,
|
||||||
|
'C65 S24',
|
||||||
|
'2015',
|
||||||
|
'9781593276409',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
11,
|
||||||
|
'Rethinking Mathematics: Teaching Social Justice by the Numbers',
|
||||||
|
'QA',
|
||||||
|
22.3,
|
||||||
|
'R478',
|
||||||
|
'2013',
|
||||||
|
'9780942961553',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
12,
|
||||||
|
'Unlocking the Clubhouse: Women in Computing',
|
||||||
|
'QA',
|
||||||
|
76.25,
|
||||||
|
'M35',
|
||||||
|
'2001',
|
||||||
|
'9780262632690',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
13,
|
||||||
|
'Stuck in the Shallow End: Education, Race, and Computing',
|
||||||
|
'QA',
|
||||||
|
76.27,
|
||||||
|
'M347',
|
||||||
|
'2008eb',
|
||||||
|
'9780262514040',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
14,
|
||||||
|
'Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds',
|
||||||
|
'QA',
|
||||||
|
76.58,
|
||||||
|
'R47',
|
||||||
|
'1994',
|
||||||
|
'9780262680936',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
15,
|
||||||
|
'The C Trilogy: A Complete Library for C Programmers',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 B56',
|
||||||
|
'1987',
|
||||||
|
'0830628908',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
16,
|
||||||
|
'The C Programming Language',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 K47',
|
||||||
|
'1988',
|
||||||
|
'9780131103702',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
17,
|
||||||
|
'The C Answer Book: Solutions to the Exercises in The C Programming Language, Second Edition, by Brian W. Kernighan and Dennis M. Ritchie',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 K47',
|
||||||
|
'1988 suppl',
|
||||||
|
'9780131096530',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
18,
|
||||||
|
'C Programming: A Complete Guide to Mastering the C Language',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 H364',
|
||||||
|
'1989',
|
||||||
|
'9780201194449',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
19,
|
||||||
|
'Data Structures Using C',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 T46',
|
||||||
|
'1990',
|
||||||
|
'9780131997462',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
20,
|
||||||
|
'C: A Reference Manual',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 H38',
|
||||||
|
'1991',
|
||||||
|
'9780131109339',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
21,
|
||||||
|
'The Beginner''s Guide to C',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 H668',
|
||||||
|
'1994',
|
||||||
|
'9781874416159',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
22,
|
||||||
|
'C Primer Plus',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 P733',
|
||||||
|
'1988',
|
||||||
|
'0672225824',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
23,
|
||||||
|
'C: The Complete Reference',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'C15 S353',
|
||||||
|
'1995',
|
||||||
|
'9780078821011',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
24,
|
||||||
|
'Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'J39 H38',
|
||||||
|
'2019',
|
||||||
|
'9781593279509',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
25,
|
||||||
|
'Head First JavaScript Programming',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'J39 F735',
|
||||||
|
'2014',
|
||||||
|
'9781449340131',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
26,
|
||||||
|
'Javascript: The Good Parts',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'J39 C763',
|
||||||
|
'2008',
|
||||||
|
'9780596517748',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
27,
|
||||||
|
'Python Testing Beginner''s Guide: An Easy and Convenient Approach to Testing Your Python Projects',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 A73',
|
||||||
|
'2010eb',
|
||||||
|
'9781847198846',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
28,
|
||||||
|
'Data Structures and Algorithms in Python',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 G66',
|
||||||
|
'2013',
|
||||||
|
'9788126562176',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
29,
|
||||||
|
'Python Algorithms: Mastering Basic Algorithms in the Python Language',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 H485',
|
||||||
|
'2010',
|
||||||
|
'9781430232377',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
30,
|
||||||
|
'Python for Data Analysis',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 M42',
|
||||||
|
'2013',
|
||||||
|
'9781449319793',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
31,
|
||||||
|
'Introduction to Computer Science Using Python: A Computational Problem-Solving Focus',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 D547',
|
||||||
|
'2013',
|
||||||
|
'9780470555156',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
32,
|
||||||
|
'Think Python',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 D694',
|
||||||
|
'2012',
|
||||||
|
'9781449330729',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
33,
|
||||||
|
'Problem Solving with Algorithms and Data Structures Using Python',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 M54',
|
||||||
|
'2011',
|
||||||
|
'9781590282571',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
34,
|
||||||
|
'Python Testing Beginner''s Guide: An Easy and Convenient Approach to Testing Your Python Projects',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 A73',
|
||||||
|
'2010',
|
||||||
|
'9781847198846',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
35,
|
||||||
|
'Mathematics for the Digital Age and Programming in Python',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 L58',
|
||||||
|
'2010',
|
||||||
|
'9780982477540',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
36,
|
||||||
|
'Python Testing Cookbook over 70 Simple but Incredibly Effective Recipes for Taking Control of Automated Testing Using Powerful Python Testing Tools',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'P98 T87',
|
||||||
|
'2011',
|
||||||
|
'9781849514668',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
37,
|
||||||
|
'The SQL Guide to SQLite',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'S67 L3617',
|
||||||
|
'2009',
|
||||||
|
'9780557076765',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
38,
|
||||||
|
'The Definitive Guide to Sqlite, Second Edition',
|
||||||
|
'QA',
|
||||||
|
76.73,
|
||||||
|
'S67 A45',
|
||||||
|
'2010eb',
|
||||||
|
'9781430232254',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
39,
|
||||||
|
'Test-Driven Development: A Practical Guide',
|
||||||
|
'QA',
|
||||||
|
76.76,
|
||||||
|
'D47 A783',
|
||||||
|
'2003',
|
||||||
|
'9780131016491',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
40,
|
||||||
|
'Clean Code: A Handbook of Agile Software Craftsmanship',
|
||||||
|
'QA',
|
||||||
|
76.76,
|
||||||
|
'D47 C583',
|
||||||
|
'2009',
|
||||||
|
'9780132350884',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
41,
|
||||||
|
'Learning the Vi Editor',
|
||||||
|
'QA',
|
||||||
|
76.76,
|
||||||
|
'O63 L355',
|
||||||
|
'1990',
|
||||||
|
'9780937175675',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
42,
|
||||||
|
'The UNIX-Haters Handbook',
|
||||||
|
'QA',
|
||||||
|
76.76,
|
||||||
|
'O63 U54518',
|
||||||
|
'1994',
|
||||||
|
'9781568842035',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
43,
|
||||||
|
'Test-Driven Development: By Example',
|
||||||
|
'QA',
|
||||||
|
76.76,
|
||||||
|
'T48 B43',
|
||||||
|
'2003',
|
||||||
|
'9780321146533',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
44,
|
||||||
|
'Assembly Language for x86 Processors: Sixth Edition',
|
||||||
|
'QA',
|
||||||
|
76.8,
|
||||||
|
'I77',
|
||||||
|
'2011',
|
||||||
|
'9780136022121',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
45,
|
||||||
|
'Data Structure and Algorithmic Thinking with Python',
|
||||||
|
'QA',
|
||||||
|
76.9,
|
||||||
|
'A43 K368',
|
||||||
|
'2016',
|
||||||
|
'9788192107592',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
46,
|
||||||
|
'Data Structures and Algorithms with Python',
|
||||||
|
'QA',
|
||||||
|
76.9,
|
||||||
|
'D35',
|
||||||
|
'',
|
||||||
|
'9783319130712',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
47,
|
||||||
|
'Data Structures and Algorithms',
|
||||||
|
'QA',
|
||||||
|
76.9,
|
||||||
|
'D35 A38',
|
||||||
|
'1982',
|
||||||
|
'0201000237',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
48,
|
||||||
|
'Discrete Mathematics',
|
||||||
|
'QA',
|
||||||
|
76.9,
|
||||||
|
'M35 R67',
|
||||||
|
'1988',
|
||||||
|
'0132154277',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
49,
|
||||||
|
'Think Stats',
|
||||||
|
'QA',
|
||||||
|
276.4,
|
||||||
|
'D69',
|
||||||
|
'2014',
|
||||||
|
'9781491907337',
|
||||||
|
'shelf'
|
||||||
|
);
|
||||||
|
INSERT INTO Books VALUES(
|
||||||
|
50,
|
||||||
|
'Think Bayes',
|
||||||
|
'QA',
|
||||||
|
279.5,
|
||||||
|
'D69',
|
||||||
|
'2013',
|
||||||
|
'9781449370787',
|
||||||
|
'shelf'
|
||||||
|
);
|
@ -0,0 +1,12 @@
|
|||||||
|
DROP TABLE IF EXISTS Books;
|
||||||
|
|
||||||
|
CREATE TABLE Books (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
class TEXT NOT NULL,
|
||||||
|
subclass REAL NOT NULL,
|
||||||
|
cutter TEXT,
|
||||||
|
suppl TEXT,
|
||||||
|
isbn TEXT,
|
||||||
|
stat TEXT NOT NULL
|
||||||
|
);
|
@ -0,0 +1,38 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Arlington Career Center CS / ICT Library</title>
|
||||||
|
<style>
|
||||||
|
@import url(../main.css);
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Arlington Career Center CS / ICT Library</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<nav>
|
||||||
|
<a href="book_list.php">Browse Books</a>
|
||||||
|
</nav>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
$dir = 'sqlite:database/acclib.db';
|
||||||
|
$dbh = new PDO($dir) or die("Cannot open the database");
|
||||||
|
$query = "SELECT * FROM Books";
|
||||||
|
foreach ($dbh->query($query) as $row)
|
||||||
|
{
|
||||||
|
echo $row[0] . ' ' . substr($row[1], 0, 75) . "\n";
|
||||||
|
}
|
||||||
|
$dbh = null; //This is how you close a PDO connection
|
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
phpinfo();
|
@ -0,0 +1,16 @@
|
|||||||
|
main {
|
||||||
|
margin: 30px;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px dotted #555;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a, a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
@ -0,0 +1,40 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Learning PHP with TDD</title>
|
||||||
|
<style>
|
||||||
|
@import url(main.css);
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Learning PHP with TDD</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<h2>Projects</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="HeadFirst">Head First PHP & MySQL</a></li>
|
||||||
|
<li><a href="acclib">ACC CS / ICT Library</a></li>
|
||||||
|
</ul>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,15 @@
|
|||||||
|
main {
|
||||||
|
margin: 30px;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px dotted #555;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a, a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1></h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="vLinks">
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var loc = window.location.href;
|
||||||
|
|
||||||
|
var linkStr = '<a href="http://validator.w3.org/check?uri=';
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '">\n<strong> HTML </strong> Valid! </a> |';
|
||||||
|
linkStr +=' <a href="http://jigsaw.w3.org/css-validator/validator?uri='
|
||||||
|
linkStr += loc;
|
||||||
|
linkStr += '?profile=css3">\n<strong> CSS </strong> Valid! </a>'
|
||||||
|
console.log(linkStr);
|
||||||
|
|
||||||
|
var footer = document.getElementById("vLinks");
|
||||||
|
console.log(footer);
|
||||||
|
footer.innerHTML = linkStr;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue