diff --git a/diaries/rust/01 - Cargo.adoc b/diaries/rust/01 - Cargo.adoc index c4d27cb..c2a9da8 100644 --- a/diaries/rust/01 - Cargo.adoc +++ b/diaries/rust/01 - Cargo.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-10T17:04:53+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = Cargo @@ -21,7 +21,7 @@ Bibliothek. + Es wird auch gleich `main.rs`, ein `.git`-Ordner (inkl. `.gitignore`) und `Cargo.toml` erstellt. -== Angelegte Datein +== Angelegte Dateien === Cargo.toml diff --git a/diaries/rust/02 - Higher-Lower-Spiel.adoc b/diaries/rust/02 - Higher-Lower-Spiel.adoc index 42f63f5..2743e84 100644 --- a/diaries/rust/02 - Higher-Lower-Spiel.adoc +++ b/diaries/rust/02 - Higher-Lower-Spiel.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-10T17:04:53+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = Erstes Spiel @@ -55,7 +55,7 @@ CLI-Eingabe ** ohne die ``use'' Anweisung oben, müsste es `std::io::stdin()` sein * `.read_line(&mut guess)` ließt eine Zeile und speichert sie in guess ** `&` erstellt dabei eine Referenz (wie in C) -** Referenzen sind standardmäßig imutable - deshalb `&mut` +** Referenzen sind standardmäßig immutable - deshalb `&mut` ** `read_line()` gibt ein `Result`-Objekt zurück, dieser kann `Ok` oder `Err` enthalten * `.expect("Fehlermeldung")` entpackt das `Result`-Objekt diff --git a/diaries/rust/03 - Concepts.adoc b/diaries/rust/03 - Concepts.adoc index 296100d..715eb5c 100644 --- a/diaries/rust/03 - Concepts.adoc +++ b/diaries/rust/03 - Concepts.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-10T17:04:53+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = Konzepte @@ -71,7 +71,7 @@ fn main() { Die Ausgabe des Programms ist dabei der letztere Wert, hier also 10. Es ist also mehr eine neue Variable unter dem selben Namen wie die alte. -Sogar der Datentyp kann sich dabei ändern, man muss sich also nicht ständig neue Namen für Variabeln ausdenken, nur weil man sie casted (Juchuu!). +Sogar der Datentyp kann sich dabei ändern, man muss sich also nicht ständig neue Namen für Variablen ausdenken, nur weil man sie casted (Juchuu!). Da Variablen immer Block-Scope-basiert (?) sind, kann dies natürlich auch in einem eingebetteten Block genutzt werden. @@ -141,7 +141,7 @@ Chars werden mit single-quotes geschrieben (Strings mit doppelten quotes). Allerdings scheint es noch ein wenig komplizierter zu sein, das kommt aber erst später. -=== Combound Types +=== Compound Types Gruppierung von mehreren Werten in einem Typ. ==== Tupel diff --git a/diaries/rust/04 - Ownership.adoc b/diaries/rust/04 - Ownership.adoc index d72392b..cb217a4 100644 --- a/diaries/rust/04 - Ownership.adoc +++ b/diaries/rust/04 - Ownership.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-10T17:04:53+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = Ownership @@ -8,7 +8,7 @@ https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html[Link zum Buc == Was ist das? Jeder Wert hat eine Variable, die ihn "besitzt". -Jeder Wert kann zu einem Zeitpunkt nur von _einer_ Variable bessessen werden. +Jeder Wert kann zu einem Zeitpunkt nur von _einer_ Variable besessen werden. Sollte die Variable aus dem Scope verschwinden, wird der Wert ungültig und aus dem Speicher entfernt. == Warum? @@ -148,4 +148,4 @@ Fun fact: String Literale sind auch Slices und damit Referenzen von Strings. Noch mehr fun fact: Da dynamische String und String Literale damit quasi den selben Typ beschreiben, haben sie auch den gemeinsamen Typ `&str`. Für Leseoperationen kann also im Allgemeinen dieser benutzt werden. -Slices können auch mutable sein, dafür muss aber das ursprüngliche Array mmutable sein und es kann immer nur ein mutable Slice gleichzetig existieren (also genauso wie beim Ownership). +Slices können auch mutable sein, dafür muss aber das ursprüngliche Array mutable sein und es kann immer nur ein mutable Slice gleichzeitig existieren (also genauso wie beim Ownership). diff --git a/diaries/rust/06 - Enums.adoc b/diaries/rust/06 - Enums.adoc index 52f60b0..7d9a2ae 100644 --- a/diaries/rust/06 - Enums.adoc +++ b/diaries/rust/06 - Enums.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-10T17:04:53+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = Enums und Pattern Matching @@ -73,13 +73,13 @@ Es gibt zwar keine Attribute, aber da ja auch die internen Structs Methoden habe Options hab ich oben schonmal kurz beschrieben. In Rust ist dieser Datentyp sehr wichtig. -Die Dokumentation dazu ist https://doc.rust-lang.org/std/option/enum.Option.html[hier zu finden] und enthält sehr viel Wichtiges und Interesantes. +Die Dokumentation dazu ist https://doc.rust-lang.org/std/option/enum.Option.html[hier zu finden] und enthält sehr viel Wichtiges und Interessantes. == `match` `match` ist quasi das `switch` von Rust. Nur kann es auch prüfen, ob eine Variable einem Enum-Typen angehört. -So wie Rust bis jetzt klang, kann wahrscheinlich jedem Datentypen ein "match-Trait" gegeben werden, der dann eine "Zugehörigkeit" (Gleicheit stimmt ja irgendwie nicht) prüfen kann. +So wie Rust bis jetzt klang, kann wahrscheinlich jedem Datentypen ein "match-Trait" gegeben werden, der dann eine "Zugehörigkeit" (Gleichheit stimmt ja irgendwie nicht) prüfen kann. Aber ganz einfach: Angenommen wir wollen die Methode `to_css_string` von oben implementieren. Diese Methode muss ja, je nach Typ, völlig unterschiedlich funktionieren. @@ -124,7 +124,7 @@ Der Unterschied ist, dass bei `other` noch der Inhalt genutzt werden kann, bei ` === `if let` Dieses if-Konstrukt nutzt man am besten, wenn man nur auf eine einzelne Variante eines Enums prüfen möchte. -Letzendlich ist es ganz simpel: +Letztendlich ist es ganz simpel: [source, rust] ---- diff --git a/diaries/rust/07 - Management.adoc b/diaries/rust/07 - Management.adoc index b2bb422..90680f0 100644 --- a/diaries/rust/07 - Management.adoc +++ b/diaries/rust/07 - Management.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-22T14:29:34+02:00 +:docdatetime: 2022-10-18T17:56:26+02:00 = How to: Projektmanagement @@ -7,7 +7,7 @@ https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-c == Packages, Crates, Modules, was? -Rust hat ein sehr hierachisches Konzept, was die Strukturierung von Projekten angeht. +Rust hat ein sehr hierarchisches Konzept, was die Strukturierung von Projekten angeht. Fangen wir mal von oben an: @@ -40,7 +40,7 @@ Ihr Merkmal ist vor allem, dass eine `main`-Funktion existiert, die der Einstieg ==== Library Crate -Wie der Name schon sagt, stellt diese Art Crate nur Funktionen zur verfügung wie eine Bibliothek. +Wie der Name schon sagt, stellt diese Art Crate nur Funktionen zur Verfügung wie eine Bibliothek. === Modules @@ -146,7 +146,7 @@ fn main() { Dagegen gilt für Enums: Wenn der Enum public ist, sind auch alle Varianten public. -==== Abürzungen mit `use` +==== Abkürzungen mit `use` Angenommen, wir haben eine Mediathek mit Filmen, Serien, Spielen, etc. und brauchen immer lange Zugriffspfade (also z.B. `crate::medien::spiele::liste::add()`), obwohl wir nur Spiele brauchen, kann `use` benutzt werden. diff --git a/diaries/rust/08 - Collections.adoc b/diaries/rust/08 - Collections.adoc index 63e6075..495f587 100644 --- a/diaries/rust/08 - Collections.adoc +++ b/diaries/rust/08 - Collections.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-22T14:29:34+02:00 +:docdatetime: 2022-10-18T17:56:27+02:00 = Standard Collections @@ -144,7 +144,7 @@ Das macht das ganze ordentlich schwierig. Ist immer eine schlechte Idee, außer man weiß exakt wie lang die einzelnen Zeichen (in Byte) des Strings sind. Im Englischen ist es normalerweise 1 Byte pro Zeichen, Umlaute sind schon 2, und so weiter. -Sollte man außversehen ein Zeichen "durchschneiden" (also nur 1 Byte eines "ü" im Slice haben), gibt es eine Runtime Panic. +Sollte man aus Versehen ein Zeichen "durchschneiden" (also nur 1 Byte eines "ü" im Slice haben), gibt es eine Runtime Panic. === Iterieren @@ -164,7 +164,7 @@ for b in "hallo".bytes() { // Wirft eben die einzelnen u8 raus. ---- -Wenn wir "grapheme" haben wollen (Was anscheinend sowas wie "volle Zeichen" sind, mehr als nur char), gibt es keine eingebaute Funktion aber crates, die das lösen. +Wenn wir "grapheme" haben wollen (Was anscheinend so etwas wie "volle Zeichen" sind, mehr als nur char), gibt es keine eingebaute Funktion aber crates, die das lösen. == HashMaps @@ -180,7 +180,7 @@ use std::collections::HashMap; // -- Erstellen -- // iter(), zip() und collect() -// collect() kann in alles mögliche wandeln, deshalb muss der Typ anggeben werden. +// collect() kann in alles mögliche wandeln, deshalb muss der Typ angegeben werden. let woerter = vec![String::from("eins"), String::from("zwei"), String::from("drei")]; let zahlen = vec![1, 2, 3]; let mut zahlwort: HashMap<_, _> = woerter.into_iter().zip(zahlen.into_iter()).collect(); diff --git a/list.json b/list.json index abcf1bd..8143c42 100644 --- a/list.json +++ b/list.json @@ -5,11 +5,11 @@ "short_desc": "The terminal on my website.", "desc": [ "This is part of my homepage.", - "What you see here should resemble an CLI. If you ever used Linux this should be pretty easy for you.", - "Everyone else: Have no fear. It is pretty simple. You just type in commands and the output is shown here or it does something on the webite.", - "To find out, which commands are available, you can type just %{help}.", + "What you see on the page resembles an CLI. You just type in commands and some output is shown or it does something on the website.", + "To find out which commands are available, you can just type %{help}.", "", - "Currently everything is still in development. So if you come back in a few days/weeks/months/years something could have been changed!", + "Everything is always in development. So if you come back in a few days/weeks/months/years something could have been changed!", + "You can also check out the #%{dev version|https://dev.c0ntroller.de} if you haven't already.", "", "Have fun!" ], @@ -33,7 +33,7 @@ "name": "rust", "short_desc": "Me learning Rust (German).", "desc": [ - "I documented my progress to lern the Rust programming language.", + "I documented my progress to learn the Rust programming language.", "It follows the #%{Rust book|https://doc.rust-lang.org/book/} with my own annotations.", "Everything is in German as these notes are mostly meant for me." ], @@ -57,7 +57,8 @@ "short_desc": "TUfast is a browser extension that is used by multiple thousand users of the TU Dresden.", "desc": [ "TUfast is a browser extension that is used by multiple thousand users of the TU Dresden.", - "It provides autologin to the most used portals, shortcuts, redirects, and more." + "It provides autologin to the most used portals, shortcuts, redirects, and more.", + "I'm one of the developers." ], "repo": "https://github.com/TUfast-TUD/TUfast_TUD", "more": "https://tu-fast.de/", @@ -94,7 +95,7 @@ "short_desc": "A script that syncs a Google Photos album to your drive.", "desc": [ "Giving random apps access to your Google Photos can be bad.", - "To still use an album as screenaver etc. I wrote this script.", + "To still use an album as screensaver etc. I wrote this script.", "It syncs all your photos to your drive while giving you maximum privacy." ], "repo": "https://git.c0ntroller.de/c0ntroller/simple-callback-server", diff --git a/projects/ol-git.adoc b/projects/ol-git.adoc index 84b2043..c495526 100644 --- a/projects/ol-git.adoc +++ b/projects/ol-git.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-07-29T11:27:37+02:00 +:docdatetime: 2022-10-18T17:56:27+02:00 = Overleaf Sync with Git @@ -43,7 +43,7 @@ But how to use them? == Access granted -I noticed the front end uses session IDs for user authentification. +I noticed the front end uses session IDs for user authentication. You get an ID, you POST valid credentials (and a CSRF token) to `/login` and your session ID get's "verified". Using their repository, it was easy to find other routes that are useable. diff --git a/projects/simple-cb.adoc b/projects/simple-cb.adoc index 5811b63..3dbe246 100644 --- a/projects/simple-cb.adoc +++ b/projects/simple-cb.adoc @@ -1,5 +1,5 @@ :experimental: -:docdatetime: 2022-08-08T12:19:20+02:00 +:docdatetime: 2022-10-18T17:56:27+02:00 = Simple Callback Server @@ -12,12 +12,12 @@ Still, I needed it sometimes and I didn't want to rewrite it every time I use it == What can it be used for? -When creating a dev application on Google, Spotify, or other services you often have some heavy authentification flow to get access. +When creating a dev application on Google, Spotify, or other services you often have some heavy authentication flow to get access. But normally I want to use the API for private projects and it's _my_ account that gets authenticated every time. To make reauthentication easier these OAuth protocols often provide a "refresh token" which can be used to get a valid new token. -To get the initial authentification token and to get such a refresh token you provide a callback address where you get redirected after the user logs in. +To get the initial authentication token and to get such a refresh token you provide a callback address where you get redirected after the user logs in. The tokens and meta information normally are sent in a `POST` body. And this is where this small application is necessary. diff --git a/projects/terminal.adoc b/projects/terminal.adoc index 9c914c5..7a72da0 100644 --- a/projects/terminal.adoc +++ b/projects/terminal.adoc @@ -1,9 +1,9 @@ :experimental: -:docdatetime: 2022-08-10T17:09:32+02:00 +:docdatetime: 2022-10-18T17:56:27+02:00 -= c0ntroller.de += Terminal -Hello and welcome to my website. +Hello and welcome to my CLI website. == Why did I do this? Mainly because of boredom and because I like to code. @@ -62,12 +62,12 @@ I talked about shortcuts before, but here's a list of which shortcuts are possib |kbd:[▲] / kbd:[▼] |Scroll through last commands. -|kbd:[Strg+L] +|kbd:[Ctrl+L] |Clears the history. + Similar to `clear`. -|kbd:[Strg+D] -|Exits the page. Don't work in (most?) cases because of a https://developer.mozilla.org/en-US/docs/Web/API/Window/close[JavaScript restriction]. + +|kbd:[Ctrl+D] +|Exits the page. Doesn't work in (most?) cases because of a https://developer.mozilla.org/en-US/docs/Web/API/Window/close[JavaScript restriction]. + Similar to `exit`. |kbd:[Ctrl+U]/ + @@ -82,8 +82,8 @@ kbd:[Ctrl+C] - Every line in the history window is parsed in a custom format. * `%{command}` is parsed to a clickable command * `#{link text|url}` is parsed to a link -- Project logs are loaded dynamicly. They can be updated at any time. -- There are lots of eastereggs. Some are for specfic people, some for me and some for fun. +- Project logs are loaded dynamically. They can be updated at any time. +- There are lots of eastereggs. Some are for specific people, some for me and some for fun. - I made some custom annotations for code blocks show faulty code (wrong syntax/will not compile/etc.). [source.notCompiling, rust]