ryu's blog just a few lines of code

13Oct/110

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! :)

21Sep/110

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.

28Aug/110

Debian: Change system language

# apt-get update

# apt-get install debconf

# dpkg-reconfigure locales

Tagged as: , No Comments
6May/113

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!

Tagged as: , , 3 Comments
15Apr/111

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

15Mar/110

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! ;)

12Mar/100

Check CPU virtualization capability on Linux

egrep '(vmx|svm)' --color=always /proc/cpuinfo

19Jan/100

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

Tagged as: , , , No Comments
7Jan/100

Howto deliver all messages left in your mailq.

Just type in

sendmail -q

and all your messages left in the mailq will be delivered!

Tagged as: , , No Comments
30Jun/090

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 bits

SYNOPSIS
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-x

Eigentü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

Tagged as: , , No Comments