MBWC – Minimal Bash Web Crawler

L’ANNO scorso, per un esame, ho presentato un piccolo progetto basato su uno script in bash con funzioni di crawler. Molti di voi avranno subito pensato: a questo scopo, se proprio vuoi usare bash, esiste già wget e funziona benissimo con un sacco di funzioni, eh lo so anche io, ma lo scopo di questo script è proprio non utilizzare wget con le funzioni ricorsive che già implementa. Ovvero wget è presente ma scarica solo una pagina alla volta, e viene richiamato enne volte (con enne uguale al numero di pagine che vogliamo scaricare).

Wget è scritto in C invece in questo script la parte che si occupa del trovare i link e filtrarli è tutta scritta in bash, è proprio questa a mio parere la parte più interessante grazie alla quale c’è maggiore possibiltà di personalizzazione. Questo script nel progetto era corredato del, forse altrettanto interessante, script sempre in bash per calcolare delle statistiche (riccorrenze di parole, ecc ecc) sulle pagine salvate, ovvero la vera funzione di un crawler. Per ora questo script non lo pubblico anche perchè avendolo fatto come ultima parte del progetto gli ho dedicato meno tempo e non ne sono per niente soddisfatto. Quando avrò tempo di sistemarlo pubblicherò anche quello.

Colgo l’occasione per segnalare un altro Crawler questa volta scritto in PHP creato da due miei colleghi si tratta di OpenCrawler, molto interessante e da provare, avrò modo prossimamente di scriverci un articolo al riguardo.

Introduzione

MBWC è uno script bash che visita un URL e identifica tutti gli hyperlink presenti nel documento aggiungendoli alla lista di URL da visitare. L’URL di partenza viene definito dall’utente. Ogni pagina HTML visitata viene salvata. Il numero di documenti da salvare è definibile dall’utente altrimenti di default è 100.

Istruzioni

Per utilizzare questo script è sufficente aprire una finestra del terminale, posizionarsi
nella cartella in cui è presente lo script e lanciare il seguente comando:

./mbwc [URL_di_partenza] [numero_pagine_da_scaricare]

Dove:

  • URL_di_partenza è l’url della pagina web da cui deve partire lo script, campo obbligatorio;
  • numero_pagine_da_scaricare è il numero di pagine da scaricare, questo campo è facoltativo di default assume il valore 100;

Lo script salverà nella cartella denominata “pagine” le pagine richieste rinominandole con un numero e l’estensione .html e produrrà i seguenti file di log:

  • link.log conterrà l’elenco degli URL visitati e scaricati, ogni riga corrisponde al file con nome numero_della_riga-1;
  • err.log conterrà l’elenco degli URL che lo script ha cercato di visitare ma non ha scaricato per errori riscontrati da WGET per esempio nel caso il server abbia restituito gli errori: 400 e 404 (pagina non trovata), 505 (errore del server), tempo di attesa troppo elevato ecc ecc;
  • wgetlog.log conterrà l’output di wget dell’ultimo URL con cui è stato lanciato, in runtime è utile per capire il motivo per il quale potrebbe essersi bloccato lo script.

In standard output lo script stampa varie informazioni utili per seguire l’esecuzione dello script.

Esempio:

./mbwc repubblica.it 1000

STD Output:

Creata directory di output: pagine
ho scaricato: 0.html ->  repubblica.it 191358 byte
PARZIALE: counter= 1 errori= 0
Link trovati: 526
ora ricavo i link da: repubblica.it -> 0.html
link_trovato: http://www.repubblica.it/
link_trovato: http://m.repubblica.it/
link_trovato: http://quotidiano.repubblica.it/home
link_trovato: http://www.repubblica.it/servizi/mobile/index.html
link_trovato: http://www.facebook.com/Repubblica
link_trovato: http://www.repubblica.it/servizi/rss/index.html
...
Link validi trovati: 354
ho scaricato: 1.html ->  http://www.repubblica.it/ 191358 byte
ho scaricato: 2.html ->  http://m.repubblica.it/ 10840 byte
ho scaricato: 3.html ->  http://quotidiano.repubblica.it/home 5858 byte
ho scaricato: 4.html ->  http://www.repubblica.it/servizi/mobile/index.html 5929 byte
ho scaricato: 5.html ->  http://www.facebook.com/Repubblica 11019 byte
ho scaricato: 6.html ->  http://www.repubblica.it/servizi/rss/index.html 18509 byte
...
...
----------------------------------
Totale size: 384701 byte Time: 45 sec

Funzionamento

Lo script è composto principalmente da due funzioni: ricava_link e scarica_pagine.
Una volta lanciato, dopo alcuni controlli sul numero di pagine da scaricare (d’ora in poi chiamato target) e sulla cartella di destinazione parte scaricando la pagina presente al link passato come primo parametro e la salva nel file 0.html, sucessivamente la funzione ricava_link analizza questa pagina e ne ricava tutti i link presenti salvandoli in un array.

Questa array viene passata a scarica_pagine che ne scarica tutti gli URL. Dopo di chè lo script passa la pagina 1.html a ricava_link e il funzionamento procede in modo ricorsivo finchè non viene raggiunto il target.

Codice del ciclo principale dello script

while test $COUNTER -lt $TARGET #finchè COUNTER non raggiunge il TARGET
do
 if test $COUNTER -ne 0 ;then #se non è il primo ciclo
 ricava_link
 fi
 scarica_pagine
done

ricava_link

Questa funzione ricava tutti i link presenti nella pagina che ha per nome il valore della variabile FLAG_NEXT_PAGE,
inizialmente ricava in un array temporanea i contenuti di tutti i parametri href presenti nel sorgente html della pagina.
e stampa a video il numero di link trovati. Poi passa ad analizzare questi link uno ad uno salvando quelli che superano i controlli
nell’array denominata ARRAY_LINK. Ogni link deve corrispondere a questi criteri:

  • Non deve terminare con le seguenti estensioni: css, jpg, ico, gif, png, swf, doc, ppt, xml, pdf, c, txt, gz, zip, deb, jsp;
  • Non deve inziare con: mailto, ftp, #;
  • Se non inizia con http e nemmeno con / viene modificato aggiungendogli davanti l’indirizzo della pagina da cui proviene (relative-link);
  • Se inizia con / gli viene aggiunto davanti solo il dominio della pagina da cui è stato ricavato (root-relative-link)
  • Non deve essere presente nel log delle pagine già scaricate;
  • Non deve essere presente nel log delle pagina non scaricate a causa di un errore restituito da wget;

Una volta analizzata tutta l’array temporanea viene stampato a video il numero dei link VALIDI trovati

Linee di codice rilevanti (anche se ogni linea di codice è rilevante)

grep -i 'href="' "$DIR_PATH$FLAG_NEXT_PAGE".html | sed 's/^.*href="//I' | sed 's/".*$//'

scarica_pagine

Questa funzione scorre l’array denominata ARRAY_LINK e passa ogni link a wget, se la pagina viene scaricata correttamente viene aggiunto il link al log delle pagine scaricate altrimenti viene aggiunto al log degli errori.

Linee di codice rilevanti (anche se ogni linea di codice è rilevante)

wget -O "$DIR_PATH$COUNTER".html -t 3 ${ARRAY_LINK[$indice]} -o "$LOG_WGET"

Comando WGET a cui si passa in input il link con indice $indice dell’array ARRAY_LINK, salva la pagina scaricata nel file “$DIR_PATH$COUNTER”.html e indirizza lo standard output nel log file “$LOG_WGET”, wget tenterà di scaricare la pagina solamente 3 volte.

TODO

Come ogni progetto ha innumerevoli possibilità di miglioramento. Le prossime che volevo applicare sono:

  • Invece di specificare il numero di pagine da scaricare possibilità di specificare la profondità dell’albero delle visite.
  • Nomi delle pagine scaricate più user friendly

flickrRSS RU – WP Plugin for Unlimited* and Random Images from Flickr to your blog

Integrate Flickr photos into your site. Random option and limit of 500 images. It supports user, set, favorite, group and community photostreams.

Contributors: Gianluca Crema, eightface
Donate link: PayPal
Official Page on wordpress.org: wordpress.org/extend/plugins/flickrrss-ru
Tags: flickr, photos, images, sidebar, widget, rss, random
Requires at least: 2.6
Tested up to: 3.0
Stable tag: 1.0

Description

This plugin allows you to easily display Flickr photos on your site. It supports user, set, favorite, group and community photostreams. The plugin is relatively easy to setup and configure via an options panel.

Avoids the limit of 20 images flickr feed to up to 500 images, implements a random function.

Derived from the flickrRSS plugin created by eightface adding RU functions (Random and Unlimited).

Installation

  1. Put the flickrRSS RU files into your plugins directory
  2. Activate the plugin
  3. Configure your settings via the panel in Options
  4. Add <?php get_flickrRSSRU(); ?> somewhere in your templates or adding the flickrRSSRU widget to your widget area.

Frequently Asked Questions

Can I get random images from my stream?

Yes, Just enable the Random option in the settings panel.

How do a I get borders between photos?

You need to edit your CSS file. There are plenty of tutorials online, you may find some help in the forum.

Why aren’t any photos showing up?

Sometimes it can take a little while to kick in, have patience. Flickr may possibly have been down.

Will it work with video?

Yes, videos will be displayed as a thumbnail image. You’ll need to click through to flickr to play it though.

Screenshots

Changelog

1.0 Modifica della parte più grossa del codice, risolto un bug nei link alle foto dei set

0.2 Initial release

Feedback and Support

For Feedback and Support leave a comment to this post or contact me from contact page. I’ll do my best to respond.

Soon I will create a forum.

Advanced

The plugin also supports a number of parameters, allowing you to have multiple instances across your site.

  1. 'type' => 'user' – The type of Flickr images that you want to show. Possible values: ‘user’, ‘favorite’, ‘set’, ‘group’, ‘public’
  2. 'set' => 'set_id' – Optional: To be used with type = ‘set’
  3. 'id' => 'user_set' – Optional: Your Group or User ID. To be used with type = ‘user’ or ‘group’
  4. 'random' => false – Optional: Enable the random images
  5. 'num_random' => 20 – Optional: Number of images which allows choosing randomly
  6. 'num_items' => 4 – The number of images that you want to display
  7. 'before_list' => ' ' – The HTML to print before the list of images
  8. 'html' => '<a href="%flickr_page%" title="%title%"><img src="%image_square%" alt="%title%"></a>' – the code to print out for each image.
    Meta tags available: %flickr_page%, %title%, %image_small%, %image_square%, %image_thumbnail%, %image_medium%, %image_large%
  9. 'default_title' => "Untitled Flickr photo" – the default title
  10. 'after_list' => ' ' – the HTML to print after the list of images

Example 1

<?php get_flickrRSSRU(array(
'num_items' => 50,
'type' => 'public',
)); ?>

This would show the 50 most recent community photos.

Example 2

<?php get_flickrRSSRU(array(
'set' => '72157620600672300',
'num_items' => 25,
'type' => 'set',
'random' => true,
'num_random' => 150
)); ?>

This would show 25 random picture from the 150 most recent thumbnail sized photos from the specified set.

L’importanza della sitemap XML e come crearla

CON sitemap si intende quella pagina del sito che raccoglie in modo gerarchico tutte le pagine del sito per fornire ad un utente una vera e propria mappa. Oltre che agli utenti questa pagina è utile anche agli spider dei motori di ricerca che in questo modo leggono ed esplorano tutti i link del sito.

C’è una versione della sitemap ancora più utile ai motori di ricerca la sitemap XML ovvero un file, appunto in formato XML, che secondo degli standard raccoglie l’elenco di tutte le pagine e dei rispettivi link di un sito che vogliamo indicizzare nella serp dei motori di ricerca.

In questo modo avendone due con differenti funzioni potremmo ottimizzare la prima per gli utenti e la seconda per i motori di ricerca. La sitemap XML di cui parleremo in questo articolo è stata introdotta da Google nel Giugno del 2005 e risponde ad un protocollo ben definito e nei mesi successivi è stata supportata anche da altri importanti motori di ricerca come Yahoo e MSN (sucessivamente divenuto Bing).

Vantaggi

Il vantaggio fondamentale è che l’utilizzo della sitemap ci consente di essere sicuri che tutte le pagine vengano visitate dallo spider, e quindi si spera indicizzate dai motori di ricerca (dico si spera perchè non basta che una pagina esista perchè venga indicizzata ma deve avere certe caratteristiche) questo senza la sitemap potrebbe non accadare per esempio quando:

  • le pagine all’interno del nostro sito non sono bene collegate fra loro
  • per errore o per altri motivi abbiamo pagine totalmente isolate
  • ci sono pochi link in ingresso al nostro sito
  • abbiamo contenuti in flash, ajax o semplicemente javascript che potrebbero nascondere certe pagine agli spider
  • abbiamo migliaia di pagine tipo per un azienda che produce migliaia di prodotti ed è presente una pagina per prodotto oppure abbiamo migliaia di post

Nel caso per esempio che alcuni motori di ricerca abbiano indicizzato pagine che ora non esistono più avendo una sitemap definita della pagine esistenti quelle sbagliate verranno tolte dai risultati (attenzione questo non è automatico ma sicuramente aiuta a fare chiarezza).

Oltre che all’elenco di pagine la sitemap offre ai motori di ricerca altre informazioni molto importanti come:

  • la data di ultima modifica di ogni pagina
  • la frequenza di aggiornamento di ogni pagina
  • la priorità di indicizzazione delle pagine e quindi la loro importanza nel sito: nella sitemap viene assegnato ad ogni pagina un valore in decimi che al massimo può essere 1 questo sta a significare l’importanza della pagina.

Come Crearla

Esistono varie possibilità per creare la sitemap XML a seconda delle esisgenze se si utilizza WordPress per esempio basta un comodo plugin, oppure si può creare con tool online oppure a mano.

A mano

Anche se a mano è la via più scomoda e poco pratica sopratutto se trattiamo migliaia di pagine credo sia importante conoscere almeno la sintassi base di come è strutturata una sitemap XML, anche senza conoscere il metalinguaggio XML (non ci vuole niente per capirlo) vedrete che è abbastanza banale. Il codice base è questo:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/</loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>daily</changefreq>
    <priority>1</priority>
  </url>
  <url>
    <loc>http://www.example.com/secondapagina.htm</loc>
    <lastmod>2005-01-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority></em>
  </url>
</urlset>

Per poterla creare basta un semplice editor di testo e andremo a salvare il file con il nome sitemap.xml ovviamente attenzione che l’estensione sia XML.

Commentiamolo un po il codice, per prima cosa bisogna dichiarare che utilizziamo il linguaggio XML e la codifica UTF-8 (prima riga), poi apriamo il tag <urlset> per definire il protocollo della sitemap XML (seconda riga), poi per ogni url che vogliamo inserire apriamo il tag <url> e definiamo l’indizizzo <loc>, l’ultima modifica <lastmod> (opzionale aaaa-mm-gg), la frequenza di aggiornamento <changefreq> (opzionale può assumere i valori: always, hourly, daily, weekly, monthly, yearly e never) e infine la priorità <priority> (opzionale va da 0.0 a 1.0) ovviamente ricordiamoci di chiudere ogni tag e alla fine di tutto l’elenco chiudiamo l’ultimo tag </urlset>.

Con WordPress

Su wordpress ci sono vari plugin che consentono la creazione di ottime sitemap XML, quello che vorrei consigliarvi in assoluto è Google XML Sitemap Generator for WordPress potete scaricarlo direttamente dalla pagina ufficiale e installarlo come qualsiasi altro normale plugin.

Una volta installato troverete il pannello di controllo XML-Sitemap sotto la voce Settings (Impostazioni) da cui potrete impostare ogni cosa come la frequenza di aggiornamento, la priorità dei vari tipi di pagina, segnalarlo ad alcuni motori di ricerca.

Molto importanti anche le funzioni per escludere alcune categorie o alcuni post. Una volta impostato basterà generare la prima volta la sitemap XML poi questo plugin ad ogni aggiornamento del nostro blog (nuovi post, nuove pagine ecc) modificherà automaticamente al sitemap.

Con Tools On-line

Nel caso non utilizziate una piattaforma potete semplicemente avvalervi di tool on-line che tramite dei crawler esplorano il vostro sito e creano la sitemap, questo potrebbe essere pericoloso perchè per i motivi che dicevamo prima lo spider potrebbe non trovare alcune pagine e quindi escluderle, è meglio controllare i risultati di questi tool per vedere se sezioni del nostro sito sono state trascurate. I tool che vi consiglio io sono:

Potreste anche pensare di utilizzare dei programmini gratuiti come Gsitemap che trovate qua.

Gli unici limiti a cui fare “attenzione” (tra virgolette perchè ce ne vuole a raggiungerli) sono quelli dei 50000 URL e dei 10MB. Vorrei segnalarvi questo post di SeoPerSeo che suggerisce di suddividere in più file sitemap veramente grandi e offre uno script in php utile al riguardo.

Come Segnalarla

La sitemap va generalmente posizionata nella cartella principale del nostro dominio oppure possiamo creare un redirect nel file .htaccess per esempio se si trova nella cartella blog andremo a scrivere questa riga nel file .htaccess:

Redirect /sitemap.xml /blog/sitemap.xml

Affinche venga letta dai crawler possiamo aggiungere una riga al file robots.txt

sitemap: http://www.example.tld/sitemap.xml

Per segnalarla direttamente ai motori di ricerca come Google possiamo utilizzare i Google Webmaster Tool per una guida più esaustiva anche su altri motori di ricerca e sugli altri strumenti avanzati vi rimando al guest post che ho scritto su francescogavello.it

Oppure possiamo utilizzare i seguenti url di segnalazione tramite i quali inoltrare direttamente la sitemap ai motori di ricerca Google e Bing, al posto di {url} inserire l’indirizzo della sitemap.

http://www.google.com/webmasters/tools/ping?sitemap={url}

http://www.bing.com/webmaster/ping.aspx?sitemap={url}

I guru in Italia, come rovinare una community

Purtroppo il post di Antonio Fullone non è più raggiungibile

Vorrei condividere con voi questo post scritto da Antonio Fullone che lascia trasparire con una certa veemenza la rabbia che prova verso la “community” italiana dei web designer, lui stesso lo definisce il post più duro della sua carriera.

Devo ancora bene farmi un idea su questo argomento, non ho in effetti lasciato neanche un commento a questo post, non so ancora bene cosa pensare ma mi sembrava importante comunque a prescindere dal proprio pensiero o dal proprio punto di vista. Sicuramente è una discussione calda è sarebbe interessante assistere a degli sviluppi.

Magari quando avrò maturato la mia idea al riguardo scriverò un post. Buona lettura.

I guru in Italia, come rovinare una community

Template Engine, indispensabili per lo sviluppo di siti e applicazioni web

NELL’articolo precendente avevo parlato del pattern Model-View-Controller, ma prima di affrontare il tema dei Frameworks, vorrei presentarvi una soluzione per applicare parte di quel modello alla risoluzione di un progetto: i template engine. Si tratta di software che gestiscono la visualizzazione in un applicazione web, consentono di separare completamente l’HTML dal resto del codice, diminuendo considerevolmente il lavoro di manutenzione e rendendo indipendenti le vari parti del progetto.

Vantaggi

Con i Template Engine si può sviluppare un applicazione web disinteressandosi completamente, in un primo tempo, dell’aspetto di visualizzazione dei dati e della grafica poi sviluppare la grafica e la presentazione dei dati come un problema a sè stante. Questo consente di suddividere il lavoro in più tempi semplificandone certi aspetti oppure nel caso si lavori in team di dividere il lavoro a varie persone.

Nel caso per esempio si volesse rinnovare completamente la grafica di un applicazione basterà mettere mano ai template senza dover andare a toccare il codice del controller (il motore dell’applicazione). Il controller si occuperà solo dell’elaborazione mandando al template engine dati “rozzi” che quest’ultimo implementerà nell’HTML.

Per riassumere possiamo vedere i seguenti come i principali vantaggi:

  1. Manutenzione, se dobbiamo fare semplici mofiche al codice del motore dell’applicazione sarà più semplice senza dover toccare la parte grafica
  2. Grafica completamente separata dal codice, quindi le due cose possono essere sviluppate da persone differenti e in momenti differenti
  3. Aiuta a mantenere il codice html pulito e conferme agli standard
  4. Velocità, grazie alla cache, implementata ormai in molti template engine, la presentazione delle pagine è più veloce
  5. Sicurezza, tra l’utente male intenzionato e il codice del controllore c’è uno sbarramento in più.
  6. Riutilizzo, possiamo cambiare completamente la grafica senza toccare il codice.

Come per i frameworks anche in questo caso esistono vari template engine per ogni linguaggio di programmazione, quello da me più utilizzato che vedremo nello specifico è Smarty.

In realtà potremmo anche valutare di realizzarne uno molto semplice noi, questo per un sito di poche pagine senza grandi pretese potrebbe essere una buona soluzione ma i vantaggi che comporta utilizzarne uno già fatto sono numerosi, dalla sicurezza alla facilità di implementazione.

Smarty

Smarty è un motore di web template scritto in PHP attualmente è alla versione 2.6 ma è in fase di completamente la versione 3.0 (per ora è stata rilasciata la beta 7). In pratica si tratta di una classe scritta in PHP per gestire template ovvero nient’altro che file con estensione .tpl scritti in html a cui possiamo collegare CSS, Ajax, Javacript ecc ecc.

Nel template al posto dei contenuti andiamo a mettere dei speciali tag tra parentesi graffe. Smarty non farà altro che prendere i contenuti passati dal codice e metterli nel template in html al posto dei tag. La realizzazione di tutto ciò la andremo a vedere nei prossimi articoli.

Introduzione al pattern architetturale MVC e ai Frameworks

A livello di progettazione, quindi successivamente di implemetazione, per semplificare la struttura di applicazioni più o meno complesse si necessita di design pattern ovvero di modelli di lavoro che servono a dare “una soluzione generale ad un problema riccorrente”. In altre parole si tratta di metodi di approccio standardizzati atti alla risoluzione di una classe di problemi che hanno particolari caratteristiche in comune.

Nell’ingegneria del software ne esistono varie categorie, anche a seconda del tipo di classificazione, in particolare il pattern che andremo a vedere noi oggi (l’MVC) appartiene ai pattern architetturali. Questi si discostano leggermente dai deisgn pattern originali prendendone una visione ancora più ampia, si tratta della stessa categoria per esempio a cui appartiene il modello Client-Server.

MVC

MVC è l’acronimo di Model-View-Controller (italianizzato in Modello-Visualizzazione-Controller) appunto come dicevamo prima un pattern architetturale impiegato in ingegneria del software per dividere in 3 parti, idealmente indipendenti, l’applicazione che si vuole sviluppare.

Queste tre componenti si occupano ognuna di un compito diverso in modo da dividere il controllo dell’applicazione, la struttura dati e la visualizzazione.

Vediamo nel dettaglio le tre parti:

  • il modello si occupa della gestione dei dati quindi dell’interazione con il database e dell’astrazione degli stessi.
  • la visualizzazione si occupa dell’interazione con l’utente e quindi della visualizzazione dei dati con una certa formattazione
  • infine il controller riceve i comandi inviati dall’utente alla visualizzazione si occupa dell’eventuale elaborazione del passaggio al modello e di nuovo della risposta alla visualizzazione, in pratica serve a modificare lo stato degli altri due componenti.

In questa immagine vediamo una rappresentazione leggermente differente dal modello MVC appena esposto, qua abbiamo in più il browser che rappresenta l’utente che interagisce con l’applicazione e invia i dati al controller.

Nel nostro modello invece l’utente invia i dati comunque al controller ma attraverso la visualizzazione, il funzionamento è comunque identico

I vantaggi

Questa strutturazione del progetto se applicata nelle giuste situazioni, ovvero ad applicazioni medio/grosse, nonostante un lavoro progettuale più impegnativo apporta enormi vantaggi come:

  • facilitare il riutilizzo del codice, più una parte del lavoro è indipendente dal resto più possibilità ci sono che ci possa venire utile per altre applicazioni
  • utile per suddividere il lavoro nel caso ci debbano lavorare più persone o team
  • utilizzando un modello rigido e regole standard facilita un eventuale lavoro di manutenzione e agevola la comprensione anche da parte di altri programmatori
  • nel caso si cambi tipo di database sarà possibile adattare l’applicazione senza dover mettere mano a tutto il codice ma solo al modello quindi maggiore flessibilità

A questo punto vi sarete immaginati che questo ci può essere molto di aiuto nello sviluppo in particolare di applicazioni web ma forse vi starete anche chiedendo come si può implementare tutto ciò. A questo scopo ci vengono in aiuto i frameworks.

Frameworks

Un framework è una struttura di supporto allo sviluppo di un software in particolare nel caso di applicazioni web si tratta di codice sorgente già scritto che ci offre alcuni strumenti per sviluppare e supportare l’applicazione vera e propria.

Esistono framework per vari linguaggi come per il Python, il Ruby e il Java ma quelli di cui parlerò e per il quale mi è servito come introduzione questo post sono i frameworks MVC (quindi basati sul pattern Model-View-Controller) sviluppati in PHP in particolare Symfony, Zend Framework.

Prossimamente vedremo più nel dettaglio questi frameworks e come ci possono essere di aiuto per applicare il modello MVC.

Cosa ne pensate? Voi utilizzate già questi strumenti?

Google sfida la Cina mette Stop alla censura ma rischia chiusura

Ormai è cosa nota che Google per poter funzionare in Cina, in cui è presente dal 2006, avesso dovuto mettere dei filtri ai risultati di ricerca imposti dal regime cinese. Particolari ricerce come: “Tibet” “Taiwan” su google cina e molte altre danno come risultati solo pagine controllate dal governo e omettono tutte quelle ritenute “sovversive”. Questo è solo un esempio della censura messa da Google, ma sembra che le cose stiano per cambiare.

Recentemente, dichiara Google su blog ufficiale, alcuni account di Gmail di attivisti dei diritti civili cinesi hanno subito attacchi hacker, e da una ricerca degli ingegneri di Google sembra che siano stati causati da spyware installati appositamente sui computer degli utenti per poterne controllare la posta. Dalle loro ricerche risulta anche che non sono stati l’unica azienda sotto attacco.

Dopo aver detto di aver già aggiornato i sistemi contro attacchi di questo tipo, rinnovano l’invito a tenere aggiornati i Browser e a fornirsi di programmi antivirus e antispyware. Unico problema che anche la distribuzione di programmi di questo tipo in Cina è fortemente controllata, vengono pubblicizzati solo antivirus e browser con regole di censura che vanno bene al governo cinese e se questi spyware sono stati magari voluti dallo stesso governo sarà difficile starne lontani.

Dopo questa introduzione Google per mano del Vice Presidente scrive che alla luce di questi fatti rivedrà la propria politica di censura in Cina, e così sfidando il governo cinese toglierà i filtri dai risultati di ricerca e non nasconde la preoccupazione di quest’azione che potrebbe portare alla totale chiusura di Google in Cina.

Gli avvenimenti delle prossime ore saranno sicuramente decisivi, a questa pagina potete leggere il post originale ovviamente in lingua inglese pubblicato sul blog ufficiale di Google.

Immagini: yourban.net, google.cn