SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Dienstag, 29. November 2011Richtige Verwendung von select()Merke: manchmal hilft Doku lesen erheblich. Ich habe gerade einen halben Tag danach gesucht, wieso eine pipe() zwischen zwei Threads eines Programms nicht funktioniert. Ich habe eine pipe, an deren lesendem Ende ein Thread mittels select() auf Befehle wartet. Dummerweise wollte bei folgendem Code select nicht zurückkehren: select(1, &fdset, 0, 0, 0) Irgendwie wollte das partout nicht zurückkehren, obwohl ich das Schreib-Ende des File-Descriptors beschrieben habe… Hm… Nach einigem Suchen habe ich die Doku nochmal genauer gelesen: nfds is the highest-numbered file descriptor in any of the three sets, plus 1. Tja, richtig lesen. nfds (der erste Parameter von select) ist nicht die Anzahl der Descriptoren im fd_set, sondern die Nummer des höchsten Descriptors plus eins. Dummerweise ist das Beispiel in der Doku mit fd=0 gemacht, so dass der höchste plus 1 gleich 1 ist (und damit gleich der Anzahl), was mich natürlich auf die völlig falsche Fährte gelockt hat. Naja, ein halber Tag versemmelt, aber wenigstens was bei gelernt. Fast wie Goethe… Dienstag, 27. September 2011Warum ich die Shell mag...Warum ich Linux/die Shell mag 200: eine gewisse Zeitrafferkamera hat gestern mal wieder beschlossen statt 1 Bild pro Minute 2 zu machen. Ungünstig, zumal die Bilder in unregelmäßigen Abständen gemacht wurden (eins bei 22 Sekunden und eins bei 40). Die Hälfte muss also weg. Tja, nur wie? Shell to the rescue: rm IMG_???{0,2,4,6,8}.JPG
Löscht alle Bilder mit geraden Nummern und löst damit das Problem zuverlässig. Dienstag, 19. Juli 2011Rasenmähen120 m² Wiese in 2 Tagen mit der Sense gemäht. Muskelkater, Sense kaputt (selbstgebastelter Ausleger gebrochen), nur 10% gemäht. Wiese - Markus: 1:0. Mist. Egal, am WE gibt's nen vernünftigen Sensenwurf und eine Dengelhilfe. Ich krieg die Wiese schon klein! In related news: die Holdeste und ich waren heute Rasenmäher kaufen... Mittwoch, 25. Mai 2011R.I.P. SpiritEin Jahr lang haben sie's versucht, heute war das letzte Mal: die NASA wird nicht mehr versuchen den Mars-Rover Spirit zu erreichen. Nachdem der ja nun schon vor zwei Jahren aufgrund technischer Probleme im Sand stecken geblieben war und man deswegen schon angenommen hatte, dass er Schwierigkeiten kriegt sich nach dem Mars-Winter wiederzubeleben, stellt man nun die Versuche ein und konzentriert sich auf die anstehende Curiosity-Mission im November. Das Durchhaltevermögen der Beteiligten dürfte sich auch aus dem außergewöhnlichen Erfolg von Spirit und seinem Zwilling Opportunity erklären: geplant für 90 Tage lieferte Spirit mehr als 5 Jahre Daten. Opportunity läuft immernoch. Da werden selbst die rationalsten Ingenieure sentimental und wollen die Hoffnung so schnell nicht aufgeben. Vielleicht findet ja in einigen Jahrzehnten bei einer Mars-Reise mal jemand den Rover und kann ihm ein gebührendes Denkmal setzen. Freitag, 22. April 2011Neuer Release des Logging-TemplatesIrgendwann vor langer, langer Zeit (laut Versionshistory mittlerweile 5 Jahre her) hatte ich mal als Fingerübung ein Logging-Template in C++ geschrieben, was sich anfühlen sollte wie std::cout. Ziel war den geneigten Programmierer vom Denken zu entlasten und ihm quasi std::cout-Debugging mit etwas mehr Möglichkeiten zu erlauben. Hat offenbar damals schon gut gepasst, kurz darauf kam nämlich die Fähigkeit zur Anpassung an verschiedene Multithread-Umgebungen via Policy-Klasse dazu. Dann lag das ganze erstmal 5 Jahre im Dornröschenschlaf, in denen ich es zwar hin und wieder genutzt habe, aber eigentlich keine neuen Fähigkeiten brauchte. Bis vor kurzem... Daher jetzt: tada! ein komplett neues Release, in dem sich so einiges geändert hat. Das Frontend an sich bleibt gleich (sprich: existierender Code sollte problemlos weiter kompilieren, es sei denn er macht was total dämliches und verwendet zweimal einen Log-Level in einer Nachricht). Im Hintergrund hat sich allerdings einiges getan. Erstmal wurde der Code etwas aufgeräumt, da sich dort von verschiedenen Experimenten Reste angesammelt hatten. Dann wurde das Handling der Loglevel komplett umgebaut um eine flexiblere Ausgabe nach unten zu ermöglichen. Hintergrund: ich brauche für ein Projekt gerade die Möglichkeit Daten ins Syslog auszugeben. Dazu muss der zugrundeliegende Ausgabestream aber das Log-Level wissen. Außerdem muss er zuverlässig wissen, wann eine Nachricht beendet ist. Beides stellt das Frontend jetzt sicher. Weil's so schön war habe ich gleich noch den passenden SyslogStream beigelegt, der das Loggingfrontend an syslog() anklemmt. Benutzung ist wie üblich relativ einfach:
#include <syslogstream.hxx>
use namespace Logging;
int main(int argc, char *argv[]) {
SyslogStream slog("TestLogger");
Syslogger logger(slog, LEVEL_INFO);
logger << LEVEL_INFO << "This an INFO message which has a number attached: " << 12345 << std::endl;
logger << LEVEL_WARNING << "This is a warning message." << std::endl;
return 0;
}
Dieser Code schreibt zwei Nachrichten unter dem Präfix TestLogger ins Syslog. Die Doku der Klassen gibt noch einige Informationen her, welche Eigenschaften man zusätzlich konfigurieren kann. Das Logging-Frontend kann dank std::ostream-Kompatibilität natürlich jedes Element ausgeben, welches auf einem ostream ausgegeben werden könnte. Der Code ist weiterhin header-only, braucht also keine Installation irgendwelcher Bibliotheken, sondern kann dan public-domain-Lizenz einfach ins eigene Projekt mit übernommen werden. Wer nett sein will: mich interessiert immer, wo der Code verwendet wird. Kurze Mail an mich wäre nett (hm... sollte ich vielleicht mal in die Lizenz schreiben...) Der Code ist mittlerweile umgezogen und liegt bei Bitbucket: https://bitbucket.org/namenlos/logging/ Sonntag, 17. April 2011Rollerderby in StuttgartDas Wochenende war mal wieder Ausflugsprogramm angesagt. Was sich halt so ergibt, wenn der Freundeskreis über die Republik verteilt ist. Diesmal war Stuttgart dran. Dank unseres Gastgebers hatten wir am Samstag das Vergnügen mal einer etwas ungewöhnlichen Sportart zuzusehen: dem Roller Derby. Das ganze ist erstmal recht simpel: eine ovale Bahn und zwei Mannschaften (heute meist weiblich) auf Rollschuhen, die sich versuchen gegenseitig zu überholen, blocken, umzurempeln und was nicht alles. In der Realität ist das ganze etwas komplexer: die Teams treten in Rennen von maximal 2 Minuten Länge (sogenannte Jams) gegeneinander an. Dabei sind 2x4 Spielerinnen im "Pack" zusammengefasst und starten zuerst. Hinter dem Pack starten in einem gewissen Abstand nun die beiden "Jammer". Deren Aufgabe ist es das Pack zu überrunden und dadurch Punkte zu sammeln. Der Jammer, der dabei das Pack zum ersten Mal überholt wird "Lead Jammer" und kann den Jam jederzeit abbrechen. So drehen die Damen nun ihre Runden und versuchen Punkte zu sammeln. Punkte gibt es dabei für jeden überrundeten Gegner (gern auch mehrfach). Die "Blocker" genannten Spielerinnen aus dem Pack dürfen nach gewissen – ziemlich komplexen – Regeln durch Rempeln und Blockieren die Jammer am Punktemachen hindern. Das ganze hat gefühlte 2000 Regeln, ist aber im praktischen Einsatz ganz witzig. Blaue Flecken inklusive. Wir hatten nun gestern das Vergnügen uns die Stuttgart Valley Rollergirlz gegen die Lincolnshire Bombers aus Lincoln in Yorkshire anzuschauen. Die ganze Sportart ist von der Aufmachung her so ein wenig auf "Coolness" getrimmt (ähnlich Snowboarden) mit lauter Musik und amüsanten Kampfnamen der Spielerinnen. Die Stuttgarter haben ihre Gäste vorsichtig ausgedrückt versägt. 142:34 Punkte. Der guten Stimmung hat das auf beiden Seiten keinen Abbruch getan. Dem Vernehmen nach wurde nach dem Match noch bis in die Puppen gefeiert. Damit man sich mal ein Bild davon machen kann hier mal drei Fotos von gestern: ![]() Das "Pack": die Spielerinnen, die versuchen müssen die Jammerinnen zu blockieren. ![]() Die Jammerin der Stuttgarter. Jammer sind an dem Stern auf dem Helm zu erkennen. An der Armhaltung des Schiris im Hintergrund sieht man, dass sie in der Runde Lead Jammer war, also das Recht hatte, die Runde abzubrechen. Die Damen tragen aus Sicherheitsgründen übrigens alle Mundschutz. Stürze sind vorprogrammiert und enden manchmal auch mit einem Ausflug ins Publikum. Meist aber wohl ohne größere Schäden. ![]() Hatten eine weite Anreise mit dem Bus hinter sich: die Lincolnshire Bombers aus Yorkshire, gesponsort von Motörhead. Sonntag, 27. März 2011Schönes Wetter nutzen...Nachdem sich heute der Wetterbericht zum Glück zum Positiven geirrt hatte war mal wieder ein klein wenig Fliegen angesagt. Nach ein paar Übungsrunden (man will ja nix kaputt machen) ging's mit der Holden nach Coburg Brandensteinsebene mit der Familie treffen. Sehr schön gelegener Flugplatz, direkt an der Veste. Leider hat sich außer Manus Oma von der Restfamilie keiner getraut mal eine Runde mitzufliegen. Haja, die wissen ja gar nicht, was sie verpassen... ![]() Die Holde und ich im Flieger auf dem Rückflug. ![]() Immer wieder schön, wenn man von Süden aus Pennewitz anfliegt: das Oberbecken des Pumpspeicherwerks Goldisthal. Mittwoch, 16. März 2011Urlaubsbilder EnglandDie Holde und ich waren letztes Jahr im September die Verwandtschaft in Yorkshire besuchen. Nach gar nicht allzu langer Zeit (und leider noch weit, weit vor den NZ'09-Bildern) ist das Album fertig. Für interessierte findet sich der öffentliche Teil der Bilder dort: http://pics.slash-me.net/ereignisse/england-2010/. Link zu den privaten Bildern für Familie und Beteiligte gibt's auf Anfrage. Sonntag, 20. Februar 20112x Faust in fünf MinutenWas man bei Youtube alles so findet... Zweimal Faust in fünf Minuten, völlig unterschiedlich, aber jedes für sich ziemlich geil: Hubert Burghardt erklärt Faust in 5 Minuten Beides definitiv sehenswert und für den Deutschunterricht geeignet. Sonntag, 30. Januar 2011screen für X-ProgrammeKennt wahrscheinlich eh schon wieder jeder außer mir, aber wer schonmal das Problem hatte, dass er gern ein X-Programm laufen lassen will und dann vielleicht noch auf einem anderen Rechner wieder drauf zugreifen, der sollte sich mal xpra anschauen. Wie screen das für die Konsole macht kann man mit xpra grafische Programme laufen lassen und später wieder an einen laufenden X-Server anklemmen. Geht (natürlich) auch von einem anderen Rechner aus via ssh. Macht sich sogar ganz bequem mit xpra attach ssh:user@host:display. Wieder was gelernt... Sonntag, 16. Januar 2011Python Mako und eigene FilterIch spiele gerade wieder ein wenig mit Mako rum um Webalben zu bauen. Nun kann man in Mako Filter verwenden um bestimmte Werte vor der Ausgabe durch das Template nochmal zu verändern. Die Bibliothek bringt da einige Standardfilter bereits mit, so auch bspw. entity, welcher Umlaute in einem Text durch ihr HTML-Entity-Äquivalent ersetzt. Alles wunderbar soweit, tja, bis ich diesen Filter mit einem eigenen mischen wollte, welcher BBCode interpretiert. Also ein Modul filters angelegt, im Template importiert um den entsprechenden Filter verwenden zu können und *bumm* kommt beim Rendern folgende Fehlermeldung: AttributeError: 'module' object has no attribute 'html_entities_escape' WTF? Nach längerem Raten und Grübeln kam ich drauf: offenbar werden diese Standardfilter von Mako aus einem Modul namens filters importiert, welches ich natürlich mit meinem eigenen beim Import überschrieben habe. Also das eigene Modul umbenannt und siehe da: funktioniert. Blöderweise gibt die Doku dazu irgendwie nichts her (oder ich hab's nur übersehen). Sonntag, 19. Dezember 2010Käse selbstgemachtNachdem ich hier schon längere Zeit nichts mehr geschrieben habe (die Zeit, die Zeit...) mal wieder was aus der Küche. Heute war mir mal experimentell zumute und so hab ich mich an ein Video erinnert, über das ich vor ein paar Tagen gestolpert bin: Wie man zu Hause in unter 5 Minuten Käse macht (Englisch). Gut, unter 5 Minuten sind's nicht gewesen, sondern eher so um die 15, aber Käse ist tatsächlich rausgekommen. Ich hab das ganze erstmal experimentell mit etwas weniger Milch gemacht:
Man erhitzt die Milch unter ständigem Rühren kurz unter den Siedepunkt (am besten mit einem Küchenthermometer messen so bis etwa 90°C). Es darf sich keine Haut bilden. Gibt man den Zitronensaft zu und köchelt das unter ständigem Rühren noch ein wenig weiter, dann gerinnt die Milch zu Frischkäse. Wenn sich die grünlich-gelbliche Molke und die weißen Frischkäseklümpchen gut getrennt haben gießt man die Molke durch ein sauberes Küchenhandtuch ab (evtl. ein wenig mit dem Löffel nachdrücken um die Flüssigkeit zu entfernen). In die Masse kann man jetzt den grob gemahlenen Pfeffer und das Salz unterkneten, das ganze in ein kleines Gefäß drücken (damit es Form bekommt) und kalt stellen. Wenn man alles richtig gemacht hat, dann sieht das ganze in etwa so aus: ![]() Frischkäse selbst gemacht Lecker, wenn auch noch etwas krümelig. Es gibt Rezepte mit mehr Fettanteil, die ich mal noch ausprobieren muss. Montag, 2. August 2010Boot fahren auf der WerraNachdem wir in Neuseeland ja schon mehrfach mit dem Kanu unterwegs waren wollten wir in der Richtung mal wieder was neues ausprobieren. Schon vor längerer (eigentlich viel zu langer Zeit) hatten wir eine Kanutour auf der Werra verschenkt. Heute war es dann endlich soweit: ich hab mir das Motorrad geschnappt, der Rest der Bande ist mit'm Auto los und wir haben uns in Henfstädt im Kanureich wiedergetroffen. Dort haben wir dann zwei Kanadier und ein Kajak ausgeliehen und los konnte es gehen. Die Werra führt zur Zeit Niedrigwasser, was einige Stellen etwas... interessant macht. Aufgesessen sind wir jedenfalls mehrfach. Die Füße mussen auch ins Wasser (merke: Gore-Tex Schuhe heißt Wasser bleibt drin), aber das ganze war äußerst lustig. Und nass. Und anstrengend. 15km sind wir flussabwärts gepaddelt durch schönste Natur (bzw. korrekterweise wohl Kulturlandschaft). Nach knapp 4 Stunden auf dem Fluss wurden wir dann wieder eingesammelt und konnten die Heimreise antreten. Morgen Muskelkater... ![]() Die "wilden" Stellen waren auch meist die flachen. Aufsetzen inklusive. ![]() So lässt sich's leben. Füße hoch und treiben lassen. Nur gut, dass es flussabwärts ging. ![]() Dafür darf später auch mal wieder gearbeitet werden. Ein gutes Gespür für den Fluss hilft bei der Vermeidung von Untiefen. ![]() Den Anblick hatte ich den größten Teil des Nachmittages: meine Holde von hinten, mehr oder minder koordiniert die Werra umrührend. Freitag, 25. Juni 2010Urlaub Elbsandsteingebirge - Zweiter TeilDas mit dem Netz ist in der Gegend so ne Sache... Handyempfang kann, muss aber nicht, WLAN im Hotel ist üblicherweise nicht vorhanden. Deswegen jetzt der zweite Teil der Bloggerei erst nach dem Ende und schon wieder zu Hause. Ein was muss ich noch vorweg erwähnen, weil ich's im letzten Artikel vergessen habe: die Fotos waren diesmal nicht von mir (stand ja drin: ich hab meine Kamera vergessen), sondern vom Küken. Danke dass ich die verwenden darf! Einer der für mich schönsten Teile der Wanderung ging von Hinterhermsdorf nach Krippen. Schön vor allem deswegen, weil er sich idyllisch einsam durch die Landschaft schlängelt. Da hat man zwischenzeitlich wirklich das Gefühl weit weg von jeder Zivilisation zu sein. Wir hatten unsere Wanderroute so variiert, dass sie nicht zu anstrengend werden sollte und wir trotzdem ein paar von den Schluchten zu sehen bekommen. Wir haben schon bei unserem ersten Urlaub im Elbsandsteingebirge eine sehr gute Wanderkarte gekauft gehabt (sehr schick vor allem, vieles sieht aus wie – oder ist sogar – handgezeichnet), die die Planungen sehr schön einfach gemacht hat. Danke der Karte haben wir uns kein einziges Mal verlaufen und hatten auch vorher immer einen guten Eindruck, was uns erwartet. Bis auf diesen einen Tag. Was in der Karte zwar drin war, aber nicht wirklich abzuschätzen wie steil das ganze ist, war der Aufsteig aus den Richterschlüchten. Treppen und Steine bis wir uns einige hundert Höhenmeter über einen Kamm gekämpft hatten nur um danach gleich wieder abzusteigen. Doch am Ende des Tages war die Tour geschafft und wir auch. In Schmilka haben wir uns mit der Fähre über die Elbe gewagt und sind dann mit einem tschechischen Triebwagen (danke nochmal an den Fährmann für den Tipp!) nach Krippen gefahren. Auf unsere Frage nach den Kosten hat der Triebwagenfahrer nur abgewunken. Auch nett… Die Unterkunft in Krippen hatte zwar einen lustigen Portier/Kellner und eine nette Bar im Gewölbekeller, aber leider kein Netz. Irgendwie hat man manchmal den Eindruck, dass viele Unterkünfte in der Gegend noch eher auf die älteren Semester eingerichtet sind und demzufolge vor größeren Probleme stehen, wenn plötzlich jemand mit Notebook reist. Aber das wird hoffentlich in den nächsten Jahren auch anders. Wir haben uns zwei Nächte in Krippen aufgehalten, weil am Dienstag ein Ausflug ans Prebischtor auf der tschechischen Seite des Elbsandsteingebirges anstand. Wir kannten das ja schon vom letzten Mal, haben es aber wieder genossen: ein wenig wandern, eine Fahrt mit einem Stocherkahn, der Aufstieg zum Tor (von der anderen Seite diesmal), die Aussicht… Hat offenbar auch unseren Begleitern gefallen. Den Rückweg haben wir diesmal mit dem Bus bestritten. Der Nationalparkexpress fährt grenzübergreifend die interessantesten Orte an und ermöglicht so auch mal das bequeme Abkürzen (deswegen waren's an dem Tag auch nur rund 11km Wanderung). Abends gab's dann im Hotel noch einen Grillabend mit lecker Forelle in Folie. Ein Traum. Nachdem mir Steffi erklärt hatte, wie man die Forelle unfallfrei und grätenarm isst, konnte ich nicht widerstehen. Der letzte Tag war noch mit etwas Kultur vollgepackt. Die Festung Königstein sollte es sein, mithin Europas größte Bergfestung. Der Weg von Krippen nach Königstein war (glücklicherweise – wir hatten in der Zwischenzeit einige Lädierte zu beklagen) bis zum frühen Nachmittag geschafft, den Aufstieg zur Festung haben wir uns dank des Festungsexpress gespart. Wir waren ja schonmal auf der Festung und trotzdem haben wir wieder neues entdeckt. Man kann ungelogen zwei Tage dort verbringen ohne sich zu langweilen. Abends sollte wieder Stadt Wehlen Station sein, von wo aus wir am nächsten Morgen über Dresden zurück in die Heimat wollten. Als krönenden Abschluss hatten wir uns entschieden mit einem Dampfschiff die Elbe runterzuschippern. Teuer, aber jeden Cent wert. Von den 10€, die das gekostet hat, hab ich für mindestens 8€ die Maschine besichtigt. Die ist nämlich zum Glück offen in Aktion zu sehen. Deswegen hab ich auch einen großen Teil der Fahrt unter Deck verbracht. Auch wenn man's erstmal nicht direkt sieht sind die Raddampfer echte Dampfschiffe. Der Kessel wird mit Diesel, statt Kohle beheizt, was leider den schönen Rauchfahneneffekt verhindert, aber eben auch die Belastung im Elbtal verringert (von Platzbedarf und Aufwand au dem Schiff mal ganz zu schweigen). Die drei riesigen Zylinder, die die Welle antreiben, die Schaufelräder… faszinierende Technik. Bin ich ja immer für zu haben. Abends noch das Spiel Deutschland gegen Ghana im Fernsehen. Wir sind weiter. SCHLAAAND! So, jetzt ein Wochenende erholen, Sachen auspacken, vielleicht mal wieder etwas auf zwei Rädern unterwegs sein. Montag ruft die Arbeit wieder. Für so einen Kurzurlaub ist das Elbsandsteingebirge doch wirklich schön. Nur das mit dem Netz müsste besser werden…
(Seite 1 von 25, insgesamt 368 Einträge)
» nächste Seite
|