TECHNOLOGY 

Published on

KembaraXtra - Computer Science - Math in High-Level Languages

1. Common Math Operators

  • High-level languages use symbols for math operations, similar across languages like C and Python.
Operation Operator
Addition +
Subtraction -
Multiplication *
Division /

2. Assignment vs. Equality

  • The equals sign = typically represents assignment (setting a variable's value), not equality (comparison).
  • x = 5 means "set the value of x to 5."

3. Integer Math vs. Floating-Point Arithmetic

  • Integers: Whole numbers (no fractions).
  • Floating-Point: Numbers that can represent fractions.

4. Type Declaration

  • C: Requires explicit type declaration for variables.
  • int x = 5; // Declares an integer variable x
  • double price = 1.99; // Declares a floating-point variable price
  • Python: Infers type automatically.
  • year = 2020 # year is an int
  • price = 1.99 # price is a float

5. Integer Division

  • C: Dividing integers results in an integer (fractional part is truncated).
  • int x = 5; int y = 2; int z = x / y; // z will be 2
  • If the result is assigned to a float, the integer result is converted to a float, but the fractional part is already lost.
  • int x = 5; int y = 2; float z = x / y; // z will be 2.0
  • Python: Dividing integers results in a float (fractional part is preserved).
  • x = 5; y = 2; z = x / y # z will be 2.5

6. Abbreviated Math Operators

  • Increment/Decrement (C):
  • x++; // Increment x (add 1)
  • x--; // Decrement x (subtract 1)
  • Add and Assign / Subtract and Assign (C and Python):
  • cats += 3 // Equivalent to cats = cats + 3
  • cats -= 3 // Equivalent to cats = cats - 3
Picture
Published on

KembaraXtra - Computer Science - Stack and Heap Memory

I. Introduction

  • High-level languages abstract memory management, with varying degrees of transparency (e.g., Python vs. C).
  • Programs utilize two main types of memory: stack and heap.

II. The Stack

  • Definition: An area of memory that operates on a Last-In, First-Out (LIFO) model.
  • Analogy: Stack of plates.
  • LIFO Operation:
    • Last item added is the first item removed.
    • Items can be read or modified at any time while on the stack.
  • Stack Pointer:
    • A processor register stores the memory address of the top of the stack.
    • The stack pointer adjusts to make room for a value on the stack.
    • The stack pointer adjusts to decrease the size of the stack when a value is removed.
  • Usage:
    • The compiler uses the stack to track the state of program execution and store local variables.
    • Implementation details are usually hidden from the programmer.
  • Memory Allocation (C Example):
    • Variables are pushed onto the stack as they are declared.
    • The order of declaration determines their position on the stack.
    • Memory addresses on the stack decrease as the stack grows (in many architectures).
  • Characteristics:
    • Fast and efficient for small, temporary data.
    • Each thread of execution has its own stack.
    • Limited resource; prone to stack overflow if too much data is pushed onto it.

III. The Heap

  • Definition: A pool of memory available to a program.
  • Allocation Model:
    • Unlike the stack, the heap doesn't have a LIFO model.
    • No standard allocation model.
  • Accessibility:
    • Heap allocations can be accessed by any of the program's threads.
  • Memory Management:
    • Memory is allocated from the heap and persists until explicitly freed or the program terminates.
    • Freeing Memory: Releasing memory back to the available pool.
    • Garbage Collection: Automatic memory freeing when an allocation is no longer referenced (common in some languages).
    • Memory Leaks: Occur when unused memory is not freed.
  • Pointers (C Language):
    • Pointers are variables that hold memory addresses.
    • Used to track heap memory allocations.
    • The pointer itself can be a local variable stored on the stack, pointing to an address in the heap.
  • Heap Allocation in C (Example):
    • malloc() function allocates memory from the heap and returns the address of the allocated block.
    • The pointer to this memory (returned by malloc()) is typically stored in a local variable on the stack.

IV. Stack vs. Heap: Key Differences

Feature Stack Heap
Allocation LIFO Arbitrary
Size Limited Larger, but finite
Speed Fast Slower
Scope Local (thread-specific) Global (accessible by all threads)
Management Automatic (compiler-managed) Manual (programmer-managed) or Garbage Collected
Data Persistence Temporary (function/block scope) Longer-lived (until freed)
Risk Stack Overflow Memory Leaks, Fragmentation

V. Key Terminology

  • Stack: LIFO memory area for local variables and program state.
  • Heap: Memory pool for dynamic allocation of larger, persistent data.
  • LIFO: Last-In, First-Out.
  • Stack Pointer: Register tracking the top of the stack.
  • Stack Overflow: Error when the stack runs out of memory.
  • Garbage Collection: Automatic memory management.
  • Memory Leak: Unused memory that is not freed.
  • Pointer: A variable holding a memory address.

VI. Important Considerations

  • Choose stack for small, short-lived data within a limited scope.
  • Choose heap for larger data or data that needs to persist longer and be accessible across different parts of the program.
  • Be aware of memory management responsibilities in languages like C to avoid memory leaks.
Picture
Published on

Web Servers: Study Guide

I. Client-Side vs. Server-Side Technologies

  • Client-Side: Primarily deals with what the user sees and interacts with in the web browser. Uses HTML, CSS, and JavaScript.
  • Server-Side: Deals with the logic and data processing behind the website. Any programming language or technology can be used, as long as it communicates over HTTP and returns data in a format the client understands.

II. Static vs. Dynamic Websites

Feature Static Websites Dynamic Websites
Content HTML, CSS, and JavaScript built ahead of time. HTML generated when a request comes in.
Processing Server returns pre-built files without modification. Server processes the request, often querying a database, generating HTML, and then responding.
Complexity Simpler setup. More complex setup, slower response times, potentially heavy server load, increased security risks.
Response Time Typically faster. Typically slower due to processing.
Server Load Lighter load. Heavier load.
Security Generally more secure. Potentially less secure due to increased complexity.
Example Website developed using only HTML, CSS, and JavaScript files and hosted on a web server (Projects #37 through #40). A blog where posts are stored in a database and rendered into HTML when requested.

Important Note: The terms "static" and "dynamic" refer to how the content is generated on the server, not whether the website is interactive or has updated content. User experience (interactivity, content updates) is often handled with JavaScript on the client-side, regardless of whether the site is static or dynamic from the server's perspective.

III. How Static Websites Handle Requests

  1. Browser requests a specific URL.
  2. Web server receives the request.
  3. Web server finds the corresponding static file (e.g., /images/cat.jpg) in its directory.
  4. Web server returns the content of that file to the browser.
  5. The server does not modify the content.

IV. How Dynamic Websites Handle Requests

  1. Browser requests a specific URL.
  2. Web server receives the request and determines that it needs to generate HTML.
  3. The server executes code.
  4. The code queries a database and retrieves the relevant data.
  5. The server formats the data as HTML.
  6. The server responds to the client with the generated HTML.

V. The Trend Toward Static Sites

  • In recent years, there has been a shift back towards static sites where possible.
  • Static sites offer simplicity, speed, and security benefits.

VI. Hosting Static Sites

  • You need a web server software that can serve static files.
  • The software is configured to point to a directory containing the website files.
  • When a request comes in, the server returns the contents of the matching file.

VII. Building Dynamic Websites/Web Services

  • You can use existing software or write custom code to generate dynamic pages.
  • Server-side development offers a wide range of technology choices (programming languages, operating systems, databases, etc.).
  • The client doesn't care what technologies are used on the server-side; it only needs a response in a format it can handle.

VIII. Server-Side Technology Choices

  • Programming Languages: Python, C#, JavaScript (Node.js), Java, Ruby, PHP, etc.
  • Databases: Any type of database can be used.
Published on
KembaraXtra-Computer Science - Device Drivers
Core Concept: Bridging the Gap Between Hardware and Software
  • Problem: Diverse hardware devices require different I/O methods. The OS kernel can't possibly know how to directly interact with every device.
  • Solution: Device drivers act as intermediaries, enabling communication between the OS and hardware.
Definition
  • Device Driver: Software that interacts directly with a hardware device, exposing a standardized programmatic interface to the OS and applications.
  • Analogy: Think of a translator; the driver translates generic OS commands into specific hardware instructions.
Implementation
  • Kernel Modules:
    • Drivers are typically implemented as kernel modules.
    • Kernel modules are code files that can be loaded and executed by the kernel in kernel mode.
    • Why kernel mode? Direct hardware access is restricted to kernel mode.
  • Trust is Crucial: Drivers run with high privileges, like the kernel itself. Untrusted drivers pose a significant security risk.
Role in the System
  • Encapsulation: Device drivers abstract away the complexities of hardware interaction. The OS and applications don't need to know the specifics of each device.
  • User-Mode vs. Kernel-Mode:
    • Drivers typically run in kernel mode for direct hardware access.
    • Some drivers (e.g., using Microsoft's UMDF) can run in user mode, but still require a kernel-mode component (provided by the OS) to handle the low-level hardware interaction.
  • Working Together: The kernel works with device drivers to manage hardware on behalf of user mode applications.
Picture
Published on
KembaraXtra- Computer Science - Bitcoin
I. Cryptocurrency Fundamentals
A. Definition
  • A digital asset used for financial transactions, serving as an alternative to traditional currencies.
B. Uses
  • Transactional: Spending currency on goods/services.
  • Investment: Similar to gold; value is stored/speculated on.
C. Key Characteristic: Decentralization
  • No single controlling organization.
II. Bitcoin Basics
A. Origin
  • The first decentralized cryptocurrency, introduced in 2009.
B. Dominance
  • Most well-known cryptocurrency, with many alternatives ("altcoins") but none as dominant.
C. Unit of Currency
  • Bitcoin (BTC).
III. Blockchain Technology
A. Core Concept
  • Information grouped into chronological "blocks" linked together.
B. Bitcoin's Use of Blockchain
  • Blocks contain transaction records (movement of bitcoins).
C. Network Operation
  • Operates over a network (e.g., the internet).
  • Multiple computers ("nodes") process transactions and update the blockchain.
  • No single master copy of the blockchain.
D. Security
  • Encryption/Decryption: Ensures transaction integrity and prevents tampering.
  • Immutability: Data cannot be changed once written to the blockchain.
E. Bitcoin's Blockchain as a Public Ledger
  • Decentralized, immutable record of all Bitcoin network transactions.
IV. Bitcoin Wallets
A. Storage
  • Bitcoins are associated with key pairs held in a Bitcoin wallet.
  • The wallet holds cryptographic key pairs (private and public keys).
B. Key Pairs
  • Private Key: Randomly generated 256-bit number; must be kept secret. Allows spending of associated bitcoins.
  • Public Key: Derived from the private key; used to receive bitcoins.
C. Bitcoin Address
  • Text string generated from the public key; used to represent the public key when receiving bitcoins.
  • Example: 13pB1brJqea4DYXkUKv5n44HCgBkJHa2v1
D. Sending and Receiving Bitcoins
  • Sender needs the recipient's Bitcoin address (derived from their public key).
  • Sender uses their private key to authorize the transaction.
  • Recipient's private key is never shared.
V. Bitcoin Transactions
A. Definition
  • A transfer of bitcoins.
B. Process
  1. Wallet software constructs a transaction.
  2. Transaction details (sender, receiver, amount) are specified.
  3. Digitally signed with the sender's private key.
  4. Broadcast to the Bitcoin network.
  5. Network computers verify the transaction.
  6. Transaction added to a new block on the blockchain.
C. Structure
  • Inputs: Source of the bitcoins being transferred. Refers to a previous transaction's output, not directly to a Bitcoin address.
  • Outputs: The address where the bitcoin is sent.
D. Bitcoin Balance
  • Not explicitly stored in the wallet or directly in the blockchain.
  • Calculated from the history of transactions associated with an address.
VI. Bitcoin Mining
A. Definition
  • The process of maintaining the Bitcoin blockchain.
B. Miners
  • Computers around the world that add blocks of transactions to the blockchain.
C. Mining Process
  1. Verify Transactions: Ensure each transaction in the block is valid.
  2. Solve a Complex Problem: Miners must solve a computationally difficult problem (proof of work).
D. Proof of Work
  • Deters tampering with the blockchain.
  • Altering a block requires re-solving the problem for that block and all subsequent blocks.
E. Mining Rewards
  • The first miner to solve the problem is awarded a sum of bitcoins.
  • This is how new bitcoins are created.
  • Miners also claim transaction fees from transactions included in the block.
F. Bitcoin Limit
  • Designed to allow only 21 million coins to be mined in total.
  • After that, miners will rely solely on transaction fees.
VII. Bitcoin Origins
A. Genesis Block
  • The first block in the Bitcoin blockchain, mined in 2009.
B. Satoshi Nakamoto
  • Inventor of Bitcoin (presumed pseudonym).
C. Mining Profitability
  • Mining costs (hardware, electricity) must be less than the value of bitcoins awarded.
  • Specialized hardware is used for faster mining.
  • Mining is not a guaranteed profit due to costs and price volatility.
VIII. Anonymity and Blockchain Applications
A. Bitcoin Anonymity
  • The blockchain is public (all transactions are visible).
  • However, personal identities are not directly linked to addresses.
  • Attracts those seeking anonymity.
B. Blockchain Technology
  • Can be used beyond cryptocurrencies.
  • Suitable for any system needing a tamper-resistant record history.
Picture
Published on
KembaraXtra-Computer Science - Deep Web and Dark Web
I. Overview
  • The internet can be divided into three layers:
    • Surface Web
    • Deep Web
    • Dark Web
  • The terms "Deep Web" and "Dark Web" are often confused but have distinct meanings.
II. Surface Web
  • Definition: Content freely available and accessible to anyone.
  • Examples: Public blogs, news sites, public social media posts (e.g., public Twitter posts).
  • Indexing: Indexed by search engines (Google, Bing, etc.).
  • Accessibility: Can be found using standard search engines.
III. Deep Web
  • Definition: Web content that cannot be accessed without logging in or specific credentials.
  • Accessibility: Requires a password or login to access.
  • Examples:
    • Checking your bank balance online.
    • Reading your email through a web service (Gmail, Yahoo, etc.).
    • Logging into social media accounts (Facebook, Instagram, etc.).
    • Viewing personal shopping history on e-commerce sites (Amazon, etc.).
  • Indexing: Not indexed by search engines; therefore, not publicly available.
  • Reason for Non-Indexing: To protect sensitive, private user data.
IV. Dark Web
  • Definition: Web content that requires specialized software to access.
  • Accessibility: Cannot be accessed with a standard web browser.
  • Key Technology: Tor (The Onion Router) is the most prevalent technology.
  • Tor Functionality:
    • Enables anonymous access to the web.
    • Uses a system of encryption and relays.
    • Hides the user's IP address, preventing ISPs from monitoring browsing activity.
    • Prevents visited sites from knowing the visitor's IP address.
  • Onion Services: Websites accessible only through Tor, and are part of the Dark Web. They also hide their IP addresses.
  • Anonymity: Both users and websites can remain anonymous.
  • Use Cases:
    • Criminal Activity: Anonymity can be exploited for illegal purposes.
    • Legitimate Purposes:
      • Whistleblowing
      • Political discussion
  • Caution: Exercise caution when accessing content on the dark web.
Picture
Published on
KembaraXtra-Computer Science - Cloud Computing
I. Introduction to Cloud Computing
  • Definition: Delivery of computing services over the internet.
  • Shift from centralized to local to remote computing.
  • Cloud computing allows on-demand purchasing of computing services.
II. History of Remote Computing
  • Early Days: Centralized computing with servers accessed via terminals.
  • Shift to Local: Desktop computers handled processing locally.
  • Return to Remote: Web-based applications accessed via local smart devices.
  • Modern applications use a mix of local and remote processing.
III. The Need for Cloud Computing
  • Maintaining servers is complex and costly (hardware, software, security, capacity planning).
  • Organizations want to focus on their core purpose, not server maintenance.
  • Cloud providers handle the underlying hardware and infrastructure.
IV. Categories of Cloud Computing
  • Defined by the division of responsibility between cloud provider and consumer.
  • Four main categories: IaaS, PaaS, FaaS, SaaS
A. Infrastructure as a Service (IaaS)
  • Provider: Manages hardware and virtualization.
  • Consumer: Manages OS, runtime environment, application code, and data.
  • Example: Virtual computer (VM or container) accessed over the internet.
  • Responsibility: Consumer maintains all software on the virtual computer.
  • Examples: Amazon EC2, Microsoft Azure Virtual Machines, Google Compute Engine
B. Platform as a Service (PaaS)
  • Provider: Manages hardware, virtualization, OS, and runtime environment.
  • Consumer: Develops and manages the application code.
  • Benefit: Consumer doesn't maintain the underlying OS or runtime environment.
  • Responsibility: Consumer manages application and provisions resources (storage, VMs).
  • Examples: AWS Elastic Beanstalk, Microsoft Azure App Service, Google App Engine
C. Function as a Service (FaaS)
  • Provider: Manages all infrastructure and on-demand execution of code.
  • Consumer: Only deploys code (functions) that run in response to events.
  • Model: Event-driven.
  • Serverless Computing: Consumer doesn't manage servers.
  • Responsibility: Consumer writes code that runs in response to events.
  • Examples: AWS Lambda, Microsoft Azure Functions, Google Cloud Functions
D. Software as a Service (SaaS)
  • Provider: Fully manages the application in the cloud.
  • Consumer: Uses the complete application.
  • Contrast: Differs from installing and maintaining software locally.
  • Responsibility: Consumer manages the data they store in the application.
  • Examples: Microsoft 365, Google G Suite, Dropbox
V. Major Cloud Providers
  • Amazon Web Services (AWS)
  • Microsoft Azure
  • Google Cloud Platform (GCP)
  • IBM Cloud
  • Oracle Cloud
  • Alibaba Cloud
VI. Key Concepts
  • Runtime Environment: Environment in which an application executes (libraries, interpreters, etc.).
  • Virtualization: Creating a virtual (rather than actual) version of something, such as a computer hardware platform, operating system, storage device, or network resources
  • Serverless Computing: Cloud computing model where the provider manages servers, and the consumer doesn't need to manage them.
  • Event-Driven Model: A programming paradigm in which the flow of the program is determined by events (e.g., user actions, sensor outputs, messages from other programs/threads).



Picture
Published on
KembaraXtra- Computer Science -Virtualization and Emulation
I. Introduction
  • Virtualization: Creating a virtual representation of a computer using software.
  • Emulation: Enabling applications designed for one type of device to run on a different type of device.
II. Virtualization
  • Virtual Machine (VM): A virtual computer that runs an operating system and applications, similar to a physical computer.
    • Applications running on a VM perceive the virtualized hardware as a physical computer.
  • Benefits of Virtualization:
    • Run multiple operating systems on a single physical machine.
    • Datacenters can host multiple virtual servers on one physical server.
    • Easy to back up, restore, and deploy VMs.
  • Hypervisors: Software platforms that run virtual machines.
    • Type 1 Hypervisor: Interacts directly with the underlying hardware, sitting below the kernel.
      • Examples: Microsoft's Hyper-V, VMware ESX.
    • Type 2 Hypervisor: Runs as an application on an operating system.
      • Examples: VMware Player, VirtualBox.
  • Containers: Provide an isolated user mode environment for running applications.
    • Share the kernel with the host OS and other containers.
    • Processes in a container can only access a subset of the host's resources (e.g., isolated filesystem).
    • Provide isolation similar to VMs but without the overhead of a separate kernel.
    • Typically limited to running the same OS as the host.
    • Examples: OpenVZ (virtualizes the entire user mode), Docker (runs individual applications).
III. Emulation
  • Definition: Using software to make one type of device behave like another.
  • Key Difference from Virtualization:
    • Virtualization offers a slice of the underlying hardware.
    • Emulation presents virtual hardware that is unlike the physical hardware.
  • Example: Running software compiled for a Sega Genesis (Motorola 68000 processor) on an x86 machine.
  • Process: The emulator translates CPU instructions from the original system to instructions that the host system can understand.
  • Overhead: Emulation introduces significant overhead because each instruction must be translated.
  • Applications of Emulation:
    • Preserving software designed for obsolete platforms.
    • Enabling old software to run on modern platforms without modification (when source code is lost or modernization is too difficult).
IV. Process Virtual Machines
  • Definition: Run an application within an execution environment that abstracts away details of the underlying OS.
  • Similarity to Emulators: Provides a platform decoupled from the hardware and OS.
  • Difference from Emulators: Does not simulate real hardware.
  • Purpose: Designed for running platform-independent software.
  • Examples: Java and .NET use process virtual machines that run bytecode.
V. Key Differences Summarized
Feature
Virtualization
Emulation

Picture
Feature	Virtualization	Emulation Hardware	Virtualized hardware is similar to actual hardware	Virtualized hardware is unlike actual hardware Purpose	Run multiple OSs, isolate environments	Run software for different platforms Performance	Generally lower overhead than emulation	Higher overhead due to instruction translation OS Requirement	Often requires same or similar OS	Can run software designed for different OSs
Published on
KembaraXtra- Computer Science - Apps
1. App Definition & Characteristics
  • Traditional Definition: Software programs used directly by users (interchangeable with "application").
  • Modern Meaning: Gained prominence with Apple's App Store (2008).
  • Common Characteristics:
    • Designed for end users.
    • Often target mobile devices (smartphones, tablets).
    • Distributed via internet-based digital storefronts (App Store, Google Play Store, Microsoft Store).
    • Limited system access; declare required capabilities.
    • Primarily use touchscreens for user input.
  • Native App: Software installed on a device that directly utilizes the operating system's API.
  • Web App: Designed with web technologies (HTML, CSS, JavaScript) and not tied to a specific OS.
2. Native Apps
  • Definition: Built for a specific operating system (iOS, Android).
  • Benefits of App Stores:
    • New platforms for developers.
    • New methods of distribution.
    • New ways to monetize software.
  • Development Challenges:
    • iOS and Android differ in programming languages and APIs.
    • Requires separate codebases or cross-platform frameworks (Xamarin, React Native, Flutter, Unity) for multi-platform support.
    • Many apps rely on web services.
  • Cross-Platform Frameworks: Abstract underlying OS API details, enabling code to run on multiple platforms.
  • Historical Context:
    • Steve Jobs initially envisioned web apps as the primary means for third-party development on the iPhone.
    • Apple later reversed course, allowing native app development and opening the App Store.
  • Benefits of Native Apps & App Stores:
    • Revenue source for platform holders (Apple, Google, Microsoft).
    • Exclusive content.
    • Curated list of apps with ratings.
    • Consumer trust (quality guidelines).
    • Centralized payment service.
    • Automatic updates.
  • Drawbacks:
    • Complex environment for developers (multiple stores, platforms, technologies).
    • Each marketplace has specific requirements and takes a percentage of revenue.
3. Web Apps
  • Definition: Websites that function like apps, built using web technologies (HTML, CSS, JavaScript).
  • Advantages:
    • Run on any device with a modern web browser.
    • Code only needs to be written once.
  • Disadvantages:
    • Don't have full access to device capabilities.
    • Tend to be slower than native apps.
    • Require an internet connection.
    • Generally not listed in app stores.
  • Responsive Web Design: Ensures web content renders well on various screen sizes, allowing for a single website across devices.
  • Web Development Frameworks: Angular, React, Vue.js simplify web app development and maintenance.
4. Progressive Web Apps (PWAs)
  • Definition: Websites with extra features that bridge the gap between native apps and web apps.
  • Requirements:
    • Served over HTTPS.
    • Render appropriately on mobile devices.
    • Load offline once downloaded.
    • Provide a manifest describing the app.
    • Transition quickly between pages.
  • User Experience: Feel responsive and natural, like a native app.
  • Benefits:
    • Use web technologies for apps without building multiple platform-specific apps.
    • Users can add a PWA icon to their home screen or desktop, launching it like a native app in its own window.
  • Drawbacks:
    • Don't appear in app stores (except Microsoft Store).
    • Users aren't used to installing apps from websites.
    • May not look exactly like native apps (look similar across platforms).
    • May not have the same performance or full access to platform capabilities as native apps.
Picture
Published on

KembaraXtra – Computer Science – Web Servers

I. Client-Side vs. Server-Side Technologies

  • Client-Side: Primarily deals with what the user sees and interacts with in the web browser. Uses HTML, CSS, and JavaScript.
  • Server-Side: Deals with the logic and data processing behind the website. Any programming language or technology can be used, as long as it communicates over HTTP and returns data in a format the client understands.

II. Static vs. Dynamic Websites

Feature Static Websites Dynamic Websites
Content HTML, CSS, and JavaScript built ahead of time. HTML generated when a request comes in.
Processing Server returns pre-built files without modification. Server processes the request, often querying a database, generating HTML, and then responding.
Complexity Simpler setup. More complex setup, slower response times, potentially heavy server load, increased security risks.
Response Time Typically faster. Typically slower due to processing.
Server Load Lighter load. Heavier load.
Security Generally more secure. Potentially less secure due to increased complexity.
Example Website developed using only HTML, CSS and JavaScript files and hosted on a web server (Projects #37 through #40). A blog where posts are stored in a database and rendered into HTML when requested.

Important Note: The terms "static" and "dynamic" refer to how the content is generated on the server, not whether the website is interactive or has updated content. User experience (interactivity, content updates) is often handled with JavaScript on the client-side, regardless of whether the site is static or dynamic from the server's perspective.

III. How Static Websites Handle Requests

  1. Browser requests a specific URL.
  2. Web server receives the request.
  3. Web server finds the corresponding static file (e.g., /images/cat.jpg) in its directory.
  4. Web server returns the content of that file to the browser.
  5. The server does not modify the content.

IV. How Dynamic Websites Handle Requests

  1. Browser requests a specific URL.
  2. Web server receives the request and determines that it needs to generate HTML.
  3. The server executes code.
  4. The code queries a database and retrieves the relevant data.
  5. The server formats the data as HTML.
  6. The server responds to the client with the generated HTML.

V. The Trend Toward Static Sites

  • In recent years, there has been a shift back towards static sites where possible.
  • Static sites offer simplicity, speed, and security benefits.

VI. Hosting Static Sites

  • You need a web server software that can serve static files.
  • The software is configured to point to a directory containing the website files.
  • When a request comes in, the server returns the contents of the matching file.

VII. Building Dynamic Websites/Web Services

  • You can use existing software or write custom code to generate dynamic pages.
  • Server-side development offers a wide range of technology choices (programming languages, operating systems, databases, etc.).
  • The client doesn't care what technologies are used on the server-side; it only needs a response in a format it can handle.

VIII. Server-Side Technology Choices

  • Programming Languages: Python, C#, JavaScript (Node.js), Java, Ruby, PHP, etc.
  • Databases: Any type of database can be used.
Picture