Posts by sls

    Medienkompetenz wäre natürlich auch noch etwas, das mehr Raum in der Schule gebrauchen könnte.

    In dem Zusammenhang befürchte ich dass man sich der Bedeutung eines anständigen Informatikunterrichts nicht bewusst wird. An Schulen werden Bildschirme in Form von Handys, Tablets usw. verboten. Social Media durch Altersbeschränkungen verteufelt.


    Ich fände die Idee auch toll Schülern innerhalb eines solchen Informatikunterrichts das Programmieren zu zeigen. Das muss ja nicht den gesamten Inhalt des Unterrichts füllen, könnte aber ein Block sein. Ich fände auch Digitaltechnik, generell das EVA-Prinzip oder auch Netzwerktechnik super wichtig und spannend.


    Muss es grundsätzlich ein Informatikfach sein? Man kann ja auch generell mal darüber nachdenken MINT, also fächerübergreifend zu lehren. Mal den Wasser- oder Strombedarf eines Rechenzentrums berechnen, die ökologischen Faktoren.

    Was es "kostet" und wie viele Server im Hintergrund arbeiten, wenn man einen "Short" streamt. Was überhaupt ein Stream technisch ist.


    Wenn man so ein Klassenzimmer mit Frontalunterricht anschaut erinnert das allerdings eher an eine Kaserne.

    Du hast „Blockchain“ in der Aufzählung vergessen.

    Stimmt, das wurde bei IT-Managern so gepriesen dass ich es ganz verdrängt habe. Aber wenn man vom Teufel spricht.

    IPv6 (okay, der musste sein :D)

    IP-Adressen: Vorschlag für IPv8 als neues Internetprotokoll - Golem.de
    Der Vorschlag erntet aber viel Kritik aus Fachkreisen. Auch ist der Autor durch seine umfassende Nutzung von KI negativ aufgefallen.
    www.golem.de


    Also die IP-Problematik mit KI oder so.

    Das die Verwendung einer K.I. nun tatsächlich ein Kriterium für Systemsicherheit ist wage ich zu bezweifeln, denn auch eine K.I. besteht aus Code, die irgendwer irgendwann mal geschrieben hat. Ok, diese K.I. könnte sich selber gefixt haben oder von einer anderen K.I. korrigiert worden sein, die aber wiederum auch mal von irgendwem irgendwann geschrieben wurde. Henne <> Ei :biggrin:


    Im Unternehmenskontext in dem ich beruflich unterwegs bin, geht es aber genau darum nicht. Es geht nicht darum eine KI auf ein Software-Repository "los zulassen" und dann im Handumdrehen Code-Fixes von eben jener zu übernehmen. Es geht darum, dass Software-Architekturen, gerade die oben angesprochenen Browser oder ganze Betriebssysteme wahnsinnig komplexe und große Codebasen haben, die kaum ein Mensch oder gar ein ganzes Team im Detail überblicken welches häufig notwendig ist um kritische Systemlücken zu identifizieren.


    Die KI mag nicht gut darin sein immer sinnvolle Lösungen parat zu haben, sehr wohl aber auf großen Datensätzen (nichts anderes ist Quellcode auch) nach Mustern zu suchen. Und die immer wiederkehrenden Speicherprobleme unterliegen ja auch Mustern.


    Daher ist die Aussage, dass KI ein Werkzeug ist m.M. nach auch zutreffend. Man muss wissen, wofür es eingesetzt werden soll. Das Heilsversprechen der Industrie geht aber am Problem vorbei und bedient den Hype. Alle paar Jahre lang kommt dieses eine Tool, dieses eine, nächste große Ding. Cloud. IoT. IPv6 (okay, der musste sein :D). Jetzt eben KI.

    Damit folgt die EU dann weiter konsequent den "Vorgaben" aus den USA. Digitale Souverenität und Datenschutz sind damit hinfällig, und für andere Staaten die letzten Argumente sich an der EU zu orientieren, ebenso. Den Wettlauf um KI holen wir auch nicht mehr auf. Es bleibt also spannend, wie sich Europa künftig gegen China und den USA am Markt behaupten will, wenn da so gar nichts innoviert wird.

    sls Frust bei C++ kann ich verstehen, aber bei C? Das ist doch super simpel. Quasi so etwas wie ein plattformunabhängiger Makro-Assembler, weil man sich zu jeder Anweisung leicht den Assembler-Code vorstellen kann, den der Compiler dafür erstellt (ohne Optimierungen).


    Simple ain't easy, right?

    Mir fehlt wohl ein praktischer Anwendungsfall. Ich fange immer wieder an Konzepte über C zu lernen aber bleibe dann nicht am Ball. Eventuell wäre ein Arduino oder anderes Entwicklerboard eine gute Idee. Keine Ahnung ob das so sinnvoll ist. Ich hatte mit Python damals als erste Programmiersprache angefangen und der Wechsel auf Java war erstmal überfordernd. Auch wenn Python einfach ist, passieren mir manchmal zu viele Dinge automagisch. Wenn man dann in C realisiert, dass man alles selber bauen muss (Arrays etc.) ist erstmal abschreckend, aber ja genau das was man will wenn man "lernen möchte"?

    Eine Sache die ich Java und der JVM als Ökosystem mag ist die Community. Bei C++ wirkt die eher uneins über die Entwicklung der Sprache selbst. Und dass jeder ab einem gewissen Punkt seine eigene Standard-Lib implementiert.

    Mich hätte auch interessiert nach welchen Kriterien die behandelten Sprachen gewählt wurden. U.a. sind ja auch drei JVM-Sprachen dabei.

    Ich komme bisher leider nicht darüber hinaus mit bspw. C/C++ reale Anwendungen zu entwickeln, sondern hänge immer an den bekannten Lektüren aus den 70er und 80er (The C Programming Language, A Tour of C++) fest. Auch wenn es insgesamt spaß macht und mir als Lehrsprache für Low-Level-Zeug taugt, ist der Frustrationsgrad manchmal enorm. Gerade bei C.

    Allerdings verstehe ich jetzt nicht wie Deiner Meinung nach der Aufbau sein soll. Doch so wie im ersten Ansatz? Wie kann ich da die RPi vom Homenetz separieren mit IPTables? Dazu muss doch ein Router mit IPTables dazwischen liegen :conf:

    Habe ich doch oben geschrieben. 1. Fritzbox -> 2.1 Router 2.2AP -> DMZ (Rpi), LAN (Sonstige Clients)

    Welche Access Points hast du denn im Einsatz? Warum Mesh? Weil die Fritzbox das anbietet und "Mesh" so fancy klingt? :)

    1. Fritzbox: dient nur noch als Modem und leitet alle Anfragen an den Router weiter (Passthrough, Router wird Exposed-Host)

    2.1 Router: Empfehlung ist hier Edgerouter oder eben Mikrotik Routerboard. Damit hast du die volle Flexibilität

    2.2 Access Point: WLAN Netz(e), am Edgerouter kannst du die Subnetze an logische WLAN-Interfaces anlegen, du kannst dann über deinen AP sogar die DMZ als WLAN ausbilden. Dazu dein LAN und ggf. noch ein Gast-WLAN. Oder IoT.

    Das war ja genau mein Problem bei dem ersten Ansatz :) Deshalb habe ich es ja umgedreht: Die WLAN Clients sind im FB Homenetz zusammen mit den anderen HomeSystemen und die RPi haengt in einem eigenen Subnetz welches keinen Zugriff auf das Homenetz hat.

    Ich habe mich nur auf die linke Version deiner Skizze bezogen, weil die rechte Seite vom Netzwerk-Design noch kaputter ist.

    Der Router hängt dort ja dann nur zum Selbstzweck am LAN-Netz.

    Wenn du dir das zutraust und Sicher im Umgang mit IPTables bist, würde ich das mit dem Edgerouter umsetzen. Du kannst hier natürlich auch erstmal Das Management-Netz (also das Fritzbox-Lan) so weiter verwenden und PAT auf Fritzbox aktiviert lassen. Du konfigurierst den Edgerouter dann auch mit Src-Nat, und es spielt überhaupt keine Rolle wie oft du hier "NAT'test". Wenn die Fritzbox in späteren Migrationsschritten dann nur noch die PPPoE-Aushandlung macht, kannst du das PAT hier auflösen.

    framp: man kann es auch unnötig kompliziert machen :)

    Ich verstehe nicht was du mit dem WLAN an der DMZ willst. Die WLAN-Clients gehören in ein eigenes Netz (oder ins Lan-Netz, je nach dem). Sinn der DMZ ist nicht dass du dort auch noch Clients betreibst, die dir auch alle Hops gehen wenn jemand den Pi kompromitiert.

    Der Connection State der Verbindung vom Client aus einem anderen Subnetz zur DMZ wäre dann in Iptables-Sprech "related, established". Beim Edgerouter lassen sich solche dedizierte Regeln mit den jeweiligen Ziel oder Ursprungs-Interfaces oder Adressen ebenso einrichten. Hier steht dir ein vollwertiger Packet Filter zur Verfügung.

    Ich würde das wohl eher so bauen: Fritzbox in Passthrough (Exposed Host auf Edgerouter)-> Edgerouter (Firewall, Netzsegmentierung) -> DMZ, LAN (WLAN mittels Access Point, vergiss den AVM-Krempel).

    Doppel NAT ist nicht besonders schoen.

    Die wuerde dann nur noch Modem und Telefonfunktion haben wenn ich eine FW dahinter setze.

    Was imho völlig ok ist, lieber würde ich eine eigene Whitelisting Firewall mit dem Edgerouter o.ä. konfigurieren, als diesen AVM-Geräten zu trauen. Da weiß man ja auch nicht so recht was die machen, welche Ports dann plötzlich für irgendwelche Dienste offen sind, usw. usf.

    Und was genau ist am PAT zwischen den beiden Hops "nicht so schön"? ;)

    Quote

    Auf dieser Seite sind ein paar FWs getestet worden. Preislich liegen die um die €500 was mir fuer den Zweck zu viel ist. Maximal sind €200 drin. Falls jemand eine FW in dieser Preisklasse empfehlen kann wuerde ich den Weg mit der FW gehen. Ansonsten muss ich wohl die Doppelnatter schlucken

    Das von Der_Imperator skizzierte Setup ist relativ straightforward und habe ich so ähnlich mit einem Mikrotik Routerboard im Einsatz. In einem anderen Setup habe ich den Edgerouter im Einsatz, sind auch relativ brauchbar.

    Man kann das m.E. schon mit einer eigenen Implementierung und sockets versuchen, da muss halt ein Protokoll her dass sowohl die Text- als auch Bilddateien erkennt und eine saubere Kommunikation gewährleistet.

    HTTP eignet sich übrigens nicht besonders gut zum Austauschen von größeren Dateien. Besonders nicht in REST.

    Wie kann ich denn anstelle von Text Dateien wie zum Bilder übergeben? Mit welcher Funktion kann ich Bilder oder ganz allgemein ausgedrückt, Dateien einlesen und dann versenden?

    Bilddateien liegen auf deinem PC bereits als Binärdaten vor. Du kannst diese in Python als solche mit dem with-Statement einlesen und dann über einen TCP-Socket versenden. Da bei der Übertragung über das Netwerk und Sockets, besonders größerer Dateien, Fragmentierung der Daten vorgenommen wird, musst du dich dann halt um einen geeigneten Mechanismus kümmern der dem Client vermittelt, ab wann der Datenstrom für eine Bilddatei vollständig ist.

    Um es kurz zu machen: nimm' eine fertige Bibliothek.

    journalctl -f gibt einen Fehler für die dritte Zeile der Regel aus: Invalid key/value pair

    Dann passt die Syntax der Regel nicht, versuch' mal:

    Code
    ACTION=="add", RUN+="/etc/udev/scripts/start-move-usb-data.sh $env{ID_FS_UUID}"

    Du musst dann allerdings auch dein Bash-Skript anpassen, wenn du die UUID verwenden willst:

    Code
    echo mount /dev/disk/by-uuid/$ID_FS_UUID /media/pi/$ID_FS_UUID | at now

    Ich habe die Rechte der Scripte neu gesetzt und konnte nun zumindest erreichen, dass ein Script "Test" in eine Logfile schreibt, sobald ein USB-Stick eingesteckt wird. Die Udev-Regel funktioniert also. $ID_FS_LABEL, bzw. $1 werden in den Scripten aber allen Anschein nach nicht zugeordnet. Hier nochmal Tipps?

    Kannst du mal folgendes testen:

    Code
    udevadm monitor --env

    Wenn du den USB-Stick einsteckst, sollten hier nun sämtliche Label erscheinen. Wird ID_FS_LABEL hier auch angezeigt?

    ERGÄNZUNG: das Problem ist, dass du das ID_FS_LABEL über die udev-Regel nicht an dein Bash-Skript weiterreichst.

    Hier hatte ich ja gezeigt, wie man das in der udev-Regel macht:

    Code
    ACTION=="add", RUN+="/etc/udev/scripts/start-move-usb-data.sh '%E{ID_FS_LABEL}'"

    start-move-usb-data.sh muss diesen Übergabeparameter dann natürlich setzen:

    Bash
    #!/bin/bash
    ID_FS_LABEL=$1
    echo $0: $ID_FS_LABEL>>/tmp/script.log
    [...]