Beiträge von mickdermack

    Solange es einen Ersatz gibt, ist es auch kein Problem, das Ding über Apt zu deinstallieren. Zum Glück gibt es in den offiziellen Paketmirrors wenige Konflikte unter Paketen.
    Dass es die Installation auf irgendeine merkliche Art schneller macht ist bestenfalls ein Placebo-Effekt, da diese Option überhaupt erst zu tragen kommt, wenn eines der folgenden Dinge passiert: (Ich zitiere die Manpage) "ein gehaltenes Paket zu ändern, ein nicht authentifiziert [sic] Paket zu installieren oder ein essentielles Paket zu entfernen".
    Wenn Pakete tatsächlich nicht signiert sind, gibt es da eine eigene Option: --allow-unauthenticated. Aus den offiziellen Repos sind meines Wissens nach alle Pakete signiert. Mit Grund. apt-get update behebt das Problem im Falle von offiziellen Repos zuallermeist.

    Und bash ist eine Systemabhängigkeit, da es nicht von sh (was übrigens auf Debian die dash ist) ersetzt werden kann, alleine schon weil dash manche Funktionalität nicht bietet, die die bash hat. In /bin/ und /usr/bin/ gibt es einige Scripts, die mit bash ausgeführt werden. Außerdem ist es in Apt als essenziell markiert.

    Um meine These mit der Geschwindigkeit noch einmal zu untermauern:
    Ohne --force-yes:

    Code
    real    0m50.346s


    Mit --force-yes:

    Code
    real    0m50.944s


    Ausgeführt in einem mit debootstrap eingerichteten chroot-Jail.
    In beiden Fällen waren die Dateien bereits heruntergeladen, durch vorherige Ausführung mit -d.
    DKMS ist wegen dem rudimentären chroot-Jail fehlgeschlagen, allerdings hätte DKMS das --force-yes Flag nicht einmal zu Gesicht bekommen, geschweige denn verarbeitet.

    Für Cronjobs ist --force-yes genauso wenig geeignet wie für normale Zwecke, aus oben bereits genannten Gründen. -y reicht vollkommen, auch mit --allow-unauthenticated, wenn es nötig ist.

    Zu deinem Edit:
    -y hätte vollkommen gereicht, es sei denn, du erwartest, dass einer der oben beschriebenen Fälle eintritt (gehaltenes Paket, nicht authentifiziertes Paket, entfernt-werdendes essenzielles Paket).

    Nur ein kleines bis etwas größeres Wort der Warnung:
    --force-yes niemals angeben, außer man kennt das Resultat der Operation zu 100 Prozent.
    Beispielszenario (leicht übertrieben, aber durchaus möglich):
    apt-get install -y --force-yes libabcxyz12
    libabcxyz12 hat einen Konflikt mit bash.
    bash wird deinstalliert, ohne nachzufragen.
    Doof, dass bash systemwichtig ist...

    Auch die Manpage von apt-get warnt davor.

    Code
    --force-yes
               »Ja« erzwingen; Dies ist eine gefährliche Option, die APT
               veranlasst, ohne Nachfrage fortzufahren, wenn es etwas
               möglicherweise schädliches tut. Es sollte nicht benutzt werden,
               außer in ganz besonderen Situationen. force-yes zu benutzen, kann
               möglicherweise ihr System zerstören! Konfigurationselement:
               APT::Get::force-yes.

    Dinge wie "ist noch nie was passiert" sind hier meiner Meinung nach fehl am Platze.
    -y zu verwenden ist schon gefährlich genug, im Sinne von "kann Sachen automatisch bejahen, die du nicht willst", aber --force-yes... Ihr wisst schon, was ich sagen will... Adrenalinjunkie

    Ganz einfach Domain auswählen den gewünschten Second-Level Domain und die gewünschte Ziel Addresse eingeben.

    Und wo kann ich jetzt meine Second-Level-Domain eingeben? *:P* (Schwierige Sache, die Terminologie... Second-Level ist der 2. Teil, z.B. ab.cd.mickdermack.at)


    Ach, so geht das... *:P* (Eingabevalidierung schon einmal gehört?)

    Und das ganze Konzept... Domains kürzen... ist schon etwas eigenartig, da Subdomains tendenziell länger sind als Second-Level-Domains.

    Morgen,
    Sollte mit dem Event onClientMouseLeave funktionieren, indem du im Handler nur das ab-/aus-/weghovern behandelst:

    Lua
    addEventHandler("onClientMouseLeave", root,
    function()
        if (source == adsStatsTabButton) then
            guiStaticImageLoadImage(adsStatsTabButton, adsTabPanelBtnStatsN)
        end
        ....
    end
    )


    Während du dann in onClientMouseEnter nur das "anhovern" behandelst:

    Lua
    addEventHandler("onClientMouseEnter", root,
    function()
        if (source == adsStatsTabButton) then
            guiStaticImageLoadImage(adsStatsTabButton, adsTabPanelBtnStatsA)
        end
        ....
    end
    )

    Ungetestet, aber sollte funktionieren, wenn ich nicht gerade einen Denkfehler gemacht habe.

    Noch eine Alternative wäre, im onClientMouseEnter-Handler zu speichern, welches Element zuletzt angehovert wurde, und das jedes Mal, wenn der ausgeführt wird, auf die abgehoverte Textur zu setzen, aber die Lösung scheint mir etwas suboptimal.

    Möglicherweise noch etwas performanter wäre es, die Handler nicht auf das Root-Element zu setzen, sondern für die einzelnen Buttons jeweils eigene Funktionen auf die Buttons (bzw. Images) selbst zu setzen (Was aber nur unter Verwendung von onClientMouseEnter und onClientMouseLeave zielführend ist).

    Grüße,
    Michael

    • Variablen niemals gleich wie Klassen nennen, gibt sonst ein kleines Chaos. Variablen in lowerCamelCase und Klassen in UpperCamelCase benennen. Underscores sind in Variablen- und Klassennamen ebenfalls nicht zu verwenden.
    • Deine Variable C_Main ist vom Typ JFrame. Auch wenn die Klasse C_Main ein JFrame ist, hat ein normales JFrame (was in der Theorie auch in der Variable C_Main gespeichert werden könnte) keine Methode loadData, deshalb kann sie auch nicht direkt aufgerufen werden. Lösung: entweder ein Typecast: ((C_Main)C_Main).loadData(), oder noch besser, da du ja stets ein C_Main benötigst, um loadData aufrufen zu können, einfach die Variable C_Main im Konstruktor, und die Instanzvariable C_Main von C_New vom Typ C_Main machen.

    Wenn ich das richtig verstehe, sendest du nicht die richtigen Zeilenumbrüche. Nach "GET / HTTP/1.1" muss ein \r\n folgen, und nach der letzten Headerzeile (in diesem Fall "Host: ....") müssen zwei \r\n folgen.

    Wäre dafür, dass die Meta.xml visuell dargestellt wird. Bei den beiden anderen Möglichkeiten (die sich außerdem nicht gegenseitig ausschließen) müsste man noch etwas machen, dass man zwischen alphabetischer Sortierung und Sortierung nach Position in Meta.xml umschalten könnte, es sei denn, man liebt das Chaos.
    Außerdem bei den beiden anderen: Wie werden Unterordner gehandlet? Muss man Unterordner zusammen laden lassen, oder kann man eine Datei aus einem Unterordner auch vor einer Datei im Hauptordner laden lassen? Wenn ja: Wie würde das dargestellt werden?

    Müssen doch auch keine Nodes sein. Die Nodes können ja ebenfalls hour, weather, oder wie auch immer heißen, und die Stunde als Attribut haben was zwar ein paar Änderungen an der XML-Serialisierung erfordert, aber auf jeden Fall schöner ist, als für jede Stunde einen eigenen Node-Namen zu haben.

    ad 4: Kann man dafür nicht numerische Indizes und eine pairs-Schleife verwenden? Wenn man sie nach Stunde sortiert benötigt, könnte man auch einen von 1 fortlaufenden Index verwenden, und die Stunde in die Table tun. Ggf. dann auch serverseitig beim Start table.sort aufrufen, mit einer eigenen Sortierfunktion, die nach der Stunde in der Table sortiert.

    Bin mir nicht sicher, ob das sachlich genug für ein/mehrere Ticket(s) im Bugtracker ist:

    • Anscheinend so gut wie immer wird eine FarClipDistance von unter 100 berechnet, was in Verbindung mit dem zu der Zeit (03:15) aktiven SkyGradient zu Augenkrebsgrafik führt (Bild) (Ist das ein bekannter Bug? Alle Werte unter 100 scheinen zu so etwas zu führen.).
    • Wieso fadet jetzt gerade (03:15) das Wetter von Stunde 12 nach Stunde 24?
    • Ich würde ja die Stunden nicht von 1 bis 24, sondern von 0 bis 23 nummerieren, aber das ist eher Geschmackssache, bzw. wenn man die Stunden als Indizes verwenden würde, auch eine Sache der Scriptsprache.
    • defaultConfig.lua:43:
      Lua
      -- ToDo: Make this scary

      Als ob Stunden mithilfe von einer for-Schleife und string.format aus String-Indizes zu holen nicht scary genug wäre... (client\classes\Weather.lua:25-30)

    Hoffe, dir bringt die Antwort nach 2 Tagen noch etwas:

    Der Server versucht in diesem Fall, das Paket mit der IP-Adresse des Clients weiterzuschicken. Je nach dem, ob der Anbieter, den du benutzt, es zulässt, Pakete mit falschen Absenderadressen zu verschicken, wird es entweder beim Zielserver ankommen, oder auf dem Weg verworfen werden. Jedoch: Selbst wenn es beim Ziel ankommt, wird der Zielserver versuchen, eine Antwort an die Absenderadresse des Pakets zu schicken, eben den Client, der, oder dessen NAT-Router jedoch von dieser Verbindung nichts weiß (er hat doch nur zu deinem Server eine Verbindung aufgebaut), und selbige mit einem Reset trennt.

    Deshalb muss man die Absenderadresse auf die Adresse der Servers ändern, was kein Problem wäre, könnte man denn SNAT und DNAT zugleich machen. Genau das funktioniert deshalb nicht, weil sich DNAT nur aus der PREROUTING- und SNAT nur aus der POSTROUTING-Chain verwenden lässt. Da die PREROUTING-Chain früher abgearbeitet wird, und das Paket dort schon modifiziert wird, muss man es bereits in der PREROUTING-Chain entsprechend brandmarken.

    Desweiteren habe ich es mir erlaubt, ein -d <IP deines Servers> zur ersten Regel hinzuzufügen, damit nur Pakete umgeleitet werden, die auch wirklich an den Server gesandt wurden (und nicht durch den Server geroutet (z.B. von VMs) oder vom Server selbst weggesandt).

    Code
    iptables -t nat -A PREROUTING -p tcp -d <IP deines Servers> --dport 22004 -j MARK --set-mark 1
    iptables -t nat -A PREROUTING -p tcp -m mark --mark 1 -j DNAT --to-destination 25.86.17.82:22004
    iptables -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source <IP deines Servers>

    Damit das ganze auch funktioniert, musst du auf deinem Server IP Forwarding aktivieren, was sich ab Ausführung bis zum Neustart mit sysctl -w net.ipv4.ip_forward=1 und permanent (ab einem Neustart) mit dem Eintrag net.ipv4.ip_forward=1 in der /etc/sysctl.conf bewerkstelligen lässt.

    Alle Informationen in diesem Beitrag wurden mithilfe von Experimentation, Manpages und Google zusammengesucht, wobei in der Testumgebung zwei Hosts im selben Netzwerk waren (der Client und der weiterleitende Server), als dritten (den Server, an den geforwardet wird) habe ich 93.184.216.119 (example.com) verwendet. Ich garantiere nicht für die Richtigkeit der gegebenen Informationen, jedoch bin in dieser Sache recht zuversichtlich.