inter.it/abbonamenti

Dopo una gestazione lunga 6 giorni lavorativi, siamo online con la nuova pagina abbonamenti.

Le tecnologie usate sono le solite, appoggiandomi spesso a jquery per:

  • galleria di immagini in dissolvenza con caption fatte con webfonts di google
  • smooth scroll di senzioni interne alla pagina, da menu a sezione e da queste in cima
  • jquery colorbox per gli overlay di dettaglio un minimo responsivi

E poi tutta una serie di chiamate ajax per far uscire dei bottoni con url personalizzati per l’acquisto, il rinnovo, la prelazione degli abbonamenti. Grande concitazione, grande nervosismo e red eyes, ma alla fine abbiamo finito 11 minuti prima dell’andata online, con un workflow soddisfacente!

Poi la dead-line è stata spostata di altre tre ore, ma non per nostra esigenza-contingenza.

le nuove mappe di google

Dovrei prendermi un anno sabbatico solo per allinearmi con tutte le API dei nuovi prodotti google e dei vari social, mi sento terribilmente frustrato nel vedermi superato dallo stato dell’arte. Oltretutto, come spesso accade, ci sono centinaia di sviluppatori impegnati nel rendere i prodotti web più “semplici, efficaci e intuitivi”, mentre – parafrasando il grande Troisi – tu sei da solo ad imparare.

Il caso della mapengine di google maps è esauriente. 

Ci avevo messo un po’ per creare qualche mappa per inter.it… e ora mi ritrovo l’interfaccia stravolta. Allora, circolo vizioso, cerchi su google un tutorial su come personalizzare ed incorporare le nuove mappe generate, perché l’interfaccia è troppo, troppo essenziale.

perl response in utf-8

Mi sto dedicando sempre più intensamente a varie installazioni di wordpress:  academy, identità  visiva, inter forever e inter campus. Forse questo è davvero il futuro. Abbiamo scelto wordpress solo per una svendita di sicurezze tautologiche del parlamentare di turno, ma non stiamo parlando di  personalità  del calibro di Frank Underwood.

Il grosso dello scripting e delle applicazioni non è certo in php è non è nemmeno una paella come wordpress: stiamo parlando di Perl.

Una questione spinosa è la risposta in utf-8 di una serie di chiamate ajax, che talvolta non prelevano direttamente testi già  utf-8 da database (e quindi SET NAMES utf8 non basta).

Questa pagina ha chiarito molti dubbi.

Ecco come ho risolto la situazione dalla prima immagine alla seconda:

use Encode qw(encode decode);
use utf8;
my $enc = 'utf-8'; # 
...

    my $formhtml='ćžćšššé°à§à§à è';
     print "Content-type:text/plainnn";
     print encode($enc, $formhtml);

capture_29042014_114645

capture_29042014_114854

come fare un video a regola d’arte

Ho avuto una domenica tribolata perché la sintesi video della partita (pubblicata su inter.it), inizialmente  fruibile sui mac, è proditoriamente  stata sostituita da un messaggio “MIME type non corretto”. Com’è stato possibile? Sabotaggio? File sostituito?

A complicare la cosa… gli highlights erano fruibili da chrome e safari su mac, e da chrome su windows. Ma non da firefox su windows.

L’incapture_07042014_121755ghippo era duplice: solo online-convert garantisce una coppia di codec audio/video compatibile con tutti. E poi, la nostra configurazione AWS amazon faceva servire da S3 un file non modificato da oltre 12 ore. Nella riscrittura degli header http si passava da un MIME TYPE video/webm a un più generico binary-octet stream.

L’idiosincrasia era dovuta al fatto che firefox è più ligio al content-type, e con il degradamento progressivo chrome e safari chiedevano il file mp4 mentre Firefox la clip webm.

 

the great world of interisti

Sabato notte ho festeggiato a dovere il CVI compleanno dell’inter con l’avvio della sezione ‘Interisti’:  una brillante community in cui inseriremo tante applicazioni divertenti. Sulla genesi, sullo sviluppo e sulla concretizzazione di questo progetto si potrebbe scrivere un romanzo. Fiction che illustrerebbe meglio di tanti trattati alcune dinamiche interne a FC Internazionale Milano

La complicazione era dovuta al connubio di diverse tecnologie:

  • chiamate ajax multiple per aggiornare il profilo di un iscritto a inter.it
  • applicazione multilingua scritta in PERL con pagine modulari template toolkit
  • mapping personalizzato con googlemaps (qui il demiurgo è corrado)
  • posizionamento della propria stella a seguito della scelta di un indirizzo sulla mappa globale

jquery flexslider

Il sito dell’inter (qui potete vederne qualche screenshot) ha uno slider iniziale. Flexslider

E’ una delle cose piu’ complesse, ma da oggi e’ possibile disabilitare la pausa di riproduzione di un elemento slider che sia video SE questo video è l’unico elemento nella successione. Cioè lo flexdlider funziona anche se abbiamo un solo slide con dentro un video di youtube. Basta contare quanti ne abbiamo, per capire se l’array è un array o uno scalare.

$(".slides").find("li").length

se è pari a uno disabilitiamo il

$('#homeSlider .flexslider')
   .data('flexslider')
     .flexslider('pause');

jquery – un plugin per voltare le pagine

Si prende un pdf di un volantino o di una brochure.
Si esportano le pagine in jpg, tagliandole con precisione magari usando picslice.
La precisione del taglio e del css e’ determinante, anche se questa soluzione e’ ottimale per i soli browser basati sul motore webkit (explorer9 manda tutto in pappa)

Quindi si usa turn.js, un plugin di soli 6K consigliatomi da Fabio

Il risultato e’ questo: con Opera, Firefox e Chrome l’effetto e’ gradevole e l’animazione fluida. A patto di avere una macchina relativamente recente e con una buona scheda grafica

apache httpd error 413

un errore che non conoscevo, ma che e’ davvero fastidioso.

Ambiente Apache2, Mod perl e diverse form che facciano POST. Spesso ma non sempre capitava che tutte le variabili del modulo fossero nulle, creando problemi sia con gli inserimenti che con gli aggiornamenti di record.
Nessuna variabile passava con il metodo POST del tag FORM.
Fabulus ha riprodotto l’errore via console, leggendo nell’header un errore 413, benché non ci fossero file upload o campi lunghissimi.

Il problema si e’ risolto settando il $CGI::POST_MAX a un valore ‘normale‘ (tipo 10KB).