MAD Study Hub

Glossary

386 words, each explained the plain way. Press / to search.

. 2 3 4 5 = A B C D E F G H I J K L M N O P Q R S T U V W X

.

.gitignore MAD1 wk 11
A file listing files Git should not track, such as virtual environments and secrets.

2

200 OK MAD1 wk 1
The request succeeded and the response carries the result.
201 Created MAD1 wk 7
The request succeeded and a new resource was created.
204 No Content MAD1 wk 7
The request succeeded but there is nothing to send back.

3

301 Moved Permanently MAD1 wk 1
The resource now lives at a new URL for good, and clients should use the new one from now on.
302 Found MAD1 wk 3
A temporary redirect to another URL; Flask redirect() sends this by default.
304 Not Modified MAD2 wk 11
The cached copy is still valid, so the server sends no body.

4

400 Bad Request MAD1 wk 7
The server cannot understand the request because it is malformed or has invalid data.
401 Unauthorized MAD1 wk 9
The client is not authenticated, meaning it has not proved who it is.
403 Forbidden MAD1 wk 9
The server knows who you are but you are not allowed to do this.
404 Not Found MAD1 wk 3
The server has no resource at that URL.
405 Method Not Allowed MAD1 wk 3
The URL exists but does not accept the method used, such as POST on a GET-only route.
409 Conflict MAD1 wk 7
The request clashes with the current state of the resource, such as creating a duplicate.
429 Too Many Requests MAD2 wk 11
The client has sent too many requests in a given time and is being rate limited.

5

500 Internal Server Error MAD1 wk 3
The server hit an unexpected problem such as an unhandled exception in the code.
502 Bad Gateway MAD1 wk 12
A proxy such as nginx got an invalid answer from the application server behind it.
503 Service Unavailable MAD1 wk 12
The server cannot handle the request right now, for example because it is overloaded or down.

=

== and === MAD2 wk 1
== compares after converting types, while === compares value and type with no conversion, so === is safer.

A

Access token MAD2 wk 9
A short-lived token used to call the API.
Access-Control-Allow-Origin MAD2 wk 9
A response header that names the origins permitted to read the response.
Accessibility (a11y) MAD1 wk 10
Designing pages so people with disabilities, such as blind users with screen readers, can use them.
ACID MAD1 wk 5
Four promises of reliable transactions: Atomicity, Consistency, Isolation and Durability.
Action MAD2 wk 8
A Vuex function that may do asynchronous work such as API calls and then commits mutations.
addEventListener MAD2 wk 1
A method that attaches a function to run when a given event happens on an element.
Aggregate function MAD1 wk 4
A function like COUNT, SUM, AVG, MIN or MAX that turns many rows into one value.
AJAX MAD1 wk 11
Updating part of a page with data fetched in the background, without reloading the whole page.
alt text MAD1 wk 10
The alt attribute on an image that describes it in words for screen readers or when the image fails to load.
API MAD1 wk 7
Application Programming Interface, a defined way for one program to ask another to do something or give data.
API design MAD2 wk 10
Planning an API's URLs, methods, inputs, outputs and errors so it is clear, consistent and easy to use.
API versioning MAD2 wk 10
Keeping old and new forms of an API available, for example /api/v1/, so existing clients keep working when it changes.
Application context MAD1 wk 5
Flask's way of making app-level objects, like the current app and database, available while handling a request or command.
Application factory MAD1 wk 3
A function that builds and returns a configured Flask app, making testing and setup easier.
ARIA MAD1 wk 10
A set of attributes like aria-label and role that give assistive technology extra meaning about elements.
Arrow function MAD2 wk 1
A short function written (x) => x * 2 that does not have its own this.
assert MAD1 wk 9
A statement that fails the test if its condition is false.
Association table MAD1 wk 5
A table that holds two foreign keys to connect rows in a many-to-many relationship.
async function MAD2 wk 3
A function marked async that always returns a promise and may use await inside.
Asynchronous MAD2 wk 3
Code that starts a task and carries on, handling the result later when it finishes.
Attribute MAD1 wk 1
Extra information inside a start tag, written as name="value", like href or class.
Authentication MAD1 wk 9
Checking who a user is, for example with a password.
Authorization MAD1 wk 9
Deciding what an already identified user is allowed to do.
Auto-escaping MAD1 wk 3
Jinja2 turns characters like < into safe text by default so user input cannot run as HTML or script.
await MAD2 wk 3
A keyword that pauses an async function until a promise settles and then gives its value.
Axios MAD2 wk 8
A JavaScript library for making HTTP requests that returns promises, often used with Vue.

B

B-tree MAD1 wk 8
A balanced tree structure that databases commonly use for indexes, allowing fast search and ordered reading.
Background job MAD2 wk 10
A task that runs outside the web request so the user does not wait for it.
Bearer token MAD2 wk 9
A token sent in the header Authorization: Bearer <token>, where whoever holds it is trusted.
Block element MAD1 wk 2
An element like <div> or <p> that starts on a new line and takes the full width.
Blueprint MAD1 wk 3
A Flask feature that groups related routes and templates into a reusable part of an app.
Bootstrap MAD1 wk 2
A popular CSS and JavaScript library with ready-made classes and components for building responsive pages quickly.
Bootstrap grid MAD1 wk 2
A 12-column layout system using container, row and col-* classes.
Bottleneck MAD2 wk 11
The slowest part of a system, which limits the speed of the whole.
Box model MAD1 wk 2
The idea that each element is a box made of content, padding, border and margin.
Branch MAD1 wk 11
A separate line of development in Git, letting you try changes without touching the main code.
Broker MAD2 wk 10
In Celery, the service that carries task messages from the app to workers.
Browser MAD1 wk 1
A program that sends HTTP requests and displays HTML, CSS and JavaScript results as pages.
Browser cache MAD2 wk 11
Files the browser keeps locally so it need not download them again.

C

Cache hit MAD2 wk 11
A request found in the cache, which is fast.
Cache invalidation MAD2 wk 11
Removing or updating cached data when the original data changes so users do not see stale values.
Cache miss MAD2 wk 11
A request not found in the cache, so the data must be fetched or computed.
Cache-Control MAD2 wk 11
An HTTP header that tells browsers and proxies how long and whether to cache a response.
Caching MAD2 wk 11
Keeping a copy of a result so it can be reused instead of being worked out again.
Call stack MAD2 wk 3
The list of functions currently running; the one on top runs first.
Callback MAD2 wk 2
A function passed to another function to be called later.
Callback URL MAD2 wk 11
The address you give a service so it can send you a webhook request.
Candidate key MAD1 wk 4
Any column or set of columns that could uniquely identify a row; one of them is chosen as the primary key.
Cardinality MAD1 wk 4
How many instances of one entity can relate to instances of another: one-to-one, one-to-many or many-to-many.
Cascade MAD1 wk 2
The rules a browser uses to pick a winning style from many sources, using origin, specificity and order.
CDN MAD1 wk 2
A Content Delivery Network, a group of servers around the world that deliver files such as Bootstrap or Vue quickly from a nearby location.
Celery MAD2 wk 10
A Python library that runs background tasks on separate worker processes.
Celery beat MAD2 wk 10
A scheduler that sends tasks to the queue at set times, such as every night.
Celery task MAD2 wk 10
A Python function marked with @celery.task that can be run in the background by a worker.
Character encoding MAD1 wk 10
The rule that turns characters into bytes and back, which is why a wrong one produces garbled text.
Class (JavaScript) MAD2 wk 2
A cleaner syntax for making objects with a constructor and methods, built on prototypes.
Class selector MAD1 wk 2
A selector written with a dot, like .card, that matches every element with that class.
Client MAD1 wk 1
The program (usually a browser) that sends a request and shows the response to the user.
Client-server model MAD1 wk 1
A design where clients ask for things and servers answer, so work is split between the two.
Client-side rendering MAD2 wk 4
Building the HTML in the browser with JavaScript from data, instead of on the server.
Closure MAD2 wk 2
A function that remembers the variables from the place it was created, even after that place has finished running.
Commit MAD1 wk 5
Making the changes of a transaction permanent in the database.
Commit (Git) MAD1 wk 11
A saved snapshot of your tracked files with a message describing the change.
commit and dispatch MAD2 wk 8
In Vuex, commit triggers a mutation and dispatch triggers an action.
Component MAD2 wk 6
A reusable piece of interface with its own template, data and logic.
Computed property MAD2 wk 5
A value worked out from other data that is cached and recomputed only when what it uses changes.
Constraint MAD1 wk 4
A rule the database enforces on data, such as NOT NULL, UNIQUE, primary key or foreign key.
Container MAD1 wk 12
A light, isolated running package of an app and its dependencies that shares the host's operating system.
Content-Type MAD1 wk 1
A header that names the format of the body, such as text/html or application/json.
CORS MAD2 wk 9
Cross-Origin Resource Sharing, a way for a server to tell the browser that certain other origins may read its responses.
CORS preflight MAD2 wk 9
An automatic OPTIONS request the browser sends before certain cross-origin requests to ask if the real one is allowed.
created MAD2 wk 6
A lifecycle hook that runs after data is set up but before the component is shown on the page.
Crontab MAD2 wk 10
A schedule format using minute, hour, day and month fields, also available in Celery beat.
CRUD MAD1 wk 7
Create, Read, Update, Delete, the four basic actions on data, mapping to POST, GET, PUT or PATCH, and DELETE.
CSRF MAD1 wk 9
Cross-Site Request Forgery, an attack that tricks a logged-in user's browser into sending an unwanted request to a site.
CSRF token MAD1 wk 9
A secret random value placed in a form and checked by the server to prove the request came from the real page.
CSS MAD1 wk 2
Cascading Style Sheets, the language that controls how HTML looks, such as colours, fonts and layout.
CSS Grid MAD1 wk 2
A CSS layout system that places items in rows and columns of a two-dimensional grid.
CSV MAD2 wk 12
Comma-Separated Values, a plain text format where each line is a row and commas separate the columns.
Custom event MAD2 wk 6
An event a child sends up to its parent using this plus the emit method.

D

Data property MAD2 wk 5
A value in the data option of Vue that is made reactive.
Data type MAD1 wk 4
The kind of value a column holds, such as INTEGER, TEXT or REAL.
Data types (JavaScript) MAD2 wk 1
The basic kinds of value: number, string, boolean, null, undefined, symbol, bigint and object.
Database MAD1 wk 4
An organised store of data that can be searched and changed efficiently.
db.Column MAD1 wk 5
The way to declare a table column on a model class, giving its type and options.
db.Model MAD1 wk 5
The base class in Flask-SQLAlchemy that you extend to make a model class mapped to a table.
db.relationship MAD1 wk 5
A function that lets a model reach related rows as Python attributes without writing the join by hand.
db.session MAD1 wk 5
The object that collects changes to models and sends them to the database on commit().
DBMS MAD1 wk 4
Database Management System, software that stores, manages and retrieves data in a database.
Debug mode MAD1 wk 3
A Flask setting that reloads the server on code change and shows a detailed error page; it must never be on in production.
Debugging MAD1 wk 6
Finding and fixing mistakes in code.
Decorator MAD1 wk 3
A Python feature written with @ above a function that wraps it to add behaviour, such as @app.route.
delay() MAD2 wk 10
A method on a Celery task that sends it to the queue to run later.
DELETE MAD1 wk 7
A method that removes a resource.
Deployment MAD1 wk 12
Putting an app on a server so real users can use it.
Deserialisation MAD1 wk 7
Turning received text or bytes, such as JSON, back into an object.
destroyed MAD2 wk 6
A Vue 2 lifecycle hook that runs after a component is removed, a good place to clean up timers.
Destructuring MAD2 wk 1
Pulling values out of arrays or objects into variables, like const {a, b} = obj.
Directive MAD2 wk 5
A special attribute starting with v- that tells Vue to do something to an element.
DNS MAD1 wk 1
The Domain Name System, which turns domain names into IP addresses.
Docker MAD1 wk 12
A tool that packs an app and everything it needs into a container so it runs the same everywhere.
DOCTYPE MAD1 wk 1
The first line <!DOCTYPE html> that tells the browser to treat the page as modern HTML5.
DOM MAD2 wk 1
The Document Object Model, the browser's tree of objects that represents a page and that JavaScript can read and change.
Domain name MAD1 wk 1
A human-friendly name like example.com that stands in for a numeric IP address.
Dynamic route MAD1 wk 3
A route with a variable part like /user/<int:id> whose value is passed to the view function.

E

ECMAScript MAD2 wk 1
The official standard that JavaScript follows; ES6 (2015) added let, const, arrow functions and classes.
emit MAD2 wk 6
A Vue method a child uses to trigger a named event, optionally with data, that the parent listens to.
Endpoint MAD1 wk 7
One URL, together with its allowed methods, where an API accepts requests.
Entity MAD1 wk 4
A thing we want to store data about, such as a student or a course.
Environment variable MAD1 wk 12
A named value outside the code, such as a secret key, that a program can read when it runs.
ER diagram MAD1 wk 4
A drawing of a database design showing entities, their attributes and the relationships between them.
Error handler MAD1 wk 3
A function marked with @app.errorhandler that makes a custom response for an error code.
Escaping MAD1 wk 9
Turning special characters into harmless text so they are not treated as code.
ETag MAD2 wk 11
A response header holding an identifier of a version of a resource, used to check if cached copies are still current.
Event (DOM) MAD2 wk 1
Something that happens in the page, such as a click or key press, that code can react to.
Event bubbling MAD2 wk 2
An event first fires on the clicked element and then moves up through its parents.
Event delegation MAD2 wk 2
Putting one listener on a parent to handle events from many children, using bubbling.
Event loop MAD2 wk 3
The mechanism that takes finished tasks from queues and runs them when the call stack is empty, letting single-threaded JavaScript do async work.
Event modifier MAD2 wk 5
A suffix like .prevent or .stop on v-on that changes how an event is handled.
EventSource MAD2 wk 11
The browser object that opens an SSE connection and receives its events.

F

fetch MAD1 wk 11
A browser function that sends an HTTP request and returns a promise of the response.
Fixture MAD1 wk 9
A pytest function marked @pytest.fixture that prepares things like a test client or database for tests.
flash message MAD1 wk 3
A one-time message stored in the session by flash() and shown on the next page.
Flask MAD1 wk 3
A small Python web framework for building web apps and APIs.
Flask session MAD1 wk 9
Flask's session object, which stores data in a signed cookie that the user can read but not change without the secret key.
Flask-Caching MAD2 wk 11
A Flask extension that adds caching to views and functions, with Redis as one possible backend.
Flask-CORS MAD2 wk 9
A Flask extension that adds CORS headers to responses.
Flask-JWT-Extended MAD2 wk 9
A Flask extension for making and checking JWTs.
Flask-Migrate MAD1 wk 11
A Flask extension that uses Alembic to track and apply changes to the database schema.
Flask-RESTful MAD1 wk 7
A Flask extension that helps build REST APIs using classes, one method per HTTP verb.
Flask-Security MAD1 wk 9
A Flask extension that adds login, registration, roles and password hashing.
Flask-SQLAlchemy MAD1 wk 5
A Flask extension that connects SQLAlchemy to a Flask app with simple setup.
Flexbox MAD1 wk 2
A CSS layout system, turned on with display: flex, that arranges items in a row or column and shares space between them.
Foreign key MAD1 wk 4
A column that holds the primary key of a row in another table, linking the two tables.
Form MAD1 wk 2
The <form> element that groups input fields and sends their values to the server with a chosen method and action.

G

GET MAD1 wk 1
A method that asks for a resource and should not change anything on the server.
Getter MAD2 wk 8
A Vuex function that works out a value from the state, like a computed property for the store.
Git MAD1 wk 11
A tool that records versions of your files so you can see history, undo changes and work with others.
GitHub MAD1 wk 11
A website that hosts Git repositories online for sharing and teamwork.
Google Chat webhook MAD2 wk 11
A URL that lets a program post a message into a Google Chat space using an HTTP POST.
GROUP BY MAD1 wk 4
A SQL clause that bundles rows with the same value so aggregate functions can work on each bundle.
gunicorn MAD1 wk 12
A production Python WSGI server that runs several worker processes to handle requests.

H

Hash function MAD1 wk 9
A function that turns any input into a fixed-size value that cannot practically be reversed.
Hash mode and history mode MAD2 wk 7
Vue Router ways to make URLs; hash mode uses # in the URL, while history mode makes normal URLs and needs server support.
Hashing vs encryption MAD1 wk 9
Hashing is one-way and cannot be undone, while encryption can be reversed with a key.
HAVING MAD1 wk 4
A SQL clause that filters groups after GROUP BY, whereas WHERE filters rows before grouping.
Higher-order function MAD2 wk 2
A function that takes another function as input or returns one, such as map and filter.
Hoisting MAD2 wk 2
JavaScript's moving of declarations to the top of their scope before running; var and function declarations are hoisted, while let and const stay unusable until declared.
HTML MAD1 wk 1
HyperText Markup Language, the language that describes the structure and content of a web page using tags.
HTML5 MAD1 wk 10
The current version of HTML, which added semantic tags, audio, video, canvas and new form inputs.
HTTP MAD1 wk 1
HyperText Transfer Protocol, the set of rules a client and server follow to exchange requests and responses on the web.
HTTP header MAD1 wk 1
A name: value line in a request or response that carries extra information such as content type or cookies.
HTTP method MAD1 wk 1
The verb in a request (GET, POST, PUT, PATCH, DELETE) that says what action the client wants.
HttpOnly MAD1 wk 9
A cookie flag that stops JavaScript from reading the cookie, which reduces damage from XSS.
HTTPS MAD1 wk 1
HTTP sent over an encrypted TLS connection so others cannot read or change the data on the way.

I

ID selector MAD1 wk 2
A selector written with a hash, like #header, that matches the one element with that id.
Idempotency key MAD2 wk 10
A unique value sent with a request so a repeated try is recognised and does not do the action twice.
Idempotent MAD1 wk 7
Describes an operation that gives the same end result whether you do it once or many times; GET, PUT and DELETE are idempotent, POST is not.
In-memory database MAD2 wk 10
A database that keeps data in RAM, which is fast but may lose data if not saved to disk.
Index MAD1 wk 8
An extra data structure on one or more columns that lets the database find rows quickly without scanning the whole table.
IndexedDB MAD2 wk 4
A browser database for storing larger amounts of structured data.
Inheritance (CSS) MAD1 wk 2
When a child element takes some property values, such as color and font-family, from its parent.
Inline element MAD1 wk 2
An element like <span> or <a> that stays inside the line of text and takes only the width it needs.
Input element MAD1 wk 2
The <input> tag, which makes a field such as text, password, checkbox or file, depending on its type.
Input validation MAD1 wk 9
Checking that data from users has the right type, size and form before using it.
Integration test MAD1 wk 9
A test that checks that several parts, such as a route and the database, work together.
Inverted index MAD1 wk 8
A list that maps each word to the documents containing it, the core idea behind full-text search.

J

JavaScript MAD2 wk 1
The programming language that runs in browsers (and in Node.js) to make pages interactive.
Jinja filter MAD1 wk 3
A function applied to a value with a pipe, like {{ name|upper }}.
Jinja2 MAD1 wk 3
The templating engine used by Flask that lets HTML files contain variables, loops and conditions.
JOIN MAD1 wk 4
A SQL operation that combines rows from two tables using a related column.
JSON MAD1 wk 7
JavaScript Object Notation, a light text format of keys and values used to send data between programs.
JSON.parse MAD1 wk 11
Turns a JSON string into a JavaScript value.
JSON.stringify MAD1 wk 11
Turns a JavaScript value into a JSON string.
jsonify MAD1 wk 7
A Flask function that turns Python data into a JSON response with the right content type.
JWT MAD2 wk 9
JSON Web Token, a signed token with header, payload and signature that carries claims such as the user ID.
JWT signature MAD2 wk 9
The part of a JWT made with a secret or private key that proves the token was not changed.

K

key attribute MAD2 wk 5
A unique :key given to items in v-for so Vue can track and reuse elements properly.
Key-value store MAD2 wk 10
A database that saves each value under a unique key and fetches it by that key.

L

Latency MAD2 wk 11
The time it takes to get a response to a request.
Left join MAD1 wk 4
A join that keeps every row from the left table and fills with NULL where the right table has no match.
Lifecycle hook MAD2 wk 6
A function Vue calls at set stages of a component's life, such as created, mounted, updated and destroyed.
Load balancer MAD1 wk 12
A server that spreads incoming requests over several copies of an app.
Load testing MAD2 wk 11
Sending many requests to an app on purpose to see how it behaves under heavy use.
localhost MAD1 wk 3
A name for your own computer, pointing to the IP address 127.0.0.1.
localStorage MAD2 wk 4
Browser storage that keeps string data with no expiry until it is cleared, for one site.
Log level MAD1 wk 6
A label for how serious a message is: DEBUG, INFO, WARNING, ERROR or CRITICAL.
Logging MAD1 wk 6
Writing messages about what a program is doing to a file or screen so problems can be traced later.
login_required MAD1 wk 9
A decorator that blocks a route unless the user is logged in.

M

MailHog MAD2 wk 12
A local fake mail server that catches emails during development so none go out for real.
Many-to-many MAD1 wk 4
A relationship where rows on both sides can match many on the other, stored using a third link table.
map, filter, reduce MAD2 wk 2
Array methods that transform every item, keep matching items, or combine all items into one value.
marshal_with MAD1 wk 7
A Flask-RESTful decorator that shapes the returned object into a fixed set of output fields.
Media query MAD1 wk 2
A CSS @media rule that applies styles only when conditions such as screen width are met.
Merge MAD1 wk 11
Combining the changes from one Git branch into another.
Merge conflict MAD1 wk 11
A clash when two branches changed the same lines and Git needs a person to choose.
Message broker MAD2 wk 10
A middleman, such as Redis or RabbitMQ, that holds task messages from the app until a worker takes them.
Methods MAD2 wk 5
Functions in the methods option of Vue that can be called from templates and events.
Microtask queue MAD2 wk 3
A higher-priority queue for promise callbacks, which runs before the next ordinary task.
Migration MAD1 wk 11
A saved step that changes a database schema, such as adding a column, which can be applied or undone.
Minification MAD2 wk 7
Removing spaces and shortening names in code to make files smaller without changing behaviour.
Module (ES module) MAD2 wk 2
A JavaScript file that shares code using export and loads it using import.
Module (Vuex) MAD2 wk 8
A part of the Vuex store with its own state, getters, mutations and actions, used to split a big store.
mounted MAD2 wk 6
A lifecycle hook that runs after the component has been put on the page and its element can be used.
Mustache interpolation MAD2 wk 5
Showing data in a Vue template with double curly braces like {{ message }}.
Mutation MAD2 wk 8
A Vuex function that is the only way to change state, and it must be synchronous.
MVC MAD1 wk 3
Model-View-Controller, a way of splitting an app into data (model), what the user sees (view) and the logic joining them (controller).

N

Named slot MAD2 wk 6
A slot with a name so a parent can fill different places in a component.
nginx MAD1 wk 12
A fast web server often placed in front of an app to serve static files and pass other requests along.
Normalisation MAD1 wk 4
Organising tables to cut repeated data and avoid update mistakes by splitting them in a careful way.
npm MAD2 wk 7
The Node Package Manager, a tool and registry for installing JavaScript packages.
NULL MAD1 wk 4
A special marker meaning a value is missing or unknown; it is not zero or an empty string.

O

One-to-many MAD1 wk 4
A relationship where one row on one side matches many rows on the other, such as one teacher and many classes.
OpenAPI MAD1 wk 7
A standard format, usually YAML, for describing an API's endpoints, inputs and outputs so tools can read it.
OPTIONS MAD2 wk 9
A method that asks the server which methods or cross-origin actions are allowed; browsers use it for CORS preflight.
Origin MAD2 wk 9
The combination of scheme, host and port of a URL; if any differs, the origin is different.
ORM MAD1 wk 5
Object-Relational Mapper, a tool that lets you use Python classes and objects instead of writing SQL for tables and rows.

P

package.json MAD2 wk 7
A file in a JavaScript project that lists its name, scripts and dependencies.
Parameterised query MAD1 wk 9
A query where values are passed separately from the SQL text, so inputs cannot change the query's meaning.
Password hashing MAD1 wk 9
Storing a one-way scrambled form of a password instead of the password itself.
PATCH MAD1 wk 7
A method that changes only some fields of a resource.
Performance measurement MAD2 wk 11
Measuring how fast an app is, for example response time and throughput, before and after changes.
Periodic task MAD2 wk 10
A task that is run again and again on a schedule, set up with Celery beat.
Polling MAD2 wk 11
The client asking the server again and again at intervals whether there is new data.
Port MAD1 wk 1
A number that tells a computer which program should receive incoming data; HTTP uses 80 and HTTPS uses 443 by default.
POST MAD1 wk 1
A method that sends data to the server, usually to create something or trigger an action.
Post/Redirect/Get MAD1 wk 3
A pattern where a POST handler redirects to a GET page so refreshing does not resubmit the form.
Primary key MAD1 wk 4
A column or set of columns whose values uniquely identify each row and are never empty.
Principle of least privilege MAD1 wk 9
Giving a user or program only the permissions it really needs.
Production MAD1 wk 12
The live setting where real users use the app, as opposed to development or testing.
Progressive Web App (PWA) MAD2 wk 4
A web app that can be installed, work offline and send notifications, using a manifest and a service worker.
Promise MAD2 wk 3
An object standing for a value that will arrive later, which ends as fulfilled or rejected.
Promise.all MAD2 wk 3
Waits for all promises to succeed and gives their results as an array, or fails as soon as one fails.
Props MAD2 wk 6
Data a parent passes down to a child component, which the child should not change.
Props drilling MAD2 wk 8
Passing data through many layers of components just to reach a deep one, which a store avoids.
Prototype MAD2 wk 2
The object another object borrows properties and methods from, forming the prototype chain.
Push and pull MAD1 wk 11
Push sends your commits to a remote repository; pull brings others' commits to you.
PUT MAD1 wk 7
A method that replaces a whole resource with the data sent; repeating it gives the same result.
pytest MAD1 wk 9
A Python testing tool that runs functions named test_* and checks them with plain assert statements.

Q

Query (SQLAlchemy) MAD1 wk 5
An object, such as User.query.filter_by(...), used to fetch rows as model objects.
Query string MAD1 wk 1
The part of a URL after ? that carries key=value pairs separated by &.

R

Race condition MAD2 wk 10
A bug where the result depends on the unpredictable order of steps that run at the same time.
Rate limiting MAD2 wk 11
Capping how many requests a client may make in a period to protect the server.
RBAC MAD1 wk 9
Role-Based Access Control, where permissions are given to roles such as admin or user and users get roles.
Reactivity MAD2 wk 5
Vue's ability to notice changes in data and update the page automatically.
Redirect MAD1 wk 3
A response that tells the browser to go to a different URL.
redirect MAD1 wk 3
A Flask function that tells the browser to go to another URL.
Redis MAD2 wk 10
A very fast in-memory data store used for caching, queues and counters.
Refresh token MAD2 wk 9
A longer-lived token used to get a new access token without logging in again.
Relational database MAD1 wk 4
A database that keeps data in tables of rows and columns connected by keys.
Relationship MAD1 wk 4
A link between two entities, such as a student enrolling in a course.
render_template MAD1 wk 3
A Flask function that fills a Jinja2 template with data and returns the finished HTML.
Report generation MAD2 wk 12
Collecting data and turning it into a document such as a PDF or CSV, usually in a background job.
reqparse MAD1 wk 7
A Flask-RESTful helper for declaring and checking the inputs a request must have.
Request MAD1 wk 1
A message from a client to a server that has a method, a URL, headers and sometimes a body.
Request body MAD1 wk 1
The data a client sends along with a request, such as form fields or JSON.
request object MAD1 wk 3
The Flask object that holds details of the current request such as form, args, json and method.
requirements.txt MAD1 wk 3
A file listing the Python packages and versions a project needs.
Resource MAD1 wk 7
A thing an API exposes, such as a user or a book, identified by a URL.
Resource class MAD1 wk 7
A Flask-RESTful class with methods like get and post, attached to a URL by api.add_resource.
Response MAD1 wk 1
The message a server sends back, with a status code, headers and usually a body.
Response.json() MAD1 wk 11
A method that reads a fetch response body and parses it as JSON, returning a promise.
Responsive design MAD1 wk 2
Building pages that adjust their layout to fit phones, tablets and desktops.
REST MAD1 wk 7
Representational State Transfer, a style for designing web APIs around resources, URLs and standard HTTP methods.
RESTful API MAD1 wk 7
An API that follows REST ideas, such as stateless requests and resources identified by URLs.
Result backend MAD2 wk 10
A place where Celery stores task results and status so they can be read later.
Reverse proxy MAD1 wk 12
A server that receives client requests and forwards them to another server behind it.
Rollback MAD1 wk 5
Undoing the changes of a transaction that has not been committed.
Route MAD1 wk 3
A rule linking a URL path to a Python function, made in Flask with @app.route.
Route params MAD2 wk 7
Variable parts of a Vue route such as /user/:id, read with the current route object.
router-view MAD2 wk 7
A Vue Router component that shows the component matching the current route.

S

Safe method MAD1 wk 7
A method that is only meant to read data and not change the server, such as GET and HEAD.
Salt MAD1 wk 9
Random data added to a password before hashing so equal passwords get different hashes.
Same-origin policy MAD2 wk 9
A browser rule that stops a page from reading responses from a different origin.
SameSite MAD2 wk 9
A cookie setting that limits when cookies are sent on cross-site requests, helping stop CSRF.
Scheduled job MAD2 wk 10
A task set to run on its own at fixed times without anyone starting it.
Schema MAD1 wk 4
The design of a database: its tables, columns, types and relationships.
Scope MAD2 wk 2
The part of the code where a variable can be used.
Screen reader MAD1 wk 10
Software that reads page content aloud for people who cannot see the screen.
SECRET_KEY MAD1 wk 9
A private value Flask uses to sign cookies and tokens; it must be kept secret.
Selector MAD1 wk 2
The part of a CSS rule that picks which elements to style, such as p, .box or #main.
Semantic HTML MAD1 wk 10
Using tags like <header>, <nav>, <main> and <footer> that describe the meaning of content, not just how it looks.
Serialisation MAD1 wk 7
Turning an object in memory into text or bytes, such as JSON, so it can be sent or stored.
Server MAD1 wk 1
A program or computer that waits for requests from clients and sends back responses.
Server-sent events (SSE) MAD2 wk 11
A way for a server to push a stream of text messages to the browser over one long-lived HTTP connection, one way only.
Server-side rendering MAD2 wk 4
Building the HTML on the server and sending the finished page to the browser.
Service worker MAD2 wk 4
A script that runs in the background of the browser, between the page and network, enabling offline use and caching.
Session MAD1 wk 9
Data the server remembers about one user across several requests, tied to that user by a session ID.
sessionStorage MAD2 wk 4
Browser storage that keeps string data only until that tab is closed.
setInterval MAD2 wk 3
A function that runs a callback again and again at a fixed interval until cleared.
setTimeout MAD2 wk 3
A function that runs a callback once after a delay.
Single file component MAD2 wk 7
A .vue file that holds a component's template, script and style together.
Single-page application (SPA) MAD2 wk 4
A web app that loads one page and then updates its content with JavaScript instead of loading new pages.
Slot MAD2 wk 6
A placeholder in a component's template where the parent can insert its own content.
SMTP MAD2 wk 12
Simple Mail Transfer Protocol, the protocol used to send email between servers.
Specificity MAD1 wk 2
The scoring that decides which CSS rule wins when several match; ID beats class, and class beats element.
SQL MAD1 wk 4
Structured Query Language, the language for creating, reading, changing and deleting data in relational databases.
SQL injection MAD1 wk 9
An attack where a user types SQL into an input so it changes your query; stopped by parameterised queries or an ORM.
SQLAlchemy MAD1 wk 5
A Python library with an ORM and a toolkit for working with SQL databases.
SQLite MAD1 wk 4
A lightweight relational database that stores everything in a single file and needs no separate server.
Stack trace MAD1 wk 6
The list of function calls shown when an error occurs, helping you find where it came from.
Stale data MAD2 wk 11
Old cached data that no longer matches the real data.
State (Vuex) MAD2 wk 8
The single object in the Vuex store that holds the shared data.
Stateless MAD1 wk 7
Describes a server that keeps no memory of earlier requests, so each request must carry everything needed to handle it.
Static file MAD1 wk 3
A file such as an image, CSS or JavaScript file that is sent as it is, kept in Flask's static folder.
Status code MAD1 wk 1
A three-digit number in a response that tells whether the request worked and why not if it failed.
Store MAD2 wk 8
The Vuex object that holds state, getters, mutations and actions.
Subquery MAD1 wk 4
A query written inside another query.
Swagger MAD1 wk 7
A set of tools built around OpenAPI, including a page for trying out API calls in the browser.
Synchronous MAD2 wk 3
Code that runs one step at a time, with each step waiting for the previous one.

T

Table MAD1 wk 4
A grid in a database made of rows and columns that holds one kind of data.
Task queue MAD2 wk 3
A waiting line of callbacks, such as timer callbacks, that run once the stack is empty.
Task queue (Celery) MAD2 wk 10
A list of jobs waiting for worker programs to pick them up and run them.
Template MAD1 wk 3
An HTML file with placeholders that get filled with real data before it is sent to the user.
Template (Vue) MAD2 wk 5
HTML with Vue syntax that describes what a component shows based on its data.
Template inheritance MAD1 wk 3
Making a base template with {% block %} areas that child templates fill in with {% extends %}.
Template literal MAD2 wk 1
A string in backticks that can include values with a dollar sign and braces and span many lines.
Temporal dead zone MAD2 wk 2
The time between entering a scope and the line where a let or const is declared, when using it throws an error.
Test client MAD1 wk 9
A Flask tool, app.test_client(), that sends fake requests to the app without running a server.
text/event-stream MAD2 wk 11
The content type a server uses to send server-sent events.
then, catch, finally MAD2 wk 3
Promise methods that handle success, handle failure, and run code in either case.
this MAD2 wk 2
A keyword whose value depends on how a function is called; arrow functions use the this of the code around them.
Throughput MAD2 wk 11
How many requests a system handles in a given time.
Token authentication MAD2 wk 9
Logging in once to get a token, then sending that token with each request instead of a password or session cookie.
Token expiry MAD2 wk 9
The time after which a token is no longer accepted, limiting harm if it is stolen.
Transaction MAD1 wk 5
A group of database steps that are treated as one unit and either all succeed or all are undone.
Truthy and falsy MAD2 wk 1
Values that act as true or false in a condition; falsy ones are false, 0, "", null, undefined and NaN.
try/catch with await MAD2 wk 3
The way to handle errors from awaited promises, with catch receiving a rejection.
TTL MAD2 wk 11
Time To Live, how long a cached item stays valid before it expires.

U

Unicode MAD1 wk 10
A standard that gives a unique number, called a code point, to every character in almost every writing system.
Unit test MAD1 wk 9
A small automatic test that checks one piece of code, such as one function.
updated MAD2 wk 6
A lifecycle hook that runs after changed data has caused the page to re-render.
URL MAD1 wk 1
The full address of a resource on the web, made of scheme, host, optional port, path, query string and fragment.
url_for MAD1 wk 3
A Flask function that builds a URL from a view function name so links do not break when routes change.
UTF-8 MAD1 wk 10
A way to store Unicode characters as bytes, using one to four bytes per character and one byte for plain English letters.

V

v-bind MAD2 wk 5
A directive that ties an attribute to data, often written as :, like :src="url".
v-else MAD2 wk 5
A directive used right after v-if that shows when the condition is false.
v-for MAD2 wk 5
A directive that repeats an element for each item of a list.
v-if MAD2 wk 5
A directive that adds or removes an element from the page depending on a condition.
v-model MAD2 wk 5
A directive that keeps a form input and a data property in sync both ways.
v-on MAD2 wk 5
A directive that listens to events, often written as @, like @click="save".
v-show MAD2 wk 5
A directive that hides or shows an element using CSS display, keeping it in the page.
View function MAD1 wk 3
The Python function that runs for a route and returns the response.
Viewport meta tag MAD1 wk 2
The tag <meta name="viewport" ...> that makes mobile browsers use the device width, needed for responsive pages.
Virtual DOM MAD2 wk 6
A light copy of the page structure in JavaScript that Vue compares with its earlier copy to change only what differs in the real DOM.
Virtual environment MAD1 wk 3
An isolated Python setup with its own installed packages for one project.
Vue CLI MAD2 wk 7
A command-line tool for creating and building Vue projects with a ready setup.
Vue instance MAD2 wk 5
The object made with new Vue({...}) that links data, methods and a page element.
Vue Router MAD2 wk 7
Vue's official library for showing different components for different URLs in a single-page app.
Vue.js MAD2 wk 5
A JavaScript framework for building user interfaces from reactive data and components.
Vuex MAD2 wk 8
Vue's official store library that keeps shared state for all components in one place.

W

Watcher MAD2 wk 5
A function in watch that runs when a chosen data property changes, good for side effects such as fetching.
Web MAD1 wk 1
A huge collection of pages and resources linked together and reached through browsers over the internet using URLs and HTTP.
Web app manifest MAD2 wk 4
A JSON file that gives an app's name, icons and colours so it can be installed on a device.
Web storage MAD2 wk 4
Browser storage for key-value data, made of localStorage and sessionStorage.
Webhook MAD2 wk 11
A way for one service to call a URL you provide when something happens, so you get told instead of asking again and again.
Webpack MAD2 wk 7
A tool that bundles many JavaScript, CSS and other files into a few files for the browser.
WebSocket MAD2 wk 11
A connection that stays open and lets client and server send messages to each other both ways at any time.
Worker MAD2 wk 10
A Celery process that takes tasks from the broker and runs them.
WSGI MAD1 wk 12
Web Server Gateway Interface, the Python standard for how a web server talks to a Python web app.

X

XSS MAD1 wk 9
Cross-Site Scripting, an attack where an attacker's script runs in other users' browsers, stopped by escaping output.