Er wollte damit nur zum ausdruck bringen wie genial der Code ist und sagen das er glatt von mir hätte kommen können.
Der Code-Schnippsel-Thread
-
-
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
-
Ersetz mal /home/tkoehler/ durch ~, damit es auch bei anderen Benutzernamen/Homeverzeichnissen fehlerfrei läuft.
-
Ersetz mal /home/tkoehler/ durch ~, damit es auch bei anderen Benutzernamen/Homeverzeichnissen fehlerfrei läuft.Beziehungsweise ${HOME}, wenn das Skript eine einheitliche Form haben soll. ~ ist ein Alias für diese Variable.
Und die Shebang-Zeile #!/bin/bash muss an den Anfang der Datei, sonst lässt sich das Skript u. U. (falls es nicht von einer anderen Shell ausgeführt wird) nicht ausführen.
-
Beziehungsweise ${HOME}, wenn das Skript eine einheitliche Form haben soll. ~ ist ein Alias für diese Variable.
Und die Shebang-Zeile #!/bin/bash muss an den Anfang der Datei, sonst lässt sich das Skript u. U. (falls es nicht von einer anderen Shell ausgeführt wird) nicht ausführen.
Wird bei Gelegenheit angepasst.
-
Quellcode des Internets:
Code
Alles anzeigenldi r16, HIGH(RAMEND) out SPH, r16 ldi r16, LOW(RAMEND) out SPL, r16 main: sbi DDRD, 3 mainloop: sbi PORTD, 3 rcall wait cbi PORTD, 3 rcall wait rjmp mainloop wait: push r16 push r17 push r18 ldi r18, 0x0a waitloop1: ldi r17, 0xff waitloop2: ldi r16, 0xff waitloop3: dec r16 brne waitloop3 dec r17 brne waitloop2 dec r18 brne waitloop1 pop r18 pop r17 pop r16 ret
-
-
Die Werte der Variablen len und key miteinander vertauschen.
-
Ich habe mein erstes Userscript/Greasemonkey-Script mit Unterstützung durch jQuery geschrieben.Hab gerade festgestellt, das selbiges Skript mit minimalen Änderungen und zusätzlichen Kommentaren immer noch in meinem Browser-Profil lebt.
Code
Alles anzeigen// ==UserScript== // @name Dubhistory Forum // @namespace http://dosamp.net/ // @version 0.4 // @description Kennzeichnet Post-IDs mit wiederholenden Endziffern im Winhistory-Forum. // @match *://www.winhistory-forum.net/showthread.php?* // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js // ==/UserScript== (function() { 'use strict'; // at the moment we're at about pid=500000, so most possible multiples are sexts at the moment var multiples_names = ['Singles', 'Dubs', 'Trips', 'Quads', 'Quints', 'Sexts']; var multiples_colors = ['', '000080', '400060', '800040', 'c00020', 'ff0000']; function multiples(pid) { // most efficient number-to-string in JavaScript var pidstr = "" + pid; var matches = 1; // moved error detection for post #1111111 here, by extrapolation reached in 2026 for (var m = 2; m <= Math.min(pidstr.length, multiples_names.length - 1); m++) { // are the m last digits equal to the last one? if (pidstr.slice(-m) === new Array(m+1).join(pidstr.slice(-1))) { matches = m; } else { break; } } return matches; } // fuck yeah, CSS selectors $('div[style="float: right; width: auto; vertical-align: top"] > span.smalltext > strong > a').each(function(index) { var pidoff = $(this).attr('href').indexOf('#pid') + 4; if (pidoff > 3) { // -1 (not found) + 4 ('#pid'.length) == 3 var pid = $(this).attr('href').substring(pidoff); var mpls = multiples(pid); if (mpls > 1) { var mmpls = pid.slice(0, -mpls) + '*' + pid.slice(-mpls) + '*'; $(this).parent().before( '<strong style="color:#' + multiples_colors[mpls-1] + '" title="' + mmpls + '">' + multiples_names[mpls-1] + '</strong> | ' ); } } }); })();
Spoiler anzeigen
-
Witness these doubles
-
Code
Alles anzeigen// ==UserScript== // @name Explain xkcd // @namespace http://dosamp.net/ // @version 0.1 // @description Add "Explain" buttons for explainxkcd.com to xkcd comics // @author DosAmp // @match *://xkcd.com/* // @grant none // ==/UserScript== (function() { 'use strict'; var comic_id = document.getElementById("middleContainer").innerText.match(new RegExp("http://xkcd.com/([1-9][0-9]*)"))[1]; var navs = document.querySelectorAll("ul.comicNav"); for (var i = 0; i < navs.length; i++) { var link_item = document.createElement("a"); link_item.href = 'http://explainxkcd.com/' + comic_id; link_item.appendChild(document.createTextNode("Explain")); var list_item = document.createElement("li"); list_item.appendChild(link_item); navs[i].insertBefore(list_item, navs[i].querySelector("li:nth-child(4)")); } })();
-
Alle Artikel eine Ebay Kleinanzeigen-Verkäufers alphabetisch auflisten.
Ebay Kleinanzeigen bietet hierfür keine Funktion. Genauso wenig bietet es eine Möglichkeit zum durchsuchen der Artikel eines Verkäufers nach Begriffen.
Dieses Script hier generiert eine alphabetisch sortierte Liste der Artikel eines Verkäufers. Die Begriffe zum splitten kann man bei Bedarf dem Thema (Hier: Schallplatten) anpassen. Am Ende erhält man eine Datei namens liste, die das Ergebnis enthält und bequem per grep durchsucht werden kann.
Bash
Alles anzeigen#!/bin/bash page_start=1 page_end=600 if ! ls ebay_pages 1>/dev/null 2>&1 then mkdir ebay_pages cd ebay_pages echo "Lade Liste herunter.." for i in $(seq ${page_start} ${page_end}) do echo "Lade Seite ${i} von ${page_end}.." wget https://www.ebay-kleinanzeigen.de/s-bestandsliste.html\?userId\=15876736\&pageNum\=${i}\&sortingField\=SORTING_DATE 2>/dev/null done fi echo "" echo "Filtere.." grep -ri "Vinyl Sammlung hier" ebay_pages/ \ | cut -d "=" -f 7 \ | grep -i "\"\/" \ | sed 's/">Vinyl/\nVinyl/gi' \ | grep -vi "anzeige" \ | sed 's/"//gi' \ | sed 's/<\/a><\/h2>//gi' \ | sed 's/\/>//gi' \ | sed 's/Vinyl Sammlung hier//gi' \ | sed 's/ - Altenstadt Vorschau//gi' \ | sed 's/ LP //gi' \ | sed 's/ Maxi //gi' \ | sed 's/ Picture LP //gi' \ | sed 's/ Pic. LP //gi' \ | sed 's/ EP //gi' \ | sed 's/2xMaxi//gi' \ | sed 's/3xLP//gi' \ | sed 's/3LP//gi' \ | sed 's/3xBox//gi' \ | sed 's/&\;//gi' \ | sed 's/Hessen//gi' \ | sed -e 's/^[ \t]*//' \ | sort > /tmp/list echo "Entferne doppeltes.." # uniq, awk und co scheiterten, daher: # http://unix.stackexchange.com/questions/30173/how-to-remove-duplicate-lines-inside-a-text-file # (untereste antwort) unset llist; declare -A llist; while read -r line do if [[ ${llist[$line]} ]] then continue else printf '%s\n' "$line" llist[$line]="x" fi done < /tmp/list > liste echo "" echo "Fertig! Alphabetisch sortiert in der Datei liste"
-
Warum überprüfst du die Existenz von ebay_pages mit ls anstatt mit test und warum verwendest du seq statt Brace Expansion? sed kann auch mehrere Kommandos entgegennehmen, somit musst du nicht so viele Prozesse spawnen.
-
Ob ich test oder ls nehme ist am Ende doch wumpe, hauptsache am Ende kommt true oder false raus.
Ich hatte am Anfang ein großes sed mit per Semikolon getrennten Befehlen. Sah von der Lesbarkeit aber scheiße aus. Separate Prozesse sind kein Ding, laufen ja stur hintereinander statt parallel.
Bei Brace-Expansion wusste ich nicht dass das auch Variablen kann. Dachte, das ginge nur mit vordefinierten Zahlen.
-
Ob ich test oder ls nehme ist am Ende doch wumpe, hauptsache am Ende kommt true oder false raus.Ich meine, test wäre inzwischen ein Bash-Builtin, wegen Performance und so … bin mir aber nicht sicher.
Bei Brace-Expansion wusste ich nicht dass das auch Variablen kann. Dachte, das ginge nur mit vordefinierten Zahlen.Öhm… da war ich zu voreilig. Tatsächlich wird die Brace Expansion vor der Variablenevaluierung durchgeführt. Schon blöd irgendwie.
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!