Skip to content

Commit

Permalink
Merge branch 'main' of github.com:hmelder/AnkiTUM
Browse files Browse the repository at this point in the history
  • Loading branch information
hmelder committed Jan 16, 2024
2 parents a05c40b + 6942aac commit 0e580e2
Show file tree
Hide file tree
Showing 2 changed files with 226 additions and 42 deletions.
179 changes: 179 additions & 0 deletions IN0009_GBS/dateisysteme.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
title: 'GBS: Kapitel 7: Dateisysteme'
author: HHuebner
cards:
- type: basic
format: md
front: Welche Aufgaben hat das Dateisystem?
back: |+
- Virtualisierung der Disk
- Implementierung von Dateien / Ordnern
- Organisation von Dateien
- Verwaltung von Zugriffsrechten
- type: basic
format: md
front: Nenne drei Dateisysteme
back: |+
- ext2, 3 , 4 (Unix)
- fat16, fat32 (DOS)
- NTFS (Windows)
- hfs (macOS)
- type: basic
format: md
front: Welche aufgabe hat die Dateiendung?
back: |+
- An sich wird die Dateiendung nicht vom Betriebsystem interpretiert.
- Meistens wird für jede Endung ein default Programm zum öffnen festgelegt.
- type: basic
format: md
front: Auf welche drei arten können Dateien strukturiert werden?
back: |+
1. Unstrukturiert als folge von bytes
2. Sequenz von Records / feste Blöcke (heute unüblich)
3. Baumstruktur mit Blöcken unterschiedlicher Größe (Bei Großrechnern manchmal verwendet)
- type: basic
format: md
front: Welche 6 Arten von Dateien gibt es unter Unix?
back: |+
1. Reguläre Dateien
2. Ordner
3. Character special files (z.b. IO geräte)
4. Block special files (Massenspeicher, z.b. disk)
5. FIFO special (pipes)
6. symbolic link (Verweise auf andere Dateien)
- type: basic
format: md
front: Welche zwei Arten von Dateizugriff wurden besprochen?
back: |+
1. Sequential access (in älteren Systemen)
2. Random Access
- type: basic
format: md
front: Welche Dateiattribute wurden besprochen?
back: |+
- Zugriffsrechte
- Flags (z.b. Wann die Datei zuletzt verändert wurde)
- Dateigröße
- type: basic
format: md
front: Wie sind Unix Zugriffrechte Aufgebaut?
back: |+
- r (read), w (write), x (execute) bits
- Drei Gruppen: Owner, Group, All
Beispiel: rwxr-x--- = Nur owner und gruppe können datei lesen und Ausführen. User kann die Datei schreiben
- type: basic
format: md
front: Was macht der syscall unlink()?
back: |+
Löscht die Datei
- type: basic
format: md
front: Was machen die Dateien . und .. bei Unix Systemen
back: |+
- "." Verweist auf den momentanen Ordner
- ".." Verweist auf den übergeordneten Ordner
- type: basic
format: md
front: Was ist der MBR?
back: |+
- Master Boot Record
- In Sektor 0 der Platte gespeichert
- Enthält Bootloader, wird beim starten des Geräts ausgeführt
- Enthält Partitionstabelle mit max. 16 Einträgen (moderne alternative: GUID partition table)
- type: basic
format: md
front: Was ist eine primäre Partition?
back: |+
- Die Partition auf der das Betriebssystem installiert ist.
- type: basic
format: md
front: Was ist eine extended partition?
back: |+
- Eine Partition im MBR welche weitere Partitionen enthält.
- Referenzen zu weitere Partitionen (sog. logische Partitionen) werden als linked list gepspeichert
- type: basic
format: md
front: Vorteile GUID Partition Table (GPT) vs MBR?
back: |+
- GPT ist moderner
- GPT erlaubt mehr Partitionen gleichzeitig
- GPT erlaubt größere Partitionen
- GPT hat backup partition table
- type: basic
format: md
front: Was ist ein superblock?
back: |+
- Speichert Metadaten über das File system der Partition (z.b. FS type)
- type: basic
format: md
front: Was ist eine i-node?
back: |+
- Speichert Metadaten über eine Datei im FS (z.b. permissions)
- type: basic
format: md
front: Wie werden i-nodes organisiert?
back: |+
- Sequenziell in der i-node table
- Jede i-node besitzt eine ID
- type: basic
format: md
front: Wie sind Verzeichnisse implementiert?
back: |+
- Verzeichnisse sind Dateien
- Enthalten eine Liste von verweisen auf i-nodes IDs der Inhalte und die Pfade
- type: basic
format: md
front: Was ist ein Block bei Unix?
back: |+
- Kleinste Speichereinheit auf der Disk
- type: basic
format: md
front: Was sind direct und indirect blocks bei Unix systemen?
back: |+
- Teile von i-nodes
- Speichern Verweise auf die Blöcke die ein FIle ausmachen
- Indirect blocks sind Verweise auf Verweise in Baumstruktur (singe = tiefe 1, double = tiefe 2...)
- type: basic
format: md
front: Wie werden i-nodes organisiert?
back: |+
- Sequenziell in der i-node table
- Jede i-node besitzt eine ID
- type: basic
format: md
front: Was ist eine File Allocation Table?
back: |+
- Eine möglichkeit Dateien zu implementieren
- Liste von Blöcken die zu einer Datei gehören
- FAT muss vollständig im Hauptspeicher liegen -> Sehr großer Verschnitt
- Moderne Alternative: i-nodes
- type: basic
format: md
front: Wie können variable Längen bei Dateien implementiert werden?
back: |+
- Zeichenlimitierung
- Pointer auf den Heap -> Speichern als Hashmap, da die Dateisuche in einem Ordner sosnt lanmgsam wird
89 changes: 47 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
# AnkiTUM

## Overview
AnkiTUM is a collaborative repository for computer science students at the Technical University of Munich to create and share flashcards for various CS modules. The flashcards are generated from markdown files, making it easy to contribute and maintain the content.
AnkiTUM is a collaborative repository for computer science students at the Technical University of Munich to create and share flashcards for various CS modules. The flashcards are generated from yaml files, making it easy to contribute and maintain the content.

Please note that AnkiTUM is in its early stages.
Please note that AnkiTUM is still in developement. You can help contribute to the parser here: https://github.com/hmelder/AnkiTUM-Runtime.

If you have any suggestions or bugs to report, you can create an issue. Please submit bug reports regarding the parser to the "runtime" repository.

### Downloading
Prebuilt flashcard packages (apkg files) are available on my HTTP [mirror](https://mirror.hugomelder.com/anki-decks/), and are updated automatically.

### Installation
To install the prebuilt flashcard packages:

1. Navigate to the "Actions" tab of this GitHub repository.
2. Click on the latest successful workflow run.
3. Scroll down to the "Artifacts" section.
4. Download the artifact and unpack it. You will find compressed archives of all available modules
5. Extract the `.apkg` files from the `.zip` file.
6. Import the `.apkg` file into your Anki application.
1. Extract the `.apkg` files from the `.zip` file.
2. Import the `.apkg` file into your Anki application.

### Updating Flashcards
When new flashcards are added or existing ones are updated, simply download the
Expand All @@ -25,19 +22,30 @@ efficiently, meaning your progress with the cards, including study stats and
scheduling, will not be lost when you update a deck with a newly downloaded
package.

## Generating Flashcards Locally
To generate flashcards on your local machine, you need to have Python installed. Follow these steps:

1. Clone the AnkiTUM repository.
2. Navigate to the cloned directory.
3. Create a virtual environment: `python -m venv ankitum-env`
4. Activate the virtual environment:
- On macOS and Linux: `source ankitum-env/bin/activate`
5. Install the converter (Make sure that you are still in the venv):
- `git clone https://github.com/hmelder/AnkiTUM-Runtime`
- `pip3 install -r AnkiTUM-Runtime/requirements.txt`
- `pip3 install ./AnkiTUM-Runtime`
6. Run `sh build.sh`. This will create `build/` with all the resulting decks
## Contributing

### Guidelines
We welcome contributions from TUM students to enhance and expand the AnkiTUM
flashcard collection. To contribute, follow these guidelines:

0. **Fork this Repository:** In order to contribute you need to create a fork of this repository

1. **Create Your Flashcards:** Add or edit yaml files following the specified format for decks.
2. **Test Locally:** Generate the flashcards locally using the provided instructions to ensure they are formatted correctly.
3. **Commit Your Changes:** Once you've tested your flashcards, commit the changes to your forked repository.
4. **Submit a Pull Request (PR):** Create a PR against the main AnkiTUM repository. Include a short description of your changes and any other relevant information.
5. **Review:** Wait for a repository maintainer to review your PR. Be responsive to any feedback or required changes.

### Best Practices
- Ensure your flashcards are accurate and relevant to the CS modules.
- Check for duplicates to avoid redundant content.
- Keep your yaml files organized by module and topic.

By following these guidelines, you'll help maintain the quality and usefulness
of the AnkiTUM flashcard repository for all students. Your contributions are
greatly appreciated!


## Flashcard Format
We use [YAML](https://yaml.org/) to write decks which are then converted to Anki decks using [AnkiTUM-Runtime](https://github.com/hmelder/AnkiTUM-Runtime).
Expand All @@ -50,7 +58,7 @@ types do not have a back. They contain "clozes" which are words or phrases
inside a sentence that are blacked out and get revealed when the user turns the
card around.

Our converter supports plaintext, markdown, and latex.
Our converter supports plaintext, markdown, and latex. You can also include images in your flashcards.

Here is an example of a basic card with markdown:

Expand Down Expand Up @@ -79,28 +87,25 @@ cards:
back: World!
```
## Releases
Modules are released when they reach a stable iteration, reflecting the latest
contributions at that time.
Tip: the |+ operator easily lets you write out long strings in yaml without having to surround them with quotes.
## Contributing
### Guidelines
We welcome contributions from TUM students to enhance and expand the AnkiTUM
flashcard collection. To contribute, follow these guidelines:
## Generating Flashcards Locally
Our runtume script will generate anki decks from yaml files.
To generate flashcards on your local machine, you need to have Python installed. Follow these steps:
1. **Create Your Flashcards:** Add or edit markdown files following the specified format for decks.
2. **Test Locally:** Generate the flashcards locally using the provided instructions to ensure they are formatted correctly.
3. **Commit Your Changes:** Once you've tested your flashcards, commit the changes to your forked repository.
4. **Submit a Pull Request (PR):** Create a PR against the main AnkiTUM repository. Include a clear description of your changes and any other relevant information.
5. **Review:** Wait for a repository maintainer to review your PR. Be responsive to any feedback or required changes.
1. Clone the AnkiTUM repository.
2. Navigate to the cloned directory.
3. Create a virtual environment: `python -m venv ankitum-env`
4. Activate the virtual environment:
- On macOS and Linux: `source ankitum-env/bin/activate`
5. Install the converter (Make sure that you are still in the venv):
- `git clone https://github.com/hmelder/AnkiTUM-Runtime`
- `pip3 install -r AnkiTUM-Runtime/requirements.txt`
- `pip3 install ./AnkiTUM-Runtime`
6. Run `sh build.sh`. This will create `build/` with all the resulting decks

### Best Practices
- Ensure your flashcards are accurate and relevant to the CS modules.
- Check for duplicates to avoid redundant content.
- Keep your markdown files organized by module and topic.
## Releases

By following these guidelines, you'll help maintain the quality and usefulness
of the AnkiTUM flashcard repository for all students. Your contributions are
greatly appreciated!
Modules are released when they reach a stable iteration, reflecting the latest
contributions at that time.

0 comments on commit 0e580e2

Please sign in to comment.