1. Understanding Software Development and Web Technologies Flashcards
Style of coding where functions are passed around as arguments and used to compose new functions
its’s focused on the evaluation of functions and expressions rather than on the statement of algorithms
Functional Programming
A sequence of instructions, each step telling the computer what to do
usually in sequential order thus breaking down the problem into smaller tasks and organizing the order of execution.
Procedural Programming
Organizes programs around objects that communicate with each other.
Objects are organized into classes that contain both data and the methods that manipulate that data.
Focused on creating reusable objects that can be used in other programs.
Object Oriented Code.
Software tool that translates a program’s source code into an equivalent executable form BEFORE it can be executed
Compiler
Software program that executes source code directly without prior compiling
Interpreter
Precompiled collections containing pre-written code that solves common programming tasks thus allowing devies to leverage EXISTING functionality rather than starting from scratch
Software Libraries
Tools such as Git enable developers to track and manage changes to their code and collaborate effectively with others.
Tracks changes made to files over time
Version Control System (VCS)
Assessing the quality, functionality and performance of a software app in order to identify defects, errors or vulnerabilities in the software to ensure its reliability, correctness and compliance with specified requirements
Software Testing.
Ensures that previously working functionality remains unnaffected after modification or bug fies and involves retesting existing test cases to verify that any changes did not introduce new defects or impact existing functionality.
Regression Testing
Employing specialized tools or frameworks to automate the execution of test cases thus improving efficiency, accuracy and repeatability of tests.
Suitable for repeitive or complex scenarios
Test Automation
Testing activities throughout the SDLC that involve automated testing, frequent feedback loops and early detection of issues thus enabling faster and more reliable software delivery
Continuous Testing
Procedural programming language know for its efficiency, low-level system acess and flexibility
suitable for system-level programming and embedded systems
C
An extension of the C programming language that introduces OOP features.
Combines low-level C control with additional features like classes, inheritance, polymorphism and templates
System Development
Game Development
Performance Critical apps
C++
Modern OOP developed by Microsoft that is designed for building wide range of apps on MS .NET framework including Windows desktop apps, web apps and games.
Incorporates features from
C++
Java
Strong integration with .NET platform
C# aka C sharp
Widely used general purpose OOP know for its platform independence and robustness.
Write Once - Run Anywhere: Java runs anywhere that has the Java Virtual Machine (Java Virtual Machine) installed.
Enterprise level applications
Android Apps
Web Applications
Java
Scripting language primarily used for front-end web development.
Enables interactive and dynamic behavior on web pages.
Runs on browsers and allows devies to manipulate web page elements, handle events, perform client side validations and interact with web APIs.
Javascript
High-level, versatile OOP known for simplicity, readability and ease of use.
Emphasizes code readability and offers extensive libraries
Web development
Data analysis
Scientific computing
AI
Automation
For code readability and productivity not known for performance
Python
Server-side scripting language widely used for web development and it is embedded within HTML code and executed on the server to generate dynamic web content.
Integrates well with databases and often used for building websites, content management systems and e-commerce platforms
PHP Hypertext Preprocessor
Tools like vim, nano, notepad++, Gedit on linux
Source code editors
Complex side of code editors that permit much deeper integration with debugging, versioning and collaboration tools
Intellij
VS
Eclipse
IDE - Integrated Development Environment
One of the most important standards for creating websites
HTTP - Hypertext Transfer Protocol
Designed to send coded requests to servers listening at remote addresses and then translate the data that comes back in response.
May encrypt data to protect us from malware and snooping.
Browser
A service that accepts requests from API clients much the same way that a website listens to browsers but the data is only accessible programatically.
Multiple computers to connect and exchange data at code level.
API - Application Programming Interface
API that uses standard HTTP methods like GET and POST to perform operations on resources identified by URL (Uniform Resource Locators)
REST - Representational State Transfer
REST APIs requests from a client to the server needs to contain all the necessary information to process that request.
The concept of STATELESS
Query language and runtime for APIs that allows clients to request specific data from a SINGLE endpoint by sending a query specifying the desired fields and their relationships.
GraphQL
Databases based on relational model that have predefined schemas and use the “___” language syntax for querying.
best suited for structured data and strong data consistency
SQLite
MySQL
MariaDB
PostgreSQL
SQL Databases
SQL
Database that offers flexibility in data models, scale horizontallay and are suitable for unstructured or semi-structured data.
prioritize scalability, high output and rapid development over strict data consistency.
MongoDB
CouchDB
Redis
NoSQL databases
Software application that allows individuals or orgs to create, manage and publish digital content on the web without requiring advanced technical knowledge.
WordPress
Drupal
CMS - Content Management System
Used to present our services to the world serve static content and handle basic server-side operations, while providing a platform for managing dynamic content
Apache HTTPD
NGINX
Web Servers
Servers that provide a more comprehensive runtime environment for executing complex web apps, managing app components and supporting advanced features like transaction management and scalability
Apache Tomcat
MSIIS
Applicatin Servers
Web applications that operate within a single HTML page and dynamically update the content on that page without requiring full page reloads and instead of navigation to different pages they load the initial HTML, CSS and Javascript resources and then interact with the server via APIs to retrieve and update data asynchronously.
SPA
Single Page Application
Binary instruction format that allows you to run high-performance code in web browsers.
Designed for efficiency in running C, C+, Rust and other code languages.
Near-native performance
Used for high-performance or working with existing app written in a language like C or C++
WebAssembly (Wasm)
Streamline the deployment process thus allowing developers to bundle all necessary components of the app into a self contained package.
Simplifies deployment, improves portability and ensures consistency across different environments thus making it easier to distribute and install web applications
Web Application Packaging
Protocol that makes everything happen
moves data packets back and forth across busy networks requires planning
Hypertext Transfer Protocol
HTTP addresses used to locate resources on the internet.
HTTP
HTTPS
Domain Names
Paths to specific resources
URL
Uniform Resource Locators.
Website that servs pre-existing files like HTML, CSS or videos
Static
Website that interprets parameters to generate custom content by, for instance querying backend databases or making calculations.
Dynamic
Path to the resources (docs/content) is mapped to the root web directory on your web server and on Linux this woud be “___________” and any files and directories you create within that root directory will be available to your visitors website.
/var/www/html/
Storing copies of web resources like HTML pages, images, CSS and Javascript files on the client-side or intermediary servers to improve performance and reduce network traffic.
Caching
HTTP methods used to interact with web servers
GET and POST
Primarily used to retrieve data from a server by sending a request to a speific url and it appends the requests parameters in the URL itself
GET
Used to submit data to be processed by the server and it sends the request parameters in the body of the request.
POST
Three-digit numbers sent by a server in response to an HTTP request that indicate the outcome of the request and provide information about success or error states.
Status Codes.
Status code that indicates success and is commonly used for successful GET requests
200 OK
Resource request that indicates that the requested resource has moved permanently to a new location
Client should update its bookmarked URL or follow the new URL provided in the response
301 Moved Permanently
Resource request that indicates the requested resource has been temporarily moved to a different location.
Client should continue to use current URL for future requests.
302 Moved Temporarily
Resource request that indicates that the request requires authentication and the client must provide valid creds such as username and password to access the requested resource
401 Unauthorized
Resource request indicates that the server understood the request but refuses to fuflill it.
Authentication will not make a difference and the client does not have the necessary permissions to access the resource.
403 Forbidden
Resource request indicates that the requested resource could not be found on the server and is commonly used when the server cannot locate the resource corresponding to the provided URL
404 Not Found
Resource request indicates that an unexpected error occurred on the server while processing the request and its a generic error message used when the server encounters and internal problem and cannot provide a more specific code.
500 Internal Server Error
Additional info sent in an HTTP request or response to provide details about the message and contain metadata such as the content type, caching directives, authentication credentials and more.
Help in defining the behavaior and characteristics of the request or response.
Headers
Mechanisms used to maintain state and enable persistence in web applications.
HTTP sessions
When a client makes an initial request to a server the server assigns a unique “____” to the client and stores it on the server side.
Session ID
The session ID is typically sent back to the client as response in the form of a “________” or appended to the url as a query parameter.
various attributes like expiration time, domain and path restrictions that can be set by the server to control their behavior.
Subsequent requests from the client include the known session id to id and associate the request with the corresponding session on the server.
cookie
Stores session data associated with the session ID such as user authentication infomation or other relevant data.
The Server
Sessions are typically temporary and have a configurable expiration time and once the session expires or is invalidated the client needs to establish a new session by obtaining a
New Session ID
Security attack where an unauthorized individual intercepts and takes control of a user’s session on a web application.
Attacker aims to exploit the trust established between the user and the web app to gain unauthorized access to sensitive info or perform malicious actions.
Session hijacking
Session hijacking can happen through
eavesdropping network traffic
stealing session cookies
exploiting vulnerabilities in a web app
Important tool for protecting your sites against some elements of session hijacking and from other threats
Encryption
When a session is properly encrypted all data packets moving back and forth between a browser and a server will be transmitted in
non-readable form.
Best way to encrypt website sessions is by configuring the exclusive use of
Websites using TLS use HTTPS on the app lwy to secure communications.
Transport Layer Security (TLS)
Use alternate communication protocol that distinct from HTTP and enable full-duplex communication between a client and a server over a single, long-lived connection.
Real time bidirectional communication.
WebSockets