Categorie: Artikelen

OAuth / Twitter Auth-adapter voor Zend Framework

Door , zaterdag 23 april 2011 15:57

Er wordt verder gewerkt (langzaam) op mijn nieuwe Twitter -gebaseerde applicatie. De loop van de komende feestdagen ik hoop dat ik het momentum weer op het project (in-ondanks het prachtige weer op dit moment) te krijgen. Hoe dan ook, mijn volgende taak was om een authenticatie-adapter voor het creëren Zend Framework . Ik had een werkende login implementatie, maar het hebben van een daling van de Auth-adapter voor Zend Framework leek een aantrekkelijk voorstel, dus heb ik het ....

(Ik ben niet van plan te gaan door middel OAuth of het registreren van uw toepassing met twitter, is er honderden van gidsen en het is een vrij eenvoudig proces toch.)
Continue reading 'OAuth / Twitter Auth-adapter voor Zend Framework' »

"Log in met Twitter" met behulp van Zend Framework

Door , donderdag 17 maart 2011 01:07

Ondanks alle haat twitter op het moment, heb ik uiteengezet om een nieuwe twitter -gebaseerde applicatie. Omdat iemand die beheert een aantal accounts (zowel persoonlijk als voor mijn vrijwilligerswerk) Ik heb nodig een tool voor ergens dat ik gewoon ben om rond te schrijven (meer van dat in de nabije toekomst ...).

Ik heb gelezen op Zend_Oauth_Consumer en hoe het gebruikt kan worden om toestemming te krijgen voor de interactie met behulp van twitter OAuth . Alles goed en wel, ik heb mijn toegangscode en kan ik vrolijk weg plaatsen namens een gebruiker. Er is genoeg middelen die er zijn om dit te doen, dus ik zal niet vervelen mensen.

De volgende stap was om mensen in staat stellen om terug te keren naar de website, log in en wijzigen hun account. Dit is waar ik bereikte een klein probleempje. Met behulp van de code voorbeelden op websites betekende dat ik zou hebben twitter me vraagt ​​weer om toegang vergunning voor elke login, niet goed. Scannen via het kader kon ik niets zien die het mogelijk maken me gewoon verificatie aanvragen. Dat wil niet zeggen dat zijn er niet, maar er leek niet een authenticatie mechanisme dat kan worden ingeroepen, zonder te weten de toegang token al zijn.

De alternatieven waren om een ​​site op basis van in te loggen of een of andere manier de gebruiker toegang token op te slaan op de client (versleutelde natuurlijk) uit te voeren. Geen van deze leek me een goede / passende oplossing.

Continue reading '"Log in met Twitter" met behulp van Zend Framework' »

Zend Certified Engineer (ZCE) 5.3

Door , donderdag 30 september 2010 21:00

Met de officiële release van de Zend Certified Engineer (ZCE) programma voor de 5,3 Ik dacht dat ik mijn snelle indruk van wat ik dacht van het examen te geven.

Een beetje achtergrondinformatie over mezelf: ik werd voor het eerst kennis met PHP ongeveer 7 jaar geleden en hebben professioneel werkzaam in PHP sinds 2006. Momenteel werk ik voor een spannende start-up genaamd Brightpearl gevestigd in Bristol, Groot-Brittannië , het produceren van geïntegreerde CRM, accountancy en e-commerce software. Ik heb niet eerder behaalde een van de vorige ZCE kwalificaties. Ik heb op dit moment te ontwikkelen in de 5.2.x-serie en niet echt gebruikt een van de specifieke kenmerken 5.3 (Ik wacht op Zend Framework 2 en Leer 2) in mijn ontwikkeling projecten.
Continue reading 'Zend Certified Engineer (ZCE) 5.3 "»

Quick Start Symfony DI (Dependency Injection) Tutorial

Door , zaterdag 14 augustus 2010 14:21

Wat is Dependency Injection (DI)?

Dependency injection is een techniek die het mogelijk maakt voor los gekoppelde objecten in een softwaretoepassing. Over het algemeen als een object moet de toegang tot de functionaliteit van een ander zou worden geïnstantieerd intern leidt tot strak gekoppelde systemen. Door de implementatie van dependency injection we Injecteer het benodigde objecten klaar voor gebruik (ook wel aangeduid met omkering van controle - IOC). Neem het volgende voorbeeld:

  <? Php
 class DecisionMaker {
     publieke functie makeDecision (array $ parameters) {
         / / Noodzaak van de database adapter
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ parameters);
         / * ...  Sommige meer beslissing logica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Dit stuk van de code is gezegd dat nauw worden gekoppeld aan de DecisionParameters object. Het herschrijven van de hierboven in een losjes gekoppelde manier we iets hebben als ....

  <? Php
 class DecisionMaker {
     private $ _dp;
     public function __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     publieke functie makeDecision (array $ parameters) {
         $ ParameterScore = $ this-> _dp-> getScore ($ parameters);
         / * ...  Sommige meer beslissing logica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Terwijl het verkrijgen van de voordelen van losjes gekoppelde code die we zijn het toevoegen van complexiteit zodanig dat elke keer dat een object wordt geïnstantieerd moeten we ook de afhankelijkheden instantiëren en deze pas in ook. Bijvoorbeeld deze:

  $ Keuze = new DecisionMaker ();
 echo $ keuze-> makeDecision (array ('inspanning' => 'low', 'return' => 'high')); 

wordt nu:

  $ Dp = new DecisionParameters ();
 $ Keuze = new DecisionMaker ($ dp);
 echo $ keuze-> makeDecision (array ('inspanning' => 'low', 'return' => 'high')); 

Deze situatie wordt steeds pijnlijker naarmate het aantal afhankelijkheden voor een klasse wordt verhoogd, en wat als de afhankelijkheden zelf hebben afhankelijkheden? Dit kan heel snel een object administratie nachtmerrie! Geef dependency injection containers (of kaders) ...
Continue reading 'Quick Start Symfony DI (Dependency Injection) Tutorial' »

Naakt Zend_Layout en Zend_View

Door , dinsdag 10 augustus 2010 23:47

In dit artikel kijk ik op het gebruik van Zend_Layout en Zend_View samen met een eenvoudige front controller om te laten zien hoe het mogelijk is om te beginnen met het scheiden van business logic en presentatie binnen uw toepassing. Alle code is te vinden op GitHub:
Naakt Zend_Layout en Zend_View op GitHub .

Verder 'Naked Zend_Layout en Zend_View' lezen »

Zend Framework Per module Layout Instellingen - Follow Up

Door , dinsdag 16 februari 2010 20:48

Als een vervolg op mijn vorige post op per module gebaseerd layout instellingen voor Zend Framework , ik heb update van de code te verlangen minder configuratie dan voor (niet dat het nodig is meer dan een paar regels in uw toepassing configuratie!).
Continue reading 'Zend Framework Per module Layout Instellingen - Follow Up' »

Het creëren van URL in Zend Aangepaste weergave Helper

Door , donderdag 28 januari 2010 23:01

Dit lijkt misschien simpel, maar ik sloeg mijn hoofd proberen om een URL te maken in een aangepaste weergave helper in Zend Framework . Ik heb routing setup die de module krijgt van de sub-domein in gebruik dus ik kon geen gebruik maken van een eenvoudige hardcoded URL.

Continue reading 'Het maken van URL in Zend Aangepaste weergave Helper' »

Route verzoeken om sitemap.xml om aangepaste controller / actie

Door , woensdag 06 januari 2010 0:13

Met het oog op rechtstreekse verzoeken om / sitemap.xml om een aangepaste controller en actie in uw Zend Framework applicatie eenvoudig toe te voegen het volgende in uw application.ini of alternatieve config-bestand (bijv. ik gebruik navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = index
 resources.router.routes.sitemap.defaults.action = sitemap

Voorbeeld code voor het uitvoeren van kan worden gezien door het creëren van een actie in de juiste controller (bv. mijn sitemap ligt in de index controller, sitemap actie):

 < php
 klasse IndexController
     breidt Zend_Controller_Action
 {
     / **
      * Renders een sitemap op basis van Zend_Navigation setup
      * /
     publieke functie sitemapAction ()
     {
    	 echo $ this-> view-> navigatie () -> sitemap ();
    	 $ This-> view-> lay-out () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps kunnen snel en eenvoudig worden gegenereerd met behulp van Zend_Navigation , een geweldig snelle tutorial (en over het algemeen zeer nuttig voor het Zend Framework tutorials) is Zend Afgietsels - dynamisch maken van een menu een sitemap en paneermeel .

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 4

Door , vrijdag 04 december 2009 23:59

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

In deel 3 hebben we onze virtuele machine en het opzetten van Windows-machines te worden idle-time werknemers.

Het uitvoeren van de laatste code

Het is onvermijdelijk dat na het maken van uw werknemers business logica zal veranderen, bugs worden gevonden, zal sneller meer efficiënte code te produceren waardoor het verlaten van uw werknemers zat rond de verwerking van gegevens met behulp van oude stinkende code . Hoe kunnen we ervoor zorgen dat wij altijd de nieuwste en beste versie van onze verwerking van scripts gebruiken?

Er zijn een paar zeer eenvoudig eenvoudige manieren kunnen we dit doen, de truc is echter om de verwerking van de macht en het netwerkverkeer te verminderen om dit te bereiken. Laten we beginnen met de eenvoudigste oplossingen en langzaam het over een paar iteraties te verbeteren.

De eerste methode zou zijn om gewoon verbinding te maken met ons werk Control Server (via samba, FTP, of iets dergelijks) en trek de laatste versie van de code. Niet erg efficiënt, maar het zal de klus te klaren. Laten we verbeteren dat enigszins, wat over het creëren van een rsync script en het gebruik van dat elke keer dat in plaats daarvan? Als alternatief hoe zit het zetten onze nieuwste verwerking script tot subversie het controleren van de code in eerste instantie en dan gewoon updaten van onze code op elke run ( svn update )?

Op het einde konden we eindigen met een bash script (geroepen door cron elke 10 minuten), die ziet er zo simpel als dit:

  #! / Bin / sh
 Als ps ax | grep-v grep | grep php > / dev / null
 dan
     echo "Job is op dit moment verwerkt, afslag"
 anders
     echo "Job niet wordt uitgevoerd, nu beginnen"
     cd / pad / naar / werken / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Nu kunnen we er zeker van zijn dat met elke run we zeker zijn de laatste code die wordt uitgevoerd. We zijn ervoor zorgt dat dit door een aanpassing van onze code base elke keer voeren we een run en het verminderen van het netwerkverkeer door alleen de overdracht van het bestand verschillen tussen ons netwerk.

In mijn demonstratie setup, ik deed precies zoals hierboven beschreven. Subversion is geïnstalleerd op mijn werk de verwerking van de server en ik gewoon trok de laatste code van een "werknemer" tak met behulp van 'svn update'. Ik heb ook nog een versie nummer tag op mijn verwerking script dat de database terug als deel van de resultaten terug te keren. Op deze manier kon ik zien dat mijn code werd elke keer als ik mijn koffer gekopieerd naar de werknemer tak dat wil zeggen dat ik zeker was de laatste verwerking script draait bijgewerkt.

Met behulp van de meest recente gegevens

Als uw baan verwerking maakt gebruik van gegevensbronnen dan op een bepaald moment deze zullen ook worden bijgewerkt. Tenzij u contact op met uw gegevensbronnen op een zeer onregelmatige basis je gaat om uw netwerk te overspoelen met het verkeer zo snel uw werknemers beginnen te lopen om alles tot stilstand. Voor mijn oplossing die ik besloten dat ik zou willen om te bewegen mijn gegevensbronnen met mijn VM's.

Houd je paard er! Wat gebeurt er als mijn gegevens bronnen HUGE? Nou dit is echt een kwestie van hoeveel data hebben we het? Het kan meer rendabel om een extra grotere harde schijf te installeren in elke machine dan om een extra verwerking server kopen. Dit is een kwestie van budget en is aan het bedrijf om te beslissen. Het misschien dat uw gegevens bronnen zijn zo groot dat het is gewoon ondoenlijk om die hoeveelheid gegevens bij te houden in uw werknemer machines. In dat geval wat zou je doen? Wel kunnen we kijken naar het bellen van een lokale data server, maar dit kan leiden tot problemen met het netwerk. In dit geval is een grid-systeem zoals dit kan worden onrealistisch te nemen in uw kantooromgeving. Het kan ook zijn dat je kunt kijken naar alternatieve lopen strategieën, bijvoorbeeld alleen het roepen van uw werknemers tussen twintig en 6 uur per nacht en / of smoren gegevensbron verzoeken.

Moving on laten we zeggen onze bronnen oplopen tot 100 GB aan gegevens. Nou ja dat is nogal wat data om rond het netwerk te bewegen op een update. Hoe zouden we ervoor zorgen dat we de laatste kopie van de gegevens zijn in dit geval? Rsync is een mogelijkheid, maar persoonlijk vind ik door het uitvoeren van uw meest recente gegevens de bron op uw werk de verwerking van de server en het instellen van deze zich als een meester in het replicatie (met een mooie lange bak log) kan de weg te gaan zijn:

replicatie Door elk van uw werknemers als een slaaf van de job control server updates voor uw gegevensbronnen zal mooi trickle down om uw werknemers zonder een enorme toename in netwerk-activiteit (dat wil zeggen, tenzij u een enorme data-update en al je medewerkers kick in in een keer). Dit heeft voordelen ten opzichte van rsync in dat u niet een lange pauze voor elke job, gelijk als de database-updates, de mysql daemon op uw werknemer zal voortdurend geactualiseerd zijn gegevens tijdens de verwerking doorgaat.

Dit is hoe ik mijn demonstratie-server. Voor het instellen van de replicatie volgde ik de gids op de MySQL site ( Het opzetten van replicatie ) en binnen 20 minuten had ik mijn inital werknemer repliceren van de job control servers dataset. Voor elke extra werknemer van de replicatie-instellingen en het proces werkte elke keer wanneer de VM werd gekopieerd.

Overzicht

In dit gedeelte van het artikel hebben we gekeken naar hoe gemakkelijk en pijnloos het is om de verwerking van code up-to-date door using rsync of subverion (SVN) om het werk te doen en het netwerkverkeer te verminderen op hetzelfde time. We hebben ook besproken hoe om uw gegevensbron informatie up-to-date te houden door het te laten doorsijpelen aan elk van uw werknemers. Zo kunnen we ruimte ervoor te zorgen dat we gelijke tred houden met business logica en informatie in ons kantoor draagconstructie. Er zullen uiteraard tal van alternatieven voor het uitvoeren van deze taken, maar hier waren twee simpele voorbeelden om te laten zien hoe makkelijk een oplossing te komen.

Volgende keer

In het laatste deel van deze serie, toepasselijke naam deel 5 , bespreken we de implementatie van dit systeem. Ik zal een samenvatting van wat er is geleerd en wat ik wist te creëren.

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 3

Door , vrijdag 04 december 2009 23:37

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

In deel 2 hebben we gekeken naar de banen een server draait, en hoe banen moet worden geconfigureerd om de grootste hoeveelheid van de verwerking te bereiken tegelijkertijd voor te zorgen dat elke opdracht wordt verwerkt zonder mankeren.

Het opzetten van uw werknemer - of slap server

De volgende stap in het proces is het opzetten van uw virtuele werknemers. Voor deze ga ik een installatie van CentOS met behulp van VirtualBox te gebruiken. Ik ga installeren MySQL en PHP op de server, ook wel bekend als een slappe (Li nux, m ySQL, P HP) Servera (ik heb die naam up).

  • Installeer VirtualBox op uw Windows-machine (volg link)
  • Download en CentOS (huidige versie 5.3) te installeren in een virtuele machine gemaakt

Het heeft geen zin me gaan dit is er waarschijnlijk 1000 's van de grote tutorials die er zijn (ok, hier is een: maken en Managing CentOS virtuele machine onder virtualbox ). Het belangrijkste punt om op te merken Ik neem aan dat ik belde mijn virtuele machine GridMachine.

Wat als mijn keuzes van virtualisatie client-en besturingssysteem te gaan is er geen grote dwingende reden voor elke keuze. VirtualBox is iets wat ik gebruik op mijn home machine en wordt ondersteund door de drie grote besturingssystemen. Ik heb gekozen voor CentOS als een goede stabiele OS en ik gebruik het op mijn eigen webserver. Ik ben een groot voorstander van de juiste tools voor het werk (hoewel ik het toepassen van hier 'de snelste en eenvoudigste te gebruiken voor je' mentaliteit), dus als besturingssysteem X draait je code sneller en efficiënter gebruik dat in plaats daarvan:)

Belangrijk is ervoor te zorgen dat uw VM DHCP gebruikt anders, voor elke nieuwe virtuele machine zou moeten apart geconfigureerd worden dat is iets wat we niet want.By gebruik van DHCP we hoeven niet individueel te configureren netwerkinstellingen voor werknemers machines, zal DHCP de hand uit IP's voor je. Daarom kunt u kopieert uw virtuele machine over het kantoor zonder zorgen te maken over het instellen van een ieder op (dit verbetert de schaalbaarheid en vermindert de werknemer administratie).

Het proces dat je moet streven te bereiken zou zijn om een ​​nieuwe fysieke machine te verkrijgen, VirtualBox installeren, en vervolgens vrij veel het virtuele beeld te zetten zonder veel anders. Het kan verstandig zijn om al uw werknemers setup op een ander subnet, zodat u kunt in ieder geval zien hoeveel machines draaien. U moet ook het instellen van uw machines op een erfpacht of een onbeperkte lease DHCP.

Hoe te Jobs draaien op de werknemer

Dit is een interessant gebied en er zijn verschillende valide methoden voor de verwerking van banen op de werknemer. Hier heb ik maar gewoon bespreken de twee meest voor de hand liggende:

  • Voortdurend draaien script: Een script, zij het een shell script, of een PHP-script wordt eenmalig uitgevoerd op de werknemer en loopt als onderdeel van een oneindige lus. Ik heb scherp geprijsde deze methode als een crash van het script en mogelijk uw werknemers zal ophouden te draaien zonder enige vorm van interventie.
  • Cron op basis van script execution: Elke x minuten de cron daemon start een oproep om je script om dingen te gaan. Zonder enige controle dit kan leiden tot heel veel kopieën van uw werknemer script draait.

Mijn besluit was om te gaan met cron, die start een shell script iedere 10 minutes. Mijn shell script voert de volgende taken:

  1. Hier krijg je een lijst met processen en grep dit voor 'php'. Indien niet gevonden ga dan verder.
  2. Bel uw job-code, in mijn geval zou dit op basis van wat PHP
  3. Werknemer script voltooid zijn run
  4. Klaar om weer op de eerstvolgende oproep

Mijn bash script ziet er ongeveer als volgt uit:

  #! / Bin / sh
 Als ps ax | grep-v grep | grep php> / dev / null
 dan
     echo "Job is op dit moment verwerkt, afslag"
 anders
     echo "Job niet wordt uitgevoerd, nu beginnen"
     php yourJobProcessingScript.php
 fi 

Let op: de echo's zijn bijna volledig zinloos, maar kan de volgende persoon, die komt langs om te proberen en te bewerken hen te helpen.

Dat concludeert de opzet van de werknemer virtuele machine, snel, eenvoudig en gemakkelijk te kopiëren naar elk nieuw stuk hardware die wordt ontvangen. De 'slimheid' van het net is niet echt in de gevisualiseerde OS, zijn alle te maken met de code het leven geroepen om banen, de baan configuratie, en in ervoor te zorgen dat het werk wordt uitgevoerd indien van toepassing (dwz wanneer de host is niet actief proces ).

Het instellen van Windows voor werknemers initialiseren

De eerste taak is om samen de opdracht uit die nodig om de virtuele machine te lopen vanaf de windows command line. Als u hebt geïnstalleerd VirtualBox in de standaard locatie en je hebt de naam van uw werknemer GridMachine vervolgens de opdracht nodig is om te laden van uw werknemer:

  "C: \ Program Files \ zon \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Maar om het script uit te voeren in een 'headless' staat moeten we gebruiken:

  "C: \ Program Files \ zon \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = off 

Dit start de virtuele machine zonder dat de GUI en laat het elegant op te slaan staat. Het tweede argument gaat uit RDP, zodat het niet in strijd is met ramen RDP, of geven u een bericht over het luisteren op poort 3389. De virtuele machine is hoofdlettergevoelig!

Vervolgens moeten we naar windows opgezet om kick-off onze werknemer VM nadat de machine is inactief is. Om dit te doen (op Windows XP) je nodig hebt om te gaan Start -> Alle Programma's -> Bureau-accessoires -> Systeemwerkset -> Geplande taken, zoals hieronder:

geplande taken

Klik vervolgens op 'nieuwe taak toevoegen', gevolgd door bladeren naar een aangepast programma toe te voegen. Navigeer naar uw VBoxManage script en klik op ok. Plan uw taak voor een van de opties (we zullen deze verandering in een minuut) en ga verder. Na het overslaan van het volgende scherm zal Windows je vragen wie je deze taak wilt uitvoeren, zou ik stel voor ofwel 'Administrator' of het creëren van een nieuwe bevoorrechte gebruiker. Denk eraan dat we willen niet met de standaard personeel account op de machine interfereren op elk gewenst moment. Klik op Volgende en controle blijkt geavanceerde opties voor deze taak.

Naar het einde van de run tekstvak toe te voegen onze 'startvm GridMachine' string en zorg ervoor dat alleen wordt uitgevoerd wanneer ingelogd wordt gelaten uitgevinkt. Bezoek de planning taak volgende en verander het schema naar beneden vallen om de optie 'als idle', kies de hoeveelheid tijd die u wilt dat de machine inactief worden voordat u naar het volgende tabblad.

Eindelijk de optie uitvinken waarin staat stoppen met de taak als deze is het draaien van X hoeveelheid tijd, maar de optie om de taak te stoppen vinkje als de machine is niet meer actief.

rooster

Dat is het dan voor de Windows host setup!

Overzicht

In dit deel hebben we het opzetten van een virtuele machine op te treden als een werknemer, alsook de manier waarop we bellen en uit te voeren onze taak de verwerking van scripts (voor mezelf een PHP-script). Vanaf hier kijken we hoe het opzetten van onze kopieën van Windows op te starten van de virtuele machine in headless modus wanneer de computer inactief, en sla de staat wanneer de gebruiker hervat gebruik van de machine. Hopelijk op dit punt ben je zien hoe eenvoudig het is om een ​​dergelijk systeem en staan ​​te popelen om nog wat experimenten gaan zelf!

Volgende keer

In deel 4 zullen we kijken naar het gebruik van gereedschap om ervoor te zorgen dat u de meest recente versie van de code en gegevensbronnen draaien zodat de verkregen resultaten zijn altijd up-to-date met de nieuwste zakelijke informatie en logica.













Panorama Thema door Themocracy

7 bezoekers nu online
2 gasten, 5 bots, 0 leden
Max bezoekers vandaag: 19 om 06:09 UTC
Deze maand: 19 op 19-08-2011 06:09 GMT
Dit jaar: 130 op 28-03-2011 22:40 GMT
All time: 130 op 28-03-2011 22:40 GMT