Friday, September 10, 2010

SemanticBlog

all about web innovation

Archive for the ‘Programming’ Category

Neurale Netzwerke in PHP

Posted by Christian On März - 11 - 2010

Bei phpclasses.org ist vor Kurzem ein interessanter Artikel zum Thema Neurale Netzerke und PHP veröffentlicht worden.
Ein Beispiel zu diesem Artikel findet sich hier. Die zugehörige Bibliothek kann bei neuralmesh downgeloaded werden.

Einem Blogeintrag bei Facebook Developers von Haiping Zhao zufolge hat Facebook eine Software zur Beschleunigung von PHP entwickelt.

Die Software namens HipHop transformiert PHP-Quellcode in C++. Der so neu entstandene Sourcecode kann danach mit einem C++-Compiler in hoch optimierten Maschinencode umgewandelt und ausgeführt werden. HipHop enthält neben einem Modul zur Transformation des Sourcecodes eine Neuimplementierung der PHP-Runtime. Weiterhin wurden die wichtigsten Erweiterungen von PHP neu geschrieben und können ebenfalls mit HipHop genutzt werden.

Die Vorteile liegen auf der Hand. PHP ist einfach zu lernen und C++ sehr schnell. Mit dieser Vorgehensweise könnten in Zukunft Server besser und weniger ressourcenintensiv genutzt werden. Die Software soll als Open-Source Projekt bei github veröffentlicht werden. Gefunden habe ich sie da jedoch noch nicht :-( .

Reblog this post [with Zemanta]

Statistiken über SVN-Repositories

Posted by Christian On Februar - 3 - 2010

Softwareentwickung ist im Grunde allein von der technischen Seite betrachtet kompliziert genug, doch es schweben immer mindestens zwei Fragen im Raum, welche mir bisher noch niemand genau beantworten konnte:

  • a) Wie lange wird es dauern, bis die Software fertiggestellt ist und fehlerfrei arbeitet?
  • b) Wieviel wird der Spaß kosten?

Viele Projektmanager, benutzten die Pi-Mal-Daumen Methode. Diese ist zwar meist verbunden mit einer genauen Spezifizierung und Analyse der Module, welche zu erstellen sind, aber ganz zum Schluß wird das Ergebnis mit dem Pi-Mal-Daumen-Faktor multipliziert, der zwischen 100% und 200% Prozent liegt. Nach Erfahrung des Projektleiters und natürlich der Größe des Projekts, der momentanen Konkurrenzsituation und der Art beziehungsweise dem Budget des Kunden, versteht sich.
Komplexere existierende Verfahren sind (für kleinere Projekte ) meist sehr zeitaufwändig. Doch dieser Einsatz ist erforderlich, um für größere Softwareprojekts die Dauer und die Kosten im Vorfeld berechnen oder zumindest schätzen zu können. Einige der gängigen Verfahren sind in der nachfolgenden Tabelle kurz beschrieben.

Methode Beschreibung Voraussetzungen Einsatzgebiet Aufwand Qualität der Ergebnisse Art der Methode
Delphi-Methode, Schätzklausur Gewinnung von Information durch Mehrfachbefragung Fachleute aus unterschiedlichen Gebieten große Projekte groß genau Expertenbefragung
Analogiemethode Vergleich ähnlicher Projekte zur Aufwandsschätzung Datensammlung bereits abgeschlossener Projekte Zu Beginn eines Projekts mittel eher ungenau Vergleich
Function-Point-Methode Fachliche Anforderungen, Erfahrungswerte unter Berücksichtigung fest definierter Einflussfaktoren Messwerte große Projekte groß sehr genau Algorithmische Schätzverfahren
COCOMO2 Entwicklungsaufwand wird durch die Anzahl der Lines of Code (LOC) ermittelt. Der Basisaufwand wird mit Kostenfaktoren multipliziert. Messwerte große Projekte groß genau Algorithmische Schätzverfahren

Zumindest bei Cocomo2 und der Analogiemethode spielt die Größe eines Projektes – ausgedrückt in Lines of Code eine direkte oder indirekte Rolle.
Diese Metrik läßt sich für bestehende Projekte einfach ermitteln um für ähnliche Folgeprojekte eine Abschätzung der Größe zu treffen.
Ein interessantes Open-Source-Tool um dies zu bewerkstelligen ist statsvn.

Hierf muss sowohl java, als auch svn installiert sein. Eine Anleitung findet sich in der statsvn-wiki. Falls git benutzt wird, gibt es Möglichkeiten, die entprechenden Repositories zu exportieren und
später wieder in svn zu importieren.

Reblog this post [with Zemanta]

Find hot internet trends – what is hot or not?

Posted by Christian On Februar - 1 - 2010

Trends, Trends, Trends. Das Internet. Unzählige Informationen, Reizüberflutung…. Wie lassen sich wichtige zukünftige Trends herausfinden?
Anbei eine kleine Linksammlung mit Ressourcen zu dieser schwierigen Aufgabe:

Google Trends
Interessante Suchterme, die zu Nachrichten gehören, welche noch nicht vollständig vom Internet-Mainstream wahrgenommen wurden, finden sich oft bei Google Trends.

http://www.google.com/trends
http://www.google.com/trends/hottrends
Stündlich aktualisierter atom feed der google trends.

Ebay Research API
Ebay hat mit über 150 Millionen international registrierten Kunden sicherlich die Daten, die Sie suchen.
Es erwarten Sie hier einfache integrierbare Tools, On-Demand-Zugriff, 90-Tage-Historie, Schlüsselwort und Kategoriensuche, durchschnittliche Verkaufspreise und
vieles mehr. Ein Paradies zur Erhebung statistische Daten und für die Suche nach Trends.

Die aktuell meistverkaufen Sachen bei ebay.

Let’s Be Trends
Let’s Be Trends ist eine Web-Service-API für den Zugriff auf die Trend-Themen bei Twitter.
Die API erlaubt unter anderem die Erstellung einer Liste über aktuelle Trends und detaillierte Ansichten zu einem bestimmten Trend.

What The Trend? API
Was steht im Trend und warum? Für jeden Trend wird eine kurze Erklärung abgegeben, warum dieser hoch im Kurs bei den Usern steht.
Diese Erklärungen werden von Usern im Wiki-Stil bearbeitet. Die neuesten Fotos, Tweets und Neuigkeiten finden sich hier ebenfalls.

whatthetrend – predict
whatthetrend – zeitgeist
top 10 bei whatthetrend
Die zugehörige API

WebTrends
WebTrends Analytics bietet
Software-Lösungen für unzählige Bereiche, darunter Finanzen, Einzelhandel und Medien.

Twitter Top News Trends
Twitter Top News Trends versucht trendige Schlagzeilen durch Informationsanalyse von Twitter-Feeds zu erkennen.

trendrr
Business Intelligence
für digitale Medien und Social Media. Trendrr stellt einen Zugriff auf über fünfzig Quellen mit strukturierten Daten bereit.

trendrr developer network

Realtime trends
Monitter
Oneriot
Oneriot API

Yahoo
Yahoo buzz.
RSS-Feed bei Yahoo.

Delicious
Delicious Popular
RSS-Feed zu populären Einträgen bei Delicious

Isohunt
Isohunt Zeitgeist

Twitter:
Twitter – Trendhunter
trendsmap.com

Weitere Seiten und APIS:

 Find hot internet trends   what is hot or not?

MySQL Key Buffer Optimierung

Posted by Christian On Januar - 25 - 2010

Der MySQL KEY-BUFFER

Die wohl wichtigste Einstellung, welche in der my.cnf eines MySQL-Server vorgenommen werden sollte, ist die key_buffer_size.
Ein hoher key_buffer sorgt dafür, dass die Verarbeitung der Indizes Ihrer Tabellen direkt über den RAM-Speicher erfolgen kann,
was natürlich ein Geschwindigkeitsvorteil gegenüber dem Filesystem ist.

Der Wert dieser Variablen sollte so gewählt werden, dass der key_buffer zwischen 25% und 50% des gesamten Systemspeichers benutzt.
Die Hauptvoraussetzung hierfür ist, dass es sich um einen dedizierten Datenbank-Server handelt.
Falls neben der MySQL-Datenbank noch ein Apache-Server installiert ist, sollte der Wert eher kleiner gehalten werden.
Sollten die Indizes ihrer Tabellen viel kleiner sein als 25% – 50% des vefügbaren RAMs, können Sie den Wert ebenfalls entsprechend kleiner setzen.


Gesetzt werden kann der Key-Buffer übrigens im laufenden Betrieb mit folgendem Befehl (Anbei ein Beispiel für einen key_buffer der Größe 80MB):
mysql> SET GLOBAL key_buffer_size=80*1024*1024;

Berechnung der KEY-Buffer-Größe:

Um einen Überblick über die aktuelle Leistung ihre Systems zu erhalten, ist es ratsam sich anzeigen zu lassen,
wie oft auf das Filesystem zugegriffen werden muss, um die Schlüssel der Indizes einzulesen.


Der nachfolgende Begfehl zeigt Ihnen diese Zahl in Abständen von 10 Sekunden. Falls sie den Vorgang über einen längeren Zeitraum beobachten wollen,
setzen Sie beispielsweise -i auf 100.
$ mysqladmin extended-status -uadmin -p -r -i 10 | grep Key_reads
| Key_reads | 4516933
| Key_reads | 12
| Key_reads | 10
| Key_reads | 36
| Key_reads | 4
| Key_reads | 54
| Key_reads | 37
| Key_reads | 82

Sollten die ausgegeben Zahlen recht klein sein, stellt das noch kein Problem für die Performance Ihres MySQL-Servers da.
Ab etwa 75-100 Key_reads in der Sekunde ist es jedoch ratsam, den key_buffer (falls möglich) anzupassen.


Falls der key_buffer nicht richtig eingestellt ist, werden die Schlüssel Ihrer Indizes genauso behandelt,
wie die Datenblöcke Ihrer Tabellen, welche über das Filesystem eingelesen werden. Sollte das passieren, wird
die Benutzung von Indizes nahezu überflüssig. Die Indizes müssen aus dem RAM kommen!


Wenn Sie wissen wollen, wie viel Speicher letztendlich dem key_buffer-Caches zugewiesen werden soll,
könnte es helfen zu wissen, wie viel Platz Ihr MyISAM-Indizes sind tatsächlich auf der Festplatte verbrauchen.


Dies kann mit diesem Befehl ermittelt werden:
$ du -sch `find /var/lib/mysql/meinedatenbank/ -name “*.MYI”`

150,0M /var/lib/mysql/meinedatenbank/tabelle1.MYI
890,0M /var/lib/mysql/meinedatenbank/tabelle2.MYI
10,0M /var/lib/mysql/meinedatenbank/tabelle3.MYI
950,0M /var/lib/mysql/meinedatenbank/tabelle4.MYI
2,0G insgesamt



Für die weitergehenden Berechnungen zum key_buffer benötigen Sie einige Variablen, die in die Rechnungen mit einfließen:

mysql> SHOW VARIABLES LIKE ‘key_%’;
+————————–+————-+
| Variable_name | Value
+————————–+————-+
| key_buffer_size | 147372182
| key_cache_age_threshold | 200
| key_cache_block_size | 2048
| key_cache_division_limit | 100
+————————–+————-+
4 rows in set (0.00 sec)

mysql> SHOW STATUS LIKE ‘Key_%’;
+————————+——————+
| Variable_name | Value
+————————+——————+
| Key_blocks_not_flushed | 0
| Key_blocks_unused | 9
| Key_blocks_used | 125235
| Key_read_requests | 19886434342
| Key_reads | 8451382
| Key_write_requests | 57643111
| Key_writes | 2473240
+————————+—————–+
7 rows in set (0.00 sec)

Die Formeln zur Berechnung des Cache hit ratio beziehungsweise des benutzen Buffers lauten:

Cache hit ratio
100 – ( (Key_reads * 100) / Key_read_requests )


Percentage of buffer in use
100 – ( (Key_blocks_unused * key_cache_block_size) * 100 / key_buffer_size )

Anbei eine Beispielrechnung:

Cache hit ratio:
100 – ((8451382 * 100) / 19886434342 ) =
100 – 0,042498227 = 99,957501773 %


Sollte dieser Wert unter 95% fallen, ist dies definitiv nicht gut. Am Besten sind Werte in der 99,99% – Region.

Percentage of buffer in use:
100 – ( (9 * 2048 ) * 100 / 147372182 ) =
100 – ( (18432 / 167772160 ) =
100 – 0,000109863 = 99,999890137 % !


Wenn der Buffer zu 99,99.. ausgenutzt wird, ist dies ein gutes Zeichen, andererseits könne man sich Gedanken machen diesen etwas zu erhöhen.
Es sind einige Test und etwas ausprobieren notwendig, bis die optimalen Einstellungen gefunden sind.

JQuery 1.4 is out – cheetsheets appear

Posted by Christian On Januar - 17 - 2010

JQuery 1.4 is out! Did’t take to long for cheetsheets to appear:

www.futurecolors.ru

Templating engines in PHP

Posted by Christian On Dezember - 29 - 2009

Welche Templating Engine ist die Beste im PHP-Umfeld? Eine schwere Frage, auf die ich bisher auch keine so rechte Antwort wußte. Bisher bin ich mit Smarty ganz gut gefahren.
Allerdings hat Smarty auch seine Schwächen, was zum Beispiel die Performance betrifft.

Natürlich besteht immer die Möglichkeit komplett auf eine Templating Engine zu verzichten und einfach plain-PHP zu benutzen. Rasmus Lerdorf beschreibt dies in seinem berüchtigten Artikel
“The-no-framework-PHP-MVC-framework”.

Fabien Potencier, der Lead-Entwickler des Symfony Frameworks hat mit Templating engines in PHP
genau den Artikel geschrieben, den ich lange gesucht habe.

Er vergleicht folgende Engines

  • Twig
  • PHPTAL
  • Dwoo
  • Smarty 2
  • Smarty 3
  • Calypso
  • eZ Templates

und kommt zu dem Schluss, dass Twig von allen getesteten am Besten abschneidet. Na, ob da wohl ein bischen Eigenwerbung mit ihm Spiel ist?

gource – software version control visualization

Posted by Christian On Dezember - 27 - 2009

Wie cool ist das denn? Visualisierung des Software-Entwicklungsprozesses mit gource:

Falls SVN benutzt wird, gibt es hier eine Anleitung:

http://code.google.com/p/gource/wiki/SVN

Unter Ubuntu zuerst libftgl2 installieren:
apt-get install libftgl2

Könnte helfen, falls der encoder nicht funktioniert, wie er soll:
sudo apt-get install ffmpeg libavcodec-extra-52

YouTube Preview Image

Web-Innovationen 2009

Posted by Christian On Dezember - 20 - 2009

Bei readwriteweb findet eine Abstimmmung über die besten Web-Innovationen 2009 statt. Die Liste neuer Web-Produkte ist recht lang. Wer denkt schon alles zu kennen wird dort sicherlich noch einige neue inspirierende Web-Applikationen finden.

Submit-Button mit CSS stylen um mouseover-Effekt zu erzeugen

Posted by admin On August - 28 - 2009

Ein kleines Beispiel, um einen HTML-Submit Button mit CSS zu stlyen um einen mouseover-Effekt zu erzeugen, ohne Javascript verwenden zu müssen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">

button.submit
{
background:#0E0F0F;
font-family:Century gothic, Arial,Tahoma,sans-serif;
color:#FFF;
font-size:13px;
margin:0 auto;
padding:0;
}

button.submit:hover
{
background:#FE0F0F;
font-family:Century gothic, Arial,Tahoma,sans-serif;
color:#FFF;
font-size:13px;
margin:0 auto;
padding:0;
}

label.name{
font-family:Century gothic, Arial,Tahoma,sans-serif;
background:#0E0F0F;
color:#FFF;
}

input{
font-family:Century gothic, Arial,Tahoma,sans-serif;
background:#0E0F0F;
color:#FFF;
}
</style>
<title></title>
</head>
<body>
<form name="aForm" action="index.php" method="post">
<label for="name" class="name">Name</label>
<input type="text" name="name" id="name" size="30" />
<button type="submit" class="submit">Senden</button>
<input type="hidden" name="submit" value="yes">
</form>
</body>
</html>

Blogverzeichnis - Blog Verzeichnis bloggerei.de   Blogverzeichnis   Blog and ping   Blog Top Liste - by TopBlogs.de   Bloggeramt.de   Blog Directory   powered by rankingcloud   Internet Multimedia blogs & blog posts  
blog search directory   Blogverzeichnis   Blog Directory   Blog Verzeichnis   Blog Directory   Technology Blogs - Blog Rankings   blogoscoop  

Clicky