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.
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.
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.
Aktuelles Bild
Nächste Aufgaben
Pockets wiederherstellen, Zeitnahme einbauen, ...
Wann es dazu kommt, ist leider wie so oft unklar ;).
Viel Spaß beim Testen!
Johannes
Alles Gute, eukalyptus :).
Feier die Schnapszahl schön!
Johannes
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.
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 :).
Für Gedankenanstöße bin ich da
.
Melde dich, wenn es geklappt haben sollte :).
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
; 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)))"
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))
; 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
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
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
Johannes
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…
Alles, alles Gute zum Geburtstag, chip!
Lass dich groß feiern und viel Erfolg im nächsten Lebensviertel :).
Alles Gute zum runden Geburtstag, UEZ!
Lass es dir gut gehen und bleib und mit deinen einzigartigen und wunderschönen Ideen erhalten :).
Johannes
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…
Wie kommst du darauf das das Rainbow-Tables wertlos macht?
Zitat von WikipediaDie 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
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
Das geht bei FTP nicht anders…
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 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
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
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
Und vorsichtshalber gleich: Vor Spiele (DirectX-/OpenGL-Output) kommst du so einfach nicht.