laboratorio caffeina

in few words, just developing

 

Archivio: 2007 August

 
 

Free Stock Photos Resources

 
 
 

Stracciando Firefox

E’ forse un argomento marginale per il Laboratorio Caffeina, ma cosa fare quando i nostri occhi sulla rete cominciano ad appannarsi o smettono completamente di vedere?

Ovvero, quando quei complessi programmoni chiamati “browser” si piantano impietosamente. Si da la colpa al browser? Al sito web “mal progettato”? Forse, ma prima è bene stracciare tutto il possibile…

Ormai un mesetto fa Repubblica.it ha cominciato a provocare improvvisi crash di Iceweasel/Firefox. Ecco l’ordine in cui NON bisognerebbe procedere in questi casi:

  1. Ho atteso 3 settimane il classico aggiornamento Deus Ex Apt-get che risolve tutto, da buon utente Debian GNU/Linux. L’aggiornamento non è arrivato.
  2. Ho tentato un downgrade, senza effetto.
  3. Ho installato la versione di debug, apt-get install iceweasel-dbg, e lanciato con l’opzione di debug attiva: iceweasel -g. La parte interessante dell’output è questa:
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread -1222601024 (LWP 17712)]
    0×08384ced in nsTextFrame::Reflow (this=0×98a22d0, aPresContext=0×92e3688, aMetrics=@0xbfbb52d4, aReflowState=@0xbfbb521c,
    aStatus=@0xbfbb5388) at nsTextFrame.cpp:594
    594 nsTextFrame.cpp: No such file or directory.
    in nsTextFrame.cpp

    Da cui deduco che qualcosa deve essere andato storto con un file non trovato…
  4. Qualcosa dunque manca, o è cercato nel posto sbagliato… In questi casi esiste l’utilissimo programma strace, un System Call Tracer. Lanciando da console:
    strace iceweasel

verrà avviato iceweasel mentre lo standard out viene inondato di informazioni. Ogni riga dell’output specifica quale chiamata di sistema sta venendo inoltrata dal programma lanciato, in quel preciso istante. Nel mio caso il debug è stato molto semplice: quando iceweasel è uscito inaspettatamente, sono andato a leggere quali chiamate erano in corso.

[...]
open(”/var/lib/defoma/fontconfig.d/L/LucidaSans.ttf”, O_RDONLY) = -1 ENOENT (No
— SIGSEGV (Segmentation fault) @ 0 (0) —
unlink(”/home/daniele/.mozilla/firefox/kl5cndvj.default/lock”) = 0
rt_sigaction(SIGSEGV, {SIG_DFL}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
tgkill(3367, 3367, SIGSEGV) = 0
— SIGSEGV (Segmentation fault) @ 0 (0) —
+++ killed by SIGSEGV +++
Process 3367 detached

Come lasicava pensare il messaggio di debug “No such file or directory.”, Iceweasel stava tentando di aprire un file senza riuscirvi: l’ultima chiamata di sistema prima del segnale SIGSEGV è un open(), cioè più o meno “accedi ad un file o ad una periferica”. Dagli argomenti della chiamata possiamo capire quale file Iceweasel stava aprendo, in che modalità (lettura, scrittura, etc), ed il codice d’uscita accompagnato da altre informazioni.

open( Nome della chiamata di sistema (apri file o periferica)
“/var/lib/defoma/fontconfig.d/L/LucidaSans.ttf”, Arg.1: Percorso del file da aprire
O_RDONLY ) Arg.2: Modalità d’accesso: sola lettura
= -1 ENOENT (No Codice d’uscita: No such file or directory (troncato da strace)

Ora non resta che da capire cosa non va con questo benedetto file: var/lib/defoma/fontconfig.d/L/LucidaSans.ttf !

Listando la cartella in cui si trova, vedo che, assieme a tanti altri, si tratta di un link simbolico interrotto:

$ ls -l /var/lib/defoma/fontconfig.d/L
[...]
lrwxrwxrwx 1 root root 58 2007-05-02 10:59 LucidaSans.ttf -> /usr/share/fonts/truetype/ttf-lucida/LucidaSansRegular.ttf
[...]

E listando la cartella /usr/share/fonts/truetype/ttf-lucida mi accorgo che anche LucidaSansRegular.ttf è un link interrotto:

$ ls -l /usr/share/fonts/truetype/ttf-lucida
[...]
lrwxrwxrwx 1 root root 81 2007-02-16 01:13 LucidaBrightRegular.ttf -> ../../../../lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib/fonts/LucidaBrightRegular.ttf
[...]

E la catena di link interrotti è giunta a conclusione: il problema è che la cartella /lib/jvm non esiste! Quindi tutti i link risultano interrotti e quando Iceweasel tenta di aprire l’inizio della catena, si trova con un errore fatale.

E’ fuori discussione che il link si riferisca a Java (java-1.5.0-sun-1.5.0.11 nel percorso), quindi qualcosa deve esser andato storto con la mia installazione di Java… Sono su Debian, quindi la soluzione più rapida al problema è senza dubbio reinstallare il pacchetto di sun-java6-fonts.

Due minuti dopo stavo navigando su Repubblica…

E la sequenza giusta? Quella inversa, naturalmente.

Col senno di poi…

 
 
 

Il non-senso del rel=”nofollow”

Sempre più siti/blog hanno incominciato ad usare il rel=”nofollow” nei link esterni al proprio spazio. Ogni owner è libero di fare le proprie scelte. Ma, per onestà, occorre ricordare che internet è un enorme ipertesto (che muta rapidamente) e che se tutti i siti web avessero usato dal principio l’attributo rel=”nofollow” il web stesso non sarebbe mai cresciuto e il web 2.0 mai nato.

Quali sono i motivi che spingono ad inserire questo attributo?

I principali sono due: Spam e Rank. In realtà sono collegate strettamente le due cose.

I link determinano una buona misura del ranking dei siti sui motori di ricerca (Google per intenderci), evitare che utenti possano auto-linkarsi (nei commenti dei post per esempio) principalmente ha lo scopo di ridurre lo spam sui blog. In realtà, anche Wikipedia ha deciso di inserire il nofollow per lo stesso motivo. Questo spam ha come obiettivo quello di migliorare il ranking dei siti linkati. Inserire il “nofollow” dovrebbe avere come scopo quello di ridurre lo spam, cosa che si è dimostrata essere falsa.

Il “nofollow” è un non-senso perché spinge all’autarchia. L’autoreferenzialità e la verticalità del flusso di informazioni rappresentano il primo passo verso una nuova “agenda setting” per il web… occorre imparare a distinguere tra le fonti, ma occorre ancor prima averle.

Vi segnalo questo interessante post su questo stesso argomento: “Un anno senza nofollow“.

Buona lettura…

 
 
 

Add TinyMCE to author description in Wordpress

Ok, second chance to me, after the Restrict authors access to edit comments plugin I did the second one.

I think that the name is quite explicative: I wanted to add the wysiwyg to the user description .

PHP:
  1. <?php
  2. /*
  3. Plugin Name: Add TinyMce to Author Profile
  4. Plugin URI: http://www.laboratoriocaffeina.it/development/2007/08/22/add-tinymce-to-author-description-in-wordpress.html
  5. Description: Adds WYSIWYG to Author profile
  6. Version: 0.1
  7. Author: cedmax
  8. Author URI: http://www.dioblog.it
  9. */
  10.  
  11. if ((strpos($_SERVER['SCRIPT_NAME'], 'wp-admin/user-edit.php')) or (strpos($_SERVER['SCRIPT_NAME'], 'wp-admin/profile.php'))) {
  12.     add_action('admin_head', 'add_tinymce');
  13. }
  14.  
  15. remove_filter('pre_user_description', 'wp_filter_kses');
  16. add_filter('pre_user_description', 'wpautop');
  17.  
  18. function add_tinymce() {?>
  19.  
  20.     <script type="text/javascript" src="<?php echo get_settings('home'); ?>/wp-includes/js/tinymce/tiny_mce_gzip.php?ver=20070326"></script>
  21.     <script type="text/javascript">
  22.     //<![CDATA[
  23.  
  24.     function brstonewline(element_id, html, body) {
  25.         html = html.replace(/<br\s*\/>/gi, '\n');;
  26.         return html;
  27.     }
  28.  
  29.     function insertHTML(html) {
  30.         tinyMCE.execCommand('mceInsertContent',false, html);
  31.     }
  32.  
  33.     tinyMCE.init({
  34.         mode : "exact",
  35.         elements : "description",
  36.         theme : "advanced",
  37.         theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,undo,redo,link,unlink",
  38.         force_p_newlines : false,
  39.             force_br_newlines : true,
  40.         gecko_spellcheck : true,
  41.         theme_advanced_buttons2 : "",
  42.         theme_advanced_buttons3 : "",
  43.         theme_advanced_toolbar_location : "top",
  44.         theme_advanced_toolbar_align : "left",
  45.             save_callback : "brstonewline",
  46.             height : "300",
  47.         extended_valid_elements : "a[name|href|title],font[face|size|color|style],span[class|align|style]"
  48.     });
  49.     //]]>
  50.     </script>
  51.  
  52. <?php } ?>

INSTRUCTION:
download v.0.1 and copy the file into wp-content/plugins.
activate it.
Now you should see in the edit user details the wysiwyg editor.
You can manage to modify TinyMCE script, following instruction

Hope you like it
tested on wordpress 2.2

IN ORDER TO LET IT WORK IN 2.5
replace this part of code:

PHP:
  1. function add_tinymce() {?>
  2.  
  3.     <script type="text/javascript" src="<?php echo get_settings('home'); ?>/wp-includes/js/tinymce/tiny_mce_gzip.php?ver=20070326"></script>
  4.     <script type="text/javascript">
  5.     //<![CDATA[
  6.  
  7.     function brstonewline(element_id, html, body) {
  8.         html = html.replace(/<br\s*\/>/gi, '\n');;
  9.         return html;
  10.     }
  11.  
  12.     function insertHTML(html) {
  13.         tinyMCE.execCommand('mceInsertContent',false, html);
  14.     }
  15.  
  16.     tinyMCE.init({
  17.         mode : "exact",
  18.         elements : "description",
  19.         theme : "advanced",
  20.         theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,undo,redo,link,unlink",
  21.         force_p_newlines : false,
  22.             force_br_newlines : true,
  23.         gecko_spellcheck : true,
  24.         theme_advanced_buttons2 : "",
  25.         theme_advanced_buttons3 : "",
  26.         theme_advanced_toolbar_location : "top",
  27.         theme_advanced_toolbar_align : "left",
  28.             save_callback : "brstonewline",
  29.             height : "300",
  30.         extended_valid_elements : "a[name|href|title],font[face|size|color|style],span[class|align|style]"
  31.     });
  32.     //]]>
  33.     </script>
  34. <?php } ?>

with this:

PHP:
  1. function add_tinymce() {?>
  2.  
  3.     <script type="text/javascript" src="<?php echo get_settings('home'); ?>/wp-admin/js/editor.js?ver=20080325"></script>
  4.  
  5. <script type="text/javascript" src="<?php echo get_settings('home'); ?>/wp-includes/js/tinymce/tiny_mce_config.php?ver=20080327"></script>
  6.     <script type="text/javascript">
  7.     //<![CDATA[
  8. window.onload= function() {
  9. tinyMCE.execCommand("mceAddControl", false, "description");
  10. }
  11.  // ]]>
  12.    
  13.     </script>
  14.  
  15. <?php } ?>

 
 
 

Velvet Box on-line

velvetbox_site.jpg

Laboratorio Caffeina rilascia l'ultimo progetto: "Velvet Box - pop up store".

Velvet Box è un'associazione che unisce un gruppo internazionale di artisti di ogni disciplina: moda, fotografia, disegno, pittura, video, illustrazione, architettura e design.

Il progetto, che partirà da Bilbao il 28 settembre, prevede una serie di mostre itineranti in diverse città europee: oltre Bilbao, Madrid, Barcellona, Berlino, Milano e Parigi.

Laboratorio Caffeina ha contribuito al progetto studiando prima il logo e successivamente realizzando il design del sito, la grafica e la comunicazione. Sviluppato su piattaforma WordPress.

http://www.velvetbox.eu

 
 
 

Safari 3 Public beta di Apple ora anche per Windows XP e Vista

Dopo che la Microsoft aveva annunciato che non avrebbe più sviluppato il suo IE per Mac consigliando di usare Safari, quelli della Mela devono aver pensato che fosse il momento giusto per lanciare il loro browser per aggredire quote di mercato a Microsoft. Da qualche giorno direttamente dal sito della Apple potrete trovare la versione oltre che per Mac anche per Windows XP e Vista del browser della casa di Cupertino.
È un browser in pieno stile Mac con tanto di antialiasing per i font e stondamenti... non vi resta che scaricarlo e provarlo...

viva il crossbrowsing...

 
 
 
Chiudi
E-mail It