HOWTO Compile Objective-C in Ubuntu (11.04)
To compile Objective-C code in Ubutnu, just install gcc, gobjc, gnustep and clang.
The actual compile process for a file eg. called code.m starts with the following line:
# gcc -o code code.m -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -lgnustep-base -fconstant-string-class=NSConstantString
But, in my case there was an error: 'error: #error The current setting for native-objc-exceptions does not match that of gnustep-base ... please correct this.'
To solve this problem, do the following:
# vim /usr/include/GNUstep/GNUstepBase/GSConfig.h
:set nu
Go to line number (in my case) 221, or search for:
#define BASE_NATIVE_OBJC_EXCEPTIONS 1
Replace the line with:
#define BASE_NATIVE_OBJC_EXCEPTIONS 0
Now the compiler should work without problems!
HOWTO: Install PHP Memcache on Ubuntu
Update, install new software an restart Apache:
# apt-get update && apt-get upgrade
# apt-get install memcached php5-memcache
# /etc/init.d/apache2 restart
Now test it. Start a new memcache instance:
# memcached -u root -d -m 24 -l 127.0.0.1 -p 11211
This instance starts as root user using 24 MB as maximum cache size, listening on port 11211.
On my system, I have this process running now:
13919 ? Sl 0:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
We can test our running memcache process by connecting via Telnet:
# telnet 127.0.0.1 11211
An overview of the availiable commands, you can find here: http://lzone.de/articles/memcached.htm
If you like to change your default memcached configuration, do the following:
# vim /etc/memcached.conf
Don't forget to restart memcached afterwards:
# /etc/init.d/memcached restart
At this point you would have to start all memcached instances manually. That's a thing I wouldn't like to worry about. So move the commands to rc.local:
# vim /etc/rc.local
Add lines like this before 'exit 0':
memcached -u your-user-name -d -m 16 -l 127.0.0.1 -p 11211
Make sure every instance listens on a different port. For example: 11211, 11212, 11213... etc.
Debian: Change system language
# apt-get update
# apt-get install debconf
# dpkg-reconfigure locales
Skype logo missing on Gnome Panel in Ubuntu 11 with Classic Desktop
How so solve this problem? - Just do the following:
Press ALT+F2, and enter:
gconftool --recursive-unset /apps/panel
After the system being busy for a moment, press ALT+F1.
Your Skype icon should be visible again!
Replace a string in a file in CLI (Command Line), Linux
For instance, you would like to replace 'abc' with 'def' everywhere in your file, do the following:
cat file1.txt | sed -e 's/abc/def/' > file2.txt
HOWTO: Install ImageMagick (IMagick) for PHP on Ubuntu
If you don't have it installed already, install PEAR:
# sudo apt-get install php-pear
Install the Imagick packets:
# sudo apt-get install imagemagick libmagickwand-dev
If you don't have the PHP5 development packet on your server, you maybe also need to install the following packet:
# sudo apt-get install php5-dev
Now we can install Imagick via PECL:
# sudo pecl install imagick
At this point we have to tell PHP to use Imagick. We can achieve this by putting the following line in the php.ini config file. Just put it at the end of the file. Mine is located at /etc/php5/apache2/php.ini.
extension=imagick.so
We're nearly done. Restart your Apache2 server now:
/etc/init.d/apache2 restart
That's it!
Check CPU virtualization capability on Linux
egrep '(vmx|svm)' --color=always /proc/cpuinfo
E-Mails per Telnet vom Server löschen
Via POP3, mit Script
#!/bin/sh
username="user@myisp.com";
password="mypop3server-password";
MAX_MESS=$1
[ $# -eq 0 ] && exit 1 || :
sleep 2
echo USER $username
sleep 1
echo PASS $password
sleep 2
for (( j = 1 ; j <= $MAX_MESS; j++ ))
do
echo DELE $j
sleep 1
done
echo QUIT
Anwendung
./clean.pop3 2500 | telnet pop3.myisp.com 110
Howto deliver all messages left in your mailq.
Just type in
sendmail -q
and all your messages left in the mailq will be delivered!
HOWTO: chmod, Unix-Dateirechte verstehen und richtig setzen
Auszug: http://de.wikipedia.org/wiki/Chmod
chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix-Dateiattribute (Zugriffsrechte) verändern lassen. Das chmod-Kommando gibt es bereits seit der ersten Version des AT&T-Unix (Ende der 1970er Jahre).
Die Attributsänderungen lassen sich nur von dem Besitzer der Datei oder dem root-Benutzer durchführen.
Ruft man die chmod Manpage auf wird man folgendes lesen können:
NAME
chmod - change file mode bitsSYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
Im Laufe dieses Artikels werde ich darauf eingehen wie man die Rechtemaske mit Hilfe der symbolischen Notation oder der numerischen Notation (Oktalnotation) setzen kann.
Es gibt 3 Benutzerklassen:
1. Eigentümer (Owner)
2. Gruppe (Group)
3. Sonstige (World, Others)
Ebenfalls gibt es 3 grundlegende Rechte:
1. Lesen (Read) - r [R-Bit]
2. Schreiben (Write) - w [W-Bit]
3. Ausführen (Execute) - x [X-Bit]
Legt man in einem Verzeichnis neue Dateien oder Unterverzeichnisse an, werden die Rechte nicht vererbt. Sie müssen ggf. angepasst werden. Dies beruht darauf, dass keine ACL verwendet wird.
Ich möchte nun in der Unix-Shell die aktuellen Rechte aller Dateien eines Verzeichnises einsehen. Ich befinde mich in diesem Verzeichnis und rufe folgendes auf:
# ls -l
Als Rückmeldung erhalte ich nun zb diese Liste:
drwxrwxrwx 6 root root 4.0K 2008-11-19 18:59 .
drwx------ 9 root root 4.0K 2009-06-30 10:51 ..
drwxrwxrwx 2 root root 4.0K 2008-11-19 18:59 doc
-rw-r--r-- 1 root root 631 2008-05-07 14:19 Makefile.am
-rw-r--r-- 1 root root 22K 2008-11-19 10:03 Makefile.in
Wir lassen . und .. außer Acht und sehen uns die 3 anderen Zeilen an. Ganz links sehen wir die aktuellen Dateirechte der 3 Eintäge. 'doc' ist ein Verzeichnis, 'Makefile.am' und 'Makefile.in' sind Dateien. Dies erkennt man, da bei dem Verzeichnis vor den Rechten ganz links ein 'd' steht und bei den beiden Dateien ein '-'.
Sehen wir uns nun die Datei 'Makefile.am' an. Die Rechtemaske sieht wie folgt aus: rw-r--r--
Trennen wir diese Zeichenkette in 3 Teile auf:
rw-
r--
r--
Wir können daraus folgendes auslesen:
Eigentümer: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Gruppe: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]
Würde man diese Rechtemaske nun oktal darstellen, würde sie so aussehen: 644
Oktale Notation
1. Lesen (Read) - 4
2. Schreiben (Write) - 2
3. Ausführen (Execute) - 1
Hierzu 2 Beispiele:
Dateirecht: 755
Symbolische Notation: rwxr-xr-xEigentümer: Lesen [JA], Schreiben [JA], Ausführen [JA]
Gruppe: Lesen [JA], Schreiben [NEIN], Ausführen [JA]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [JA]Bedeutung:
Typische Dateirechte für eine ausführbare Datei (ein Programm oder ein Script). Nur der Dateinhaber kann die Datei ändern, alle anderen können lesen und ausführen.
Dateirecht: 664
Symbolische Notation: rw-rw-r--Eigentümer: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Gruppe: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]Bedeutung:
Mögliche Dateirechte für eine nicht ausführbare Datei (z.B. ein Textdokument), welche von Inhaber und Gruppe bearbeitet werden kann, vom Rest allerdings nur gelesen.
Besitzer/Gruppe
Sehen wir und nochmal folgende Zeile an:
-rw-r--r-- 1 root root 631 2008-05-07 14:19 Makefile.am
Wir finden in dieser Zeile ebenfalls 2x 'root'. Das erste 'root' sagt uns das der Besitzer der Datei 'root' heißt. Das zweite 'root' wiederum sagt uns das die Datei ebenfalls der Gruppe 'root' gehört.
Rechte zuweisen - Oktale Notation
Weisen wir der Datei 'Makefile.am' nun andere Rechte zu. Wir möchten zB. das der Eigentümer auf die Datei Lese und Schreib Zugriff hat, aber weder Gruppe noch sonst jemand darauf zugreifen kann. Wir weisen der Datei also das Recht 600 zu.
# chmod 600 Makefile.am
Wir könnten auf allen Dateien und Ordnern im Verzeichnis dieses Recht zuweisen:
# chmod 600 *
Möchten wir sogar, das alle Unterverzeichnisse und darin enthaltene Dateien auch dieses Recht zugewiesen bekommen, führen wir folgendes aus:
# chmod -R 600 *
Rechte zuweisen - Symbolische Notation
Mit der symbolischen Notation ist die Zuweisung ein kleines Bisschen komplizierter, allerdings können damit explizit einzelne Rechte für Eigentümer, Gruppen etc. hinzugefügt oder entfernt werden. Dazu gibt es folgende Regeln:
Betroffene Klasse:
u - user - Eigentümer
g - group - Gruppe
o - others - Andere
a - all - alle, equivalent zu ugo
Verwendeter Operator:
+ Fügt den angegebenen Modus der entsprechenden Klasse hinzu
- Entfernt den angegebenen Modus für die entsprechenden Klasse
= Setzt den exakten Modus für die entsprechende Klasse
Modi (Rechte):
r - read - Lesen, Verzeichnisinhalte auslesen
w - write - Schreiben
x - execute - Ausführen, Verzeichnis öffnen
Beispiele:
Fügt der Datei Lese- und Schreibrechte für die Klassen Eigentümer und Gruppe zu:
# chmod ug+rw Makefile.am
Nimmt allen Klassen jegliche Dateirechte weg:
# chmod a-rwx Makefile.am
Weist den Klassen Eigentümer und Gruppe genau die Rechte Lesen und Ausführen zu.
# chmod ug=rx Makefile.am