Ich bin gerade über einen sehr schöne Seite gestolpert, die schön zusammen fasst was jeder über Floatingpoint Arithmetik wissen sollte: http://floating-point-gui.de/
Ich bin gerade über einen sehr schöne Seite gestolpert, die schön zusammen fasst was jeder über Floatingpoint Arithmetik wissen sollte: http://floating-point-gui.de/
Can we please start pushing the art and science of software development toward the austere? I’d love someday to hear a young coder tell a story about someone they idolized like, “There was this guy I worked with who once optimized a complicated red- black tree getting 300% performance boost. I was baffled and ask, ‘How’d you do that? That’s impossible.’ To which he responded…”
“’That’s my linked list my son.’”
Quelle: zedshaw
Wer generell dazu neigt seinen Code nicht ganz Konventionsgetreu zu formatieren dem sei folgendes Tool ans herz gelegt: astyle
Das Tool verschönert mit Leichtigkeit fast jeden noch so unlesbaren Code. Vor allem in meiner Tätigkeit als Tutor ist das ganz nützlich, wenn die Erstsemester sich erst mal daran gewöhnen müssen das Linksbündig != schön ist.
Hier mal ein kleines Beispiel:


Also ich finde das Ergebnis kann sich schon sehen lassen. (Nein ich programmiere nicht immer so, das war nur ein Beispiel um zu zeigen wie man es nicht machen sollte)
Wer wie ich unter OSX viel mit Textmate arbeitet dem sei noch folgender Link empfohlen: http://mblsha.psi-im.org/2006/11/29/formatting-your-c-code-the-easy-way/
Dort kann man sich ein Textmate-Command herunter laden das einem den Code in Textmate direkt “aufhübscht”
Ist ein prima Tool wenn es darum geht das Image eines Speichermediums auf ein anderes zu übertragen.
Gestern wollte ich das Systemimage meiner NSLU von meinem alten iPod Nano auf einen neuen 4GB USB-Stick umziehen. Und anstatt alles komplett neu zu installieren brauchte ich dafür nur 2 Befehle und 3 “Aktionen”:
Wenn alles gut gegangen ist wird man nach dem dd Befehl mit einer Ausgabe ähnlicher dieser belohnt:
7807527+0 records in 7807527+0 records out 3997453824 bytes (4.0 GB) copied, 805.927 s, 5.0 MB/s
Der langsame Durchsatz (immerhin hat der für die 4gb 13 Minuten gebraucht) liegt bei mir daran, dass ich das ganze in einer Virtuellen Maschine laufen lassen habe. Hat man ein “echtes” Linux zur Hand dürfte das wesentlich schneller sein.
Mal 3 Zeilen um Signale zu verarbeiten. Wichtig ist hierbei das SIGKILL nicht blockierbar ist (SIGTERM übrigens auch nicht ;-) )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> #include <signal.h> #include <stdlib.h> void sig_handler(int signum) { printf("Fetched Strg+cn"); exit(1); } int main (int argc, char const *argv[]) { /*catch SIGINT (strg+c)*/ signal(SIGINT,sig_handler); while(1); return 0; } |
Der Klassikertrick. Durch XOR Verknüpfungen eine Variable sparen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> int main (int argc, char const *argv[]) { int a = 1; int b = 2; printf("Start: a:%i b:%in",a,b); a=a^b; printf("a=a^b: a:%i b:%in",a,b); b=a^b; printf("b=a^b: a:%i b:%in",a,b); a=a^b; printf("a=a^b3: a:%i b:%in",a,b); return 0; } |
1 2 3 4 5 6 | #include <stdio.h> int main (void) { printf("Ich bin jetzt offiziell C-Tutorn"); return 0; } |