RSS

Archiv für den Monat Juni 2012

LXDE für Anwendungsentwickler (2): Signale

LXDE für Anwendungsentwickler (2): Signale

Motivation

Im vorigen Teil „LXDE für Anwendungsentwickler (1)“ haben wir eine einfache Anwendung erstellt, die in C geschrieben ist und ein einfaches Fenster, ohne Inhalt, zeichnet. In diesem Teil soll dem Fenster Leben eingehaucht werden. Dazu wird eine Textbox erstellt und zwei Buttons (OK und Ende). Bei jedem Klicken des OK Buttons, wird in der Konsole der Inhalt des Textfeldes ausgegeben. Beim Drücken auf den Ende Button, wird die Anwendung beendet.

Glade – GUI „aufmotzen“

Irgendwie nicht mehr ganz aktuell ist leider das Tutorial: http://anjuta.sourceforge.net/documents/de/anjuta-tutorial/x75.html, also einfach mal Copy&Paste ist nicht! Nach einigem Surfen, habe ich herausgefunden, daß es zwischen Glade2 und der von uns verwendeten Version Glade3 doch einige Unterschiede gibt.
Mal sehen, ob ich das trotzdem hinkriege…
Jetzt geht es also darum, dem Fenster „Leben“ einzuhauchen bzw. es nach unseren Wünschen zu gestalten ;-). Dazu verwenden wir „Glade“ – einen sog. Graphical Interface Designer. Ein Tool also, mit dem wir die Oberfläche unseres Fensters designen können. Den muss man nicht separat starten, ein Doppelklick auf die Datei „helloworld.ui“ übernimmt das für uns:

 

Das Ergebnis:

 

Drückt man auf den Knopf „Palette“, werden die verfügbaren Steuererlemente auf der linken Seite angezeigt, in der Mitte wird das Fenster
dargestellt und später auch designed und rechts sieht man die Properties bzw. Eigenschaften des Elementes, welches im mittleren Fenster selektiert wird:

 

Übrigens, das sog. Toplevel-Window ist in der Palette unter „Toplevels“ unter „Window“ zu finden. Zunächst wählen wir unter Container die sog. „Box“ aus und fügen Sie in das mittlere Fenster ein.

 

Bei den Einstellungen ist zunächst nur wichtig, dass die Anzahl der Zeilen auf „2“ und die Ausrichtung auf „Vertical“ steht:

 

Das Fenster sollte nun so aussehen:
Wir wiederholen das und klicken die untere Zeile an, jetzt wählen wir als Anzahl „2“, aber als Ausrichtung „Horizontal“:

 

Jetzt fügen in der unteren Zeile in jeder Spalte einen Button hinzu (zu finden unter „Control and Display“):
Button links:
Name: btnOK
Beschriftung: OK
Button rechts:
Name: btnEXIT
Beschriftung: Ende

 

Wählen Sie die untere Zeile komplett aus (bei mir „box2“) und setzen Sie in den Properties „Gemeinsam“ die „Horizontale Ausrichtung“ auf „End“:

 

Das Ergebnis müsste dann so aussehen:

 

In der oberen Zeile fügen wir wieder eine „Box“ ein, mit der Spaltenanzahl „2“ und der Ausrichtung „Horizontal“. Rechts fügen wir ein Label ein und links einen „Text Entry“.
Label:
Name: lblName
Beschriftung: Name:
Textfeld:
Name: txtName
Für das Textfeld setzen wir in den Properties unter „Gemeinsam“ die Einstellung „Horizontale Ausrichtung“ auf „Fill“ und „Rechter Rand“ auf „7“. Das Hauptfenster verkleinern wir auf die gewünschte Größe.

 

Anschließend kompilieren und starten, das Ergebnis müsste dann so aussehen:

 

Signale – GUI „zum Leben erwecken“

Jetzt haben wir ein Eingabefeld und zwei Buttons, damit die auch einen Sinn ergeben, benötigen wir die Verwendung von „Signalen“ und sog. „Callbacks“. Jedes GUI-Element stellt von sich aus, eine Reihe von Signalen zur Verfügung. Da ein Button eine GTK-Klasse ist („GtkButton“), die von einer anderen abgeleitet ist, erbt sie auch alle Signale von der Vater-Klasse usw.:

 

Uns interessiert das Signal „clicked“, das jedesmal ausgelöst wird, wenn man auf den Button klickt. In der Spalte „Steuerung“ defineiren wir die sog. Callback-Funktion, die jedesmal aufgerufen wird, wenn das Signal ausgelöst wird, mit anderen Worten, wenn der Knopf angeklickt wird. Die Spalte „Benutzerdaten“ ermöglicht die Übergabe individueller Daten an die Callback-Funktion, z.B. ein anderes GUI-Element (Widget). Dazu gibt man hier einfach den Namen des betreffenden GUI-Elementes an, welches man übergeben will.

 

In unserem Fall wollen wir jedesmal, wenn der OK-Button gedrückt wird, den Inhalt des Textfeldes übergeben. Wir definieren deshalb die Callback-Funktion in der Spalte „Steuerung“: „on_key_OK_clicked“ (Name ist beliebig) und in der Spalte „Benutzerdaten“: „txtName“, also den Namen des Textfeldes (s.o.).:

 

Jetzt definieren wir in der Datei „helloworld.h“ die Signatur der Callback-Funktion (vor dem Makro „G_END_DECLS“):
/* Callbacks */
void on_key_OK_clicked (GtkButton *button, GtkEntry *text);
und in „helloworld.c“ die Definition:
void on_key_OK_clicked (GtkButton *button,  GtkEntry *text) {
		printf("OK button clickedn");
		gchar *text1; 

		text1 = gtk_entry_get_text (text); 
		printf("%sn", text1);

}
Wenn wir jetzt kompilieren, linken und ausführen, erscheint jedesmal der Inhalt des Textfeldes in der Konsolenausgabe.

 

 

 
 

Schlagwörter: , , , , , , ,

Lubuntu 12.04: conky startet nicht mehr (Speicherzugriffsfehler)

Lubuntu 12.04: conky startet nicht mehr (Speicherzugriffsfehler)

Seit meinem Upgrade auf Lubuntu 12.04 lässt sich der Systemmonitor conky nicht mehr starten. Beim manuellen Start kommt der Fehler „Speicherzugriffsfehler“:

juergen@vostro:~$ conky
Conky: desktop window (100017e) is subwindow of root window (af)
Conky: window type - desktop
Conky: drawing to created window (0x3c00001)
Conky: drawing to double buffer
Speicherzugriffsfehler (Speicherabzug geschrieben)

Der Fehler ist bekannt, siehe: „conky seg faults if launched shortly after reboot„, allerdings scheint es noch keine zuverlässige Lösung zu geben, die Ubuntu dazu veranlasst eine gefixte Version über eine Systemaktualisierung anzubieten. Ich habe mir die Kommentare im o.g. Link angeschaut und ein Upgrade auf Version 1.9.0.2 durchgeführt – seitdem scheint das Problem behoben zu sein. Aktuell war bei mir folgende Version installiert:

juergen@vostro:/etc/apt$ conky --version
Conky 1.8.1 compiled ...for Linux 2.6.24-30-server  (x86_64)

Um ein Upgrade auf 1.9.0.2 durchzuführen, muss man die Dateien conky-std_1.9.0-2_amd64.deb und conky_1.9.0-2_all.deb herunterladen und in dieser Reihenfolge installieren. Kann sein, dass vorher die alten Versionen deinstalliert werden müssen, bei mir war das nicht notwendig. Nach der Installation der beiden Pakete sollte folgende Version (oder neuer) erscheinen:

juergen@vostro:~$ conky --version
Conky 1.9.0 compiled ... for Linux 2.6.24-29-server (x86_64)

Nach einem Reboot scheint endlich wieder alles richtig zu funktionieren 🙂

Links:
Bug Info
Upgrade conkyI like conky, the free and highly configurable system monitor on Lubuntu. But since I’ve updated to Lubuntu 12.04 I had a lot of trouble with this app. In fact it did not start, because of a segmentation fault. This was really frustrating, but I did not only update Lubuntu, in fact I updated my Linux kernel several times as well. So, no wonder, that some of my applications did not work anymore (conky, VMWare etc.).

Especially for conky, I guess I found a solution. When you read the bugs page of Ubuntu ‚conky seg faults if launched shortly after reboot‚ you will see, that this is not a hardware issue, but a general issue. I read all the comments and decided to upgrade conky to a newer version and this was the solution, at least in my case (hardware etc.). To be more precise, I have a  laptop „Vostro“ from Dell and I use a 64 bit Lubuntu 12.04.

Beforehand I worked with the following conky version:

juergen@vostro:/etc/apt$ conky --version
Conky 1.8.1 compiled ...for Linux 2.6.24-30-server  (x86_64)

Then I did it again :-), I bravely upgraded it without knowledge what will happen. If you like to share this trip with me, you haveto  download and install the following files in the same order:  conky-std_1.9.0-2_amd64.deb and conky_1.9.0-2_all.deb. Afterwards the following message should appear:

juergen@vostro:~$ conky --version
Conky 1.9.0 compiled ... for Linux 2.6.24-29-server (x86_64)

Do a reboot an everything should work fine 🙂

Links:

Bug Info

Upgrade conky

 
Hinterlasse einen Kommentar

Verfasst von - Juni 23, 2012 in Linux

 

Schlagwörter: ,

Lubuntu 12.04: Ruhezustand (Hibernate) aktivieren

Lubuntu 12.04: Ruhezustand (Hibernate) aktivieren

Seit Lubuntu 12.04 vermisse ich die Option meinen Rechner in den Ruhezustand setzen zu können. Ich kriege dann nur „not authorized“ angezeigt. Ärgerlich, denn wenn man weiß, daß man den Rechner für längere Zeit nicht braucht, aber trotzdem nicht alle Anwendungen bei der Neuanmeldung starten will. Der Ruhezustand speichert den aktuellen Zustand der Sitzung auf Festplatte und schaltet danach den Rechner aus. Schaltet man irgendwann den Rechner wieder ein, wird die Sitzung wieder von der Festplatte geladen und wieder hergestellt.

Durch Zufall bin ich auf den Link Ubuntu 12.04 tweaks: Re-enable hibernate, move the window buttons, more gestoßen und da steht doch tatsächlich die Lösung, die es sowohl auf Ubuntu, als auch auf Lubuntu 12.04 ermöglicht, den Ruhezustand zu aktivieren. Getestet habe ich das Ganze nur auf Lubuntu. Im Grunde muss man als root nur folgende Datei anlegen und editieren:

juergen@vostro:~$ sudo su -
[sudo] password for juergen: 
root@vostro:~# cd /var/lib/polkit-1/localauthority/50-local.d/
root@vostro:/var/lib/polkit-1/localauthority/50-local.d# vi hibernate.pkla

Inhalt:

[Re-enable Hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Danach funktioniert der Ruhezustand wieder über Start-Menü > Abmelden > Ruhezustand 🙂

Since I’ve installed Lubuntu 12.04 I’ve missed the hibernate mode. Sure, I could see this option in the logoff menu, but when I clicked it, I only got ’not authorized‘. This is annoying, especially when you know, you do not need your computer for a longer time, but you do not want to restart all applications when you login again. With hibernate, you save energy and money and you will get exactly the same session that you had, before you hibernate it.

By chance I found the link Ubuntu 12:04 tweaks: Re-enable hibernate, move the window buttons, more and there is actually the solution, which works on Ubuntu, as well as on Lubuntu 12.04. It allows you to really put your laptop into hibernate state. To benefit from this solution you only have to create only the following file as root and edit it as follows:

juergen@vostro:~$ sudo su -
[sudo] password for juergen: 
root@vostro:~# cd /var/lib/polkit-1/localauthority/50-local.d/
root@vostro:/var/lib/polkit-1/localauthority/50-local.d# vi hibernate.pkla

content:

[Re-enable Hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Afterwards the hibernate state could be activated with start menu > logoff > hibernate 🙂

 
Hinterlasse einen Kommentar

Verfasst von - Juni 22, 2012 in Linux

 

Schlagwörter: , , ,

SAP NW AS Java 7.3: Logging/Tracing konfigurieren und programmieren

SAP NW AS Java 7.3: Logging/Tracing konfigurieren und programmieren

Motivation

Java Applikationsserver bieten üblicherweise eine Vielzahl von Log- und Trace-Files an, anhand derer man sich über den Zustand des Servers und der Anwendungen, die auf ihm laufen, informieren kann. Wenn man eigene Applikationen für einen Applikationsserver entwickelt, sollte man diese ebenfalls mit Logging- und Tracing-Ausgaben ausstatten, um eine spätere Fehlersuche zu erleichtern. Was die SAP unter Logging und Tracing versteht, kann man auf dem Link „The Difference Between Logging and Tracing“ nachlesen. In einem aktuellen Projekt entwickle ich gerade einen WebService, der auf einem SAP Netweaver Application Server Java (SAP NW AS Java)  laufen soll. Der SAP NW AS Java ist in der aktuellen Version 7.3 installiert.

Anwendungsentwicklung

Eine Anwendung um Logging- und Tracing-Fähigkeiten zu erweitern, ist eigentlich relativ einfach. Man definiert für die Web-Anwendung an sich eine sog. Category und für die verwendeten Klassen sog. Locations (weiterführene Infos: Logging Overview). Das sieht dann etwa so aus: Man kann Ausgaben in verschiedene „Klassen“, besser gesagt „Severities“ einteilen. Z.B. Informationen, Warnungen, Fehler, Debug-Ausgaben etc. Je nachdem, wie man den Applikationsserver konfiguriert, werden die entsprechenden Meldungen ausgegeben. Für den SAP NW AS Java gibt es das Netweaver Developer Studio (NWDS), ein von der SAP angepasste Eclipse IDE. Für jeden Applikationsserver sollte man die passende NWDS Version verwenden, dann stimmen auch die Libraries mit denen des Servers überein. Beispiel:

package jkhofmann.dlinkddns.com

...
import com.sap.tc.logging.*;
...

public class TestKlasse {
	private static final Location loc = Location.getLocation("jkhofmann.dlinkddns.com.TestKlasse");
	private static final Category cat = Category.getCategory(Category.APPLICATIONS, "MeineApp");
	...

	public String testMethode(Parameter par) {
		String method="testMethode";
		loc.entering(method);
		...
		// Ausgaben:
		loc.infoT("Methode wurde mit folgenden Paramtern aufgerufen: " + par);
		loc.debugT(method, "Debugausgabe");
		...
		loc.exiting();
	}
	...
}

Nach dem Deployment ist die Anwendung bereit zur Konfiguration

Konfiguration

Damit alles schön ausgegeben wird, muss man den Applikationsserver noch entsprechend konfigurieren. Nach dem Einloggen als J2EE Admin, den Netweaver Administrator (NWA) starten und den Reiter „Fehleranalyse“ und den Unterpunkt „Protokolle und Traces“ auswählen: Hier sind zwei Punkte interessant: „Protokollkonfiguration“ und „Log Viewer“. Für die Konfiguration muss man den Link „Protokollkonfiguration“ öffnen. Die Logging-Einstellung ist  unter „Anzeigen“ durch Auswahl von „Logging-Kategorien“ zu sehen: In dieser Einstellungen sind die „Categories“ (s.o.) zu finden. Im Beispiel haben wir „CATEGORY.APPLICATIONS“ angegeben, d.h. die Einstellungen für unsere Applikation sind unter „ROOT CATEGORY/Applications/MeineApp“ zu finden. Hier wählt man die gewünschte Gewichtung aus und speichert die Einstellungen mit „Konfiguration sichern“. Zur Einstellung für das Tracing bzw. die Locations (s.o.) wählt man unter „Anzeigen“ den Punkt „Trace Locations“ aus: Die entsprechenden Einstellungen sind unterzu finden. Wir haben im Beispiel nur eine Klasse instantiiert und finden diese unter

jkhofmann.dlinkddns.com.TestKlasse

Auch hier werden die Einstellungen mit „Konfiguration sichern“ gespeichert. Nach der Konfiguration kann man sich die Logging- und Tracing-Ausgaben mit dem „Log Viewer“ anschauen und nutzen.

Nutzung

Wie bereits eingangs erwähnt, dienen diese Ausgaben dazu, verschiedene Anwendungsfälle abzudecken:

  • Administratoren über den aktuellen „Zustand“ des Servers zu informieren
  • dem Betrieb eine Möglichkeit zu geben, die Fehlersuche zu vereinfachen
  • durch schnelles Umkonfigurieren den Detaillierungsgrad der Ausgabe zu erhöhen
  • Protokollierung verschiedenster Informationen
Hierfür ist der „Log Viewer“ zuständig. Wählen Sie hierzu unter „Sicht“ > „Open View…“ die „Developer Traces“ aus:
Beispielausgaben:

 

Fazit

Ich finde diese Funktionalität ist ein Muss für alle Applikationen, die auf einem Applikationsserver laufen. Wie oben beschrieben, ist es relativ einfach möglich, Logging- und Tracing auf einem SAP NW AS Java für eigene Anwendungen zu nutzen.

Links

 

Schlagwörter: , , , , , , ,

Lubuntu 12.04: Amazon mp3 Downloader Alternative/amz Entpacker

Lubuntu 12.04: Amazon mp3 Downloader Alternative/amz Entpacker

Motivation

Amazon bietet auf seinem Store DRM-freie MP3 Dateien an, die man mit dem Amazon MP3-Downloader herunterladen kann. Ich habe probiert die Anwendung auf 64Bit Lubuntu zu installieren und, da ich nach ca. 1/2 Stunde Arbeit, keinen Erfolg hatte, habe ich mich für clamz entschieden. Clamz ist ein Kommandozeilen-Tool, das in der Lage ist, die beim Download üblichen amz Dateien, in mp3 Dateien zu entpacken – quasi eine Alternative zum offiziellen MP3-Downloader. Das Tool ist wirklich einfach zu bedienen, im Grunde genügt ein Befehl, um die amz-Datei in eine, oder mehrere mp3-Dateien zu konvertieren.

Quicky

Vorgehensweise:

  1. clamz auf Lubuntu installieren
  2. Aktivieren des MP3-Download Modus hier
  3. Kaufen, Kaufen, Kaufen 😉
  4. amz-Datei-Download Tipp: Ich habe mir angewöhnt alle meine Download in ~/Downloads zu speichern
  5. Konsole öffnen und mit clamz die amz-Datei(en) in mp3 konvertieren
    clamz amazonmp3.amz -d ~/amazon

  6. In das Unterverzeichnis „amazon“ wechseln
  7. Musik hören und genießen 🙂
Das wars schon!

Konfiguration

Wer mehr will, sollte sich unter ~/.clamz die Datei „config“ anschauen und evtl. anpassen.

Fazit

In diesem Sinne: Weiterhin viel Spass mit legalen mp3 Downloads bei Amazon 🙂

motivation

Amazon offers in its web store DRM-free MP3 downloads. On Windows you can use the Amazon MP3-Downloader. This tool was also available on Ubuntu based operating systems, but currently not for Lubuntu 12.04. I’ve tried to install it for half an hour – no success. To save time I’ve decided to look for an alternative and found a tool called clamz. Clamz is a command line tool and is able to convert amz files in mp3 files.

quick guide

  1. install clamz on Lubuntu
  2. activate mp3 download mode on Amazon here (german site)
  3. buy, buy, buy 😉
  4. open a terminal and convert amz to mp3:
    clamz amazonmp3.amz -d ~/amazon

  5. go to subfolder ‚amazon‘
  6. listen and enjoy 🙂
Thats it!

configuration

If you want more, please have a look in your ~/.clamz folder.Especially the file „config“ is used for configuration. The comments in this file will help you to adapt it.

conclusion

Reliable and easy-to-use alternative to the official Amazon MP3 Downloader.

 
Ein Kommentar

Verfasst von - Juni 15, 2012 in Linux

 

Schlagwörter: , , , ,

Kurzmitteilung

Hallo liebe Leser, nach knapp einem Monat, habe ich mich entschieden die Kommentar-Funktion wieder zu deaktivieren. Es gab eine Vielzahl sinnvoller Kommentare, aber die große Mehrheit war Spam. Um Euch und mich nicht mit diesem Müll zu belästigen, habe ich mich dazu entschlossen. Ich hoffe Ihr habt dafür Verständnis!Dear readers, I’ve decided to disable the comment functionality on my blog, since I was overflooded with spam comments. Sorry, since I thought this might be a good idea to help us together, but currently I have no idea, how to stop this. So I decided to disable comments at all.

REW: Kommentare ausgeschaltet

 
Kommentare deaktiviert für REW: Kommentare ausgeschaltet

Verfasst von - Juni 12, 2012 in Allgemein

 

Schlagwörter: ,

Lubuntu LXDE: BADSIG Fehler beim Update des apt-Repositories

Lubuntu LXDE: BADSIG Fehler beim Update des apt-Repositories

Der o.g. Fehler ließ sich auf meiner Lubuntu Installation, durch folgende Befehle beheben:

sudo apt-get clean 
cd /var/lib/apt 
sudo mv lists lists.old 
sudo mkdir -p lists/partial 
sudo apt-get clean 
sudo apt-get update

Weitere Informationen: http://maketecheasier.com

I resolved the error mentioned in the subject with the following commands:

sudo apt-get clean 
cd /var/lib/apt 
sudo mv lists lists.old 
sudo mkdir -p lists/partial 
sudo apt-get clean 
sudo apt-get update

Additional information: http://maketecheasier.com

 
Hinterlasse einen Kommentar

Verfasst von - Juni 10, 2012 in Linux

 

Schlagwörter: , , ,