Files
lab-cpp-scope-lifetime/web/card-data.json
T
2026-07-21 20:12:58 +02:00

2819 lines
129 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema": "esc-card-react-view.v1",
"card": {
"id": "mpabi-inf-cpp-y2s1-08-scope-lifetime",
"series": "cpp",
"series_title": "C++ · Rok 2 · Semestr 1",
"number": "08",
"count": "10",
"slug": "scope-lifetime",
"title": "CPP08 · Zakres i czas życia obiektów",
"topic": "Obiekty automatyczne, statyczne i dynamiczne oraz przesłanianie nazw",
"project": "C++20 · fundamenty języka i modelu obiektu",
"subject": "Informatyka",
"level": "Rok 2 · Semestr 1",
"revision_date": "2026-07-21T00:00:00+02:00",
"status": "Gotowa do wykonania",
"version": "v00.01",
"uuid": "0d0c3a10-2744-5245-ad9e-8a910694a5b2",
"author": "M. Pabiszczak",
"year": "2026"
},
"library": {
"schema": "stem-card-library.v2",
"workspace": "edu",
"subjects": [
{
"id": "inf",
"title": "INF · Informatyka",
"current": true,
"levels": [
{
"id": "year-1",
"title": "Rok 1",
"current": false,
"series": [
{
"id": "console-bash",
"title": "Bash · Console Tools",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "L01",
"title": "BusyBox — the Swiss Army Knife",
"repo": "lab-console-busybox",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L02",
"title": "Tmux — sessions, windows and panes",
"repo": "lab-console-tmux",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L03",
"title": "Neovim — navigation and editing",
"repo": "lab-console-neovim",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L04",
"title": "Git Basics I — status, add and commit",
"repo": "lab-console-git-basics-1",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L05",
"title": "Git Basics II — log, diff and restore",
"repo": "lab-console-git-basics-2",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L06",
"title": "Git Branching I — branch, switch and merge",
"repo": "lab-console-git-branching-1",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L07",
"title": "Git Branching II — rebase and conflicts",
"repo": "lab-console-git-branching-2",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L08",
"title": "Docker Fundamentals",
"repo": "lab-console-docker",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
}
]
},
{
"id": "rv32i-asm",
"title": "ASM · RV32I From Blinker to RISC-V",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "L01",
"title": "Number Systems and Storage",
"repo": "lab-rv32i-asm-number-systems",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L02",
"title": "FPGA Bring-up and Programming",
"repo": "lab-rv32i-asm-fpga-bringup",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L03",
"title": "Blinker and Synchronous Logic",
"repo": "lab-rv32i-asm-blinker",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L04",
"title": "The RISC-V ISA and Instruction Decoder",
"repo": "lab-rv32i-asm-decoder",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L05",
"title": "ALU and the Verilog Assembler",
"repo": "lab-rv32i-asm-alu",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L06",
"title": "Control Flow — Jumps and Branches",
"repo": "lab-rv32i-asm-control-flow",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L07",
"title": "Addresses and Memory",
"repo": "lab-rv32i-asm-addresses-memory",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L08",
"title": "Subroutines and ABI",
"repo": "lab-rv32i-asm-subroutines-abi",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "L09",
"title": "Load and Store Semantics",
"repo": "lab-rv32i-asm-load-store",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "09",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
}
]
},
{
"id": "c",
"title": "C · Freestanding RV32I and K&R",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "C01",
"title": "ASM, C and GCC",
"repo": "lab-rv32i-strlen-asm-c-gcc",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/852fa3c7-8329-583a-a244-b639d2e04495",
"local_href": "/852fa3c7-8329-583a-a244-b639d2e04495/",
"resource_uuid": "852fa3c7-8329-583a-a244-b639d2e04495",
"available": true,
"current": false,
"number": "01",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Ręczna implementacja RV32I ASM"
},
{
"id": "task02",
"title": "Referencyjna implementacja w C"
},
{
"id": "task03",
"title": "ASM wyemitowany przez GCC"
}
]
},
{
"id": "C02",
"title": ".bss, .data and static storage",
"repo": "lab-rv32i-strlen-bss-data-stack",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/74afa921-fb51-5017-bcdb-f6e84fb444d8",
"local_href": "/74afa921-fb51-5017-bcdb-f6e84fb444d8/",
"resource_uuid": "74afa921-fb51-5017-bcdb-f6e84fb444d8",
"available": true,
"current": false,
"number": "02",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Wynik strlen w .bss"
},
{
"id": "task02",
"title": "Wynik i napis w .data"
},
{
"id": "task03",
"title": "Nieużyta tablica lokalna"
},
{
"id": "task04",
"title": "Użyta tablica lokalna i stack frame"
}
]
},
{
"id": "C03",
"title": "ABI and Stack Frame",
"repo": "lab-rv32i-strlen-abi-stack",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/72b22a0a-3297-5d75-a6ff-d1af48132d6c",
"local_href": "/72b22a0a-3297-5d75-a6ff-d1af48132d6c/",
"resource_uuid": "72b22a0a-3297-5d75-a6ff-d1af48132d6c",
"available": true,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Argument i wynik bez powrotu z main"
},
{
"id": "task02",
"title": "Pełny stack frame i zachowanie ra"
}
]
},
{
"id": "C04",
"title": "Types, Operators and Expressions",
"repo": "lab-rv32i-c-types-operators-expressions",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/7818aa68-4983-5aca-bf7f-541cfce5c601",
"local_href": "/7818aa68-4983-5aca-bf7f-541cfce5c601/",
"resource_uuid": "7818aa68-4983-5aca-bf7f-541cfce5c601",
"available": true,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Nazwy i stałe symboliczne"
},
{
"id": "task02",
"title": "Typy i zakresy"
},
{
"id": "task03",
"title": "Stałe, długość i enum"
},
{
"id": "task04",
"title": "Deklaracje, inicjalizacja i const"
},
{
"id": "task05",
"title": "Arytmetyka i rok przestępny"
},
{
"id": "task06",
"title": "Porównania i logika"
},
{
"id": "task07",
"title": "Konwersje: atoi, lower i htoi"
},
{
"id": "task08",
"title": "Inkrementacja i operacje na napisach"
},
{
"id": "task09",
"title": "Operatory bitowe"
},
{
"id": "task10",
"title": "Przypisania i bitcount"
},
{
"id": "task11",
"title": "Operator warunkowy"
},
{
"id": "task12",
"title": "Priorytet i kolejność obliczeń"
}
]
},
{
"id": "C05",
"title": "Control Flow",
"repo": "lab-rv32i-c-control-flow",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/7512361d-e5e6-5c08-ab18-8be29dacdc10",
"local_href": "/7512361d-e5e6-5c08-ab18-8be29dacdc10/",
"resource_uuid": "7512361d-e5e6-5c08-ab18-8be29dacdc10",
"available": true,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Instrukcje i bloki"
},
{
"id": "task02",
"title": "if-else i dangling else"
},
{
"id": "task03",
"title": "else-if i wyszukiwanie binarne"
},
{
"id": "task04",
"title": "switch: escape i unescape"
},
{
"id": "task05",
"title": "while, for i Shell sort"
},
{
"id": "task06",
"title": "do-while i itoa"
},
{
"id": "task07",
"title": "break i continue"
},
{
"id": "task08",
"title": "goto i etykiety"
}
]
},
{
"id": "C06",
"title": "Functions and Program Structure",
"repo": "lab-rv32i-c-functions-program-structure",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/9667818d-b691-501d-817c-b58be4cbd594",
"local_href": "/9667818d-b691-501d-817c-b58be4cbd594/",
"resource_uuid": "9667818d-b691-501d-817c-b58be4cbd594",
"available": true,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Funkcje i strindex"
},
{
"id": "task02",
"title": "double i atof z wykładnikiem"
},
{
"id": "task03",
"title": "Zewnętrzny stos RPN"
},
{
"id": "task04",
"title": "Scope i extern"
},
{
"id": "task05",
"title": "Nagłówki i prototypy"
},
{
"id": "task06",
"title": "Static storage"
},
{
"id": "task07",
"title": "Zmienne register"
},
{
"id": "task08",
"title": "Struktura blokowa"
},
{
"id": "task09",
"title": "Inicjalizacja"
},
{
"id": "task10",
"title": "Rekurencja i quicksort"
},
{
"id": "task11",
"title": "Preprocesor i makra"
}
]
},
{
"id": "C07",
"title": "Pointers, Arrays and Linear Allocator",
"repo": "lab-rv32i-c-pointers-arrays",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/98dbe323-c624-53d6-9fe2-4ee688c44b38",
"local_href": "/98dbe323-c624-53d6-9fe2-4ee688c44b38/",
"resource_uuid": "98dbe323-c624-53d6-9fe2-4ee688c44b38",
"available": true,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
},
{
"id": "task04",
"title": "K&R 5.4 -- Linear Memory Allocator"
},
{
"id": "task05",
"title": "task05"
},
{
"id": "task06",
"title": "task06"
},
{
"id": "task07",
"title": "task07"
},
{
"id": "task08",
"title": "task08"
},
{
"id": "task09",
"title": "task09"
},
{
"id": "task10",
"title": "task10"
},
{
"id": "task11",
"title": "task11"
},
{
"id": "task12",
"title": "task12"
}
]
},
{
"id": "C08",
"title": "Structures and Linked State",
"repo": "lab-rv32i-c-structures",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/f60fbba3-a788-5f1e-bc24-52af82f227c9",
"local_href": "/f60fbba3-a788-5f1e-bc24-52af82f227c9/",
"resource_uuid": "f60fbba3-a788-5f1e-bc24-52af82f227c9",
"available": true,
"current": false,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Układ BlockHeader"
},
{
"id": "task02",
"title": "Nagłówek, payload i odzyskanie właściciela"
},
{
"id": "task03",
"title": "Intruzywna lista wolnych bloków"
},
{
"id": "task04",
"title": "Wyrównana arena dwóch bloków"
}
]
},
{
"id": "C09",
"title": "smalloc, sbrk and minimal libc",
"repo": "lab-rv32i-c-smalloc-sbrk-libc",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8e4f8bee-41f0-523b-8ea2-8926bd3d7ab0",
"local_href": "/8e4f8bee-41f0-523b-8ea2-8926bd3d7ab0/",
"resource_uuid": "8e4f8bee-41f0-523b-8ea2-8926bd3d7ab0",
"available": true,
"current": false,
"number": "09",
"version": "v00.01",
"status": "planned",
"tasks": [
{
"id": "task01",
"title": "strlen z libc bez sterty"
},
{
"id": "task02",
"title": "Kontrolowany brak dostawcy sbrk"
},
{
"id": "task03",
"title": "Bounded sbrk i atomowy błąd"
},
{
"id": "task04",
"title": "Wyrównany smalloc append-only"
},
{
"id": "task05",
"title": "malloc/free picolibc jako czarna skrzynka"
}
]
},
{
"id": "C10",
"title": "RV32I Traps and Interrupt Control",
"repo": "lab-rv32i-c-interrupts",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8fb9c110-557b-5081-8ae2-a56800f872e8",
"local_href": "/8fb9c110-557b-5081-8ae2-a56800f872e8/",
"resource_uuid": "8fb9c110-557b-5081-8ae2-a56800f872e8",
"available": true,
"current": false,
"number": "10",
"version": "v00.01",
"status": "planned",
"tasks": [
{
"id": "task01",
"title": "ECALL i wznowienie pod mepc+4"
},
{
"id": "task02",
"title": "Machine software IRQ i clear źródła"
},
{
"id": "task03",
"title": "Macierz pending, MSIE i MIE"
}
]
},
{
"id": "C11",
"title": "Machine Timer and Periodic Work",
"repo": "lab-rv32i-c-timer",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "11",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "C12",
"title": "UART — polling and interrupts",
"repo": "lab-rv32i-c-uart",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/64f7c516-78b1-58ee-8619-a82d7061079f",
"local_href": "/64f7c516-78b1-58ee-8619-a82d7061079f/",
"resource_uuid": "64f7c516-78b1-58ee-8619-a82d7061079f",
"available": true,
"current": false,
"number": "12",
"version": "v00.01",
"status": "planned",
"tasks": [
{
"id": "task01",
"title": "Polling jednego bajtu"
},
{
"id": "task02",
"title": "Odbiór R przez external IRQ 16"
},
{
"id": "task03",
"title": "Jednokomórkowa skrzynka drop-newest"
}
]
},
{
"id": "C13",
"title": "GPIO, Edges and Debounce",
"repo": "lab-rv32i-c-gpio",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "13",
"version": "",
"status": "planned",
"tasks": []
}
]
}
]
},
{
"id": "year-2",
"title": "Rok 2",
"current": true,
"series": [
{
"id": "cpp",
"title": "C++ · Rok 2 · Semestr 1",
"current": true,
"catalog_only": false,
"role": "",
"status": "",
"cards": [
{
"id": "CPP01",
"title": "Oddzielna kompilacja, linkage i przestrzenie nazw",
"repo": "lab-cpp-build-namespaces",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP02",
"title": "Typy, inicjalizacja, auto, const i enum class",
"repo": "lab-cpp-types-initialization",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP03",
"title": "Wskaźniki, referencje, tablice i nullptr",
"repo": "lab-cpp-pointers-references",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP04",
"title": "Funkcje, przeciążanie i modułowość",
"repo": "lab-cpp-functions-overloading",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP05",
"title": "Klasa i obiekt: interfejs oraz implementacja",
"repo": "lab-cpp-classes-objects",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP06",
"title": "Hermetyzacja, niezmienniki i odpowiedzialność klasy",
"repo": "lab-cpp-invariants",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP07",
"title": "Konstruktory, destruktory i inicjalizacja obiektu",
"repo": "lab-cpp-construction-destruction",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP08",
"title": "Zakres i czas życia obiektów",
"repo": "lab-cpp-scope-lifetime",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": true,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP09",
"title": "RAII i zasób związany z czasem życia",
"repo": "lab-cpp-raii",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "09",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
},
{
"id": "CPP10",
"title": "Kopiowanie, przenoszenie i Rule of Zero/Five",
"repo": "lab-cpp-copy-move",
"href": "http://localhost:8080",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "10",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "task01"
},
{
"id": "task02",
"title": "task02"
},
{
"id": "task03",
"title": "task03"
}
]
}
]
},
{
"id": "freertos-c",
"title": "FreeRTOS C",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "FC01",
"title": "heap_4: From Linear Cursor to Reusable Blocks",
"repo": "lab-rv32i-freertos-heap4",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7",
"local_href": "/aea09ab7-9bfd-5368-8d1b-c8724871c1a7/",
"resource_uuid": "aea09ab7-9bfd-5368-8d1b-c8724871c1a7",
"available": true,
"current": false,
"number": "01",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Predict and prove reusable heap_4 blocks"
}
]
},
{
"id": "FC02",
"title": "First Task, TCB and Task Stack",
"repo": "lab-rv32i-freertos-c-first-task",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a2538a1a-3c37-4c14-a6ea-db5aba8fd038",
"local_href": "/a2538a1a-3c37-4c14-a6ea-db5aba8fd038/",
"resource_uuid": "a2538a1a-3c37-4c14-a6ea-db5aba8fd038",
"available": true,
"current": false,
"number": "02",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Pierwszy task FreeRTOS — callback, context, TCB i stos"
}
]
},
{
"id": "FC03",
"title": "Tick, Scheduler, Priorities and Time Slicing",
"repo": "lab-rv32i-freertos-c-scheduler",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2214a13f-34c6-40a1-a561-70a00ec98285",
"local_href": "/2214a13f-34c6-40a1-a561-70a00ec98285/",
"resource_uuid": "2214a13f-34c6-40a1-a561-70a00ec98285",
"available": true,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Kontrolowany eksperyment schedulera FreeRTOS"
}
]
},
{
"id": "FC04",
"title": "Delay, Blocking and Task States",
"repo": "lab-rv32i-freertos-c-delay-state",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/4a7ef04c-ab08-5783-9192-5b02a90f05f8",
"local_href": "/4a7ef04c-ab08-5783-9192-5b02a90f05f8/",
"resource_uuid": "4a7ef04c-ab08-5783-9192-5b02a90f05f8",
"available": true,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Delay, blokowanie, zawieszenie i self-delete"
}
]
},
{
"id": "FC05",
"title": "Queues and Byte-copy Semantics",
"repo": "lab-rv32i-freertos-c-queue",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8ee8f36a-471b-51bc-97b8-e204bd541c61",
"local_href": "/8ee8f36a-471b-51bc-97b8-e204bd541c61/",
"resource_uuid": "8ee8f36a-471b-51bc-97b8-e204bd541c61",
"available": true,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Kolejka długości 1: empty, full, copy i FIFO"
}
]
},
{
"id": "FC06",
"title": "Software Timers and the Daemon Task",
"repo": "lab-rv32i-freertos-c-software-timers",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/ab188300-f03d-5ddb-8316-b9534876a5bc",
"local_href": "/ab188300-f03d-5ddb-8316-b9534876a5bc/",
"resource_uuid": "ab188300-f03d-5ddb-8316-b9534876a5bc",
"available": true,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "One-shot, auto-reload i timer daemon"
}
]
},
{
"id": "FC07",
"title": "Interrupt-safe API and Semaphore Handoff",
"repo": "lab-rv32i-freertos-c-isr-semaphore",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a6da1075-8d1f-5615-b0e6-0fc33e59e1e3",
"local_href": "/a6da1075-8d1f-5615-b0e6-0fc33e59e1e3/",
"resource_uuid": "a6da1075-8d1f-5615-b0e6-0fc33e59e1e3",
"available": true,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "External IRQ → FromISR semaphore → high-priority task"
}
]
},
{
"id": "FC08",
"title": "Critical Sections, Mutexes and Priority Inheritance",
"repo": "lab-rv32i-freertos-c-resource-management",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2392f81a-ed6c-510b-86b5-06c5e2f1c6aa",
"local_href": "/2392f81a-ed6c-510b-86b5-06c5e2f1c6aa/",
"resource_uuid": "2392f81a-ed6c-510b-86b5-06c5e2f1c6aa",
"available": true,
"current": false,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Low/Medium/High: ownership i dziedziczenie priorytetu"
}
]
},
{
"id": "FC09",
"title": "Event Groups and Multi-event Synchronization",
"repo": "lab-rv32i-freertos-c-event-groups",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f",
"local_href": "/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f/",
"resource_uuid": "3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f",
"available": true,
"current": false,
"number": "09",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "ALL-ready i trzyosobowa bariera"
}
]
},
{
"id": "FC10",
"title": "Direct-to-task Notifications",
"repo": "lab-rv32i-freertos-c-notifications",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078",
"local_href": "/3b57334e-2c35-5207-a51d-9321906db078/",
"resource_uuid": "3b57334e-2c35-5207-a51d-9321906db078",
"available": true,
"current": false,
"number": "10",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Count, overwrite i bit flags na jednym slocie"
}
]
},
{
"id": "FC11",
"title": "Static Allocation and Bounded Storage",
"repo": "lab-rv32i-freertos-c-static-allocation",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/f4d7caf3-d665-5a2d-b9eb-39a120a64ff7",
"local_href": "/f4d7caf3-d665-5a2d-b9eb-39a120a64ff7/",
"resource_uuid": "f4d7caf3-d665-5a2d-b9eb-39a120a64ff7",
"available": true,
"current": false,
"number": "11",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Same behavior, two storage policies"
}
]
},
{
"id": "FC12",
"title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics",
"repo": "lab-rv32i-freertos-c-diagnostics",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c3027314-85a4-5e4a-af13-0939c7467a62",
"local_href": "/c3027314-85a4-5e4a-af13-0939c7467a62/",
"resource_uuid": "c3027314-85a4-5e4a-af13-0939c7467a62",
"available": true,
"current": false,
"number": "12",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Diagnose before changing the program"
}
]
},
{
"id": "FC13",
"title": "UART Interrupt-to-task Pipeline",
"repo": "lab-rv32i-freertos-c-uart",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/6a838fd1-ab1b-52b6-baaf-659120a4d60a",
"local_href": "/6a838fd1-ab1b-52b6-baaf-659120a4d60a/",
"resource_uuid": "6a838fd1-ab1b-52b6-baaf-659120a4d60a",
"available": true,
"current": false,
"number": "13",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Build and prove a bounded UART RX pipeline"
}
]
},
{
"id": "FC14",
"title": "GPIO, Hardware Timer and Deferred Work",
"repo": "lab-rv32i-freertos-c-gpio-timer",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/0cc561df-bf81-5bba-9df1-c872d5b42eb8",
"local_href": "/0cc561df-bf81-5bba-9df1-c872d5b42eb8/",
"resource_uuid": "0cc561df-bf81-5bba-9df1-c872d5b42eb8",
"available": true,
"current": false,
"number": "14",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Prove one machine-timer event from ISR to daemon GPIO work"
}
]
},
{
"id": "FC15",
"title": "Integrated Deterministic FreeRTOS C Application",
"repo": "lab-rv32i-freertos-c-integration",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/fe92efeb-3c38-5975-86d8-ed630e1ad3bb",
"local_href": "/fe92efeb-3c38-5975-86d8-ed630e1ad3bb/",
"resource_uuid": "fe92efeb-3c38-5975-86d8-ed630e1ad3bb",
"available": true,
"current": false,
"number": "15",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Prove one complete FreeRTOS C architecture"
}
]
}
]
},
{
"id": "freertos-cpp",
"title": "FreeRTOS C++",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "K02",
"title": "C++ Task<Derived> Wrapper, CRTP and Lifecycle",
"repo": "lab-rv32i-freertos-task-stack-vector",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/948ce9fd-3d0c-5721-a0ae-ef422008fec8",
"local_href": "/948ce9fd-3d0c-5721-a0ae-ef422008fec8/",
"resource_uuid": "948ce9fd-3d0c-5721-a0ae-ef422008fec8",
"available": true,
"current": false,
"number": "02",
"version": "v00.04",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "C++ Task wrapper — OOP i debugowanie cyklu życia"
}
]
},
{
"id": "K03",
"title": "Vector V1 — Destructor, Move, Ownership and RAII",
"repo": "lab-rv32i-freertos-vector-raii",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/de1a2818-4c30-5760-8b31-255114f82e90",
"local_href": "/de1a2818-4c30-5760-8b31-255114f82e90/",
"resource_uuid": "de1a2818-4c30-5760-8b31-255114f82e90",
"available": true,
"current": false,
"number": "03",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Vector V1 — transfer własności i powrót heapu"
}
]
},
{
"id": "K04",
"title": "Scheduler States, Priorities and Typed Ticks",
"repo": "lab-rv32i-freertos-scheduler-states",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/853a7dd7-b00b-4f4a-96e8-c160fc5bb04a",
"local_href": "/853a7dd7-b00b-4f4a-96e8-c160fc5bb04a/",
"resource_uuid": "853a7dd7-b00b-4f4a-96e8-c160fc5bb04a",
"available": true,
"current": false,
"number": "04",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Osiem snapshotów decyzji schedulera"
}
]
},
{
"id": "K05",
"title": "C++ Heap Bridge, Heap Models and HeapStats",
"repo": "lab-rv32i-freertos-heap-models",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c456b505-dc5c-4894-b832-bb4c5afd0feb",
"local_href": "/c456b505-dc5c-4894-b832-bb4c5afd0feb/",
"resource_uuid": "c456b505-dc5c-4894-b832-bb4c5afd0feb",
"available": true,
"current": false,
"number": "05",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Fragmentacja, koalescencja i historyczny watermark"
}
]
},
{
"id": "K06",
"title": "MemoryResource and FreeRtosAllocator<T>",
"repo": "lab-rv32i-freertos-allocator-resource",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/1af48a2e-8564-4e18-8115-b2c0208169d6",
"local_href": "/1af48a2e-8564-4e18-8115-b2c0208169d6/",
"resource_uuid": "1af48a2e-8564-4e18-8115-b2c0208169d6",
"available": true,
"current": false,
"number": "06",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Dwa zasoby, jeden typed allocator"
}
]
},
{
"id": "K07",
"title": "TaskHandle_t, Explicit Start and Static Trampoline",
"repo": "lab-rv32i-freertos-task-wrapper",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/9bffead0-4341-4350-806d-e975b1a3a08f",
"local_href": "/9bffead0-4341-4350-806d-e975b1a3a08f/",
"resource_uuid": "9bffead0-4341-4350-806d-e975b1a3a08f",
"available": true,
"current": false,
"number": "07",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Stabilny obiekt przez statyczny trampoline"
}
]
},
{
"id": "K08",
"title": "DynamicTask, StaticTask, Deletion and Lifetime",
"repo": "lab-rv32i-freertos-static-task",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/d9e45417-a37f-487c-813f-fc7a44d4b4f3",
"local_href": "/d9e45417-a37f-487c-813f-fc7a44d4b4f3/",
"resource_uuid": "d9e45417-a37f-487c-813f-fc7a44d4b4f3",
"available": true,
"current": false,
"number": "08",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Dwie polityki storage i pełna oś delete"
}
]
},
{
"id": "K09",
"title": "Scheduler Facade and Scoped Kernel Guards",
"repo": "lab-rv32i-freertos-kernel-facade",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/6a2ab068-17e7-4bfa-b726-2df37787ed69",
"local_href": "/6a2ab068-17e7-4bfa-b726-2df37787ed69/",
"resource_uuid": "6a2ab068-17e7-4bfa-b726-2df37787ed69",
"available": true,
"current": false,
"number": "09",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Fasada kernela i restore na każdej ścieżce"
}
]
},
{
"id": "K10",
"title": "Queue<T> and StaticQueue<T, N>",
"repo": "lab-rv32i-freertos-queue",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/66967c2d-bb34-4344-8064-f54d06cce47a",
"local_href": "/66967c2d-bb34-4344-8064-f54d06cce47a/",
"resource_uuid": "66967c2d-bb34-4344-8064-f54d06cce47a",
"available": true,
"current": false,
"number": "10",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Typed byte-copy queue z dwiema politykami storage"
}
]
},
{
"id": "K11",
"title": "Mutex, LockGuard and Priority Inheritance",
"repo": "lab-rv32i-freertos-mutex",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/34d7ad61-6b03-4922-8e58-b8b98316e5f7",
"local_href": "/34d7ad61-6b03-4922-8e58-b8b98316e5f7/",
"resource_uuid": "34d7ad61-6b03-4922-8e58-b8b98316e5f7",
"available": true,
"current": false,
"number": "11",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "LockGuard i zmierzone priority inheritance"
}
]
},
{
"id": "K12",
"title": "Semaphores and Task Notifications",
"repo": "lab-rv32i-freertos-semaphore-notify",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/fcb6107c-268f-4e86-a8cc-092e5875f6f0",
"local_href": "/fcb6107c-268f-4e86-a8cc-092e5875f6f0/",
"resource_uuid": "fcb6107c-268f-4e86-a8cc-092e5875f6f0",
"available": true,
"current": false,
"number": "12",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Semaphore slots i jednoodbiorcza notification"
}
]
},
{
"id": "K13",
"title": "EventGroup and Coordinated State",
"repo": "lab-rv32i-freertos-event-group",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/5fbcd7c6-3a73-4cd2-b76c-bdb016d1daaa",
"local_href": "/5fbcd7c6-3a73-4cd2-b76c-bdb016d1daaa/",
"resource_uuid": "5fbcd7c6-3a73-4cd2-b76c-bdb016d1daaa",
"available": true,
"current": false,
"number": "13",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Typed EventGroup i trzy źródła stanu"
}
]
},
{
"id": "K14",
"title": "Software Timer and the Timer Daemon Task",
"repo": "lab-rv32i-freertos-sw-timer",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/78db37df-63e5-4c5b-80ce-f73a411f0b50",
"local_href": "/78db37df-63e5-4c5b-80ce-f73a411f0b50/",
"resource_uuid": "78db37df-63e5-4c5b-80ce-f73a411f0b50",
"available": true,
"current": false,
"number": "14",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "Static one-shot i periodic timer na daemon tasku"
}
]
},
{
"id": "K15",
"title": "Explicit FromISR, UART and GPIO Wrappers",
"repo": "lab-rv32i-freertos-isr-drivers",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/02f6cd71-5c85-4883-a237-1d4ba08d9469",
"local_href": "/02f6cd71-5c85-4883-a237-1d4ba08d9469/",
"resource_uuid": "02f6cd71-5c85-4883-a237-1d4ba08d9469",
"available": true,
"current": false,
"number": "15",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "UART queue i GPIO notify z realnego IRQ"
}
]
},
{
"id": "K16",
"title": "Integrated Real-time Application and Evidence",
"repo": "lab-rv32i-freertos-integration",
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/05b4f486-a27c-455d-a315-f4e51a4c66b3",
"local_href": "/05b4f486-a27c-455d-a315-f4e51a4c66b3/",
"resource_uuid": "05b4f486-a27c-455d-a315-f4e51a4c66b3",
"available": true,
"current": false,
"number": "16",
"version": "v00.01",
"status": "existing",
"tasks": [
{
"id": "task01",
"title": "End-to-end RTOS service i evidence report"
}
]
}
]
},
{
"id": "posix-threads",
"title": "POSIX Threads",
"current": false,
"catalog_only": true,
"role": "",
"status": "",
"cards": [
{
"id": "PT01",
"title": "Process and Thread Execution Context",
"repo": "lab-posix-process-thread",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT02",
"title": "pthread_create, pthread_join and Lifecycle",
"repo": "lab-posix-pthread-create-join",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT03",
"title": "Arguments, Return Values and Ownership",
"repo": "lab-posix-thread-arguments",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT04",
"title": "Data Races and the Happens-before Question",
"repo": "lab-posix-data-races",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT05",
"title": "Mutex, Critical Section and Deadlock",
"repo": "lab-posix-mutex",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT06",
"title": "Condition Variables and Predicates",
"repo": "lab-posix-condition-variable",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT07",
"title": "Bounded ProducerConsumer Queue",
"repo": "lab-posix-producer-consumer",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT08",
"title": "POSIX Semaphores",
"repo": "lab-posix-semaphore",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "08",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT09",
"title": "ReaderWriter Lock",
"repo": "lab-posix-rwlock",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "09",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT10",
"title": "C Atomics and Memory Ordering",
"repo": "lab-posix-atomics",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "10",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT11",
"title": "Cancellation, Cleanup and Safe Shutdown",
"repo": "lab-posix-cancellation-cleanup",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "11",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT12",
"title": "Thread-local Storage",
"repo": "lab-posix-thread-local",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "12",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT13",
"title": "Scheduling Policy, Priority and Affinity",
"repo": "lab-posix-scheduling",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "13",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT14",
"title": "GDB, Sanitizers and Race Evidence",
"repo": "lab-posix-thread-debugging",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "14",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "PT15",
"title": "POSIX Threads vs FreeRTOS Integration",
"repo": "lab-posix-freertos-comparison",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "15",
"version": "",
"status": "planned",
"tasks": []
}
]
},
{
"id": "oop",
"title": "OOP and Design Patterns",
"current": false,
"catalog_only": true,
"role": "reference",
"status": "",
"cards": [
{
"id": "OOP01",
"title": "Strategy — Replaceable Behaviour",
"repo": "lab-cpp-oop-strategy",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "",
"status": "design",
"tasks": []
},
{
"id": "OOP02",
"title": "Adapter — Stable Boundary",
"repo": "lab-cpp-oop-adapter",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP03",
"title": "Template Method — Fixed Skeleton",
"repo": "lab-cpp-oop-template-method",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP04",
"title": "Static vs Dynamic Dispatch",
"repo": "lab-cpp-oop-dispatch",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP05",
"title": "RAII and Ownership",
"repo": "lab-cpp-oop-raii",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP06",
"title": "State — Explicit Behaviour",
"repo": "lab-cpp-oop-state",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP07",
"title": "Facade — Subsystem Boundary",
"repo": "lab-cpp-oop-facade",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP08",
"title": "Command — Request as Object",
"repo": "lab-cpp-oop-command",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "08",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP09",
"title": "Observer — Subscription and Telemetry",
"repo": "lab-cpp-oop-observer",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "09",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP10",
"title": "Factory Method — Resource Policy",
"repo": "lab-cpp-oop-factory-method",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "10",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP11",
"title": "Builder — Valid Configuration",
"repo": "lab-cpp-oop-builder",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "11",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP12",
"title": "Decorator — Measurement and Diagnostics",
"repo": "lab-cpp-oop-decorator",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "12",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP13",
"title": "Composite — Component Tree",
"repo": "lab-cpp-oop-composite",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "13",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP14",
"title": "Chain of Responsibility",
"repo": "lab-cpp-oop-chain",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "14",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP15",
"title": "Pattern-language Integration",
"repo": "lab-cpp-oop-integration",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "15",
"version": "",
"status": "planned",
"tasks": []
}
]
}
]
},
{
"id": "year-3",
"title": "Rok 3 · plan",
"current": false,
"series": [
{
"id": "modern-cpp-stl",
"title": "Modern C++ / STL",
"current": false,
"catalog_only": true,
"role": "",
"status": "scope-reserved",
"cards": []
},
{
"id": "std-threads",
"title": "std::thread / std::jthread",
"current": false,
"catalog_only": true,
"role": "",
"status": "scope-reserved",
"cards": []
},
{
"id": "boost-asio",
"title": "Boost.Asio",
"current": false,
"catalog_only": true,
"role": "",
"status": "scope-reserved",
"cards": []
},
{
"id": "oop",
"title": "OOP and Design Patterns",
"current": false,
"catalog_only": true,
"role": "reference",
"status": "",
"cards": [
{
"id": "OOP01",
"title": "Strategy — Replaceable Behaviour",
"repo": "lab-cpp-oop-strategy",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "01",
"version": "",
"status": "design",
"tasks": []
},
{
"id": "OOP02",
"title": "Adapter — Stable Boundary",
"repo": "lab-cpp-oop-adapter",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "02",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP03",
"title": "Template Method — Fixed Skeleton",
"repo": "lab-cpp-oop-template-method",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "03",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP04",
"title": "Static vs Dynamic Dispatch",
"repo": "lab-cpp-oop-dispatch",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "04",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP05",
"title": "RAII and Ownership",
"repo": "lab-cpp-oop-raii",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "05",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP06",
"title": "State — Explicit Behaviour",
"repo": "lab-cpp-oop-state",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "06",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP07",
"title": "Facade — Subsystem Boundary",
"repo": "lab-cpp-oop-facade",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "07",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP08",
"title": "Command — Request as Object",
"repo": "lab-cpp-oop-command",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "08",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP09",
"title": "Observer — Subscription and Telemetry",
"repo": "lab-cpp-oop-observer",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "09",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP10",
"title": "Factory Method — Resource Policy",
"repo": "lab-cpp-oop-factory-method",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "10",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP11",
"title": "Builder — Valid Configuration",
"repo": "lab-cpp-oop-builder",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "11",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP12",
"title": "Decorator — Measurement and Diagnostics",
"repo": "lab-cpp-oop-decorator",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "12",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP13",
"title": "Composite — Component Tree",
"repo": "lab-cpp-oop-composite",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "13",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP14",
"title": "Chain of Responsibility",
"repo": "lab-cpp-oop-chain",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "14",
"version": "",
"status": "planned",
"tasks": []
},
{
"id": "OOP15",
"title": "Pattern-language Integration",
"repo": "lab-cpp-oop-integration",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "15",
"version": "",
"status": "planned",
"tasks": []
}
]
}
]
},
{
"id": "year-4",
"title": "Rok 4 · plan",
"current": false,
"series": [
{
"id": "transformers-gpu",
"title": "Transformers on GPU",
"current": false,
"catalog_only": true,
"role": "",
"status": "scope-reserved",
"cards": []
}
]
}
]
},
{
"id": "fiz",
"title": "FIZ · Fizyka",
"current": false,
"levels": [
{
"id": "all",
"title": "Katalog",
"current": false,
"series": [
{
"id": "fiz",
"title": "Fizyka",
"current": false,
"catalog_only": false,
"role": "",
"status": "",
"cards": [
{
"id": "ruch-1d",
"title": "Ruch 1D",
"repo": "ruch-1d",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "",
"version": "",
"status": "",
"tasks": []
},
{
"id": "ruch-2d",
"title": "Ruch 2D",
"repo": "ruch-2d",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "",
"version": "",
"status": "",
"tasks": []
},
{
"id": "ruch-po-okregu",
"title": "Ruch po okręgu",
"repo": "ruch-po-okregu",
"href": "",
"local_href": "",
"resource_uuid": "",
"available": false,
"current": false,
"number": "",
"version": "",
"status": "",
"tasks": []
}
]
}
]
}
]
}
]
},
"total_pages": 5,
"front": {
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"http://localhost:8080\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\" data-page=\"1\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">CPP08 · Zakres i czas życia obiektów</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">21.07.2026</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">C++20 · fundamenty języka i modelu obiektu</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">C++ · Rok 2 · Semestr 1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">08/10</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">1/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span><b class=\"resource-author\">AUTHOR&nbsp; M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\"><b>GITEA</b>&nbsp; https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"http://localhost:8080\"><b>HTML</b>&nbsp; http://localhost:8080</a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
"footer_html": "<footer class=\"page-resource-footer\"><code class=\"page-resource-footer__uuid\">UUID 0d0c3a10-2744-5245-ad9e-8a910694a5b2</code><span class=\"page-resource-footer__author\">M. Pabiszczak</span><span class=\"page-resource-footer__page\">STRONA 1/5</span></footer>",
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button><button class=\"margin-tag tech\" style=\"--indent:0.28em\" type=\"button\" data-margin-display=\"EK\" data-margin-tip=\"Uczeń buduje i testuje program C++20.\" title=\"Uczeń buduje i testuje program C++20.\"><span>EK</span><span class=\"local\"></span></button><button class=\"margin-tag kw\" style=\"--indent:0.54em\" type=\"button\" data-margin-display=\"KW\" data-margin-tip=\"Uzyskuje trzy komunikaty PASS.\" title=\"Uzyskuje trzy komunikaty PASS.\"><span>KW</span><span class=\"local\"></span></button></div>",
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button><button class=\"margin-tag og\" style=\"--indent:0.28em\" type=\"button\" data-margin-display=\"EN WO\" data-margin-tip=\"Uczeń przewiduje zachowanie programu na podstawie reguł języka.\" title=\"Uczeń przewiduje zachowanie programu na podstawie reguł języka.\"><span>EN WO</span><span class=\"local\"></span></button><button class=\"margin-tag kw\" style=\"--indent:0.54em\" type=\"button\" data-margin-display=\"KW WS\" data-margin-tip=\"Uzasadnia przewidywany wynik.\" title=\"Uzasadnia przewidywany wynik.\"><span>KW WS</span><span class=\"local\"></span></button></div>",
"goal_title": "Cel karty",
"goal_html": "<p>Powiązać miejsce przechowywania obiektu z początkiem i końcem jego czasu życia.</p>",
"scope_title": "Zakres tasków",
"scope_html": "",
"scope_columns": [
"chapter",
"task",
"idea",
"priority",
"status",
"version"
],
"scope_headers": [
"Krok",
"Numer tasku",
"Najważniejsza idea",
"Priorytet",
"Status",
"Version"
],
"scope_rows": [
{
"chapter": "1",
"task": "Task01",
"idea_html": "<p>Automatyczny i statyczny</p>",
"priority": "obowiązkowe",
"status": "ready",
"status_label": "opracowane",
"version": "v00.01",
"key": false
},
{
"chapter": "1",
"task": "Task02",
"idea_html": "<p>Obiekt dynamiczny</p>",
"priority": "obowiązkowe",
"status": "ready",
"status_label": "opracowane",
"version": "v00.01",
"key": false
},
{
"chapter": "1",
"task": "Task03",
"idea_html": "<p>Zakres i przesłanianie</p>",
"priority": "obowiązkowe",
"status": "ready",
"status_label": "opracowane",
"version": "v00.01",
"key": false
}
]
},
"sections": [
{
"id": "section-1-content",
"index": 1,
"title": "Task01 · Automatyczny i statyczny",
"show_heading": true,
"toc_entry": true,
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"http://localhost:8080\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\" data-page=\"2\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">CPP08 · Zakres i czas życia obiektów</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">21.07.2026</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">C++20 · fundamenty języka i modelu obiektu</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">C++ · Rok 2 · Semestr 1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">08/10</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">2/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span><b class=\"resource-author\">AUTHOR&nbsp; M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\"><b>GITEA</b>&nbsp; https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"http://localhost:8080\"><b>HTML</b>&nbsp; http://localhost:8080</a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
"footer_html": "<footer class=\"page-resource-footer\"><code class=\"page-resource-footer__uuid\">UUID 0d0c3a10-2744-5245-ad9e-8a910694a5b2</code><span class=\"page-resource-footer__author\">M. Pabiszczak</span><span class=\"page-resource-footer__page\">STRONA 2/5</span></footer>",
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"content_html": "<p>Porównaj nowy obiekt automatyczny z zachowującym stan obiektem statycznym. Najpierw przewidź wynik, następnie skompiluj program z ostrzeżeniami traktowanymi jako błędy i porównaj dokładny stdout z kontraktem: auto=7 static_calls=1,2.</p>",
"tasks": [],
"assets": [],
"steps": [
{
"id": "T01-PREDICT",
"title": "Zapisz przewidywany wynik i wskaż regułę języka."
},
{
"id": "T01-VERIFY",
"title": "Uruchom test i zachowaj mierzalny dowód wykonania."
}
],
"spread_group": "",
"spread_label": "",
"spread_columns": 1,
"spread_index": 1,
"spread_count": 1,
"page_orientation": "portrait"
},
{
"id": "section-2-content",
"index": 2,
"title": "Task02 · Obiekt dynamiczny",
"show_heading": true,
"toc_entry": true,
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"http://localhost:8080\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\" data-page=\"3\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">CPP08 · Zakres i czas życia obiektów</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">21.07.2026</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">C++20 · fundamenty języka i modelu obiektu</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">C++ · Rok 2 · Semestr 1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">08/10</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">3/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span><b class=\"resource-author\">AUTHOR&nbsp; M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\"><b>GITEA</b>&nbsp; https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"http://localhost:8080\"><b>HTML</b>&nbsp; http://localhost:8080</a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
"footer_html": "<footer class=\"page-resource-footer\"><code class=\"page-resource-footer__uuid\">UUID 0d0c3a10-2744-5245-ad9e-8a910694a5b2</code><span class=\"page-resource-footer__author\">M. Pabiszczak</span><span class=\"page-resource-footer__page\">STRONA 3/5</span></footer>",
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"content_html": "<p>Jawnie zestaw new z delete i obserwuj moment wykonania destruktora. Najpierw przewidź wynik, następnie skompiluj program z ostrzeżeniami traktowanymi jako błędy i porównaj dokładny stdout z kontraktem: construct; value=11; destroy.</p>",
"tasks": [],
"assets": [],
"steps": [
{
"id": "T02-PREDICT",
"title": "Zapisz przewidywany wynik i wskaż regułę języka."
},
{
"id": "T02-VERIFY",
"title": "Uruchom test i zachowaj mierzalny dowód wykonania."
}
],
"spread_group": "",
"spread_label": "",
"spread_columns": 1,
"spread_index": 1,
"spread_count": 1,
"page_orientation": "portrait"
},
{
"id": "section-3-content",
"index": 3,
"title": "Task03 · Zakres i przesłanianie",
"show_heading": true,
"toc_entry": true,
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"http://localhost:8080\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\" data-page=\"4\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">CPP08 · Zakres i czas życia obiektów</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">21.07.2026</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">C++20 · fundamenty języka i modelu obiektu</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">C++ · Rok 2 · Semestr 1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">08/10</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">4/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span><b class=\"resource-author\">AUTHOR&nbsp; M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\"><b>GITEA</b>&nbsp; https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"http://localhost:8080\"><b>HTML</b>&nbsp; http://localhost:8080</a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
"footer_html": "<footer class=\"page-resource-footer\"><code class=\"page-resource-footer__uuid\">UUID 0d0c3a10-2744-5245-ad9e-8a910694a5b2</code><span class=\"page-resource-footer__author\">M. Pabiszczak</span><span class=\"page-resource-footer__page\">STRONA 4/5</span></footer>",
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
"content_html": "<p>Pokaż, że nazwa wewnętrzna nie zmienia obiektu o tej samej nazwie w zakresie zewnętrznym. Najpierw przewidź wynik, następnie skompiluj program z ostrzeżeniami traktowanymi jako błędy i porównaj dokładny stdout z kontraktem: outer=7; inner=9; outer=7.</p>",
"tasks": [],
"assets": [],
"steps": [
{
"id": "T03-PREDICT",
"title": "Zapisz przewidywany wynik i wskaż regułę języka."
},
{
"id": "T03-VERIFY",
"title": "Uruchom test i zachowaj mierzalny dowód wykonania."
}
],
"spread_group": "",
"spread_label": "",
"spread_columns": 1,
"spread_index": 1,
"spread_count": 1,
"page_orientation": "portrait"
}
],
"viewpoints": [],
"has_spread": false,
"has_allocator_model": false,
"dictionary": {
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"http://localhost:8080\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\" data-page=\"5\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">CPP08 · Zakres i czas życia obiektów</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">21.07.2026</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">C++20 · fundamenty języka i modelu obiektu</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">C++ · Rok 2 · Semestr 1</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">08/10</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">5/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">0d0c3a10-2744-5245-ad9e-8a910694a5b2</span><b class=\"resource-author\">AUTHOR&nbsp; M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime\"><b>GITEA</b>&nbsp; https://zsl-gitea.mpabi.pl/edu-cpp/lab-cpp-scope-lifetime</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"http://localhost:8080\"><b>HTML</b>&nbsp; http://localhost:8080</a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
"footer_html": "<footer class=\"page-resource-footer\"><code class=\"page-resource-footer__uuid\">UUID 0d0c3a10-2744-5245-ad9e-8a910694a5b2</code><span class=\"page-resource-footer__author\">M. Pabiszczak</span><span class=\"page-resource-footer__page\">STRONA 5/5</span></footer>",
"content_html": "<details class=\"we-block\"><summary><strong>WE 01</strong> Obiekty automatyczne, statyczne i dynamiczne oraz przesłanianie nazw</summary><p>Powiązać miejsce przechowywania obiektu z początkiem i końcem jego czasu życia.</p><h4>OG</h4><details><summary><code>EN IP CPP08</code> Uczeń przewiduje zachowanie programu na podstawie reguł języka.</summary><ul><li><code>KW IP CPP08</code> Uzasadnia przewidywany wynik.</li></ul></details><h4>TECH</h4><details><summary><code>EK INF04 CPP08</code> Uczeń buduje i testuje program C++20.</summary><ul><li><code>KW INF04 CPP08</code> Uzyskuje trzy komunikaty PASS.</li></ul></details></details>"
},
"toc": [
{
"id": "section-1-content",
"label": "1. Task01 · Automatyczny i statyczny"
},
{
"id": "section-2-content",
"label": "2. Task02 · Obiekt dynamiczny"
},
{
"id": "section-3-content",
"label": "3. Task03 · Zakres i przesłanianie"
}
]
}