My Universe Blog » Entries Tagged as programming
Sudoko - solved!
Posted by André Mühlnikel at May 2, 2009 10:14 p.m.
Es hat mich einfach nicht in Ruhe gelassen … also habe ich einen Solver für Sudokus gebaut. Da ich aber „Ausprobieren“ nicht für „logisch erschließen“ halte, habe ich demonstrativ diesen Lösungsweg weggelassen ![]()
Wers ausprobieren möchte, kann hier sehr schön Beispiele finden und die Lösungen nachvollziehen – einfach dazu am Ende des Skripts das Log-Level auf 5 setzen, dann erhält man die detaillierte Finde-Systematik ausgegeben. Hier muss ebenfalls (da ich zu faul und unwissend in Bezug auf Python bin) der Dateiname der Input-Datei jeweils angepasst werden!
Ein paar Notizen zur Vorgehensweise:
- Quasi-Singles sind Werte, die innerhalb eines Blockes (also 3×3-Feldes) in nur einer Zeile oder Spalte zu finden sind, und somit in der restlichen Zeile bzw. Spalte ausgeschlossen werden können.
- Unknown Singles sind solche Felder, die nach Ausschluss aller durch Zeile, Spalte und Block wegfallenden Optionen nur noch einen möglichen Wert enthalten. Wurden sie allerdings auf diese Weise einmal erkannt, werden sie danach zu „Known Singles“, damit sie nicht immer wieder aufs neue verarbeitet werden und das Programm irgendwann terminieren kann.
- Single Options sind diejenigen Felder, die, obwohl sie selbst noch mehr als einen möglichen Wert zur Verfügung haben, innerhalb ihres Blocks oder ihrer Zeile/Spalte das einzige Vorkommen eines dieser Werte sind und somit zwingend auf diesen Wert festzulegen sind.
Alles klar? Fragen beantworte ich gerne (auch in den Kommentaren)! ![]()
No comments | Defined tags for this entry: programming, python, scripting, fun, Sudoku
NetBeans IDE for Python
Posted by Jesco Freund at April 5, 2009 12:45 p.m.
Python ist für mich eine der besten, wenn nicht sogar die beste und produktivste Programmiersprache überhaupt. Allerdings fehlt mir bisher für Python eine IDE, welche die Entwicklung mit Python genauso gut und mächtig unterstützt, wie etwa Eclipse oder Sun Studio dies für Java oder C++ tun. Für Windows gibt es mit der Wing IDE eine brauchbare (kommerzielle) Lösung; im FOSS-Bereich blieb bislang nur Pydev. Pydev ist zwar besser als ein einfacher Editor, aber alles andere als das gelbe vom Ei: Funktionen, die Pydev wirklich mächtig machen (etwa Code Completeion), sind nur in der kommerziellen Erweiterung Pydev Extensions enthalten, und auch sonst macht das Projekt in letzter Zeit eher den Eindruck, ein Lockangebot für kommerzielle Produkte von Aptana zu sein.
Seit einiger Zeit brodelt es allerdings in der NetBeans-Projektküche: Dort verfolgt man das ehrgeizige Ziel, nicht weniger als „the best integrated tool for programming in Python“ zu schaffen. Seit Anfang des Jahres steht eine Early Access Version der NetBeans IDE for Python (basierend auf NetBeans 6.5) zum Download bereit, und mit eben jener habe ich nun ein wenig herumgespielt. Sowohl unter Solaris 10 (Sparc) als auch FreeBSD 7.1 (i386) lässt sich die EA-Version problemlos „installieren“: während für Solaris tatsächlich ein Installer existiert, müssen sich FreeBSD-Nutzer mit dem „OS Independent ZIP“ begnügen, was aber auch kein Drama ist – einfach an eine beliebige Stelle im Dateisystem entpacken und bin/netbeans ausführen. Hierfür wird eine funktionierende Java-Umgebung vorausgesetzt – unter Solaris natürlich kein Thema, und unter FreeBSD funktioniert NetBeans einwandfrei mit dem Diablo JDK 1.6 aus den Ports.
Auch wenn der Swing-Look von NetBeans insgesamt etwas weniger gefällig ist als die SWT-Erscheinung von Eclipse, so braucht sich die EA-Version keinesfalls hinter dem etablierten Konkurrenten verstecken. Die Projektverwaltung ist mit Eclipse auf Augenhöhe, und auch der Klassen- und Funktionsbrowser ist recht ähnlich aufgebaut. Ebenfalls typisch für eine „große“ IDE ist die Aufgabenverwaltung und eine Werkzeugsammlung für Refactoring. Besonders punkten kann NetBeans gegenüber Pydev durch den integrierten Debugger inklusive Performance-Messwerkzeugen, eine Python-Konsole und Code Completion in der Editor-Komponente. Als besonderes Bonbon unterstützt NetBeans neben den klassischen VC-Systemen CVS und Subversion auch Mercurial – bei einer Python-IDE eigentlich naheliegend…
Natürlich hat NetBeans auch einige Schwächen, die an dieser Stelle nicht verschwiegen werden sollen: So nervt etwa die hohe Affinität zu Jython – an manchen Stellen muss man NetBeans schon mit sanfter Gewalt dazu überreden, auf den nativen Python-Interpreter zurückzugreifen. A propos Interpreter: NetBeans ließ sich mit keinem Trick dazu überreden, Python 3.0 in die Liste der verfügbaren Python-Plattformen aufzunehmen. Gerade für die Entwicklung neuer Projekte ist das schade, da es sich bei diesen besonders anbietet, von vornherein auf die neue Python-Generation zu setzen.
Alles in allem halte ich aber diesen ersten Wurf für bereits sehr gelungen und dem Platzhirsch Pydev mindestens ebenbürtig, in einigen Punkten sogar für deutlich überlegen. Man darf also auf die weitere Entwicklung gespannt sein…
No comments | Defined tags for this entry: Eclipse, FreeBSD, IDE, NetBeans, open source, programming, python, scm, Solaris
Herausforderung angenommen
Posted by Jesco Freund at March 27, 2009 12:01 p.m.
André hat es provoziert – was er mit Perl hinkriegt, muss ich mit Python doch auch hinbekommen
. Natürlich habe ich mich nicht damit begnügt, einen Abklatsch seiner Perl-Implementierung nach Python zu portieren – ein bisschen Optimierung musste schon sein. In Zeiten moderner Multicore-CPUs, so dachte ich, wäre es ideal, das Problem so zu formulieren, dass es parallelisiert abgearbeitet werden kann. Bei einem iterativen Algorithmus, dessen Iterationen auf die Ergebnisse der jeweiligen Vorstufen angewiesen sind, allerdings kein ganz triviales Unterfangen…
continue reading Herausforderung angenommen
No comments | Defined tags for this entry: algorithms, programming, Project Euler, python
Primzahlen und Faktorisierung
Posted by André Mühlnikel at March 14, 2009 12:26 p.m.
Dank projecteuler.net habe ich mal wieder angefangen, mich mit Perl auseinander zu setzen. Der größte Brocken bisher: Primzahl-Faktorisierung einer ziemlich großen Zahl. Nach ein paar ersten ziemlich erfolgversprechenden Versuchen, ein binäres Sieb_des_Eratosthenes zu bauen (also jede Zahl von 1 bis N wird durch ein Bit dargestellt - 0 = keine Primzahl, 1 = Primzahl), musste ich feststellen, dass das sehr schnell meinen Arbeitsspeicher sprengt (600 Mrd Bit = 75 GB), zumal das allermeiste davon nur 0en sind. Ziemlich unbefriedigend, also auf zur „Brute-Force“-Lösung des Siebes: man nehme alle bekannten Primzahlen (mindestens also „2“ als kleinste Primzahl) und probiere für jede neue Zahl aus, ob sie durch eine der Primzahlen teilbar ist. Das dauert aber UNENDLICH lange (jedenfalls fast). Also optimieren:
continue reading Primzahlen und Faktorisierung
No comments | Defined tags for this entry: open source, Perl, programming, Project Euler
Git – der Depp der Version
Posted by Jesco Freund at Feb. 28, 2009 9:50 a.m.
Bisher war Subversion das VCS meiner Wahl. Der zentrale Verwaltungsansatz hat mich nicht im geringsten gestört (im Gegenteil, ich finde es eher hilfreich, wenn zumindest an einer Stelle eine Master-Version existiert), und das Konzept der flexiblen Tags und Branches ist eine für mich durchaus einleuchtende Geschichte. Außerdem plagt mich natürlich ein für den Homo sapiens typisches Phänomen: Gewöhnung. Ich kenne die Subversion-Kommandos, weiß, wie man ein Repository einrichtet – kurz: die Arbeit mit Subversion ist mir in Fleisch und Blut übergegangen. Wechseln, umlernen, umgewöhnen, von vorne anfangen? Puhhhh…. ![]()
continue reading Git – der Depp der Version
3 comments | Defined tags for this entry: Git, open source, programming, scm, svn
Bilanz eines Wochenendes
Posted by Jesco Freund at Nov. 9, 2008 10:35 p.m.
Nachdem meine Freundin dieses Wochenende mit ihrer Taiko-Gruppe auf Achse war, habe ich kurzerhand mein Equipment (Notebook, Schlafsack, Senseo-Kaffeemaschine) eingepackt und bin bei André eingefallen. Anstelle von 48 Stunden Dauer-C&C Generals Zero Hour waren wir dieses Wochenende sogar richtig produktiv: über 40 Commits für unser jüngstes Software-Projekt RPG haben wir zustande gebracht (auch wenn die meisten davon Korrekturen von Irrtümern unsererseits jeglicher Art waren – oder Tribut an die angestrebte Plattform-Unabhängigkeit
)
Zum Ausklang gibt's jetzt standesgemäß Pizza (allerdings vom Lieferdienst, nicht aus dem Eisfach) und nebenher ein paar fällige Updates auf den Servern. Erholen kann ich mich ja morgen im Büro… ![]()
1 comment | Defined tags for this entry: C, programming, python, RPG
SPE – eine Alternative zu PyDev & Co
Posted by Jesco Freund at July 12, 2008 2:39 p.m.
Eine kostenlose, quelloffene, von Java und PyQT unabhängige IDE für Python – genau das ist SPE („Stani's Python Editor“). Das GUI basiert auf wxPython, einem Python-Wrapper für wxWidgets.
Die Editor-Komponente ist recht angenehm und erinntert mit Code Completion und Life Syntax Checking an Eclipse. Fein auch die integrierte Python-Shell, um einzelne Befehle oder Code-Schnipse zu testen oder das Ergebnis einzelner Operationen zu überprüfen. Ein weiteres Plus ist der integrierte PyDoc-Generator und die ausgefeilte Suchfunktion, die beim Refactoring recht nützlich ist. Nur schade, dass bisher keine VCS-Anbindung implementiert wurde…
2 comments | Defined tags for this entry: open source, programming, python, software
Admin Scripts online verfügbar
Posted by Jesco Freund at May 25, 2008 12:26 a.m.
Kein Unix-Admin kommt ohne das ein oder andere Shell-Skript aus – auch ich mache da keine Ausnahme. Für die im Laufe der Zeit entstandenen Skripte (hauptsächlich Bourne Shell) habe ich jetzt ein öffentlich zugängliches Subversion-Repository angelegt. Manche der Skripte sind zwar spezifisch auf meine Serverkonfigurationen ausgelegt, aber das ein oder andere ist sicherlich universell verwendbar oder kann leicht angepasst werden.
Wer mag, kann sich also gerne bedienen:
svn co http://svn.my-universe.com/Scripts/trunk Scripts
No comments | Defined tags for this entry: programming, scripting, server, svn
OpenMCP moved to Subversion
Posted by Jesco Freund at May 23, 2008 6:46 p.m.
The OpenMCP project has now moved into a publicly accessible Subversion repository, available at http://svn.my-universe.com/OpenMCP. So far no release has been tagged, so all current files can be found in the /trunk directory.
To gain a copy of the source code, you can use any Subversion client, e. g.
svn checkout http://svn.my-universe.com/OpenMCP/trunk
The already published development version of the OpenMCP Policy Daemon contains a bug concerning its reply behaviour towards the client. A fix to this issue has been applied to the source file in the repository, but no package has been created so far.
No comments | Defined tags for this entry: OpenMCP, programming
Tücken des Objekts
Posted by Jesco Freund at May 17, 2008 1:01 a.m.
Fast wäre er fertig gewesen, mein kleiner Policy-Daemon für Postfix. Der soll nämlich ergänzen, was Postfix out-of-the-box nicht kann: umfangreiche, empfängerabhängige kaskadierende Black- und Whitelists, die in einem DB-Backend abgelegt werden. Mit dem SocketServer-Modul von Python war auch fix ein kleiner Daemon zusammengeskriptet. Nach dem Praxistest jetzt die Ernüchterung: Postfix kann Daten sehr viel schneller rausjagen als ich per netcat. Bei meinen Versuchen wurde immer schön zeilenweise aus dem Buffer gelesen. Bei einem schnellen Kommunikationspartner kriege ich undefinierte Zustände bei einer festen Buffer-Länge, weil Teile einer Nachricht verschluckt werden, die nach dem Trennzeichen noch in die Queue geraten sind. Mist. Also morgen im ausgeschlafenen Zustand noch mal die Input-Routine überarbeiten…
No comments | Defined tags for this entry: programming, python

Content is subject to the conditions of the