1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. peethebee

Beiträge von peethebee

  • Jazzy -- Schachvarianten online spielen

    • peethebee
    • 3. März 2012 um 23:57

    Es gibt rudimentären Uhr-Support, siehe https://github.com/jazzer/Jazzy/c…0207586eda7878e.

    Allerdings ist das noch an vielen Ecken deutlich unrund. Mal schauen, wann ich dazu komme, das sauber auszubügeln.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    2012-03-04 - jazzy.png 206,43 kB – 0 Downloads
  • Jazzy -- Schachvarianten online spielen

    • peethebee
    • 3. März 2012 um 00:36

    Es gibt gute Neuigkeiten.
    Ich habe endlich wieder ein paar Tage entbehren können, um das Projekt voranzutreiben. Das Ergebnis ist, denke ich, durchaus respektabel, daher hier auch noch mal eine kleine Beschreibung der Fortschritte, abseits des Commit-Logs.

    • Canvas
      Für die Darstellung des Brettes waren bisher eine ganze Menge DIV-Tags nötig (je eines für das Feld und jede Figur). Dazu kam reichlich jQuery-Code für die Animationen, der aber nicht richtig stabil lief und gerne mal für komische Bugs gesorgt hat. In der neuen Version wird das Brett mit Canvas-Technologie gerendert: Es gibt je eine Ebene für die Felder (Hintergrund), hervorgehobene Felder (z.B. beim Ziehen oder der letzte Zug), die Figuren und diejenige Figur, die gerade gezogen wird. Durch geschickte Nutzung der Layer wird die Zahl der Repaints minimiert und die Performance ist sehr angenehm. Wie vorher auch wird sowohl Drag-and-Drop- als auch Klick-Semantik (z.B. für Mobilgeräte) unterstützt. Canvas ermöglicht jetzt auch das Resizen von Bildern (die Figuren), was wiederum auch das gesamte Brett größenveränderbar macht. Es passt sich jetzt automatisch der Größe des umgebenden DIVs an, was mit CSS meines Wissens nach nicht browserübergreifend möglich war. Alles in allem also ein robusteres, flexibleres und performantes neues Brett :).
    • Websockets
      Die noch wichtigere Neuerung ist die Echtzeitfähigkeit des Codes. Züge werden jetzt ohne Zeitverzögerung an die Mitspieler übertragen. Dadurch wird die Grundlage für zeitlimitierte Spiele geschaffen und das Nutzererlebnis dramatisch verbessert. Technisch lautet die Lösung kurz SocketIO. Etwas länger erklärt braucht Jazzy jetzt deutlich mehr Installationsvorbereitung, weil es auf mehr externer Software aufsetzt (die übrigens den Rückschritt von Python3 auf Python 2.6/2.7 erfordert): Als Server fungiert jetzt Tornado, auf den mit TornadIO2 ein weiteres Tool gesetzt ist, das SocketIO (und damit auch aktuelle Websockets) unterstützt.

    Aktuelles Bild
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Nächste Aufgaben
    Pockets wiederherstellen, Zeitnahme einbauen, ...

    Wann es dazu kommt, ist leider wie so oft unklar ;).

    Viel Spaß beim Testen!
    Johannes

    Dateien

    2012-02-27 - canvas.png 149,37 kB – 0 Downloads
  • Happy Birthday eukalyptus

    • peethebee
    • 2. März 2012 um 11:01

    Alles Gute, eukalyptus :).
    Feier die Schnapszahl schön!

    Johannes

  • InetRead funktioniert nicht, adresse zu bestimmtem port (?)

    • peethebee
    • 29. Februar 2012 um 02:00

    Das Problem kann auch der Referrer oder (wahrscheinlicher) der User-Agent sein. Letzteren kannst du mit HTTPSetUserAgent verändern, einfach den von Firefox oder so nehmen.

  • Theoretische Informatik: Grammatiken prüfen

    • peethebee
    • 26. Februar 2012 um 13:37

    Brauchen kann das wohl niemand außer dem Nutzer, der mich danach gefragt hat, wie man sowas macht ;).

    Mehr Informationen zum Thema gibt es z.B. hier. Man hat einen Satz von Regeln (die Grammatik), mit denen man Wörter erzeugen kann. Die umgekehrte Frage soll dieses Skript beantworten: Gegeben ein Wort w, gehört das zu dieser Grammatik, kann man es also mit den Regeln erzeugen?
    Der Algorithmus von oben kann das für eine Teilmenge von Grammatiken erledigen, ist aber auch nicht auf Flexibilität ausgelegt, die Regeln sind hartkodiert. Wer darauf aufbauen möchte, ist herzlich dazu eingeladen :).

  • Kleine AutoIt Funktion zu C++

    • peethebee
    • 26. Februar 2012 um 13:17

    Für Gedankenanstöße bin ich da :rofl: .
    Melde dich, wenn es geklappt haben sollte :).

  • Theoretische Informatik: Grammatiken prüfen

    • peethebee
    • 26. Februar 2012 um 12:32

    Hallo,

    Bisschen Code, um einen String auf Grammatikkonformität zu prüfen:

    [autoit]

    ; Startsymbol X
    ; Regel 1: X -> ( X A X ) X
    ; Regel 2: X -> epsilon

    [/autoit][autoit][/autoit][autoit]

    ; prüfe Input
    Global $input = InputBox("Wort?", "Bitte zu prüfendes Wort eingeben:", "(A(A)(A(A)))")
    If $input == "" Then $input = "(A(A(A)(A)))"

    [/autoit][autoit][/autoit][autoit]

    Global $pointer = 1

    [/autoit][autoit][/autoit][autoit]

    ; Startsymbol aufrufen
    ConsoleWrite(StringFormat("Prüfe Wort '%s'", $input) & @CRLF)
    X()
    ; prüfen, ob alles gefressen
    if $pointer <= StringLen($input) Then error()
    MsgBox(0, "ERFOLG", StringFormat("Das Wort '%s' ist in der Sprache.", $input))

    [/autoit][autoit][/autoit][autoit]

    ; Funktion, die alle Regeln mit rechter Seite = X umsetzt
    Func X()
    ; Regel 1
    If StringMid($input, $pointer, 1) = "(" Then
    match("(")
    X()
    match("A")
    X()
    match(")")
    X()
    Else
    ; Regel 2
    match("") ; oder einfach nichts, denn match() macht hier nichts Interessantes
    EndIf
    EndFunc ;==>X

    [/autoit][autoit][/autoit][autoit]

    Func match($string)
    ConsoleWrite(StringFormat("Matche '%s', Pointer ist %d", $string, $pointer) & @CRLF)
    ; Eingabe schon zuende?
    If $pointer > StringLen($input) + 1 Then error()
    ; aktuelle(s) Zeichen prüfen
    ConsoleWrite("Gucke auf Zeichen " & StringMid($input, $pointer, StringLen($string)) & @CRLF)
    if StringMid($input, $pointer, StringLen($string)) == $string Then
    ; Pointer vorschieben
    $pointer += StringLen($string)
    Else
    ; FEHLER
    error()
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func error()
    MsgBox(0, "FEHLER", StringFormat("Das Wort '%s' ist nicht in der Sprache.\nFehler an Stelle %d, Zeichen %s.", $input, $pointer, StringMid($input, $pointer, 1)))
    Exit
    EndFunc ;==>error

    [/autoit]

    Johannes

  • Kleine AutoIt Funktion zu C++

    • peethebee
    • 26. Februar 2012 um 11:48

    Reicht nicht /AutoItExecuteScript? :)
    Damit kannst du ein Skript an die "interne" AutoIt.exe deines ersten Kompilats geben. Sollte dann auch einen eigenen Prozess instantiieren, denke ich…

  • Programm / Script sicherheit -webzugriff -Dekompilier -Memory manipulationen etc

    • peethebee
    • 23. Februar 2012 um 14:39

    Ne, du solltest Assembler lernen :D.

    Spaß beiseite: Bei einer rein interpretierten Sprache wie AutoIt das (trotz Exe-Hülle) nunmal ist, ist dagegen nichts Ernsthaftes möglich an Verteidigung…

  • Happy Birthday chip

    • peethebee
    • 19. Februar 2012 um 11:52

    Alles, alles Gute zum Geburtstag, chip!
    Lass dich groß feiern und viel Erfolg im nächsten Lebensviertel :).

  • UEZ hat Geburtstag

    • peethebee
    • 17. Februar 2012 um 10:21

    Alles Gute zum runden Geburtstag, UEZ!
    Lass es dir gut gehen und bleib und mit deinen einzigartigen und wunderschönen Ideen erhalten :).

    Johannes

  • Audioverstärker & Fequenzweichen

    • peethebee
    • 15. Februar 2012 um 20:32

    Off-Topic: Ich habe mir damals bei meiner Facharbeit LaTeX angeeignet. Gibt ein schönes Ergebnis und ist eine interessante Erfahrung :). Thematisch kann ich mangels Kenntnis leider nichts beitragen…

  • Kryptographie-Überlegungen

    • peethebee
    • 15. Februar 2012 um 14:24
    Zitat von chip

    Wie kommst du darauf das das Rainbow-Tables wertlos macht?

    Zitat von Wikipedia

    Die Größe einer Rainbow Table steigt mit der Länge der Kennwörter, für die sie generiert werden soll. Je nach Hashtyp ist ab einer gewissen Kennwortlänge die Berechnung einer Rainbow Table nicht mehr wirtschaftlich, sowohl was die Dauer der Generierung als auch den Platzbedarf der Tabellen angeht. Lange Kennwörter entstehen z. B. bei der Verwendung von Sätzen statt eines Wortes (siehe Passphrase).

    So wie ich das verstehe, müsste jemand (auch wenn er meinen Salt kennt) eine Rainbow-Table haben, die eben genau diese Daten enthält. Wenn ich also 200 Zeichen Nonsens anhänge, dann kann ich die rausgeben, weil ich das virtuelle Gesamtpasswort nicht in der Tabelle finden werde und damit nicht an den Teil vor dem Salt rankomme. Sehe ich das was grundlegend falsch?

    Oscar : Zwei kaputte Methoden zu addieren halte ich spontan für keine gute Idee. Ich glaube, dass das Chaining besser ist (Ausgabe wieder in die Hashfunktion stecken).

    Johannes

  • Kryptographie-Überlegungen

    • peethebee
    • 15. Februar 2012 um 14:05

    Hallo,

    Das Verfahren ist meiner Ansicht nach so in Ordnung.
    Du solltest darauf achten, dass du einen guten Hashing-Algorithmus nimmst (MD5 ist unsicher, SHA-1 angeknackst, meinen Informationen nach SHA-256 noch ziemlich in Ordnung). Außerdem solltest du 1. die Eingabe hashen, also einfach eine beliebigen Text anhängen, um Rainbow-Tables wertlos zu machen und 2. mehrere (viele!) Runden hashen, wobei in der ersten Runde das gesalzene Passwort reinkommt und später immer die Ausgabe der vorherigen Runde. Hunderte Runden sind dabei durchaus üblich soweit ich weiß.

    Johannes

  • FTP Server in Datei etwas schreiben

    • peethebee
    • 14. Februar 2012 um 20:27

    Das geht bei FTP nicht anders…

  • Probleme mit "For ... Next - Schleife"

    • peethebee
    • 14. Februar 2012 um 18:32

    Die For-Schleife zählt selbst (standardmäßig pro Durchlauf um 1 hoch, anpassbar mit for $i = 1 to 10 Step 3), entferne also

    [autoit]

    $i=$i+1

    [/autoit]

    Johannes

  • JSON Decoder gesucht

    • peethebee
    • 14. Februar 2012 um 17:49

    JSON ist doch auch kein komplexes Format :).
    Man sollte ohne Probleme zeichenbasiert durchlaufen können, den Zustand verwalten und genau die Daten extrahieren, die du brauchst. Dann wäre die Länge kein Problem. Wenn man da mit RegExp oder StringBetween rangeht, wird es u.U. irgendwann schon sehr speicherintensiv.

    Johannes

  • installer erstellt, nur wie mache ich einen uninstaller und verküpfungen ?

    • peethebee
    • 14. Februar 2012 um 09:39

    In SciTE selfdelete eingeben, ergibt:

    [autoit]

    Func _SelfDelete($iDelay = 0)
    Local $sCmdFile
    FileDelete(@TempDir & "\scratch.bat")
    $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
    & ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & '\scratch.bat'
    FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
    Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
    EndFunc

    [/autoit]
  • JSON Decoder gesucht

    • peethebee
    • 13. Februar 2012 um 17:57

    Erst mal interessiert mich, warum du glaubst, so viele (und wie viele?) Daten wirklich übertragen zu müssen…
    Und zweitens als Lösungsoption: Die Daten eventuell in mehrere verdauliche Happen aufteilen?

    Johannes

  • Fenster in den Vordergrund holen und dominieren lassen

    • peethebee
    • 10. Februar 2012 um 13:24

    Und vorsichtshalber gleich: Vor Spiele (DirectX-/OpenGL-Output) kommst du so einfach nicht.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™