01
Projekt im Fokus
Effektiv Japanisch lernen

Tanuki Sensei

Mit dieser interaktiven WebApp lernen Sie kostenlos und effektiv Japanisch. In früheren Versionen waren die Lernfunktionen in der Hauptseite von Tanuki Sensei inbegriffen.

Ausgewählte Items sind jetzt global und bleiben auch beim Neuladen der Seite gespeichert. Mit einem Profil lässt sich nun Fortschritt speichern!

Das Frontend wurde mit dem React-Framework erstellt. Das Backend besteht aus einer Express-API (Node.js) und MongoDB.

かな
Kana
部首
Radikale
漢字
Kanji
単語
Vokabeln
文法
Grammatik

Effektives Lernen.

Items werden nach dem SRS (Spaced Repetition System) gelernt.

Durch bewusstes Setzen von Pausen zwischen Abfragen wird das Langzeitgedächtnis gefördert.

Umfangreiche Funktionen.

Sie haben die freie Wahl, welche Items sie lernen möchten. Wählen Sie einfach die Items aus den Listen aus, die sie lernen möchten.

Es steht ein Kurs, besonders nützlich zum Erlernen neuer Items, einem Test und einem Quiz zur Verfügung.

Dauerhaft kostenlos.

Tanuki Sensei ist im vollen Umfang kostenlos und wird das auch bleiben. Zusätzlich wird Tanuki Sensei ständig aktualisiert und verbessert!

02
Programmierung fürs Web
Rust, Bevy und WebAssembly

Projekte im Web

Das klassische Snake. Versuchen Sie so viele Früchte wie möglich zu essen und dabei nicht in den eigenen Schwanz zu beißen. Sie dürfen auch nicht das Spielfeld verlassen.

Wenn alle Felder mit der Schlange gefüllt sind, haben Sie das Spiel gewonnen.

Um das Spiel zu starten klicken sie auf Starten!

(Nur für die Desktopansicht)

W

Nach oben

S

Nach unten

A

Nach links

D

Nach rechts

Starten!
03
Programmierung in unterschiedlichen Sprachen
Binär, Oktal, Dezimal und Hexadezimal

Taschenrechner

Als ich im Frühjahr 2021 begann Rust zu lernen, wollte ich nach den Grundlagen direkt eine Anwendung mit grafischer Oberfläche erstellen. Die Frage war: was genau soll ich überhaupt als erstes Projekt erstellen?

Ich kam auf die Idee eines Taschenrechners, da es ein klar definiertes Ziel gibt was einen Taschenrechner ausmacht. Es schien mir auch nicht zu komplex, da Programmiersprachen die Rechnungen bereits können. Um es etwas spannender zu machen, wollte ich aber einen Taschenrechner der mit verschiedenen Zahlensystemen umgehen kann.

Mittlerweile habe ich drei Taschenrechner in verschiedenen Sprachen entwickelt. Zuerst in Rust mit Druid, dann mit HTML, CSS und Javascript und schließlich mit JavaFX.

Die erste Version

Rust

Wie erwähnt schrieb ich meinen ersten Taschenrechner mit Rust und Druid. Druid ist eine Cargo (in den meisten Sprachen "Library") für grafische Oberflächen.

Die Erstellung war herausfordernd, denn bisher hatte ich keine fertigen Anwendungen mit grafischen Oberflächen entwickelt. (Abgesehen von Webseiten)

fn to_decimal(value: &str, radix: u32) -> u32 {
    let mut decimal: u32 = 0;
    for (i, c) in value.chars().enumerate() {
        decimal += c.to_digit(radix).unwrap() * (radix.pow((value.len() - (i + 1)) as u32)) as u32;
    }
    decimal
}

fn change_sum(mut value: u32, radix: u32) -> String {
    let mut sum: String = "".to_string();
    loop {
        sum += &char::from_digit(value % radix, radix).unwrap().to_string();
        if value >= radix {
            value = value / radix;
        } else {
            break;
        }
    }
    sum.chars().rev().collect::<String>()
}
Die einfache Version

JavaScript

Hier werden die bereitgestellten Funktionen 'parseInt()' und 'toString()' verwendet um Zahlen zu anderen Systemen zu konvertieren.

function toDecimal(value, radix) {
    return parseInt(value, radix);
}

function fromDecimal(value, radix) {
    var decimal = toDecimal(value, 10);
    return decimal.toString(radix);
}
Die beste Version

JavaFX

Die neuste und beste Version des Taschenrechners. Die Eingabe und Nutzung funktionieren wie ein normaler Taschenrechner und ist nicht mehr so grob wie bei den anderen Versionen.

Diese Funktion wird aufgerufen, wenn in der Menüleiste ein anderes Zahlensystem ausgewählt wird.

enum Numbersystem {
    BINARY,
    DECIMAL,
    OCTAL,
    HEXADECIMAL
}
// Change Enum when the option is selected in the menu.
public void setNumbersystem(ActionEvent e) {
    String input = ((MenuItem)e.getSource()).getText();
    int temp = getDecimal(primaryNumber.getText());
    switch (input) {
        case "Binär" -> numbersystem = Numbersystem.BINARY;
        case "Oktal" -> numbersystem = Numbersystem.OCTAL;
        case "Dezimal" -> numbersystem = Numbersystem.DECIMAL;
        case "Hexadezimal" -> numbersystem = Numbersystem.HEXADECIMAL;
    }
    primaryNumber.setText(toNumbersystem(temp).toUpperCase());
    numberSystemMenu.setText(input);
}
04
Projekte in Zukunft
Binär, Oktal, Dezimal und Hexadezimal

Weitere Projekte

Ich beschäftige mich immer wieder mit neuen Techniken und Sprachen. Seien Sie auf meine nächsten Projekte gespannt.

Weitere Projekte folgen...

05
Mein Profil
Lebenslauf, Ausbildung und Kompetenzen

Lebenslauf

Hier finden Sie meinen Lebenslauf, meine aktuelle Position, Erfahrungen und Kompetenzen.

Kompetenzen
Beruflicher Werdegang
Fachinformatiker für Anwendungsentwicklung

SRH Berufsbildungswerk, Neckargemünd

Kaufmann für Digitalisierungsmanagement

SRH Berufsbildungswerk, Neckargemünd

Berufsvorbereitende Bildungsmaßnahme

SRH Berufsbildungswerk, Neckargemünd

Schulischer Werdegang
Weiterführendes Gymnasium Fachrichtung IT

Albert-Einstein-Schule, Ettlingen

Kaufmännisches Berufskolleg

Berufskolleg Merkur Akademie, Karlsruhe

Mittlere Reife

Comenius Realschule Merkur Akademie, Karlsruhe

Aktuelle Position

Im September 2019 begann ich eine einjährige berufsvorbereitende Bildungsmaßnahme. Aktuell bin ich Auszubildender als Kaufmann für Digitalisierungsmanagement im SRH Berufsbildungswerk Neckargemünd.

Fachhochschulreife

Ich habe die mittlere Reife und mache neben der Ausbildung die Qualifikation zur Fachhochschulreife mit dem Ziel ein duales Studium beginnen zu können.

Kompetenzen

Nach einem erfolgreichen Abschluss der mittleren Reife beschäftigte ich mich im weiterführenden Gymnasium viel mit der Java Programmierung. Ich startete einige Heimprojekte, zuerst nur Konsolenanwendungen, danach auch grafische Oberflächen mit AWT und Swing. Etwas später tat ich meine ersten Schritte in JavaFX.

Ich interessiere mich sowohl beruflich als auch private für Programmierung. Besonders interessant finde ich künstliche Intelligenz und Machine Learning.

Privat

In meiner Freizeit beschäftige ich mich mit einer Vielzahl an Projekten. Darunter einige Webseiten und Spiele. Besonders gerne beschäftige ich mich mit unterschiedlichen japanischen Medien und lese japanische E-Books.

Coding
Java, Rust und Python

Programmiersprachen

HTML, CSS, JavaScript und React

Frontend Entwicklung

PHP, SQL, Node.js, Express API und MongoDB

Backend Entwicklung

Rust im Web

WebAssembly

Administration
WordPress, Joomla und Odoo

Content Management Systeme

Sprachen
Deutsch

Muttersprache

Englisch

Fließend

Japanisch

Gut in Schrift und Verständnis