Donnerstag, 26. August 2010

log in a static method in Grails domain class

This post is in english, I guess it might help some people

I've been struggling with this issue some time. I found some hints via Google, especially a thread in Pubbs and one in Nabble. Both didn't help, though.

I don't know if what I did is good, or even "legal" or the Groovy way or... whatever, it works, though. Here on Grails 1.1.1 at least.

Here's the code:
def log = (new MyDomainClass()).log
It's so easy. I just instantiate a new object of the type of the current domain class and get its log property. That downsize is, it can't be copy-pasted to any domain class without editing it. Don't know if there's a solution to that.
For those who want a more talkative example:
class MyDomainClass{
static myStaticMethod () {
def log = (new MyDomainClass()).log
log.debug "This is a log message from a static domain method"
}
}
Did this help? Let me know in the comments.

Mittwoch, 18. August 2010

Probleme mit der MSVCP71.DLL

Letztens hatte ich Probleme, weil eine Fehlermeldung in meinem Windows XP kam. Nach der Lösung des Problems habe ich einen Kumpel das Problem per Email erörtert. Allerdings dachte ich mir jetzt, das wäre vielleicht auch für die Allgemeinheit interessant! Hier also ein ein bisschen bearbeitetes copy-paste der Email:

Seit einigen Tagen trat bei mir folgende Fehlermeldung auf.

Aus meiner Sicht "unerwartet". Also, ich hab mich nicht zu sehr damit befasst und natürlich mehrere Programme am laufen. Keine Aktion hatte ich kurz davor ausgeführt, so war es schwierig den Fehler zu reproduzieren. Vor allem hatte ich kein Programm gestartet was zu dieser Fehlermeldung führen könnte.

Heute hab ich mir Visio Professional 2010 von MSDNAA runtergeladen (für die DA). Wenn das Setup beendet wurde und, Achtung, man etwas gewartet hat, vielleicht so 1-10 Sekunden, kam eben diese Fehlermeldung (deshalb auch die Setup Exe-Datei in der Titelzeile).

Man merke sich:
* Beim beenden des Setups
* Nach kurzer Zeit, nicht sofort

Einiges an googlen hab ich die wohl kompetenteste Antwort in einem Forum von Microsoft gefunden.

Tja, eine DLL aus dem Internet wollte ich nicht unbedingt runter laden (Virengefahr), vor allem weil nirgendwo die eigentliche Größe der DLL angegeben wurde (übrigens 499.721 Byte). Also hab ich in meinen Gemeinsamen Dateien unter Programme gesucht und tatsächlich zwei DLLs gefunden. Beide hatten sogar die gleiche Größe. Also hab ich mir das mit dem regsvr32 angeschaut, was aber zu einer Fehlermeldung geführt hat, dass der blablabla Einstiegspunkt nicht gefunden wurde. Dann hab ich den Dateinamen mit Groß- und Kleinschreibung so geschrieben wie die Datei war, auch ne Fehlermeldung. Das sei keine richtige DLL bzw OCX Datei. *shrug*
Also hab ich mal den Filemon.exe von SysInternals angeworfen. Und die Lösung ist so einfach:

Kopiere die MSVCP71.DLL in das Verzeichnis Windows\System32

Es werden nämlich alle Verzeichnisse im PATH nach der Datei durchsucht. regsvr32 ist nicht nötig.

Aber Vorsicht, ich habe mit dem TotalCommander die MSVCP71.DLL in das Windows\System32 Verzeichnis kopiert und Sophos Anti-Virus hat daraufhin meine totalcmd.exe in Quarantäne verschoben. *autsch*
Also aufpassen :)

Samstag, 10. April 2010

Der 30. Geburtstag in Zahlen

Stell dir vor es ist Geburtstag und keiner denkt daran...
... glücklicherweise ist mein soziales Netzwerk nicht so vergesslich und somit präsentiere ich hier meinen

30. Geburtstag in Zahlen

Der erste Glückwunsch der mich erreichte war von Iris, die mir pünktlich um 00:09Uhr eine SMS geschrieben hat. Insgesamt erreichten mich 13 SMS. Die letzte um 22:21Uhr.
Die erste Email die mich erreichte kam von meiner Patentante um 7:57Uhr. Insgesamt erreichten mich zwei Emails mit Geburtstagsglückwünschen. Dazu kommt eine E-card von Heike.
Das erste Geburtstagsglückwunsch-Wallpost in Facebook kam um 9:07Uhr von einer Freundin die derzeit in Bukarest ist. Die erste Facebook-Nachricht kam von einer Cousine in Indien um 6:11Uhr. Insgesamt bekam ich 29 Wallposts, das letzte um 23:04Uhr. Darunter war ein Video Stevie Wonder - Happy Birthday (gepostet von Tina) und eine Biertorte (von Ania).
Ich bekam eine Lokalisten Nachricht (von Lukas), zwei direct messages in Twitter, die erste war von Fabian um 11:35Uhr. Die einzige Mention in Twitter kam von Oscar.
Auf dem klassischen, also dem persönlichen Weg, konnte mir meine Familie, zuallererst mein Vater, gratulieren. Der letzte war Marcus, der mir davor auch noch per Facebook Wall-post und per Anruf gratulierte und damit derjenige war, der mir am öftesten gratulierte. Insgesamt persönlich gratuliert wurde mir 15 mal. Glückwünsche per Anruf bekam ich 9, der erste kam von Richi um 11:15Uhr. Interessanterweise haben ich mit zwei Personen telefoniert die mir allerdings nicht gratuliert haben => FAIL

1. Plätze
  • Nadia (fb wall),
  • Iris (SMS)
  • César (persönlich)
  • Michelle (fb msg)
  • Eva (Email)
  • Corinna (Anruf)
  • Tina (fb video)
  • Oscar (Twitter mention)
  • Fabian (Twitter dm)
  • Moni & Budda (ICQ)
  • Ania (fb photo)
  • Marcus (Anzahl Gratulationen)
  • Heike (E-card)
Verspätete Geburtstagswünsche habe ich aktuell 11 :) Mal sehen, wie viele noch kommen!

Somit wurde mir insgesamt 81 mal gratuliert, davon 77 mal von einzelnen Personen.

Der Geburtstag an sich war also sehr schön, man kann sich ja auch kaum was besseres vorstellen als den Hinweis, dass jemand an einen denkt! Danke allen für die lieben Geburtstagsgrüße ich habe mich über jeden einzelnen mehr gefreut als über die gesamte Menge.

Und heute wird das gebührend gefeiert, ich freue mich auf jeden der oder die kommt!

Freitag, 29. Januar 2010

Aus dem Leben eines Informatikers

Als Informatiker hat man mehr mit Maschinen zu tun als mit Menschen. Vorgehensweisen, die Menschen - also nicht Informatiker - haben, werden von uns beobachtet, analysiert und schließlich selbst ausgeführt. Besonders interessant sind für uns soziale Protokolle.
Diese sozialen Protokolle... ich werde sie nie verstehen...
Lasst mich euch ein Beispiel nennen:
Als selbstständiger, selbstversorgender Mann, wie wir Informatiker nun mal sind, gehe ich selbst einkaufen, esse zum Frühstück und zum Abendessen jeden Tag das gleiche. Also etwas, was ich im nächstgelegenen Supermarkt einkaufen kann. Mittags gehe ich in die Kantine und zahle mit meiner Mitarbeiterkarte an der Kasse nach dem Buffet. So weit, so gut.
Letzten Monat hat mich ein Arbeitskollege zu seinem Geburtstag eingeladen. Ungewöhnlicherweise hat er nicht bei sich zu Hause gefeiert sondern in einem Restaurant. In einigen Blogeinträgen, man interessiert sich ja im Voraus, hab ich vom „Essen gehen“ schon mal gelesen und war vorbereitet. In der Einladung, die, ökologisch verwerflich, mir auf einer Karte ausgehändigt wurde stand: „Macht euch keine Gedanken, die Kosten gehen auf mich.“ Ich habe die Karte natürlich eingescannt und dann zurückgegeben, so konnte er sie wiederverwenden.
In diesem Restaurant haben wir zu fünft gegessen. Interessanterweise kam jemand an den Tisch und hat gefragt was wir wollen, ein Buffet sah ich nirgendwo. Etwas verwirrt wurde mir erklärt, man solle sich anhand der Beschreibung auf einem Faltblatt ein Gericht aussuchen welches einem dann gebracht wird. Auch das Getränk sollte man sich aussuchen. Apfelschorle, was sonst? Mein Tischnachbar, Physiker, nahm übrigens Spezi.
Nach dem Essen und interessanten Gesprächen über Clustering im SuSy-Raum mit jenem Tischnachbarn bat das Geburtstagskind um die Rechnung. Er bezahlte allerdings etwas mehr, als auf der Rechnung stand. Mir wurde erklärt:
Wenn man bedient wird, zahlt man dazu sogenannten Trinkgeld. Dieses ist Geld, welches dem Personal gegeben wird um sich für guten Service zu bedanken. Man sagt, Bedienungen leben von diesem Geld, weil deren Gehalt alleine sehr gering sei.
Wieso dies aber nun TRINKgeld heißt, konnte mir allerdings niemand erklären.
Aufgrund des anregenden Gesprächs mit meinem Tischnachbar haben wir ausgemacht, uns demnächst noch ein mal zu treffen und das Gespräch fortzuführen. Dazu gingen wir in eine Bar. Laut Karte war der Preis meiner Apfelschorle höher, bei dem Spezi weiß ich nicht mehr den Preis im Restaurant. Da ich ihm anscheinend weiter geholfen hatte, lud auch er mich ein und wieder bemerkte ich den Zuschlag, das Trinkgeld. Ich fragte nach, wie hoch dieser Zuschlag denn sein sollte. Er meinte, er liege üblicherweise bei ca. 10% des angegebenen Preises. Er machte mich außerdem darauf aufmerksam, wie andere zahlten und dass dazu meistens auf den nächsten Euro oder halben Euro aufgerundet würde. So würde man sich das Kleingeld sparen. Dafür brauchte man also Bargeld, für gewöhnlich zahle ich immer mit EC Karte.
Nun, letzte Woche gingen wir erneut gemeinsam in diese Bar. Dieses mal brauchte ich seine Hilfe und bot ihm an, ihn einzuladen, was er gerne an nahm. Als die Bedienung zum Kassieren kam, wollte ich erst den Betrag auf der Rechnung zahlen doch der Physiker machte mich darauf aufmerksam, dass ich eben diese 10% noch dazu zahlen sollte was dann zufälligerweise einen runden Preis von 10 Euro ergeben hat. Und die Bedienung sah mich dieses mal nicht so verwirrt an wie die Kassiererin in der Kantine.
Mir wurde nun wiederum erklärt, dass man Trinkgeld nur zahle, wenn man eben bedient würde. Ich dachte dann also, ich hätte es verstanden.
Nun war gestern allerdings ein Stehempfang wegen der zehnjährigen Firmengründung mit fliegendem Buffet...

Diese sozialen Protokolle... ich werde sie nie verstehen...