migliorare grocery CRUD

Utilizzando Code Igniter, si sviluppa piacevolmente con Grocery CRUD;  si realizza in modo efficace un back-office. Si può anche migliorare l’interfaccia per renderla più user-friendly.

Ma un difetto ricorrente era la gestione di tabelle che avessero un  alto numero di campi o, anche, di tabelle con un basso numero di campi ma che, a schermo, ci imponessero di visualizzare delle etichette significative per compendiare tutte le relazioni di join.

In soldoni, per vedere tutti i campi di un record ci voleva un monitor 27 pollici. E soprattutto c’erano delle barre di scorrimento orizzontali per poter raggiungere i tasti CRUD (modifica, visualizza, cancella)

Qualcuno ha già  affrontato questa sfida: si può personalizzare l’interfaccia come si vuole!

ecco come fare per spostare i tasti di azione come prima colonna… un grande passo in avanti per l’usabilità .

 

la produttività con grocery crud

Non occorre reinventare la ruota, specialmente se l’impegno profuso per concretizzare un’interfaccia di back-end può essere sprecato.
Progetti che non hanno una chiara prospettiva futura e rapidità  di sviluppo: queste le linee guida in un momento di chiaro, profondo e radicale cambiamento aziendale.

Per questo sto approcciando Gallery3 e Grocery CRUD per CodeIgniter. Sono dei prodotti stabili,  che hanno il pregio di una installazione definita.

Un leggero footprint, insomma. Grocery CRUD addirittura segue un modello MVC che ben si integra con la programmazione ad oggetti di PHP.

Il dubbio è quanto vengano manotenuti questi framework, ti perplime che un giorno vadano a avvizzirsi e nessuno più li aggiorni; ma per ora la il problema sembra scongiurato.

 

capture_10022014_185433

festival del sacrificio

Oggi l’inter è ufficialmente passata agli indonesiani. Preferisco soprassedere agli sviluppi societari perché sinceramente ci ho già  pensato parecchio; eppoi è tutto talmente prematuro…
La coincidenza è che la notizia sia divenuta ufficiale lo stesso giorno della ricorenza musulmana del Festival del Sacrificio
Il mio sacrificio è invece stato adattare un CSS di wordpress alle esigenze (pretese) dell’agenzia grafica, agendo su un codice di oltre 3000 regole, di un tema preimpostato. Davvero da strabuzzarsi gli occhi, altro che sito giapponese.
 

grafica protagonista - FC Internazionale identità  visiva 2013-10-09 17-39-15

fantozzi, la trattoria semivuota e davinotti

Sto perdendo diottrie per configurare il nuovo ennesimo sito sull’identità  visiva inter. C’e’ del sarcasmo in questo, perche’ proprio in questi giorni si ventila la firma sul contratto bahasa. Gestire un css su wordpress non è esattampente semplice, soprattutto se si deve assecondare un semplice mockup proveniente da photoshop, in cui il creativo di turno pretende che tutto sia preciso al pixel. E tanti saluti alla resa sui tablet o alla responsività .

Proprio nel momento in cui il box-model ti esce dalle orecchie, col il CSS del tema che è lungo più di 4000 righe (!) si trova conforto in un sito impressionante (DAVINOTTI), che scoperchia ricordi precisi nel tuo cervello. Quelli che ti lasciano i film cult, come Fantozzi.

grafica protagonista - FC Internazionale identità  visiva 2013-10-09 17-39-15

tinymce e twitter-php. semplici ed efficaci

Nell’ottica di rendere cross-platform un editor html dopo jhtmlarea sono ricaduto, senza stavolta eccedre nell’utilizzo di jquery su TinyMCE.

Sembrerebbe l’uovo di colombo, giacché non ci sono quei problemi emersi con Safari per MacOSX e soprattutto per iOS. Staremo a vedere, intanto la newsletter sta crescendo così.

Analogo discorso per il post delle azioni in cronaca diretta su twitter: il passaggio alla API 1.1 ha invalidato il modulo Perl che faceva il lavoro sporco. Detto-fatto, ho ripiegato su php e questa sezione di google code contiene la funzionalità  quick-n-dirty aggiornata alla ultima versione di Oauth. Il problema è gestire il

http://code.google.com/p/twitter-php/

commenti audio alle notizie

Un’aggiornamento al volo per il nostro CMS fatto in casa: la possibilita’ di mettere un clip audio/video a corredo di una notizia su inter.it.
Questa novita’ era pensata per un audio/video diario della trasferta di pechino, ma poi non abbiamo mai concretizzato il deploy. Per tutta una serie di motivi che tuttora non riesco a spiegarmi. Pero’ ieri si e’ verificata un’urgenza (mettere un’intervista al presidente) e mi sono subito industriato
Saltando da perl a php a html a jquery piu’ volte al giorno, riscontro ormai seri problemi di concentrazione. Per questo motivo e’ sempre una sofferenza riprendere in mano codice scritto anche pochi mesi fa. Ma sto migliorando: aumento i commenti, nomi delle variabili e delle funzioni significativi, checkpoint, sezioni commentate ante-deploy e cosi’ via.

Il risultato e’ questo. La soluzione con Google Player mi sembrava esteticamente piu’ elegante, ma con jwplayer c’e’ un pregio: funziona subito.

perl vs php, una battaglia persa.

Ho perso due giorni per cercare di fare in PERL un’attivita’ che in PHP ha assorbito 10 minuti.
La documentazione dei moduli perl su CPAN e’ oltraggiosa, ogni volta mi avvicino senza pregiudizi ma…
Codice piu’ immediato, piu’ semplice e piu’ leggibile: ecco come disassemblare un albero XML che arriva dalla API di Youtube con tutte le informazioni di una playlist.

perl

 use Data::Dumper;

    package Foo;
    sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};

    package Fuz;                       # a weird REF-REF-SCALAR object
    sub new {bless ($_ =  'fu'z'), $_[0]};

    package main;
    $foo = Foo->new;
    $fuz = Fuz->new;
    $boo = [ 1, [], "abcd", *foo,
             {1 => 'a', 023 => 'b', 0x45 => 'c'}, 
             \"pq'r", $foo, $fuz];

    ########
    # simple usage
    ########

    $bar = eval(Dumper($boo));
    print($@) if $@;
    print Dumper($boo), Dumper($bar);  # pretty print (no array indices)

    $Data::Dumper::Terse = 1;          # don't output names where feasible
    $Data::Dumper::Indent = 0;         # turn off all pretty print
    print Dumper($boo), "n";

    $Data::Dumper::Indent = 1;         # mild pretty print
    print Dumper($boo);

    $Data::Dumper::Indent = 3;         # pretty print with array indices
    print Dumper($boo);

    $Data::Dumper::Useqq = 1;          # print strings in double quotes
    print Dumper($boo);

    $Data::Dumper::Pair = " : ";       # specify hash key/value separator
    print Dumper($boo);

PHP

$feedURL = 'http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed';
    
    // read feed into SimpleXML object
    $sxml = simplexml_load_file($feedURL);
    ?>
      
    entry as $entry) {
      // get nodes in media: namespace for media information
      $media = $entry->children('http://search.yahoo.com/mrss/');
      
      // get video player URL
      $attrs = $media->group->player->attributes();
      $watch = $attrs['url']; 
      
      // get video thumbnail
      $attrs = $media->group->thumbnail[0]->attributes();
      $thumbnail = $attrs['url']; 
            
      // get  node for video length
      $yt = $media->children('http://gdata.youtube.com/schemas/2007');
      $attrs = $yt->duration->attributes();
      $length = $attrs['seconds']; 
      
      // get  node for viewer statistics
      $yt = $entry->children('http://gdata.youtube.com/schemas/2007');
      $attrs = $yt->statistics->attributes();
      $viewCount = $attrs['viewCount']; 

perl vs. php

sito uefa, b2b, newsletter dello store: php
formazioni giovanili e sito inter.it: perl

lavoro in parallelo su progetti coi due linguaggi…e le differenze sono chiare.

l’unica menata? gli array ricevuti in post da un modulo e trattati coi due linguaggi. Ci sono sovrapposizioni… insidiose.
Questo link e’ utilissimo
php

$a3 = array_merge(‘xx’, $a1, $a2);

list($x, $y) = $a;

$a[] = ‘new’; # push

array_push
array_pop
array_shift
array_unshift
array_splice

foreach ($a as $i) { .. }


corrispondente perl

@a3 = (‘xx’, @a1, @a2);

($x, $y) = @a;

$a[@a] = ‘new’; # push

push
pop
shift
unshift
splice

foreach $i (@a) { .. }

il futuro di phpads

ancora una volta phpads non attiva banner o campagne banner programmate nel futuro

stavolta almeno mi ha lasciato un messaggio d’errore divertente

baco-phpads