Nel numero 241 (aprile 2011, pag. 174) di PC Professionale, nella rubrica della posta si parla di Firefox e Plugin Container. La rubrica è a cura di Gianluca Marcoccia, onestamente non so se tutte le risposte siano scritte da lui o dalla redazione.

Un lettore scrive lamentando problemi con Firefox (errori e blocchi, processo Plugin Container che consuma CPU), cito alcune parti della risposta.

Il Plugin container di Firefox è una piccola macchina virtuale all’interno della quale sono eseguite le estensioni del browser, con un procedimento analogo alla sandbox delle applicazioni Java. Ogni plug-in può accedere solo alla memoria e alle risorse messe a disposizione dal Plugin container, per impedire che estensioni mal progettate (o che eseguano deliberatamente codice dannoso) possano compromettere il browser o l’intero sistema operativo.

Alla fine della risposta, come extrema ratio viene suggerito di disattivare il plugin container modificando le voci dom.ipc.plugin.enabled.*

Al successivo riavvio, le estensioni saranno eseguite nello stesso spazio di memoria dedicato al browser e con gli stessi privilegi. Questa procedura annulla la protezione aggiuntiva contro i malware e i plug-in mal progettati, perciò deve essere considerata l’ultimo rimedio praticabile.

Le estensioni (extensions) e i plugin (plug-ins) sono due oggetti diversi, come dice il nome stesso il Plugin Container riguarda i plugin, non le estensioni. Citando la relativa pagina di SUMO.

In Firefox 3.6.4 e versioni successive, alcuni plugin sono caricati separatamente dal browser per mezzo del programma plugin-container, permettendo al processo principale del programma di rimanere in esecuzione se si verifica l’arresto anomalo (crash) di un plugin.

Il progetto Electrolysis ha come obiettivo la separazione dei processi relativi a interfaccia del browser, plugin e contenuti web. Una prima parte (Out-of-process plugins – OOPP) è stata rilasciata con Firefox 3.6.4 nel giugno 2010.

L’obiettivo principale è quello di migliorare la stabilità del browser: ogni plugin supportato dal sistema OOPP viene eseguito in un processo separato da quello del browser, in caso di crash del plugin il browser rimane attivo e funzionante. Non mi risultano, ma potrei sempre sbagliare, miglioramenti relativi alla sicurezza della navigazione legati all’OOPP (a parte, forse, l’effetto collaterale di impedire l’esecuzione di codice in caso di crash).

Per inciso, la maggior parte dei problemi con plugin-container.exe è legata a software di sicurezza (antivirus e firewall) configurati in modo errato.


Appunti WordPress

2 Aprile 2011

Altro post per tecnici anziani della serie “se le cose non me le scrivo da qualche parte poi le dimentico e perdo una vita a reinventare la ruota”.

Visualizzare gli ultimi video di un feed YouTube

Ne avevo già parlato in un vecchio post. A inizio anno ho ripreso in mano quel progetto e ho scoperto che la funzione fetch_rss() è obsoleta.
Niente di preoccupante, la nuova funzione si chiama fetch_feed() (pagina relativa sul Codex) e questo è un esempio di codice (oltre al video viene inserito anche il titolo).

< ?php
include_once(ABSPATH . WPINC . '/feed.php');

// $url = indirizzo del canale
$rss = fetch_feed($url);
if (!is_wp_error( $rss ) ) : 
	// Verifica se l'oggetto è stato creato correttamente	
	// Individua il numero di video presenti, al massimo leggine 3. 
	$maxitems = $rss->get_item_quantity(3);
    // Crea un array di tutti gli elementi (il primo elemento ha indice 0).
    $rss_items = $rss->get_items(0, $maxitems);
endif;
?>

<h3>Video</h3>
<ul>
< ?php if ($maxitems == 0) echo '<li>Nessun video disponibile';
else foreach ( $rss_items as $item ) : ?>
<li>
< ?php
$youtubeid = strchr($item->get_permalink(),'='); //elimina la parte finale dell'URL a partire da '='
$youtubeid = substr($youtubeid,1); //rimuovi il segno '=' per ottenere l'ID del video
$youtubetitle = $item->get_title();
//Inserisci il video
?>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="240" height="176">
<param name="movie" value="http://www.youtube.com/v/<?php echo $youtubeid ?>&amp;hl=en&amp;fs=1" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/<?php echo $youtubeid ?>&amp;hl=en&amp;fs=1" width="240" height="176">
<!--<![endif]-->
<p><a href="http://www.youtube.com/v/<?php echo $youtubeid ?>">Visualizza il video&raquo;</a></p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</param></object>
<span>< ?php echo $youtubetitle; ?></span>
</li>
< ?php endforeach; ?>
</ul>

Il risultato finale è visibile nella home page di questo sito.

Frequenza di aggiornamento dei feed

WordPress mantiene una cache dei feed e non è particolarmente rapido ad aggiornarla. Per modificare questa impostazione è possibile aggiungere questo codice al file functions.php, impostando il numero di secondi desiderato.


//Cache per aggiornamento feed impostata a 30 minuti
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 1800;') );	

Blog multilingua

In questi giorni sto provando qTranslate per un nuovo sito e mi sembra decisamente ben fatto. È possibile inserire testi nel tema utilizzando questa struttura con _e() (per scrivere il testo) o __() (per passare il testo come argomento di una funzione)

<?php _e("<!--:en-->English Text<!--:--><!--:it-->Testo italiano - 404<!--:-->"); ?>

Ad esempio è possibile usare lo stesso codice per personalizzare le date

<span class="date"><?php the_time(__("<!--:en-->F j, Y<!--:--><!--:it-->j F y<!--:-->")) ?></span>

Se poi non vi piacciono le bandierine del widget, potete modificarle via CSS senza grossi patemi. Esempio:

.qtrans_language_chooser li a {
	display: block;
	height: 32px;
	padding-top: 6px;
}

.qtrans_flag_and_text {
	padding-left: 40px !important;
}

.qtrans_flag_it {
	background: url(images/italiano.png) no-repeat !important;
}

.qtrans_flag_en {
	background: url(images/inglese.png) no-repeat !important;
}