bla

‘Coding’
to daMax

Wieder was gelernt: Malbolge

Januar 13th, 2017, 08:55

Was es nicht alles gibt:

Malbolge ist eine gemeinfreie esoterische Programmiersprache, die 1998 von Ben Olmstead entwickelt wurde. Sie wurde nach dem achten Kreis der Hölle aus Dantes Divina Commedia benannt.

Die Besonderheit von Malbolge besteht darin, dass sie als schlimmstmögliche Programmiersprache entwickelt wurde, die am schwierigsten zu beherrschen ist.
[...]
Als Beweis für die schwierige Entwicklung von Programmen steht, dass das erste Malbolge-Programm erst zwei Jahre nach dem Entstehen der Programmiersprache entstanden ist. Dieses Programm wurde nicht von einem Menschen programmiert, sondern von einem in Lisp geschriebenen Programm unter Anwendung eines Such-Algorithmus gefunden.

 

Du weißt, das Jahr könnte anstrengend werden, wenn...

Januar 12th, 2017, 11:38

...du an deinem 4. Arbeitstag über solchen Code stolperst:

Sehr beliebt sind immer auch Getter, die gar nichts zurück geben, dafür aber munter Werte setzen:

Geht dann noch 100 Zeilen so weiter. Oder wie wäre es damit:

Ein Property, das Buttons enabled/disabled? Yeah.

Das kann ja heiter werden.

codecrap

 

WordPress: Mehr Dateitypen zum Upload erlauben

Juni 19th, 2016, 12:41

WordPress reagiert standardmäßig auf den Versuch, diverse Filetypen hochzuladen, mit der Meldung:

Sorry, this file type is not permitted for security reasons

Leider blockiert es eben auch so gängige Dateitypen wie *.svg, *.webm und *.html.

Dieses Verhalten lässt sich mit ein bisschen Code auflockern. Wer ein eigenes Theme hat, fummelt sich diesen Code in die functions.php um beispielsweise Uploads der 3 oben genannten Dateitypen zu erlauben:

/* Mehr Filetypen zum Upload erlauben ----------------------------------------*/
function my_myme_types($mime_types){
$mime_types['svg'] = 'image/svg+xml';
$mime_types['html'] = 'text/html';
$mime_types['webm'] = 'video/webm';
return $mime_types
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Wie ihr seht, muss man dazu den MIME-Type der Dateien kennen. Eine vollständige Liste aller MIME-Types findet sich hier (eine nicht so ganz vollständige lokale Kopie der Liste gibt es hier).

PS: bevor ihr anfangt, HTML-Dateien per Fileupload hochzuladen, informiert euch bitte erst, was ihr da tut, ja? In einer HTML-Seite kann eine Menge schlimmer Scheiß eingebettet sein, ich übernehme keine Haftung für gehackte Server, malwareverseuchte Rechner und ähnliches.

(via wpbeginner)
 

Mein Pro-Adblock-Overlay und uMatrix (update)

Juni 18th, 2016, 10:41

kalo meinte gestern:

Seit Monaten geht mir die Begrüßung auf Deiner Seite auf die Nerven - ich gehe immer mit Mozilla+uMatrix rein und werde angenölt, daß ich mir doch mal ... z. B. uMatrix anschaffen sollte. Nicht sehr smart. Sorry

Heute früh hatte ich gerade nichts Besseres zu tun, also habe ich meine Linux-VM angeworfen, sie erstmal stundenlang aktualisiert, einen Snapshot angelegt und anschließend uMatrix installiert. Und ja, uMatrix filtert das Overlay nicht weg :(

todamax pro adblock oops overlay

Nun muss ich kurz ausholen, um die Diskussion auf ein sinnvoles Niveau zu heben. Mein Pro-Adblock-Plugin erzeugt per JavaScript ein DIV-Element mit id="ad-space" in der Annahme, dass ein vernünftiger AdBlocker ein solches Element wegfiltert. Die meisten AdBlocker verwenden dazu die EasyList, auf der zigtausende solche Elemente hinterlegt sind, und das funktioniert problemlos.

Das Problem mit uMatrix ist, dass es eben KEINE Filterliste wie EasyList verwendet, sondern Werbung nur anhand von Hosts rauswirft. Das heißt, uMatrix filtert komplette Webserver weg, nicht aber einzelne Werbeelemente. Nun kommt das "OOPS"-Overlay ja nicht von einem anderen Webserver, sondern direkt aus meinem Blog. uMatrix erlaubt leider auch nicht, ein bestimmtes CSS-Element zu filtern, sondern arbeitet nach dem Prinzip "ganz oder gar nicht": man kann CSS komplett verbieten oder komplett erlauben, einzelne Elemente kann man nicht filtern. Oder habe ich da was falsch verstanden?

Nun stehe ich echt vor einem Problem: wie kriege ich jetzt uMatrix dazu, das "OOPS" zu filtern? Oder wie kriegt der|die Anwender|in uMatrix dazu, das OOPS wegzuwerfen?

Ich bin da im Moment mit meinem Latein echt am Ende. Ich kann mir nicht vorstellen, dass ich per JavaScript herausfinde, ob z.B. uMatrix installiert ist und dann einfach das Overlay gar nicht erst erzeuge.

Als Friedensangebot habe ich einen neuen Link "Ich will das hier nie wieder sehen" ans Ende des "OOPS" gepackt, der einen 10 Jahre gültigen Cookie setzt. Wer allerdings seinen Firefox auf "Keep Cookies Until I Close Firefox" gestellt hat oder Cookies auch mal manuell löscht, dem wird auch das nicht helfen.

PS: abgesehen davon zerstört uMatrix meinen Radioplayer, weil es ganz dreist sämtliche Verbindungen zu laut.fm unterbindet. Ich bin von uMatrix ehrlich gesagt nicht so richtig überzeugt...

Update: ich habe ein (ziemlich hässliches) Workaround gefunden: ich binde jetzt ein Javascript von einem anderen URL ein (http://www.themadguys.de/ads/adsbygoogle.js), das nur eine einzige Zeile enthält, in der eine Variable namens isAdsDisplayed auf true gesetzt wird. uMatrix verhindert das Laden dieses Scripts, somit ist isAdsDisplayed immer undefined und deshalb wird dann in showadspace() das Overlay nicht mehr angezeigt. Aber wie gesagt: das finde ich eher hässlich, weil es eben bedeutet, dass das Plugin eine Datei auf einem anderen Server benötigt. Das muss irgendwie besser gehen...

 

Programmiersprachen als Fragestellung

Juni 9th, 2016, 12:43

Eine großartige Übersicht über so ziemlich alle derzeit vertretenen Programmiersrachen in der Form von Fragestellungen.

what-if-a-programming-language-was-a-question

von @nixcraft

(via brightbyte)

what if everything was a pointer | object | dict | array | java | vb | vb.net | javascript | c#

 

The Return of Evil Bot

Juni 3rd, 2016, 16:28

Die REVISION 2016 in Saarbrücken ist zwar schon rum, trotzdem hatte ich die Einladung noch nicht gesehen. Schandeschandeschande über mich, die ist nämlich lustig (wenn man die Geduld hat, bis zum Plottwist zu warten):

PS: auch "live" erhältlich.

(via tobi)

demoscene | bad robot | party | event

 

The Vanilla List

Juni 1st, 2016, 07:58

Bildschuss_20160601_07-56-27

Eine nützliche Sammlung kleiner JavaScript-Helferlein findet ihr bei VanillaList.com.

Zum Beispiel sowas hier:

Das ist kein Bild sondern eine generierte Canvas. Einfach mal reloaden und ihr seht, was ich meine...

(via csstricks)
 

"A very interesting bug", oder: Der kaputte DateTimePicker unter Windows 64bit

April 28th, 2016, 12:53

Screenshot_160428_12-45-28Himmel hilf! Gestern Nachmittag wollte ich das ValueChanged()-Event eines DateTimePickers debuggen. Zwar sprang der Debugger am Breakpoint an, aber dann hängte sich Visual Studio auf. Und nicht nur das: auch sämtliche anderen Programme (Outlook, Lync, Explorer, die Windows-Taskleiste usw.) verweigerten die Mitarbeit und zwar genau so lange, bis ich VS hart abgeschossen hatte. Was ich jeweils 2x machen musste, weil auch das Fenster hier rechts eingefroren war.

Ich machte mich also auf die Suche und probierte diverse mehr oder weniger esoterische Lösungsvorschläge aus.

Stunden später.

Das Problem ist tatsächlich ein Problem des DateTimePickers:

(mehr …)

 

.NET madness featuring a TabControl, a DataGridView and some HeaderCells

März 8th, 2016, 11:46

I think I just found a bug in the .NET-Framework (v4.5). I can reproduce this in VS2015 in Visual Basic, I haven't tried it in C# as of yet.

Here's what I wanted to achieve:

Task: Create a Windows Form with a Tabcontrol. The second tab has a DataGridView. This DataGridView should show some values in each row's HeaderCell.

The usual approach:

tell me more...

 

Programmieren im 21. Jahrhundert

März 6th, 2016, 12:14

So true...

copy-paste-from-stack-overflow

(via runkenstein)
 

Websites in verschiedenen Auflösungen testen

März 2nd, 2016, 08:17

Bildschuss_20160302_08-13-48

Resizer ist ein praktisches Tool von Google, mit dem ihr das Verhalten einer Website in verschiedenen Auflösungen testen könnt. Leider treten die wirklichen Probleme dann doch meist erst auf den Geräten selbst zutage, aber für einen schnellen Überblick ist das schon okay. Meine Fresse, wie viele Stunden ich schon in mein CSS gesteckt habe will ich echt nicht mehr wissen...

Update: p3t3r schreibt mir:

Wenn man lieber ohne Google arbeitet, wird man bei http://www.responsinator.com ebenfalls bestens bedient. Auch hier funktionieren die Links im Simulator, man kann also in der simulierten Darstellung kreuz und quer durch die Seite navigieren.

Wenn es etwas schneller gehen soll, ist das Teil von http://mattkersley.com/responsive/ mein derzeitiger Favorit. Dieses Tool hat kürzere Ladezeiten, bietet jedoch keine Möglichkeit der Navigation in den simulierten Anzeigen.

Leider hat man immer das Problem, dass Handys generell zu groß dargestellt werden, man also immer erst mal rauszoomen muss, um eine Idee von den wirklichen Größenverhältnissen zu bekommen. Darüber hinaus stimmt das Endergebnis bei Responsinator noch etwas weniger als bei Resizer:

responsinator resizer

Links Responsinator, rechts Resizer, daneben jeweils ein iPhone 5s.

Fazit: ohne ein Testgerät geht es nicht wirklich, aber um mal eine grobe Vorstellung zu bekommen, sind die Tools schon okay.

2. Update: Chris schreibt:

Hm, es gibt doch auch beim Firefox Inspector so ein Tool (rechts oben in der tab-leiste, das 4. von rechts in der Standardkonfiguration). Wozu dann diese externen Tools verwenden?

Ach was!

(via eac)
 

else Heart.Break()

Februar 15th, 2016, 08:01

else_heartbreak_1

Seit Wochen zermartere ich mir das Hirn darüber, wie ich euch von else Heart.Break() erzählen kann, ohne gleich beim ersten Satz 99% meines geschätzten Publikums zu verlieren. Brendan Caldwell hat einen viel besseren Einstieg gefunden als ich es je könnte:

It was three o’clock in the afternoon when the drugs began to wear off. I was sitting on a bench waiting for the factory workers to leave the building behind me so I could sneak in and steal some important files. The drug in question was a nameless multicoloured square that speeds up time. I took it so I could break in sooner [...] I looked in my bag for more drugs. Nothing. But I did have a cigarette. What if…?

Aber anschließend verrät er Dinge, die unbedingt geheim bleiben sollten, also muss ich eben doch meinen eigenen Artikel schreiben.

EHB ist so ein 1%-Ding, von dem ich mir wünschte, dass auch Leute davon erfahren, die dieses Spiel nie spielen werden. DA! Schon passiert. Beim Wort "Spiel" haben die ersten aufgehört zu lesen. Haltet ein. Gewährt mir noch ein wenig eurer Aufmerksamkeit damit ich erklären kann, warum ich EHB für mehr als nur ein Spiel halte. Warum ich denke, dass jede|r einzelne von euch da draußen einen geistigen Benefit davon haben könnte, sich mit diesem Spiel zu beschäftigen, und sei es auch nur für die Dauer eines Blogartikels.

Bei else Heart.Break() dreht sich vieles um Regeln und den Bruch derselben. Wer nur tut, was die Autoritäten vorschreiben, wird hier keinen Stich machen. Ich habe diverse Videos gesehen, in denen passionierte Videospieler entnervt das Handtuch warfen, ohne der eigentlichen Story auch nur annähernd nahe gekommen zu sein. Weil sie sich an das hielten, was ihnen gesagt wurde. Weil sie nicht auf die Details achteten. Und weil das Spiel eine verdammte bitch ist, aber dazu später mehr.

Die Story

sebastian200Ich übernehme die Rolle von Sebastian und sitze eines Abends mit meinen Eltern vor meinem Geburtstagskuchen. Das Telefon klingelt. Ich gehe ran. An anderen Ende der Leitung ist ein Typ von Wellspring der mich zu meinem neuen Job beglückwünscht. Wie sich herausstellt, hatte ich mich wohl neulich als Sodaverkäufer beworben. Die Erinnerung daran fehlt mir zwar, aber bei den vielen Bewerbungen in letzter Zeit kann das schon mal vorkommen. Widerstand zwecklos, ich hätte den Job jetzt und ob ich mich nicht riesig freute? Schon am nächsten Morgen soll es losgehen in Richtung Dorisburg, ein Zimmer im ortsansässigen Hotel sei bereits gebucht und ich möge mich auf die Suche nach "unserem Mann vor Ort" machen. Der würde mir dann alles Weitere erläutern. Meine Rückfrage nach Namen oder wenigstens einer groben Beschreibung dieses Typen wird beantwortet mit "keine Ahnung, kann ja nicht so schwer sein, wirste schon finden, schönen Abend noch, tschüss und auf Wiederhören".

Seid ihr noch bei mir? Gut, denn ab jetzt wurde ein bis dahin recht gewöhnliches Computerspiel der Kategorie "Adventure" zu einem nie geahnten Head-Trip. Manchmal hatte ich fast das Gefühl, das Spiel sei eigens für mich gemacht worden. Immer wieder begegnete ich Situationen, die ich so oder ähnlich außerhalb eines Computerspiels schon einmal erlebt hatte, dann wieder erlebte ich Szenen oder entdeckte Details, über die ich noch Tage später lächeln musste, weil sie so prima in meine Welt passen, weil aber eben auch so viel von meiner Welt in dem Spiel steckt.

Eine Tür nach Irgendwo

ElseHeartBreak-00052_crAls ich in Dorisburg ankomme, ist es bereits später Abend. Die Fahrt dauerte wohl etwas länger und völlig groggy mache ich mich auf die Suche nach dem Hotel. Auf meinen Namen liegt tatsächlich eine Reservierung vor und bewaffnet mit einem riesigen Schlüssel gehe ich nach oben. Beim Anblick des Zimmers trifft mich der Schlag: 6qm, gekachelt, eine Badewanne, 2 Waschbecken. Ich stehe in einem Badezimmer. Also wieder runter. Die Dame an der Rezeption murmelt was von "Spinnt die Tür schon wieder?" und ruft einen Hotelpagen, der sich das mal angucken soll. An meiner Tür angekommen, packt der Typ ein gigantisches elektronisches Gerät aus der Tasche, fuchtelt damit in Richtung Tür und meint anschließend "Probier nochmal". Ich öffne die Tür und tatsächlich: jetzt führt sie in ein mit Teppich ausgelegtes Zimmer mit Bett, Tisch, Stuhl. Ein reguläres Hotelzimmer. Wat? Wie war das? Der Typ hat irgendwas an der Tür gefummelt und jetzt führt sie in ein anderes Zimmer?! Hm...

Ich mache mir die Welt, wide-wide-wie sie mir gefällt

Dank dieses Trailers hatte ich bereits geahnt, dass es in dem Spiel ums Hacken geht. DA! Und schon sind mir die nächsten Leser|innen verlustig gegangen. Hacken, ne? Das hat doch was mit Computern zu tun, das kapieren normale Menschen ja eh' nich', lass' ma' stecken, danke, wo gibt's hier süße Kätzchen?

Ich aber sage: NEIN! Das ganze Leben besteht aus Hacken. Ich hacke, du hackst, wir/ ihr/ sie hacken. Hacken ist ein mindset, eine Denkweise. flatter hat neulich eine hübsche Definition von Hacken geschrieben, die da lautet:

"Hacken bedeutet, sich in ein System hinein zu denken, es zu verstehen und es zu nutzen, ohne sich dabei an Handbuch und offizielle Regeln zu halten."

Ergänzen wir den Satz um "und das so gewonnene Wissen für bisher ungeahnte Anwendungen zu nutzen", so bekommen wir eine recht anschauliche Beschreibung der Welt um uns herum. Wir alle existieren in mehr oder weniger komplexen Systemen, die sich teilweise gegenseitig bedingen oder ergänzen und weit und breit kein Handbuch in Sicht. Wir alle versuchen, die vorherrschenden Bedingungen/ Regeln/ Möglichkeiten zu erahnen/ erkennen/ verstehen, um sie dann möglichst gewinnbringend für uns einzusetzen. Geht das nicht regelkonform, werden die Regeln ignoriert/ verbogen/ gebrochen, kurzum: es wird gecheatet wo man hinguckt.

Hinter den Kulissen

An dieser Stelle muss ich ein wenig vorgreifen und einen milden Spoiler anbringen. Der Hotelpage hatte einen sogenannten Modifier in der Hand. Den richtigen Modifier vorausgesetzt, sieht beispielsweise der Code für die Tür zu meinem Hotelzimmer so aus:

Als ich das kapiert hatte, gab es für mich keine keine verschlossenen Türen mehr :hehe: und so geriet ich an immer geheimnisvollere und seltsamere Orte, von denen ich hier aber gar nicht berichten möchte. Einerseits will ich potentiellen Spieler|innen nichts vorweg nehmen, andererseits will ich auch von einem ganz anderen Aspekt des Spiels berichten. Schließlich hatte ich großspurig angekündigt, EHB sei mehr als just another Computerspiel.

Just what do you think you're doing, Dave?

Bildschuss_20160120_19-43-04_cr_3EHB verlangt von euch, euch die Denkweise eines Hackers bzw. einer Häckse anzueignen. Das heißt, technische Probleme verstehen zu wollen, ein bisschen um die Ecke zu denken und Regeln nicht als allzu starr anzusehen. Es verlangt aber auch ein gerüttelt Maß an Konzentration, Durchhaltevermögen, Frustrationstoleranz und Forscherdrang.

(mehr …)

 

Mein Codestil

Februar 12th, 2016, 11:54

my-coding-style stackoverflow

(via vscd)
 

OOPS!

Es sieht so aus, als hättest du keinen Werbeblocker installiert. Das ist schlecht für dein Gehirn und manchmal auch für deinen Computer.

Bitte besuche eine der folgenden Seiten und installiere dir einen AdBlocker deiner Wahl, danach kannst du todamax wieder ohne Einschränkungen genießen.


uBlock Origin: für Chrome | Firefox | Safari

AdGuard: für Chrome | Firefox | Safari | Opera | Yandex

AdBlock Plus: für Chrome | Firefox | Safari | Opera | Internet Explorer

uMatrix: für Firefox | Chrome | Opera

Ey, lass mich einfach rein, okay?
(Setzt per Javascript einen Cookie. Wenn Du das alles deaktiviert hast, weiß ich auch nicht, wie ich dir helfen soll)

Ich will das hier nie wieder sehen.
(Setzt per Javascript einen sehr langlebigen Cookie. Wenn Du das alles deaktiviert hast oder Cookies automatisch oder auch von Hand löschst, weiß ich auch nicht, wie ich dir helfen soll)

Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.