This commit is contained in:
+78
-353
@@ -1,14 +1,11 @@
|
||||
---
|
||||
title: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
||||
to Enhance Object Perception in Virtual Reality"
|
||||
title: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||
author: R.Viton
|
||||
description: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
||||
to Enhance Object Perception in Virtual Reality"
|
||||
description: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||
keywords: []
|
||||
|
||||
header: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
||||
to Enhance Object Perception in Virtual Reality"
|
||||
footer: "2026-05-26"
|
||||
header: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||
footer: "2026-06-24"
|
||||
|
||||
marp: true
|
||||
theme: gödel
|
||||
@@ -19,402 +16,130 @@ size: 16:9
|
||||
lang: de
|
||||
math: katex
|
||||
---
|
||||
<style>
|
||||
.inline-img {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: .5rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- _class: "title-academic" -->
|
||||
|
||||

|
||||

|
||||
|
||||
<div class="title">Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
||||
to Enhance Object Perception in Virtual Reality</div>
|
||||
<div class="title">Privacy by design: DIY Marp(X) AI presentations without sending data to third parties</div>
|
||||
<div class="subtitle">
|
||||
Paper von <i>A. Zenner</i> und <i>A. Krüger</i> [1]
|
||||
<br><br><div align=right>
|
||||
IEEE Transactions on Visualization and Computer Graphics
|
||||
<br>
|
||||
vol. 23, no. 4, pp. 1285-1294, April 2017
|
||||
</div>
|
||||
... and why you should use them too!
|
||||
</div>
|
||||
<div class="author">Romane Viton</div>
|
||||
<div class="date">2026-05-26</div>
|
||||
<div class="organization">DFI-STI, htw saar</div>
|
||||
<div class="date">2026-05-24</div>
|
||||
<div class="organization">DFI-203, htw saar</div>
|
||||
|
||||
---
|
||||
# Fragerunde
|
||||
|
||||

|
||||
|
||||
* Wer hat schon VR getestet?
|
||||
* Wie immersiv war die Erfahrung?
|
||||
* Gab es haptisches Feedback?
|
||||
* Wenn ja: wie wurde das implementiert?
|
||||
# A few **questions** first
|
||||
* Who here would consider themselves a **developer** ?
|
||||
* Experience with **code editors / IDEs** ?
|
||||
* **More comfortable** with editor than with other software ?
|
||||
* Does **text** just feel faster/more efficient at this point?
|
||||
|
||||
---
|
||||
# Was ist **haptisches Feedback** ?
|
||||
# <div class="inline-img">  **Markdown**
|
||||
## (It's everywhere - you've most likely dealt with it at least once)
|
||||
```md
|
||||
# Main title
|
||||
## Heading 2 - You can make:
|
||||
|
||||
* Nutzer:innen bekommen eine **taktile Rückmeldung**
|
||||
* Kann **Immersion** weiter als "nur hören oder sehen" treiben
|
||||
* Informationen können sehr **unterschiedlich** sein (Vibration, Textur, Kraft, Wärme, ...)
|
||||
* Beispiel: <box>Erzeugung von **Kräften** zur Simulation von Gewichten und Längen
|
||||
- *italic text*
|
||||
- **bold text**
|
||||
- ~~strikethrough~~
|
||||
- lists
|
||||
- [links](http://example.com)
|
||||
- 
|
||||
- > Quotes
|
||||
```
|
||||
|
||||
---
|
||||
# Nutzung der **Visual Dominance** [2]
|
||||
* **Alle Sinne** tragen zur gelebten Erfahrung bei einer Simulation bei
|
||||
* Bei Konflikten hat die **Sicht** bei der Informationsverarbeitung **Vorrang**
|
||||
* Bedeutung für VR: <h3><box>Für eine realistische Wahrnehmung muss **nicht die gesamte Kraft** erzeugt <br> werden, sondern nur genug, um die **Sicht** zu **unterstützen**
|
||||
# Why not write **presentations** as text ?
|
||||
## <div class="inline-img"> Introducing:  (Yuki Hattori)
|
||||
* Markdown presentation ecosystem
|
||||
* <span class="inline-img"> Comes as a  command line tool or a  VSCode editor extension
|
||||
* Technically Just A Web Page:tm: $\implies$ can write HTML/CSS if you want to customize
|
||||
* MarpX (Paolo Cunha) offers high quality ready-to-use themes
|
||||
* If you know Markdown/HTML/CSS: <box>No need to learn (yet another) tool!
|
||||
|
||||
---
|
||||
# **Hintergrund** des Papers
|
||||
* *Passive Haptic Feedback* (PHF): günstig und mobil, nicht sehr realistisch
|
||||
* *Active Haptic Feedback* (AHF): realistischer, weder günstig noch mobil
|
||||
* $\implies$ ***Dynamic Passive Haptic Feedback* (DPHF)** als Mittelweg testen ?
|
||||
* ### <box> 💡 Idee: Bewegung soll **kein direktes Feedback** sein, sondern den Controller so ändern, dass er **mehrere Gegenstände** darstellt
|
||||
# **Collaborating** with others / keeping track of **versions** ?
|
||||
> ## "Well surely the editor can't do ***that*** ", I hear you say
|
||||
* All the presentations are **text-based** versions of a file tree
|
||||
* We need a tool to maintain **versions** of a text-based file tree...
|
||||
* <span class="inline-img"> Ever heard of  `git`?
|
||||
* We already have a **tool** to collaborate on versions of text-based projects!
|
||||
|
||||
---
|
||||
# **Hintergrund** des Papers
|
||||

|
||||
# How do we make sure data is **safe** from big companies?
|
||||
- there *are* online platforms like GitHub for this (but: this defeats the whole purpose)
|
||||
- it's 2026, and servers are pretty cheap
|
||||
- you can set up your own infra in an afternoon
|
||||
|
||||
---
|
||||
# **Shifty** als DPHF-Versuch
|
||||
|
||||
### Ziel: Gewicht nach oben bzw. unten bringen, um mehr bzw. weniger Kraft zu brauchen, um gehoben zu werden
|
||||
|
||||
|
||||
|
||||
<div class="multicolumn" align="center"><div>
|
||||
|
||||

|
||||
|
||||
</div><div>
|
||||
|
||||
Eigenschaft | Wert
|
||||
--------------------:|:-------------------
|
||||
Masse | 440 g
|
||||
Internes Gewicht | 127 g
|
||||
Länge | 505 mm
|
||||
Diameter | 40 mm
|
||||
Nutzer-Input-Methode | Push-Button
|
||||
Steuerungsmethode | Arduino in Rucksack
|
||||
|
||||
|
||||
</div></div>
|
||||
|
||||
---
|
||||
<!-- _class: chapter -->
|
||||
# Experiment 1
|
||||
## <br>Kann eine Simulation mit Shifty überhaupt funktionieren ? <br>(bzgl. **<box>Realismus**, **<box>Anstrengung** und **<box>Spaß**)
|
||||
|
||||
---
|
||||
# **Teilnehmer:innen** des Experiments
|
||||
|
||||
<div align="center">
|
||||
|
||||
### Eigenschaften der $n = 12$ Teilnehmenden (Experiment 1)
|
||||
|
||||
Eigenschaft | Aufteilung
|
||||
-----------------------------------:|:---------------------------------------------------
|
||||
Geschlecht | 7 männlich, 5 weiblich
|
||||
Alter | Min: 21, Max: 37, Mittelwert: 28 Jahre
|
||||
Brillen/Kontaktlinsen in der Studie | 5 mit, 7 ohne
|
||||
Rechts- bzw. Linkshändige | 9 Rechts-, 3 Linkshändige
|
||||
Erfahrung mit 3D-Spielen | Min: 1, Max: 7, Mittelwert: 3,5 (Skala von 1 bis 7)
|
||||
Erfahrung mit VR | Min: 1, Max: 3, Mittelwert: 1,6 (Skala von 1 bis 7)
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
# Durchgeführte **Experimente**
|
||||
|
||||
<div class="multicolumn"><div>
|
||||
|
||||
## Umgebung
|
||||
- Teilnehmer:innen über Aufgaben informiert
|
||||
- Labor-Umgebung mit *HTC Vive* und Kopfhörern
|
||||
- Optische Überwachung des Verhaltens
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div><div>
|
||||
|
||||

|
||||
|
||||
</div></div>
|
||||
|
||||
---
|
||||
# Experiment 1: **kontinuierliche Änderung der Länge bzw. Dicke**
|
||||
|
||||
<div class="multicolumn"><div>
|
||||
|
||||

|
||||
|
||||
</div><div>
|
||||
|
||||
- Freie Bewegung innerhalb der Umgebung
|
||||
- Mit virtuellem Teleskop in der Hand
|
||||
- 1\. Phase mit Bewegung des Gewichts (DPHF)
|
||||
- 2\. Phase ohne Bewegung des Gewichts (PHF)
|
||||
- Reihenfolge der 1. und 2. Phase zufällig
|
||||
- <box>➕</box>- und <box>➖</box>-Props in der Umgebung,
|
||||
um Länge und Dicke linear zu ändern
|
||||
- Ergebnisse in Skala von 1 bis 7 gesammelt
|
||||
|
||||
</div></div>
|
||||
|
||||
---
|
||||
<!-- _class: quote -->
|
||||
# Erwartung der Autoren
|
||||
|
||||
"We expect *Shifty* to outperform [PHF] in the subjective measures **realism and fun**, but **not in exertion**." [1]
|
||||
|
||||
|
||||
|
||||
*Stimmt das aber wirklich?* 🤔
|
||||
|
||||
---
|
||||
# Experiment 1: **Ergebnisse**
|
||||
## Bewertungen
|
||||

|
||||
|
||||
<!-- In allen Fällen wurde DPHF besser als PHF bewertet, was die Erwartungen übertroffen hat. -->
|
||||
|
||||
---
|
||||
# Experiment 1: **Ergebnisse**
|
||||
## Vergleiche
|
||||
* Bei **<box>Realismus** und **<box>Spaß** wurde DPHF höher als PHF bewertet
|
||||
* Länge: 11 DPHF, 1 PHF; gleicyth bei Dicke
|
||||
* **<box>Anstrengung** war für Teilnehmenden höher oder gleich
|
||||
* Länge: 7 DPHF, 5 gleich; Dicke: 8 DPHF, 2 gleich, 2 PHF
|
||||
|
||||
---
|
||||
# Experiment 1: **Limitierungen**
|
||||
* Nur $n=12$ Teilnehmende
|
||||
* Bei Länge:
|
||||
**statistisch signifikante** Unterschiede bei Bewertungen,
|
||||
Wilcoxon-Signed-Rank-Test-Unterschiede **nicht eindeutig**
|
||||
* Bei Dicke:
|
||||
**nicht eindeutige** Unterschiede bei Bewertungen,
|
||||
Wilcoxon-Signed-Rank-Test-Unterschiede **statistisch signifikant**
|
||||
* Begriff *exertion* unterscheidet nicht zwischen physischen und mentalen **<box>Anstrengung**
|
||||
|
||||
---
|
||||
<!-- _class: chapter -->
|
||||
# Experiment 2
|
||||
## <br>Das Gewicht bewegt sich aber langsam ! <br><br> Kann man trotzdem (realistisch) schwere Objekte heben ?
|
||||
|
||||
---
|
||||
# **Teilnehmer:innen** des Experiments
|
||||
# One step further: hosting services on your own infrastructure
|
||||
- I won't tell you how to set it up (plenty of guides online)
|
||||
- Here are some tools I'm using for my personal setup:
|
||||
|
||||
<center>
|
||||
|
||||
### Eigenschaften der $n = 12$ Teilnehmenden (Experiment 2)
|
||||
|
||||
Eigenschaft | Aufteilung
|
||||
-----------------------------------:|:---------------------------------------------------
|
||||
Geschlecht | 9 männlich, 3 weiblich
|
||||
Alter | Min: 21, Max: 37, Mittelwert: 27 Jahre
|
||||
Brillen/Kontaktlinsen in der Studie | 6 mit, 6 ohne
|
||||
Rechts- bzw. Linkshändige | 10 Rechts-, 2 Linkshändige
|
||||
Erfahrung mit 3D-Spielen | Mittelwert: 2,9 (Skala von 1 bis 7)
|
||||
Erfahrung mit VR | Min: 1, Max: 4, Mittelwert: 1,8 (Skala von 1 bis 7)
|
||||
|
||||
Requirement | Possible tool
|
||||
-:|:-
|
||||
Server|Any VPS
|
||||
Simple software deployment|Docker
|
||||
HTTPS support|Caddy
|
||||
Git collaboration|Gitea
|
||||
Presentation hosting|Git-Pages
|
||||
Automated deployment|Gitea Actions
|
||||
</center>
|
||||
|
||||
---
|
||||
# Experiment 2: **virtuelle Objekte heben**
|
||||
<!-- _header: Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy to Enhance Object Perception in Virtual Reality - Video: [3] -->
|
||||
<div class="multicolumn"><div>
|
||||
|
||||
- Würfel verschiedener Größen sollen aus <br>einem **Inventar** genommen werden
|
||||
- Nach dem Greifen soll der Würfel in <br>die **richtige Lage** gebracht werden
|
||||
- Kombinationen von 6 Varianten werden <br>nach einer **Latin Square Approach** <br>von den Teilnehmenden verglichen
|
||||
- Anhand der Vergleichsergebnisse<br> wird ein **Score** für Metriken berechnet
|
||||
|
||||
</div><div>
|
||||
|
||||

|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
---
|
||||
# Experiment 2: **virtuelle Objekte heben**
|
||||
<div class="multicolumn"><div><bbox>
|
||||
<center>
|
||||
|
||||
### Getestete Varianten
|
||||
|
||||
Name | 🖐️ | 👁️ | 👂
|
||||
------------------:|:----:|:--------------:|:-------:
|
||||
`Base` | PHF | :x: | :x:
|
||||
`Hapt` | DPHF | :x: | :x:
|
||||
`Prog` | DPHF | *Progress Bar* | *Whoosh*
|
||||
`Scal` | DPHF | *Skalierung* | *Whoosh*
|
||||
`Trans` | DPHF | *Transparenz* | *Whoosh*
|
||||
`Mask` | DPHF | *Rauch* | *Whoosh*
|
||||
|
||||
</center>
|
||||
</bbox></div><div><bbox>
|
||||
|
||||
### Gemessene Metriken
|
||||
**<box>Realismus**, **<box>am wenigsten beunruhigend**, **<box>Anstrengung**, **<box>Spaß**, **<box>Präferenz**
|
||||
</bbox></div></div>
|
||||
|
||||
---
|
||||
# Experiment 2: **Vorgehensweise**
|
||||
|
||||
<div class="multicolumn"><div>
|
||||
|
||||
## Latin-Square mit $6$ Parametern
|
||||
|
||||
* **Position**: Varianten werden an jeder Position einmal getestet
|
||||
* **Teilnehmer:innen** testen jede
|
||||
Variante einmal
|
||||
* **Reihenfolge**: Für jedes Paar von Varianten $(v_1, v_2)$ gilt:
|
||||
$N_{v_1\space vor\space v_2} = N_{v_2\space vor\space v_1}$
|
||||
|
||||
</div><div><center>
|
||||
|
||||
(Beispiel-Einträge, vgl. [4])
|
||||
|
||||
### Variante nach **Teilnehmer:in** und **Position**
|
||||
|
||||
Position $\downarrow$|$T_1$|$T_2$|$T_3$|$T_4$|$T_5$|$T_6$|Vergleich
|
||||
:-|:-:|:-:|:-:|:-:|:-:|:-:|-:
|
||||
1|A|B|C|D|E|F|:x:
|
||||
2|B|C|D|E|F|A|2\. vs 1\.
|
||||
3|F|A|B|C|D|E|3\. vs 2\.
|
||||
4|C|D|E|F|A|B|4\. vs 3\.
|
||||
5|E|F|A|B|C|D|5\. vs 4\.
|
||||
6|D|E|F|A|B|C|6\. vs 5\.
|
||||
|
||||
* $v_1\xrightarrow{besser\space als}v_2: \text{+2 Punkte für } v_1$
|
||||
* $v_1\xrightarrow{gleich\space wie}v_2: \text{+1 Punkt für beide}$
|
||||
|
||||
</center></div></div>
|
||||
|
||||
---
|
||||
<!-- _class: quote -->
|
||||
# Erwartungen der Autoren
|
||||
|
||||
- "We expect [...] Shifty to increase the **realism** and **fun** compared to [PHF]."
|
||||
- "[W]e expect the participants to favor Shifty's feedback and that **enhanced visualizations** [...] increase the perceived **realism** and **fun** for the user, while **minimizing the disturbing impact** [...]."
|
||||
- "Regarding **exertion**, we expect [PHF] to require the least, and Shifty's dynamic feedback to be more physically demanding."
|
||||
- "[W]e also expect **appropriate visualizations** to **compensate** for that to some degree, decreasing the perceived **exertion** compared to a standard visualization.
|
||||
|
||||
|
||||
|
||||
Stimmt das? 🤔
|
||||
|
||||
---
|
||||
# Experiment 2: **Ergebnisse**
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
# Experiment 2: **Ergebnisse**
|
||||
- ✅ **<box>Realismus** und **<box>Spaß** sind höher bei Shifty als bei PHF
|
||||
- ✅ Visiualisierungen minimieren die **<box>Beunruhigung**
|
||||
- ✅ **<box>Anstrengung** ist höher bei Shifty als bei PHF
|
||||
- ❓ Visualisierungen kompensieren (einigermaßen) die **<box>Anstrengung**
|
||||
- Bisherige Ergebnisse zur **Visual Dominance** bestätigt
|
||||
|
||||
---
|
||||
# Experiment 2: **Ergebnisse**
|
||||
## Welche Variante liefert die beste Erfahrung?
|
||||
|
||||
* ### TL;DR: <box> Es hängt davon ab, welche Eigenschaft am wichtigsten ist
|
||||
* **<box>Realismus**/**<box>am wenigsten beunruhigend**/**<box>Präferenz** $\implies$ `Skalierung`
|
||||
* **<box>Spaß**/**<box>Präferenz** $\implies$ `hinter Rauch verstecken`
|
||||
* **<box>Anstrengung** (Min.) $\implies$ `Base (nur PHF)` Wenn DPHF verwendet $\implies$ `Transparenz`
|
||||
|
||||
---
|
||||
# Experiment 2: **Limitierungen**
|
||||
* Auch nur $n=12$ Teilnehmenden
|
||||
* Keine Unterscheidung zwischen physischen und mentalen **<box>Anstrengung** beim *exertion*
|
||||
* Auch wenn kompensiert $\rightarrow$ **<box>Anstrengung** bleibt hoch
|
||||
* Beispiel eines Hammers ist **begrenzt** (1-dimensionale, mit Shifty kompatible Anwendung)
|
||||
|
||||
---
|
||||
# **Fazit**
|
||||
|
||||
<div class="multicolumn"><div>
|
||||
|
||||
## Vorteile
|
||||
- **interessante Entwicklung**
|
||||
- **Realismus** und **Spaß** werden bei **tragbaren Kosten** erhöht
|
||||
|
||||
</div><div>
|
||||
|
||||
## Nachteile
|
||||
- nur ein **Forschungsprojekt**
|
||||
- nur 1-dimensionales Trägheitsmoment (weit von AHF entfernt)
|
||||
- **Anstrengung** soll berücksictigt werden
|
||||
- Andere Aspekte des hapt. Feedbacks wie Textur und Form nicht geändert
|
||||
|
||||
</div></div>
|
||||
|
||||
---
|
||||
# **Ausblick** der Studie
|
||||
- Horizontale Implementierungen von Shifty testen, um **mehr Dimensionen** hinzuzufügen
|
||||
- Weitere Forschung zur **Visual Dominance**, um Realismus zu erhöhen
|
||||
- 2\. Experiment mit **komplexeren Formen** als Würfel wiederholen
|
||||
- Einfluss von DPHF auf **Inputs** testen
|
||||
- Erfahrung mit DPHF über **längere Zeitspannen** testen
|
||||
# ...isn't this really expensive, though?
|
||||
* Not really!
|
||||
* Domain name: `~10 EUR/year`
|
||||
* 24/7 VPS (200GB Storage, 6 vCPUs, 12GB RAM): `6.72 EUR/month`
|
||||
* Also hosting other services on it and not even at capacity
|
||||
* I use Contabo, but Hetzner/OVH/Hostinger also work
|
||||
* *it's all yours, no need to worry about your data being accessed by third parties!*
|
||||
* Privacy does have a price, but so does exposing your personal data
|
||||
* **<box>Which one are you willing to pay?**
|
||||
|
||||
---
|
||||
<!-- _class: "references" -->
|
||||
# Quellen
|
||||
|
||||
1. [Zenner, A., & Krüger, A. (2017). Shifty: A weight-shifting
|
||||
dynamic passive haptic proxy to enhance object
|
||||
perception in virtual reality. IEEE transactions on
|
||||
visualization and computer graphics, 23(4), 1285-1294.](https://ieeexplore.ieee.org/abstract/document/7833030)
|
||||
1. [Burns, E., Razzaque, S., Panter, A. T., Whitton, M. C.,
|
||||
McCallus, M. R., & Brooks, F. P. (2005, March). The hand is
|
||||
slower than the eye: A quantitative exploration of visual
|
||||
dominance over proprioception. In IEEE Proceedings. VR
|
||||
2005\. Virtual Reality, 2005. (pp. 3-10). IEEE.](https://wwwx.cs.unc.edu/Research/hyre/papers/EVEAuthored/2005-VR-Burns.pdf) (Visual Dominance)
|
||||
1. [Zenner, A., "Shifty - A Weight-Shifting Dynamic Passive Haptic
|
||||
Proxy for Virtual Reality (IEEE VR 2017)." YouTube [Online].
|
||||
Verfügbar: https://www.youtube.com/watch?v=1l0wKk6q_ss.
|
||||
[Zugegriffen: 2026-05-19].](https://www.youtube.com/watch?v=1l0wKk6q_ss) (Demo-Video)
|
||||
1. [Slideserve - PPT - Chapter 5 Designing HCI Experiments
|
||||
PowerPoint Presentation, free download - ID:7070933](https://www.slideserve.com/sanders-nestor/chapter-5-designing-hci-experiments-powerpoint-ppt-presentation)
|
||||
(Zugegriffen 2026-05-20, Latin-Square-Beispiel)
|
||||
|
||||
[Titelbild: Joshgmit (Pixabay)](https://pixabay.com/illustrations/ai-generated-woman-virtual-reality-8262903/) (2026-06-24 aufgerufen, KI-generiert)
|
||||
|
||||
[Bild (gehobene Hände): geralt (Pixabay)](https://pixabay.com/illustrations/inclusion-diversity-social-team-9365065/) (2026-06-24 aufgerufen)
|
||||
|
||||
# References
|
||||
|
||||
|
||||
---
|
||||
# Präsentation online verfügbar
|
||||
# This presentation is online too!
|
||||
|
||||
<div class="multicolumn"><div align="center">
|
||||
|
||||
## PDF
|
||||
|
||||
[](https://pages.ct.cozytren.ch/sti-presentation/presentation.pdf)
|
||||
[](https://pages.ct.cozytren.ch/m1s2-eng-presentation/presentation.pdf)
|
||||
|
||||
</div><div align="center">
|
||||
|
||||
## HTML
|
||||
|
||||
[](https://pages.ct.cozytren.ch/sti-presentation)
|
||||
[](https://pages.ct.cozytren.ch/m1s2-eng-presentation)
|
||||
|
||||
</div><div align="center">
|
||||
|
||||
## Repository
|
||||
|
||||
[](https://gitea.ct.cozytren.ch/romane/sti-presentation)
|
||||
[](https://gitea.ct.cozytren.ch/romane/m1s2-eng-presentation)
|
||||
|
||||
</div></div>
|
||||
|
||||
```bash
|
||||
wget https://pages.ct.cozytren.ch/sti-presentation/presentation.pdf
|
||||
git clone https://gitea.ct.cozytren.ch/romane/sti-presentation
|
||||
wget https://pages.ct.cozytren.ch/m1s2-eng-presentation/presentation.pdf
|
||||
git clone https://gitea.ct.cozytren.ch/romane/m1s2-eng-presentation
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user