Campusmanagement

Campusmanagement an der FAU

Inhalt

Konflikte: Log4j SMTPAppender und mail.jar im Tomcat

Wie sich herrausstellte bietet das Verwenden der Javax Mail Library im Tomcat einiges Konfliktpotential.
Nach der Umstellung des Tomcat auf Log4j sollte nun zusätzlich auch der SMTPAppender zum Versenden verschiedener Logmeldungen genutzt werden. Als Abhängigkeiten ergaben sich dadurch die beiden JARs mail.jar und activation.jar, welche im Tomcat common libs Verezichnis bereitgestellt werden müssen.

Soweit so gut.

Nach dem Kopieren der beiden JARs ins Tomcat lib Verzeichnis ergab sich Folgendes beim Versenden der ersten Logmeldung via SMTPAppender folgender Fehler:
Weiterlesen

Log4j SMTP Appender — aufgebohrt

Nach dem Umstellen des Tomcat auf farbcodiertes Logging ist zwar deutlich mehr Übersicht erreicht worden, aber die meiste Zeit sitzt man ja eher nicht vor dem PC und verfolgt alle Logausgaben um etwaige Fehler- oder Statusmeldungen mitzubekommen.

Daher wurde als weitere Verbesserung der Log4j SMTP Appender herangezogen.
Dieser ermöglicht es einen zusätzlichen Appender zu konfigurieren, um bestimmte Logmeldungen zusätzlich auch per Mail zu versenden.

Weiterlesen

Farbcodiertes Logging für Tomcat

Aufbauend auf Krassis Artikel zum farbcodierten Logging für JBoss und JBoss ESB habe ich das bunte Loggen auch mal für den Tomcat umgesetzt.
Benutzt wurde Tomcat 6.0.20, es sollte aber auch mit jeder anderen Version so oder so ähnlich funktionieren.

Die Einrichtung gliedert sich in zwei Schritte:
I. Tomcats internen Loggingmechanismus auf log4j umstellen
II. Log4j für Tomcat mit dem farbgebenden Logger konfigurieren
Weiterlesen

Versionsupdate auf mein campus 4.4

Am kommenden Mittwoch, 28.04.2010 findet zwischen 12.00 und 13.00 Uhr das Update auf Version 4.4 von mein campus statt.
Im Zuge des Updates werden einige Fehler behoben, welche sowohl in den Prüfer- als auch Studierendenfunktionen aufgetreten sind.
Zudem wird mein campus mit dieser Version „loadbalancing-fähig“. Bisher wurden alle Anfragen über einen Applikationsserver abgewickelt, so dass dieser bei vielen, parallelen Zugriffen Performannzprobleme („Schluckauf“) hatte. Mit dem Load-Balancing wird eine Verteilung der Zugriffe auf mehrere Applikationsserver und somit eine gleichmäßige Auslastung möglich, die zu einer erhöhten Systemstabilität führt.
Mit dem Versionswechsel von mein campus ändert sich auch die Optik der Start- und der Logout-Seite, welche bereits – im Vorgriff auf Version 5.0 sowie der Erweiterung der Portals um weitere Module – dem künftigen Design der Weboberflächen angepasst wurde.
Eine detaillierte Übersicht der Neuerungen und Verbesserungen können Sie nach dem Update in den Versionsinformationen nachlesen.

Schnelle Anonymisierung in DB-Tabellen

Aufgabenstellung ist es, mölichst schnell und unkompliziert eine Tabelle mit typischen Benutzerdaten (z.B. Vor- und Nachname, Geburtsdatum) zu anonymisieren. Aufgrund der Größe der Tabelle mit ca. 35.000 Einträgen erachten wir es als ausreichend, die jeweiligen Spalten „durcheinanderzuwürfeln“, so dass andere Kombinationen aus Vor- und Nachnamen entstehen als in der Ausgangstabelle. Und am besten sollten keine externen Tools verwendet werden, also kein Perl, Java etc.

Ausgangstabelle:

1 Firstname1 Lastname1
2 Firstname2 Lastname2
3 Firstname3 Lastname3

Wir generieren zunächst 3 temporäre Tabellen, in die jeweils ein Attribut gespeichert wird:

CREATE TABLE id_temp
(
id serial NOT NULL,
source_id integer
);

CREATE TABLE firstname_temp
(
id serial NOT NULL,
firstname character varying(70)
);

CREATE TABLE lastname_temp
(
id serial NOT NULL,
lastname character varying(70)
);

und eine Zieltabelle mit derselben Strunktur wie die Ausgangstabelle:

CREATE TABLE shuffeled
(
id integer NOT NULL,
firstname character varying(70),
lastname character varying(70)
);

Dann speichern wir in die temporären Tabellen Werte aus der Ausgangstabelle und nutzen dabei die SQL-Random()-Funktion. Wichtig ist auch das Serial-Feld in den temporären Tabellen, das eine Nummerierung der Zeilen sicherstellt.

INSERT INTO id_temp(source_id) SELECT id from original ORDER BY RANDOM();
INSERT INTO firstname_temp(firstname) SELECT firstname from original ORDER BY RANDOM();
INSERT INTO lastname_temp(lastname) SELECT lastname from original ORDER BY RANDOM();

Das Resultat sind drei Tabellen, die zufällig angeordnete Abfolgen der Spalteninhalte der Ausgangstabelle beinhalten.

id_temp:

id source_id
1 2
2 1
3 3

firstname_temp:

id firstname
1 firstname3
2 firstname2
3 firstname1

lastname_temp:

id lastname
1 firstname2
2 lastname1
3 lastname3

Und als letzer Schritt werden diese zusammengeführt in die Zieltabelle:

INSERT INTO shuffeled (id, firstname, lastname)
SELECT id_temp.source_id AS id,
firstname_temp.firstname AS firstname,
lastname_temp.lastname AS lastname
FROM id_temp, firstname_temp, lastname_temp
WHERE id_temp.id=firstname_temp.id
AND id_temp.id=lastname_temp.id;

Et voila, wir erhalten eine Tabelle mit zufällig angeordneten Kombinationen:

1 Firstname2 Lastname3
2 Firstname3 Lastname1
3 Firstname1 Lastname2

Danach müssen nur noch die temporären Tabellen wieder entfernt werden. Statt in eine Zieltabelle sch schreiben, kann natürlich auch die Ausgangstabelle beschrieben werden.

In der tatsächlichen Anwendung – die noch einiges komplexer ist und ca. 36.000 Einträge hat – dauert das ganze auf einem Standard-PC ca. 6 Sekunden!

Ankündigung von Unterbrechungen der Stromversorgung im Südgelände am 17.4.

Aufgrund der Erweiterung der USV-Anlage sowie Arbeiten an der Stromversorgung kann es am 17.04.2010 von 08.00 Uhr bis 12.00 Uhr zu Unterbrechungen der Stromversorgung im Südgelände kommen.
Die USV-Anlage sowie das Normalnetz bleiben in Betrieb, so dass grundsätzlich nicht mit Ausfällen des Portals „mein campus“ zu rechnen ist. Sollte dies dennoch der Fall sein, bitten wir um Benachrichtigung der Support-Hotline via E-Mail (meincampus-support@uni-erlangen.de) sowie um Ihr Verständnis.

HTML 5, CSS 3

Sinnvolle, bereits jetzt einsetzbare Features, die nicht zu Kompatibilitätsproblemen führen sind:

in HTML5

– neue Elemente/Attribute

  • Aria-Landmarks (Deklaration von Bereichen, z.B.  „role=navigation“/“role=search“)
  • für Formularelemente (<input type=“url“ /> od. <input type=“email“ />) (wird bei Unwissenheit des Browsers auf Standard (=text) zurückgesetzt unddient u. a. der Anpassung der Tastatur beim iPhone) Weiterlesen

Hibernate Map Mapping ;)

Da mich dieses Problem eine ganze Weile beschäftigt hat möchte ich meine Erkenntnisse über die Tücken und Finessen der Abbildung von Java Maps in die Datenbank mittels Hibernate/JPA gerne mit allen Interessierten Lesern teilen.
Es geht darum mittels einer Verbindungstabelle aka JoinTable eine Art ManyToMany Verbindung zwischen zwei Entities herzustellen. Diese soll bi-direktional sein und ein zusätzliches Feld conn_active besitzen, welches angibt ob die aktuelle Kombination momentan aktiv ist oder nicht.
Außerdem sollen Texte übersetzt in verschiedene Sprachen in einer Map gespeichert werden, welche Hibernate in eine eigene Tabelle auslagern soll.
Soweit so gut …

Weiterlesen

mein campus: Version 4.3

Am heutigen Dienstag, 01.12.2009 startete um kurz nach 12.00 Uhr die Version 4.3 von mein campus.
Neuerungen in dieser Version beziehen sich vor allem auf Funktionalitäten, die für die Mitarbeiter in der Studentenkanzlei und dem Prüfungsamt zur Verfügung gestellt werden (Druck von Bescheinigungen, Erfassung der studiengangsindividuellen Texte für das Diploma Supplement).
Für Prüfer und Studierende wurden einige kleinere Erweiterungen vorgenommen sowie einige Unzulänglichkeiten beseitigt.
Eine genaue Übersicht der Neuerungen und „Bugfixes“ finden Sie in den Versionsinformationen, die auf „mein campus“ abgerufen werden können.