Roman Harcke
WordPress, Fotografie und natürlich Themen meines Studiums
RSS

twitterTwitter wurde diesen Donnerstag für einige Stunden lahmgelegt beim Versuch, sich gegen eine Internet Attake zu verteidigen. Diese nahm ihren Ursprung wahrscheinlich in Russland oder Georgien. Der Angriff überforderte das Programm “Twitter”, in welchem Benutzer kleinere Blog Einträge posten können, das daraufhin offline ging.

Verursacht wurde der Funktionsausfall dadurch, dass Hacker eine Flut von Anfragen an die Website sendeten, die diese nicht alle verarbeiten konnte und die einen Absturz verursachten. Den meisten der 45 Millionen Twitter benutzer war es so nicht möglich, den Dienst in dieser Zeit zu nutzen.

Die Quelle des Angriffs konnte trotz vieler Analysten nicht mit Sicherheit festgestellt werden.

Bill Woodstock, Forschungsdirektor der Abteilung für Daten Traffic eines nichtkommerziellen Unternehmens, sieht den Angriff jedoch als eine Fortführung des Konflikts zwischen Russland und Georgien. Obwohl auch er keine genaueren Aussagen zur Quelle des Angriffs macht, vermutet er den Ursprung der Störung darin, dass eine der beiden Parteien vermehrt Propaganda gepostet hatte, woraufhin die andere Seite mit den Spam- Anfragen reagierte.

Normalerweise gehen derartige Angriffe von sogenannten Botnets aus, in denen die Anfragen automatisch von vielen verschiedenen Quellen gesendet werden oder von Netzwerken aus Computern, die versuchen, das Programm mit schädlicher Software zu schädigen.

Laut Woodstock wurde in diesem Fall der Absturz jedoch von einer Welle Spam Emails ausgelöst, die Twitter um 10:25 infiltrierten und zu einer Verweigerung des Service seitens Twitter führte.

Ebenfalls betroffen waren Youtube und LiveJournal, wenn auch nicht in derartigem Ausmass. YouTube stellte offensichtlich keinerlei Funktionsausfälle fest.

Biz Stone, der Gründer von Twitter, äusserte sich am späten Donnerstag Morgen in einem Twitter Post mit folgender Erklärung: ” Wir gehen bereits gegen die Attake vor und werden die Nutzer auf dem laufenden halten über die Ereignisse, während wir weiterhin versuchen, die Attake abzuwehren und anschliessend ermitteln, wer die Verantwortlichen sind.”

Eine Sprecherin des Unternehmens, Jenna Sampson, weigerte sich, noch weitere Äusserungen zu machen. Um 14:30 Uhr hatte Twitter immernoch Probleme damit, seinen Dienst allen Benutzern zur Verfügung zu stellen.

Stefan Tanase, der für die Verfolgung von derartigen Angriffen bei Kaspersky Lab, einem IT Security Unternehmen, zuständig ist, äusserte sich dazu wie folgt: “Es ist äusserst ungewöhnlich, dass ein derartiger Angriff so lange anhält. Normalerweise weiss sich eine Website dagegen zu verteidigen, aber Twitter hat eine Vorgeschichte, was Security Lücken angeht und dies ist ein weiterer Beweis dafür, dass das Unternehmen in dieser Hinsicht über kein ausgereiftes Konzept verfügt.”

Auch Facebook war offenbar von einer Störung betroffen, allerdings ist unklar, ob zwischen den beiden Vorfällen eine Verbindung besteht.

Am frühen Morgen bekam laut Tanase auch Facebook Anfragen gesendet, die wohl auch auf einen Absturz durch Überbelastung abzielten, jedoch wirkte sich dies nur auf einige wenige Benutzer aus und führte zu keinem Ausfall des Services. Facebook versicherte, Benutzerdaten seien zu keinem Zeitpunkt gefährdet gewesen und man bemühe sich, den gewohnt zuverlässigen Service so schnell wie möglich wiederherzustellen.

Bis vor ungefähr einem Jahr gab es bei Twitter so regelmässig Zwischenfälle, dass es für die Nutzer schon zur Regel wurde. Die putzige Grafik eines gestrandeten Wales, welcher von Twitter Vögeln zurück ins Meer getragen wird und den Benutzern mitteilt dass eine Störung vorliegt, trat oftgenug auf, um mit dem Spitznamen “The Fail Whale” geehrt zu werden.

“Jedoch bleibt zu sagen, dass dererlei Zwischenfälle in den letzten Monaten die Ausnahme darstellten” sagte Peter Alguacil ein Analyst für ein Unternehmen, dass die sogenannte “Downtime” einzelner Websites, also die Zeitspanne, in der der Service nicht erreichbar ist, verfolgt. Er bekräftigte erneut, dass dies der mit Abstand grösste Zwischenfall gewesen sei, den Twitter in diesem Jahr zu verzeichnen hatte.

Attakten dieses Ausmasses sind laut Experten extrem selten.”Die meisten grösseren Websites sind gut gewappnet.” äusserte Mr. Cooley, einer der obengenannten Experten. “Vielleicht hat es Twitter jedoch nicht fertiggebracht, angesichts seines “astronomischen” Wachstums und unglaublichen Erfolgs, in gleichem Ausmass die notwendige Sicherheit aufzubauen.”

Die Besorgnis, die diese Attake hervorgerufen hat geht jedoch beinahe unter in der Begeisterung über die Rolle, die Twitter inzwischen in der alltäglichen Kommunikation übernommen hat. Sowohl Unternehmen als auch private Nutzer benutzen das Programm regelmässig für Kurznachrichten ( es sind Nachrichten bis 140 Zeichen möglich ). Ausserdem stellt Twitter eine unzensierte Informationsquelle dar, besonders sei hier erwähnt der kürzlich aufflammende Protest nach den Iranischen Wahlen.

“Auch grosse Marketing Firmen nutzen Twitter zwecks Marktforschung”, wie Mr. Cooley weiterhin sagte “Die Nutzer schränkt es persönlich ein, wenn eine Seite wie diese nicht erreichbar ist”

 

Nach folgendem Artikel: http://www.nytimes.com/2009/08/07/technology/internet/07twitter.html?_r=2

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Kategorie : Allgemeines | Blog

WordPress als CMS benötigt etwas Feintuning

WP_RecipesWordPress wird immer häufiger als CMS eingesetzt. Als Admin und Webmaster seines persönlichen Blogs, sollte man nicht übermäßig viele Plugins installieren, da diese meist viel Code schreiben und so die Webseite langsamer laden lassen.
Das wollen wir doch nicht.

Außerdem kann man mit den hier beschriebenen Codes/Hacks aus dem normalen WordPress Theme ein ganz spezielles und personalisiertes Theme erstellen.

Folgende Hacks sind eine persönliche Auswahl der besten Codes von WpRecipes.

1. Tags in einem Drop-Down Menü anzeigen lassen

In eurem Theme Ordner findet ihr eine .php Datei namens “funktions.php”. Falls euer WordPress Theme bis jetzt ohne ausgekommen ist, erstellt ihr eine.

In diese Datei kopiert ihr nun einfach folgenden Code:

<?php
function dropdown_tag_cloud( $args = '' ) {
    $defaults = array(
        'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
        'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
        'exclude' => '', 'include' => ''
    );
    $args = wp_parse_args( $args, $defaults );

    $tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags

    if ( empty($tags) )
        return;

    $return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
    if ( is_wp_error( $return ) )
        return false;
    else
        echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
    global $wp_rewrite;
    $defaults = array(
        'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
        'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
    );
    $args = wp_parse_args( $args, $defaults );
    extract($args);

    if ( !$tags )
        return;
    $counts = $tag_links = array();
    foreach ( (array) $tags as $tag ) {
        $counts[$tag->name] = $tag->count;
        $tag_links[$tag->name] = get_tag_link( $tag->term_id );
        if ( is_wp_error( $tag_links[$tag->name] ) )
            return $tag_links[$tag->name];
        $tag_ids[$tag->name] = $tag->term_id;
    }

    $min_count = min($counts);
    $spread = max($counts) - $min_count;
    if ( $spread < = 0 )
        $spread = 1;
    $font_spread = $largest - $smallest;
    if ( $font_spread <= 0 )
        $font_spread = 1;
    $font_step = $font_spread / $spread;

    // SQL cannot save you; this is a second (potentially different) sort on a subset of data.
    if ( 'name' == $orderby )
        uksort($counts, 'strnatcasecmp');
    else
        asort($counts);

    if ( 'DESC' == $order )
        $counts = array_reverse( $counts, true );

    $a = array();

    $rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';

    foreach ( $counts as $tag => $count ) {
        $tag_id = $tag_ids[$tag];
        $tag_link = clean_url($tag_links[$tag]);
        $tag = str_replace(' ', ' ', wp_specialchars( $tag ));
        $a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
    }

    switch ( $format ) :
    case 'array' :
        $return =& $a;
        break;
    case 'list' :
        $return = "<ul class='wp-tag-cloud'>\n\t<li>";
        $return .= join("</li>\n\t<li>", $a);
        $return .= "</li>\n</ul>\n";
        break;
    default :
        $return = join("\n", $a);
        break;
    endswitch;

    return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>

Nun öffnet ihr die Datei in der das Drop-Down Menü erscheinen soll. Vielleicht in eurer Sidebar?

In die jeweilige Datei fügt ihr folgenden Code ein:

<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
    <option value="#">Tags</option>
    <?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

2. Deine neusten Notizen abrufen lassen

Folgenden Code vor den Loop einfügen. Dieser Code wird die letzten 5 Notizen aufrufen. Die Menge der abzurufenden Notizen kann durch die Zahl im Code bestimmt werden.

<?php
    $sticky = get_option('sticky_posts');
    rsort( $sticky );
    $sticky = array_slice( $sticky, 0, 5);
        query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
?>

3. Automatisch weiteren Inhalt in die Feeds integrieren

In euren Theme Ordner findet sich die “functions.php” Falls nicht erstellt ihr einfach eine.
In diese Datei fügt ihr folgenden Code ein.
Dieser wird automatisch alle weiteren Inhalte nach eurem Beitrag mit in den Feed einfügen.
Also etwas wie “ähnliche Artikel” oder “Informationen über den Autor”, oder eure AdSense Werbung, …

function insertFootNote($content) {
        if(!is_feed() && !is_home()) {
                $content.= "<h4>Enjoyed this article?</h4>";
                $content.= "<p>Subscribe to our <a href='#'>RSS feed</a></p>";
        }
        return $content;
}
add_filter ('the_content', 'insertFootNote');

4. Die meist kommentierten Artikel auflisten

Den folgenden Code einfach an der Stelle einfügen, wo ihr eure meist kommentierten Artikel anzeigen lassen wollt. Vielleicht in der Sidebar (sidebar.php)?
Um die Anzahl der gezeigten Artikel zu ändern, einfach die “5″ in Zeile drei gegen die gewünschte austauschen.

<h2>Meist kommentierte Artikel:</h2>
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
    <li><a title="<?php echo $title ?>" href="<?php echo get_permalink($postid); ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?></ul>

5. Meist kommentierten Artikel eines ganzen Jahres anzeigen

Die meist kommentierten Artikel aus einem bestimmten Jahr anzeigen lassen.
Der Zeitabschnitt kann beliebig angepasst werden. Den Code einfach an der Stelle einfügen, wo ihr den Code angezeigt bekommen wollt.

<h2>Most commented posts from 2008</h2>
<ul>
<?php
$result = $wpdb->get_results("SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '2008-01-01' AND '2008-12-31' ORDER BY comment_count DESC LIMIT 0 , 10");

foreach ($result as $topten) {
    $postid = $topten->ID;
    $title = $topten->post_title;
    $commentcount = $topten->comment_count;
    if ($commentcount != 0) {
    ?>
    <li><a href="<?php echo get_permalink($postid); ?>"><?php echo $title ?></a></li>
<?php }
}
?></ul>

6. Ähnliche Artikel basierend auf den Tags anzeigen

Dieser Code wird ähnliche Artikel basieren auf den Artikel Tags anzeigen lassen. Er muss in den Loop integriert werden.

<?php
//for use in the loop, list 5 post titles related to first tag on current post
$tags = wp_get_post_tags($post->ID);
if ($tags) {
  echo 'Related Posts';
  $first_tag = $tags[0]->term_id;
  $args=array(
    'tag__in' => array($first_tag),
    'post__not_in' => array($post->ID),
    'showposts'=>5,
    'caller_get_posts'=>1
   );
  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>

<a title="Permanent Link to <?php the_title_attribute(); ?>" rel="bookmark" href="<?php the_permalink() ?>"><?php the_title(); ?></a>

      <?php
    endwhile;
  }
}
?>

7. Die Zahl der Suchergebnisse anzeigen

Öffnet die “search.php” und integriert folgenden Code:

<h2 class="pagetitle">Search Results for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>

8. Die Seitenzahl der Kommentare im “Title Tag” anzeigen

Die “header.php” öffnen und folgenden Code zwischen das “Title Tag” einfügen.

<?php if ( $cpage < 2 ) {}
else { echo (' - comment page '); echo ($cpage);}
?>

9. Die zukünftig veröffentlichten Artikel anzeigen

Um den Lesern einen kleinen Einblick über kommende Überschriften zu ermöglichen, kopiere folgenden Code und füge ihn an gewünschter Stelle ein.

Zukünftige Artikel:

 <?php query_posts('showposts=10&post_status=future'); ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php the_title(); ?> <?php the_time('j. F Y'); ?>

 <?php endwhile; else: ?>

Keine zukünftigen Artikel gespeichert.

<?php endif; ?>

10. Artikel zufällig anordnen

Artikel zufällig anzuordnen hat zum Beispiel Vorteile um ältere Artikel nicht untergehen zu lassen.
Den Code einfach vor den Loop einfügen.

query_posts('orderby=rand');
//the Loop here...

11. Zählt die Wörter eines Artikels und zeigt sie an

Öffne “single.php” und integriere den Code wo dieser angezeigt werden soll.

<?php function count_words($str){
     $words = 0;
     $str = eregi_replace(" +", " ", $str);
     $array = explode(" ", $str);
     for($i=0;$i < count($array);$i++)
 {
         if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i]))
             $words++;
     }
     return $words;
 }?>

 Wortzahl: <?php echo count_words($post->post_content); ?>

12. Wortzähler für WordPress

Hier noch eine weitere Möglichkeit einen Wortzähler in den Blog zu integrieren.
In eurer “functions.php” fügt ihr diesen Code hinzu:

<?php function wcount(){
    ob_start();
    the_content();
    $content = ob_get_clean();
    return sizeof(explode(" ", $content));
}?>

Um an gewünschter Stelle die gezählten Wörter eures Artikels anzuzeigen, kopiert in der jeweiligen Datei diesen Code:

<?php echo wcount(); ?>

13. Kategorien von der Suche ausschließen

In “search.php” eures Themes folgenden Code vor den Loop einfügen.
Dieser Code wird Kategorien mit den IDs 1,2,3 von der Suche ausschließen.
Natürlich nicht von der Google Suche, sondern der internen WordPress Suche auf eurem Blog.

<?php if( is_search() )  :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=-1,-2,-3");
endif; ?>

//the Loop here...

14. Bestimmte Kategorien aus dem RSS Feed ausschließen

Die “functions.php” eures Themes öffnen. Falls sie nicht existiert, dann erstellt eine.
Dieser Code schließt bestimmt Kategorien aus. Kopiert ihr einfach in die “functions.php”. Um eine bestimmte Kategorie auszuschließen benötigt ihr ihre ID.

<?php function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); //Don't forget to change the category ID =^o^=
    }
return $query;
}

add_filter('pre_get_posts','myFilter');
?>

15. Die Zahl eurer Twitter Follower anzeigen lassen

Diesen Code einfach irgendwo in eurem WordPress Blog integrieren, er wird an der Stelle die Zahl eurer Follower anzeigen.
In der letzten Zeile des Codes müsst ihr noch die “YourUserID” durch eure ersetzen.

<?php function string_getInsertedString($long_string,$short_string,$is_html=false){
  if($short_string>=strlen($long_string))return false;
  $insertion_length=strlen($long_string)-strlen($short_string);
  for($i=0;$i<strlen ($short_string);++$i){
    if($long_string[$i]!=$short_string[$i])break;
  }
  $inserted_string=substr($long_string,$i,$insertion_length);
  if($is_html && $inserted_string[$insertion_length-1]=='<'){
    $inserted_string='<'.substr($inserted_string,0,$insertion_length-1);
  }
  return $inserted_string;
}

function DOMElement_getOuterHTML($document,$element){
  $html=$document->saveHTML();
  $element->parentNode->removeChild($element);
  $html2=$document->saveHTML();
  return string_getInsertedString($html,$html2,true);
}

function getFollowers($username){
  $x = file_get_contents("http://twitter.com/".$username);
  $doc = new DomDocument;
  @$doc->loadHTML($x);
  $ele = $doc->getElementById('follower_count');
  $innerHTML=preg_replace('/^< [^>]*>(.*)< [^>]*>$/',"\\1",DOMElement_getOuterHTML($doc,$ele));
  return $innerHTML;
}
?>

<?php echo getFollowers("YourUserID")." followers"; ?>
</strlen>

16. Den letzten Twitter Eintrag auf eurem Blog anzeigen

Einfach den Code an gewünschter Stelle einfügen. Vielleicht in der Sidebar.php?
Den “TwitterUsername” müsst ihr natürlich noch durch euren ersetzen.

<?php

$username = "TwitterUsername";

$prefix = "<h2>Mein letzter Tweet:";

$suffix = "";

$feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1";

function parse_feed($feed) {
    $stepOne = explode("<content type=\"html\">", $feed);
    $stepTwo = explode("</content>", $stepOne[1]);
    $tweet = $stepTwo[0];
    $tweet = str_replace("< ", "< ", $tweet);
    $tweet = str_replace(">", ">", $tweet);
    return $tweet;
}

$twitterFeed = file_get_contents($feed);
echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
?>

17. Social Buttons im Blog einfügen

Facebook Button

<a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>">Share on Facebook</a>

Digg it!

<a href="http://www.digg.com/submit?phase=2&url=<?php the_permalink();?>">Digg It</a>

Stumbleupon

<a href="http://www.stumbleupon.com/submit?url=<?php the_permalink(); ?>&title=<?php the_title(); ?>">Stumble upon it</a>

Zu Del.ici.ous hinzufügen

<a href="http://delicious.com/post?url=<?php the_permalink();?>&title=<?php the_title();?>">Add to delicious</a>

Technorati

<a href="http://technorati.com/faves?sub=addfavbtn&add=<?php the_permalink();?>">Share on technorati</a>

Twitter

<a href="http://twitter.com/home?status=Currently reading <?php the_permalink(); ?>">Tweet this</a>

18. Eine LogIn Box für den Wordpress Blog

Wenn man WordPress als CMS benutzt und sich mehrere Benutzer anmelden wollen, ist es oft sehr sinnvoll eine LogIn Box zu erstellen.
Hier der Code für eine Login Box zum Beispiel in der Sidebar oder im Header, oder einfach auf einer extra Login Seite …

Den folgenden Code einfach kopieren und an der Stelle einfügen, wo eure Loginbox erscheinen soll.
Dann müsst ihr noch in der letzten Zeile eure URL hinzufügen.

<?php if (!(current_user_can('level_0'))){ ?>
<h2>Login</h2>
<form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">
<input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?/>" size="20" />
<input type="
password" name="pwd" id="pwd" size="20" />
<input type="
submit" name="submit" value="Send" class="button" />
    <p>
       <label for="
rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
       <input type="
hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?/>" />
    </p>
</form>
<a href="
<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Recover password</a>
<?php } else { ?>
<h2>Logout</h2>
<a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">logout</a><br />
<a href="http://XXX/wp-admin/">admin</a>
<?php }?>

P.S.:

Hmm, sind doch nur 18. Codes geworden, weil zwei von denen komisch angezeigt wurden.
Hier noch die Links zu den Codes die ich nicht einfügen konnte (Warum auch immer):

-> Den gesuchten Text von Suchmaschinen im Artikel hervorheben

-> Willkommensmeldung zu einem bestimmten Datum anzeigen

Wünsche viel Spaß beim Coden ;)

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Kategorie : WordPress | Blog
Twitter Lego Vogel

Tweet!, ursprünglich hochgeladen von powerpig

 

Hier ein sehr passender Vergleich zu Twitter.

Twitter ist nichts anderes als die Klowand des Internets. Wer vorbeikommt, hinterlässt einen kurzen Spruch, einen Gedanken oder eine Befindlichkeit, erlaubt sind maximal 140 Zeichen.
Und wer sich für die – allein schon aus Platzgründen – inhaltsarmen Beiträge der anderen interessiert, kann sie abonnieren. Das ist dann so, als würde man sich auf dem Büroklo immer wieder in die gleiche Kabine setzen, um nachzuschauen, ob neue Kommentare an der Wand stehen.

Quelle: Zeit Wissen

 

Und noch ein witziges Video für Twitter Einsteiger:

Braucht die Welt diesen Dienst wirklich? Oder ist es nur wieder ein verzweifelter Versuche (sinnlose) Informationen zu verbreiten?

Was haltet ihr von Twitter? Benutzt ihr Twitter?

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Kategorie : Persönliches | Blog
Powered by WP VideoTube