LaTeX build server with Git and Hudson on Ubuntu 10.04

LaTeX build server with Git and Hudson on Ubuntu 10.04

I’m currently working on a bigger paper for university using LaTeX. As it’s necessary to compile source files multiple times (especially when using BibTeX or TOCs), build runs can take quite some time. As an example, my current build script:

#!/bin/bash
BN=paper
pdflatex -interaction=nonstopmode $BN.tex
bibtex $BN
pdflatex -interaction=nonstopmode $BN.tex
bibtex $BN
pdflatex -interaction=nonstopmode $BN.tex
makeindex -s $BN.ist -t $BN.glg -o $BN.gls $BN.glo
pdflatex -interaction=nonstopmode $BN.tex
pdflatex -interaction=nonstopmode $BN.tex
rm -rf $BN.aux
rm -rf $BN.lof
rm -rf $BN.lot
rm -rf $BN.out
rm -rf $BN.toc
rm -rf $BN.bbl
rm -rf $BN.blg
rm -rf $BN.brf
rm -rf $BN.idx
rm -rf $BN.glo
rm -rf $BN.ist
rm -rf $BN.glg
rm -rf $BN.gls
rm -rf texput.log

This is OK on my workstation, but running a build on my notebook using a small 1.4 GHz single core processor can take up to a minute which is definitely too long. So I looked for solutions how to move the build process to a central server. As I was already using Git for source control on the project, I tried setting up a remote repository on the server which triggered a build using a post-receive script. This basically worked fine, but I wanted to go a step further. I had a look at CI servers and gave Hudson a try as it seems to have a lot of features while being quite easy to set up.

The result is the following: Hudson is polling the Git repository (can be remote or local, in my case it’s a self-hosted remote gitosis installation, but could be github too), starting a new build on changes and publishing the resulting PDF if successful. Hudson is accessible over https using an Apache2 server as frontend to a Tomcat installation.

Ready? Let’s go.

(more…)

Brownies

Brownies

Fast schon pervers schokoladig :) Am besten außen knusprig und innen noch schön saftig und weich.

(more…)

Check broken links/rewrites with curl

I just did a change in the URL structure of a bigger site and had to check if all existing URLs are rewritten correctly to the new structure. First I extracted a list of all URLs from the CMS of the old version and wrote them to a text file, each line containing an URL. Then I changed the structure and used the following shellscript to check each URL with curl and output the result. Afterwards it’s easy to analyze the results and check for broken links.

#!/bin/sh
while read f
do
  echo $f
  echo ""
  curl -IL --silent $f
  echo "------------------"
  echo ""
done < $1

Usage:

$ ./checklinks.sh links.txt > stats.txt

Chicken Curry mit Mangochutney

Chicken Curry mit Mangochutney

Hatte noch ne Mango und 2 Hühnerfilets im Kühlschrank und hab mal experimentiert, wie man das so kombinieren könnte. Ergebnis war gut, auch wenn ichs mit dem Chili leicht übertrieben habe. Die Mengen hier sind grob geschätzt, kann also gut abweichen. Das Ganze braucht seine Zeit, da man zuerst das Chutney kochen und dann das Fleisch marinieren muss. Ich hab am Vortag das Chutney gekocht und am Tag danach den Rest.

(more…)

/dev/pts errors on newly created Xen DomUs (Debian Lenny)

Today was the first time I had to create a new DomU after upgrading my Xen setup to Debian Lenny. When I booted the VM and logged in via xm console I got some strange errors when installing packages:

Can not write log, openpty() failed (/dev/pts not mounted?)

Additionally, after setting up SSH, I got the following error when logging in with SSH:

Server refused to allocate pty

Solution: install udev, reboot the VM and you’re good to go.

Thunderbird + Lightning on Ubuntu 9.10: unable to add new calendar

Just tried to setup Thunderbird + Lightning on Ubuntu Karmic, but somehow I couldn’t add a new calendar as the field was greyed out. Solution: install libstdc++5 (here from the Debian Lenny repository), un- and reinstall lightning and you’re good to go.

Integrate Spamassassin into Postfix/Dovecot

As I stated before, I really like Christoph Haas’ ISPMail setup for Debian-based mailservers. I was quite fine without any server-side spam filtering solution until now, but somehow the spam amount in my inboxes increased more and more and I was looking for a decent and simple solution to filter out all that bullshit which is distracting me day after day.

I clearly wanted to go with Spamassassin (SA), as I made good experiences with it in the past and it’s more or less the standard spamfilter on linux based mailservers. The most common solutions to integrate SA into a Postfix based mailserver are the following:

  • Using amavisd-new
  • Using Postfixs content_filter

I don’t really like both of them. Amavis is quite heavy for the pure spam filtering purpose and the content filter checks both ingoing and outgoing mails by default which is obviously not in my interest. Amavis avoids checking outgoing mail just by checking if the sender domain is managed by the same system, but spammers can bypass this quite easily by faking the sender’s address to be the same as the recipient’s one (which is done quite often). There’s a discussion about this on the ISPMail page, so head there for more information. All this can be improved by using multiple Postfix instances and different ports (e.g. using 587/submission for authenticated clients and 25/smtp for normal SMTP traffic), but I want my mailserver to be as interoperable as possible without the need of any special setups on the client side.

So I was looking for another solution. I read some tutorials where people used procmail in user scripts to pass incoming mail to spamc before delivering it to the mailbox. I like this approach as the MTA isn’t involved into the spam filtering process, outgoing mail isn’t touched and you don’t need any complicated setups on the MTA side. All alias and transport definitions work fine and the final mail is checked right before being delivered to the user’s inbox.

First I thought about Sieve, which is already running through Dovecot’s Sieve implementation until I noticed that Sieve is not able to call any external programs (correct me if I’m wrong). Then I had a look at spamc and Postfix’ master.cf. spamc is capable to pipe its output to another program and in the ISPMail setup, Postfix passes the mail directly to Dovecot’s deliver, so why not just let Spamassassin check the mail right before it’s getting passed to Dovecot? I gave it a try and seems to work fine. I still need some automation in training SA databases (might follow in a later post), but the plain SA checking is working reliably and mails can easily be filtered with Sieve afterwards.

So much for the backstory, let’s get our hands dirty. Note: I’m running Debian Lenny.

(more…)

Einzug, Party, Registrierung, Party, Party

Einzug, Party, Registrierung, Party, Party

Sodala, jetzt hab ich hier schon länger nichts mehr geschrieben. Die letzten Tage war einfach zu viel los, um vorm Laptop zu sitzen und zu bloggen ;) Also mal kurz im Schnelldurchlauf die letzten Tage: Mittwoch nach dem letzten Post ging es ab auf die Tapatour, wo uns Tony aus dem Hostel durch einige Tapabars geführt hat und wo ich wieder jede Menge netter Leute kennen gelernt habe, unter anderem Eríc und Audrey aus Quebec die für 2 Wochen durch Spanien reisen, Nicky eine in England lebende Brasilianerin und noch viele weitere, an deren Namen ich mich grad nicht erinnern kann ;) Nach 3 Tapabars gings dann zuerst in die berüchtigte Chupiteria auf Chupitos und Tischfußball (die Tische hier sind übrigens seehr strange, ganz andere “Aufstellung” und die Platte ist gebogen, sodass meine hart erspielten Anfängerskills hier recht wenig nützlich sind ;) ) und dann in eine karibische Bar, wo hauptsächlich Sound in Richtung Reggeaton und Dancehall gespielt wird. Gegen halb 2 haben wir dann zufällig Krisztina und die anderen Mädels getroffen, die gerade auf dem Weg zur Erasmus-Party im Vogue waren. Wir sind jedoch vor (ja, vor ;) ) der Chupiteria hängen geblieben und dann um kurz vor 2 in den Club, der genau um die Ecke bei Hostel liegt. Eintritt war 6€ inkl. 1 Drink oder 2 Bier, der Club war bei der Ankunft angenehm voll mit Erasmusstudenten und der Sound war zum Party machen OK. Gegen halb 4 war dann langsam die Zeit, zu der die Spanier anfangen, in Clubs zu gehen und der Laden wurde so richtig voll. Da ich von den letzten Tagen ohnehin recht fertig war bin ich um 4 ins Hostel um eine Runde Schlaf zu bekommen. Zudem hatte ich im Club erfahren, dass am Donnerstag anscheindend um 12 ein Treffen der Wirtschaftsfakultät sei, und ich nicht (wie geplant) gemütlich ausschlafen konnte.

Donnerstag bin ich dann um halb 11 auf, da wir ausgemacht hatten, uns um 11 an der Kathedrale zu treffen, um zu besagtem Meeting zu schauen. Wir waren dann auch um 12 dort, nur um zu erfahren, dass das Meeting abgesagt worden war. Also mal auf den schwer nötigen Café gegangen und dann zurück ins Hostal. Während ich dort in der “Lobby” saß, um meine Mails zu checken habe ich dann Adam getroffen, der gerade angekommen war und lustigerweise in Innsbruck Physik studiert. Um 5 sind Alex, Diego und ich dann in die Wohnung, um mit der Vermieterin einige Details zu besprechen und die Liste mit der Einrichtung durchzugehen und zu unterschreiben. Mit der Vermieterin haben wir wirklich ins Schwarze getroffen, wir bekommen komplett neue Bettdecken und -überzüge, können Leintücher und so Zeug aus ihrem Hostel um die Ecke holen, bekommen nagelneue Töpfe, Pfannen und Teller, können während wir unser Internet in der Wohnung anmelden das WiFi in ihrem Hostel nutzen usw. Einfach nur wow. Nebenbei war die Wohnung auf den zweiten Blick nochmal besser als beim ersten Mal – besser gehts nicht. Am Abend habe ich dann Adam bei der Besichtigung einer Wohnung begleitet und bin dann zurück ins Hostel, wo wir mit einigen Leuten aus dem Hostel auf ein Paar Bierchen zusammensaßen und wo ich wieder einige super Leute kennen gelernt habe. Die sind dann alle noch in Richtung Chupiteria, ich bin im Hostel geblieben, da ich am nächsten Tag früh aufstehen und zum IRO wollte. Das böse kleine Halophonieprogramm mit dem “S” in der himmelblauen Blase hat meinen Plan jedoch vereitelt, sodass ich erst gegen 2 im Bett war.

Am Freitag bin ich dann um 06:45 aus dem Bett, da ich mich um 07:30 mit Adam getroffen habe, um zum IRO zu gehen und mich an der Uni zu registrieren. Dort bearbeiten sie nur 100 Anfragen am Tag, sodass man früh dort sein muss, um sich eine der Nummern zu schnappen. Als wir gegen 08:15 dort waren, waren tatsächlich schon ca. 50 andere vor uns, wir bekamen aber unsere Nummer. Gleichzeitig erfuhren wir, dass die Nummer eigentlich unnötig ist, wenn man alle seine Unterlagen zusammen hat und in einem der Erasmus-Kuverts abgibt. Da ich alle Unterlagen hatte (Anmeldungsformular, 2 Fotos, Passkopie und Nominierung der Heimuni), habe ich das schnell erledigt und war um 08:45 fertig. Dann mal gemütlich auf einen Kaffee und zurück ins Hostel, wo ich eigentlich meine Sachen packen und auschecken wollte, da Check-Out vor 12 war und wir am Nachmittag die Schlüssel zur Wohnung bekamen. Da jedoch alle im Zimmer schliefen, hab ich bis halb 12 im Gemeinschaftsraum verbracht und dann aufs Zimmer, um meine 7 Sachen wieder zurück in Koffer und Rucksack zu stopfen, was mir auch mehr oder weniger gelang. Hab mein Zeug dann im Kofferraum geparkt, die kleine böse Plastikkarte zur Bezahlung gezückt und hab mich auf den Weg in die Stadt gemacht, um nach einer Neoprenhülle für mein Notebook Ausschau zu halten. Auf der Suche nach einem geeigneten Laden hab ich einerseits jede Menge spanisch gesprochen, da ich an jeder Ecke nach dem Weg gefragt habe und andererseits jede Menge neuer Orte gesehen, da mich meine Suche recht abseits vom Zentrum gebracht hat. Nach 2h wars dann Siesta-Time zu der die Läden schließen und ich hab die Suche aufgegeben und mich zurück auf den Weg ins Hostel gemacht. Dort dann mit Alex, Diego, Krisztina und Adam getroffen und eine kleine Siesta gehalten, bis wir uns um halb 5 auf den Weg zur Wohnung gemacht haben, um einzuziehen. Da die Raumaufteilung nicht ganz fair ist (ein Zimmer mit Doppelbett, ein kleineres und 2 gleich große), haben wir die Zimmer durch Ziehung bestimmt und beschlossen, dass wir einerseits alle paar Wochen mal Zimmer wechseln und andererseits derjenige das Doppelbett bekommt, der Besuch hat.

Dann mal eine Runde gechillt (wortwörtlich – wir hatten noch kein Gas, spich die Dusche war recht erfrischend ;) ) und dann am Abend Tony aus dem Hostel angerufen und gefragt, ob wir ihn auf der wieder stattfindenden Tapatour begleiten könnten. Gesagt, getan und trafen ihn und die Leute aus dem Hostel in der 3ten Tapabar von Mittwoch. Diesmal war die Runde sehr schräg und es waren recht viele ältere Leute dabei, unter anderem Mike aus NY, Elmer aus Australien und ein Typ aus Irland, an dessen Namen ich mich gerade nicht erinnern kann. Nach der Tapabar gings ab zur Chupiteria, wo wir ordentlich Gas gegeben haben. V.A. der Ire, um die 45, war sehr lustig, da er nach ca. 6 “last ones” nicht mehr ganz fit war und ohne Hilfe warhscheinlich nicht mehr ins Hostel zurück gefunden hätte ;) Obwohl ich nicht vorgehabt hatte, wirklich auszugehen, wurde ich überredet, mit zur Erasmus-Party ins “El Camborio” zu kommen, wohin wir uns dann auch den Weg machten. Der 20 Minuten Fußmarsch den Hügel hinauf bot dabei etwas Gelegenheit zum Ausnüchtern ;) Der Club war wirklich der Hammer. Liegt auf einem Hügel gegenüber der Alhambra und bietet einen meeeeega Ausblick auf die beleuchtete Alhambra und die Stadt. Unten gibts eine Bar, oben eine Chillout-Terrasse mit Sesseln und Bänken und 2 Bars und Dancefloor. Ich habe meine Leute recht schnell verloren, dann aber Morgan, Aline, Vanessa und ein paar andere getroffen und hatte meinen Spaß. Sind dann gegen halb 7 raus und ich war gegen 7 zuhause.

Um 13:00 bin ich dann auf und war erstaunlicherweise recht fit. Haben dann beim Nachbarn geklingelt, um nach der Nummer für den Gasflaschenlieferant zu fragen. Der bot uns sogleich an, uns eine Flasche zu leihen und zeigte uns dann auch, wie man das Dings anschließt und anzündet. Nach einigen Startschwierigkeiten brannte dann die Flamme im Boiler und wir hatten endlich warmes Wasser :) Krisztina, Alex und ich sind dann ins Zentrum, wo wir uns auf der Plaza Trinidad mit Adam auf einen Kaffee getroffen haben. Dort trafen wir auch Nicky (von der Tapatour am Mittwoch), die uns gleich zum Abendessen in ihrer neuen Wohnung einlud. Nach dem Kaffee machten wir uns auf den Weg zu einem Markt und trafen dabei gleich Morgan, Elise (?) und Vanessa. Auf dem Markt gab es für meinen Geschmack viel zu viele Süßigkeiten und zu wenig “gutes Zeug”, sodass ich mich mit Krisztina auf den Weg gemacht habe, um eine Runde einzukaufen, was sich erfreulicherweise als günstiger als in .at herausstellte. Da wir erst um 8 daheim waren, war nicht viel Zeit, um uns weiter auf den Weg zu Nicky zum Abendessen zu machen. Adam kam um 20:30 vorbei, wir (Alex, Adam und ich) starteten bei uns aber erst um 21:00, sodass wir gute 20 Minuten zu spät dran waren. Vor der Wohnung trafen wir auch gleich auf Diego, der separat von uns eingeladen worden war. Dort lernten wir einige neue Leute kennen und aßen eine Art marokkanischen Hühnereintopf mit Couscous, welcher sehr gut schmeckte. Danach machten wir uns (schon wieder!) auf den Weg zur Chupitobar, wo wir einige Shots hatten, den Großteil der Zeit aber vor der Bar auf der Straße verbrachten. Dort wieder einige Leute getroffen und kennen gelernt, da ich aber nicht so recht fit war, bin ich gegen 2 nach Hause, als die anderen in die karbische Bar gestartet sind.

Heute dann gegen 1 aufgewacht und mich gefühlt, als hätte ich die ganze Nacht Party gemacht ;) Hab mir was zu Essen und eine Dusche gegönnt und bin dann zurück ins Bett, um mir einen Film anzusehen. Wetter ist heute sowieso nicht so mega, da passt das schon. Gegen vier hab ich mich dann aufgerafft und hab mich mit Notebook bewaffnet auf den Weg zu Plaza Romanilla gemacht, wo ich seitdem draußen sitze und diesen Post tippe. 4 Stunden später: nach dem letzten Satz hörte ich plötzlich laute Musik einer Parade, also packte ich meinen Laptop ein, bezahlte und ging um die Ecke, um die Parade anzusehen. Ich erfuhr später, dass heute der Tag des Schutzpatrons von Granada ist. Auf der Straße waren tausende (zehntausende) von Leuten mit Kerzen, eine Kapelle und Riesentroubel (?). Als ich allein bei der Parade stand fragte ich einen Typ neben mir, ob er wüsste, was es für eine Parade sei. Er wusste es zwar nicht, aber wir kamen eine Runde zum quatschen und gingen dann auf einen Kaffee. Zufällig stießen Alex und Kriszti dazu mit denen ich dann weiterzog. Ging mit Alex ca. bis 8 durch die Stadt und die Parade und war dann gegen halb 9 zuhause. Jetzt tippe ich gerade schnell den Post zuende, treffe mich heute mit ein paar deutschen Leuten. Fotos kommen später, Videos noch später wenn ich mal schnelles Inet habe.

(more…)