<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>19/2k</title><link>https://192k.pw/</link><description>Recent content on 19/2k</description><generator>Hugo -- gohugo.io</generator><language>de-de</language><lastBuildDate>Fri, 01 May 2020 15:55:00 +0200</lastBuildDate><atom:link href="https://192k.pw/index.xml" rel="self" type="application/rss+xml"/><item><title>Hiding two-dimensional informations in alphanumeric strings</title><link>https://192k.pw/2020/05/01/hiding-two-dimensional-informations-in-alphanumeric-strings/</link><pubDate>Fri, 01 May 2020 15:55:00 +0200</pubDate><guid>https://192k.pw/2020/05/01/hiding-two-dimensional-informations-in-alphanumeric-strings/</guid><description>Sometimes you just come across a page with a bunch of images you&amp;rsquo;d like to download. Usually it&amp;rsquo;s just img tags with a src, sometimes its Base64 encoded JPEGs, occaisionally it&amp;rsquo;s JSON or even CSS1 that&amp;rsquo;s fetched after the page is done loading and other times these URLs are protected to make sure you can only view the images on this one specific website.
The website in question publishes comics. Individual pages (images) are encoded in Base64 with added garbade characters at seemingly random positions, so that you can&amp;rsquo;t just download and decode them.</description></item><item><title>Space Schnablis</title><link>https://192k.pw/2019/05/01/space-schnablis/</link><pubDate>Wed, 01 May 2019 21:41:00 +0200</pubDate><guid>https://192k.pw/2019/05/01/space-schnablis/</guid><description>Space Schnablis is an Arduino Uno sketch for use with a 3.5&amp;rdquo; ILI9486 TFT display. It uses the MCUFRIEND_kbv library and shows two platypodes flying through space with fireworks and stars in the background. Touching the screen results in even more fireworks.
Fireworks A group of sparks is called a firework, if the sparks have the same color, were created at the same time and are moving in different directions. Sparks are stored in an array which holds 64 elements.</description></item><item><title>RIFF WAVE</title><link>https://192k.pw/2018/10/20/riff-wave/</link><pubDate>Sat, 20 Oct 2018 12:49:12 +0200</pubDate><guid>https://192k.pw/2018/10/20/riff-wave/</guid><description>Busted and Blue Als im letzten Jahr Gorillaz&amp;rsquo; Humanz erschien und ich darauf hingewiesen wurde, dass die Domain busted.blue noch nicht vergeben war, wusste ich noch nicht was ich damit tun sollte. Seit ein paar Monaten liegt dort nun eine relativ Dynamische Seite, die die Lyrics des Liedes Busted and Blue beim laden verstreut1. Das allein wird schnell langweilig. Die nächste Idee war es, die Zeilen einzeln zu animieren, das Lied im Hintergrund zu spielen und die aktuelle Zeile hervorzuheben.</description></item><item><title>Custom image.Image Format in Go</title><link>https://192k.pw/2018/04/16/custom-image.image-format-in-go/</link><pubDate>Mon, 16 Apr 2018 20:14:00 +0100</pubDate><guid>https://192k.pw/2018/04/16/custom-image.image-format-in-go/</guid><description>Nachdem ich vor ein paar Wochen über Sprites in NES ROMs geschrieben habe, wollte ich gerne eine standardisiertere API anbieten als die verwendete:
Read(io.Reader) ([][]byte, error) Entschieden habe ich mich dazu, ROMs wie Bilder zu verarbeiten, wozu sich
image.Decode(io.Reader) (image.Image, error) anbietet. Es wählt einen Decoder aus zuvor registrierten Formaten aus.
Vor dem main()-Aufruf, werden alle zuvor erstellten init() Funktionen verarbeitet. Dort kann mit image.RegisterFormat ein neues Bildformat registriert werden. Die akzeptierten Argumente sind der Name des Formats (string, hier &amp;quot;nes&amp;quot;), ein fixer Teil des Headers zur Bestimmung des Formats: magic (string, Fragezeichen (?</description></item><item><title>NES Sprites</title><link>https://192k.pw/2018/03/18/nes-sprites/</link><pubDate>Sun, 18 Mar 2018 20:57:21 +0100</pubDate><guid>https://192k.pw/2018/03/18/nes-sprites/</guid><description>Ein bekanntes Format für NES-Roms ist iNES. Dessen erste drei Bereiche sind der Header, der Program ROM (PRG) und der Character ROM (CHR). PRG und CHR sind in Banks unterteilt, welche je 16 * 1024 Byte bzw. 8 * 1024 Byte groß sind.
Der Header besteht aus 16 Byte. Die erste vier lauten immer 0x4e, 0x45, 0x53 und 0x1a, was in ASCII für NES(SUB) steht. Darauf folgen zwei Byte, welche je die Anzahl der PRG- und CHR-Banks beinhalten.</description></item><item><title>[] + {} = wat.</title><link>https://192k.pw/2016/07/08/array-object-wat/</link><pubDate>Fri, 08 Jul 2016 20:10:14 +0000</pubDate><guid>https://192k.pw/2016/07/08/array-object-wat/</guid><description>In den beiden großartigen Talks Wat und The Birth &amp;amp; Death of JavaScript werden ein paar witzige Eigenheiten von JavaScript gezeigt. Die meisten davon ergeben aber - zumindest ein wenig - Sinn.
Array + Array = String › [] + [] ‹ '' Um zu verstehen, wieso Array + Array einen leeren String ergibt, sollte bekannt sein, dass JavaScript nur wenige Primitives besitzt - darunter Number und String. Laut Specification werden beide Seiten um den Addition-Operator + herum an ToPrimitive() übergeben.</description></item><item><title>CloudFlare DDoS Protection</title><link>https://192k.pw/2015/11/04/cloudflare-ddos-protection/</link><pubDate>Wed, 04 Nov 2015 21:08:29 +0000</pubDate><guid>https://192k.pw/2015/11/04/cloudflare-ddos-protection/</guid><description>Das Problem mit CloudFlare ist, dass man Seiten im I&amp;rsquo;m Under Attack Mode schlecht curlen kann.
Beim ersten Aufruf sendet CF eine Seite mit Code 503 und einem __cfduid-Cookie die testen soll, ob JavaScript aktiv ist. Wenn ja, wird ein Formular gesendet:
&amp;lt;form id=&amp;quot;challenge-form&amp;quot; action=&amp;quot;/cdn-cgi/l/chk_jschl&amp;quot; method=&amp;quot;get&amp;quot;&amp;gt; &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;jschl_vc&amp;quot; value=&amp;quot;58d1a6f5ae5e8370f0ad39a57e24d4f9&amp;quot;/&amp;gt; &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;pass&amp;quot; value=&amp;quot;1446611501.924-p1DZPAloDm&amp;quot;/&amp;gt; &amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;jschl-answer&amp;quot; name=&amp;quot;jschl_answer&amp;quot;/&amp;gt; &amp;lt;/form&amp;gt; Interessanter ist aber der Weg zur jschl_answer. Im Header der Seite steht (hier leicht verschobenes) JavaScript:</description></item><item><title>Offizielle RBTV Api</title><link>https://192k.pw/2015/07/02/offizielle-rbtv-api/</link><pubDate>Thu, 02 Jul 2015 17:00:38 +0000</pubDate><guid>https://192k.pw/2015/07/02/offizielle-rbtv-api/</guid><description>Gestern Abend wurde während Bohn Jour endlich die offizielle Rocket Beans TV App - Pocket Beans - vorgestellt und damit auch endlich ein offizieller, maschinenlesbarer Sendeplan! Woohoo!
Leider sind die APIs (Ja, es gibt mehrere) nicht so ganz öffentlich. Die eigentliche API scheint auf api.rocketmgmt.de zu liegen. Außerdem exististieren mindestens zwei Wrapper auf einer Domain der Appentwickler (refreshbutton.net), über welche Dinge wie der Sendeplan, eine Liste der Sendungen und - am wenigsten spannend - einem scheinbar bei jedem User-Request neu geparsten JSON-Äquivalent zum offiziellen RSS Feed zu finden sind (Reddit).</description></item><item><title>HP Deskjet API</title><link>https://192k.pw/2014/11/08/hp-deskjet-3520-api/</link><pubDate>Sat, 08 Nov 2014 23:27:28 +0000</pubDate><guid>https://192k.pw/2014/11/08/hp-deskjet-3520-api/</guid><description>Seit bald einem Jahr wohnt das Monsternamens Deskjet 3520 nun hier im Regal und spottet mit wirren Meldungen wie &amp;ldquo;Tinte nachfüllen&amp;rdquo; oder &amp;ldquo;Ich habe ein paar Blatt Papier zerissen, bitte nachfüllen&amp;rdquo;, obwohl es eigentlich nur noch zum scannen da ist. Immerhin aber hat es ein Webinterface nebst API auf die komfortabel zugegriffen werden kann.
Daraus lässt sich bestimmt etwas machen. Scannen übers Terminal zum Beispiel. Whoo!
Ein Klick auf &amp;ldquo;Scan starten&amp;rdquo; bspw.</description></item><item><title>Peace, Love and Yakk-Joghurt</title><link>https://192k.pw/2014/09/24/peace-love-and-yakk-joghurt/</link><pubDate>Wed, 24 Sep 2014 20:20:12 +0000</pubDate><guid>https://192k.pw/2014/09/24/peace-love-and-yakk-joghurt/</guid><description>Woohoo, ein Bernd das Brot Spiel! Also &amp;hellip; ein richtiges! Und dann auch noch in Form eines Point&amp;rsquo;n&amp;rsquo;Clicks. Und zwar von &amp;hellip; Deep Silver &amp;hellip; mist. Es hätte so schön werden können.
Bernd das Brot und die Unmöglichen Gesteuert werden Chili, Briegel und Bernd. Nicht in dieser Reihenfolge, aber abwechselnd. Viel Bernd, wenig Briegel und ein einziges, nicht ganz fünf Minuten langes mal, Chili. Der Fokus liegt offensichtlich auf Berndi, was bei diesem Titel ja auch Ok ist.</description></item><item><title>Maki Mate</title><link>https://192k.pw/2014/09/07/maki-mate/</link><pubDate>Sun, 07 Sep 2014 13:44:18 +0000</pubDate><guid>https://192k.pw/2014/09/07/maki-mate/</guid><description>Maki Mate ist eine relative neue Version von fertig abgefülltem und gekühltem Mate Tee. Erstaunlicher weise stammt sie weder aus Hamburg, noch aus Berlin, sondern ist seit Herbst 2013 in Leipzig zu finden.
Maki schmeckt angenehm süß nach herber Mate und Apfelschorle mir nur wenig Kohlensäure - Und damit sind auch schon alle Inhaltsstoffe genannt. Das bedeutet aber auch, dass kein zugesetztes Koffein vorkommt und so gerade mal ~6,5mg/100ml enthalten sind.</description></item><item><title>Ulti Mate</title><link>https://192k.pw/2014/08/18/ulti-mate/</link><pubDate>Mon, 18 Aug 2014 11:49:34 +0000</pubDate><guid>https://192k.pw/2014/08/18/ulti-mate/</guid><description>Gestern Abend schauten mich aus dem Kühlregal heraus einige Mate Flaschen an, die mir bis dahin unbekannt waren: Ulti Mate. Es scheint eine der vielen neuen Berliner Mate Varianten zu sein, die dort erst seit dem 3. April verkauft wird. Wer weiß ob sie es in ein paar Monaten aus der Stadt schaffen wird.
Logo und Druck erinnern stark an Club-Mate. Auf dem Cover findet sich neben dem Wortspiel ein wenig Nachhilfe in der Geschichte der Pflanze und die Auflistung &amp;ldquo;Alkoholfrei, vegan, vegetarisch, glutenfrei, laktosefrei&amp;rdquo;.</description></item><item><title>Lorem Ipsum</title><link>https://192k.pw/2014/07/14/lorem-ipsum/</link><pubDate>Mon, 14 Jul 2014 08:58:14 +0000</pubDate><guid>https://192k.pw/2014/07/14/lorem-ipsum/</guid><description>Dolor sit amet.</description></item></channel></rss>