bla

‘Coding’
to daMax

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?

 

One of the coders’ hardest problems

Oktober 28th, 2015, 09:10

Jep, das kenne ich auch recht gut...

 

VBScript-Klassen mit "Konstruktor"

Juni 29th, 2015, 08:14

Ich hasse VBS, ich hasse VBA. Dennoch werde ich gezwungen, mich damit herum zu schlagen. Gerade habe ich einen Trick entdeckt, den ich bis gerade eben noch nicht kannte: man kann Script-Klassen so etwas Ahnliches wie einen Konstruktor verpassen. Dazu deklariert man die entsprechende Methode als default und instantiiert das Objekt dann mit einer total seltsamen Syntax:

Class Person
Private m_Age
Private m_Name

Public Default Function Init(Name, Age)
m_Name = Name
m_Age = Age

Set Init = Me
End Function

Public Property Get Name
Name = m_Name
End Property
Public Property Let Name(v)
m_Name = v
End Property

Public Property Get Age
Age = m_Age
End Property
Public Property Let Age(v)
m_Age = v
End Property
End Class

Dim TheDude : Set TheDude = (New Person)("John",40)

Sachen gibt's...

 

Fefe über Softwareentwicklung

Juni 26th, 2015, 08:31

Fefe schreibt über die Einstellung des Managements zur Softwareentwicklung und er spricht mir SO aus dem Herzen dabei, dass ich schon wieder weinend Feierabend machen könnte weil ich weiß, dass meine Manager und unsere Kunden das niemals lesen geschweige den beherzigen werden.

Heutzutage liegt der Fokus bei Leuten, die über die Entwicklung von Software reden, häufig auf Management-Dingen. Sowas wie Extreme Programming. In der Ausbildung (der Hinweis kam gerade per Mail rein, und ich gebe das gerne weiter) wird der Eindruck erweckt, man klickt sich in seinem UML-Tool ein Flowchart zusammen, und dann ist die Software fertig. Das tatsächliche Hinschreiben ist dann ein niederer Akt, den kann man ja auch einer Outsourcing-Firma in Indien überlassen.

Dieser Ansatz ist bei Software genau so falsch wie bei allen anderen Dingen. Ganze Industriezweige haben sich inzwischen dem Management und der Qualitätskontrolle von per Outsourcing hergestellten Produkten verschrieben. Der Westen macht überhaupt nur noch Management und Qualitätskontrolle, die Produkte machen die Billiglohnländer. Bei Software ist das noch nicht so, aber wenn man sich Fachzeitschriften durchliest, könnte man den Eindruck gewinnen.

Und wenn ihr schon mal beim Lesen seid, dann lest doch auch noch den hier.

 

Trolling, Level C#

Juni 20th, 2015, 09:17

trolling-level-c#

(via insomniablogging)
 

Warum Scrum und "agile" toxisch sind

Juni 9th, 2015, 19:46

Ein interessanter Rant darüber, warum agiles Projektmanagement und Scrum des Teufels sind. Random quotes:

Scrum is sold as a process for “removing impediments”, which is a nice way of saying “spotting slackers”. The problem with it is that it creates more underperformers than it roots out. It’s a surveillance state that requires individual engineers to provide fine-grained visibility into their work and rate of productivity. This is defended using the “nothing to hide” argument, but the fact is that, even for pillar-of-the-community high performers, a surveillance state is an anxiety state. The fact of being observed changes the way people work– and, in creative fields, for the worse.
[...]
Scrum and “Agile” are designed, on the other hand, for the most status-insensitive people: young, privileged males who haven’t been tested, challenged, or burned yet at work. It’s for people who think that HR and management are a waste of time and that people should just “suck it up” when demeaned or insulted.
[...]
The truth about underperformers is that you don’t need “Agile” to find out who they are. People know who they are. The reason some teams get loaded down with disengaged, incompetent, or toxic people is that no one does anything about them. That’s a people-level management problem, not a workflow-level process problem.

(via fefe)
 

Registry-Keys in VBA auf Windows 7 auslesen

Mai 27th, 2015, 09:18

Seufz. :( Mit Windows 7 gibt es auf 64-bittigen Maschinen echte Probleme wenn man versucht, Registry-Keys per VBA auszulesen.

Dieses VB-Script:

Dim objWShell
Dim RegPath: RegPath = "HKEY_LOCAL_MACHINE\SOFTWARE\pfad\zum\regkey"
Dim RegKey
Set objWShell = CreateObject("Wscript.shell")
RegKey = objWShell.RegRead(RegPath)
msgbox(regkey)

funktioniert blendend. Wenn man exakt diesen Code jedoch nach VBA stopft und rennen lässt, reagiert Windows 7 (64-bit) so:

invalid-root-in-registry-key

Hat was mit 64-Bit Architektur und hastennichgesehn zu tun. Ein erster sehr cleverer Ansatz funktioniert nicht die Bohne, weil er, statt den tatsächlichen RegKey auszulesen, einen neuen unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\pfad\zum erzeugt und dort einen Schlüssel namens regkey anlegt. Meh.

Die Lösung lautet wie folgt:

zeig her...

 

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.