blog

Wochenend-Projekt – RSS-Bridge für Tom’s Touché

Dieses kleine Projekt entstand aus zwei Überlegungen:

Leider bietet die taz keinen dedizierten Feed für den Touché an. Zum Glück gibt es aber eine Software namens RSS-Bridge, die Tools bereitstellt, um eine Website zu scrapen und einen RSS-Feed zu erstellen.

Continue reading Wochenend-Projekt – RSS-Bridge für Tom’s Touché

NodeJS: async.queue zeigt standardmäßig keine Fehlermeldungen an

Derzeit erstelle ich einen benutzerdefinierten Web-Crawler und die einfachste Methode zur Implementierung von parallelen Funktionen ist die Verwendung des npm-Pakets „async“.

Während des Programmierens stieß ich auf das Problem, dass das Programm nicht richtig funktionierte, aber das Terminal keine Fehler anzeigte.

Also habe ich die Warteschlangenfunktion außerhalb von async getestet und sie hat wie erwartet einen Fehler angezeigt. Was war hier los?

Es stellte sich heraus, dass async.queue standardmäßig Fehler abfängt und dass man sie explizit behandeln muss. Dies kann durch Hinzufügen eines Fehler-Callbacks zur Warteschlange erfolgen:

var q = async.queue(function(task, callback) {
    console.log('hello ' + task.name);
    callback();
}, 2);

q.error(function(err, task) {
    console.error('task experienced an error');
});

Derzeit ist dies nicht sehr hilfreich, aber natürlich können Sie den Fehler leicht anzeigen:

q.error(function(err, task) {
    console.error(`Async error: ${err}`);
});

Da haben wir es:

Async error: ReferenceError: xxx is not defined


(Photo by LOGAN WEAVER | @LGNWVR on Unsplash)

Liste der Papers der Ig-Nobelpreis-Gewinner 2024

Frieden

An B.F. Skinner für Experimente zur Erprobung der Möglichkeit, lebende Tauben in Raketen unterzubringen, um die Flugbahnen der Raketen zu lenken

Paper

Botanik

An Jacob White und Felipe Yamashita, die nachgewiesen haben, dass für den Nachweis, dass einige echte Pflanzen die Formen benachbarter künstlicher Plastikpflanzen nachahmen.

Paper

Anatomie

An Marjolaine Willems, Quentin Hennoq, Sara Tunon de Lara, et al. für die Untersuchung, ob die Haare auf den Köpfen der meisten Menschen auf der Nordhalbkugel in dieselbe Richtung gewirbelt werden wie die Haare auf den Köpfen der meisten Menschen auf der Südhalbkugel.

Paper

Medizin

An Lieven A. Schenk, Tahmine Fadai, und Christian Büchel für den Nachweis, dass gefälschte Arzneimittel, die schmerzhafte Nebenwirkungen verursachen, wirksamer sein können als gefälschte Arzneimittel, die keine schmerzhaften Nebenwirkungen verursachen.

Paper

Physik

An James C. Liao für die Demonstration und Erklärung der Schwimmfähigkeit einer toten Forelle.

Paper

Physiologie

An Ryo Okabe, Toyofumi F. Chen-Yoshikawa, Yosuke Yoneyama, et al. für die Entdeckung, dass viele Säugetiere durch ihren Anus atmen können.

Paper

Wahrscheinlichkeit

An František Bartoš, Eric-Jan Wagenmakers, Alexandra Sarafoglou et al. dafür, dass sie sowohl theoretisch als auch in 350.757 Experimenten gezeigt haben, dass eine Münze, die man wirft, in der Regel auf der gleichen Seite landet, auf der sie begonnen hat.

Paper

Chemie

An Tess Heeremans, Antoine Deblais, Daniel Bonn, und Sander Woutersen für für den Einsatz der Chromatografie zur Trennung von betrunkenen und nüchternen Würmern.

Paper

Demografie

An Saul Justin Newman für die detektivische Arbeit bei der Entdeckung, dass viele der Menschen, die für ihr langes Leben berühmt sind, an Orten lebten, in denen die Aufzeichnungen über Geburten und Todesfälle miserabel waren.

Biologie

An Fordyce Ely und William E. Petersen, für die Explosion einer Papiertüte neben einer Katze, die auf dem Rücken einer Kuh stand, um zu erforschen, wie und wann Kühe ihre Milch verspritzen

Paper

Ich hoffe, die Papers landen irgendwann bei SciHub, ich werde sie dann verlinken.

(Foto von Marc Abrahams)

Javascript – Fließkommazahlen runden

In Javascripts Math-Bibliothek gibt es sechs unterschiedliche Funktionen, um Fließkommazahlen zu runden:

  • abs()
  • ceil()
  • floor()
  • round()
  • trunc()
  • fround()

Was ist der Unterschied zwischen diesen Funktionen?

abs()

abs() ist der Absolutwert einer Zahl. Mathematisch gesprochen ist es der Abstand einer Zahl zu Null. Da ein Abstand nicht negativ sein kann, ist der Absolutwert immer der positive Wert einer Zahl:

Math.abs(7.89012) = 7.89012
Math.abs(-7.89012) = 7.89012

ceil()

ceil() rundet einer Zahl auf den nächsten ganzzahligen Wert größer oder gleich der gegebenen Zahl auf:

Math.ceil(7.1) = 8
Math.ceil(7.8) = 8
Math.ceil(-7.1) = -7
Math.ceil(-7.8) = -7

Hierbei ist zu beachten, dass die nächstgrößere ganze Zahl von -7.1 nicht -8, sondern -7 ist.

floor()

floor() ist das Gegenstück zu ceil(), es rundet die gegebene Zahl also auf die nächstkleinere oder gleiche Zahl zu der gegebenen Zahl:

Math.floor(7.1) = 7
Math.floor(7.8) = 7
Math.floor(-7.1) = -8
Math.floor(-7.8) = -8

round()

round() rundet die gegebene Zahl auf die nächste ganze Zahl:

Math.round(7.1) = 7
Math.round(7.8) = 8
Math.round(-7.1) = -7
Math.round(-7.8) = -8

Die Funktion arbeitet mathematisch korrekt:

math.round(7.49) = 7
math.round(7.5) = 8

trunc()

trunc() schneidet einfach den Nachkommaanteil der gegebenen Zahl ab:

Math.trunc(7.1) = 7
Math.trunc(7.8) = 7
Math.trunc(-7.1) = -7
Math.trunc(-7.8) = -7

fround()

Diese Funktion benötigt man nur in speziellen Situationen, in denen man mir 32-Bit-Zahlen arbeiten muss, z. B. in der Grafik- oder Audioprogrammierung. Sie ermöglicht eine genauere Rundung als das allgemeinere round().
Hier ist eine genauere Erklärung, als sie in diesem Artikel sinnvoll ist.


(Foto von Mika Baumeister auf Unsplash)

Wochenend-Projekt: Jump to Header

Vor einiger Zeit ist mir der Browser “Nyxt” über den Weg gelaufen. Ein Feature fand ich besonders praktisch, nämlich die Möglichkeit, die Überschriften (<H1> bis <H6″>) in einem Sidepanel anzuzeigen.

Chrome verfügt seit einiger Zeit ebenfalls über einen Sidepanel. In diesem könnte man doch das gleiche Feature anzeigen. Eine kurze Suche im Webstore ergab, dass es eine entsprechende Extension nicht gibt. Es sollte doch nicht schwer sein, so etwas nachzubauen.

Am Ende war es doch etwas schwieriger als gedacht, aber doch machbar. Das Ergebnis ist die Extension “Jump to Heading“, die in einer frühen Version auf Github verfügbar ist.

Momentan muss die Extension noch über “Load unpacked installiert werden, da sie auf alle URLs zugreifen muss, und mit dieser Einstellung dauert der Review bei Google immer etwas länger (und meistens haben die auch noch was anderes zu meckern).

Download: Jump to Heading v0.1

Update: Die Extension ist jetzt im Web Store erhältlich.

Meine 10 einfachen UX-Regeln

Eine Benutzeroberfläche zu entwerfen, das eine gute User Experience (UX) bietet, ist nicht einfach, und ich muss zugeben, dass Design als gelernter Programmierer nicht meine Kernkompetenz ist. Dennoch habe ich im Laufe der Jahre einige grundlegende Prinzipien gesammelt, die es mir ermöglichen, eine gute Benutzeroberfläche zu erstellen.

Continue reading Meine 10 einfachen UX-Regeln

Wir benötigen ein LoDash für WordPress

Falls Du es nicht wissen solltest: LoDash ist eine Bibliothek für JavaScript, die Funktionen enthält, um alltägliche Aufgaben zu vereinfachen. Man könnte die Funktionen auch selber schreiben, aber LoDash-Funktionen sind optimiert und gut getestet, somit muss man das Rad nicht neu erfinden.

Das Problem

WordPress ist ein wenig wie eine Programmiersprache. Man hat eine Anzahl an grundlegenden Funktionen, die man zu einer vollständigen Applikation zusammensetzt.

Und genau wie bei einer Programmiersprache werden viele Räder neu erfunden.

Continue reading Wir benötigen ein LoDash für WordPress

VSCode Tastaturkürzel, die ich tatsächlich benutze

Visual Studio Code enthält Fantastilliarden Tastaturkürzel, aber im täglichen Leben verwende ich nur einen Bruchteil davon. Ich habe sie zusätzlich auf Tastaturkombinationen gelegt, die einfach zu erreichen sind. Diese Dreifinger-Kürzel sind echt verrückt, während andere, die ich nie benutze, wie “Cursor Undo” auf “Ctrl-U” gelegt sind.

Bei Dir ist es vielleicht anders, aber ich bezweifle, dass die meisten BenutzerInnen viel mehr Kürzel benutzen,

Continue reading VSCode Tastaturkürzel, die ich tatsächlich benutze