Articles

Json

EN

JSON stands for JavaScript Object Notation. It is a small, text-based format for representing values so that programs can exchange them easily...

Introduction to Version Control

EN

Git is a powerful and widely used version control system that helps you manage code changes, work with others, and keep projects safe. Think of it as a digital timeline you can jump back to whenever something goes wrong. Here are some straightforward reasons to learn Git...

Branching Strategies

EN

Before choosing a branching strategy, it helps to decide what you’re optimizing for: speed, safety, or simplicity. Different teams and projects lean different ways—startups with small codebases won’t work the same as larger, multi-repo setups. This overview lays out the options and how to adapt them...

Testy Jednostkowe

PL

Testy jednostkowe stanowią kluczowy element w procesie wytwarzania oprogramowania, mając na celu weryfikację indywidualnych fragmentów kodu (zazwyczaj funkcji lub metod). Pozwalają programiście mieć pewność, że napisane przez niego komponenty działają zgodnie z oczekiwaniami oraz pomagają w identyfi...

Liczby Losowe

PL

Liczby losowe odgrywają kluczową rolę w wielu obszarach nauki, technologii i przemysłu, takich jak symulacje komputerowe, gry, analiza statystyczna, uczenie maszynowe, a także w badaniach fizycznych i matematycznych. W Pythonie za generowanie liczb losowych odpowiada moduł random, który zapewnia sze...

Napisy

PL

Napisy, często nazywane łańcuchami znaków, to jeden z najpopularniejszych i najbardziej wszechstronnych typów danych w Pythonie. Pozwalają one na przechowywanie oraz przetwarzanie informacji tekstowych i mogą być wykorzystywane w niemal wszystkich rodzajach aplikacji – od prostych skryptów po rozbud...

Zmienne

PL

Zmienne pełnią kluczową rolę w programowaniu, umożliwiając przechowywanie i manipulację danymi. Dzięki nim możemy zapisywać, modyfikować i odzyskiwać wartości w trakcie wykonywania programu. Zrozumienie zmiennych i ich typów jest podstawą do pisania efektywnego i poprawnego kodu...

Warunki

PL

Instrukcje warunkowe są ważnym narzędziem do budowania logiki w programach. Pozwalają one na podejmowanie decyzji w oparciu o sprawdzenie pewnych warunków, które mogą być prawdziwe bądź fałszywe. W praktyce, działanie instrukcji warunkowych przypomina proces myślenia – jeśli coś jest prawdą, to wyko...

Sortowanie

PL

Sortowanie to proces ustawiania elementów kolekcji w określonej kolejności (np. rosnącej lub malejącej). Jest jednym z fundamentalnych zagadnień informatyki. W Pythonie możemy korzystać z wbudowanej funkcji sorted() lub metody list.sort(), jednak znajomość klasycznych algorytmów sortowania pomaga zr...

Struktury Danych

PL

Mamy do dyspozycji kilka różnych sposobów przechowywania danych, które nazywamy strukturami danych. Są to narzędzia, dzięki którym możemy zbierać i przechowywać duże ilości danych w sposób uporządkowany, co znacząco ułatwia pracę z tymi danymi...

Lambdy

PL

Funkcje lambda, zwane również funkcjami anonimowymi, są narzędziem szeroko stosowanym w programowaniu funkcyjnym. Są to krótkie, jedno-wierszowe funkcje, które nie posiadają przypisanej nazwy i są używane tam, gdzie zdefiniowanie pełnoprawnej funkcji byłoby nadmiarowe lub zbędne. W Pythonie i wielu ...

Programowanie Funkcyjne

PL

Programowanie funkcyjne, znane również pod angielską nazwą functional programming, to paradygmat programowania, który może wydawać się nieco odmienny od tradycyjnych metod. Zamiast skupiać się na sekwencji kroków i zmianie stanu programu, jak to ma miejsce w programowaniu imperatywnym, programowanie...

Dziedziczenie i Kompozycja

PL

Dziedziczenie oraz kompozycja to dwa filary programowania obiektowego, dzięki którym możemy pisać elastyczny, modułowy i łatwy w utrzymaniu kod. Każde z tych rozwiązań niesie ze sobą unikalne zalety i wiąże się z określonymi ograniczeniami, dlatego decyzja o ich zastosowaniu powinna wynikać z charak...

Wyrazenia Regularne

PL

Wyrażenia regularne to potężne narzędzie do wyszukiwania, analizy i manipulacji tekstem. Umożliwiają one definiowanie wzorców tekstowych, które można następnie odnaleźć w ciągach znaków. Wyrażenia regularne są często wykorzystywane do...

Klasy Danych

PL

Klasy danych w Pythonie (data classes) ułatwiają tworzenie klas, które mają głównie służyć do przechowywania danych. Automatyzują one powtarzalne fragmenty kodu, takie jak inicjalizacja atrybutów, implementacja operatorów porównania, a także generowanie metod takich jak __repr__ i __eq__. Używanie k...

Logi

PL

W większych aplikacjach, zwłaszcza tych uruchamianych w środowiskach produkcyjnych lub działających przez długi czas, kluczowe znaczenie ma logowanie. Monitorowanie aplikacji za pomocą logów pozwala na analizę jej działania, identyfikację błędów, przewidywanie potencjalnych problemów oraz ocenę wyda...

State Management

EN

Stateful and stateless designs are common terms in software architecture. They describe how an application handles data over multiple interactions. This set of notes explains the differences between applications that remember information between requests and those that treat every request as a fresh...

Web Server Overview

EN

Backend engineers are responsible for setting up and maintaining servers that host web applications, APIs, background jobs, and databases. A web server is not just a machine that returns files. In modern systems, it may also route traffic, terminate HTTPS, proxy requests to application services, enf...

Static Dynamic Content

EN

Web servers deliver two main types of content: static and dynamic. Static content usually consists of files such as HTML, CSS, images, videos, and JavaScript bundles that already exist on the server. These files are served directly to the client without needing extra processing...

Nginx

EN

Nginx is a high-performance web server, reverse proxy, and load balancer that has grown popular for its speed, scalability, and flexibility. It can serve static files extremely quickly, proxy requests to application servers, balance traffic across multiple backends, terminate SSL/TLS connections, an...

Load Balancing

EN

Load balancing is central to designing robust distributed systems. It distributes incoming requests or workloads across multiple servers so that no single machine becomes overloaded. Instead of clients connecting directly to one backend server, they connect to a load balancer, which decides which se...

Apache

EN

Apache HTTP Server (commonly referred to as “Apache”) is one of the most widely used web servers in the world. It is maintained by the Apache Software Foundation and offers robust, flexible, and highly configurable capabilities for serving static and dynamic content. Over the decades, Apache has bec...

Reverse Proxies

EN

A reverse proxy is a server that receives incoming requests from external clients and forwards them to one or more internal servers. To the client, the reverse proxy looks like the application server. Behind the scenes, the proxy decides where the request should go...

Tls

EN

Transport Layer Security, commonly abbreviated as TLS, is a cryptographic protocol that protects data transmitted over computer networks. It is the modern successor to SSL, or Secure Sockets Layer. Although people still often say “SSL certificate” or “SSL connection,” most modern secure web traffic ...

Secure Containers

EN

Containers package an application together with its dependencies, providing portability and reproducibility. That same packaging surface can, however, introduce security risks if images are built carelessly, runtimes are misconfigured, or containers run with unnecessary privileges. This document cov...

Security Vulnerabilities

EN

Backend systems form the foundation of web applications, APIs, and data-driven services. Because the backend often handles authentication, authorization, business logic, databases, payments, personal information, and integrations with other systems, security weaknesses in this layer can have serious...

Credentials Management

EN

Applications almost always need some form of secret. These secrets may include database passwords, API keys, TLS private keys, OAuth client secrets, webhook signing keys, encryption keys, and credentials for third-party services...

Auth

EN

Authentication is the process of verifying who a user is. Authorization is the process of deciding what that user is allowed to access or do...

Third Party Cookies Vulnerabilities

EN

Third-party cookies are cookies set by a domain other than the website the user is directly visiting. For example, a user may visit news.example.com, but that page may load ads, analytics scripts, social widgets, or tracking pixels from another domain. That external domain can set or receive its own...

Security Best Practices and Measures

EN

Security is a multi-layered concern involving networks, systems, applications, data, users, and operational processes. A single misconfiguration, weak password, missing patch, exposed secret, or insecure dependency can give attackers a path into a system...

Deployment Strategies

EN

A deployment strategy defines how a new version of an application is released to production. The right strategy balances risk, speed, infrastructure cost, and rollback complexity...

Ci Cd

EN

Continuous Integration (CI) and Continuous Delivery/Deployment (CD) automate the path from a code commit to running software in production. CI catches integration problems early by building and testing on every commit. CD takes those validated artifacts and delivers them to one or more environments ...

Kubernetes

EN

Kubernetes (K8s) is an open-source container orchestration platform that automates the deployment, scaling, and management of containerised applications across a cluster of machines...

Infrastructure As Code

EN

Infrastructure as Code (IaC) is the practice of defining and managing infrastructure (servers, networks, databases, load balancers) through machine-readable configuration files instead of manual processes or ad-hoc scripts. Changes are committed to version control, reviewed, and applied automaticall...

Docker

EN

Docker packages an application and all of its dependencies into a lightweight, portable unit called a container. Containers share the host OS kernel but run in isolated namespaces, so they start in milliseconds and consume far less memory than virtual machines...