Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Oliver Braun
    @obcode
    Das ist aber in dem verwendeten Docker-Container. Vielleicht anderen nehmen? Go get gemacht?
    Florian Ritterhoff
    @flori-uni
    Meine persönliche Meinung: Ich denke ein anderer Container wird wenig bringen. Solange das Projekt als Go Module Projekt läuft und im Cache noch keine Auflösung der Abhängigkeiten vorhanden ist wird er weiterhin versuchen die Referenzen aufzulösen und dann lokal zu suchen... So verstehe ich zumindest den Ablauf bei Go. Erst wenn das Projekt im Go path unter src liegt oder die Auflösung der Abhängigkeiten schon erfolgt ist hört der das suchen auf 🙄🤔
    Aus dem Grunde kopiere ich in meiner dockerfile mein Projekt nach /go/src/github.com/... Beschleunigt den Build um ca. Faktor 6-7 weil er keinerlei Downloads/Suchen mehr durchführt
    Oliver Braun
    @obcode
    👍
    Florian Ritterhoff
    @flori-uni
    Der Ansatz hilft aber vermtl jez wenig für das Problem im Jenkins da der den workspace nach /home/jenkins/... Mapped 🙄
    Maximilian Gaul
    @Bresenham
    Ich weis nicht welchen Docker-Container ich nehmen soll, ich ging davon aus, dass obraun/vss-protoactor-jenkins korrekt funktioniert
    Florian Ritterhoff
    @flori-uni
    Nachdem ich gerade drüber sitze und Versuche es in meinen Kopf zu bekommen: In wie weit müssen wir bei dem Themengebiet Parallelisierung bzw. insbesondere Parallelisierungstechniken die verschiedenen Formeln und Werte auswendig können? 🙈
    Oliver Braun
    @obcode
    Das muss ich mal mit Koll. Zugenmaier besprechen.
    Florian Ritterhoff
    @flori-uni
    Ok 👍
    Sebastian Baumann
    @baschte83

    Kann mir jemand helfen und sagen, warum meine .proto-Files nicht gebaut werden können? Ich steh grad völlig auf dem Schlauch.
    Makefile:

    regenerate-docker:
        docker run --rm -it \
            -v `pwd`:/messages \
            -w /messages \
            obraun/vss-protoactor-jenkins \
            make regenerate
    
    regenerate:
        go install -v github.com/micro/protoc-gen-micro
        protoc -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/micro/protobuf \
            --micro_out=. --go_out=. cinemahallmsg.proto

    Jenkins-Output:

    protoc -I=. -I=/go/src -I=/go/src/github.com/micro/protobuf \
        --micro_out=. --go_out=. cinemahallmsg.proto
    /go/src/github.com/micro/protobuf: warning: directory does not exist.
    protoc-gen-go: program not found or is not executable
    --go_out: protoc-gen-go: Plugin failed with status code 1.
    make: *** [Makefile:19: regenerate] Error 1
    Das Verzeichnis müsste eigentlich da sein ...
    Sebastian Baumann
    @baschte83
    Hallo Herr Braun. Könnten Sie sich bitte den Jenkins nochmal ansehen? Gerade lässt er Tests und Linter bei mir aus, obwohl beides im Jenkinsfile aktiviert ist. Vielen lieben Dank.
    Oliver Braun
    @obcode
    @baschte83 posten Sie doch bitte einen Link. Danke!
    Maximilian Gaul
    @Bresenham
    Fällt am Di., 25.06, die Vorlesung Verteilte Systeme aus? Hr. Zugenmaier meinte, er sei die nächsten 2 Wochen nicht da.
    Oliver Braun
    @obcode
    Ich denke
    Florian Ritterhoff
    @flori-uni
    Gleiche Frage anderer Termin: Wie schaut es dann am 9.7. aus? :grin:
    Oliver Braun
    @obcode
    Ich denke da schon. Mal Prof. Zugenmaier fragen. Ich bin weiter bis nach den Prüfungen arbeitsunfähig 😩
    Maximilian Gaul
    @Bresenham
    D.h. also die Prüfung selbst kommt auch von Hr. Zugenmaier?
    Oliver Braun
    @obcode
    Wir machen die gemeinsam...
    J. Behrmann
    @jjxxs
    die abnahme blatt4 findet kommenden dienstag statt, ist das richtig?
    Oliver Braun
    @obcode
    und am 9.
    ich richte gleich eine Wiki-Seite ein
    Maximilian Gaul
    @Bresenham
    Wann und wo kann man sich denn den Schein abholen?
    J. Behrmann
    @jjxxs
    danke. :) können sie ein buch empfehlen? vielleicht das vom tanenbaum?
    Oliver Braun
    @obcode
    Bitte alles mit Prof. Zugenmaier klären.
    Also Schein etc.
    Florian Ritterhoff
    @flori-uni

    Hallo Herr Braun,

    ich habe zum Thema Paxos eine Frage: Auf der letzten Folie (45) schreiben Sie

    • wenn es mehrere Proposers gibt, kann der Fall leicht konstruiert werden, dass zwei Proposers ständig Proposals erzeugen und keines davon je akzeptiert werden
    • um Erfolg zu garantieren kann ein Proposer ausgewählt werden
    • nur dieser darf dann Proposals erzeugen

    Jedoch ist mir nicht klar, wie ich diesen Fall konstruieren kann. Sobald ein Acceptor das erste Mal ein Proposal akzeptiert hat sendet er für mein Verständnis ein "Promise" und kann somit nur ein Proposal eines weiteren Proposers mit einer höheren Nummer akzeptieren. Spätestens dann kann der 1. Proposer meiner Meinung nach nicht mehr Einfluss auf diesen Acceptor nehmen oder habe ich hier einen Denkfehler?

    Vielleicht können Sie mir hier weiterhelfen bzw. den Fall erläutern?

    Vielen Dank!

    Oliver Braun
    @obcode
    Ja, klar, aber wenn der 1. Proposer keinen Erfolg hat, könnte er ja mit einer größeren Nummer einen nächsten Versuch starten usw.
    Florian Ritterhoff
    @flori-uni
    Achsoooo... 😏 Ok. 😀
    Oliver Braun
    @obcode
    👍
    Florian Ritterhoff
    @flori-uni
    Ich mal wieder... 🤐
    Können Sie mittlerweile hinsichtlich des Prüfungsstoffs eine grobe Aussage treffen ob Teile nicht relevant sind? 😀🙈🙄
    Oliver Braun
    @obcode
    mmh. Das habe ich noch nicht mit Herrn Zugenmaier abgestimmt. Wird aber höchste Zeit :see_no_evil:
    Maximilian Gaul
    @Bresenham
    Interessant wäre das auch mit den Scheinen, wann man die wie wo abholen kann. Ich hab zwar Hr. Zugenmaier schon eine E-Mail geschickt, aber eine Antwort habe ich bisher nicht bekommen.
    Oliver Braun
    @obcode
    Er müsste jetzt von seiner Dienstreise zurück sein. Ich habe keine Ahnung wie er das vor hat...
    Morgen ab 10:00 macht er ja weiter Abnahmen
    Maximilian Gaul
    @Bresenham

    Ich hab eine Abweichung von den Folien zum Buch entdeckt, vermag aber selber nicht mit absoluter Sicherheit zu sagen, welche Version richtig ist.

    Die Folie 17/45 im Kapitel "Verteilte Algorithmen" behandelt die Ordnung von Ereignissen im Bezug auf Vektoruhren. Dort steht geschrieben:

    nicht(V(a) < V(b)) und nicht(V(b) < V(a)) => a und b sind konkurrent

    Im Buch "Masterkurs Verteilte Systeme" S. 364 steht:

    (V(a) < V(b)) und nicht(V(b) < V(a)) => a und b sind konkurrent

    Mit der Aussage auf den Folien folgt:

    V(b) <= V(a) und V(a) <= V(b)

    was meiner Ansicht nach mehr Sinn im Bezug auf konkurrente Prozesse macht, als die umgeformte Aussage aus dem Buch:

    V(a) < V(b) und V(a) <= V(b)
    Oliver Braun
    @obcode
    Muss ich mir in Ruhe mal anschauen. Danke!
    Maximilian Gaul
    @Bresenham

    Ich vermute einen Fehler auf Folie 27/36 im Foliensatz "Parallelisierung" zum Thema Pipelineverarbeitung.
    Dort beschreibt ein Stichpunkt, dass ein Problem in n unabhängige Teilprobleme zerfällt.

    Wie aber die Folie davor und auch ein weiterer Stichpunkt auf Folie 27 angeben, findet Pipelineverarbeitung nur bei Datenabhängigkeiten statt. Das Buch zur Vorlesung gibt das auch auf Seite 348 so an:

    Bei Fließbandverarbeitung zerfällt das Ausgangsproblem in n voneinander abhängiger
    Teilprobleme.
    Wobei das Buch auch mit einem kleinen Rechtschreibfehler zu kämpfen hat :D
    Oliver Braun
    @obcode
    Danke. Das stimmt natürlich auf den Folien nicht.
    Oliver Braun
    @obcode
    Zu den Vektoruhren: Die Aussage im Buch macht ja irgendwie wenig Sinn. Wenn gilt a < b dann gilt natürlich nicht b < a. Das ist eine Tautologie. Damit wären alle Ereignisse konkurrent. Ich denke das ist einer, von leider sehr vielen (Tipp-)Fehlern in diesem Buch.
    Wenn V(a)<V(b)V(a) < V(b) dann gilt ja (siehe 3.) sowieso schon aba \rightarrow b
    Maximilian Gaul
    @Bresenham
    Danke für Ihre Antwort :)
    Oliver Braun
    @obcode
    klar. sorry für das delay :wink:
    Florian Ritterhoff
    @flori-uni

    Hallo Herr Braun,
    ich hätte hinsichtlich der dyn. Lastverteilung eine kleine Frage. Es werden auf Folie 20 bzw. Buch S. 386 verschiedene Einteilungsmöglichkeiten dieser Verfahren genannt.

    Unter anderem auch die Unterscheidung zwischen einem minimalen und maximalen Wirkungsbereich, wobei sich dieser auf die Einschränkung der "Nachbarn" bezieht. Wie ist hier die Definition von "direkter Nachbar" zu verstehen - insbesondere wenn ich von einem klassischen Netzwerk ausgehe? Hier habe ich ja i.d.R. einen zentralen Switch und somit eine nahezu sternförmige Vernetzung und somit sind von einem Rechner aus gesehen keine Unterschiede zwischen einem direkten Nachbarn und dem gesamten System? Lediglich bei einer Ringtopologie könnte ich mir diesen Begriff der direkten Nachbarn erschließen? :confused:

    Oliver Braun
    @obcode
    Hallo Herr Ritterhoff, auch das ist wieder sehr allgemein. Es kann ja auch eine logische Verteilung sein, so dass die Nachbarn nicht über die physikalische Verbindung definiert sind, sondern z.B. auf Applikationsebene oder eben völlig beliebig. Z.B. die Knoten 1-10 sind direkte Nachbarn, 11-20 auch , … einfach per Definition
    Florian Ritterhoff
    @flori-uni
    Okay :) danke dir die Antwort!
    Maximilian Gaul
    @Bresenham

    Eine kurze Frage meinerseits:
    Beim Kapitel Übereinstimmungsalgorithmen (speziell im Buch ab S. 370) ist mir der Verlauf des Algorithmus, vor allem mit den dargestellten Bildern nicht klar.
    Im 1. Bild sieht man alle Prozesse mit ihren Werten - schonmal erste Frage: Wieso haben alle "gutartigen" Prozesse den gleichen Wert? Haben die sich zuvor darauf geeinigt - wenn ja - wie? Woher weiß man, dass von denen keiner "byzantinisch" ist?
    Im 2. Bild sieht man dann das Ergebnis nach der 1. Kommunikationsrunde - hier ist mir wiederum nicht klar, warum der byzantinische Prozess seinen Wert "0" auch sendet - obwohl doch weiter unten im Text steht:

    Ein fehlerhafter Prozess kann das Senden einer Nachricht verweigern. In diesem Fall
    kann ein fehlerfreier Prozess irgendeinen willkürlichen Wert wählen und annehmen, dass
    dieser Wert von dem fehlerhaften Prozess gesendet wurde.

    Also meiner Ansicht nach müssten hier schon alle gutartigen Prozesse ein Nil als Wert vom byzantinischen Prozess annehmen.

    Das 3. Bild kann ich mir dann nur so erklären, dass der byzantinische Prozess seinen zuvor (eigentlich korrekt) berechneten Vektor nicht sendet und daher alle gutartigen Nil annehmen.
    Im letzten Bild fügen die gutartigen Prozesse ihre empfangenen Vektoren über eine Mehrheit zum Wert zusammen (ist für mich auch verständlich).

    Es wirkt so, als wäre der byzantinische Prozess in der 1. Kommunikationsrunde noch "normal", aber in der 2. dann nicht mehr. Oder habe ich einen Denkfehler?

    Oliver Braun
    @obcode
    @Bresenham das ist etwas ungünstig gewählt.
    • Jeder hat einen eigenen Wert und die können natürlich verschieden sein, also z.B. v1=8,v2=17,v3=92,v4=129v_1 = 8, v_2=17, v_3=92, v_4=129.
    • der Ausgangszustand ist dann wohl der aus einer früheren Runde, wobei IMHO das 0 bei dem v4v_4 eher ein nil sein sollte.
    • dann senden die ersten 3 (8,17,92, nil) und der 4er sendet z.B. (12876,23,nil, 133)
    • damit können die ersten 3 dann feststellen, dass sie alle das gleiche gesendet haben und der 4er was andere.
      Okay?