Web 2.0 sviluppare e
 ottimizzare oggi

    alessandro cinelli (cirpo)
Chi sono

• sviluppatore Php, Javascript e Java
• membro Lugbs, Grusp, symfony-it
• traduttore documentazione symfony,
  zend framework e ProGit
• sviluppatore progetto phpCollab
perche’ siamo qui?

• condividere
• barcamp
• webdebs
www.webdebs.org


       http://groups.google.com/group/webdebs


http://www.linkedin.com/groups?gid=2801279&trk=myg_ugrp_ovr
www.webdebs.org
incontri


• web 2.0 sviluppare e ottimizzare oggi
• svcs: git e svn a confronto
• symfony framework, un’introduzione
• ...
sbadiglio
C’era una
 volta...
LEGO 1996
Apple 1997
Apple 2000
LEGO 2000
LEGO 2004
Apple 2004
LEGO 2010
Apple 2010
LEGO 1996
LEGO 2000
LEGO 2010
Apple 1997
Apple 2000
Apple 2004
Apple 2010
2004 - oggi
                        2004
2005




   2006

                         2007
Tim O’Reilly




http://oreilly.com/web2/archive/what-is-web-20.html
Tecnologie
   Rest    jquery              cassandra xslt
   symfony            HTML5 redis
             php agile           svg          RoR
            mvc
   java ajax python         flex        cloud

              Yui        xsl MongoDb zend fm
 XHTML
                    css3
          nosql orm xml Ec2 DOM
 json            comet mysql silverlight        canvas
 wireframes
            groovy svn TDD                 flash Hadoop
                              xunit
mapreduce       erlang couchDb       git     memcached
  microformat
               webservices websockets
HTML 5




http://www.foxtrot.com/2010/03/03212010/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Foxtrotcom+(FoxTrot.com)
HTML 5
• canvas
• svg
• geo location
• Html5Storage
• web workers
• audio
• video
             http://diveintohtml5.org/
NoSql
• Database documentali
 • CouchDb
 • MongoDb
• Key/Value
 • MemcachedDb
 • Redis
 • Cassandra
YouTube

• Apache
• Python
• Mysql
• Lighthttpd(video)
     http://video.google.com/videoplay?docid=-6304964351441328559
YouTube
while (true)
{
identify_and_fix_bottlenecks();
drink();
sleep();
notice_new_bottleneck();
}
YouTube
       Pagine servite



•   11,574 al secondo
•   694,444 al minuto
•   41,666,667 all’ora
•   1,000,000,000 al giorno
YouTube
• CDN
• NetScaler(Citrix) Load Balancer
• Lighttpd
• mini cluster per video
• Estension scritte in C
• Html Cache
• Python Object Cache
• BigTable images
• Mysql
Facebook

• 8 miliardi di minuti passati
  complessivamente ogni giorno
• 2, 5 miliardi di foto caricate ogni settimana
• 300 milioni di utenti
Facebook
                                  LOAD BALANCER




                              WEBSERVER (PHP) SERVICES




SERVICES(veloci, complessi)   DATABASE(lento, persistente)   MEMCACHED(veloce, semplice)
Facebook

• php
• java
• erlang
• python
• ruby
Facebook


• http://developers.facebook.com/
• http://video.fosdem.org/2010/maintracks/
  facebook.xvid.avi
blog devs

• http://code.flickr.com/blog/
• http://developer.yahoo.com/
• http://developers.facebook.com/
strumenti di sviluppo
• svcs
• project management
• continuos integration system*
• wireframes/mockup
• ide/editor
• editor di immagini
• browser
ide
• vim
• eclipse/aptana
• netbeans
• dreamweaver
• textmate
ide/editor
monitor


• nagios
• mytop
debug lato server


• xdebug
• zend debugger
debug lato client


• firebug
• web developer
firebug
• framework
• librerie
• metodologie di sviluppo
ottimizzazione
We should forget about small efficiencies, say
about 97% of the time: premature optimization
is the root of all evil -Donald Knuth-


• lato server
• lato client
ottimizzazione lato
         server

• cache
• web server
• database
ottimizzazione


• yslow
• live httpheaders
ottimizzazione


• http://code.google.com/closure/compiler
•   http://developer.yahoo.com/yui/compressor/
http://lugbs.linux.it
sickgirl.it
sickgirl.it
sickgirl.it
ungolperlavita.it
ungolperlavita.cirpo.org
ugplv.cirpo.org
domande ?
grazie a tutti :)

• alessandro.cinelli@gmail.com
• twitter.com/cirpo
• http://delicious.com/cirpo
• http://it.linkedin.com/in/cinellialessandro

Web 2.0 sviluppare e ottimizzare oggi