Suche auf lima-city
-
in: Windows Zugriffsrechte für Prozesse
geschrieben von toolz
Mir stellen sich gerade zwei Fragen bezüglich Windows:
1. Woran kann es liegen, dass ein eigenes C-Programm, gestartet durch einen Java-Prozess, ausschließlich Zugriffsrechte auf Dateien im selben Verzeichnis oder in Unterordnern des selben Verzeichnisses hat, während das Programm auf alle gesamten Dateien zugreifen darf, wenn ich es von der Konsole aus starte. Dieses Verhalten ist von mir ungewünscht und ich möchte wissen, was ich dagegen tun kann.
2. Wie ist es möglich, bestimmten Prozessen, deren Code ich nicht kenne, genau dieses Verhalten zuzuweisen, dass solche Programme also nur auf ihre eigene Verzeichnisstruktur zugreifen dürfen und keine übergeordneten Verzeichnisse sehen können?
Hat wirklich der aufrufende Prozess etwas mit der Rechtevergabe zu tun? -
in: SVG als ImageMap?
geschrieben von toolz
Dazu musst du ganz einfach die gewünschten Inhalte in einen
-Tag packen und schon kann man ganz einfach per Klick mit der Maus darauf zugreifen.<a></a>
http://tutorials.jenkov.com/svg/a-element.html
Es gibt dabei keine nennenswerten Unterschiede zum HTML-Verweis. Eine ImageMap ist also in SVG vollkommen unnötig. -
in: Suche Spiel wo Computer versucht, Handlung vorherzusagen
geschrieben von toolz
Aus mathematischer Sicht die einzige legitime Implementation eines solchen Spieles:
http://toolz.lima-city.de/tastenspiel/
<html> <head> <title>Tastenspiel</title> <script type="text/javascript"> var n=0,r=0; function w(s){ var i=Math.random()<0.5?'A':'B'; document.getElementById('s').innerHTML=s; document.getElementById('i').innerHTML=i; document.getElementById('p').innerHTML=100*(s===i?++r:r)/++n+'%'; } </script> </head> <body> <div>Ich versuche Ihr Verhalten vorherzusagen.</div> <div>Drücken Sie dazu einen beliebigen Knopf: <button onclick="w('A')">A</button><button onclick="w('B')">B</button></div> <div>Sie haben <span id="s">nichts</span> gedrückt.</div> <div>Ich habe <span id="i">nichts</span> vorhergesagt und lag somit bei <span id="p">100%</span> aller Versuche richtig.</div> </body> </html>
Das Verhalten des Menschen wird erst dann deterministisch, wenn man weitere Anreize zur Entscheidungsfindung anbietet. Nur äußerst mühevoll kann man aber dieses Programm insofern modifizieren, dass es über die 50% Treffersicherheit hinauskommt, indem man den Spieler austrickst.
Hat der Benutzer keine Kenntnisse über den Quelltext des Programmes, so kann man ihn einfach täuschen:
http://toolz.lima-city.de/tastenspiel/lernen.html
Dieses Programm scheint nach ~10 Versuchen dein Verhalten durchschaut zu haben und erreicht schließlich Quoten im Bereich von 75%. Aber ehrlich ist das Programm dabei nicht! -
in: Programmvorstellung: Dawn Spectator
geschrieben von toolz
mein-wunschname schrieb:
Als unbekanntes Programm aus ebenso unbekannten Quellen, welches den Bildschirminhalt ausliest und offenbar ebenso Daten über das Internet verschicken will ist der Dawn Spectator sicherlich für manche Virenscanner nicht vertrauenswürdig.
2. AVG meldet:
MalSign.Wilmo.145
Das heißt aber nicht, dass er irgendwelche Viren beinhalten würde. Ich empfehle weniger auf den Virenscanner, als viel mehr auf die heuristische Echtzeitanalyse der Firewall zu vertrauen.
An VampireSilence:
Hast du das ganz alleine programmiert?
Was kannst du uns über die Übertragungsrate sagen? -
in: War Thunder Panzer?
geschrieben von toolz
Nicht nur Panzer, sondern auch Schiffe (wobei wir bei letzteren wohl noch 2-3 Jahre warten werden müssen). Und zum Beweis:
http://warthunder.com/de/game/about
Die offizielle Beschreibung benennt Flugzeuge, Panzer und Schiffe als potentiell spielbar.
http://forum.warthunder.com/index.php?/topic/93105-cbt-impressionen/
In diesem Forum gibt es sehr viele Informationen, die hier vielleicht auch von Interesse sein könnten.
Etwas Videomaterial über die leichte StuG.
Die Panzer befinden sich momentan in der Closed-Beta, zu welcher nur ausgewählte Personen Zugriff (oder solche, die rund 50€ dafür ausgegeben) haben. Wann die Panzer für jedermann spielbar sein werden ist nicht bekannt. Die Entwickler werden das wahrscheinlich einen Monat zuvor groß ankündigen, sodass man es gar nicht übersehen kann. -
in: ASM: Problem mit C-Call pthread
geschrieben von toolz
Ich will euch nicht die Lösung vorenthalten. Nachdem darkpandemic sich eingehender damit beschäftigt hatte, ist bei ihm dieses funktionierende Programm herausgekommen:
Und das Beste: Es funktioniert! Wirklich!format elf public main extrn printf extrn pthread_create extrn pthread_join SECTION '.data' anz: dd 0 msg: db "Anzahl der Aufrufe: %ld", 10, 0 thr: dd 0 SECTION '.text' main: push ebp mov ebp, esp push DWORD 0 push fkt push DWORD 0 push thr call pthread_create add esp, 16 call fkt push DWORD 0 push DWORD [thr] call pthread_join add esp, 8 push DWORD [anz] push msg call printf add esp, 8 xor eax, eax leave ret fkt: push ebp mov ebp, esp inc DWORD [anz] leave ret
Vielen Dank an nomis und ganz besonders darkpandemic und an alle anderen, die sich an meinem Problem versucht haben, ohne hier einen Beitrag zu erstellen. -
in: Programmiert noch jemand Blitzbasic
geschrieben von toolz
Ich will dann doch mal auf die dafür vorhandene Gruppe verweisen, an deren Gründung ich persönlich beteiligt war: http://www.lima-city.de/groups/blitzbasic
Allerdings sehe ich in BlitzBasic nur das Potential zur schnellen und unkomplizierten Spieleentwicklung. Für komplexere Dinge würde ich es nicht benutzen. Immerhin eine noch gut gepflegte Sprache... Leider proprietär.
Wen der härtere Stoff nicht interessiert oder wer mal eben so ein paar Dinge ausprobieren will, dem kann man schon zu BlitzBasic raten. Zwei große Nachteile schleppt die Sprache aber außerdem mit sich: Sie ist langsam und läuft nur auf Windows. Das sorgt dafür, dass ich schon lange nicht mehr an sie gedacht habe. -
in: ASM: Problem mit C-Call pthread
geschrieben von toolz
Stimmt! Je nach Implementierung kann pthread_create tatsächlich versuchen, das Argument vom Stapel zu holen (was noch nicht das Problem ist) und es dann analysieren wollen (das wäre ein Problem)! Aber selbst wenn ich sicherheitshalber noch null übergebe klappt die Ausführung nicht.
Mein Debugger funktioniert leider gerade nicht und ich finde den Fehler einfach nicht.
Bist du mittlerweile weiter gekommen? Oder weiß jemand anderes etwas darüber?
Edit: Jetzt habe ich den Debugger wieder zum Laufen gebracht (extra hierfür) und es stellt sich heraus, dass der Prozess in der Routine pthread_create stecken bleibt. Und zwar bei einer Anweisung
, falls euch das hilft...rep stosd
-
in: ASM: Problem mit C-Call pthread
geschrieben von toolz
In der Tat, da hast du zwar Recht, aber da meine Funktion fkt ja keine Argumente abruft (das vierte Argument also niemals vom Stapel geholt werden würde) stecke ich es gleich gar nicht hinein. Versuchsweise habe ich jetzt aber doch mal ein
vor Zeile 6 geschrieben, allerdings stimmt es dann immer noch nicht (und ich glaube das ist dann sogar noch zusätzlicher Fehler).PUSH DWORD 0
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
Also das letzte Argument von pthread_create sind doch nur die Argumente der aufzurufenden Funktion - auf Assemblerebene kann ich das auch einfach weglassen, wenn die Funktion keine Argumente erwartet. Ich habe vielmehr das Gefühl, dass ich die Funktionsadresse falsch übergebe... Aber selbst wenn ich die nocheinmal in eine Variable packe und dann die Adresse der Variablen auf den Stapel haue wird mir immernoch ein Fehler beim Ausführen angezeigt.
Ich bin etwas ratlos. -
in: ASM: Problem mit C-Call pthread
geschrieben von toolz
Ich versuche mich gerade an pthread, allerdings in Assembler. In C ist mir ein vergleichbares Programm bereits gelungen. Die Syntax gehört zu Linux-FASM, es kompiliert ohne Fehler:
Jedoch kommt beim Ausführen ein Speicherzugriffsfehler, der sich mir nicht erschließt. Durch Einfügen diverser Debugausgaben konnte ich feststellen, dass die main anscheinend insgesamt nicht durchlaufen wird, wenn ich darin einen Aufruf an pthread mache. Bei Auskommentieren von Aufruf und Extern-Anweisung läuft das Programm jedoch fehlerfrei durch.fasm pthread.asm && gcc -pthread pthread.o
FORMAT elf PUBLIC main SECTION '.text' executable main: PUSH fkt PUSH null PUSH zgr CALL pthread_create CALL fkt PUSH null PUSH zgr CALL pthread_join PUSH [anz] PUSH msg CALL printf RET fkt: INC [anz] RET EXTRN printf EXTRN pthread_create EXTRN pthread_join SECTION '.data' anz DD 0 null DD 0 msg DB "Anzahl der Aufrufe: %i",10,0 zgr DD ?
Wo liegt hier mein Fehler? Ich konnte ihn jetzt nach sehr langer Suche immer noch nicht entdecken... -
in: Knoten verbieten im Internetprotokoll
geschrieben von toolz
Das bedeutet doch aber, dass die Daten bereits über einen verbotenen Knoten gelaufen sind. Wenn ich hingegen solange Testpakete losschicken würde, bis ich die richtige Konfiguration gefunden habe, kann ich nie sicher sein, dass ein nächstes, richtiges Paket den Umweg über einen der verbotenen Knoten zu nehmen versucht?
Jeden Router selbst überprüfen zu lassen, ob das Paket verworfen werden soll halte ich für unpraktisch. Außerdem will ich ungern tausende von gewünschten Zwischenroutern angeben, das würde nur unnötig das Netzwerk überlasten. Vielmehr suche ich nach einer geschickten Lösung. -
in: Knoten verbieten im Internetprotokoll
geschrieben von toolz
Ich habe mich gerade mit der Spezifikation des Internetprotokolls IPv6 beschäftigt und dabei eine interessante Option entdeckt: Man kann offenbar Zwischenziele für die Nachricht definieren, also Knoten, die auf dem Weg vom Absender zum Addressat unbedingt (in vorgegebener Reihenfolge) erreicht werden müssen.
Mir kommt die Frage, ob es da nicht irgendwo auch die Möglichkeit versteckt gibt, bestimmte Knoten zu verbieten, also Router vom Nachrichtentransfer auszuschließen (etwa weil die Informationspolitik des Staates, auf dessen Boden sich besagter Router befindet, völlig unannehmbar ist). Dafür infrage kämen vielleicht die so benannten Hop-by-Hop Header, welche von jedem Knoten ausgelesen und befolgt werden müssen.
Weiß jemand, wie ein solcher Ausschluss von Netzwerkknoten realisierbar ist? -
in: Rechnen mit Vergleichswerten
geschrieben von toolz
Die bedingte Anweisung
erwartet nicht zwingend einen Vergleich, sondern einfach allgemein einen Boolean. Auch wenn deine Anweisung etwas kürzer ist, so kann ich sie dennoch nicht unbedingt empfehlen, da sie wohl kaum schneller ausgeführt wird. Man sollte sich angewöhnen, ausführlicheren Code zu schreiben, der auch im Nachhinein mit wenigen Blicken sofort wieder einleuchtet; das erleichtert die Fehlersuche ungemein. Ich empfehle auch nicht mit einem Wert undurchsichtige Rechnungen durchzuführen: Im vorliegenden Fall halte ich statt dessen eineif
-Anweisung in Kombination mit einer Enumeration für sinnvoll.case
Enum Monat Januar Februar März April Mai Juni Juli August September Oktober November Dezember End Enum Dim M As Monat = aktueller Monat Dim Tage As Integer Select Case M Case Februar Print "Hier müsste die Jahreszahl bekannt sein." Case April, Juni, September, November Tage = 30 Case Januar, März, Mai, Juli, August, Oktober, Dezember Tage = 31 Case Else Print "Einen Monat " + Monat + " gibt es nicht!" End Select Print Tage
Achtung: Dies ist nur Pseudocode.
Gleich ersichtlich ist, dass dieser Code sehr viel länger ist, als das von dir aufgeführte Beispiel. Dafür ist es aber ebenso sehr viel einfacher möglich, hieran Erweiterungen vorzunehmen, oder in einem späteren Stadium auf Fehlersuche zu gehen. Außerdem kann man sofort erkennen, worum es hierbei geht; es lassen sich sogar sehr bequem Informationen über die einzelnen Monate extrahieren. Die eigentliche Berechnungsdauer dürfte allerdings obgleich des längeren Codes bei guten Compilern absolut gleichwertig sein. Viel wichtiger jedoch: Aus Sicht der Hochsprache finden hier keine Berechnungen statt, dadurch entfallen lästige Verknüpfungen von Variablen.
Während deine erste Lösung dieses Problemes wegen seiner Zweckmäßigkeit annehmbar ist, sollte man vor allem aber auf solche starken Verkürzungen verzichten, wenn man nicht vollständig ausschließen kann, dass:
- der Ausdruck für jede mögliche Eingabe korrekt arbeitet.
- nachträgliche Änderungen vollzogen werden müssen.
- die Problemstellung von externen Parametern abhängt.
Im Fall der Tage eines Monats sehr unwahrscheinlich, aber es könnte ja sein, dass irgendwann gesetzlich festgelegt wird, dass der März künftig nur noch aus 30 Tagen bestehen solle. In diesem Fall muss man die stark verkürzte Version entweder sehr aufwendig bearbeiten und am Resultat erneut eine Fehleranalyse durchführen, oder ein ganz neuen Ausdruck finden, was nicht weniger zusätzliche Arbeit bedeutet.
Ich hoffe ich konnte meinen Standpunkt ausführlich genug beleuchten und rate dir, lieber ebenso einfach zu programmieren, denn kompliziert komprimiert.
Nach ein letzter Verbesserungsvorschlag, der jedoch nur mit objektorientierten Sprachen durchgeführt werden kann:class Monat { private final int tage; public Monat(int tage) { this.tage = tage; } public int anzahlTage() { // Für den Februar diese Methode einfach in einer Subklasse überschreiben. return tage; } }
Auf diese Weise erspart man sich den ganzen Krempel vollständig und schreibt nur noch
.januar.anzahlTage()
-
in: Vorstellung von mmphotography
geschrieben von toolz
Hallo und auch gleich wieder lebe wohl! -
in: Kommentare System Mit Smiley Aber es geht nicht so richtig.:
geschrieben von toolz
Das ist selbst mir ein zu großes Durcheinander. Aber so könnte es funktionieren:<?php error_reporting (0); session_start(); if(!$_SESSION['nutzername']) { header ('location: login.php'); } else { error_reporting(0); require('connect.php'); $name = $_SESSION['nutzername']; $today = date("c"); //$today = date("c", strtotime()); $comment = $_POST['comment']; $submit=isset($_POST['submit']); if($submit) { if($name&&$comment) { $query = mysql_query("INSERT INTO comment (name,comment,time) VALUES ('$name','$comment','$today')"); header("Location: success.php"); } else { echo "Please fill out all the fields."; } } } ?> <!DOCTYPE html> <html> <head> <title>Comment Box | HelperTuts</title> <script src="jquery-1.7.2.min.js" type="text/javascript"></script> <script src="jquery.timeago.js" type="text/javascript"></script> <script> jQuery(document).ready(function() { jQuery("abbr.timeago").timeago(); }); </script> <script type="text/javascript"> function insertAtCursor(wo, was) { wo = document.getElementById(wo) if (document.selection) { wo.focus() sel = document.selection.createRange() sel.text = was } else if (wo.selectionStart || wo.selectionStart == '0') { var startPos = wo.selectionStart var endPos = wo.selectionEnd wo.value = wo.value.substring(0, startPos) + was + wo.value.substring(endPos, wo.value.length) } else { wo.value += was } wo.focus() } //]]> </script> <style> body { background-color: #DFDFDF; } </style> </head> <body> <link type="text/javascript" href="localtime.js" /> <p>List of available Smileys:</p> <link rel="stylesheet" type="text/css" href="all.css" media="screen"> <p id="editor_buttons"> <span style="border: 1px solid #CCCCCC; padding: 3px; margin-right: 3px;"><a href="#" onclick="if (document.getElementById('smilieBox').style.display == 'block') {document.getElementById('smilieBox').style.display = 'none';} else {document.getElementById('smilieBox').style.display = 'block';}; return false;"><img src="emoticon_smile.png" alt="Smiley einfügen" title="Smiley einfügen"> Smiley</a></span> </p><div class="smilieBox" id="smilieBox" style="display: none;"> <img src="images/smiley_laughing.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':smiley_laughing:');"></img> <img src="images/4.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':1:');"></img> <img src="images/5.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':2:');"></img> <img src="images/008.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':3:');"></img> <img src="images/angel.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':angel:');"></img> <img src="images/bad_03.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':bad1:');"></img> <img src="images/bad_08.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':bad2:');"></img> <img src="images/bad_09.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':bad3:');"></img> <img src="images/kaffee.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':kaffee:');"></img> <img src="images/king.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':king:');"></img> <img src="images/koch.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':koch:');"></img> <img src="images/krank.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':krank:');"></img> <img src="images/lol.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':lol:');"></img> <img src="images/music1.gif" alt="Smiley nutzen" onclick="insertAtCursor('text', ':music1:');"></img> </div><p> <form action="#" method="POST"> <label>Name: </label> <br /> <input type="text" disabled="disabled" name="name" value="<?php echo "$name" ?>" /> <br /> <br /> <label>Comment: </label> <br /> <textarea name="comment" cols="25" rows="7" id="text"></textarea><!--id="text" muss bleiben, sonst kann Smiley nicht eingefügt werden--> <br /> <br /> <input type="submit" name="submit" value="Comment" /> <br /> </form> <hr width="1100px" size="5px" /> </body> <?php require('connect.php'); $query=mysql_query("SELECT * FROM comment ORDER BY id DESC"); while($rows=mysql_fetch_assoc($query)) { $id=$rows['id']; $dname=$rows['name']; $dcomment=str_replace("\n", "<br>", $rows['comment']); $dcomment=str_replace(":smiley_laughing:", "<img src=\"images/smiley_laughing.gif\"", $dcomment); // Dies für alle Smileys wiederholen $dcomment=str_replace(":1:", "<img src=\"images/4.gif\"></img>", $dcomment); $dcomment=str_replace(":2:", "<img src=\"images/5.gif\"></img>", $dcomment); $dcomment=str_replace(":3:", "<img src=\"images/008.gif\"></img>", $dcomment); $dcomment=str_replace(":angel:", "<img src=\"images/angel.gif\"></img>", $dcomment); $dcomment=str_replace(":bad1:", "<img src=\"images/bad_03.gif\"></img>", $dcomment); $dcomment=str_replace(":bad2:", "<img src=\"images/bad_08.gif\"></img>", $dcomment); $dcomment=str_replace(":bad3:", "<img src=\"images/bad_09.gif\"></img>", $dcomment); $dcomment=str_replace(":confused:", "<img src=\"images/confused.gif\"></img>", $dcomment); $dcomment=str_replace(":kaffee:", "<img src=\"images/kaffee.gif\"></img>", $dcomment); $dcomment=str_replace(":king:", "<img src=\"images/king.gif\"></img>", $dcomment); $dcomment=str_replace(":koch:", "<img src=\"images/koch.gif\"></img>", $dcomment); $dcomment=str_replace(":krank:", "<img src=\"images/krank.gif\"></img>", $dcomment); $dcomment=str_replace(":lol:", "<img src=\"images/lol.gif\"></img>", $dcomment); $dcomment=str_replace(":music1:", "<img src=\"images/music1.gif\"></img>", $dcomment); $dcomment=str_replace(":smiley_laughing:", "<img src=\"images/smiley_laughing.gif\"></img>", $dcomment); $dtime=$rows['time']; $atime="<abbr class='timeago' title='$dtime'></abbr>"; echo '<font color="red">Name:</font> ' . $dname . ' '. $atime . '<br />' . '<br />' . '<font color="red">Comments:</font> ' . '<br />' . $dcomment . ' ' . ' ' . ' ' . ' '; if($_SESSION['nutzername']=="admin"){ echo "<a href=\"delete.php?id=" . $rows['id'] . "\">Delete User</a>"; } else { echo ""; } echo '<br />' . '<br />' . '<hr size="5px" width="500px" color="blue" />' . '<br />' . '<br />' ; } ?> </html>
Pass immer auf, dass du deine Tags schließt und guck dir doch gleich auch einmal ein paar Tipps zur Übersichtlichkeit beim Programmieren an. -
in: Vorstellung von dark-destiny
geschrieben von toolz
Willkommen! Du hast dir sicher sehr viel Mühe gemacht bei deinen Begründungen. Daran sollten sich andere mal ein Beispiel nehmen... -
in: Von Kapitälchen und dem ẞ
geschrieben von toolz
Gegeben sei ein Wort mit ß darin, beispielsweise Maße. Normalerweise hätte ich nun den unten stehenden Code verwendet, um Kapitälchen zu erreichen.
Während es die anderen Browser korrekt darstellen erzeugt mir der Firefox dummerweise ein Doppel-S statt dem (großen) ẞ.font-variant: small-caps;
Richtig:MAẞE
Falsch (Firefox):MASSE
Falsch (Verhalten noch nicht entdeckt):MAßE
Natürlich lautet nun meine einfache Frage, wie ich herangehen muss, um das ẞ und nicht das ß oder das Doppel-S angezeigt zu bekommen, will ich ein Wort in Kapitälchen darstellen, welches standardmäßig aber nicht vollständig groß geschrieben wird. -
in: JavaScript-Simulator
geschrieben von toolz
Ich sehe ein, bei Abhängigkeiten wird es schwierig.
Du sprichst von serverseitigem JavaScript. Ich habe davon aber noch nie gehört. Wie richtet man denn so etwas ein (hier auf Lima)? Also das Skript muss nur auf dem Server laufen, dass ist meine einzige Anforderung. Deshalb versuche ich ja auch mein Bestes, das Skript umzuschreiben.
Eine andere Bibliothek kann ich mir nicht suchen, einfach weil es so etwas nicht in PHP gibt... Das hätte ich schon längst gemacht! -
in: JavaScript-Simulator
geschrieben von toolz
Aber das ist ja gerade der Witz! Ein Algorithmus, dummerweise in JavaScript verfasst, soll nun serverseitig laufen. JavaScript gehört aber nicht auf oder zum Server, das ist allen bekannt. Wenn du sagst, ich solle es richtig machen, weiß ich leider nicht was du meinst? Die Funktionen gehören nun mal nicht vom Client ausgeführt.
Zu den Objekten kann ich nur sagen, dass PHP die ja mittlerweile zum Glück auch unterstützt. Siehe hierzu auch mein jsArray. Vererbung, Kapselung und co. gibt es zwar auch, aber das ist für den Simulator (bestehend aus Parser + JS-Klassen) sogar nicht mal nötig. Ich habe vielleicht vergessen zu erwähnen, dass ich nur Funktionen übersetzen können möchte.
PS: Compiler habe ich es übrigens deshalb nicht genannt, weil eine semantische Analyse nur überaus beschränkt nötig ist. Es reichen schon ein paar Ersetzungsregeln, da die Syntax beider Sprachen bereits sehr ähnlich ist.
Oder gehen wir mal anders heran:
Wie würdest du eine ewig (!) lange JavaScript-Funktion in PHP übersetzen, wenn du genau weißt, dass du erst nach Jahren fertig bist? Und wenn du weißt, dass diese Funktion eben nicht auf die Seite des Clienten gehört. -
in: JavaScript-Simulator
geschrieben von toolz
PHP und JavaScript? Was haben die schon gemeinsam?
Mehr als man glaubt, beim Durchstöbern diverser Codeschnipsel ist mir in letzter Zeit öfter vorgekommen, dass ich den ein oder anderen JavaScript-Fetzen viel sinnvoller für eine Implementation in PHP gehalten hätte. JavaScript darf meiner Meinung nach keine essenziellen Funktionalitäten bieten, sondern einfach nur die Dynamik einer Internetseite verbessern. Da jetzt aber viele JavaScripte in ihrer Länge auswuchern, hatte ich einfach keine Lust mehr, sie von JS in PHP zu übersetzen.
Daher nun meine Idee:
Es muss doch möglich sein, bereits nach einer automatisierten Parserphase, welche aus der JavaScript-Datei eine interpretierbare PHP-Datei macht (siehe unten), diese so in PHP ausführen zu können. Das Simulieren eines Browserfensters soll dabei nicht abgedeckt sein, denn es ergibt keinen Sinn, solche Funktionen in PHP zu übersetzen. Hingegen die grundlegenden JavaScript-Objekte müssten alle in PHP implementiert werden, ich habe bereits die Mühe investiert, das JS-Array in PHP zu implementieren:class jsArray { private $feld; public function __construct() { $this->$feld = func_get_args(); } public static $constructor = 'jsArray::__construct'; public function __set($name, $wert) { if ($name == 'length') { $diff = $wert - count($this->$feld); for ($n = 0; $n < $diff; $n++) array_push($this->$feld, null); for ($n = 0; $n > $diff; $n--) array_pop($this->$feld); } } public function __get($name) { if ($name == 'length') return count($this->$feld); } public function concat() { $neu = clone $this; foreach (func_get_args() as $hinzu) $neu->$feld = array_merge($neu->$feld, $hinzu); return $neu; } public function indexOf($item, $start=0) { $sub = $this->$feld; for($n = $start; $n > 0; $n--) $sub = array_shift($sub); $index = array_search($item, $sub); return $index !== false ? $index : -1; } public function join($separator=',') { return implode($seperator, $this->$feld); } public function lastIndexOf($item, $start=0) { $neu = clone $this; $neu->$feld = array_reverse($neu->$feld); return $neu->indexOf($item, $start); } public function pop() { return array_pop($this->$feld); } public function push() { foreach (func_get_args() as $hinzu) $anz = array_push($this->$feld, $hinzu); return $anz; } public function reverse() { array_reverse($this->$feld); return $this; } public function shift() { return array_shift($this->$feld); } public function slice($start, $end=null) { $neu = clone $this; $neu->$feld = array_slice($neu->$feld, $start, $end); return $neu; } public function sort($sortfunction=null) { if ($sortfunction === null) sort($this->$feld) else usort($this->$feld, $sortfunction); return $this; } public function splice($index, $howmany) { return array_splice($this->$feld, $index, $howmany, array_slice(func_get_args(), 2)); } public function toString() { $this = implode(',', $this->$feld); return $this; } public function unshift() { $parameter = array_reverse(func_get_args()); foreach ($parameter as $hinzu) $anz = array_unshift($this->$feld, $hinzu); return $anz; } public function valueOf() { return $this->$feld; } }
Neben allen grundlegenden Objekten müssten auch alle grundlegenden Operatoren überladen werden. Hier einmal ein Beispiel, wie der Parser arbeiten müsste:
- Also alle var entfernen und vor alle Variablen ein $ einfügen.// Vorher var a = b + 6 + 8.MAX_VALUE, // Nachher $a = new jsObject($b->typ, $b->valueOf() + 6 + (new jsNumber(8))->$MAX_VALUE);
- Um jeden Werteblock muss die Umwandlung in jsObject erfolgen, der Einfachheit halber mit dem Typ des ersten Literals.
- Bei Attributaufrufen müssen direkt angegebene Zahlen, Strings und Arrays zunächst in jsNumber, jsString, bzw. jsArray umgewandelt werden. Alle anderen (über ihren Bezeichner referenzierten) Objekte sind bereits in JavaScript-Form.
Das Problem:
Programmieren von JavaScript-Objekten und Parser dauert alleine viel zu lange.
Deshalb:
Findet ihr einen JavaScript-Simulator sinnvoll? Und wenn ja, wollt ihr mir dabei helfen? Das Resultat würde übrigens gemeinfrei, für jeden änder- und nutzbar. -
in: Subversion: Anzahl von Revisions limitieren
geschrieben von toolz
So etwas scheint es für SVN nicht nativ zu geben. Es kann sein, dass dein Hoster so etwas unterstützt, aber wenn nicht, oder wenn es sich um dein eigenes Repositorium handelt hilft wohl nur der Umweg über svndump. So erstellst du erst ein Abbild der gewünschten Revisionen des Repositoriums, um es anschließend damit zu überschreiben:
Zitat von http://www.uni-koblenz-landau.de/koblenz/GHRKO/faq/verschiedenes/repositoryshrink:
svnrdump dump -r501:1000 https://svn.uni-koblenz.de/Rechnerkennung/Repository > Repository.dump Dann Repository auf dem svn-Server löschen und wieder neu anlegen. svnrdump load https://svn.uni-koblenz.de/Rechnerkennung/Repository < Repository.dump
Anstatt der 501 schreibst du dann den Index der ältesten Revision, die du behalten willst und statt 1000 die aktuelle Revisionsnummer. Den Serverpfad musst du natürlich auch anpassen.
Was immer möglich ist: Das Repositorium einfach ganz neu aufsetzen. Für gewöhnlich sollte das alte noch eine Weile behalten werden, aber bei der nächsten stabilen Programmversion kann man es löschen und spart so Platz. Natürlich im Risiko, Daten zu löschen, die man wiederherstellen möchte. Aber mal ehrlich: Wie oft kommt es vor, dass man eine mehrere Revisionen alte Version wiederherstellen will?
Zum Glück muss man eine solche Aktion nicht allzu oft ausführen. -
in: Assembler: Extern sprintf
geschrieben von toolz
Danke sehr, das war der Fehler.
Nach einer etwas aufwändigeren Konvertierung von 32 Bit nach 64 Bit wird die Zahl endlich richtig in eine Zeichenkette konvertiert. -
in: Assembler: Extern sprintf
geschrieben von toolz
Unter Linux x86 versuche ich auf Assemblerebene die Cpp-Funktion sprintf aufuzurufen. Es herrscht unmittelbar vor dem Aufruf folgende Konfiguration vor:
Auf dem Stapel liegt:EAX = 0x3f800000 EBX = 0x00000001 ECX = 0x08049624 EDX = 0x00000001 EBP = 0xbf8b08d4 ESI = 0xbf8b08fc EDI = 0x08049624 EIP = 0x08048491 EFLAGS = 0x00000292 CS = 0x0073 DS = 0x007b ES = 0x007b FS = 0x0000 GS = 0x0033 SS = 0x007b
Im Speicher liegt unter 0x08049608 "%E" und unter 0x08049624 "\n,854442E-270" (Das ist Rest einer vorherigen Ausführung von sprintf). Genauer:[...] 0xbf8b08d4: 0x08049624 0xbf8b08d8: 0x08049608 0xbf8b08dc: 0x3f800000 [...]
Ich rufe nun sprintf auf, ohne etwas zu verändern:[...] 0x08049608: 25 45 00 00 01 00 00 00 00 00 00 00 00 00 00 00 (hex) 0x08049618: 00 00 00 00 00 00 00 00 00 00 00 00 0a 2c 38 35 (hex) 0x08049628: 34 34 34 32 45 2d 32 37 30 00 00 00 00 00 00 00 (hex) [...]
call sprintf
Unmittelbar nach dem Aufruf ist nun unter den Registern:
Das heißt, nur EAX, ECX, EDX und EIP haben sich geändert. Auf dem Stapel findet man:EAX = 0x0000000d EBX = 0x00000001 ECX = 0xbf8b07f4 EDX = 0x00000000 EBP = 0xbf8b08d4 ESI = 0xbf8b08fc EDI = 0x08049624 EIP = 0x08048496 EFLAGS = 0x00000292 CS = 0x0073 DS = 0x007b ES = 0x007b FS = 0x0000 GS = 0x0033 SS = 0x007b
Also unverändert, aber im Speicher ist nun:[...] 0xbf8b08d4: 0x08049624 0xbf8b08d8: 0x08049608 0xbf8b08dc: 0x3f800000 [...]
Also an Adresse 0x08049624 die Zeichenkette "4,854442E-270". Erwartet hätte man anhand der Referenz von sprintf allerdings die Zeichenkette "1,000000E+0". Allgemeiner eine Darstellung der Gleitkommazahl 1,0 (0x3f800000).[...] 0x08049608: 25 45 00 00 01 00 00 00 00 00 00 00 00 00 00 00 (hex) 0x08049618: 00 00 00 00 00 00 00 00 00 00 00 00 34 2c 38 35 (hex) 0x08049628: 34 34 34 32 45 2d 32 37 30 00 00 00 00 00 00 00 (hex) [...]
Ich zerbreche mir schon geraume Zeit den Kopf, was stimmt hier nicht? -
in: Firefox Plugin entfernen
geschrieben von toolz
Danke für deine Bemühungen, aber leider kommen die Vorschläge für mich nicht in Frage:
Die "*.dll" des plugin löschen
Das habe ich bereits ausprobiert (klappt natürlich), aber das zugehörige Programm greift selbst auch auf die DLL zu und stürzt beim Start ab, wenn diese nicht mehr vorhanden ist. Auf das Programm möchte ich aber nicht verzichten, sondern nur, dass es kein Firefox-Plugin installiert.
plugin.expose_full_path -> wert = true setzen
Das funktioniert seit Firefox 21.0 nicht mehr, es werden weiterhin nur die Pluginnamen angezeigt. Der volle Pfad steht aber immer noch in der pluginreg.dat im persönlichen Anwendungsordner.
Plugin Toggler 1.2.2 nutzen
Dieses Addon macht leider auch nicht mehr, als es Firefox selbst kann: Es deaktiviert das Plugin, entfernt es aber nicht. -
in: Firefox Plugin entfernen
geschrieben von toolz
Irgendwie scheint es sonst nirgends eine ähnliche Fragestellung zu geben:
Ich wünsche, ein Plugin aus Firefox 21.0 unter Windows 7 zu entfernen, ohne die Plugin-DLL löschen zu müssen. Es handelt sich ausdrücklich nicht um ein Addon, sondern ein Plugin! Es existiert unter der Pluginliste keine Möglichkeit überhaubt ein Plugin zu deinstallieren. Ich möchte auch nicht das Plugin nur deaktivieren, sondern entfernen! Ich habe bereits das betroffene Plugin in der pluginreg.dat unter meinen persönlichen AppData entfernt, aber der Eintrag wird dort immer wieder hineingeschrieben, als ob es eine globale pluginreg.dat gäbe, die ich allerdings nicht finden kann. Ich habe auch bereits die betroffene DLL umbenannt: Nach dem Start von Firefox ist das Plugin nicht mehr in der Liste und auch nicht in der pluginreg.dat. Wenn ich die DLL aber wieder herstelle, dann installiert sich das Plugin beim nächsten Start von Firefox selbst.
(Warum ich das Plugin entfernen möchte: Nach Aktualisierungen einer dazugehörigen Software, welche häufiger vorkommen, neigt das Plugin dazu, sich selbst ohne Vorwarnung wieder zu aktivieren. Ich will aber das Plugin auf keinen Fall aktiv wissen.)
Weiß jemand, was ich tun kann? -
in: Windows 7 macht selbstständig, grundlos Reboots
geschrieben von toolz
Für mich sieht das so aus, als hättest du es geschafft, dir ein Softwareupdate für eine falsche Architektur zuzulegen. Entferne mal Chrome und FlashPlayer, sowie alle deren Rückstände und versuche es mit einer Neuinstallation derselben.
Aber noch mal weil du darauf nicht richtig eingegangen bist:
Was bedeutet, dass "Probleme kamen"?
Ist der Rechner wirklich jemals selbsttätig heruntergefahren oder einfach nur abgestürzt?
Hast du manchmal Probleme mit der Internetverbindung? -
in: Tipps für meine Website
geschrieben von toolz
Für Kinder ungeeignet:
Man stelle sich vor, da rechnet so ein kleines Kind ein paar Minuten die zwei Zahlen zusammen, ehe es das Ergebnis eintippt. Schon steht da riesig (auch etwas besserwisserisch), in depremierendem Rot: FALSCH. Also bitte die Schrift in dem Fall kleiner, das Rot etwas abschwächen (ins Gelbliche) und vor allem die Rechnung noch einmal anzeigen, mit richtigem und angegebenen Ergebnis. Besonders schön wäre auch die Angabe von Rechenschritten. In der Grundschule rechnet man ja nicht umsonst mit untereinander stehenden Summanden.
Und wo liegen überhaupt die Unterschiede zwischen den Stufen?
Man könnte zudem noch die Subtraktion, Multiplikation und Division anbieten...
Zudem: Endet der Test denn auch irgendwann? Eine Fortschrittsanzeige nach dem Muster "7 von 50 Rechnungen" wäre doch schön. -
in: Abschlussball - Was jetzt?
geschrieben von toolz
Ich finde ja, das Wort Abschlussball wird hierzulande oftmals falsch interpretiert, weil man die amerikanischen Filme von Eliteschulen im Kopf hat. Um gleich mal mit den Vorurteilen aufzuräumen:
1. Auf einem Abschlussball wird nicht getanzt (höchstens gewippt).
2. Es werden von einigen besonders engagierten Schülern gewisse Beiträge vorgeführt (das können zwar Tänze sein, aber das macht man nur höchst freiwillig)
3. Man muss dort niemanden mit hinnehmen, denn dabei geht es ausschließlich um einen selbst.
4. Soweit nicht erkrankt kommt da sowieso jeder Schüler hin (also macht Einladen auch keinen Sinn).
5. Sofern man sich nicht selbst darum kümmert, gleicht der Abschlussball einer Kabarettveranstaltung.
6. Es wird dort niemand angeprangert oder vorgeführt.
Man geht einfach hin, setzt sich an irgendeinen Tisch, bestellt sein Getränk und das wars. Der Rest kommt von ganz alleine. -
in: Wieso Gulden?
geschrieben von toolz
Sofern du weder eine MySQL-Datenbank, noch Download-Volumen, mail()-Kontingent, MySQL-Datenbank oder gar eine .de-Domain kostenlos haben willst, dann sind für dich Gulden in der Tat unnötig
Aber die Mehrzahl der Benutzer hier ist gerade wegen dieser Angebote bei Lima. -
in: Linux - Sperrdateien zu groß
geschrieben von toolz
Danke, das hat schonmal etwas gebracht:
Jetzt ist aber doch ein Gigabyte flöten gegangen? Denn obwohl ich drei dieser Dateien um ein Gigabyte verkleinert habe, wurden nur zwei Gigabyte frei... Wird eine der Partitionen etwa in /dev/sda6 mit eingerechnet?toolz@linux:~$ df -h Dateisystem Size Used Avail Use% Eingehängt auf /dev/sda6 6,8G 4,1G 2,4G 64% / none 2,0G 720K 2,0G 1% /dev shm 1,0G 108K 1,0G 1% /dev/shm tmpfs 1,0G 92K 1,0G 1% /var/run tmpfs 1,0G 0 1,0G 0% /var/lock /home/toolz/.Private 6,8G 4,1G 2,4G 64% /home/toolz
-
in: Linux - Sperrdateien zu groß
geschrieben von toolz
cookies schrieb:
Alle diese:
Was genau meinst du mit Sperrdateien?
. Deren Speichernutzung liegt im Durchschnitt bei 0,75%, zudem ist mein RAM groß genug. Reduziere ich alle diese Dateien auf eine Größe von 1 GB, so erhöht sich zwar deren Auslastung auf 1,5%, aber die Belegung der Speicherpartition reduziert sich von 95% auf ~59,8%. Das ist doch schon eine ganze Menge!/dev /dev/shm /var/run /var/lock
-
in: Linux - Sperrdateien zu groß
geschrieben von toolz
Ich kämpfe auf meinem Linuxsystem um jedes ungenutzte Bit, daher schockt mich die folgende Konsolenausgabe umso mehr:
Seitdem ich einst eine externe Festplatte angeschlossen hatte, verkleinerte sich der Speicherplatz auf /dev/sda6 um ganze 2GB und will nun nicht mehr wiederkehren. Ich vermute, dass die Sperrdateien automatisch vergrößert wurden, sich jetzt aber nicht mehr verkleinern.toolz@linux:~$ df -h Dateisystem Size Used Avail Use% Eingehängt auf /dev/sda6 6,8G 6,1G 367M 95% / none 2,0G 720K 2,0G 1% /dev none 2,0G 460K 2,0G 1% /dev/shm none 2,0G 92K 2,0G 1% /var/run none 2,0G 0 2,0G 0% /var/lock /home/toolz/.Private 6,8G 6,1G 367M 95% /home/toolz
Nun die Frage: Wie kann ich die Sperrdateien reduzieren (sagen wir auf 1GB)? -
in: Assembler - vor Ausführung negieren
geschrieben von toolz
Hallo,
ich habe mal wieder ein kleineres Assemblerproblem. Und zwar möchte folgenden Ausschnitt optimieren:
Etwas leichte Mathematik führte mich schließlich hierzu:mov eax,2 neg eax and [var],eax
Jedoch bekomme ich jetzt einen Kompilierfehler ausgegeben:and [var],0xffFFffFB
error: value out of range.
Natürlich ist meine Frage, warum das nicht funktioniert. Kann man tatsächlich keine 4 Byte großen Zahlen direkt angeben?
(FASM, Linux x86)
Addendum:
Zu dämlich: Ich habe eifrig herumprobiert und mir ist aufgefallen, dass ich die Größenangabe vergessen habe:
So funktioniert es nun. Danke, wer mir helfen wollte!and dword[var],0xffFFffFB
-
in: Ubuntu permanenter Download-Link
geschrieben von toolz
Die einzigen offiziellen statischen Links dürften sich wohl hier befinden: http://cdimage.ubuntu.com/daily-live/current/. Wenngleich verständlich ist, dass man versucht, die verschiedenen Versionen zu trennen (es geht ja nicht darum, immer die aktuelle Version zu besitzen, sondern dass eine bestimmte Version den eigenen Anforderungen genügt).
Das Problem an den Links ist allerdings, dass es sich dabei um Datenträgerabbilder handelt, die man nicht mal eben so entpackt und darin eine Linux-Verzeichnisstruktur vorfindet...
Vielleicht ist auch das hier etwas für dich: http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/ -
in: Ein Rätsel für Programmierer
geschrieben von toolz
mathesoft schrieb:
Das ist leider nicht korrekt, es geht sehr wohl:
Grundsätzlich muss immer der alte Wert irgendwo und -wie zwischengespeichert werden. Selbst wenn die Programmiersprache sowas wie eine Exchange-Funktion hat, läuft das für den Programmierer unsichtbar im Hintergrund ab - gerade bei komplexen Objekten ist das nur mit Zwischenspeicherung möglich (und wenn es nur die Adresse ist, wo sich das Objekt im Speicher befindet).staymyfriend schrieb:
Das selbe funktioniert insbesondere auch für Zeiger, also für alle möglichen Datentypen. In Assembler sieht man deutlich, dass auch ohne xchg keine dritte Variable benötigt wird:
Bei INT oder LONGINT geht das mit XOR so...
a = a^b b = a^b a = a^b
xor eax,ebx xor ebx,eax xor eax,ebx
http://de.wikipedia.org/wiki/Dreieckstausch
http://www.tutego.de/blog/javainsel/2012/05/inselraus-variablen-mit-xor-vertauschen/ -
in: Ein Rätsel für Programmierer
geschrieben von toolz
Assembler:
Standard ist natürlich die Anwendung von XOR und in jeder Sprache, die soetwas nicht nativ unterstützt vorzuziehen.xchg eax,ebx
Ohne XOR auch in Java möglich (es sollte ja für beliebige Datentypen funktionieren):
Object v1, v2; public void xchg(Object v1, Object v2) { this.v1 = v2; this.v2 = v1; }
Entsprechend für beliebige Variablen (ungetestet):
public void xchg(Integer alt1, Integer alt2) { tauschen(alt1, alt2, alt2); } private void tauschen(Integer alt1, Integer alt2, int neu1) { alt2 = alt1.intValue(); alt1 = neu1; } public void main() { Integer v1, v2; // ... xchg(v1, v2); }
Letztere Variante auf beliebige Typen zu erweitern ohne for-Schleifen zu benutzen (denn dann wird für den Programmierer sichtlich eine neue Variable erzeugt) ist allerdings etwas aufwändiger.
In C ist diese Idee übertragbar: Für beliebige Typen müssen einfach die Zeiger z1 und z2 mit XOR behandelt werden:z1 = (void*)(*(void*)z1 ^ *(void*)z2) z2 = (void*)(*(void*)z1 ^ *(void*)z2) z1 = (void*)(*(void*)z1 ^ *(void*)z2)
Ich will aber auch sagen, dass ich es nicht gutheißen kann, die Minimierung der Varaiblenanzahl als Maxime zu betrachten. Lieber habe ich eine Variable zu viel und lösche sie, sobald ich sie nicht mehr brauche, als dass ich zwei Variablen verschränke und somit unnötige Fehler entstehen. Denn das geht mathematisch sogar so weit, dass man theoretisch nur eine Variable benötigt; wobei man hier das Wort Variable ebenso im rein mathematischen Kontext gesehen werden muss. In der Praxis klappt das nur bei den wenigsten Programmiersprachen (je maschinennäher, desto unwahrscheinlicher).
Ich hoffe alle Programmausschnitte funktionieren so, wie ich sie angegeben habe... -
in: Java Compiler API
geschrieben von toolz
Das editorForm dieser Seite könnte interessant für dich sein. Am Besten setzt du dich mit dem Autor unter der angegebenen Adresse onlinecompiler.net@gmail.com auseinander.
Aber ich glaube nicht, dass es einen Dienst gibt, der es anderen Diensten ermöglicht, Dateien automatisch kompilieren zu lassen, denn das wäre zu viel Rechenaufwand für nichts - Wer soll denn dann die Werbung anklicken? -
in: Suche Mitarbeiter
geschrieben von toolz
Das ganze wäre doch sowieso unentgeltlich, weshalb man auch nicht von einer Beschäftigung sprechen könnte. Das heißt hier wäre es sogar einem Kleinkind erlaubt, Artikel zu verfassen. -
in: Schriftgröße an Font anpassen
geschrieben von toolz
Obgleich das nur ein subjektiver Eindruch sein darf erscheinen mir unterschiedliche Schriftarten unterschiedlich groß. Will ich nun eine Alternativschriftart anbieten, dann verändert sich das Aussehen meiner Seite drastisch:
Ich dachte mir, ich könnte für jede angegebene Alternative eine eigene Schriftgröße verwenden, etwa so:font-family: 'Nimbus Roman No9 L', Verdana, serif;
Allerdings scheint das nicht CSS-konform zu sein, denn nun wird mir der Text immer in 22px und Standardserif angezeigt.font: 12px 'Nimbus Roman No9 L', 15px Verdana, 22px serif;
Also die Frage: Wie kann ich zu jeder Schriftalternative auch eine jeweilige Schriftgröße angeben? -
in: Suche Mitarbeiter
geschrieben von toolz
[...]
1. Schreibst du eigentlich auch mit?
2. Warum sollen die Mitarbeiter denn mindestens 16 sein? Warum nicht 18 oder 21? Oder warum sollen sie nicht einfach gut schreiben können? Also was ist an 16 so besonders? -
in: Wörter, die der deutschen Sprache fehlen
geschrieben von toolz
nemoinho schrieb:
Yakamoz kommt aus dem türkischen und bezeichnet das Spiegelbild des Mondes im Wasser.
Laut Wikipedia handelt es sich hierbei aber um das Meeresleuchttierchen. Das Spiegelbild des Mondes wäre dann ja einfach nur ein Meeresleuchten.
http://de.wikipedia.org/wiki/Noctiluca_scintillans
Allgemein kann ich diese Seiten empfehlen, ehe ihr glaubt etwas gefunden zu haben
http://www.aktionlebendigesdeutsch.de/wortarchiv.php
http://www.oberlehrer.org/vwg.html -
in: Assembler teilt seltsam
geschrieben von toolz
[...] mov ebx,10 teilen: div ebx push edx inc ecx test eax,eax jnz teilen [...]
Das vorweg. Leicht zu sehen ist, dass ich mich an einer Schleife versuche, in welcher das EAX-Register geteilt wird und der Rest auf dem Stapel landet. Nur ist es leider so, dass die neunte Zeile niemals erreicht wird, dass also EAX die Null nicht erreicht und die Schleife nicht terminiert. Versuche dieses Verhalten mittels Debugger nachzuvollziehen offenbarten mir, dass der Wert von EAX nicht immer kleiner wird, sondern hin und her springt. Z.B. wird aus 0x664D3215 nach einer Division 0xA3D48502...
Ganz sicher habe ich eine absolute Trivialität übersehen, aber ich muss euch bitten mir zu helfen, denn ich werden nicht schlau hieraus. -
in: Zu viele Creditpoints im Studium
geschrieben von toolz
Mehr CP zu bekommen, als man braucht ist nicht gerade unüblich. In manchen Studiengängen muss man das sogar machen, um am Ball zu bleiben! Es ist nicht verboten mehr Module zu belegen, als man müsste, aber du darfst dein Studium dadurch nicht verlängern. Was das bedeutet entscheidet letztendlich deine Uni, aber niemand wird dir verbieten können nebenher mehr CP zu sammeln.
Setzt du jedoch ein Semester aus und machst währenddessen nur afK oder sonstige Angebote, dann könntest du vielleicht Ärger bekommen.
Zum Anrechnen kann man allgemein nichts sagen, dafür musst du schon die Uni nennen, aber generell gilt: Zu viele CP helfen nicht, denn es wird nur die maximale Anzahl angerechnet. Auf jeden Fall werden nur die afK gewertet, mit denen du deine CP voll bekommst, jedoch kann es da unterschiedliche Auswahlkriterien geben - Denkbar ist bspw., dass die afK gerade einmal solang einzählen, bis die Maximalanzahl erreicht ist und danach eine Verbesserung nicht mehr möglich ist, völlig gleich wie gut man ist oder wie viele weitere Module man wählt.
Und allgemein lässt sich zudem noch sagen, dass der Einfluss von afK-Modulen in die Abschlussnote nicht spürbar ist. -
in: C#: Sprache ändern
geschrieben von toolz
Klicken Sie im Menü Extras auf Optionen.
Erweitern Sie im Dialogfeld Optionen die Option Umgebung, und klicken Sie dann auf Internationale Einstellungen.
Wählen Sie in der Dropdownliste Sprache die Sprache aus, die für den Benutzeroberflächen-Text in der Entwicklungsumgebung verwendet werden soll.
– oder –
Wählen Sie in der Dropdownliste Sprache die Option Wie in Windows, um den Benutzeroberflächentext in der Entwicklungsumgebung in derselben Sprache wie das Betriebssystem anzeigen zu lassen.
Zitat: http://msdn.microsoft.com/de-de/library/ms246590%28v=vs.80%29.aspx
Wenn das nicht geht mal hier das Sprachpaket besorgen:
http://www.microsoft.com/de-de/download/details.aspx?id=30681
Nebenbei bemerkt kannst du nicht in C# die Sprache umstellen (was soll denn da passieren?), sondern nur in der Entwicklungsumgebung dazu. -
in: Noch Bedarf an Lima-CO?
geschrieben von toolz
Hallo!
Mir ist aufgefallen, dass die von mir gegründete Communio Obiurgationibus seit bereits einem Jahr inaktiv ist.
Nun möchte ich fragen, ob denn noch Bedarf oder Interesse an einer solchen Gruppe besteht, oder ob ich sie nicht vielleicht löschen sollte. Vielleicht habt ihr auch Anregungen, was man anders gestalten könnte, damit die Gruppe bessere Aufmerksamkeit genießt.
Wie wäre es bspw., wenn wir in Zukunft den Dienst bieten, für unsere Mitglieder selbst nach Verlinkungen zu suchen, anstatt dass diese sich selbst darum kümmern müssen?
Noch einmal kurz der Überblick über die Lima-CO:
In dieser Gruppe können Limanutzer nach Verlinkungen auf ihre Seite beten oder selbst Verlinkungen anbieten. Wird eine Verlinkung in die Gruppenliste eingetragen, sollten die Moderatoren hin und wieder diese Liste auf ihre Gültigkeit überprüfen, damit niemand auf die Idee kommt zu schummeln.
Wenn noch Bedarf besteht, die Gruppe aber einfach ins Unterbewusstsein gerutscht ist, bin ich gerne bereit dieselbe komplett zu überarbeiten.
Ich bin auf eure Einschätzungen gespannt. -
in: Assembler - CALL beeinträchtigt Stapelspeicher
geschrieben von toolz
Ich habe die Erfahrung gemacht, dass der
Befehl den Stapel beeinflusst. Lege ich beispielsweise eine Zahl darauf ab, rufe eine Prozedur auf und versuche dann in derselben die Zahl vom Stapel zu erhalten, kommt eine andere Zahl zum Vorschein:CALL
Hier ist das Register verschieden von 15, im Gegensatz zu:mov ecx,15 push ecx CALL prozedur ; ... prozedur: pop ecx cmp ecx,15 ; ... ret
Denn hier ist das Register gleich 15.mov ecx,15 push ecx JMP prozedur ; ... prozedur: pop ecx cmp ecx,15
Durch etwas Lektüre weiß ich, dass je nach Kontext durch den
Befehl der Befehlszeiger und manchmal auch das Codesegment auf den (?) Stapel gelegt werden, wenn ich jedoch folgendes versuche bricht das Programm ab:CALL
mov ecx,15 push ecx call prozedur ; ... prozedur: pop si pop ecx push si cmp ecx,15 ; ... ret
Mir ist immernoch unklar, inwiefern der
Aufruf Einfluss auf den Stapelspeicher nehmen kann, oder ob es dafür einen eigenständigen Befehlsstapel gibt. Und wenn tatsächlich einfach der Befehlszeiger auf den Stapel geschmissen wird, wie kann ich ihn behutsam zwischenspeichern, meine Variablen abholen und den Zeiger dann wieder ablegen?CALL
-
in: Assembler - Zahl in Gleitkommadarstellung
geschrieben von toolz
Huch! Danke. Alle TEST X,0 sind falsch gesetzt, da muss TEST X,X hin.
Gut. Jetzt bleibt allerdings die Mantisse leer. Es sind also noch weitere Fehler drin...
Kommentare: Ja... Ich dachte das stimmt. Umso blöder als ich das Fehlverhalten bemerkt habe. Die Kommentare nachträglich anzubringen kann in Assembler dauern - Ich bin noch nicht so gut darin. Eventuell kann ich die im neuen Jahr nachreichen.
Edit: Im Grunde ist mir das zu fehleranfällig. Spricht etwas gegen folgende Methode?
Wenn nicht, dann werde ich wohl dieses verwenden. Aber irgendetwas stimmt selbst da nicht, denn allein diese zwei Zeilen erzeugen einen Speicherzugriffsfehler...fild qword[ebx] fstp qword[ebx]
-
in: Assembler - Zahl in Gleitkommadarstellung
geschrieben von toolz
Hallo!
Ich wollte mir eine effiziente Routine schreiben, welche Zahlen (Integer) in deren Gleitkommadarstellung umwandelt. Folgender Auszug sollte diese Identität im EBX-Register vornehmen:
verbessert:elemzr: XOR ECX,ECX TEST EBX,EBX JNZ elemzr0 RET elemzr0: ROL EBX,1 MOV EDX,EBX AND EDX,1 TEST EDX,EDX JZ elemzr1 NEG EBX elemzr1: INC ECX ROL EBX,1 MOV EAX,EBX AND EAX,1 TEST EAX,EAX JNZ elemzr2 JMP elemzr1 elemzr2: SUB EBX,1 CMP ECX,256 JGE elemzr3 AND EBX,2147483648 ADD EBX,ECX ROR EBX,8 TEST EDX,EDX JZ elemzr5 JMP elemzr4 elemzr3: MOV EBX,8 elemzr4: ROL EBX,1 ADD EBX,1 ROR EBX,1 elemzr5: RET
Dabei handelt es sich um den FASM-Dialekt, dürfte aber dennoch allgemein verständlich sein.
Nun mein Problem: Jede Zahl, die ich mit dieser Routine getestet habe kam unverändert wieder heraus...
Kurze Erklärung: Der Exponent ist 8 Bit breit, die Zahl soll 4 Byte breit sein... Vielleicht habe ich mich auch irgendwo mit den Konstanten verrechnet...
Wo ist also mein Fehler? -
in: Einfach vertrackte Liste
geschrieben von toolz
In folgender einfach verketteten Liste muss ein (vertrackter) Fehler sein. Ich weiß nur leider nicht, wo...
Ich kann mich heute damit nicht mehr beschäftigen, also gebe das Vergnügen mal an euch weiter!
EDIT: OK, beachtet am Besten nur die zweite Variante. Außerdem arbeiten beide nach dem LIFO-Prinzip.
typedef struct skette { char *zeile; struct skette *weiter; } kette; int anz_kette; kette test; void initkette() { anz_kette = sizeof(kette); test.zeile = NULL; test.weiter = NULL; } void merken(char* z, kette *anker) { kette *kopf = anker; while (kopf->weiter != NULL) kopf = kopf->weiter; if (kopf != anker) { kopf->weiter = malloc(anz_kette); kopf = kopf->weiter; kopf->weiter = NULL; } kopf->zeile = z; } char* erinnern(kette *anker) { kette *kopf = anker; kette *hals = NULL; while (kopf->weiter != NULL) { hals = kopf; kopf = kopf->weiter; } char* z = kopf->zeile; if (kopf != anker) { free(kopf); hals->weiter = NULL; } else kopf->zeile = NULL; return z; }
Funktionsweise:
Es werden hier Zeilen in einer "kette" genannten Liste (rückwärts) gespeichert oder ausgelesen. Leider scheint es, als ob immer nur ein Element der Liste bestünde (also der Nachfolger des Ankers ist immer NULL) und auch die gespeicherte Zeile beinhaltet nicht das, was sie sollte...
2. Variante (vorwärts):
void merken(char *z, kette *anker) { kette *rumpf = anker->weiter; anker->weiter = malloc(anz_kette); kette *kopf = anker->weiter; kopf->weiter = rumpf; kopf->zeile = z; } char *erinnern(kette *anker) { if (anker->weiter != NULL) { kette *rumpf = anker->weiter; char *z = rumpf->zeile; anker->weiter = rumpf->weiter; free(rumpf); return z; } else return ""; }
Hier stimmt anscheinend nur der Inhalt der Elemente nicht - Die Liste hat schonmal die richtige Anzahl an Elementen.
Vielen Dank im Vorraus und frohe Weihnachten! -
in: Java - Double klaut mir die letzt 0
geschrieben von toolz
Ich würde das nicht mit double lösen, sondern mit zwei ints für Minute und Stunde, aber das sollte dein Problem lösen:
System.out.print("Der nächste Bus fährt um " + Bus); switch (Bus.toString().length()) { case 2: System.out.print('.'); case 3: System.out.print('0'); case 4: System.out.print('0'); default: } System.out.println(" Uhr.");
Alternativ eben so:
System.out.print("Der nächste Bus fährt um " + BusStunde + ":" + (BusMinute.toString().length() == 1 ? "0" + BusMinute : BusMinute) + " Uhr.");
PS: Entschuldigung für das ofte Korrigieren, ich wollte hier nur keinen falschen Code stehen lassen -
in: Links in Forum
geschrieben von toolz
Ist ja unvergütet, also mal nebenbei:
Ich bin dafür, die Möglichkeit neue Tabs oder gar Fenster öffnen zu lassen gänzlich aus dem HTML-Standard zu streichen... Oder zumindest sollte man beides (!) in FF ausschalten können -
in: Download einbetten + maskieren
geschrieben von toolz
Wenn ich nichts übersehen habe handelt es sich dabei lediglich um meinen ersten Ansatz, der jedoch gegen die Bedingung (2) verstößt. -
in: Download einbetten + maskieren
geschrieben von toolz
Vielleicht ist das nicht deutlich genug herausgekommen - Ich will natürlich dynamisch generierte Dateien zum Download anbieten.
Und selbst, wenn nicht, dann wäre mittels Downloadserver die Bedingung (1) verletzt! -
in: Download einbetten + maskieren
geschrieben von toolz
Hallöchen!
Gibt es eine Möglichkeit einen Download mittels PHP zu realisieren und dabei die folgenden zwei Dinge einzuhalten?
1. Pfad maskieren
2. Download einbetten (d.h. auch HTML-Inhalt übermitteln)
Ich schaffe irgendwie immer nur eines von beiden...
Ansätze:
In PHP, wobei hier das Einbetten in HTML nicht funktioniert,application/octet-stream attachment; filename
oder
In HTML, wobei hier das Maskieren nicht möglich ist.<embed>
(Warum das Forum "HTML, CSS & Javascript": Die Umsetzung ist zwar in PHP, aber hier geht es ja primär um Syntax von HTML)
Vielen Dank! -
in: Kleines Browsergame "Akinom"
geschrieben von toolz
Nicht schlecht für den Anfang!
Meine Kritik:
1. Sind das deine ersten geschriebenen Worte überhaupt? Achte einfach etwas mehr auf Rechtschreibung. Mich, wie bestimmt auch viele andere hier, schreckt sowas ab.
2. Bei jedem zweiten (?) Angriff (gegen KI) verursache ich keinen Schaden
3. Wofür ist ein Schild gut?
4. Natürlich sind die vorhandenen Karten eher unausgeglichen, aber das ist ja nur Kosmetik -
in: Richtige PC-Spiele auf dem Samsung Ativ Smart PC
geschrieben von toolz
So weit ich das weiß (und ich verfolge dieses Thema sehr aufmerksam) gibt es noch keine Windows 8 Pro - Geräte zu kaufen! Es ist auch nicht möglich, Windows 8 Pro auf ein Gerät aufzuspielen, das eine ARM Architektur hat - Gleichzeitig kann Windows 8 RT nur auf ARM Architekturen laufen.
Noch eine Sache: Selbst Linux kann nicht verhindern, dass für ARM geschriebene Software nicht auf Intelarchitektur läuft. Das liegt ganz einfach an einer unterschiedlichen Befehlsreferenz. Natürlich gibt es hardwareunabhängige Programme (Java), aber die gibt es dann für Windows auch.
Was ich sagen wollte: "Echte" PC- Spiele sind auf Tablets momentan noch nicht spielbar. -
in: Onlinedebugger für Assembler
geschrieben von toolz
Hallo allerseits!
Gibt es Onlinedebugger für Assembler? Am Besten für FASM, aber ich nehme auch gerne alle anderen Assemblersprachen, jedoch habe ich noch keinen Debugger entdeckt. Ich suche ausdrücklich nicht nach Compilern!
Ich möchte den eingegebenen Kode im Browser auf der Internetseite Schritt für Schritt durchgehen können - ich will mir kein Kompilat herunterladen und ausführen müssen.
Eine bereits erfolglose Suche lieferte lediglich zwei Kompilierer, die sich fälschlicherweise als Debugger auswiesen, also keine Möglichkeit besitzen, den Kode Zeile für Zeile durchzugehen und alle Laufzeitvariablen abfragen zu können.
Wenn es da wirklich keinen geben sollte, welchen lokal laufenden Debugger könnte man empfehlen (Windows oder Linux)? -
in: Free Pascal dynamische Arrays
geschrieben von toolz
Die einzige Möglichkeit in Pascal dynamische Felder zu erzeugen ist das Verwenden von Listen. Pascal ist eine stark beschränkte Programmiersprache - Was auch immer man mit Pascal programmieren möchte lässt sich von vornherein meist mit begrenzten Feldern abhandeln.
Schlüsselwörter wie "new" kenne ich aus Pascal nicht - es handelt sich immerhin um keine objektorientierte Programmiersprache.
Auch wenn die Implementierung einer Liste in Pascal unkonfortabel erscheint, gibt es keine andere Möglichkeit. -
in: Ist Religion gut, schlecht oder ein zwischending?
geschrieben von toolz
bladehunter schrieb:
Das stimmte noch bis ins späte 19. Jahrhundert, aber mittlerweile ist diese Ansicht überholt, denn Religion ist in der Mehrheit bereits nicht mehr der Glaube an Transzendetes - siehe auch die Religion des Siegmund Freud. Oftmals ordnet man auch irrtümlich den Atheismus nicht als Religion ein, aber wenn man einmal die grundlegenden Schriften des Atheismus (von Ludwig Feuerbach) gelesen hat, versteht man, dass der Atheismus eine selbsablehnende Religion ist. Es wird dabei an allen Grundfesten gezweifelt - Tatsächlich gibt es im Atheismus keine Transzendenz mehr, aber immer noch das Übermenschliche - das die Nationalsozialisten für ihren Führergedanken verwendeten - da schon Freud erkannt hatte, dass man immer an etwas höheres glauben würde.
Daher werde ich auf der Basis argumentieren, dass ich Religion als etwas bezeichne, das in der öffentlichen Wahrnehmung hauptsächtlich gültig ist: Der Glaube an ein oder mehrere übermenschliches Wesen, das Regeln und Strafen aufstellt, sowie in das Weltgeschehen eingreift, ohne dass es für dessen Existenz einen Beweis gibt.
Ich sehe hier auch eine gewisse Widerspiegelung der gesellschaftlichen Konflikte. Möglichst alles soll über den Haufen geworfen werden, allerdings gibt es nicht immer einen klaren Gegenpol - es gibt insbesondere keine Antireligion:
Wer glaubt zu wissen, dass Religion grundlos ist, der verfolgt eben wieder einen Glauben - und somit eine Religion...
Vielleicht solltet ihr erstmal den Begriff Religion diskutieren, denn ich glaube der ist noch nicht allen ganz klar. -
in: Kleines Validierungsprojekt
geschrieben von toolz
Ich glaube jetzt, dass nur wenige Nutzen aus einem solchen Programm ziehen könnten. Ich werde es demnach wohl nicht programmieren, danke für eure Einschätzungen! -
in: Kleines Validierungsprojekt
geschrieben von toolz
mlrecords schrieb:
Auch wenn wir hier im Spamforum sind, bitte ich das Niveau hoch zu halten...
Ich finde tchabs Idee auch super.
Ich hätte auch eine Idee, wie du das lösen könntest. Versuch zu zeigen, dass P = NP gilt, dann hast du eine Lösung für tchabs Idee, die effizient läuft.
Anscheinend ist die Nachfrage nicht besonders hoch. Ich bitte dennoch um weitere Einschätzungen. -
in: Kleines Validierungsprojekt
geschrieben von toolz
Das geht jetzt an meiner eigentlichen Idee vorbei, aber ich befürchte, dass es sich bereits ab Halbierung der Datenmenge nicht mehr lohnen würde - Die Zeit, die man braucht, um die restlichen Daten herunterzuladen verschlingt der Probieralgorithmus sicherlich bereits. Von der Laufzeit her würde ich schätzen, der Download ist in, während die von tchab vorgeschlagene Variante in
liegen dürfte...
Es geht in meinen Fällen aber nur um kleine (1-Bit) Fehler, wo sich soetwas lohnen könnte... -
in: Kleines Validierungsprojekt
geschrieben von toolz
hackyourlife schrieb:
Dier Herangehensweise, die ich anstrebe ist einfach: Für jeweils X Byte wird ein eigener Abschnitt im Hash angelegt. Stimmt nun ein Bereich des Hashes nicht mehr mit dem Original überein, ist klar, in welchem Sektor ein Fehler ist.
Wenn du diesen Algorithmus entwickelt hast kannst du ihn dir patentieren lassen und wirst bestimmt Millionär
Schwieriger wird es natürlich den Fehler zu beheben - Die Sektoren dürfen nicht zu klein sein, denn der Hash sollte bestenfalls selbst bei großen Programmen nicht länger als (schätzungsweise) 100 Zeichen sein, das ließe sich aber machen, indem man für jeden Sektor Untersektoren anlegt, die dann auf selbige Weise behandelt werden, wie das ganze Programm.
Das ist aber nicht mehr trivial, klar. Ich frage ja auch nur, ob es das braucht, damit sich jemand mit dem Validierer abfindet -
in: Kleines Validierungsprojekt
geschrieben von toolz
Ja - ich befürchte, dass die Benutzung des Programmes maßgeblich von der Aktualität der Datenbank abhängt...
Ich habe zwei Erweiterungsideen:
1. Man könnte die Möglichkeit implementieren, Hashes von fehlerfreien Daten hochzuladen
2. Durch einen geschickten Hashalgorithmus könnte man kleinere Fehler nach Wunsch korrigieren lassen, indem der schadhafte Sektor (der Algorithmus muss natürlich so konstruiert sein, dass sich ein Fehler lokalisieren lässt) so lange verändert wird, bis die Prüfsumme wieder stimmt.
Was haltet ihr davon? -
in: Kleines Validierungsprojekt
geschrieben von toolz
Nein, es geht um die Überprüfung von Programmen, die man nicht selbst geschrieben hat.
Ein Beispiel:
Du lädst die 7zip herunter, installierst es und erhältst beim Start eine Fehlermeldung. Womöglich hatte die heruntergeladene Datei eine Prüfsumme beigelegt, oft jedoch nicht. Jetzt könntest du das fiktive Programm einsetzen und auf 7zip loslassen - Von einer Datenbank wird dann die Prüfsumme angefragt und eine eigene mit den Daten von 7zip angelegt, anschließend beide abgeglichen.
Gibt das Programm dann aus, dass alles in Ordnung ist liegt das Poblem nicht an fehlerhaften Daten. -
in: Kleines Validierungsprojekt
geschrieben von toolz
Ich habe eine fixe Idee von einem Programm, mit dessen Hilfe man alle möglichen Daten validieren kann. Es würde sich nur unwesentlich von einem Checksummenprogramm unterscheiden, mit dem kleinen Unterschied, dass dahinter eine Datenbank stehen soll, auf der von bekannten Programmen Validierungshashs angelegt wurden (gerade groß genug, um höchstwahrscheinlich alle Fehler zu finden). Je nach Umsetzung könnte man sich auch noch die fehlerhafte Datei ermitteln lassen (ansonsten würde man nur erfahren, dass überhaupt ein Fehler vorliegt)...
Aber ich verschwende nur ungern meine Energie in ein solches Projekt (auch wenn es abgesehen von der Datenbank halb so wild ist), wenn es niemand benutzen würde. Daher frage ich hier, ob Interesse an einem solchen Programm bestünde?
Gibt es rechtliche Probleme beim Anlegen der Hashs?
Würdet ihr mitprogrammieren wollen? -
in: 19:48 Was macht ihr
geschrieben von toolz
Vor mir ein Bildschirm.
Unter mir ein Stuhl.
Flankiert von Lautsprechern.
Hinter mir eine Wand.
Ich tippe - immer noch - immer noch... -
in: Sicherheitstest
geschrieben von toolz
Ich bin auf Zufall mal wieder auf dieses Thema gestoßen und möchte doch noch einen Kommentar abgeben. Der Quelltext bleibt unveröffentlicht, da alles andere nur zum Kopieren animieren würde. Ich bin bereits zu einigen professionellen Informatikern (bei denen ich sicher bin, dass sie den Code nicht vervielfältigen) gegangen, mit deren Hilfe ich noch letzte Korrekturen vorgenommen habe. Kurz gesagt ist der Algorithmus also mittlerweile (erfolgreich) im Einsatz. JA, ich habe keine neue IDEE umgesetzt, aber der Code ist natürlich auf den Sicherheitsaspekt optimiert. Das heißt ihr erfahrt kaum Neues, wenn ihr ihn sähet und bereits in die sicherheitstheoretische Informatik eingearbeitet habt.
Ich weiß, dass jetzt wieder viele von euch Dinge interpretieren werden, dich ich niemals ausdrücken wollte, aber ich möchte nur noch auf eines Hinweisen: Wenn ich in diesem Beitrag vom Quelltext gesprochen habe, so meinte ich immer den Sicherheitsrelevanten - Also den Serverseitigen. Warum auch immer hier eine hitzige Diskussion über das UI entstanden ist... darum ging es doch nie.
Noch immer kam kein Vorschlag, wie man an die php-Dateien hätte kommen können, um zumindest einen Ansatz zum Hacken zu bekommen.
Vergesst doch für einen Moment eure Vorbehalte und akzeptiert, dass es mir N I E um die Oberfläche, also das JS ging, da es keinen Aufschluss über das System geben K A N N. -
in: Sicherheitstest
geschrieben von toolz
So, das wars!
Wie erwartet ist zwar niemand auf die Lösung gekommen, aber leier hat mir auch niemand helfen können. Um alles zusammenzufassen möchte ich einmal eine Analogie finden:
Nehmen wir an, ich hätte euch einen von mir entworfenen Safe vorgestellt und erhoffte mir von euch Schwachstellen zu finden. Klar, da gibt es die Tresortür mit dem Nummernschloss und weil ihr mich so dazu gedrängt habt, habe ich die euch auch gezeigt, aber mit dem deutlichen Verweis, dass die Konstruktion der Tür irrelevant ist - Um sie zu öffnen braucht man eine bestimmte Zahlenkombination, die man kaum herausfinden kann und selbst wenn, wer weiß, was im Safe ist? Der Text zumindest nicht.
Ihr habt mir nun solche Antworten gegeben:
"Was macht es für einen Sinn, den Safe zu knacken?"
"Kann man den Safe automatisch öffnen?"
"Der Safe könnte sich doch selbst öffnen!"
"Ich würde alle Kombinationen ausprobieren."
"Das ist unnötig schwer, kannst du ihn nicht für uns aufmachen?"
"Die Tür ist zerkratzt!"
"Du bist schlecht, die Tür geht ja gar nicht auf..."
Leider bringt mir das nichts. Aber so weiß ich zumindest nun, dass das hier das falsche Forum für Sicherheitsfragen ist.
Ja, ich hätte die 50€ wirklich gegeben, aber es ist ja nun nicht mehr nötig. Von nun ab gibt es keinen Gewinn mehr! Ich gebe hiermit auch die Lösung bekannt:
Es tanzen 21 Schlümpfe auf dem Wasser.
K7 U3 M6
Ich glaube ich brauche mich nicht zu bedanken. -
in: Sicherheitstest
geschrieben von toolz
sebulon schrieb:
Nein.
ich werd mich nciht wiederholen, ich hab dir gesagt, wie man rein kommt... aber wenn du nciht lesen kannst, ist es nciht mein problem...
Du hast mir gesagt, wie du denkst, dass man reinkommt.
Allerdings liegt deinem ganzen Geschwafel ein einfachen Fehler zugrunde: Du versuchst mir in sämtlichen Punkten zu widersprechen, aber dabei übersiehst du, dass ich derjenige bin, der alles über das System weiß, während du nichts darüber wissen kannst.
Ich habe (in diesem Thema) noch keine einzige Fehlinformation herausgegeben und werde das auch in Zukunft nicht tun. Du brauchst dich nicht anstrengen wieder einen ellenlangen, aber besonders inhaltslosen Text zu schreiben, der dann doch nur wieder gegen meine Person gerichtet ist, denn weitere Beiträge von dir werde ich (hier) sicher nicht mehr lesen.
Edit: Leider schließt du dich so selbst von dem 50€ Gutschein aus, aber ich bezweifle, dass es dir darum geht, denn deine Bemühungen scheinen weniger dem Programmieren, sondern vielmehr dem Diffarmieren gewidmet zu sein. -
in: Sicherheitstest
geschrieben von toolz
sebulon schrieb:
Danach habe ich aufgehört zu lesen, ich bezweifle, dass du mir helfen kannst, wenn du bereits daran zweifelst...
außerdem hast du nen denkfehler... es sind nur 40^16...
OK, nehmen wir an, es gibt nur ein Zeichen. Gibt es dann 40^1 Möglichkeiten das Zeichen mit sich selbst zu kombinieren? Nein! (Wenn du es nicht weißt: Es sind 1^40 = 1)
Es wäre wirklich besser, wenn du nun endlich aufhörst an meinen Aussagen zu zweifeln. Ich habe nicht vor, euch sinnlos zu beschäftigen. Vielmehr möchte ich euch und mir Zeit ersparen. -
in: Sicherheitstest
geschrieben von toolz
Tatsächlich ist es möglich das System zu automatisieren - Das ist es ja auch bereits. Jedoch ist es in diesem Fall elementar keine Benutzeroberfläche zu bieten - Warum seht ihr, sobald ich den Quelltext veröffentlichen werde (Wenn ich das hier machen sollte und das mache ich nur dann, wenn es hier auch Leute zu geben scheint, die sich sehr gut in dieser Thematik auskennen).
Hat man sich ersteinmal authentiziert, dann kann man den Text nach belieben ändern. Vielleicht verstehe ich deine Frage auch nicht richtig, aber wenn du meintest: "Geht das auch automatisch?", dann ist meine Antwort: "Ja, und das ist es bereits."
Weiterhin frage ich mich, wie mein System sich selbst aushebeln könnte. Das ist in der Tat interessant, ich danke dir für diesen Einwurf! Solche Antworten hatte ich mir eigentlich erhofft. -
in: Sicherheitstest
geschrieben von toolz
Das klingt doch jetzt mal interessant!
Ich bin gespannt, auch wenn ich euren Ansatz noch immer in Frage stelle. Es bringt wirklich nichts das Passwort zu erraten oder zu ändern.
Ach:
sebulon schrieb:
Das finde ich irgendwie sehr unüberlegt. Hast du nicht zuvor selbst herausgefunden, dass es für das Passwort (und da unterstelle ich dir sogar schon etwas, die 0 hast du ausgelassen) 17^40 Kombinationen gibt? IPs gibt es nur 256^4. Das bedeutet, du kannst auf diese Weise 1,65179769 * 10^49 Möglichkeiten nicht testen oder sehe ich das falsch?
die auswahl schickt man so lange über proxies ab, bis IP gesperrt wird... es ist ein hinderniss, aber eine wirklich sichere sache ist das nicht... vor allem da ich vermute, dass alle user denselben code haben...
Macht insgesamt eine Wahrscheinlichkeit von 2,60017756 * 10^-40 (für jeden normalen Float-Typ also gleich 0), dass du das Passwort findest... Das dir dann aber nichts nützt -
in: Sicherheitstest
geschrieben von toolz
Der Vergleich hinkt. Ich fordere keinen auf, irgendetwas zu machen.
Ich bitte lediglich diejenigen, die sich damit auch auskennen, mein System auf Sicherheitslücken zu testen. Und da ich dieselben im Code bereits im privaten Umfeld stark ausgemerzt habe geht es nun darum, Türchen, die ich noch nicht erwägt habe aufzufinden. Also alle Wege, die um das System herumführen!
Ich gebe euch deshalb keinen Code und lasse euch deshalb nicht Brute-Force mäßig herumprobieren, weil diese Variante an den Text zu kommen für mich nicht interessant ist.
menschle schrieb:
? Das ist nicht die unkomprimierte Datei und ich würde mich wundern, diese hochgeladen zu haben...
Um Dir Deine eigene Arbeit abzunehmen:
http://toolz.lima-city.de/geheim/nakra1.js -
in: Sicherheitstest
geschrieben von toolz
Mh...
Komisch. Das ist mir gar nicht aufgefallen, liegt wohl daran, dass ich die Datei noch mit massig Steuerzeichen und Kommentaren habe. Bist du dir sicher, dass du die vollständig entpackt hast? (Bin gerade an einem anderen Rechner und habe sie nicht parat)
Wenn ja, dann werde ich sie später, sollte ich das System einmal verwenden, wohl einfach so hochladen, wie sie ist.
So: Wie wärs denn nun nicht andauernd darüber zu meckern, wie schwer ich es euch mache, sondern auch mal produktiv zu sein. Schließlich suche ich nach Sicherheitslücken - Auf gehts! -
in: Sicherheitstest
geschrieben von toolz
philippkern schrieb:
Das würde ihm aber nichts bringen. Kann er gerne machen, solange er den Quelltext nicht veröffentlicht. Gefragt ist ja nicht nach dem Code, sondern nach dem Text, den ein Benutzer sehen würde, wenn er sich erfolgreich anmeldet!
Adrians ist ein Knight und kann damit auf die Userspaces zugreifen. Er kann sich also einfach den Sourcecode deiner geheim.php ansehen ... ;)
bladehunter schrieb:
Ich habe nichts obfuskiert. Ein paar Javascriptdateien sind allerdings etwas zu groß geworden, die musste ich komprimieren.
Und hast du den JavaScript-Obfuscator, den du verwendet hast, selber geschrieben?
thomasba schrieb:
Ja, denn ich suche nicht denjenigen, der mein System hacken kann, sondern nur Schwachstellen darin. Brute-Force zu erlauben wäre eine Schwachstelle.
Du willst, das es jemand probiert, machst ihm aber durch die IP-Sperre das leben unnötig schwer? -
in: Sicherheitstest
geschrieben von toolz
adrians schrieb:
Wenn du mit "Code" den Text meinst, den ein Benuter nach erfolgreicher Anmeldung sieht, dann ja. Um zu wissen, dass du nicht geraten hast, sollst du dann aber noch eine Information zusätzlich geben, die nur derjenige wissen kann, der sich auch an den Text gehackt hat.
Okay.
Sehe ich das richtig, wenn ich dir den Code gebe... ohne ihn zu erraten... Dann kriege ich von dir einen 50€ Gutschein? Kann ich das schriftlich haben?
Und weil ihr alle so darauf drängt:
Meldet euch an mit http://toolz.lima-city.de/geheim/geheim.php?b=1. Dann habt ihr den ersten Schritt in einem ganzen Marathon gemacht
Aber vorsicht, wer da versucht Brute-Force mäßig etwaige Passwörter zu erraten, dessen IP wird automatisch gesperrt.
Ach: Ja ein Benutzer kann sich äußert beqeum einloggen... Wenn er weiß, wie... -
in: Sicherheitstest
geschrieben von toolz
Entschuldigung, aber wenn ihr nicht einmal den ersten Schritt schafft, dann wäre es vermessen zu erhoffen, dass ihr Fehler in dem Quelltext findet
Aber ich denke nach der Woche werde ich den Quelltext vielleicht wirklich mal hochladen.
Ich sehe gerade: Wer sich geschickt anstellt kann durch ein Versäumen meinerseits sogar einen Teil davon schon abrufen... -
in: Sicherheitstest
geschrieben von toolz
Den Quelltext möchte ich nicht der Öffentlichkeit preisgeben - das habe ich im privaten Kreis gemacht. Zumindest da wurde keine Möglichkeit entdeckt (mit oder ohne Quelltext) das System auszutricksen.
Tatsächlich bin ich der Meinung, dass es nicht möglich ist, an den Text zu kommen, sollte er nicht für einen bestimmt sein.
Außerdem war ich davon überzeugt, dass die Anmeldehürde für euch kein Problem ist, aber es scheint ja bereits an einer simplen Authentifizierung zu scheitern.
Danke dennoch, mir ist bereits ein kleiner Fehler aufgefallen, den ich aber nur offline korrigieren werde.
Das mit dem Anreiz ist eine gute Idee! Wer den Text innerhalb der oben angegebenen Frist (21.8.2012 um 18 Uhr) herausfindet, und zwar nicht durch bloßes Erraten, der bekommt einen 50€ Gutschein für Amazon.
Zum Punkt Erraten: Wer tatsächlich den Text erhackt, der hat eine weitere Information. Ich unterscheide anhand dieser Information, ob geraten wurde, oder nicht.
Am Ende wird natürlich aufgelöst, welche zusätzlichen Informationen möglich gewesen wären und wie der Text lautet. -
in: Sicherheitstest
geschrieben von toolz
Also gut, ein weiterer Tipp:
Mann muss sich zunächst anmelden, um den gewünschten Text zu erhalten. Und weil ich so lieb bin: Die ID des einzigen Benutzers des Systems ist: 1.
Ich will aber nicht mehr verraten, da ich das System bei Erfolg auch einsetzen möchte.
Aber ganz nebenbei: Natürlich ist das nicht einfach! Ich möchte aber erfahren, ob es überhaupt möglich wäre, den Text zu erhalten.
fuhnefreak schrieb:
Gesucht ist natürlich nach dem richtigen Text. Den, den der oben erwähnte Benutzer sieht, wenn er sich anmeldet.
So, und was soll jetzt falsch sein? -
in: Sicherheitstest
geschrieben von toolz
Ich freue mich zu sehen, dass ihr anscheinend noch ansatzlos seid -
in: Sicherheitstest
geschrieben von toolz
Damit es eindeutig wird, von welchem Text die Rede ist:
Gesucht ist nach einem Satz und anschließend drei Kombinationen aus Buchstaben und Zahlen.
Und ja: Der ist da tatsächlich irgendwo! -
in: Sicherheitstest
geschrieben von toolz
Hallo
Ich habe jetzt mein Sicherheitssystem vervollständigt und erlaube euch, es (die Internetseite) für eine Woche, bis zum 21.8.2012 um 18 Uhr also, es auf Herz und Nieren zu testen. Dabei soll das Ganze aber konstruktiv ablaufen, ich erwarte von euch eine Beschreibung, woran eure Zugriffsversuche gescheitert sind, oder wie ihr es geschafft habt, die Nachricht zu erhalten.
Bestenfalls könnt ihr mir noch vorschlagen, wie ich das System verbessern kann.
Drei Hinweise gibts von mir:
1. Der geschützte Texet befindet sich auf der Seite http://toolz.lima-city.de/geheim/geheim.php
2. Ich bitte euch die Datenbank und den Server nicht unnötig zu stressen, da sie Lima City gehört!
3. "Es ist ein Fehler aufgetreten" ist nicht der gesuchte Text.
Über die Arbeitsweise des Systems möchte ich nichts bekanntgeben - Wenn es gar nicht erst möglich ist, herauszufinden, wie es funktioniert, dann umso besser.
(Wenn ich alles richtig programmiert habe, dann dürfte es einfacher sein, den Text zu erraten, als das System zu knacken.)
Wer meint den Text herausgefunden zu haben kann den ebenfalls in seine Antwort schreiben (wird aber meiner Meinung nach nicht passieren).
Sobald aus irgendwelchen unerfindlichen Gründen der Text hier genannt wurde, gebe ich das bekannt. Alle unkommentierten Lösungsvorschläge sind falsch.
Viel Spaß! -
in: Framerate - Homepageranking
geschrieben von toolz
Immerhin finde ich die Seite wunderschön!
Es braucht aber tatsächlich noch ein bisschen mehr, um mich nochmal auf die Seite zu locken. Z.B. irgendwelche Grafiken oder Informationen über den Serverstandort, etc. ...
Ganz nebenbei: Wieviel hat denn ein 10 Jahre langes Copyright gekostet? Und warum kaufst du dir das, obwohl das in Deutschland sowieso sinnlos ist? -
in: Suche Designer für Browsergame
geschrieben von toolz
Schaut doch auchmal in diese Gruppe rein:
http://www.lima-city.de/groups/browsergames -
in: Suche Designer für Browsergame
geschrieben von toolz
Um hier die Fronten mal zu klären wäre ich dafür, dass ihr euren Quelltext offen legt, wenn der nicht gerade streng geheim ist. Wir helfen euch sicherlich dann auch einige Fehler zu suchen und auszumerzen. Ganz nebenbei wüssten wir, woran ihr seid. -
in: Suche Designer für Browsergame
geschrieben von toolz
Es sind eben schon viele leere Ordner und Dateien hochgeladen worden...
-
in: Wahlrecht für den Bundestag verfassungswidrig. Was nun?
geschrieben von toolz
batleth schrieb:Ich einfach das Personen in politischen Ämtern die indirekt gewählt worden sind keine berechtigte Vertretung der Interessenten darstellen.
Und genau das sollen sie auch nicht sein. Ist der Gedanke nicht fabelhaft, dass wir ein Abgeordnetenhaus haben, in dem wir nicht selbst die Verantwortung übernehmen müssen, aber dafür sehr wohl bestimmen, wohin die Reise geht?
Man stelle sich vor wir würden die politische Entscheidungsebene als vollständig vom Volk legalisiert ansehen. Irrt sich dann einmal die Menge und stellt ein Gesetz auf, dann ist dieses auf sehr lange Zeit durch die bloße Majorität garantiert. Irrt sich jedoch ein Abgeordneter, dann ist das Volk weiterhin in der Lage, ein beschlossenes Gesetz auch wieder ausuhebeln, denn ein Abgeordneter handelt eben nicht vollständig im Sinne des Volkes.
Direkte Demokratie kann nur in winzigen Gemeinschaften funktionieren (und da mag sie auch ganz gut sein), aber in einem pluralistischem Staat wie Deutschland brauchen wir eine gewisse Garantie, dass nicht sofort alle Gesetzesbeschlusse legalisiert sind. -
in: Vorstellung und zugleich Info-beschaffung
geschrieben von toolz
xcoc schrieb:
Nun wollte ich doch auch fragen was als gewaltverhärlichend angesehen wird??Die Rechtschreibung verherrlicht mich zu Gewaltanwendung...
Und zu deiner Frage kann ich nur sagen, dass ich es sehr seltsam fände, wenn eine (neutrale !) Internetseite über ein Spiel (egal welchen Inhaltes) als gewaltverherrlichend angesehen wird - Wenn man darauf verzichtet Videos oder Bilder einzufügen kann so gut wie gar nichts passieren. Es sei denn, man schwingt irgendwelche Parolen, aber wer macht das schon? -
in: Passwort sicher
geschrieben von toolz
Also ich würde es mit der Datenbank lösen, weil ich mir ungern den Zugang zu meiner eigenen Seite sperren lasse
Pseudo:
Cookies würde ich nicht nehmen, da diese einfach vom Benutzer gelöscht werden können...mit Datenbank verbinden $nr = {}; $nr[0] = mysql_request( "SELECT `nr` FROM tabelle WHERE `ip` = " . $_SERVER['REMOTE_ADDR'] ); if (mysql_num_rows($nr[0]) != 1) $nr[0] = 0; else $nr = mysql_fetch_row($nr[0]); if ($nr[0] < 3) { if (passwort == richtig) { mysql_request( "UPDATE tabelle SET `nr` = 0 WHERE `ip` = " . $_SERVER['REMOTE_ADDR'] ); Seite anzeigen! } else { mysql_request( "UPDATE tabelle SET `nr` = " . ($nr[0] + 1) . " WHERE `ip` = " . $_SERVER['REMOTE_ADDR'] ); } } Dateiende!
-
in: Rechtschreibhilfe bei lima und firefox
geschrieben von toolz
Weil mein Vorredner das noch nicht erwähnt hat:
http://support.mozilla.org/de/kb/Rechtschreibpr%C3%BCfung%20nutzen
Hier findet sich eine sehr genaue Anleitung, wie die Rechtschreibprüfung unter Firefox aktiviert werden kann. Ansonsten empfehle ich dir, dich etwas mehr mit der Sprache auseinanderzusetzen - Es reicht schon, wenn du täglich mal etwas liest, damit deine Rechtschreibfehler (die tatsächlich ausufern) eingeschränkt werden. -
in: Sims 3
geschrieben von toolz
Gibt es wirklich so viele Themen mit der gleichen Überschrift -
in: kondensator problem
geschrieben von toolz
exklusive-digital-kunst schrieb:
Also!
Bei der Reihenschaltung von Kondensatoren ist die Gesamtkapazität gleich dem Kehrwert der Summe der Kehrwerte der Einzelkapazitäten
Eben keine Reihenschaltung, sondern schön parallel, denn ansonsten ist 1/5 + 1/5 = 2/5 und nicht 5 + 5 = 10...
Den 20nF kannst du vergessen, der fasst zuviel und dann stimmt die Frequenz in der Schaltung möglicherweise nicht mehr. -
in: 3 Wort Gedichte
geschrieben von toolz
, also blickte ich ...
-
in: Vorschläge, Verbesserungshinweise zu meiner Webseite
geschrieben von toolz
php-test1 schrieb:Achso, ich dachte das die Hintergrundmusik die Webseite ein bischen Interessanter macht.
Wenn überhaupt, dann würde ich dem Besucher es anbieten, Musik zu aktivieren. Niemals aber von selbst abspielen.
Sehr von Nachteil kann deine Variante nämlich sein, wenn jemand zuvor die Lautstärke voll aufdrehen musste und dann deine Webseite besucht...
(OK: Ich bin zu langsam im Schreiben) -
in: Fuhnefreak
geschrieben von toolz
Klar, mal abgesehen von dem grünen Etwas:
Ich habe das Gefühl, dass ich kein Passwort brauche, um mich bei dir anzumelden. Szenario: Ein beliebiger Nutzer meldet sich mit seinem Passwort bei deinem Dienst an und vergisst es, sich auszuloggen. Ich tippe dann einfach http://www.fuhnefreak.lima-city.de/bilder?user=test (Statt "test" steht dann dort der Benutzername) in meine Adressleiste und bin angemeldet?
Zumindest sagt mir Firefox, dass der Server lediglich die Adresse anfordert und anschließend kann ich mich ins Profil reinklicken (Oben auf "Members")...
Kann auch sein, dass ich falsch liege, aber besser ich äußere meine Vermutung und sie ist falsch, als dass ich sie verschweige
Weitere Nachforschungen: OK, so einfach geht es doch nicht, aber jetzt habe ich das Problem, dass ich mich nicht mehr anmelden kann, wenn ich einmal das Passwort einmal falsch eingegeben habe! (Vlt. liegt es auch daran, dass oben Beschriebenes gerade bei mir nicht mehr geht) -
in: Diffie Hellman - Austausch
geschrieben von toolz
Im Rahmen meines Verschlüsselungsprojektes habe ich bei meinen bisherigen Fortschritten erhebliche Zweifel und bin zu der Meinung gekommen, dass das Verfahren besser in Absprache mit anderen entwickelt werden kann. Zur sicheren Verschlüsselung fehlt mir nun nurnoch ein ebenso sicherer Schlüssel, weshalb ich mich am Diffie-Hellman-Schlüsselaustausch versuche.
Im Bezug auf große Zahlen habe ich in PHP aber leider kaum Erfahrungen gemacht, möchte aber auch nur äußerst ungerne fremde Bibliotheken auf den Server laden müssen, um mit eben solchen umgehen zu können. Das Speichern der Zahlen schaffe ich noch selbst, aber beim Berechnen einer Potenz mit einem Exponenten, der über 30 Stellen hat bin ich überfragt.
Weiß jemand, wie ich das am Besten realisiere? -
in: Linux Elementary - Grafikfehler
geschrieben von toolz
Seitdem ich mein neues Elementary OS auf den neuesten Stand gebracht habe sehe ich im File Manager bei der Verzeichnisstruktur hässliche Lücken zwischen den Ordnereinträgen (siehe Anhang). Ganz nebenbei schließt der Letzte auch nicht richtig ab - es sieht aus, als würden dort noch Einträge kommen...
Zuvor war das allerdings zusammengesetzt, also frage ich mich, wie ich das wieder rückgängig machen kann (ohne auf eine ältere Version umsteigen zu müssen). Hat jemand eine Idee, woran das liegt und was man machen muss, um es zu korrigieren?
Oben direkt über den Ordnern die weißen Lücken: http://s14.directupload.net/images/120621/chne7dfp.png -
in: Proportionalität gleichmäßige Verzögerung
geschrieben von toolz
Die negative Proportionalität ist zumindest in der Fachliteratur nicht gebräuchlich. Statt dessen verwendet man auch dort die Aussage, selbst wenn
. Im Sachverhalt der Proportionalität geht es wirklich nur darum, einen Zusammenhang der beiden Größen zu verdeutlichen. Wie genau dieser dann aussieht ist eigentlich egal (Ein Zusatz ist hier die Antiproportionalität). Willst du aber hervorheben, dass a negativ von b abhängt wird es jeder verstehen, wenn du
schreibst.
-
in: Kleines Linux gesucht
geschrieben von toolz
Also ich versuche mich momentan an Elementary OS, aber stoße auf ein kleines Problem:
Bei der Installation habe ich darauf geachtet, dass alles auf die freie Partition kommt (also auch GRUB), was nun dazu führte, dass ich in Windows den Booteintrag nachliefern muss. Lediglich habe ich keine Erfahrung im Umgang mit den Booteinträgen, weshalb ich mir das Programm EasyBCD zu Hilfe genommen habe - Dort kann ich allerdings die gewünschte Partition nicht als Träger von GRUB auswählen (bzw. wenn ich das mache und den Eintrag hinzufüge, steht dort anschließend meine Windowspartition anstatt der Linuxpartition)...
Hinweis: Windows gibt an, dass die Partition kein Dateiformat hat und 100% unbeschrieben sei.
Was kann ich also machen?