My own version of "Hello World" in Kotlin - dummy accounts - passwords

Gespeichert von nedab am So., 17.05.2020 - 16:26

Als ich um die 14 Jahre alt war, machte ich mich auf die Reise nach Hamburg, um ein Buch zu kaufen.
Denn in meinem kleinen Heimatort gab es keine Buchhandlung mit Programmierbüchern, so dass ich reisen musste.

Ich hatte ein klares Ziel: C++ lernen.

 

In Hamburg erstand ich dann ein Buch für 90 Mark! Über 1000 Seiten Quellcode mit Erklärungen.
Und dieses Buch hatte ich dann auch Seite für Seite gelesen.

 

C++ hatte ich aber nie wirklich genutzt, aber das Buch bescherte mir die Note 1 in Informatik, wo wir mit Delphi und Pascal programmierten.

 

Nun neige ich dazu bei Stress in die digitale Welt zu fliehen, angezogen von der Logik und Eleganz der Informatik.
Und so kam ich zu Kotlin, denn damit sind dann auch Android-Apps möglich, die ich dann als weiteren Baustein für Arduino-Projekte nutzen kann (die allerdings ruhen, denn mit Kindern ist dafür gerade keine Ruhe).

 

Und weil ein einfaches "Hello World!" mir zu langweilig erschien, habe ich ein altes Projekt realisiert. Damals hatte ich mit Ruby ein Skript erstellt, um dummy-accounts für moodle zu erzeugen.

 

Und mithilfe des Internets kam dann dies heraus:

 

mport java.io.FileWriter
import java.io.IOException

private val CSV_HEADER = "firstname,lastname,mail,password"

fun main(args: Array) {

    println("\n"+"#########  User creation in CSV schema [semikolon seperated]  #########")
    println("#########                  8 digit password                   #########")

    print("\n"+"Enter amount of user accounts: ")

    var amountInt:Int = 0
    var users = StringBuilder()

    try {
        val amount = readLine()!!
        amountInt = amount.toInt()

        for (x in 1..amountInt) users.append("firstname" + x + ";lastname" + x+";email"+x+"@fake.it;" + passw()+"\n")

    } catch (e: IllegalArgumentException){
        println("Input was not an integer. Try again.")
    }

    println("\n")
    println("Generated these "+amountInt+" user accounts:"+"\n\n")
    println(users)


    var fileWriter: FileWriter? = null

    try {
        fileWriter = FileWriter("users.csv")

        fileWriter.append(CSV_HEADER)
        fileWriter.append('\n')

        fileWriter.append(users)

        println("\n"+"Wrote CSV file \"users.csv\" successfully!"+"\n")

    } catch (e: Exception) {
        println("CSV file writing error!")
        e.printStackTrace()
    } finally {
        try {
            fileWriter!!.flush()
            fileWriter.close()
        } catch (e: IOException) {
            println("Flushing/closing CSV file error!")
            e.printStackTrace()
        }
    }
}


fun passw(): String {
    val chars = "01234567890123456789abcdefghijklmnopqrstuvwxyz.......______#######%%%%??????&&&&&&&ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var passWord = "";
    for (i in 0..8) {
        passWord += chars[Math.floor(Math.random() * chars.length).toInt()];
    }
    return passWord;
}

 

 

Es ist kein Code für äußerst sichere Passwörter, aber fürs erste ausreichend.

Ein möglicher Output könnte dies sein:

 

#########  User creation in CSV schema [semikolon seperated]  #########
#########                  8 digit password                   #########

Enter amount of user accounts: 2

Generated these 2 user accounts:

firstname1;lastname1;email1@fake.it;7?9YiKc_Z
firstname2;lastname2;email2@fake.it;%KNCG6%1.

Wrote CSV file "users.csv" successfully!