Anmeldephase für die Computerkurse hat begonnen!

Ab sofort können sich alle Studierende und Beschäftigte der Uni Köln (und anderer Hochschulen in NRW) für die Computerkurse des RRZK in den kommenden Semesterferien anmelden.

Unter anderem gibt es Kurse in den Bereichen Betriebssysteme, Rechnersicherheit, Programmierung, Office-Anwendungen, Grafik und Multimedia, Statistik, Mathematik-Software, e-Learning und Literaturverwaltung.

Kursverzeichnis und Anmeldung unter: http://rrzk.uni-koeln.de/kursangebot.html

SoFS-Nutzung von Android Tablets

Bislang gab es nur Hinweise, wie SoFS von Windows und MacOS aus nutzbar ist. Aber auch von Android aus kann man dank Webdav gut auf SoFS zugreifen. Man installiert sich dazu aus dem Google Playstore zunächst den „Total Commander“ und darin dann das Webdav plugin. Dieses dann mit https(!) checken, sofsdav.uni-koeln.de/private/<username> als pfad, username und password konfigurieren und fertig! Dem Hin- und Her-Kopieren von Dateien zwischen Android-Device und SoFS steht nur noch die verfügbare Bandbreite im Wege…

Wenn der Provider streikt – VPN mit Android unterwegs

Kürzlich versuchte ich freudig mein neues Tablet (Odys Xelio, Android 4.0.3 ICS) mit dem VPN der Uni zu verbinden. Vom heimischen WLAN aus klappte das völlig problemlos. Die Probleme begannen an zwei anderen Orten: Dem Uni-WLAN und schließlich dem mobilen 3G-Netz. Also lief ich erstmal zu unserer Netzwerkabteilung, die aber nach eingehender Prüfung feststellte: Für Problem eins (Uni-WLAN) benutze ich den falschen – L2TP-basierten – Client, Problem zwei muss irgendwie am Tablet selbst oder am Provider  liegen. Den Provider habe ich kontaktiert, wurde aber leider mit einer Standardantwort á la „müsste gehen, supporten wir aber nicht weiter, im Zweifelsfall ist Ihre Netzabteilung schuld“ abgefrühstückt. Also musste das google’sche Orakel befragt werden, mit dem Ergebnis: Sehr wohl blockieren einige Provider Punkt-zu-Punkt-Verbindungen auf einer ganzen Reihe von Ports, darunter vermutlich auch der Port, der für L2TP verwendet wird. Für Businesskunden werden diese dann natürlich auf Wunsch freigeschaltet. Nun, Businesskunde bin ich nicht, aber immerhin hatte ich nun für beide Probleme einen gemeinsamen Lösungsweg: Wechsel zum AnyConnect-Client, der VPN über den nicht geblockten Port 443 (SSL) bereitstellt. Im Google Play Store gibt es gleich mehrere kostenfreie Varianten des Clients. Die „AnyConnect ICS+“-Version, die ich zuerst getestet hatte, scheiterte an einem Berechtigungsproblem. Nun gut, zum Glück ist mein Tablet ja ab Werk gerootet, also als nächstes die Version „Rooted AnyConnect“ ausprobiert. Ergebnis: „Der TUN/TAP-Treiber konnte nicht geladen werden.“ Grummel… google… Aha, der genannte Treiber fehlt auf vielen Tablets, Abhilfe schafft man mittels „TUN.ko Installer“, ebenfalls bei Google Play erhältlich. Die Installation eines passenden TUN-Treibers  war damit ganz einfach und siehe da, anschließend konnte sich auch AnyConnect aus jedem beliebigen Netzwerk heraus verbinden.

Cisco RTMT v8 on Mac OS X

This article expands on a topic others have written about before, i.e. running Cisco’s RTMT for the Cisco Call Manager on a Mac:

Both of these deal with earlier versions of RTMT. Please read at least Ciscomonkey’s article, because I’m not repeating the hints regarding the timezone issue here.

I found that it doesn’t work as easily using RTMT v8, specifically 8.92. Here’s what you have to do to get that version to run on your Mac:

  1. Install the Linux version in a Linux VM
  2. Copy the installation directory (usually that’s /opt/Cisco/Unified-Serviceability/JRtmt/) to your Mac (e.g. to /Applications/)
  3. Edit the file JRtmt/run.sh so that it uses /usr/bin/java instead of trying to start the bundled JRE (which is a Linux binary)

At this point you can launch RTMT by invoking run.sh from a terminal, but for additional convenience you can write yourself a GUI launcher. The basics are described in the article I linked to, but I added logging the output:

do shell script "cd /Applications/JRtmt; ./run.sh 2>&1|logger -t 'Jrtmt'"

Of course you’ll have to adapt the path to the location where you installed the directory. Now you can just double-click the AppleScript app, and RTMT’s output will be logged to Console.app.

Neues im Bereich Software: Adobe Student&Teacher ESD Versionen und IBM SPSS Modeler Standortlizenz

Adobe Student&Teacher ESD Versionen im Softwareshop der Uni Köln

Durch eine Erweiterung des Adobe Vertrages sind im Online-Softwareshop der Universität zu Köln jetzt auch ESD (Electronic Software Download) Versionen der Adobe Student&Teacher Lizenzen verfügbar (zum Beispiel Photoshop, Indesign, Creative Suite).

Bestellen können alle Studierenden und Beschäftigten der Universität zu Köln (für die nicht-kommerzielle Privatnutzung).

Die Preise sind günstiger als die im Handel erhältlichen Student&Teacher Boxprodukte von Adobe.

Die Lizenzen sind für Windows oder Mac erhältlich, allerdings nur in der deutschsprachigen Version.

Die Adobe Student&Teacher ESD Versionen können im Softwareshop der Uni Köln bestellt und heruntergeladen werden.

Weitere Informationen zu Adobe Student&Teacher ESD an der Uni Köln

IBM SPSS Modeler Standortlizenz

Die Universität zu Köln nimmt am „IBM Mining in Academia“-Programm teil. Dieses beinhaltet eine kostenlose Standortlizenz für das Programm SPSS Modeler inkl. Text Analytics für 1 Jahr (bis 31.05.2013).

Die Software darf nur für Schulungszwecke und nicht-kommerziell orientierte wissenschaftliche Forschungszwecke auf Computern genutzt werden, die Eigentum der Universität zu Köln sind (Standortlizenz).

Die Software kann über den Softwareshop der Uni Köln heruntergeladen werden.

Weitere Informationen zum IBM SPSS Modeler an der Uni Köln

AirPrint-Erfahrungen

Seit einiger Zeit (ab Version 4.2.1) können iOS-Geräte wie z.B. iPads und iPhones drucken. Der offizielle Weg funktioniert aber nur in Heimnetzwerken und mit wenigen Druckermodellen. Im Netz kursieren viele Anleitungen, wie man diese Beschränkung umgehen kann. Was ich hier darstelle, ist nicht neu, sondern nur ein Erfahrungsbericht über die Fallstricke, die einem begegnen können. Der beste Ausgangspunkt für eigene Versuche, den ich gefunden habe, ist dieser Blogeintrag. Insbesondere die dort aufgelisteten Links sind sehr hilfreich.

Auf die grundsätzlichen Dinge, wie die Konfiguration von CUPS und das Erstellen der Servicerecords im DNS, gehe ich hier nicht ein. Das ist an anderer Stelle (s.o.) schon zur Genüge getan. Folgende Probleme hatte ich zunächst:

  • Farbausdruck ging nicht
  • Druck aus Safari ging nicht

Das letztere Problem wurde, wie man im CUPS-Log (mit debug-Logging) sehen konnte, dadurch ausgelöst, dass das zu druckende Dokument als URF-Image geschickt wurde. URF ist ein „raster image format“, für das Apple den MIME-Typ image/urf verwendet, das aber leider nirgends dokumentiert ist. Eigentlich sollte URF in meinem Fall nicht verwendet werden, weil ich (gemäß den Anleitungen) urf=none deklariert hatte. Ich hielt das für ein möglicherweise neues Problem und habe deshalb nach Lösungen zum Drucken von URF gesucht. Es sei hier schon verraten: das war eine falsche Fährte. Dennoch folgt ein kurzer Exkurs zum Drucken von URF.

Frühere Versionen von Mac OS X hatten einen CUPS-Filter namens urf2pdf, mit dem das Drucken von URF möglich war. Mit dem Update auf 10.6.5 hat Apple diesen Filter gelöscht, man findet ihn aber noch im Netz. Wenn man den (mit den richtigen Permissions, also root:wheel als owner/group) installiert, und in den CUPS-Einstellungen den MIME-Type image/urf aktiviert, klappt das tatsächlich – aber nur unter Mac OS X. Ich habe keine Möglichkeit gefunden, CUPS unter Linux beizubringen, mit URF umzugehen.

Das zweite Problem war, dass alle Ausdrucke schwarzweiß waren, obwohl im Servicerecord für den Drucker Farbfähigkeit annonciert war. Wie ich jetzt weiß, war beider Rätsel Lösung offenbar identisch: Tippfehler im Servicerecord. Beim Studium der „Bonjour Printing Specification“ von Apple fiel mir auf, dass ich ein (ganz anderes) Attribut falsch geschrieben hatte. Nachdem ich alles entsprechend angepasst hatte, gingen auf einmal Farb- und Duplexdruck. Es sieht so aus, als ignoriere der Parser alle Attribute nach einem falsch geschriebenen. Deshalb wurde auch mein urf=none nicht ausgewertet. Mit der korrigierten Fassung geht jetzt auch ein CUPS-Server unter Linux, weil die iOS-Geräte jetzt alle Druckjpbs als PDF schicken.

Fazit: wie so oft in der IT können kleine Ursachen große Auswirkungen haben.

Not so S.M.A.R.T.?

Today I sent the following question to Alsoft’s (DiskWarrior) support:

„I noticed entries like this one in my system.log:

May 31 10:11:53 tyrion
/Applications/DiskWarrior.app/Contents/MacOS/DiskWarriorDaemon[932]: [Thu May 31
10:11:53 CEST 2012] : The spare blocks for ATA device 'ST31000528ASQ', serial
number '6VP319CR', appear to be exhausted. (Total Available: 36) (Use Attempts:
229)

I have researched the issue and was surprised that the DiskWarrior manual
doesn’t mention this at all. There is some anecdotal evidence on the web that a
message like that is an indicator for impending drive failure.

So I installed smartmontools, because I wanted to know more details about the
drive’s state. Here’s the relevant output I got:

sudo smartctl -A disk0
smartctl 5.42 2011-10-20 r3458 [i386-apple-darwin10.8.0] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0x000e   106   099   006    Old_age   Always       -       11960322
3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       0
4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       33
5 Reallocated_Sector_Ct   0x0033   082   082   036    Pre-fail  Always       -       741
7 Seek_Error_Rate         0x000f   084   060   030    Pre-fail  Always       -       246300939
9 Power_On_Hours          0x0032   078   078   000    Old_age   Always       -       19671
10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       44
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   046   042   045    Old_age   Always   In_the_past 54 (1 165 58 35 0)
194 Temperature_Celsius     0x0022   054   058   000    Old_age   Always       -       54 (0 9 0 0 0)
195 Hardware_ECC_Recovered  0x001a   034   021   000    Old_age   Always       -       11960322
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

From my understanding of the manpage, the actual count of reallocated blocks (as
given by attribute 5) is 741, and the „value“ of 82 is still well above the
critical threshold of 36. What’s more, the attribute 197 shows there are zero
„current pending sectors“, which I understand to mean that all reallocation
requests could be satisfied so far. This seems to run counter to the output of
DiskWarriorDaemon. Could you please explain the discrepancy? Should I replace
the drive after all?“

Their reply was short: „You should replace this hard drive.“

That’s fine (I should be able to replace the drive under AppleCare), but a little low on details. Can anyone explain to me why the output of smartctl seems to be so different? Where do DiskWarrior’s numbers come from?

Ja, Gnome 3 ist die Pest. Aber ja, es ist heilbar.

Seit ein paar Monaten begrüßt mich allmorgendlich Gnome 3, auch „Gnome Shell“ genannt, als Desktop auf meinem LMDE (Linux Mint Debian Edition). Die Abneigung gegen diese Version, die ja niemand so schön formulieren kann wie Linus Torvalds höchstpersönlich, kann ich schon gut nachvollziehen. Im Grundzustand halte ich Gnome 3 ebenfalls für indiskutabel. Aber es dabei zu belassen, wäre einfach nicht zeitgemäß. Denn egal ob Browser, Handys oder CMS – letztlich kommt es darauf an, was man – mit vertretbarem Aufwand versteht sich – über die Nutzung von Erweiterungen aus dem System machen kann. Und da bietet Gnome 3 eine kleine, aber feine und vor allem sehr komfortabel installierbare Auswahl. Die zentrale Seite für Gnome-3-Erweiterungen ist hier zu finden:

GNOME Shell Extensions

Besucht man mit einem laufenden und halbwegs aktuellen (d.h. ab Version 3.2) Gnome diese Seite, kann man die dort angebotenen Erweiterungen auch gleich über den „On/Off“-Schalter in der Detailansicht der jeweiligen Erweiterung installieren und deinstallieren. Möchte man sich unabhängig von der Webseite einen Überblick über die aktuell installierten Erweiterungen verschaffen, empfiehlt sich die Installation des Gnome Tweak Tools, welches inzwischen bei Ubuntu, Linux Mint und Debian über die Standard-Repositories verfügbar ist.

Im Folgenden möchte ich einige Erweiterungen empfehlen, die aus meinem Gnome 3 wieder einen sehr schönen und komfortabel bedienbaren Desktop gemacht haben, ohne dass ich auf die Vorteile (ja, die gibt’s auch 😉 ) der neuen Version verzichten müsste:

Diese drei genügen aus meiner Sicht bereits, um Gnome 3 problemlos nutzbar zu machen. Alle nun folgenden Vorschläge sind kein Muss, sondern eher Geschmackssache:

  • Frippery Move Clock – verschiebt die Uhr an den Rand der Titelzeile
  • Frippery Shutdown Menu – fügt neben der „Suspend“-Funktion eine Option für echtes Herunterfahren hinzu
  • AlternateTab – macht den Wechsel zwischen Anwendungen per „Alt-Tab“ wesentlich komfortabler
  • Evil Status Icon Forever – bietet die Möglichkeit, Statusicons zurück in die Titelleiste zu holen (z.B. sehr sinnvoll für Pidgin)

Es gibt weitere, sehr nützliche Extensions, z.B. Statusmonitore, diverse Multimedia-Integrationen etc. Da kann man nur sagen: Viel Spaß beim Ausprobieren! Und selbstverständlich dürfen hier in den Kommentaren gerne weitere Empfehlungen gegeben werden.

Neues Blogfeature: SyntaxHighlighter

Vor allem die Kollegen aus dem Rechenzentrum fragten wiederholt nach einem Feature in der zentralen Bloginstallation, mit dem man Codeblöcke schöner darstellen kann. Daher wurde nun die Extension „SyntaxHighlighter Evolved“ bereitgestellt. Eine erste Anwendung sieht man im vorangegangenen Beitrag von Michael Lönhardt. Die Verwendung wird am besten auf der Projekthomepage beschrieben. Auf Wunsch kann die Erweiterung auch in anderen Blogs aktiviert werden. Wie man auf der allgemeinen Projekthomepage ebenfalls nachlesen kann, ist das Ganze nicht auf WordPress beschränkt, sondern kann mittels der dort bereitgestellten Dateien in jeder beliebigen Webseite integriert werden.

Add filter pane to your scaffolding list template

The filter pane plugin is one of my favorite plugins, to give the user the capability to filter lists.

But it’s a boring task, to add the filter pane to each scaffolded view. Especially you’ve to redo all this work, after regenerating the list view. But Customizing the Scaffolding templates will get you rid of this. All you have to do is:

  • Install the filter pane plugin, if not already done:
    grails install-plugin filterpane
  • Copy the the templates used by Grails during code generation to your project directory, if not already done:
    grails install-templates
  • Customize the controller template src/templates/scaffolding/Controller.groovy:
    class ${className}Controller {
       def filterPaneService
       ...
       def filter = {
          if(!params.max) params.max = 10
          render( view:'list',
                  model:[ ${propertyName}List: filterPaneService.filter( params, ${className} ),
                          ${propertyName}Total: filterPaneService.count( params, ${className} ),
                 filterParams: org.grails.plugin.filterpane.FilterPaneUtils.extractFilterParams(params),
                 params:params ] )
       }
  • Customize the list template viewsrc/templates/scaffolding/list.gsp:
    <head>
        ...
        <filterpane:includes />
    </head>
    <body>
        ...
        <div class="pagination">
           <g:paginate total="\${${propertyName}Total}" params="\${filterParams}"/>
           <filterpane:filterButton />
        </div>
        </div>
        <filterpane:filterPane domain="${domainClass.fullName}"    />
    </body>
    

That’s all!