Donnerstag, 30. Oktober 2014

Erst Upgrade, dann Neuinstallation - von Ubuntu 12.04 nach 14.04

Letztes Wochenende war es soweit: das Update von Ubuntu 12.04 auf 14.04 stand auf dem Laptop an, den ich beruflich nutze (ein Lenovo T410). Die Prozedur ist ja nicht weiter schwierig und z.B. auch im Wiki von ubuntuusers.de beschrieben.

Dank schnellem Internetzugang ging das ganze auch recht zügig von statten und das Upgrade lief problemlos und fehlerfrei durch.

Nach dem Reboot lief auch alles rund, also alles gut. Dachte ich zumindest. Beim ersten Starten von Empathy unter Trusty war die Darstellung der Chats auf die Standardansicht zurückgesetzt, besser gefällt mir aber eine andere die Darstellung.

Kein Problem, kann man ja umstellen. Nur: im Empathy-Fenster fehlte das komplette Menü "Empathy", welches auch den Menüpunkt "Einstellungen" enthält. Da ich auf meinem privaten Laptop aber schon länger Ubuntu 14.04 installiert habe war ich mir sehr sicher, dass das Menü normalerweise da ist. Hm...

Nun, es gibt schlimmeres, von daher erst Mal weiter gemacht. Aber dieses Phänomen wollte dann später doch untersucht werden. Also mal testweise den Editor "gedit" gestartet. Alle Menüpunkte vorhanden, aber im Menü "Bearbeiten" fehlte auch hier der Punkt "Einstellungen". Das gleiche auch in Rhythmbox - der Menüpunkt zum erreichen der Einstellungen fehlt ebenfalls.

Da mir so gar nicht danach war, diesen Fehler in den Untiefen des Systems zu suchen, habe ich kurzerhand die Installations-DVD heruntergeladen, die wenigen Daten, die noch nicht gesichert waren, gesichert und dann Ubuntu 14.04 neu installiert.

Das lief - wie nicht anders zu erwarten - problemlos und das neue System war jetzt wirklich einsatzbereit. Inklusive der Einstellungs-Menüs, die sind jetzt wieder vorhanden.

Die Neuinstallation ist für mich übrigens nicht weiter tragisch, da ich auf dem beruflich genutzten Laptop quasi ein "Vanilla-Ubuntu" (=keine Anpassungen) nutze. Ich habe zusätzlich nur ein paar Pakete aus den offiziellen Quellen (Apache, MySQL, CouchDB) und ein paar Python-Module installiert, sonst nichts. Und die Dateien im persönlichen Ordner (Musik, Code, Bilder, Dokumente für die Arbeit) werden so wie so regelmäßig gesichert.

Wer das gleiche Problem auch schon hatten und eine Lösung ohne Neuinstallation kennt, der kann dies gerne als Kommentar zu diesem Blogbeitrag posten.

Samstag, 18. Oktober 2014

Python: ListFlowables in ReportLab

ReportLab ist die wohl leistungsfähigste Bibliothek für Python, wenn es um das Erzeugen von PDF-Dateien geht. Von High-Level Zugriffen via Platypus (=Page Layout and Typography Using Scripts) bis zu Low-Level mit direktem Zugriff auf den Canvas bietet ReportLab alles.

Allerdings hat es doch bis zu ReportLab Version 2.6 (erschienen im Oktober 2012) gedauert, bis das direkte Erzeugen von nummerierten und unnummerierten Listen möglich war. Dies war zwar vorher prinzipiell auch möglich, aber nur über Umwege (z.B. bei unnummerierten Listen durch das manuelle hinzufügen eines Bullet Points vor dem Text).

Mit dem seit ReportLab 2.6 vorhandenen Flowable namens "ListFlowable" geht das aber wesentlich einfacher.

Neulich, bei der Überarbeitung eines meiner älteren Python-Skripte, welches auch ReportLab einsetzt, habe ich auch auf diese Flowable umgestellt.

Da die Doku von ReportLab zu diesem Thema - leider - etwas dünn ist, habe ich hier in diesem Blogebeitrag mal ein paar Sachen dazu aufgeschrieben.

Grundsätzlich ist die Sache recht simpel. Nach dem Import der benötigten Module erstellt man ein ListFlowable, welches die Punkte der Liste als ListItems enthält. Der Quelltext für eine Liste mit drei Punkten sieht so aus:

from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A4
from reportlab.platypus import Paragraph, SimpleDocTemplate, ListFlowable, \
                               ListItem

styles = getSampleStyleSheet()
style = styles['Normal']
story = []

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListItem(Paragraph('spamegg', style))])
story.append(t1)
doc = SimpleDocTemplate('testdoc.pdf', size=A4)
doc.build(story)

So wird eine nummerierte Liste erzeugt, der Standard des ListFlowables, wenn keine weiteren Vorgaben gemacht werden.

Möchte man eine unnummerierte Liste erzeugen, muss dem ListFlowable das Argument bulletType und start mitgegeben werden:

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListItem(Paragraph('spamegg', style))],
                   bulletType='bullet',
                   start='circle')

Möchte man statt Kreisen als Bullet Points z.B. Quadrate haben, dann ersetzt man einfach start='circle' durch start='square'.

Wer aus den obigen Beispielen ein PDF generiert wird feststellen, dass sowohl die Zahl als auch die Bullet Points ziemlich groß sind, größer als der Text, formatiert mit dem Beispiel-Stylesheet aus ReportLab. Fügt man noch das Argument bulletFontSize hinzu, gefolgt von der gewünschten Schriftgröße (also z.B. bulletFontSize=8), dann werden Schrift bzw. Bullet Points in der angegebenen Schriftgröße dargestellt.
Alternativ kann man für unnummerierten Listen auch folgendes angeben: start='bulletchar'. Dann wird als Zeichen standardmäßig ein kleiner Punkt (HTML: ·) verwendet.

Bei nummerierten Listen kann aber ReportLab aber nicht nur mit "normalen" Zahlen zählen, sondern auch:
bulletType='i' # römische Zahlen
bulletType='a' # Zählung: a, b , c, ...
bulletType='A' # Zählung: A, B, C, ...

Mit dem Argument start kann  man den Beginn der Zählung bei nummerierten Listen den Beginn der Zahlung festlegen. bulletType='A', start='10' würde z..B. die Zählung der Liste bei J starten lassen.

Weiterhin werden standardmäßig alle Listen linksbündig ausgerichtet. Möchte man die Listen gegenüber dem Text etwas einrücken, dann muss man die für die Aufzählungszeichen und den zugehörigen Text separat machen, wie z.B.:

p1 = Paragraph('etwas Text', style)
t1 = ListFlowable([ListItem(Paragraph('foo', style), leftIndent=25),
                   ListItem(Paragraph('bar', style), leftIndent=25),
                   ListItem(Paragraph('spamegg', style),leftIndent=25)],
                   bulletType='bullet',
                   start='bulletchar',
                   leftIdent=10)
story.append(p1)
story.append(t1)
story.append(p1)

Und das ListFlowable kann natürlich auch verschachtelt werden, für verschachtelte Liste. Eine Liste mit zwei Ebenen sieht z.B. so aus:

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListFlowable([ListItem(Paragraph('spam', style)),
                                 ListItem(Paragraph('egg', style))],
                                 bulletType='a'),
                   ListItem(Paragraph('more', style))])

Ein paar weiter Tipps zum ListFlowable und dessen Formatierungsmöglichkeiten gibt es auch in einem Thread bei stackoverflow.

Dienstag, 29. Juli 2014

Bob Mould "Beauty & Ruin" - Rezension

Am 3.6.2014 war es mal wieder so weit: Bob Mould, legendärer Frontmann von Hüsker Dü, hat sein 13. Studioalbum namens "Beauty & Ruin" veröffentlicht.

Darauf enthalten sind 12 Tracks mit einer Gesamtspielzeit von 36 Minuten. Nach dem letzten, sehr guten Release "Silverage" aus dem Jahr 2012 ist es spannend zu sehen, ob Bob Mould nochmals so ein fulminantes Album abliefern kann.

Der erste, spontante Eindruck meinerseits beim 1. Lied: "Hm, klingt ja wie Sugar" (was ja keineswegs schlecht ist). Musikalisch schwankt das ganze Album dann immer zwischen Bob Mould und Sugar, wobei auf dem Album auch zwei, drei ruhiger Stücken enthalten sind.

Insgesamt ist das alles aber sehr gut zu hören und auch das ganze Album ist in sich sehr "rund". Aber: das Album hinterlässt keine bleibenden Erinnerung. Weder positiv noch negativ. Während bei "Siverage" eine Vielzahl der Lieder im Ohr bleiben, ist dies bei "Beauty & Ruin" nicht so.

Nichts desto trotz macht jeder neue Hördurchgang Spaß und langweilig wird's auch nicht. Nur die Nachhaltigkeit fehlt. Von daher ein sehr gutes und solides Album von Bob Mould, was absolut hörenswert ist. Aber auch kein echtes Highlight.

Sonntag, 29. Juni 2014

Mair 1 Festival 2014 2. Tag - Risk it!, Comeback Kid, Hatebreed

28.6.2104, 2. Tag des Mair 1 Festivals 2014. Nachdem der 1. Tag schon ziemlich gut war, waren die Gründe für den Besuch am 2. Tag die anstehenden Auftritte der Bands Risk it!, Comeback Kid und Hatebreed.

Leider war an diesem Tag das Wetter schlechter, es gab mehr Regenschauern. Immerhin war es trocken, als ich gegen 20.30 Uhr auf dem Festivalgelände ankam. Auf der Hauptbühne waren gerade Silverstein zu Gange. Tendenziell ruhigerer Post-Hardcore, gut vorgetragen - aber nicht wirklich mein Fall.

Kurz nach 21 Uhr legten dann auch einer kleinen Bühnen am anderen Ende des Festivalgeländes Risk it! los. Eine deutsch Hardcore Band aus Dresden, welche "klassischen" Hardcore spielen. Jedenfalls habe die fünf eine sehr gute Show hingelegt, mit Energie und Überzeugung gespielt. Ein guter Einstieg in den Abend. Aber ich habe die Show (leider) nicht zu Ende schauen können, weil gegen 21.45 Uhr Comeback Kid auf der Nebenbühne spielten.

Comeback Kid habe ich zum ersten Mal vor 6 oder 7 Jahren auf dem Mair 1 gesehen. Heute, ein paar Jahre und Alben später, haben die fünf Kanadier immer noch reichlich "Bums". Besonders der Frontmann hat unglaublich viel Energie, stürmte die ganze Show kreuz und quer über die Bühne und sang (oder schrie...) sich die Seele aus dem Leib. Kein Wunder, dass der Funke ziemlich schnell auf das Publikum übersprang und die Menge in Bewegung kam.
Alles in allem ein sehr gut, energiegeladene Hardcore-Show. Sehr schön!

Den Abschluss des Mair 1 2014 machten dann Hatebreed, welche 2012 schon Headliner waren. Die Band gehört ja zu den "ganz großen" der Hardcore Szene. Ohne großes Intro und viel Schnick-Schnack ging's dann los. Das Publikum war sofort dabei und Frontmann Jamey Jasta hat dabei auch durchaus Entertainer-Qualitäten und weiß, wie man das Publikum mit nimmt. Was, gepaart mit der Bühnenpräsenz der Band, zu einer entsprechend guten Stimmung im Publikum sorgt.
Nur leider fing es um kurz nach 23 Uhr, nach den ersten paar Songs von Hatebreed, ziemlich an zu regnen. Was der Stimmung zwar keinen Abbruch tat, mich aber dazu bewog, dann doch schon gegen 23.30 Uhr die Segel zu streichen und Hatebreed nicht noch ganz zu Ende zu schauen.

Unterm Strich auch das Mair 1 2014 ein super Festival. Ein sehr gutes Line-Up mit einigen "großen" Namen aus der Hardcore Szene, entspannte Atmosphäre und sehr gute Organisation. Wenn das Line-Up stimmt komme ich auch 2015 gerne wieder.

Samstag, 28. Juni 2014

Mair 1 Festival 2014 1. Tag - Walls of Jericho & Ignite

Am 27./28.6.2014 war es wieder soweit: das Mair 1 Festival fand, wie in den Jahren zuvor auch, auf dem Flugfeld von Montabaur statt. Traditionell ist das Festival Hardcore und Punk Rock lastig, wobei dieses Jahr viel mehr Hardcore als  Punk am Start war. Und auch dieses Jahr waren wieder ein paar hochkarätige Bands des Genres vertreten.

Während letztes Jahr netter Weise alle Bands, die ich sehen wollte, an einem Tag gespielt hatten, verteilte es sich diese Jahr auf zwei Tage.

Am Freitag, 27.6.2014 waren Walls of Jericho und danach Ignite am Start. Besonders auf WoJ war ich gespannt. Gegen 19.20 Uhr war ich vor Ort, da hatten gerade die mir bis dato unbekannten Skindred mit ihrem Set begonnen. Erster Eindruck: 20 Jahre zu spät. Diese Mischung aus Reggae und Metal war doch in den 90ern "in". Skindred 1998 wurden übrigens gegründet, passt also doch ;-) . Musikalisch nicht ganz mein Fall, aber durchaus gefällig anzuschauen. Wobei man sagen muss, dass es die Band bzw. besonders der Frontmann es sehr gut geschafft hat, das Publikum "mitzunehmen". Von daher war die Stimmung gut. Nur das Ende kam ein bisschen abrupt, scheinbar aufgrund eines technischen Problems des DJs vor dem letzten Song.

Danach kamen Walls of Jericho auf die kleinere Bühne. Und gaben von der ersten bis zur letzten Minute Vollgas. 110% Energie, top Bühnenpräsenz und absolut mitreißend. Somit war das Publikum auch direkt dabei und ab dem 3. oder 4. Song lief auch der Circle Pit.
Erstaunlich finde ich immer wieder, mit wie viel Power die Frontfrau Candace Kucsulain singen bzw. growlen kann. Und das, obwohl sie beim Sprechen eine ganz normale, weibliche Stimme hat.
Jedenfalls ein superguter Auftritt. Eine der besten Hardcore Shows, die ich bisher gesehen habe. Sehr geil!

Direkt nach Walls of Jericho waren dann Ignite auf der Hauptbühne an der Reihe. Melodischer Hardcore mit leichtem Emo-Touch, also ab und an auch mal etwas "dunkler" / depressiver. Im direkt Vergleich zu WoJ vorher wirkten Ignite ein bisschen "weich", aber die Show war trotzdem sehr gut. Ein gute Mischung aus neueren und älteren Songs, mal schneller, mal langsamer.  Auch hier war das Publikum direkt dabei und so war es eine kurzweilige, gut anzuschauende und anzuhörende Show. Sehr schön.

Nun war eigentlich Schluss für mich für heute, zumal ich noch auf einer Geburtsfeier eingeladen war. Der nächste Act war "Bam Margera as the Fuckface Unstoppable". Bam Margera ist von "Jackass" bekannt, die Band war zumindest mir bis dato ebenfalls völlig unbekannt. Also habe ich mir noch die ersten 1,5 Songs angehört. Nach einem sehr obskuren Opening ging's dann los. Klingt irgendwie nach einer Mischung aus Hardrock und Stoner Rock, hörte sich jedenfalls ganz gefällig an.

Jedenfalls hatte sich der Besuch am 1. Tag schon alleine wegen der Show von Walls of Jericho gelohnt. Am 2. Tag geht's dann weiter im Risk it!, Comeback Kid und Hatebreed.

Blogbeitrag zum Besuch des 2. Tags des Festivals: Link

Montag, 19. Mai 2014

Me First and the Gimme Gimmes - Are We Not Men? We are Diva!

Vor ein paar Tagen, also Mitte Mai 2014, ist das neue Album der Me First and the Gimme Gimmes mit dem Titel "Are We Not Men? We Are Diva!", das achte Album der Punk-Rock Allstar Band, erschienen.

Wer Me First and the Gimme Gimmes nicht kennen sollten: Die Band ist ein Nebenprojekt von Musikern der Bands NoFX, Lagwagon, Swingin' Utters und Foo Fighters und bezeichnet selbst ganz bescheiden als "The best coverband of the world". Die Band spielt ausschließlich Coversongs von zumeist sehr bekannten Poptitel - und das ganze im Punkrock-Stil.

Jedes Album der Band greift dabei ein bestimmtes Thema auf. Wie der Titel der neuen Platte "Are We Not Men? We Are Diva!" unschwer erahnen lässt, werden hier ausschließlich Titel von Pop-Diven gecovert. Und zwar von den ganz großen wie z.B. Whitney Houston, Celine Dion, Mariah Carry und interessanter Weise auch Boy Georg.

Und, wie man auch schon auf allen anderen Platten der Gimme Gimmes hören konnte: covern können die, und das richtig gut. Zwar werden alle Lieder mit mindestens doppeltem Tempo und punkrockiger Gitarre gespielt, aber alle Songs sind problemlos wieder zuerkennen. Dazu trägt auch sicherlich der sehr gute und klare Gesang von Sänger Spike Slawson bei.

Im Vergleich zu den letzten Veröffentlichungen der Band ist diese Platte etwas pop-punkiger ausgefallen, was der Sache aber keine Abbruch tut. Die Cover der Stücke "My heart will go one" und "Crazy for you" sind dabei sogar noch deutlich ruhiger als die anderen.

Nichts desto trotz ist auch "Are We Not Men? We Are Diva?" eine absolut gelungen Scheibe und eine absolute Empfehlung.
In Sache gut-hörbare und nachhaltig gute Punk-Cover von Pop-Songs sind Me First and the Gimme Gimmes nun mal die absolute Spitze. Und dies zeigen sie auch auf ihrer neusten Veröffentlichung.