bla

‘Coding’
to daMax

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)
 

Quo vadis, WordPress? Heute: die unscharfen Bilder

Februar 5th, 2016, 06:49

Oh WordPress, was machst du nur für einen Mist? Mit dem letzten Update auf 4.4 kamen wieder zwei so "Features" daher, die ich per Hack deaktivieren musste, weil sie kompletter Mist sind. Zum einen wurde mein Thumbnailviewer-Plugin ausgehebelt. Okay, das ist wahrscheinlich ein Orchideenproblem.

Aber zum anderen liefert WP4.4 an Smartphones völlig unscharfe, verpixelte Bilder und das sieht dann so aus: zeig her...

 

Besser kommentieren auf dem iPhone

Februar 1st, 2016, 10:36

iPhone-OpferUser dürfen sich freuen: Das Kommentarfeld zoomt jetzt nicht mehr automatisch rein. Das ist ein "Feature" von IOS, das mir schon lange auf den Saque ging, jetzt isses endlich gefixt. Mit diesem Hack:

@media screen and (-webkit-min-device-pixel-ratio:0) {
select,
textarea,
input {
font-size: 16px;
}
}

sieht das jetzt so aus:

IMG_0986

Freu.

 

Meldody's Guide To Programming Languages

Januar 24th, 2016, 22:36

Coderhumor:

click -> full size

click -> full size
license: CC sa-nc-nd

Plankalkül is the first high-level programming language, designed by Konrad Zuse in 1945.

Powree und Oliver Knörzer aka. Sandra and Woo sollten jetzt eigentlich in meinen Feedreader gewandert sein. Leider finden sich in ihrem Feed nur die Texte, nicht aber die Bilder, was bei einem Webcomic irgendwie unvorteilhaft ist. Schade :(

PS: kann mir mal jemand diese Antwort auf den PHP-Bugreport erläutern? Bis "00-00-00 means 2000-00-00" komm' ich noch mit, aber dann wird er mir schleierhaft... und Ruby raffigarned, das macht aber auch nix.

(via dingens)
 

Conway's Game Of Life in APL

Januar 20th, 2016, 19:15

Dieses Video fasziniert mich besonders, weil eine Hälfte meines Gehirns dem Inhalt noch so grob folgen kann, die andere Hälfte dagegen schon nach kürzester Zeit zu Boden geht. 8-|

Wer nicht weiß, was Conway's Game of Life ist, klickt mal schnell hier, anstatt sich durch die dröge Theorie auf Wikipedia zu wühlen, und

APL, abgekürzt für A Programming Language, ist eine üblicherweise interpretierte Programmiersprache, deren Syntax überwiegend aus Symbolen besteht.
- Wikipedia

(via gruetze)
 

WordPress: Vom kurzfristigen Tod und der Wiederauferstehung des Thumbnailviewer-Plugin

Januar 20th, 2016, 08:19

catnap_cc-by-nc-sa_kerri-lee-smith_crOstern ist zwar noch ein bisschen hin, eine kleine Wiederauferstehungsgeschichte hat sich hier jedoch gestern Abend schon ereignet. Bis zum letzten WordPress-Update (oder so) war es hier im Blog immer so, dass verlinkte Bilder in so einem lightbox-ähnlichen Dingens aufgepoppt sind, wenn sie mit einer größeren Version desselben Bildes verlinkt waren. Wenn ich ein solches Verhalten erzwingen wollte (weil ich z.B. nur ein Wort auf die gleiche Weise verlinken wollte), musste ich einfach rel="thumbnail" in den Link schreiben und gut war's.

Seit dem letzten WP-Update (oder so) schien dieses Plugin nicht mehr zu funktionieren. Der JS-Code war mir allerdings mal wieder viel zu lang um nach der Fehlerquelle zu suchen, statt dessen fiel mir auf, dass WordPress seit Neuem(?) in jeden Bildlink ein rel="attachment wp-att-XXXX" schreibt. Das kollidiert natürlich mit einem rel="thumbnail". Nun kann man wahlweise dieses rel="attachment..." manuell aus dem Link entfernen, aber ich kenne mich, das werde ich ständig vergessen. Also habe ich mir flugs eine Methode gesucht, die das rel="attachment" entfernt. Diese habe ich dann so erweitert, dass sie statt dessen rel="thumbnail" daraus macht. Der Code lautet folgendermaßen und ist in die functions.php des aktuellen Themes zu integrieren:

/*-- das rel="attachment xxx" gegen ein rel="thumbnail" austauschen --*/
function my_remove_rel_attr($content) {
return preg_replace('/\s+rel="attachment wp-att-[0-9]+"/i', 'rel="thumbnail"', $content);
}
add_filter('the_content', 'my_remove_rel_attr');

Das Plugin gibt es übrigens hier zum Runterladen und das Bild da oben rechts zeigt auf, was ich meine.

(Bild: Kerri Lee Smith [CC BY-NC-SA]

 

Warum ich kein Demoscenecoder bin

Januar 16th, 2016, 10:04

zx-spectrum-plasmaWie der eine oder die andere sicher schon mitbekommen hat, verdiene ich meine Brötchen am Computer. Genauer gesagt mit Softwareentwicklung, mal in Java, mal in Objective-C, meistens aber im Windows-Umfeld mit VB.net oder C# (und wenn es unbedingt sein muss, zähneknirschend manchmal auch noch mit VB6 oder *seufz* VBS), mein Blog mit dem ganzen HTML/JS/CSS-Gefrickel nicht zu vergessen. Das beherrsche ich inzwischen leidlich gut, obwohl ich ehrlich gestehen muss, dass mich die ganze Chose mittlerweile doch wieder mehr langweilt als begeistert. Aber ich schweife ab.

Was ich sagen wollte: gestern Nacht hatte ich eine Idee für ein Easteregg und dazu wollte ich mal sehen, wie man einen Plasmaeffekt codet. Sowas hier. Na, und beim Suchen bin ich über diese Diskussion auf Pouët.net gestoßen, die mir mal wieder deutlich vor Augen führt, warum ich es nie zum Demoscenecoder bringen werde. Die Frage selbst verstehe ich noch, aber schon bei Punkt 3_minus in der Antwort von bdk erscheinen bei mir die ersten Fragezeichen über dem Kopf:

Exploring sw rendering can be a nice thing.

Some quick random hints looking at the code:

1) Always try to use look-up tables when it comes to computationally heavy stuff like sin,cos,tan,sqrt and friends (this should give you a good speed-up...)

2) Using integer math / fixed point math still can improve speed a lot expecially when math precision isn't a must

3_minus)
- multiply for (1/x) instead of dividing for x (if x is constant)
- when doing modulus operations where the divisor is a power of two (x % 2^n) (in your code "... % 256" should be) you can replace it with a faster bitwise AND where "(x & (2^n)) - 1", i.e. x % 256 <-equals-> x & (256 - 1).
- when dividing/multiplying for powers of two (integers) you can use bit shifting (i.e.: x * 32 <--> x << 5). Probably compilers already do these last two kinds of optimizations. (bitwise operations)

Found also this site, maybe you'll find it useful: http://student.kuleuven.be/~m0216922/CG/index.html.

und bei der Antwort von duffman steige ich endgültig aus:


IF the surface width is a power of 2 and the total pixel count is a multiple of 16
IF your buffers are in user memory
then try this

change your loops from this
buf = new int[x, y]
for(int x = 0; x < w; x++) { for(int y = 0; y < h; y++) { buf[x, y] = code here ...   to something like this int Log2(int val) { ASSERT(val > 0)
int res = -1;
while((1 << ++res) <= val); return(res - 1); } mask = w - 1 //w must be a power of 2 remember bitshift = Log2(w) pixelcount = w * h //initialize buffer like this buf = new int[pixelcount] for(int j = 0; j < pixelcount; j += 48) { for(int i = 0; i < 16; ++i, ++j) { // i is never used //if you need x and y, here is how to compute them x = j & mask y = j >> bitshift
buf[j] = palette[(cls[x,y] + paletteShift)%255];

x = (j+16) & mask
y = (j+16) >> bitshift
buf[j+16] = palette[(cls[x,y] + paletteShift)%255];

x = (j+32) & mask
y = (j+32) >> bitshift
buf[j+32] = palette[(cls[x,y] + paletteShift)%255];

x = (j+48) & mask
y = (j+48) >> bitshift
buf[j+48] = palette[(cls[x,y] + paletteShift)%255];

This memory access method gave me a better speed increase than anything else(in C)

The moral here is, dont access big buffers in user memory sequentially

while((1 << ++res) <= val); Nee ey, das wird in diesem Leben nix mehr.

 

Appendix A: The All-In-One Almost-Alphabetical Guide to Detecting Everything

Januar 11th, 2016, 18:19

appendix-a
javascript_mp3_check

Diesen ultimativen Guide zur Alleserkennung per Javascript muss ich mir einfach ins Blog kleben. Because reasons.

support | capabilities | capability | fähigkeiten | browser | check | detection | distinguish | differentiate | weiche | browserweiche

 

Mal 'ne Frage

Januar 8th, 2016, 10:17

Sind hier Webcoder anwesend?

Ich versuche, den schlimm-overheadigen laut.fm-Player da rechts noch mal "in schlank" nach zu coden. Das Ergebnis sieht bisher gar nicht mal so schlecht aus:

http://phpfiddle.org/main/code/z4iu-63hk

Könnt ihr per "Run - F9"-Knopf laufen lassen.

Songtitel, Artist und Playlist werden schon korrekt ausgelesen und im Player angezeigt. Wenn der Titel länger ist als das Display breit, wird automatisch gescrollt, ansonsten bleibt der Text einfach stehen. So weit, so gut.

Aber: die Daten werden nicht aktualisiert, wenn der Song wechselt. Die Funktion updateStationInfo() wird zwar zuverlässig alle 5 Sekunden aufgerufen (hatte ich mit einer Zufallszahl hinter dem Songtitel getestet), aber der aktuelle Titel kommt trotzdem nicht.

Habt ihr eine Ahnung, was ich übersehe?

 

Bye, bye, Shariff? (update)

November 5th, 2015, 08:13

Die Ladezeit von todamax war in den letzten Tagen ziemlich kaputt. Schuld daran war das Plugin Shariff-Wrapper, das für die "Share this shit" Knöpfe gesorgt hat. Grund war (soweit ich sehen konnte), dass irgendwas von extern geladen wurde, und der Server antwortete nicht so richtig. Hab gerade keine Zeit, mich darum zu kümmern, deshalb habe ich das Ding erstmal bis auf Weiteres deaktiviert.

Bei der Gelegenheit mal 'ne Frage:

Hast du schon mal auf einen "Share this shit"-Knopf hier im Blog geklickt?

Ergebnis anzeigen

Loading ... Loading ...

Update: Es ging um diese Knöpfe:
Bildschuss_20151111_07-59-54

und die gibt's ab sofort nicht mehr. Scheinen ja nicht wirklich sinnvoll gewesen zu sein.

 

Das Pro-AdBlock-Plugin, v1.0

November 1st, 2015, 10:05

Hurra, es ist soweit. Sergej hat in diversen Nachtschichten das von mir so sehnlich herbei gewünschte Plugin Pro Ad-Block für WordPress entwickelt und nach einigen Iterationsschritten steht nun Version 1.0 zum Download bereit. 

kann das was?

 

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.