In der Shell MP3 Dateien / Vorschau aus einem Ordner mit WAV Dateien zu konvertieren ist mit diesem Script hier bequem möglich. Dieses Script basiert auf lame und mp3cut. Viel Spaß:

#! /bin/sh
 
## <config>
 
	## .wav dir
	## format: <dir>/ use / as last character
	DIR="/home/user/wavFiles/" 
 
	## time for preview (optional)
	## format: 00:00-00:30 see mp3cut usage
	PREVIEWTiME="00:00-00:30" 
 
## </config>
 
if [ -n "${DIR}" ]; then
	if [ -d "${DIR}" ]; then
	for i in "${DIR}"*.wav; do
			NEWNAME="${i%.*}.mp3"
			lame -b 192 -h "$i" "${NEWNAME}"
			if [ -n "${PREVIEWTiME}" ]; then
				mp3cut -o "${i%.*}-preview.mp3" -t "${PREVIEWTiME}" "${NEWNAME}"
			fi		
		done
		exit 0
	else
		echo "# dirwav2mp3cut.sh - dir does not exist"
		exit 1
	fi
else
	echo "#\n# dirwav2mp3cut.sh - creates MP3 cuts in various length from .wav files in a folder.\n# Usage: Call ./dirwav2mp3cut.sh after config \n# Return: <name>-preview.mp3/\n#"
	exit 1
fi

Es sollte darauf geachtet werden, dass die Pfadangabe in DIR mit einem Schrägstrich (/) endet. Mit blanker Vorschau-Zeitangabe ist es möglich nur MP3s zu erstellen ohne diese zu schneiden:

PREVIEWTiME=""
Keine Kommentare »
 

Dateien die eigentlich UTF-8 sein sollten sind über verschiedene Ordner verteilt im ISO Format auf dem Dateisystem. Wer kennt das Problem nicht? :)
Hier ein kleines Script um ISO codierte Text Dateien rekursiv in UTF-8 codierte Dateien zu konvertieren.

#! /bin/sh
 
FILES=$(find "$1" -type f -name \*.txt)
 
for FILE in $FILES; do
	iconv -f ISO-8859-1 -t UTF-8  "${FILE}" > "${FILE}.tmp"; mv "${FILE}.tmp"  "${FILE}"
done

Die Dateierweiterung sollte nach Wunsch angepasst werden. Eine Installation von iconv ist möglicherweise nötig.

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 »
 

Nach einem Serverumzug auf einen Apache2 und PHP via mod_fcgi Server endete ein WordPress MU Update in einem Apache Internal Server Error 500.
Andere Scripte mit längere Ausführungszeit endeten ebenfalls mit einem Internal Server Error 500.

Der Apache2 Error Log brachte folgendes Ergebnis (/var/log/apache2/error.log):

[warn] mod_fcgid: read data timeout in 40 seconds
[error] [client XXX.XXX.XXX.XXX] Premature end of script headers: index.php, referer: www.example.com/dir

Die Lösung war das anpassen der maximalen Wartezeit in Sekunden bis das Apache Modul Daten vom FastCGI Programm abgfrägt. Die alte Optionsbezeichnung war / ist IPCCommTimeout. Aktuell ist der Options Name FcgidIOTimeout. Je nach Installationsdatum beide Versionen funktional oder nur eine von beiden.
Das kann in der Datei /etc/apache2/mods-enabled/fcgid.conf erledigt werden:

<IfModule mod_fcgid.c>
   FcgidIOTimeout  7200
</IfModule>

In diesem Fall ist das Timeout sehr hoch eingestellt. Der oben verwendete Wert 7200 sind 120 Minuten. So hohe Einstellungen sind für den regulären Webseiten Betrieb nicht benötigt. Mehr über diese Option hier.

Anschließend den Apache neu starten.

/etc/init.d/apache2 restart

Das wars. Was auch immer vorher versucht hattet an länger laufenden Scripten auszuführen sollte nun funktionieren.

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 »
 

Neues Blog Design

monkey-business.biz erstrahlt in neuen Design.
Ich hoffe das neue Blog Design (hübsche Schrift) findet anklang. :)

Das alte Design zur Erinnerung:
monkey-business-design-12.0

Edit:
Die Social Buttons mussten leider den Platz auf dem Blog einbüsen. Mein Resume daraus: Das Besucherclientel der Webseite verwendet die Buttons verhältnismäßig wenig. Die ständigen Änderungen an den Buttons seitens der Anbieter Google, Twitter und Facebook waren nervig. Dadurch mussten diese öfters neu positioniert werden. Die mehr oder weniger aktuelle Überwachnung (PRISM etc.) zwingt mich dazu keine fremden Elemente mehr auf meiner Internetseite einzubinden. Google Analytics wurde durch die freie Web Analyse Software Piwik ersetzt. Die USA mussten leider gehen.

Keine Kommentare »
 

Öfter bin ich inzwischen auf das Problem gestoßen Zeichenfolgen in Dateien in einem einem Verzeichnisbaum rekursiv zu ersetzen. Ich verwende folgende Methode unter Linux Systemen:

find . -type f -print0 | xargs -0 sed -i 's/STRING_ERSETZEN/NEUER_STRING/g'

“STRING_ERSETZEN” ist in diesem Beispiel die zu ersetzende Zeichenfolge. “NEUER_STRING” die Zeichenfolge die den Platz der alten Zeichenfolge “STRING_ERSETZEN” einnimmt.

Der . nach dem find Kommando bedeutet das die suche im aktuellen Verzeichnis begonnen wird. Dieser kann natürlich durch ein beliebiges Verzeichnis ersetzt werden.

Keine Kommentare »
 

Version: Magento 1.4, 1.6, 1.7

Das Magento Backend hat verfügt über keine Funktion Newsletter Adressen in Massen bzw. alle potentiellen Newsletter Empfänger zu aktivieren. Ein Deaktivieren von allen Einträgen mit wenigen Klicks ist möglich. Bei größeren Adresslisten werden hierbei zu viele Ressourcen verbraucht.

Einfach und schnell lassen sich alle Adressaten aus dem Newsletter Abo in Magento mit folgender SQL Abfrage entfernen:

UPDATE ***DB_PREFIX***_newsletter_subscriber SET subscriber_status = 3

Für alle Adressaten den Newsletter zu abonnieren ist mit beinahe der selben Abfrage möglich:

UPDATE ***DB_PREFIX***_newsletter_subscriber SET subscriber_status = 1

Unbedingt zu beachten ist das Datenbankpräfix (***DB_PREFIX***).

Keine Kommentare »
 

Ein Quellcode Schnellstarter-Paket Script für RetroShare für Leute die ihr RetroShare unter Ubuntu / Debian Linux selber komplilieren wollen.

RetroShare selber zu kompilieren ist für den normalen Anwenderbedarf nicht zu empfehlen. Eine Installation aus den Paketquellen ist für den normal Anwender sinnvoller auf Grund der automatischen Aktuallisierung und Fehlerfreiheit für wichtige Funktionen.

Was ist RetroShare?
Ein kurzer Auszug der RetroShare Webseite:

RetroShare ist eine betriebssystemunabhängige Open Source Platform, die eine private und sichere, dezentralisierte Kommunikation ermöglicht.
Diese läßt Sie sicher chatten oder Daten austauschen mit Freunden oder der Familie, indem ein vertrauenswürdiger Bereich des Netzes erzeugt wird durch die Authentifizierung von Partnern und der OpenSSL Verschlüsselung jeglicher Kommunikation.
RetroShare ermöglicht gemeinsame Datennutzung, Chats, Nachrichten, Foren oder andere Nachrichtenkanäle.

Einige Funktionen in RetroShare enthalten jedoch noch Bugs. (Stand: 28.08.12) Ich selber nutze das Programm trotz den kleinen Mängeln.

RetroShare Schnellstarter Script-Umfang

  • RetroShare Kompilierungs-Abhängigkeiten installieren
  • RetroShare Quellcode Dateien herunterladen
  • RetroShare kompilieren

Vorgehensweise zum Script
RetroShare Quellcode Schnellstarter-Paket im für den RetroShare Quellcode vorgesehenem Verzeichnis als .sh Datei erstellen.
Script Datei ausführbar machen (chmod +x ***DEIN DATEINAME***) und starten (./***DEIN DATEINAME*** :P)

#!/bin/sh
 
## get all depencies
sudo apt-get install subversion libxss-dev libqt4-dev g++ libgpgme11-dev libgpg-error-dev libupnp-dev libssl-dev libgnome-keyring-dev libbz2-dev
 
## recieve the install dir (current dir)
DIR=$(pwd)
 
## recieve copy of source in current dir
svn co https://retroshare.svn.sourceforge.net/svnroot/retroshare/trunk/ ./
 
## compile each part
cd $DIR/libbitdht/src && qmake && make clean && make -j2
cd $DIR/openpgpsdk/src && qmake && make clean && make -j2
cd $DIR/libretroshare/src && qmake && make clean && make -j2
cd $DIR/retroshare-gui/src && qmake && make clean && make -j2

Wenn alles gut verläuft. Kannst du nach dem Kompilierungs-Vorgang RetroShare über die gerade erstellte Datei ***DEIN RETROSHARE VERZEICHNIS***/retroshare-gui/src/RetroShare starten.

Die Kommandos können angepasst ebenso zum manuell kompilieren in der Shell ausgeführt werden. Hierbei ist nur auf den Verzeichnispfad ($DIR, = das RetroShare Verzeichnis) zu achten.

Keine Kommentare »
 

Aus Sicherheitsgründen ist die Anzeige von Fehlern in Magento standardmäßig deaktiviert. Sollte ein Fehler auftreten findet eine Weiterleitung zu einer Fehlerseite statt. Für Entwickler / Template Designer ist das denkbar ungünstig. Um im Magento Shopsystem die Fehleranzeige zu aktivieren muss die Datei **MAGE_ROOT***/errors/local.xml erstellt werden. Der Inhalt dieser Datei:

<?xml version="1.0"?>
<config>
    <skin>default</skin>
    <report>
        <!--
            "action" can be set to "print" to show exception on screen and "email"
            to send exception on specified email
        -->
        <action>print</action>
        <!--
            in "subject" you can set subject of email
        -->
        <subject>Store Debug Information</subject>
        <!--
            "email_address" admin email address
        -->
        <email_address></email_address>
        <!--
            "trash" is handle about trace info
            value "leave" is for store on disk
            value "delete" is for cleaning
        -->
        <trash>leave</trash>
    </report>
</config>

Eine Vorlage hierfür finden wir in /errors/local.xml.sample.

Keine Kommentare »