International programmieren mit Zend_Translate

Mit dem im Zend Framework enthaltenen Zend Translate kann man komfortabel international programmieren.

Beispiel mit Zend_Translate_Adapter_Array:

In der de.php werden die deutschen Sprachvariablen gespeichert.

/**
 * de.php
 */
return array(
    'message1' => 'das ist die erste Nachricht'
);

In der en.php die englischen usw.

/**
 * en.php
 */
return array(
    'message1' => 'this is the first message'
);

Initialisierung und Ausgabe:

/**
 * index.php
 */
$translate= new Zend_Translate('array', './lang/en.php', 'en');
echo $translate->_("message1");

Benutzung mit smarty:

$var = $translate->_("message1");
$s->assign("var", $var);

mp4-Video 90° drehen

Mit MEncoder und folgendem Befehl kann man ein mp4-Video um 90 Grad drehen:

mencoder -vf rotate=1 -ovc lavc -oac pcm input.mp4 -o output.mp4

deb-Pakete selber bauen…

… oder: wie man Fluxbox dazu bringt, Fenster per Doppelklick zu maximieren.

Hier die Schritte für Debian-Nutzer, die mit Hilfe des Artikels Make dblclick titlebar maximize das Verhalten von Fluxbox ändern möchten.

Mit dem Befehl

apt-get build-dep fluxbox

kann man die Pakete installieren, die benötigt werden um Fluxbox zu kompilieren.

Sourcen herunterladen:

apt-get source fluxbox

In das erstellte Verzeichnis wechseln:

cd fluxbox-1.0.0+deb1

Das Souren-Archiv entpacken:

tar xvjf fluxbox-1.0.0.tar.bz2

In das erstellte Verzeichnis wechseln:

cd fluxbox-1.0.0

Die Window.cc editieren:

vim ./src/Window.cc

Dann das alte Archiv löschen …

rm fluxbox-1.0.0.tar.bz2

… und ein neues erstellen:

tar cjf fluxbox-1.0.0.tar.bz2 fluxbox-1.0.0/

Den alten Sourcen-Ordner löschen…

rm -rf fluxbox-1.0.0

… und dann das Paket bauen (in dem Ordner in dem der “debian”-Ordner ist):

dpkg-buildpackage -rfakeroot -uc -b

Danach kann das Paket (das im übergeordneten Ordner liegt) mit

dpkg -i fluxbox_1.0.0+deb1-8_i386.deb

installiert werden.

Das fertige Paket für Debian Lenny kann hier runtergeladen werden.

Multiplikationstabelle in C

Tolle Übungsaufgabe in C: eine Multiplikationstabelle.
Ausgabe (mit 3 Spalten und 4 Zeilen):

1       2       3
2       4       6
3       6       9
4       8       12

Lösungsvorschlag mit einer for-Schleife:

/*
 * Multiplikationstabelle mit for-Schleife
 *
 * by Rainer Hihn
 */

#include 

int main(void) {
	/*
	 * vertical and horizontal limit
	 */
	int hlimit;
	int vlimit;

	scanf("%d", &hlimit);
	scanf("%d", &vlimit);

	/*
	 * for loop vars
	 */
	int i;
	int j;

	for(i = 1; i <= vlimit; i++) {
		for(j = 1; j <= hlimit; j++) {
			printf("%d\t", i*j);
		}
		printf("\n");
	}	

	printf("\n");

	return 0;
}

while-Schleife:

/*
 * Multiplikationstabelle mit while-Schleife
 *
 * by Rainer Hihn
 */

#include 

int main(void) {
	/*
	 * vertical and horizontal limit
	 */
	int hlimit;
	int vlimit;

	scanf("%d", &hlimit);
	scanf("%d", &vlimit);

	 /*
	  * while loop vars
	  */
	 int i = 1;
	 int j = 1;

	while(i <= vlimit) {
		while(j <= hlimit) {
			printf("%d\t", i*j);
			j++;
		}
		j = 1;
		i++;
		printf("\n");
	}	

	printf("\n");

	return 0;
}

Eigenen Kernel unter Debian Lenny kompilieren

Mit folgenden Schritten kann man sich unter Debian Lenny einen eigenen Kernel zusammen stellen. Vorweg: man muss diese Schritte nicht in /usr/src ausführen und man kann alle Schritte ausser die Installation des neuen Kernels als User ausführen.

Erstmal die Paketlisten aktualisieren:

apt-get update

Die benötigten Pakete installieren:

apt-get install fakeroot kernel-package \
libncurses5-dev libqt3-mt-dev bzip2 build-essential

Einen Arbeitsordner erstellen:

mkdir mykernel
cd mykernel

Sich von kernel.org einen Kernel (bzw. dessen Sourcen) herunterladen. Die 2.6er-Kernel sind unter http://www.kernel.org/pub/linux/kernel/v2.6/ zu finden.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.9.tar.bz2

Die Kernel-Sourcen entpacken:

tar xvjf linux-2.6.27.9.tar.bz2

In das Sourcen-Verzeichnis wechseln:

cd linux-2.6.27.9

Reinen Tisch machen:

make clean mrproper

Man kann die aktuelle Kernel-konfiguration mit folgendem Befehl übernehmen:

cp /boot/config-`uname -r` ./.config

Die Konfiguration ändern:

make menuconfig

Mit folgenden 2 Befehlen baut man den Kernel (statt “custom” kann man auch einen eigenen Namen wählen):

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Danach wechselt man wieder in das mykernel-Verzeichnis:

cd ..

Dort liegen die 2 erstellten Dateien die man – als root – mit dpkg installiert:

dpkg -i linux-image-2.6.27.9-custom_2.6.27.9-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.27.9-custom_2.6.27.9-custom-10.00.Custom_i386.deb

Letzter Schritt:

update-initramfs -c -k 

Fertig, jetzt den PC neu starten und den neuen Kernel booten.
Danke an F.Zappa von den Debian User Forums

gif-creator online

Wer eine Seite sucht auf der man kostenlos, mit einer tollen Upload-Funktion und ohne ungewolltes Editieren der Originalbilder ein animiertes Gif erstellen kann, der wird sich für meinen neuen gif-creator interessieren.
Als Upload-Applet benutze ich SWFUpload.


» online gif creator

Tabellen unter PostgreSQL anzeigen lassen

So kann man sich die Tabellen einer Datenbank unter PostgreSQL anzeigen lassen:

SELECT table_name FROM information_schema.tables \
WHERE table_schema = 'public';

Assoziatives Array in Java

Ein assoziatives Array in Java erstellen:

import java.util.HashMap;
import java.util.Map;

(...)

Map config = new HashMap();
config.put("vorname", "Max");
config.put("nachname", "Mustermann");
String vorname = config.get("vorname");
String nachname = config.get("nachname");
System.out.println(vorname+" "+nachname);

gcc und g++ Version einstellen

Beim Kompilieren von Kernel-Modulen können Probleme auftreten, wenn die Version des eingestellten gcc/g++ Compilers eine andere ist als die, mit der der Kernel kompiliert wurde.
Deshalb kann man mit

export CC=gcc-4.1

die Version des gcc Compileres und mit

export CXX=g++-4.1

die Version des g++ Compilers einstellen.

Tabellen unter PostgreSQL ausgeben lassen

So kann man sich unter PostgreSQL die Tabellen einer Datenbank anzeigen lassen:

select table_name from information_schema.tables where \
 table_schema='public' and table_type='BASE TABLE'

« Older Entries | Newer Entries »