Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Mapa projektu i modułów

BASIC20 min
Postęp nauki 0 / 3
Zaloguj się na konto użytkownika, aby zachować postęp.

Czego się nauczysz

  • Prześledź źródła i wyjaśnij opisany kontrakt.
  • W ProjectMap przypisz pliki do modułów i znajdź odwołanie do mapy w manifeście.
Wymagania wstępne
  • Ukończ Podstawy i wcześniejszy poziom tej ścieżki.

Wyjaśnienie krok po kroku

KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.

Praca z kodem źródłowym

Mapa projektu: warstwy, moduły, mapa lokalna

Szablon SDK `core-plugin`: `project.kretm` (warstwy Ui → Logic → Data, `deny Ui -> Data`, moduły z katalogami, połączenia `link`) i mapa lokalna `Script/Orders/module.kretm`. Manifest włącza mapę blokiem `project { map … }`. KretM **niczego nie przyznaje** — tylko ogranicza zależności.

database Mapped {
    version = 1
    table counters {
        name: String primary key
        value: Int
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. database Mapped {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  3. table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Oczekiwany wynik: „zamówień: 2, pierwsze miało numer 1”.

Typowy błąd: Własne foldery projektu bez mapy KretM — Core odrzuca taki projekt (`mapping_required`).

Instrukcja, wersje i zapisane wyniki →

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KretM — wprowadzenie

KretM — wprowadzenie

Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretm-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Czym jest

KretM opisuje strukturę projektu: warstwy, moduły z katalogami i plikami, dozwolone (allow) i zakazane (deny) zależności oraz połączenia. Kompilator sprawdza kod KretS względem mapy. KretM niczego nie przyznaje i nie jest językiem bibliotek funkcji (to rola KretMod). Mapę włącza project { map } w KretL.

Dla początkujących

Rysujesz plan projektu: które części (warstwy) mogą korzystać z których. Np. interfejs może wołać logikę, logika — dane, ale interfejs nie może sięgać do danych bezpośrednio. Kompilator pilnuje tych reguł.

Dla zaawansowanych programistów

deny wygrywa z allow; cykle zależności są błędem; katalogi modułów nie mogą się pokrywać; mapa lokalna może doprecyzować moduł (pliki, wejścia/wyjścia, właściciel, wyższa krytyczność), ale nie zmienić warstwy/katalogu ani rozszerzyć reguł. Ustalenie tej rundy (EXP-F01): gdy projekt ma mapę, moduły bibliotek KretLib z Libs/ też muszą należeć do modułów mapy (inaczej KCS-KRM-0311 + KCS-KRM-0302). Core: własne foldery wymagają mapy (mapping_required).

Jakie problemy rozwiązuje

Kontrola architektury projektu w czasie kompilacji; dane dla widoku struktury w KretStudio.

Kiedy używać

  • mapa projektu i organizacja modułów
  • reguły warstw (Ui → Logic → Data)
  • projekty z własnymi folderami w Core

Kiedy nie używać

  • deklarowanie uprawnień (KCS-KRM-0301)
  • publikowanie bibliotek (to KretLib dziś, KretMod w przyszłości)
  • importy między projektami (brak w 1.0)

Współpraca z innymi technologiami

KretL (project { map }), KretS (kontrola use/odwołań), KretLib (moduły Libs/ w mapie), Core (mapping_required), KretStudio (kretm-graph/1).

Obecny status

FROZEN_SUPPORTED_SUBSET — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0.

Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md

Otwórz cały rozdział ze źródłem →
KretM — referencja składni

KretM — referencja składni

Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretm-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).

layer / allow / deny

Warstwy i reguły zależności.

layer Ui
layer Logic
allow Ui -> Logic
deny Ui -> Data
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. layer UiOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. layer LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. allow Ui -> LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. deny Ui -> DataOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
CechaWartość
Parametry / typynazwy warstw
Wynik—
Wymagania—
Ograniczeniadeny wygrywa
Możliwe błędyKCS-KRM-0302, 0308
Wprowadzono1.0

module

Moduł mapy: warstwa, rodzaj, katalog, zależności, pliki, wejścia/wyjścia.

module Orders {
    layer Logic
    kind library
    path "Script/Orders/"
    uses Storage
    files {
        "Orders.krs" role source
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module Orders {Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. layer LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. kind libraryOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. path "Script/Orders/"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. uses StorageOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. files {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  7. "Orders.krs" role sourceOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typypola wg tabeli wartości
Wynik—
Wymaganiazadeklarowane pliki muszą istnieć
Ograniczeniakatalogi bez nakładania, bez wyjścia poza projekt
Możliwe błędyKCS-KRM-0303, 0304, 0309, 0311
Wprowadzono1.0

Połączenia (wymagają pasujących output/input), wejścia/wyjścia projektu, ograniczenia.

link App -> Orders kind event name "order.requested"
constraints {
    relations data event
    localMaps allowed
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. link App -> Orders kind event name "order.requested"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. constraints {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. relations data eventOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. localMaps allowedOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typy—
Wynik—
Wymagania—
Ograniczenia—
Możliwe błędyKCS-KRM-0307
Wprowadzono1.0

mapa lokalna / local map

Doprecyzowanie jednego modułu.

kretm "1.0"
module Orders {
    owner "zespół logiki"
    criticality critical
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. kretm "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. module Orders {Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  3. owner "zespół logiki"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. criticality criticalOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typy—
Wynik—
Wymaganiawskazana polem map modułu
Ograniczenianie zmienia warstwy/rodzaju/katalogu (0305), nie rozszerza reguł (0306), jeden poziom
Możliwe błędyKCS-KRM-0305, 0306
Wprowadzono1.0
Otwórz cały rozdział ze źródłem →
KretM — samouczek BASIC

KretM — samouczek BASIC

Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretm-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Cel: pierwszy plik, podstawowa struktura, najprostszy działający przykład, najczęstszy błąd, sposób uruchomienia.

Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.

1. Mapa projektu: warstwy, moduły, mapa lokalna (KRETM-B01-ProjectMap)

Projekt: ../../Examples/BASIC_ProjectMap/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE

Kroki (katalog roboczy: katalog przykładu):

  1. kret check . --json — w wyniku: "succeeded": true
  2. kret run . --policy host-policy.json --data {DATA} — w wyniku: zam

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

Otwórz cały rozdział ze źródłem →

Ćwiczenie i sprawdzenie wiedzy

W ProjectMap przypisz pliki do modułów i znajdź odwołanie do mapy w manifeście.

Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.
Podpowiedzi
  • KretM opisuje strukturę projektu: warstwy, moduły z katalogami i plikami, dozwolone (`allow`) i zakazane (`deny`) zależności oraz połączenia. Kompilator sprawdza kod KretS względem mapy. **KretM niczego nie przyznaje** i **nie jest językiem bibliotek funkcji** (to rola KretMod). Mapę włącza `project { map }` w KretL.
  • Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania

Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.

Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

Podsumowanie i następny krok

KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności