Ein einfacher Taschenrechner

Ich habe vor einigen Wochen an einer Schulung zum Thema „Software-Entwicklung für Wissenschaftler“ in meinem Fach teilgenommen. Die Idee kam nicht von mir sondern von Winfried. Er hatte die Ankündigung der Veranstaltung gesehen und meinte, ich sollte mich sofort einschreiben und Programm #1 vorstellen. Seit einiger Zeit ist er der Meinung, ich sollte aktiv Werbung machen und an Workshops teilnehmen. Eine gute Idee, aber wie es bei Winfried häufig der Fall ist, hat er sich bei dieser Schulung nur einige Stichwörter gemerkt und nicht wirklich dafür interessiert, worum es eigentlich ging.

Ich habe mich laut seiner Anweisung angemeldet und angekündigt, dass ich gerne ein Tutorial über Programm #1 anbieten würde. Die Antwort war „gerne, aber es geht vor allem darum, über Software-Entwicklung zu erzählen, nicht um einzelne Programme vorzustellen“. Tja. Dann zu sagen, „ach nee, mache ich doch nicht“ wäre nicht gut angekommen. Eigentlich habe ich Physik studiert. Programmieren war im Studium Nebensache, und immer für bestimmte Projekte benutzt (Monte-Carlo-Simulation eines Spin-Systems, zum Beispiel). Ich dachte eher, ich habe mehr zu lernen, als ich lehren kann. Aber gut. Ich sollte über etwas erzählen, das ich gar nicht wusste, bevor ich mit meinem Projekt angefangen habe. Die Auswahl war groß, da ich Python erst kennen gelernt habe, als ich die Stelle angenommen habe.

Ich habe mich für den Entwurf von graphischen Nutzeroberflächen mit Python und Qt4 entschieden, am Beispiel von Programm #1. So etwas habe ich noch nie vorgetragen. Es hat mir viel Stress vorbereitet, und viele Stunden zu Hause gekostet, um Videos auf YouTube darüber zu sehen und selber endlich mal zu begreifen, wie PyQt4 funktioniert. Ich habe bis jetzt im Programm immer Änderungen gemacht, und da mein Vorgänger die ganze Arbeit mit der Oberfläche geleistet hatte, habe ich nicht viel Gelegenheit gehabt, mich mit dem Thema auseinander zu setzen (und es gibt ja Qt Designer). Ich habe dann ein sehr einfaches Tutorial vorbereitet, vom leeren Fenster bis zur Verlinkung von Signalen und Aktionen. Ich dachte schon, es wäre zu trivial für die anderen Teilnehmer. Eigentlich ist es zu einem der meist gefragten Tutorials geworden. Ich war überrascht. Meine Teilnehmer waren begeistert und haben tatsächlich etwas gelernt. Ich auch.

Zum Schluss habe ich als weiterführende Übung das Basteln von einem einfachen Taschenrechner vorgeschlagen, ohne Lösung. Hier ist mein Vorschlag, leider als Bild, weil man Code hier sehr schlecht indentieren kann. Er ist nicht perfekt, vor allem ist das Benutzen von eval() sicherheitstechnisch nicht empfohlen und führt zu ungenauen Ergebnissen, wie es unten benutzt wird, aber es ging darum, zu zeigen, wie man mit Signalen arbeitet.

calculator_code


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Werbeanzeigen

Wieder eine Woche vorbei

Ich bin in meinem Projekt voran gekommen. Zu langsam für mein Gefühl.

Montag: Weitere erfolglose Versuche, Qwt5 auf openSUSE 13.1 zu installieren. Die wöchentliche zweistündige Besprechung nimmt schon ein Viertel der theoretischen Arbeitszeit weg. Dazu kam, dass ich das Protokoll schreiben musste, was ich direkt danach erledigt habe. Feierabend habe ich früh gemacht, um meine Überstunden zu begrenzen.

Dienstag: Ich habe mich über matplotlib informiert, habe aber nicht versucht, es zu implementieren. Für Mittwoch musste eine Präsentation vorbereitet werden. Gerne hätte ich mich an dem Abend mit Martin getroffen, aber ich wusste, dass ich zu Hause noch lange arbeiten würde. Auch im Bett, bis etwa 01:00. Umsonst, es zählt als Arbeitszeit nicht. Uschi will davon nichts wissen, wenn man nicht vor Ort am Büro arbeitet. Nicht nachweisbar und unfair den anderen gegenüber, die sich einchecken müssen, so lautet seine Argumentation. Da ich in seiner Gruppe für einen anderen Arbeitgeber arbeite, bei dem keine Kontrolle der Arbeitszeit erfolgt, habe ich sowieso nichts zu sagen. Meine Stunden rechne ich nur, damit Uschi sehen kann, wann ich da bin. Er meinte, ich müsste das nicht tun, gleichzeitig beschwert er sich, wenn ich ihm nichts zeige.

Mittwoch: Präsentation optimiert. Uschi hatte mich darum gebeten, davor an einer anderen Veranstaltung teilzunehmen, die für mich interessant sein könnte. Es war doch nicht relevant für meine Tätigkeit. Da er selber anwesend war und es mir ausdrücklich empfohlen hatte, musste ich hin. Nach meiner Präsentation war es schon fünf. Ich habe mit Martin Feierabend gemacht und habe bei ihm geschlafen.

Donnerstag: Gestern. Martin war krank geschrieben, weil er eine OP hatte. Reste von einem Motorradunfall letztes Jahr. Ich habe ihn dahin begleitet, bevor ich zur Arbeit gefahren bin. Es war geplant, dass sein Vater ihn abholt, wenn er aus der Narkose wieder erwacht. Er hat bei ihm die folgende Nacht verbracht. Muss ich erklären, dass ich nicht hundertprozentig konzentriert war? Immerhin habe ich meine Tests auf Ubuntu endgültig abgeschlossen. Ich muss noch nachdenken, bevor ich mit openSUSE weiter arbeite.

Freitag: Mein IT-Kollege hat heute mit Uschi geredet. Ich habe ihn selber nicht gesehen, aber er meinte, er wird sehr ungeduldig. Scheiße. Ich weiß, wie Uschi explodieren kann, ich habe es bei den anderen Kollegen schon erlebt. Am Montag haben wir wieder unsere Gruppenbesprechung. Ich fürchte, was ich zu berichten habe wird nicht reichen. Ich wollte mit Scientific Linux weitere Versuche machen. Wie wär’s, Qt5 statt Qt4 zu benutzen? Kann ich leicht wechseln? Ein Versuch ist es wert, da es noch kein Qt4.8.6 für Maverick gibt, aber dafür Qt5.2.0. Was mich bis jetzt davon abgehalten hatte, war, dass mein IT-Kollege es ursprünglich für keine gute Idee hielt. Nun, irgendwie muss ich die Partition mit Scientific Linux aufs Versehen überschrieben haben. Erneut installiert. Grub ist aus einem mir unbekannten Grund verschwunden, aber der Größe der verfügbaren Platte nach zu beurteilen, habe ich nicht die anderen Partitionen überschrieben. Das hätte mir noch gefehlt. Updates. Das hat alles so ewig gedauert. Kurz nach acht habe ich mein Zimmer verlassen. Zehn Stunden gearbeitet. Ich habe kurz mit Martin telefoniert. Er wollte sich nach einem Folgetermin beim Arzt melden und hatte es nicht getan, ich hatte mir schon Sorgen gemacht. Morgen gehe ich zu ihm. Nach dem Sport. Den Stress will ich nicht mitnehmen.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Dienstag

Mir geht’s schon viel besser. Das hätte ich nach heute Nacht nicht erwartet. Mit Kopfschmerz gegen elf ins Bett, um halb drei aus irgendeinem Grund wieder wach. Unruhig. Ständig gewälzt. Um halb sechs habe ich noch den Wecker geschaut. Um sieben hat er mich plötzlich aus einem heißen lesbischen Traum gerissen. Am frühen Morgen nach langer Schlaflosigkeit sind meine Träume immer sehr merkwürdig.

Als ich auf dem Weg zur Arbeit in die Straßenbahn eingestiegen bin, war Winfried auch drin. Er wohnt ein bisschen weiter weg auf der gleichen Linie. Wir haben uns während der Fahrt über die Entwicklung meines Projektes unterhalten. Wenn Uschi nicht da ist, übernimmt er ja seine Funktion als Chef. Ich habe wieder im Büro meiner Kollegen gesessen und versucht, mein Programm auf einer frischen Installation von openSUSE 13.1 zum Laufen zu bringen. Vergeblich. Qwt5 kann nicht gefunden werden, obwohl ich alle Pakete installiert habe. Google hat mich im Stich gelassen. Die Kaffeemaschine hat erneut gestreikt. Martin war wegen eines Termins den ganzen Vormittag nicht da. Er ist kurz vor der Mittagspause angekommen. Mittags waren wir nicht alleine. Ich bin dafür mit ihm nachmittags im Labor geblieben, aber natürlich ging’s primär um die Arbeit. Keine süße Zärtlichkeit wie am Wochenende. Um fünf war er schon weg, um zum Sport zu gehen. Mist.

Nach weiteren erfolglosen Versuchen mit Qwt5 bin ich zum Fitness-Studio gegangen. Mein Training lief super. Zwei Stunden, wie immer. Ich werde beim nächsten Mal das gleiche machen, aber es wird danach wieder Zeit, einige Gewichte zu erhöhen, damit es anstrengend genug bleibt. Ich habe fast die 70kg verlassen. Das Gewicht hatte ich ewig nicht mehr erreicht, obwohl ich nicht besonders auf meine Ernährung aufpasse. Döner-Box mit Pommes gibt’s relativ häufig. Selbst als ich vor drei oder vier Jahren täglich trainiert hatte, vor meinem Ischias-Problem, war ich nie unter 74kg gekommen. Ich muss zum Arzt gehen, um meinen Zustand prüfen zu lassen. Ich habe seit dem Sommer zu schnell abgenommen, und ich erinnere mich an mein Diploma-Jahr, als ich wegen der ganzen Paukerei super dünn geworden war und den Sommer danach mit Eisen- und Magnesium-Tabletten verbringen musste, weil erhebliche Mängel durch eine Blutspende zufällig ans Tageslicht gekommen waren.

Aber jetzt fühle ich mich toll. Das Training hat Spaß gemacht. Mein Ischias verhält sich fast wieder, als ob nie etwas gewesen wäre. Morgen gibt’s ein enges Kleid mit Pumps. Vielleicht kann ich Martin überzeugen, etwas am Abend zu unternehmen. Ohne dass meine (deutlich ältere) Kollegin Mieke es mitbekommt. Ich mag es nicht, wie sie sich manchmal mit ihm verhält, vor allem, da sie sich vor kurzem von ihrem Mann getrennt hat. Als ich das letzte Mal mit Martin zum Weihnachtsmarkt verabredet war, hatte sie es irgendwie erfahren und wollte sich einmischen. Etwas hatte sie doch im letzten Moment daran gehindert. Es war ein bisschen der Grund, warum ich zum Labor mit ihm heute Nachmittag gegangen bin, da er zum ersten Mal dort arbeitet und sie ihn vorher einweisen musste. Ich habe selber nie im Labor etwas gemacht, ich konnte dadurch meine Absicht gut tarnen. Vielleicht bilde ich mir nur etwas ein. Mit mir verhält sie sich auch überfreundlich.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Maverick & PyQt…

Keine Ahnung, wie das gehen soll. Eins weiß ich, mir hat’s gereicht.

Am Anfang hörte es sich relativ harmlos an. Uschi wollte, dass ich die Installation meines Programms auf seinem Mac teste. Meine bisherige Erfahrung mit Mac-Rechnern: Ich habe die schon mal aus einem Schaufenster im Apple-Laden gesehen. Ich habe für mein Programm mit Python2.6 und PyQt4 auf Linux gearbeitet. Dass einige Sachen anders sein würden und ich viele Fehler auffangen sollte, wusste ich. Was mir nicht klar war, ist die Tatsache, dass PyQt4 auf Uschi’s Mac nicht installiert ist. Kein großes Problem, dachte ich. Schließlich habe ich zu Hause auf meinem Windows 7 Rechner ohne Problem aus einem Installer PyQt4 bekommen.

Der Hacken ist, dass es für Mac keinen Installer gibt. Anweisungen zur Installation habe ich auf Internet gefunden, die mich immer mehr verwirrt haben. Um PyQt installieren zu können, braucht man SIP. Ich hatte bisher von SIP noch nie was gehört. Ok, SIP installiert, dann PyQt4… Ach nee, Qt gibt’s doch gar nicht auf dem Rechner! Da fiel Uschi auf, dass er für die Installation von Qt noch Teile von Xcode brauchte. Ich habe nichts gesagt, keine Ahnung, wovon er redete. Ich habe ihn diesen Teil installieren lassen (2GB Download immerhin), dann haben wir Qt5.1.1 installiert, dann SIP4.15.4, dann die ziemlich letzte Version von PyQt, und es hat nicht funktioniert. Um zu diesem Ergebnis zu kommen, haben wir fast zwei Stunden gebraucht.

Da Uschi heute unterwegs ist, meinte er, die Gelegenheit wäre perfekt, damit ich alleine an seinem Mac arbeiten könnte, um PyQt zu installieren. Seit der Mittagspause habe ich an seinem Rechner gesessen. Ich habe ziemlich alles probiert, was mir durch den Kopf gegangen ist. Verschiedene Versionen, mit --arch x86_64 oder --arch i386, Qt4, Qt5…

  • Qt5.2.0 beta + PyQt4.10.4: Fehlermeldung /Library/Python/2.7/site-packages/PyQt4/QtCore.so: No such file or directory beim sudo make install (ich habe inzwischen Administratorrechte bekommen)
  • Qt4.7.3 + PyQt4.10.4: Ich war begeistert, es gab beim sudo make install keine Fehlermeldung, selbst wenn ich beim make jede Menge Warnungen über die nicht unterstützte Mac OS X Version (Maverick) gesehen habe. Aber als ich dann meinen Programm laufen ließ: Traceback bei from PyQt4.QtGui import *, mit der Beschimpfung ImportError: dlopen(/Library/Python/2.7/site-packages/PyQt4/QtCore.so, 2)
  • Ein Versuch mit einer 32-bits Architektur: mach -o, but wrong architecture
  • Qt4.6.4 + PyQt4.10.4: Am configure.py ist es schon gescheitert: Error: Failed to determine the layout of your Qt installation
  • Qt4.8.4 oder Qt4.8.5 + PyQt4.10.4: wieder die ImportError Meldung
  • Irgendein Build von Qt5.2.0 beta + das letzte Snapshot von PyQt5.2: SIP konnte beim sudo make install nicht gefunden werden (ich habe mich nicht darüber gefreut, dass die Fehlermeldung nach dem make kam, der schon 10mn braucht)
  • Statt python2.7, habe ich auch python2.6 versucht: ImportError

Das einzige, was ich nicht geändert habe, war die Version von SIP. Jetzt ist es fast neun, ich sitze immer noch im Büro und habe tierisch Hunger. Schnauze voll, ich gehe nach Hause. Warum soll es eigentlich mein Job sein, wenn wir im Team einen IT-Ingenieur haben? Schließlich habe ich Physik studiert, nicht Informatik.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.