diff --git a/Thesis/Abstract.typ b/Thesis/Abstract.typ new file mode 100644 index 0000000..76f84bd --- /dev/null +++ b/Thesis/Abstract.typ @@ -0,0 +1,18 @@ +#import "style.typ": abstract + +#let pl_body = "Niniejsza praca dotyczy implementacji mobilnej aplikacji do współtworzenia notatek tekstowych w architekturze Peer-To-Peer, przeznaczonej na urządzenia z systemem iOS. Główną motywacją podjętego tematu jest ograniczenie współczesnych narzędzi do wspólnej edycji dokumentów, takich jak Google Docs, które wymagają stałego dostępu do Internetu oraz pośrednictwa scentralizowanych serwerów - nawet gdy wszyscy współpracownicy znajdują się w tej samej sieci lokalnej. Zaproponowane rozwiązanie umożliwia bezpośrednią komunikację między urządzeniami bez udziału zewnętrznej infrastruktury sieciowej. Aplikacja została zbudowana w języku Swift z wykorzystaniem frameworka SwiftUI oraz Multipeer Connectivity. W pracy omówiono teoretyczne podstawy systemów synchronizacji danych w czasie rzeczywistym, a także możliwości komunikacji P2P dostępne na platformach firmy Apple." + +#let en_body = "This thesis concerns the implementation of a mobile peer-to-peer collaborative note-taking application for devices running iOS. The primary motivation is to address a fundamental limitation of contemporary collaborative editing tools such as Google Docs, which require continuous Internet access and rely on centralized servers to mediate all data exchange - even when all collaborating users are present on the same local network. The proposed solution enables direct device-to-device communication, eliminating the need for any external network infrastructure. The application was built in Swift using the SwiftUI framework and Multipeer Connectivity framework. The thesis covers the theoretical foundations of real-time data synchronization systems, as well as the peer-to-peer communication capabilities available within the Apple's systems." + +#let pl_keywords = "Peer-To-Peer, współtworzenie dokumentów, iOS, Multipeer Connectivity, Swift, SwiftUI, ewentualna zbieżność" + +#let en_keywords = "Peer-To-Peer, collaborative editing, iOS, Multipeer Connectivity, Swift, SwiftUI, eventual consistency" + +#abstract( + pl-body: pl_body, + pl-keywords: pl_keywords, + en-body: [ + This thesis concerns the implementation of a mobile peer-to-peer collaborative note-taking application for devices running iOS. The primary motivation is to address a fundamental limitation of contemporary collaborative editing tools such as Google Docs, which require continuous Internet access and rely on centralized servers to mediate all data exchange - even when all collaborating users are present on the same local network. The proposed solution enables direct device-to-device communication, eliminating the need for any external network infrastructure. The application was built in Swift using the SwiftUI framework and Multipeer Connectivity framework. The thesis covers the theoretical foundations of real-time data synchronization systems, as well as the peer-to-peer communication capabilities available within the Apple's systems. + ], + en-keywords: en_keywords, +) diff --git a/Thesis/main.pdf b/Thesis/main.pdf index 9e5ae8c..551d22b 100644 --- a/Thesis/main.pdf +++ b/Thesis/main.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10e27efbd35fce5d39dbf64bba5b024dd44a2774ccf2061450fa88e11b2b6ff0 -size 1627809 +oid sha256:6a89847ff2c07b6401c5baf87905d4ca9281639c264b15605c37d1376059e619 +size 1651831 diff --git a/Thesis/main.typ b/Thesis/main.typ index d8781fb..1d8ce98 100644 --- a/Thesis/main.typ +++ b/Thesis/main.typ @@ -1,4 +1,4 @@ -#import "style.typ": definition, example, theorem, zut-template +#import "style.typ": abstract, definition, example, list-of-figures, theorem, zut-template #import "Bibliography.typ": bib-setup, render-bib #set text(lang: "pl") @@ -10,6 +10,8 @@ #include "table_of_contents.typ" #pagebreak() +#include "Abstract.typ" + #zut-template([ #include "Chapters/0. Introduction.typ" #include "Chapters/1. Theoretical Scope.typ" diff --git a/Thesis/style.typ b/Thesis/style.typ index ce50ad6..78329e1 100644 --- a/Thesis/style.typ +++ b/Thesis/style.typ @@ -336,3 +336,65 @@ body } // /zut-template +/// Funkcja rysująca abstrakt – polska wersja u góry, angielska na dole, jedna strona A4. +/// +/// Parametry: +/// pl-title – nagłówek sekcji polskiej (domyślnie "Streszczenie") +/// pl-body – treść streszczenia po polsku +/// pl-keywords – słowa kluczowe (pojedynczy ciąg, np. "A, B, C") +/// en-title – nagłówek sekcji angielskiej (domyślnie "Abstract") +/// en-body – treść abstraktu po angielsku +/// en-keywords – keywords (pojedynczy ciąg, np. "A, B, C") +#let abstract( + pl-title: "Streszczenie", + pl-body: str, + pl-keywords: "", + en-title: "Abstract", + en-body: str, + en-keywords: "", +) = { + set page( + paper: "a4", + margin: ( + top: 3.2cm, + bottom: 3.5cm, + inside: 3.5cm, + outside: 2.5cm, + ), + header: none, + footer: none, + numbering: none, + ) + + set text(font: "New Computer Modern", size: 12pt, lang: "pl") + set par(justify: true, leading: 0.65em) + set heading(numbering: none) + + show heading: it => { + if it.level == 1 { + align(center)[ + #text(size: 17pt, fill: blue-zut, weight: "regular", font: "Fira Sans", it.body) + ] + } + } + + // polish version of the abstract + v(0.7cm) + [= #pl-title] + v(0.5cm) + par(pl-body, first-line-indent: 2em) + if pl-keywords != "" { + [*słowa kluczowe:* #pl-keywords] + } + + v(1fr) + + // english version + [= #en-title] + set text(lang: "en") + v(0.5cm) + par(en-body) + if en-keywords != "" { + [*keywords:* #en-keywords] + } +}