Scaricare video da YouTube

2 giugno 2008

Mi sono appena reso conto, che da oltre un anno non posto un aticolo in questo blog…che vergogna!
Per rimediare rapidamente, oggi ho scelto un argomento piuttosto “frivolo”, ossia come si fa a scaricare i video dal famoso sito YouTube.

Premetto che esistono diversi modo. Il primo è quello di installare un plug in su FireFox (ce ne sono diversi), il secondo è quello di installare uno dei tanti software specifici per scaricare i video (basta cercare su download.com per trovarne almeno una decina), e l’ultimo metodo è quello di usare uno dei tanti siti che consentono il download.

Io ho scelto il terzo metodo che mi sembra il più seplice, il meno invasivo (non c’è niente da installare) e soprattutto è multipiattaforma, nel senso che funziona sia su Windows che su Linux o Mac, e sia su FireFox che su IE.

Tra i tanti siti disponibili ho scelto VideoSlurp perché è semplice da usare ed anche in lingua italiana!

Vediamo come funziona

In primo luogo è necessario individuare su YouTube la pagina del video che vogliamo scaricare.
Per velocizzare le operazioni vi consiglio di tenere aperte due finestre del browser, una con dentro YouTube e l’altra con VideoSlurp.
Quando nella finestra di YouTube state visualizzando il video che volete scaricare, copiate la URL della pagina e incollatela nel box di inserimento di VideoSlurp. Poi cliccate sul pulsante “Scarica video”.
Dopo qualche secondo dovreste vedere una nuova pagina contenente il classico player di YouTube con dentro, pronto a partire, il video che volete scaricare. Basta cliccare su link “Scarica il video” sotto al video stesso per scaricarlo sul proprio PC.

Attenzione però: dovete salvare il file del video avendo cura di dargli .FLV come estensione.

Se una volta scaricato il video non riuscite a visualizzarlo, potrebbe essere perché non avete un visualizzatore di file FLV (no, Windows Media Player non supporta questo formato).
VideoSlurp consiglia di utilizzare questo questo visualizzatore di file FLV gratuito. L’ho provato e funziona bene. In alternativa potete usare l’inossidabile VideoLan.

Qualche consiglio finale
Ho notato che talvolta i download manager (io uso l’ottimo GetRight) danno fastidio. Se non riuscite a scaricare un video e avete un download manager attivo, provate a disattivarlo o spengerlo temporaneamente.
Se volete scaricare il video su un player portatile, è probabile che prima dobbiate convertirlo nel formato giusto (non so se c’è qualche player che supporta il formato FLV). Per effettuare la conversione scaricate uno dei software consigliati su download.com e poi, se ne avete voglia, aggiungete un commento a questo post raccontandoci le vostre esperienze!

A presto…. ;-)

Meg

Mirroring software facile con GMirror

2 gennaio 2007

Tutto è iniziato una ventina di giorni fa quando ho acquistato una nuova piastra madre e una coppia di dischi SATA da 300GB. Con dischi così grandi se si verifica una rottura la quantità di dati che si rischia di perdere è enorme, e anche farne il backup non è proprio una passeggiata. Il RAID-1 (comunemente detto Mirroring) consente di avere due dischi automaticamente sincronizzati tra loro, tra l’altro senza un’eccessiva penalizzazione delle prestazioni, anzi in linea teorica è anche possibile incrementare le prestazioni dell’I/O da disco perché sebbene le operazioni di scrittura siano più lente (ogni dato deve essere scritto due volte), quelle di lettura possono essere effettuate avvalendosi delle due testine indipendenti dei due dischi e quindi, se l’implementazione è fatta nella maniera corretta, visto che solitamente il numero delle operazioni di scrittura è inferiore a quello delle operazioni di lettura, si dovrebbe ottenere un miglioramente di performance, soprattutto dove si utilizzino più applicazioni in multitasking (la norma per un server).

Tornando alla pratica, la nuova piastra e i nuovi dischi li utilizzerò per sostituire il mio vecchio server di rete (un glorioso IBM Netfinity 5100), e inizialmente avevo intenzione di sfruttare uno dei due dischi come area dati dove depositare un backup snapshot del primo disco (una soluzione rapida ma efficace della quale ho già parlato qui), quando mi sono imbattutto in gmirror.
gmirror si avvale del framework geom introdotto in FreeBSD 5, che grazie alla sua semplicità e flessibilità offre una serie di vantaggi rispetto ad altre e più conosciute soluzioni sia software (come ad esempio Vinum), sia hardware.
In particolare rispetto alle soluzioni software offre una incredibile facilità di installazione e di manutenzione, come vedremo, mentre rispetto alle soluzioni hardware offre la possibilità di mettere in mirroring solo una porzione (una slice) dei dischi, cosa che le soluzioni hardware non sono in grado di fare. In ogni caso gmirror, come il nome suggerisce, gestisce solo mirroring, ossia RAID 1. Se il vostro obiettivo è quello di realizzare un diverso tipo di RAID (ad esempio il RAID 5 con 3 o più dischi) allora gmirror non è la soluzione. Provate ad informarvi su gvinum o magari sul costo di un controller RAID.

Ma bando alle ciance, vediamo il primo punto forte di gmirror: l’installazione. In questo post esaminerò solo la soluzione più semplice nella quale si hanno due dischi identici, ad esempio due dischi serial ATA da 300GB ;-), nello specifico /dev/ad4 e /dev/ad5.
Iniziamo installando normalmente il sistema operativo su /dev/ad4 usando sysinstall dal disco di installazioni di FreeBSD (l’ultima release al momento in cui scrivo è la 6.1) .
Create pure le slice e le partizioni, inclusa la swap, come volete su /dev/ad4. Una volta installato il sistema operativo e controllato che funzioni tutto, occorre ripartire col CD di installazione di FreeBSD e andare in modailtà Fixit, avviando il live filesystem.
Al prompt digitate i seguenti comandi per attivare il sistema e caricare gmirror:

chroot /dist
mount_devfs devfs /dev
gmirror load

A questo punto creiamo un volume virtuale chiamato gm0 partendo dal disco ad4:

gmirror label -v -b round-robin gm0 /dev/ad4

L’opzione “round-robin” segnala a gmirror che si vuole che utilizzi un algoritmo che distribuisce le operazioni di lettura tra i due dischi per migliorare le prestazioni. Il round-robin è il più semplice tra gli algoritmi che gmirror mette a disposizione ed in pratica dispone che i due dischi siano utilizzati a turno per ogni successiva operazione di lettura.

SMTP autenticato con Postfix (su FreeBSD)

26 ottobre 2006

Supponiamo di avere il nostro bravo server di posta in casa basato su Postfix e ovviamente sulla fedele box FreeBSD. Naturalmente abbiamo fatto in modo che il relay sia consentito solo agli utenti della rete interna, mentre tutte le email che arrivano dall’esterno possono essere indirizzati solo ai domini locali, in modo che gli spammer non possano usare il nostro server per mandare tonnellate di “spazzatura” a destra e a sinistra. Perfetto, direte voi! Certo, fino a quando non vi capiterà di avere degli utenti mobili, che se ne vanno in giro per il mondo col loro portatile e ovviamente non ne vogliono sapere di cambiare l’SMTP di uscita sul loro client di posta in funzione dell’internet provider che stanno utilizzando in quel momento.
Qual è la soluzione? L’SMTP autenticato. Ossia dobbiamo fare in modo che Postfix receva la posta per i domini locali da chiunque ma consenta il relay, oltre che dalla rete locale, anche ad eventuali utenti esterni che sappiano fornire un nome e una password valida.

Per l’esempio che segue utilizzeremo gli account utente della locali per l’autenticazione, ma è ovviamente possibile utilizzare altri tipi di database utenti (LDAP, Kerberos, ecc.).

Feed RSS 2.0 in PHP

25 luglio 2006

Per un nuovo sito di MyVideoDaily (pubblicità progresso ;-) ) che sto realizzando, avevo bisogno di generare feed RSS. Ho cercato su internet qualche modulo già fatto che fosse semplice da utilizzare ma non ho trovato niente che facesse al caso, per cui ho deciso di realizzare una classe PHP per la generazione di feed RSS 2.0.

Dato che per svilupparla ho impiegato solo tempo riciclato (ossia il fine settimana!), ho deciso che fosse opportuno pubblicare quanto prodotto con licenza LGPL, quindi disponibile a tutti coloro che ne abbiano bisogno.

Trovate il sorgente della classe e un po’ di documentazione qui sul mio sito, ma in sola lingua inglese, pertanto mi sembra opportuno scrivere almeno un paio di dritte qui in italiano su come funziona la classe.

Generare un feed RSS con RSS2Writer è semplicissimo. In primo luogo bisogna includere il file RSS2Writer.class.php per poter utlizzare le due classi in esso definite. Poi è necessario instanziare la classe RSS2Writer che rappresenta il feed, impostandone i parametri obbligatori, nome del feed, URL di riferimento e descrizione del feed.
Si possono poi impostare i parametri aggiuntivi usando i metodi set().
Vediamo un esempio:

include_once("rss2writer.class.php");
$rssw=new RSS2Writer("My Rss2 Feed",
"http://www.mauriziogiunti.it","This is a test feed");
$rssw->setLanguage('en-us');
$rssw->setPubDate(date('Y-m-d H:m:s'));

Una volta preparato il feed, si possono aggiungere i vari item che lo compongono, ossia i singoli articoli che il feed deve trasportare, attraverso il metodo addItem(), il quale deve ricevere come parametro un oggetto di tipo RSS2Item.
Sarà quindi necessario creare uno o più di questi oggetti per popolare il feed, anche in questo caso impostando nel costruttore i parametri obbligatori e attraverso i metodi set*() quelli opzionali:

// Create a new feed item
$item=new RSS2Item('This is a test item','http://www.mauriziogiunti.it/rss2writer.html',
'RSS2Writer PHP class');
$item->setPubDate("2006-07-24");
// Add the item to the feed
$rssw->addItem($item);

Ovviamente ogni feed può avere un numero qualsiasi di item. Basta crearli e aggiungerli come abbiamo visto.

Una volta popolato adeguatamente il feed non resta altro da fare che inviarlo al client che lo ha richiesto. Per farlo è necessario innanzitutto dichiarare che lo stream http che stiamo producendo non trasporta una pagine html ma una pagina xml, impostanto il content type opportuno nello header della risposta, dopodiché potrà essere usato il metodo doPrint() della classe RSS2Writer, per inviare il feed RSS al client:

header('Content-type: text/xml');
$rssw->doPrint();

Ovviamente dovete ricordare di non inviare nient’altro nella pagina, nemmeno degli spazi bianchi, prima dell’impostazione del content type altimenti il PHP vi bloccherà in errore.

Questa è solo un’infarinatura su come si utilizza la classe, ma credo che sia evidente quanto sia semplice da usare. Per maggiori dettagli vi rimando alla pagina ufficiale di RSS2Writer.

A presto!

Meg

Sono diventato MultiHomed!

29 giugno 2006

Questo Blog lascia molto a desiderare…

non c’è più nessuno che posti un articolo…

:)

…così mi sono fatto forza ed approfittando che oggi a Roma è la festa del santo patrono ed io da solo a casa mi annoio a morte, mi sono messo a scrivere questo bellissimo articoletto.

Spero sia utile ai più… ma soprattutto spero che qualcuno mi suggerisca una soluzione migliore per risolvere il problema che andrò a descrivere

Cos’è un sistema multihomed?

tratto da “www.webopedia.com/TERM/M/multihomed.html

Multihomed
(adj.) Typically used to describe a host connected to two or more networks or having two or more network addresses. For example, a network server may be connected to a serial line and a LAN or to multiple LANs.

…e non come ha detto il mio “fratello” Meg che ho una casa a Firenze ed una a Roma!

PHP come script di sistema (di nuovo!)

10 novembre 2005

In un breve post di qualche mese fa vi ho detto come sia possibile usare il PHP anche come linguaggio di script di sistema, ossia per fare script eseguibili dalla shell.
Vediamo oggi qualche trucchetto per utilizzare efficacemente questi script.

In primo luogo sarebbe comodo poter invocare semplicemente lo script senza dover utilizzare il comando php -q. Grazie alla potenza della shell di Unix questa cosa è semplicissima: in primo luogo dobbiamo usare il comando which per localizzare il percorso esatto dell’eseguibile del php sulla nostra macchina, poi basterà far iniziare lo script da eseguire con i caratteri #! seguiti dal nome completo dell’esegibile php con argomento -q.
Ad esempio sul mio fido serverino FreeBSD trovo:

$ which php
/usr/local/bin/php

quindi i miei script in php dovranno iniziare con questa riga:

#!/usr/local/bin/php -q

Vediamo il semplice script di esempio prova.php:

#!/usr/local/bin/php -q
< ?php
for($i=0;$i<10;$i++) {
print "Ciao\n";
}
?>

Non devo inoltre scordare di impostare sul file l’attributo X per autorizzarne l’esecuzione.

$ chmod +x prova.php
$ ./prova.php
Ciao
Ciao
Ciao
Ciao
Ciao
Ciao
Ciao
Ciao
Ciao
Ciao

Form con codice di verifica in PHP

20 ottobre 2005

A chi in questi tempi bui non è capitato di dover inserire in una form un codice di verifica, ossia di dover copiare da un’immagine semioffuscata una sequenza di numeri e lettere casuali?
Vi siete chiesti a cosa servono? Semplice: per impedire che quelle form vengano utilizzate da un client software. Ad esempio gli spammer avevano iniziato ad aprirsi account a go-go su Yahoo mail, o altri siti di email gratuite, per poter sparare indisturbati i loro quintali di avvisi commerciali. Aprire un account era piuttosto semplice, bastava riempire qualche form, lavoro che si può automatizzare agevolmente con uno script in Perl, o simili.
Grazie all’introduzione di un codice di verifica questo non è più possibile, infatti il codice nell’immagine non è leggibile in maniera automatica.
Certo sarebbe in teoria possibile utilizzare un software OCR, ma come vedremo anche l’uso di questi strumenti si può, se non impedire, almeno rendere più complesso.

In questo post realizzeremo una form con un semplice codice di controllo generato casualmente.

Prerequisito perché questa strategia di verifica sia efficace, è che il codice di controllo non compaia mai all’interno della pagina HTML dove si trova la form. Questo deve essere mostrato solo attraverso un’immagine e quindi immagazzinato nella sessione.
Per questo realizzeremo uno script PHP, chiamato verimage.php, che provvederà a creare un nuovo codice di verifica casuale, memorizzarlo nella sessione e quindi creare un’immagine che lo rappresenta. L’immagine non verrà memorizzata da qualche parte, al contrario verrà immediatamente inviata al browser dell’utente, dichiarando nell’header HTTP il tipo mime di un’immagine, invece che il consueto text/html.
Questa tecnica si può anche utilizzare in altri contesti, per creare dinamicamente immagini o altri tipi di file.

Lanciare un processo asincrono da una pagina php

6 settembre 2005

Ciao a tutti,

non so se vi è mai capitato, ma io ho avuto bisogno di eseguire un processo asincrono da una pagina php e che fosse anche esso uno script php.

La cosa sembra facile … exec(command) … ma non è così …
prima di tutto abbiamo limitazioni dovute al sistema operativo (sotto Windows è problematico dare accessi a processi shell da parte del web server per motivi di sicurezza), ma anche sottop unix dove è semplice abbiamo delle limitazioni.

Affinché un processo sia eseguibile con la exec da parte di una pagina php è necessario che non solo siano ridiretti a null, ma che siano anche chiusi sia gli stream di standard output che quelli di standard error.

Supponiamo di avere un processo asincrono che vogliamo eseguire che si chiama /miadirectory/mioprocesso.php e che necessiti di 3 parametri (param1, param2, param3), quello che dobbiamo fare nella pagina chiamante è preparare l’esecuzione:

$exec_cmd=”/usr/local/bin/php -q /miadirectory/mioprocesso.php param1 param2 param3 2>/dev/null >&- < &- >/dev/null &”;

e quindi lanciare l’esecuzione asincrona con:

exec($exec_cmd);

E’ solo un piccolo trucco, ma spero possa essere utile a qualcuno … ricordatevi che funziona solo sotto Unix

Lunghi giorni e piacevoli notti a tutti

Mirror Migration for Dummies

23 agosto 2005

Salve a tutti!

Eccomi di nuovo qui a raccontarvi, come un nonno al focolare, le mie esperienze di vita (informatica) vissuta.

In questi giorni ho attivato un nuovo server (Anna) dislocato a Pomezia, dove lavoro, per garantire un DNS ed un RELAY di secondo livello al mio server principale (Dario) che sta a Firenze, per tutte quelle volte (e non sono poche) che l’ADSL se ne va a fare un pisolino.

Non vi sorprendete per i nomi, sono i nomi che avrei dato ai miei figli in caso avessi avuto una possibilità di scelta.. (ti voglio bene Marta! :) )

Dicevamo, ho messo su un server riutilizzando la miriade di pezzettini sparsi che avevo a casa.. e quindi ecco due vecchi dischi da 20 Gb, 192 Mb di Ram ed un AMD Duron dal clock sconosciuto.

Ho installato Fedora Core 4 (Dario ha l’FC2) ed ho messo giustamente i dischi in mirror con il software standard di Linux (mdadm), facendolo dalla GUI di installazione del sistema.

Ho installato il server a Pomezia, ho configurato la rete per avere l’IP pubblico ed ho messo su il Bind ed il Sendmail (con il MailScanner per Spam e Virus) nuovi.

Ho configurato la macchina di Firenze per puntare sulla secondaria e quella di Pomezia per farsi carico “degli affari” di quella di Firenze.

Mi sono accorto poi che uno dei dischi di resulta da 20 Gb che avevo installato aveva un piedino del bus IDE rotto.. il piedino del DMA.

Questo rallentava in modo deprimente il sistema. Al boot 5 minuti (cinque!!) se ne andavano in attesa che Linux decidesse di degradare il sistema e supportare il disco difettoso a scapito delle performances.

Ho quindi messo controvoglia mano al portafoglio ed ho acquistato un disco da 40 Gb, per fare il paio con l’altro di resulta che avevo a casa e perchè NON SONO RIUSCITO A TROVARE un disco da 20 Gb.

A questo punto ho deciso che non mi andava di installare di nuovo tutto, cosa deprimente e molto Windows-Oriented e così ho inventato una “Mirror Migration for Dummies” come segue…

Autenticazione SSH con chiave pubblica/privata

29 luglio 2005

Ventinove luglio. Ventinove gradi centigradi. E’ arrivato il momento di fuggire dalla città ed andare in ferie.
E i nostri piccoli server? Vogliamo lasciarli soli, senza possibilità di manutenzione remota? Ovviamente no, provvediamo subito ad aprire sul firewall la porta tcp 22 per consentire il traffico ssh da qualsiasi indirizzo.
Ma poi ci assale un dubbio: e se mentre non ci siamo qualcuno prova a forzare il nostro utente?

A voi non è mai capitato di trovare sui log di sicurezza qualche tentativo di accesso via ssh con i soliti utenti root, test, prova, io, ecc.?
Si, lo so, avete scelto delle password sicurissime, che nessuno può indovinare e avete inibito l’accesso a root via ssh, ma….. perchè rischiare, visto che un metodo più sicuro c’è, ed è anche molto semplice da implementare?
Utilizziamo le chiavi pubbliche al posto delle password.

E visto che oggi è il 29 di luglio ed è venerdi, credo che nessuno abbia voglia di scartabellare i manuali, e allora posto questa guida step by step, su come creare la propria coppia di chiavi e utilizzarla sul fido server FreeBSD (ma ovviamente, mutato mutandis, potete applicare tutto quanto anche a Linux, Mac/OS X, Solaris o qualsiasi altro Unix, purchè monti OpenSSH).