Nach der Standardabweichung in PHP folgt die gleiche Funktion in Javascript.
Javascript Funktion Standardabweichung

var stabw = function(array) {
	var len = 0;
	var sum = array.reduce(function(pv, cv) { ++len; return pv + cv; }, 0);
	var mean = sum / len;
	var result = 0;
	for (var i = 0; i < len; i++)
		result += Math.pow(array[i] - mean, 2);
	len = (len == 1) ? len : len - 1;			
	return Math.sqrt(result / len);	
}

Als Parameter wird ein numerisches Array übergeben:

var testArray = [12, 13, 16, 18];
console.log(stabw(testArray));

In diesem Beispiel beträgt die Standardabweichung 2,753785274. Weitere Informationen zur Standardabweichung gibt es im PHP Artikel über die Standardabweichung (siehe oben).

Keine Kommentare »
 

Direkt lassen sich in Python keine Pfade für das import Statement verwenden. Es ist ebenso nur möglich Dateien aus dem selben Ordner oder von Python erkannte Module mit dem import Statement einzubinden. Mit einem kleinen Trick lassen sich beliebige Pfade angeben.

import sys
sys.path.append('/hypatia/')

Das eingefügte Modul muss unbedingt die Datei __init__.py enthalten.

Keine Kommentare »
 

Während dem arbeiten an einer Firefox Extension ist mir aufgefallen, dass keine fertige Funktion zum Schreiben bzw. erweitern / anhängen an Dateien zu finden ist. Generell scheint das Schreiben von Daten auf der Festplatte in Firefox Extensions etwas kompliziert gelöst zu sein. Hier ein kurzer Snippet zum Schreiben von Daten in eine Datei:

var writeFile = function(fileName, data) {
		var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);  
		file.append(fileName);  
		var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
		// use 0x02 | 0x10 to open file for appending.
		foStream.init(file, 0x02 | 0x10 | 0x08, 00666, 0); // write(only), append, create file
		foStream.write(data, data.length);
		foStream.close();	
}
 
writeFile('Guten Morgen', '/tmp/xxx.txt');
Keine Kommentare »
 

Standardabweichung in einem Beispiel
Der Mitarbeiter brauch an 5 Tagen 12,13,16 und 18 Minuten auf dem Weg zur Arbeit.

Berechnung Aritmethisches Mittel / Durchschnitt:
(12 + 13 + 16 + 18) / 4 = 14,75
Summiert man alle Zahlen und teilt Sie durch die Menge erhält man das Aritmethische Mittel.

Berechnung der Varianz:
((12 – 14,75)² + (13 – 14,75)² + (16 – 14,75)² + (18 – 14,75)²) / 3 = 7,583333333
Bei der Varianz Berechnung wird von jedem Wert aus der Liste das Aritmethische Mittel subtrahiert und das Ergebnis quadriert. Anschließend addiert man alle Ergebnisse und dividiert durch die Menge der Zahlen minus eins.

Berechnung der Standardabweichung:
√7,583333333 = 2,753785274
Die Standardabweichung wird berechnet indem aus der Varianz die Wurzel gezogen wird.

Die Standardabweichung beträgt 2,753785274.

PHP Funktion Standardabweichung

function stabw($valueArray) {
	$sum = array_sum($valueArray);
	$count = count($valueArray);
	$mean =	$sum / $count;
	$result = 0;
	foreach ($valueArray as $value)
		$result += pow($value - $mean, 2);
	unset($value);			
	$count = ($count == 1) ? $count : $count - 1;
	return sqrt($result / $count);
}

Die Funktion arbeitet mit allen arten von Arrays solange numerische Array Werte übergeben werden. Bsp.:

array(12, 'irgendwas' => 13, 11 => 16, 'beliebig' => 18);
Keine Kommentare »
 

Mit ein paar Zeilen HTML und CSS lässt sich im Social Web große Präsenz vortäuschen somit Schafe (Besucher) dazu zu bringen euren Like / +1 / Tweet Button zu drücken. Der Snippet kann auch verwendet werden um im WWW mit vielen Anhängern zu protzen.

Technisch lässt sich das sehr einfach mit überliegenden DIV Container lösen in denen die beliebig angepasste Anzahl an Likes / Plus ones / Tweets eingetragen wird. Das sieht dann so aus:

 
886
135


(Inzwischen müssen aus Gründen der Privatsphäre die Social Fake Layers zunächst frei geschalten werden. Zum deaktivieren der Social Fake Layers Seite neu laden)

Ich verwende genau diesen Code auch hier im Blog für die Social Buttons hier im Blog.
Dieses Ergebnis entsteht aus nachfolgendem Stück Code. Der Platzhalter ***URL*** sollte durch die URL die promoted werden soll ersetzt werden.

<style>
.sociawrap-header {
	height: 80px;
	width: 270px;
	position: relative;
}
 
.sociawrap-header .g-plusone-wrap, .sociawrap-header .twitter-share-button, .sociawrap-header .fb-like-wrap { 
	float: right; 
	margin-left: 20px;
	margin-top: 11px;
}
 
.sociawrap-header .fb-like-wrap { 
	width: 90px; 
	height: 60px; 
	margin-top: 13px;
}
 
.fb-fake {
	z-index: 999;
	position: absolute;
	right: 19px;
	top: 17px;
 	font-family: "verdana",sans-serif;
	font-size: 13px;
	background-color: #fff;
	color: #333333;
}
 
.twitter-fake {
	z-index: 999;
	position: absolute;
	right: 128px;
	top: 16px;
 	font-family: "verdana",sans-serif;
	font-size: 16px;
	background-color: #fff;
	color: #333333;
	font-family: Helvetica Neue',Arial,sans-serif;
}
 
.google-fake {
	z-index: 999;
	position: absolute;
	right: 212px;
	top: 16px;
	font-size: 16px;
	background-color: #fff;
 	color: #666666;
        font-family: arial,sans-serif;
}
</style>
<div class="sociawrap-header">
	<div class="fb-like-wrap"><div class="fb-like" href="***URL***" width="450" show_faces="false" data-layout="box_count" action="like" font="verdana"></div></div>
	<a href="http://twitter.com/share" class="twitter-share-button" data-url="***URL***" data-count="vertical" lang="de">Tweet</a>
	<div class="g-plusone-wrap"><div class="g-plusone" data-size="tall" href="***URL***"></div></div>
	<div class="right_clearer">&nbsp;</div>
	<div class="fb-fake">886</div>
	<div class="twitter-fake">225</div>
	<div class="google-fake">135</div>
</div>
Keine Kommentare »
 

Ob es ratsam ist externe Links in neuem Fenster / Tab zu öffnen bzw. Verweise generell in neuen Tabs / Fenstern zu öffnen ist umstritten. Grundsätzlich werden dabei zwei sinnvolle Ansätze vertreten.

  • Ansatz A

    Dem Benutzer ist es selbst überlassen wie sich Links nach anklicken verhalten. Alle Links öffnen sich im selben Fenster.

  • Ansatz B

    Dem Benutzer wird die Entscheidung abgenommen und externe Links öffnen sich in einem neuen Fenster / Tab. Hierbei wird die eigentliche Seite nicht verlassen.

Ich selbst tendiere zu Ansatz B. Sollte es, aus welchen Gründen auch immer, nicht möglich sein ein target=“_blank“ Server seitig in das HTML Dokument einzufügen verwende ich eine Javascript Funktion auf jQuery Basis.

Externe Links in neuem Fenster öffnen –extendable

Diese Methode ist insbesondere interessant wenn verschiedene Faktoren für die Prüfung eines Links erforderlich sind.

/* Nicht vergessen das jQuery Framework vor diesem Snippet einzubinden  */
jQuery(document).ready(function() {
	var getdomainname = function(url) {
		return url.split('/')[2].split(':')[0];
	}
	var targetblank = function() {	
		if (window.location.host != getdomainname(jQuery(this).attr('href')))
			jQuery(this).attr('target', '_blank');
	}
	jQuery('body a').each(targetblank);	
});

Mithilfe dieser Funktion können jederzeit auch einzelne Bereiche der Internetseite angesprochen werden. Strukturen ohne externe Links sollten auch aus Performance Gründen nicht von der Funktion überprüft werden.

Weitere Informationen zur Funktion getdomainname() findest du in meinem vorherigen Post: Javascript: Domain Name ermitteln (JS: get domain name) via URL

Externe Links in neuem Fenster öffnen – quicky

/* Nicht vergessen das jQuery Framework vor diesem Snippet einzubinden  */
jQuery(document).ready(function() {
        jQuery("a[href^='http']:not([href^='"+window.location.host+"'])").attr('target', '_blank');
});

Diese Methode fügt allen a Tags mit einem http:// am Anfang des href Attributes das nicht der aktuellen Domain entspricht das target=“_blank“ hinzu. Nicht zu vergessen ist, das auch hier mit Hilfe des Selektors aus einzelne Bereiche des HTML Dokuments angesprochen werden können. Dieser Vorgehensweise fehlt es leider an Erweiterbarkeit. Insbesondere für Filter Regeln zur die Auswahl der Links.

5 Kommentare »