Archiv der Kategorie: Computer

Ich verliere den Glauben an den Rechtsstaat

Tja, jetzt ist es wohl durch, das Internet-Zensur–und-Überwachungsgesetz. Die Koalition hat ziemlich geschlossen dafür gestimmt, die Opposition ziemlich geschlossen dagegen. Damit sind die beiden großen Parteien für mich unten durch.

Interessant fand ich in diesem Zusammenhang das Geständnis der Regierung, dass sie eigentlich gar keine Ahnung von der Materie hat und sich weder mit den Zahlen zu Kinderpornografie noch mit den Sperrlisten anderer Länder groß befasst hat — dazu ein gehässiger Blogeintrag bei der Verlorenen Generation.

Jetzt ist nur die Frage, warum so viele Abgeordnete für diesen gefährlichen Unfug gestimmt haben. Wurden die alle so schlecht informiert? Haben sie sich nicht getraut dagegen zu stimmen, weil sie sonst mit Kindervergewaltigern in einen Topf geworfen werden könnten? Wollen sie vielleicht unter der Hand tatsächlich den totalen Überwachungsstaat? Oder haben die alle einen Alien-Parasiten im Hirn, der sie fernsteuert?

Advertisements

Neulich, im Spam-Ordner…

„Fur 2 Wochen bin ich auf 10 Pfund abgemagert!“

Nee, is klar. Sogar als Skelett wiegt man mehr als zehn Pfund. Und ich frage mich, was nach den zwei Wochen passieren soll. Kommt man dann wieder auf ein annähernd normales Gewicht?
Da fällt mir diese Killer-Diät ein: „Dieses Mittel steigert ihren Stoffwechsel extrem, Sie kriegen über 42 Grad Fieber, die Kalorien schmelzen nur so dahin — nach ein paar Tagen setzt dann sehr schnell der Gewichtsverlust ein…“

Sudoku

In den Osterferien bin ich endlich dazu gekommen, mein kleines Sudoku-Lösungsprogramm zu schreiben, und es funktioniert schon in der jetzigen Version ausgezeichnet. Bisher tut es nichts weiter, als für jedes Kästchen im Sudoku eine Liste der noch möglichen Zahlen zu verwalten: jedes Mal, wenn eine neue Zahl irgendwo in ein Kästchen eingetragen wird, wird diese Zahl in allen Kästchen derselben Zeile, derselben Spalte und desselben Blocks aus der Liste entfernt. Das ist das Hauptprinzip.

Wie hilft mir diese einfache Listentabelle* die Lösungszahlen zu finden?

Naja: zum Einen kann ich alle Kästchen durchlaufen und mir ihre Listen anschauen. Wenn ich eine Liste finde, die nur noch eine Zahl enthält, dann ist in diesem Kästchen auch nur noch diese eine Zahl möglich, weil alle anderen Lösungen schon in andere Kästchen in Zeile, Spalte oder Block eingetragen worden sind. Diesen Treffer trage ich ins Kästchen ein (und aus den Listen drumherum aus), und dann kann ich schauen, ob ich noch weitere eindeutige Listen finde.
Was mache ich, wenn es irgendwann keine eindeutigen Treffer mehr gibt, weil sämtliche Listen mehrere mögliche Lösungszahlen enthalten? Dann kommt die zweite Methode ins Spiel: ich gehe alle Zeilen, Spalten und Blöcke durch und schaue, ob hier (in Zeile/Spalte/Block) eine Zahl in nur einer Liste vorkommt. Das entsprechende Kästchen ist dann die einzige Möglichkeit, diese Zahl in dieser Zeile ( oder Spalte oder Block) legal unterzubringen. Treffer eintragen, Trefferzahl aus Anliegerlisten streichen, weiterschauen.

Wie gesagt: das funktioniert ausgezeichnet. Bisher habe ich noch kein Sudoku gefunden, was ein Skript mit diesen beiden kleinen Funktionen nicht knacken konnte. Es funktioniert sogar so ausgezeichnet, dass ich hochgradig irritiert bin, weil ich beim Von-Hand-Lösen häufig noch einen weiteren Algorithmus verwenden muss, um Mehrdeutigkeiten aufzulösen. Bedeutet das, dass ich bisher beim Testen nur irgendwelche Popel-Sudokus gefunden habe und seither einfach keine richtig kniffligen mehr in der Zeitung stehen, oder bedeutet das, dass ich beim Von-Hand-Lösen dauernd Sachen übersehe und Flüchtigkeitsfehler mache?

Grmpf.
Ich gehe bis auf Weiteres erstmal davon aus, dass Sudokus seit den Osterferien einfacher geworden sind.
;-)

Blöde Smilies in Foren

Manchmal sollte man diese Smily-Bildchen bei Foren standardmäßig ausgeschaltet lassen — zum Beispiel bei Programmierforen:

ofstream_smily

Supersichere Internetfilter

27 Sekunden, Frau von der Leyen — 27 Sekunden!

Das ist doch alles nur, Verzeihung, eine große Verarschung. Man schießt mit der großen Zensur-Kanone auf das Internet und beklagt wortreich die Opfer, die von der Normalbevölkerung nunmal gebracht werden müssen, während die Kinderporno-Verteiler weiter fröhlich Festplatten rumschicken. Vom Standpunkt des Kinderschutzes albern, vom Standpunkt des Eingriffs in die Informationsfreiheit gefährlich.

(über Herrn Vetter)

Organisierte Kriminalität = Terror?

Laut Heise-Newsticker möchte BKA-Chef Ziercke den Bundestrojaner jetzt auch gegen Computerkriminalität und organisierte Kriminalität einsetzen. Das ging schnell. Ich hatte ja mit mir selber gewettet, dass es kein Jahr dauert, bis die ersten Forderungen laut werden, auch die Rechner von Mafiosi / Crackern / Kinderpornografen / Hooligans / Steuerhinterziehern / Ladendieben / Langhaarigen / Bundestagsabgeordneten mit Überwachungssoftware verwanzen zu dürfen. Auch für die Leute mit den Schlapphüten und ihre gesetzlichen Befugnisse gilt: „Ein jeder Wunsch, wenn er erfüllt, kriegt augenblicklich Junge.“

Daher war es ja zu erwarten, dass die ausnahmsweise gelegentlich unter Umständen im Extremfall und auch ganz bestimmt nur von einem Richter genehmigteQuellen-TKÜ“ irgendwann mal nicht nur gegen Terroristen und Staatsfeinde eingesetzt werden soll, sondern auch einfach so gegen gewöhnliche Nullachfuffzehn-Straftäter (oder auch nur -verdächtige). Die Richtung ist klar — aber dass man sich so eilig auf den Weg machen würde, hätte ich denn doch nicht gedacht. Vermutlich fürchtet man, dass das Verfassungsgericht einem das neue Spielzeug bald schon wegnimmt, und möchte ganz schnell noch was damit anstellen.

Immerhin hat Ziercke gewartet, bis Köhlers Unterschrift unter dem Gesetz trocken war, bevor er anfing, seine Befugnisse aufzubohren. Trotzdem: Chapeau, Herr Ziercke, das ging schnell!

Darling, why don’t you just look at the std::map?

Ich hasse es, STL-Container debuggen zu müssen.

In Microsofts Visual Studio kann man sich ja im Debugger recht schön Element für Element den Inhalt einer std::map, eines std::sets oder eines std::vectors anzeigen lassen. Dummerweise kenne ich keine einfache Möglichkeit, sich die Speicherstelle anzeigen zu lassen, an der ein Element oder die size dieses Containers liegt, um auf diese Speicherstelle einen Breakpoint zu setzen, der mich alarmiert, wenn sich da was ändert.

Beispiel: ich habe eine std::map von Daten-Varianten, die ihrerseits eine std::map verschiedenen Ressourcen enthalten, die ihrerseits eine std::map von Kapazitätsobjekten dieser Ressourcen enhalten, die ihrerseits eine std::map von den eigentlichen Kapazitätswerten enthalten. Irgendwo, irgendwie, irgendwann gehen mir manche dieser std::maps mit Kapazitätswerten kaputt. Jetzt würde ich gerne herausfinden, an welcher Stelle im Programm das passiert, und dazu einen Daten-Haltepunkt auf der size dieser std::map anlegen. Das wäre schön praktisch: ich lasse das Programm laufen, und irgendwann, *blink*, meldet sich der Debugger, weil die Größe meiner std::map plötzlich bei drölfzig Milliarden liegt statt bei, sagen wir, 42.
Guter Plan.

Um sich den Speicherort ausgeben zu lassen, an dem man diesen Breakpoint setzen kann, muss man aber solche Verrenkungen unternehmen wie

&(m_pGanttViewCtrl->m_varMan
->m_variants._Myhead->_Left->_Myval.second
->m_pRessourcen->m_resMap._Myhead->_Right->_Myval.second
->m_pResKapazitaeten->m_capacities._Mysize)

womit der Debugger das erste Element der m_variants-map nimmt, dort dem Ressourcenpointer in seine m_resMap folgt, dort (in diesem Beispiel) das letzte Ressourcen-Element rausgreift, von dem er sich den Kapazitätenpointer und dessen m_capacities-map geben lässt, in der er dann _Mysize findet, wovon er sich schlussendlich die Speicherstelle ausgeben lässt.

Heute nacht habe ich mich in verschachtelten STL-Containern verlaufen, und alle waren knallbunt und riesengroß und enthielten jeweils noch ein ganzes Containerschiff voller Container, und die waren auch alle knallbunt und riesengroß und enthielten jeweils noch ein ganzes Containerschiff voller Container, und so weiter, und alle sollten sofort entladen werden, und ich musste doch noch was finden, aber ich wusste nicht mehr, was, und die Zeit drängte so und ich konnte es nicht finden, ich wusste ja nicht, wo es war, und dann — dann klingelte der Wecker.