Interessante Einsichten über Motivationsfaktoren am Arbeitsplatz
[youtube width="325" height="287"]http://www.youtube.com/watch?v=u6XAPnuFjJc[/youtube]
Ein kleines Video über google+. Wer Interesse daran hat teilzunehmen, möge mir eine eMail an info ät semanticblog.eu schicken.
Um teilnehmen zu können ist ein Konto bei Google erforderlich.
[youtube width="325" height="287"]http://www.youtube.com/watch?v=xwnJ5Bl4kLI[/youtube]
Wieder was gelernt. Falls Sie Probleme mit Event Bubbling haben, kann dies verhindert werden.
Am einfachsten ist es eine neue css-Klasse anzulegen und mit event.stopPropagation() zu arbeiten.
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="style.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> <script type="text/javascript" src="functions.js"></script> </head> <body> <table align="center"> <tr onClick='function1()'> <td onClick='function2()'> <div class="content">Click me ... (event bubbling)</div> </td> <td onClick='function2()' class="prevent-event-bubbling"> <div class="content">Click me... (no event bubbling)</div> </td> </tr> </table> </body> </html>
Javascript:
function function1(){
alert('tr event');
}
function function2(){
alert('td event');
}
$(document).ready(function() {
$(".prevent-event-bubbling").each(function() {
$(this).click(function(e) {
e.stopPropagation();
});
});
});
Hintergrund: jQuery API
Download Source Code.
Das Video erklärt die Installation von Ruby 1.9.2 und Rails 3.0 unter Ubuntu:
[youtube width="325" height="287"]http://www.youtube.com/watch?v=NmWYZVUln4E&hd=1[/youtube]
HTML5 ein neuer Web-Standard, der rasch immer beliebter wird und mit einer Reihe neuartiger Features aufwartet. Vor allem für YouTube-Nutzer interessant ist die HTML5-Unterstützung der Video- und Audio-Wiedergabe. Auch Linux-Benutzer dürften sich über dieses Funktionalität freuen, da Flash unter Linux oftmals ein großer Performancefresser ist.
Der neue Standard erlaubt Nutzern mit einem kompatiblen Browser die ordnungsgemäße Wiedergabe von Audio-und Videocodecs, ohne dass ein Browser-Plugin heruntergeladen werden muss. Flash wird demzufolge in Zukunft für die Videowiedergabe nicht mehr in dem Maße erforderlich sein, wie es heute der Fall ist.
Bei YouTube ist die HTML5-Unterstützung noch im Experimentalstadium und es gibt einige Einschränkungen zu beachten. Es werden zur Zeit keine Videos mit Werbung, Beschriftungen oder Anmerkungen unterstützt.
Es können alle Browser benutzt werden, die das Video-Tag in HTML5 implementiert haben und entweder den h.264-Videocodec oder das WebM-Format unterstützen. Zu diesen zählen beispielweise:
Der YouTube HTML5 Videoplayer ist unter http://www.youtube.com/html5 zu finden.
Welche Fragen sollten bei einem Einstellungstest für Programmieranfänger gestellt werden?
Diese Frage wurde in abgewandelter Form vor einiger Zeit von Jeff Atwood gestellt.
Er vertritt die Meinung, dass Anfänger in der Lage sein sollten, einfache Probleme zu lösen.
Der FizzBuzz-Test ist so ein einfaches Problem, dass in ungefähr zehn bis fünfzehn Minuten lösbar sein sollte.
Die Aufgabe lautet folgendermaßen:
Schreibe ein Programm, dass die Zahlen von eins bis einhundert ausgibt.
Dabei sind drei Dinge zu beachten:
a) Wenn eine Zahl ein Vielfaches von Drei ist, soll “Fizz” ausgegeben werden.
b) Wenn eine Zahl ein Vielfaches von Fünf ist, soll “Buzz” ausgegeben werden.
c) Ist die Zahl sowohl ein Vielfaches von Drei als auch Fünf, soll die Ausgabe “FizzBuzz” lauten.
Es gibt unterschiedlichste Möglichkeiten, diese Aufgabe zu lösen. Anbei einige Beispiele in Java, PHP und Ruby:
Java:
package fizzbuzz;
public class Main {
public static void main(String[] args) {
fizzBuzzStart();
}
public static void fizzBuzzStart(){
for(int i = 1; i <101; i++ ){
if( (i%5 == 0) &amp;amp;&amp;amp; (i%3 == 0) ){
printFizzBuzz();
continue;
}
if(i%3 == 0){
printFizz();
continue;
}
if(i%5 == 0){
printBuzz();
continue;
}
System.out.println("Number:" + i);
}
}
public static void printFizz(){
System.out.println("Fizz");
}
public static void printBuzz(){
System.out.println("Buzz");
}
public static void printFizzBuzz(){
System.out.println("FizzBuzz");
}
}
}
PHP: Nachfolgend eine möglich Lösung in PHP:
<?php
class FizzBuzz{
private static $i = 1;
public static function start($startvariable){
self::$i = $startvariable;
$flag_fizz_buzzed = true;
while(self::$i < 101){
if( ((self::$i % 5) == 0) and ((self::$i %3) == 0)){
self::printFizzBuzz();
$flag_fizz_buzzed = false;
}
if( ((self::$i % 3) == 0) and $flag_fizz_buzzed){
self::printFizz();
$flag_fizz_buzzed = false;
}
if( ((self::$i % 5) == 0) and $flag_fizz_buzzed){
self::printBuzz();
$flag_fizz_buzzed = false;
}
if($flag_fizz_buzzed){
echo "Number: " . self::$i ."\n";
}
self::$i++;
$flag_fizz_buzzed = true;
}
}
public static function printFizz(){
echo "Fizz\n";
}
public static function printBuzz(){
echo "Buzz\n";
}
public static function printFizzBuzz(){
echo "FizzBuzz\n";
}
}
echo "***run 1 starting***\n";
fizzBuzz::start(1);
echo "***run 1 finished***\n";
echo "***run 2 starting***\n";
fizzBuzz::start(1);
echo "***run 2 finished***\n";
?>
Ruby: In Ruby existiert ein gem, welches verschiedene Lösungen enthält:
Dieses sollte zuerst installiert werden: sudo gem install fizzbuzz
require 'rubygems' require 'fizzbuzz' puts fizzbuzz
Quellen:
Bei Google Code findet sich eine JQuery-Portierung nach PHP http://code.google.com/p/phpquery/.
Wer viel auf der Clientseite mit JQuery gearbeit hat, wird sicherlich Gefallen an dieser Bibliothek finden, wenn es darum geht mit Content fremder Seiten zu arbeiten.
Ein Biespiel findet sich hier: Mit Hilfe von phpquery fremde Seiten verarbeiten
Die Software ist auch über pear installierbar.
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
.
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:
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 |
|---|---|---|---|---|---|
| Delphi-Methode, Schätzklausur | Gewinnung von Information durch Mehrfachbefragung | Fachleute aus unterschiedlichen Gebieten | große Projekte | groß | genau |
| Analogiemethode | Vergleich ähnlicher Projekte zur Aufwandsschätzung | Datensammlung bereits abgeschlossener Projekte | Zu Beginn eines Projekts | mittel | eher ungenau |
| Function-Point-Methode | Fachliche Anforderungen, Erfahrungswerte unter Berücksichtigung fest definierter Einflussfaktoren | Messwerte | große Projekte | groß | sehr genau |
| COCOMO2 | Entwicklungsaufwand wird durch die Anzahl der Lines of Code (LOC) ermittelt. Der Basisaufwand wird mit Kostenfaktoren multipliziert. | Messwerte | große Projekte | groß | genau |
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.