@ onderdrukt meer dan je denkt

22 April 2008 door Davy

picture-5.png

Als je een functie met @ voorafgaat dan worden de errors van deze functie onderdrukt. Tevens wil dat ook zeggen dat als deze functie niet bestaat, je script wordt gestopt zonder iets van foutmelding.

MySQL: Random record

5 November 2007 door Bert

Dit is de manier om een random record te nemen uit een table in MySQL.
select * from banners order by rand() limit 1

Update: Het voorstel van Frank in de reacties is veel beter.

Technorati , ,

Flickr toont 12000 foto’s per seconde

3 June 2007 door Bert

Een kort overzicht van indrukwekkende statistieken over Flickr. Deze verschenen op de FlickrBlog en kwamen op de website toen Flickr even down ging voor onderhoud een paar dagen geleden.

  • Tijdens de drukke perioden toont Flickr 12.000 foto’s per seconde. Dit komt neer op 2.654.208.000 (dus 2,6 miljard) bits per seconden, ofwel een Gigabyte elke 3,23 seconde. Best dat Flickr nu in handen is van Yahoo om dit hardware- en netwerkmatig nog steeds vlot te kunnen aanbieden.
  • Op 28 mei 2007 bereikte Flickr een uploadrecord: 2.070.075 foto’s geüpload in 24 uur tijd.
  • Flickr heeft 8,5 miljoen geregistreerde gebruikers.
  • Er zijn meer dan 10 miljoen verschillende tags toegevoegd aan foto’s op Flickr. Persoonlijk had ik er meer verwacht.
  • Er zijn al 17,7 miljoen foto’s ge-’geotagged’. Dus voorzien van coördinaten zodat je eenvoudig kan zien waar ze genomen zijn.
Technorati , ,

Queries optimaliseren

17 April 2007 door Bert

Om het resultaat van een query te krijgen heb je soms verschillende mogelijkheden. De vraag is dan dikwijls: Wat is nu de efficiëntste manier? Hiervoor heb je enkele technieken ter beschikking om de verschillende mogelijkheden te testen. Dit zijn eerst en vooral technieken voor mysql. Ik heb niet verder gezocht in hoeverre deze technieken ook werken op andere databasetypes.

explain gebruiken voor een query is een eerste techniek. Hiermee kan je eerst en vooral zien welke indexes er gebruikt worden. Deze techniek is dan ook vooral handig bij wat ingewikkeldere queries.

explain select * from table

Het resultaat is één of meerdere rijen met informatie over hoe de query wordt opgevraagd in de tabel of tabellen. Alle uitleg over wat de exacte betekenis is vind je in de MySQL 5.0 reference.

Later meer.

relative naar absolute url’s

4 April 2007 door Tijs

Ik was een functie aan het schrijven om relative urls om te zetten naar absolute. Bijvoorbeeld:

PHP:
  1. ... href="/foo.php?bar=1" ...

moet worden vervangen door

PHP:
  1. ... href="http://www.example.net/foo.php?bar=1" ...

Aangezien ik hier wel wat moeite mee gehad heb, deel ik graag de functie.

PHP:
  1. /**
  2. * Convert relative urls into absolute urls
  3. *
  4. * @param    string    $prefix
  5. * @param    string    $text
  6. * @return    string
  7. */
  8. function relativeToAbsolute($prefix, $text)
  9. {
  10. // search for single quotes and replace them by double quotes
  11. $search = '\'';
  12. $replace = '"';
  13. $text = str_replace($search, $replace, $text);
  14.  
  15. // replace relative urls by absolute (prefix them with $prefix)
  16. $pattern = '/href="(?!http|https|ftp|irc|feed|mailto)([\/]?)(.*)"/i';
  17. $replace = 'href="'.$prefix.'/$2"';
  18. $text = preg_replace($pattern, $replace, $text);
  19.  
  20. // return
  21. return $text;
  22. }

Technorati , , , ,

htaccess aanmaken onder windows

29 March 2007 door Davy

Sommige mensen hebben het lastig om onder windows htaccess bestanden aan te maken. Een leuke tip. Open notepad, doe je ding en sla het bestand op als “.htaccess” (met de quotes erbij!). Et voila, mission accomplished!

Technorati

PHP5: Functies in functies (vies!)

25 March 2007 door Davy

Om de één of andere reden is zondag de leukste dag om te programmeren in PHP. Dit is nu de 3de week op rij dat ik iets "nieuw" ontdek op een zondag in PHP. Deze week het feit dat je functies in functies in functies kan definiëren EN gebruiken. Hieronder een vies voorbeeldje ;)

function_foo.png

Geeft als output:

function_foo_output.png

Ps: Graag wil ik ook even vermelden dat je bvb niet de functie "foo" kan definiëren in een reeds bestaande functie foo. Ook best wel vies ;)

PHP5 en SOAP

12 March 2007 door Tijs

Ik ben de laatste dagen aan het uitzoeken hoe ik een webservice kan maken. Na veel lezen, opzoeken, vragen stellen hebben de mannen van Openminds mij op het juiste pad gebracht (waarvoor dank), namelijk SOAP.

Omdat ik heel wat problemen ben tegengekomen zet ik hieronder even de code om anderen te helpen. Let wel, ik ben ook nieuw met SOAP. Dus sla mij niet dood als het niet direct werkt.

Eerst heb ik de "server geschreven".

PHP:
  1. <?php
  2. // require the class that will handle the calls
  3. require_once 'classes/API.php';
  4.  
  5. // disable the soap.wsdl_cache
  6. ini_set("soap.wsdl_cache_enabled", "0");
  7.  
  8. // get RAW_POST_DATA
  9. if(!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = file_get_contents('php://input');
  10.  
  11. // set options for the server
  12. $options = array('uri' => 'http://localhost/SOAP/');
  13.  
  14. // init server
  15. $server = new SoapServer(null, $options);
  16.  
  17. // set the class that will handle the SOAP-requests
  18. $server->setClass('API');
  19.  
  20. // handle SOAP-requests
  21. $server->handle();
  22. ?>

Dan de class die de SOAP-requests zal afhandelen.

PHP:
  1. <?php
  2. class API
  3. {
  4. /**
  5. * returns 'Hello World'
  6. *
  7. * @return string
  8. */
  9. public function sayHello()
  10. {
  11. return 'Hello World';
  12. }
  13. }
  14. ?>

Dan de "client".

PHP:
  1. <?php
  2. // set client options
  3. $options = array('location' => 'http://localhost/SOAP/server.php', 'uri' => 'http://localhost/SOAP/');
  4.  
  5. try {
  6. // init client
  7. $client = new SoapClient(null, $options);
  8. // make SOAP-request and print it
  9. echo '<pre>';
  10. echo "\n".$client->sayHello();
  11. echo '</pre>';
  12. }
  13. // catch SOAP-errors
  14. catch(SoapFault $e)
  15. {
  16. // print error
  17. print_r($e);
  18. }
  19. ?>

Opmerkingen zijn uiteraard welkom!

Technorati , , , ,

PHP5: Referenties naar niet bestaande objecten

10 March 2007 door Davy

Een tijdje geleden zat ik vrij OO bezig en stuitte ik op iets wat ik eigenlijk had moeten voorzien. Eén hoofdclass hield een template object bij en een drietal andere classes hadden een referentie naar dit object. Onder zekere voorwaarden werd het eigenlijke object opnieuw aangemaakt. Hierdoor gingen alle referenties in die drie andere classes op zichzelf bestaan en was de "verwijzing" niet langer..

code1.png

output.png

Het relaas van dit alles is vrij simpel. Als je éénzelfde object van verschillende locaties aanspreekt, kijk dan goed uit als je dit object om de één of andere reden opnieuw zou moeten aanmaken, want de verwijzingen zijn "dood".

Bijkomende veiligheidsmaatregel rond de constructie van websites

23 February 2007 door Bert

Bert de bouwer

Technorati