Man kann die Sonderzeichen durch sowas ersetzen und der Compiler akzeptierts dann. Denk dir einfach die normalen Zeichen #, {, } usw dahin und du hast nen stinknormales Hello World.

Der Code-Schnippsel-Thread
-
-
lol nett
-
Für eine kombinierte Akkuanzeige des internen und Slice-Akkus in i3status:
.i3bat.sh
Bash#!/bin/bash while true do paste /sys/class/power_supply/BAT0/uevent /sys/class/power_supply/BAT1/uevent | awk '{split($0,a,"="); split(a[2],b," "); (a[3] == "Charging" || b[1] == "Charging") ? $5 = "Charging" : $5 = (a[3] + b[1])/2; print a[1] "=" $5}' > .uevent sleep 5 done
.i3status.conf
Codeorder += "battery 2" battery 2 { integer_battery_capacity = true last_full_capacity = true path = "/home/matthias/.uevent" format = "%status %percentage %remaining"
~/.config/i3/config
Schnell und Dreckig.
-
APPLE ÜÄ?
-
C
Alles anzeigen#define _GNU_SOURCE #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <unistd.h> #include <arpa/inet.h> size_t n; void sendpx(int fd, int x, int y, const char *color) { char *str; n = asprintf(&str, "PX %3d %3d %s\n", x, y, color); write(fd, str, n); free(str); } void sendblock(int fd, int x, int y, int xlen, int ylen, const char *color) { for (int i = x; i < xlen + x; i++) { for (int j = y; j < ylen + y; j++) { sendpx(fd, i, j, color); } } } int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "Usage: %s <IP> <PORT>\n", argv[0]); exit(1); } int sockfd; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "Failed to create socket: %s\n", strerror(errno)); exit(1); } int portno = atoi(argv[2]); struct in_addr *server_ina = malloc(sizeof(struct in_addr)); if (inet_pton(AF_INET, argv[1], server_ina) != 1) { fprintf(stderr, "Could not parse address %s\n", argv[1]); exit(1); } struct sockaddr_in *server_sin = calloc(1, sizeof(struct sockaddr_in)); server_sin->sin_family = AF_INET; server_sin->sin_port = htons(portno); server_sin->sin_addr = *server_ina; if (connect(sockfd, server_sin, sizeof(*server_sin)) != 0) { fprintf(stderr, "Could not connect: %s\n", strerror(errno)); exit(1); } while (1) { sendblock(sockfd, 0, 0, 333, 35, "E40303"); sendblock(sockfd, 0, 36, 333, 35, "FF8C00"); sendblock(sockfd, 0, 71, 333, 35, "FFED00"); sendblock(sockfd, 0, 106, 333, 35, "008026"); sendblock(sockfd, 0, 141, 333, 35, "004DFF"); sendblock(sockfd, 0, 176, 333, 35, "750787"); } close(sockfd); return 0; }
-
Python
Alles anzeigen#!/usr/bin/python # -*- coding: utf-8 -*- from sense_hat import SenseHat import time, datetime hat = SenseHat() year_color = (0, 255, 0) month_color = (0, 0, 255) day_color = (255, 0, 0) hour_color = (0, 255, 0) minute_color = (0, 0, 255) second_color = (255, 0, 0) hundrefths_color = (127, 127, 0) off = (0, 0, 0) hat.clear() def display_binary(value, row, color): binary_str = "{0:8b}".format(value) for x in range(0, 8): if binary_str[x] == '1': hat.set_pixel(x, row, color) else: hat.set_pixel(x, row, off) while True: t = datetime.datetime.now() display_binary(t.year % 100, 0, year_color) display_binary(t.month, 1, month_color) display_binary(t.day, 2, day_color) display_binary(t.hour, 3, hour_color) display_binary(t.minute, 4, minute_color) display_binary(t.second, 5, second_color) display_binary(t.microsecond /10000, 6, hundrefths_color) time.sleep(0.0001)
Habe jetzte nen SenseHAT für den Pi ... und das ist eine kleine Binäre Uhr
-
C
Alles anzeigen#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <errno.h> /* gcc -Wall -Wextra -pedantic -std=c11 -Os -o "memspeed" "memspeed.c" (im Verzeichnis: /tmp) Kompilierung erfolgreich beendet. */ #define ALLOC_SIZE (1024L*1024L*1024L) void writeMemory(char *p) { struct itimerval start_value; struct itimerval end_value; long t; start_value.it_interval.tv_sec = 100; start_value.it_interval.tv_usec = 0; start_value.it_value.tv_sec = 100; start_value.it_value.tv_usec = 0; int rc1 = setitimer(ITIMER_REAL, &start_value, NULL); memset(p, 'A', ALLOC_SIZE); int rc2 = getitimer(ITIMER_REAL, &end_value); if (rc1 || rc2) perror("Timer error"); t = (start_value.it_value.tv_sec - end_value.it_value.tv_sec) * 1000000; t -= end_value.it_value.tv_usec; printf("%ld µs\n", t); } void memVerify(char *p) { for(long i = 0; i < ALLOC_SIZE; i++) { if (p[i] != 'A') { puts("Data error"); return; } } } int main(void) { char *p = NULL; p = malloc(ALLOC_SIZE); if (p) { writeMemory(p); writeMemory(p); writeMemory(p); writeMemory(p); writeMemory(p); memVerify(p); free(p); } return 0; }
-
C
Alles anzeigen#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <errno.h> /* gcc -Wall -Wextra -pedantic -std=c11 -Os -o "memspeed" "memspeed.c" (im Verzeichnis: /tmp) Kompilierung erfolgreich beendet. */ #define ALLOC_SIZE (1024L*1024L*1024L) void writeMemory(char *p) { struct itimerval start_value; struct itimerval end_value; long t; start_value.it_interval.tv_sec = 100; start_value.it_interval.tv_usec = 0; start_value.it_value.tv_sec = 100; start_value.it_value.tv_usec = 0; int rc1 = setitimer(ITIMER_REAL, &start_value, NULL); memset(p, 'A', ALLOC_SIZE); int rc2 = getitimer(ITIMER_REAL, &end_value); if (rc1 || rc2) perror("Timer error"); t = (start_value.it_value.tv_sec - end_value.it_value.tv_sec) * 1000000; t -= end_value.it_value.tv_usec; printf("%ld µs\n", t); } void memVerify(char *p) { for(long i = 0; i < ALLOC_SIZE; i++) { if (p[i] != 'A') { puts("Data error"); return; } } } int main(void) { char *p = NULL; p = malloc(ALLOC_SIZE); if (p) { writeMemory(p); writeMemory(p); writeMemory(p); writeMemory(p); writeMemory(p); memVerify(p); free(p); } return 0; }
#Michael_ Code -
Ist von hier
-
My Code always Works and is Safe. Until i say otherwise.
-
Was ist an dem Code eigentlich schlecht bzw verbesserungswürdig?
Bin gerade dabei, nachzuvollziehen, was er genau macht. -
Der Code ist wunderbar, der Doktor hat ihn nur nicht verstanden.
-
Der Code ist wunderbar, der Doktor hat ihn nur nicht verstanden.Ich hab ihn verstanden...
-
Er wollte damit nur zum ausdruck bringen wie genial der Code ist und sagen das er glatt von mir hätte kommen können.
-
Er wollte damit nur zum ausdruck bringen wie genial der Code ist und sagen das er glatt von mir hätte kommen können.Aha. Das heißt auf einer Genialitätsskala von 1-10 eine -1
-
smaller numbers are better
Aber ohne witz vielleicht war das nicht so klug was dazu zu schreiben, ich habe von dem code da keine ahnung und weiß nicht mal wie die Sprache heißt. -
Das Programm erfüllt sehr wahrscheinlich seinen namentlichen Zweck nicht, da dieser sich nur irgendwo 1 GiB virtuellen Speicher her besorgt und mit einem fixen 8-Bit-Muster (0100 0001) vollschreibt. Man müsste schon mit Inline-Assembler (z. B. CLFLUSH-/MFENCE-Instruktionen auf x86) dafür sorgen, dass die Muster tatsächlich im RAM landen. Ein "intelligenter" C-Compiler könnte vielleicht sogar die memset-Aufrufe völlig aushebeln, da der von der einen Funktion beschriebene Speicher ausschließlich von der anderen ausgelesen und sonst nicht benutzt wird - mit clang unter FreeBSD scheint laut dem Thread z. B. das gesamte Gigabyte einfach auf eine einzige Speicherseite gemappt zu werden, die mit diesem Muster gefüllt ist.
-
Das Programm erfüllt sehr wahrscheinlich seinen namentlichen Zweck nicht, da dieser sich nur irgendwo 1 GiB virtuellen Speicher her besorgt und mit einem fixen 8-Bit-Muster (0100 0001) vollschreibt. Man müsste schon mit Inline-Assembler (z. B. CLFLUSH-/MFENCE-Instruktionen auf x86) dafür sorgen, dass die Muster tatsächlich im RAM landen. Ein "intelligenter" C-Compiler könnte vielleicht sogar die memset-Aufrufe völlig aushebeln, da der von der einen Funktion beschriebene Speicher ausschließlich von der anderen ausgelesen und sonst nicht benutzt wird - mit clang unter FreeBSD scheint laut dem Thread z. B. das gesamte Gigabyte einfach auf eine einzige Speicherseite gemappt zu werden, die mit diesem Muster gefüllt ist.
Ja, gute Punkte. Die Compileroptimierungen kriegt man mit volatile und Compiler-Barriers raus, wenn sie überhaupt greifen. Die Prozessoptimierungen sind schwieriger, Cache einerseits, insbesondere Prefetcher andererseits. Was wir damals für die Messung von Speicherlatenz in NUMA-Systemen gemacht haben, ist den Speicherbereich mit Pointern auf sich selber füllen und dann zufällig shuffeln. Und dann ein paar Millionen Iteration einfach den Pointern folgen. Den Cache kriegt man in der Regel durch genügend grosse Blöcke vergiftet, und der Prefetcher kann die zufälligen Muster nicht unendlich vorhersagen. -
Danke für die Kommentare von DosAmp und gandro, da hab ich wieder ein bissel Stoff, den ich mir aneignen kann, damit ich verstehe, was ihr genau meint
-
Code
Alles anzeigen################################ # Backup Script AIO # # Author Tobias Koehler # # Mail: tk1908@gmail.com # # Version 2.1 # ################################ #!/bin/bash parameter=$1 CURRENT_CLIENT="${HOME}/.backup.current" CURRENT_SERVER="/data/nuketown/misc/.backup/.backup_current" DAY="$(date +%F)" # Syncronisierung von Dokumenten, auf ares nach athene liegen. # Ausdrückliche Warnung! Dokumente, welche auf nexus neuer sind, als auf nuketown, werden mittels --delete gelöscht! clean() { find /home/tkoehler/Musik/ -type f \( -iname "Thumbs.db" \) -exec rm -rf {} \; find /home/tkoehler/Dokumente/Beruflich/Bewerbungsunterlagen/Erledigt/ -type d \( -iname "pictures" \) -exec rm -rf {} \; find /home/tkoehler/Dokumente/Beruflich/Bewerbungsunterlagen/Erledigt/ -type f \( ! -iname "*.pdf" \) -exec rm -rf {} \; find /home/tkoehler/Dokumente/Privat/persönliches/ -type f \( ! -iname "*.tex" \) -exec rm -rf {} \; } servsync() { rsync -rvu /mnt/nuketown/ } clientbackup() { echo Cleaning clean rsync -rvu --link-dest=/data/nuketown/misc/.backup/.backup_current ${HOME}/Dokumente/ /data/nuketown/misc/Dokumente/ --delete rsync -rvu ${HOME}/Downloads /data/nuketown/misc/Incomming/ rsync -rvu ${HOME}/Musik/ /data/nuketown/music/ } clientsync() { rsync -rvu /data/nuketown/misc/Dokumente/ ${HOME}/Dokumente rsync -rvu /data/nuketown/music/ ${HOME}/Musik } rotate() { mkdir /data/nuketown/misc/.backup/.backup_$DAY } case $parameter in servsync) servsync ;; clientbackup) clientbackup ;; clientsync) clientsync ;; rotate) rotate ;; clean) clean ;; *) echo Es stehen nur die Funktionen servsync, clientbackup, clientsync, rotate und clean zur Verfügung! ;; esac
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!