CSS Media Queries are a technique in CSS that allows a webpage layout to adapt to different screen sizes, resolutions, and device types. They are a core feature of Responsive Web Design.
@media (condition) {
/* CSS rules that apply only under this condition */
}
1. Adjusting for different screen widths:
/* For screens with a maximum width of 600px (e.g., smartphones) */
@media (max-width: 600px) {
body {
background-color: lightblue;
}
}
2. Detecting landscape vs. portrait orientation:
@media (orientation: landscape) {
body {
background-color: lightgreen;
}
}
3. Styling for print output:
@media print {
body {
font-size: 12pt;
color: black;
background: none;
}
}
✅ Mobile-first design: Optimizing websites for small screens first and then expanding for larger screens.
✅ Dark mode: Adjusting styles based on user preference (prefers-color-scheme
).
✅ Retina displays: Using high-resolution images or specific styles for high pixel density screens (min-resolution: 2dppx
).
Responsive Design is a web design approach that allows a website to automatically adjust to different screen sizes and devices. This ensures a seamless user experience across desktops, tablets, and smartphones without needing separate versions of the site.
Responsive Design is achieved using the following techniques:
1. Flexible Layouts
2. Media Queries (CSS)
@media (max-width: 768px) {
body {
background-color: lightgray;
}
}
→ This changes the background color for screens smaller than 768px.
3. Flexible Images and Media
img {
max-width: 100%;
height: auto;
}
4. Mobile-First Approach
✅ Better user experience across all devices
✅ SEO advantages, as Google prioritizes mobile-friendly sites
✅ No need for separate mobile and desktop versions, reducing maintenance
✅ Higher conversion rates, since users can navigate the site easily
Responsive Design is now the standard in modern web development, ensuring optimal display and usability on all devices.
GoJS is a JavaScript library for creating interactive diagrams and graphs in web applications. It is commonly used for flowcharts, network topologies, UML diagrams, BPMN models, and other visual representations of data.
GoJS is widely used in business applications to visualize complex processes or relationships. It is a paid library but offers a free evaluation version.
The official website is: https://gojs.net
The Pyramid Web Framework is a lightweight, flexible, and scalable web framework for Python. It is part of the Pylons Project family and is ideal for developers looking for a minimalist yet powerful solution for web applications.
Minimalistic but Extensible
Flexible
Traversal and URL Mapping
Powerful and Efficient
First-Class Testing Support
Comprehensive Documentation & Community Support
Feature | Pyramid | Flask | Django |
---|---|---|---|
Architecture | Minimalistic & modular | Minimalistic & lightweight | Monolithic & feature-rich |
Routing | URL Mapping & Traversal | URL Mapping | URL Mapping |
Scalability | High | Medium | High |
Built-in Features | Few, but extensible | Very few | Many (ORM, Admin, Auth, etc.) |
Learning Curve | Medium | Easy | Higher |
Pyramid is an excellent choice for developers looking for a balance between minimalism and power. It is particularly well-suited for medium to large web projects where scalability, flexibility, and good testability are essential.
Twig is a powerful and flexible templating engine for PHP, commonly used in Symfony but also in other PHP projects. It helps separate logic from presentation and offers many useful features for frontend development.
{{ }}
)Twig uses double curly braces to output variables:
<p>Hello, {{ name }}!</p>
→ If name = "Max"
, the output will be:
"Hello, Max!"
{% %}
)Twig supports if-else statements, loops, and other control structures.
{% if user.isAdmin %}
<p>Welcome, Admin!</p>
{% else %}
<p>Welcome, User!</p>
{% endif %}
Loops (for
)
<ul>
{% for user in users %}
<li>{{ user.name }}</li>
{% endfor %}
</ul>
Twig supports "Base Layouts", similar to Laravel's Blade.
base.html.twig
)<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Page{% endblock %}</title>
</head>
<body>
<header>{% block header %}Default Header{% endblock %}</header>
<main>{% block content %}{% endblock %}</main>
</body>
</html>
Child Template (page.html.twig
)
{% extends 'base.html.twig' %}
{% block title %}Homepage{% endblock %}
{% block content %}
<p>Welcome to my website!</p>
{% endblock %}
→ The blocks override the default content from the base template.
You can include reusable components like a navbar or footer:
{% include 'partials/navbar.html.twig' %}
Twig provides many filters to format content:
Filter | Beispiel | Ausgabe |
---|---|---|
upper |
`{{ "text" | upper }}` |
lower |
`{{ "TEXT" | lower }}` |
length |
`{{ "Hallo" | length }}` |
date |
`{{ "now" | date("d.m.Y") }}` |
Twig automatically escapes HTML to prevent XSS attacks:
{{ "<script>alert('XSS');</script>" }}
→ Outputs: <script>alert('XSS');</script>
To output raw HTML, use |raw
:
{{ "<strong>Bold</strong>"|raw }}
The View is the presentation layer in the MVC architecture. It is responsible for displaying data from the Model in a user-friendly format.
✅ Displaying Data: Shows information from the Model (e.g., a list of blog posts).
✅ Reacting to User Interactions: Accepts user input and sends it to the Controller.
✅ Formatting & Layout: Structures content using HTML, CSS, or templating engines (e.g., Laravel Blade or Twig).
✅ Avoiding Business Logic: Contains only presentation logic, not data processing.
<!-- resources/views/blog/index.blade.php -->
@extends('layouts.app')
@section('content')
<h1>Blog Posts</h1>
@foreach ($posts as $post)
<div>
<h2>{{ $post->title }}</h2>
<p>{{ $post->content }}</p>
</div>
@endforeach
@endsection
🔹 @foreach
: Loops through the list of blog posts and displays them.
🔹 {{ $post->title }}
: Outputs the title of the blog post.
✔ The View is responsible for presentation but does not process data.
✔ It ensures a clear separation between logic and display.
✔ Using templates or frontend technologies (e.g., Vue.js, React), the View can be dynamically rendered.
The Model is the data and logic layer in the MVC architecture. It manages the application's data and ensures that it is correctly stored, retrieved, and processed.
✅ Data Management: Stores and handles data, often in a database.
✅ Business Logic: Contains rules and calculations (e.g., discount calculation for orders).
✅ Data Validation: Checks if input is correct (e.g., if an email address is valid).
✅ Database Communication: Performs CRUD operations (Create, Read, Update, Delete).
class BlogPost extends Model {
protected $fillable = ['title', 'content']; // Erlaubte Felder für Massenverarbeitung
// Beziehung: Ein Blogpost gehört zu einem Benutzer
public function user() {
return $this->belongsTo(User::class);
}
}
🔹 fillable
: Specifies which fields can be saved.
🔹 belongsTo(User::class)
: Indicates that each blog post belongs to a user.
✔ The Model handles all data and business logic of the application.
✔ It ensures a clear separation between data and presentation.
✔ Changes to the data structure only need to be made in the Model, not throughout the entire application.
The Catalyst Framework is a flexible and powerful web framework for Perl. It enables the development of scalable and maintainable web applications and follows the Model-View-Controller (MVC) design pattern.
✅ MVC Architecture – Clear separation of business logic, presentation, and data management
✅ Flexibility – Supports various templating systems and ORM solutions like DBIx::Class
✅ Extensibility – Many plugins and modules available
✅ Asynchronous Capabilities – Can be integrated with event-driven architectures
✅ REST APIs & WebSockets – Support for modern web technologies
Entity headers are HTTP headers that provide information about the body of a message. They can appear in both requests and responses, describing properties of the content such as type, length, encoding, or last modification date.
1.
Content-Type
Content-Type: application/json; charset=UTF-8
2.
Content-Length
Content-Length: 1024
3.
Content-Encoding
Content-Encoding: gzip
4. Content-Language
Content-Language: de-DE
5. Cache-Location
Content-Location: /files/document.pdf
6. Last-Modified
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT
7. ETag
ETag: "abc123xyz"
8. Expires
Expires: Fri, 02 Feb 2025 12:00:00 GMT
9. Allow
Allow: GET, POST, HEAD
10. Refresh
(Not standardized but often used)
Refresh: 10; url=https://example.com
These headers help describe the content of an HTTP message, optimize caching strategies, and ensure correct rendering.
Request headers are HTTP headers sent by a client (e.g., a web browser or API request) to the server, providing additional information about the request, the client, or the desired content.
1. Host
Host: www.example.com
2. User-Agent
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
3. Accept
Accept: text/html, application/json
4. Accept-Language
Accept-Language: de-DE, en-US
5. Accept-Encoding
Accept-Encoding: gzip, deflate, br
6. Referer
Referer: https://www.google.com/
7. Authorization
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
8. Cookie
Cookie: sessionId=abc123; theme=dark
9. Content-Type
(for POST/PUT-Anfragen)
Content-Type: application/json
10. Origin
Origin: https://www.example.com
These headers help the server understand the request and respond accordingly by providing details about the client, preferred content, and security aspects.