Wenn man die beiden Wörter, Linux und Spiele, in einem Satz einbauen müsste, käme bei vielen wohl so etwas heraus:
Unter Linux kann man keine gescheiten Spiele zocken.
Das (Spiel) läuft nicht unter Linux.
Ok, die meisten Spiele werden vorwiegend auch nicht für Linux geschrieben. Neben der Windowsversion gibt’s bestenfalls noch eine, die unter MacOS läuft. Aber dennoch existiert eine Auswahl an freien Spielen aus den verschiedensten Kategorien.
Ich persönlich spiele zwar relativ wenig am PC – Programmieren, Office und Podcasts hören mache ich da bevorzugt -, dennoch habe ich mir ein nettes Sortiment an Games zusammengestellt.
Wer es nicht unbedingt darauf anlegt, WoW (World of Warcraft), GTA (Grand Theft Auto) und Co zocken zu müssen, der kann durchaus auch mit Linuxspielen glücklich werden. Oder er oder sie versucht es mit einem entsprechenden Emulator das Spiel zum Laufen zu bekommen.
Published on January 21, 2009
in Weekend.
Ein besonderer Tag war es heute eigentlich nicht, was den Tagesablauf betrifft. Von der persönlichen Warte aus gesehen natürlich schon. Heute bin ich 24 geworden und einige haben sich auch an das Datum erinnert
.
Ich danke allen, die in irgendeiner Weise an mich gedacht und wenn möglich persönlich gratuliert haben. Wer mag, kann hier ein paar Grüße da lassen. Freuen würde ich mich auf jeden Fall darüber, wenn jemand was schreiben würde.
An euch alle herzliche Grüße,
Compiler
Published on January 20, 2009
in Laufzeit.
Noch gestern Abend habe ich schnell den Twitter Channel für Ansichten eines Compilers eingerichtet. Der Account soll hauptsächlich zur Kommunikation mit Euch, meine lieben Leser, dienen. Erreichbar ist der Channel unter der Adresse http://twitter.com/c_compiler zu erreichen.
Die akutellen “Tweets” könnt ihr dem Punkt Twitter auf der Sidebar des Blogs entnehmen.
Published on January 20, 2009
in Laufzeit.
Gegen Viertel nach sechs am Abend ertönt ein Schrei aus dem heimischen Keller. Nichts ahnend denke ich: “Nanu, was ist denn jetzt wieder los?”.
Eigentlich hatte ich vor in Ruhe zu Abend zu essen, wenn nicht Sekunden später mein Bruder im Türrahmen gestanden hätte. “Im Heizungskeller steht das Wasser! Hast du mal was zum Schöpfen.” Auf die Schnelle habe ich dann zur Schaufel des Handfegers gegriffen.
Unten angekommen, konnte ich mir ein Bild des nassen Disasters machen. In besagtem Keller stand zirka einen Zentimeter hoch das Wasser und schwappte munter vor sich hin. Mein verzweifelter Bruder fluchte über die unglückliche Situation, während ich einen Eimer nach dem anderen die Kellertreppe hinauftrug und auf dem angrenzenden Rasenstück auskippte.
Ursache des Ganzen war ein defekter Wasserhahn, der sich nicht mehr fest verschließen ließ. Während einer Pause zwischen zwei Eimer-rauftragen-und-auskippen-Durchgängen, konnte ich telefonisch einen Bekannten erreichen, der das Problem beheben konnte. Schließlich ist weder mein Bruder noch ich Experte auf solchem Gebiet
Am vergangenen Wochenende habe ich mal spontan das neue openSuSE 11.1 ausprobiert. Bei all den Neuerungen hat mir die Oberfläche des KDE 4 am besten gefallen. Schicke Metalloptik und ein verändertes Konzept, weist diese Version auf. Ich hätte ja die Installation von openSuSE 11.1 gerne behalten, wenn mein WLAN USB-Stick WG111T unter dem verwendeten Kernel gelaufen wäre. Nicht mal der mitgelieferte ndiswrapper, der mir bisher schon so gute Dienste geleistet hat, brachte die blaue LED zum Blinken.
Der MadWiFi Treiber war auch keine wirkliche Alternative, da dieser bisher keine USB Geräte unterstützt
. Also: zurück zu openSuSE 10.3 mit Kernel 2.6.22.19-0.1.
Hab mir dann die entsprechenden KDE Repositories in YaST eingefügt, um dann behutsam KDE 4 zu installieren. Zwischendrin hat auch YaST immer wieder mal gemeckert, dass sich verschiedene Bibliotheken nicht mögen und ich doch durch Löschen der einen oder weglassen des zu installierenden Programmpaketes für Ruhe sorgen möge. Nebenbei habe ich die YaST Session noch für das Updaten verschiedener, anderer installierter Programme genutzt.
Jetzt bin ich ein bisschen geschlaucht, aber jetzt ist mal wieder alles auf dem neuesten Stand.
Zufälle, die gibt’s nicht! Ich lese gerade, zu diesem Thema passend, das Buch “The Shellcoders Handbook“. Und dann erfahre ich gestern auf golem, was die bösesten Fehler in der Softwareentwicklung sind.
Ganz vorne mit dabei sind die Klassiker, wie der Pufferüberlauf und die zu lasch gehandhabte Prüfung des Inputs. Die Liste beinhaltet eine Beschreibung des jeweiligen Fehlers, welche Folgen sich aus diesem ergeben könnten und – was noch wichtiger ist – wie man in den verschiedenen Projektphasen diesen vermeiden bzw. beheben kann.
Ich werde mir mal die Liste gründlich durchlesen. Einfach aus eigenem Interesse und für (hoffentlich) sichere Software, da ja mit diesem Thema in der Ausbildung scheinbar sehr unterschiedlich umgegangen wird.
Noch immer bin ich auf der Suche nach einer Erklärung für malloc’s Verhalten Um zu schauen, was malloc so unter Windows treibt, habe ich das Programm unverändert mit Hilfe von NetBeans und Cygwin für Windows XP übersetzt, sowie anschließend mit dem Debugger laufen lassen.
Beim Blick ins Debuggerfenster dachte ich, dass ich nicht richtig sehe.

Debuggerlauf unter Windows
NetBeans zeigt mir insgesamt 20(!) C-Strings in buf an.Dabei hatte ich aber nur drei bestellt. Irgendwie ist mir das nicht geheuer bei dieser Konstellation.
Update:
Mittlerweile habe ich die Fragestellung ins Forum verlegt und auch eine Antwort erhalten. Schuld daran ist das sogenannte Alignment, sprich die einzelnen Bytes werden (unter einem 32 Bit System) in, für den Prozessor, handliche vierer Packs unterteilt.
Über dieses eigenartige Verhalten von malloc, bzw. in meinem Fall calloc, staune ich im Moment, da ich bisher keine mir einleuchtende Erklärung gefunden habe. Kurze Erklärung, wovon ich eigentlich rede: calloc und malloc sind zwei Funktionen, die man in der Programmiersprache C für das dynamische Anfordern von Speicher zur Laufzeit verwendet.
Dynamische Speicherverwaltung ist an sich ganz praktisch, wenn man zum Beispiel aus einer Datei mehrere Zeilen mit Koordinaten (x,y,z in einer Zeile) lesen will und man die genaue Anzahl der Zeilen nicht kennt. Um dieses Problem angehen zu können, habe ich mich für die Verwendung des berühmt berüchtigten Doppelpointers – char **buf - entschlossen. (Der Doppelpointer entspricht etwa einem zweidimensionalen Array: z.B. char buf[3][10])
Etwas Beispielcode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| #include <stdio .h>
#include <stdlib .h>
#include <string .h>
#define SIZE 3
int main(int argc, char** argv) {
char **buf;
int i;
char* ch = "foo";
//In buf soll spaeter der Inhalt von SIZE C-Strings Platz finden
buf = (char**) calloc(SIZE, sizeof (char*));
for(i=0; i < SIZE; i++){
// Jeder einzelne C-String soll eine Zeichenlaenge von 128 inklusive dem Null-Byte haben
buf[i] = (char*) calloc(128,sizeof(char));
// Kopiere den Text von ch an die i-te Speicherstelle von buf
strcpy(buf[i],ch);
}
for(i = 0; i < SIZE; i++) {
printf("%s -- ", buf[i]);
printf("%i\n", i);
}
for(i = 0; i < SIZE; i++)
free(buf[i]);
free(buf);
return (EXIT_SUCCESS);
} |
Continue reading ‘Wenn malloc sich mal mehr nimmt’
An Alle, die ich bisher weder per Handy noch E-Mail erreichen konnte, geht ein herzliches Prosit Neujahr raus.
Wie zu ziemlich jeden Silvester/Neujahr habe ich es mir zu Hause mit meinem lieben Vierbeiner bei einer Packung Knabberzeugs gemütlich gemacht. Na ja, so kann man das “Dog-Sitting” auch umschreiben.
Kommentare