Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/publish-docs-pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Publish docs

on:
push:
branches:
- zaj01

permissions:
contents: write

jobs:
deploy-docs:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Install dependencies
run: |
pip install mkdocs mkdocs-material pymdown-extensions

- name: Deploy to Github Pages
run: |
mkdocs gh-deploy --force
48 changes: 6 additions & 42 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*.py[cod]
*$py.class

# C extensions
Expand Down Expand Up @@ -46,7 +46,7 @@ htmlcov/
nosetests.xml
coverage.xml
*.cover
*.py.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
Expand Down Expand Up @@ -106,24 +106,17 @@ ipython_config.py
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
#poetry.toml

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
#pdm.lock
#pdm.toml
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/

# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
#pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

Expand All @@ -136,7 +129,6 @@ celerybeat.pid

# Environments
.env
.envrc
.venv
env/
venv/
Expand Down Expand Up @@ -175,33 +167,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# Cursor
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
# refer to https://docs.cursor.com/context/ignore-files
.cursorignore
.cursorindexingignore

# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/
Empty file added docs/assets/images/.gitkeep
Empty file.
38 changes: 38 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
Witam Państwa na zajęciach z przedmiotu Programowanie w języku Python (I) dla kierunku **Inżynieria i analiza danych - rok 2, semestr 3**.

## 🎯 Cel kursu

Po ukończeniu kursu uczestnicy będą potrafili:

- Wykorzystywać podstawowe typy danych i struktury,
- Tworzyć funkcje i klasy,
- Pracować z modułami i pakietami,
- Korzystać z podstawowych bibliotek,
- Debugować i testować kod,
- Pisać czytelny i dobrze udokumentowany kod.

## 📌 Informacje o przedmocie

- **Prowadzący**: Jakub Staszel
- **Forma zajęć**: ćwiczenia laboratoryjne
- **Liczba godzin**: 1h 30 min x 30
- **Miejsce**: Sala 312, A0

## 📝 Forma zaliczenia

Aby zaliczyć kurs, uczestnicy muszą:

1. Oddać wszystkie wykonane ćwiczenia,
2. Zaliczyć kolokwium na koniec semestru.

**Nieobecności**: możliwe 2 nieobecności nieusprawiedliwione, później wymagane usprawiedliwienie.

## 🛠️ Wymagania

- Znajomość podstaw programowania,
- Konto na **GitHub**,
- Umiejętność pracy z **terminalem** i **docker**.

## 📢 Kontakt
W razie pytań, proszę o kontakt na Teams lub poprzez email - jstaszel@agh.edu.pl.

196 changes: 196 additions & 0 deletions docs/zaj0/srod-lok.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# 📌 **Środowisko lokalne do pracy z Pythonem w kontenerze**

Na tych zajęciach skonfigurujemy środowisko do pracy z Pythonem w kontenerze **Docker**. Dzięki temu każdy będzie miał **spójne, odizolowane środowisko**, w którym można instalować pakiety, uruchamiać skrypty i pracować z Pythonem **interaktywnie z poziomu IDE**.

---

## 🏁 1. Połączenie z repozytorium w GitHub

### 1.1 Instalacja git

Jeśli nie masz jeszcze gita, możesz go zainstalować:

- **Linux (Ubuntu/Debian):**
```sh
sudo apt update
sudo apt install git
```

- **Windows:** Pobierz instalator ze strony [git-scm.com](https://git-scm.com/) i zainstaluj.

- **macOS:**
```sh
brew install git
```

Po instalacji sprawdź wersję w terminalu:
```sh
git --version
```

### 1.2 Klonowanie repozytorium zdalnego

!!! danger "Link do Twojego repozytorium zdalnego dostaniesz od prowadzącego zajęcia!"

Stwórz lokalną kopię repozytorium, użyj komendy:
```sh
git clone https://github.com/uzytkownik/nazwa-repozytorium.git
```
Lub jeśli używasz SSH:
```sh
git clone git@github.com:uzytkownik/nazwa-repozytorium.git
```

### 1.3 Konfiguracja użytkownika

1. Wejdź w terminalu do folderu ze sklonowanym projektem.
2. Skonfiguruj swoje dane:

```sh
git config user.name "Twoje Imię i Nazwisko"
git config user.email "twoj@email.com"
```

## 🛠 2. Instalacja Dockera

???- info "Jak działa Docker?"

Docker to platforma do uruchamiania aplikacji w kontenerach, czyli lekkich, odizolowanych środowiskach, które zawierają wszystko, co jest potrzebne do działania aplikacji (kod, zależności, konfigurację). Dzięki temu aplikacje działają identycznie niezależnie od systemu operacyjnego.

- Każdy kontener działa jak mini-wirtualna maszyna, ale jest lżejszy i bardziej wydajny.

- Docker używa obrazów – predefiniowanych pakietów, które można wielokrotnie uruchamiać jako kontenery.

- Izolacja pozwala uniknąć konfliktów zależności i różnic między środowiskami.

???- info "Po co nam Docker?"

Docker jest przydatny, ponieważ:

- Eliminuje problem „u mnie działa” – środowisko w kontenerze jest identyczne na każdym komputerze.

- Łatwo można współdzielić środowiska – wystarczy przekazać pliki Dockerfile i devcontainer.json.

- Szybkie wdrażanie – nowe środowisko można uruchomić w kilka sekund.

- Ułatwia pracę zespołową – każdy programista ma tę samą konfigurację.

- Można uruchamiać aplikacje w chmurze i na serwerach bez zmian w kodzie.

Docker to idealne narzędzie dla programistów, którzy chcą pracować w powtarzalnym i stabilnym środowisku! 🚀

### 📥 2.1. Instalacja na Windows/macOS/Linux
1. Pobierz i zainstaluj **Docker Desktop**: [Pobierz Docker](https://www.docker.com/get-started)
2. Sprawdź instalację:
```sh
docker --version
```
3. Upewnij się, że Docker jest **uruchomiony**.

---

## 🔧 3. Konfiguracja IDE (VS Code) z Dockerem i Miniforge

- **Otwórz katalog projektu** w VS Code.
- Zapoznaj się z widocznymi tam plikami:

???- info "Plik `Dockerfile`"

Ten plik definiuje obraz Dockera z preinstalowanym Pythonem i condą.

```dockerfile
FROM condaforge/miniforge3:latest

WORKDIR /app

CMD ["/bin/bash", "-l"]
```

???- info "Plik `./.devcontainer/devcontainer.json`"

Ten plik konfiguruje VS Code do pracy w kontenerze Dockera z odpowiednimi rozszerzeniami.

```json
{
"name": "Python Dev Container",
"build": {
"dockerfile": "../Dockerfile"
},
"workspaceFolder": "/app",
"mounts": [
"source=${localWorkspaceFolder},target=/app,type=bind,consistency=cached"
],
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"ms-python.python",
"ms-vscode-remote.remote-containers",
"ms-vscode-remote.dev-containers"
]
}
}
}
```

- Ręcznie zbuduj obraz w terminalu:
```sh
docker build -t python-env .
```

- Uruchom kontener w trybie interaktywnym i podłącz lokalny katalog:
```sh
docker run -it -v .:/app python-env /bin/bash -l
```
Dzięki temu wszystkie zmiany w projekcie będą widoczne w kontenerze.

---

Teraz chcemy sobie ułatwić życie, połączyć się do kontenera bezpośrednio z VS Code:

- **Zainstaluj rozszerzenie** ➝ `Remote - Containers` lub `Dev Container`.
- Kliknij `Ctrl+Shift+P` i wybierz **`Remote-Containers: Reopen in Container`**.
- VS Code uruchomi kontener i otworzy projekt w odizolowanym środowisku.
- Otwórz terminal w VS Code (`Ctrl+~`) i sprawdź aktywne środowisko Conda:
```sh
conda info --envs
```
Powinieneś zobaczyć, że aktywowane jest środowisko `base`.

---

## 📦 5. Instalacja pakietów wewnątrz kontenera

!!! danger "Tego kroku nie robimy, jest czysto informacyjny."

Gdy kontener jest uruchomiony, można instalować pakiety za pomocą **mamby**:

```sh
micromamba install -y -n base -c conda-forge matplotlib geopandas
```
Pakiety można też instalować przez **pip**:
```sh
pip install requests
```

---

## 📝 Zadania

Utwórz plik `main.py`:

```python
import this
```

Uruchom go w kontenerze:

```sh
python main.py
```

Zrób zrzut ekranu (screenshot) pokazujący wynik działania tego skryptu w terminalu kontenera i wyślij go na czat 📸

---
Loading