Venerdi, 12 Marzo 2010 

Archive for the ‘PHP’ Category

Cambiare randomicamente gli sfondi del desktop GNOME

Giovedì, Settembre 11th, 2008

Il desktop environment Gnome, almeno fino alla versione attualmente in uso nella mia sala macchine, cioè la 2.22.3, non consente, passando dalle finestre di settings del proprio ambiente di lavoro, la possibilità di cambiare ciclicamente, ed in maniera randomica, le immagini di sfondo del proprio desktop.

Questa carenza, del resto non così grave, è comunque aggirabile e risolvibile in una quantità pressochè illimitata di modi, grazie alla flessibilità del sistema GNU/Linux, alla disponibilità di copiosi strumenti di sviluppo, e ai cancelli software che Gnome mette a disposizione per dialogare in tempo reale con il suo environment.

Ecco quindi un modo molto semplice per inserire nel sistema questa funzionalità, e gestirla in modo altamente parametrico attraverso uno script PHP progettato ad hoc per lo scopo.

Lo script è testato e funzionante, con alcune piccole variazioni non importanti, in un sistema Gnome su piattaforma Fedora.

Naturalmente, chi non ha una conoscenza del linguaggio PHP può comunque fare uso del codice che tra poco presenterò, ed anche, con attenzione, intervenire nella sezione di configurazione dei parametri dello script, in modo da customizzare il risultato finale in maniera sempre più vicina alle sue esigenze.

Lo script PHP che gestisce il cambio randomico e ciclico degli sfondi del desktop è il seguente ( da salvare nel proprio sistema con estensione php, togliendo quella txt ):

clicca qui per visualizzare lo script ( verrà aperto in una nuova finestra )

La sezione VARIABILI GENERALI DI FUNZIONAMENTO contiene i parametri di funzionamento dello script.

L’array $aDir contiene la lista delle directory nel sistema locale da cui prelevare gli sfondi, e contiene due chiavi: uri è sostanzialmente il path da cui prelevare le immagini di sfondo, e scan è un importante parametro, perchè consente di prelevare le immagini ricorsivamente in tutte le sottodirectory dell’uri indicato. Se impostato a NORMAL, vengono prelevate solo le immagini nell’uri; se impostato a RECURSIVE, vengono prelevate tutte le immagini contenute nell’uri e nelle sue sottodirectory. Parametro utile, per esempio, per prelevare tutti gli sfondi nella directory del desktop Gnome adibita allo scopo, cioè /usr/share/wallpapers. Impostare in $aDir tutte le directory da cui si intende prelevare gli sfondi, sostituendo, se necessario, gli esempi che trovate, soprattutto quello puramente esemplificativo /my/dir/.

L’array $aExtension contiene le estensioni che devono avere i files per essere considerati immagini di sfondo. Il suo contenuto è parlante, aggiungere, se necessario, altre estensioni.

L’array $aFilter indica quali nomi di file senza estensione devono essere filtrati durante l’identificazione dei file da usare come sfondo. Cioè a dire, ogni elemento è un nome di file che, se incontrato durante lo scanning, sarà saltato senza essere considerato sfondo valido. Usare questo filtro per togliere le immagini che non si desidera inserire nel set di quelle da utilizzare. Le impostazioni indicate qui sono state inserite perchè il desktop Gnome mette a disposizione wallpaper di differenti dimensioni per lo stesso contenuto, che se non venissero in qualche modo filtrate, comparirebbero ovviamente tutte quante, pur avendo il medesimo contenuto, nella lista degli sfondi validi. Ma naturalmente, in certe directory personali si può avere la necessità di non prendere tutte le immagini ivi contenute come sfondo per il proprio desktop, e in quel caso, basta inserire il nome di file, senza estensione in questo array.

La variabile $iTimeKeep indica ogni quanti secondi il desktop Gnome cambierà inserendo una nuova immagine. Anche qui, inserire un valore sensato è una regola di indubbio valore: nell’esempio, il tempo impostato è di 30 minuti ( 1800 secondi ).

Una volta salvato lo script nel proprio sistema, occorre innestare la sua esecuzione nel sistema Gnome, e a tal proposito, seguire i passi indicati:

  • dare i permessi di esecuzione allo script.
  • Accedere in Sistema->Preferenze->Personale->Sessioni
  • Nella lista dei programmi d’avvio presentata, aggiungere una nuova entry così composta:
    • Nome : quello che volete
    • Comando : il nome dello script salvato, completo di path assoluto
    • Descrizione : quella che volete
  • chiudere la finestra, ed il gioco è fatto. Al successivo avvio di Gnome, gli sfondi cominceranno a cambiare in accordo alle vostre impostazioni.

Due parole finali sulla modalità di interazione con il desktop Gnome: il comando che fisicamente cambia il desktop del vostro ambiente di lavoro è:

gconftool-2 -t string -s /desktop/gnome/background/picture_filename [path_del_nuovo_sfondo]

gconftool-2 è sostanzialmente una utility che consente di impostare molti dei parametri di funzionamento del desktop Gnome (font, impostazioni del sound mixer, dimensione e posizione delle taskbar, etc) direttamente via shell; tra tali parametri, compare anche quello relativo all’immagine di sfondo da utilizzare, e attraverso questo comando possiamo gestirla in un modo più “creativo” e divertente.

Visualizzare i commenti di un post Wordpress dal più recente

Giovedì, Giugno 26th, 2008

Il mio primo post in assoluto, in questo laboratorio informatico di ricerca e sviuppo, è sostanzialmente inerente ad un piccolo codice PHP da inserire, se si desidera, nel theme template del proprio blog Wordpress. Il suo scopo è visualizzare i commenti dei post ordinati temporalmente dal più recente al più vecchio. Cioè a dire, l’ultimo commento inserito è visualizzato per primo.

Per default, infatti, Wordpress visualizza i commenti ordinati temporalmente dal primo inserito in poi, con il risultato che gli ultimi commenti di un post, soprattutto quando superano un certo numero, possono essere visualizzati solo dopo uno scrolling chilometrico della pagina del post.

Ordinare in maniera inversa la visualizzazione permette invece di leggere istantaneamente, perchè posti al top, i commenti inseriti per ultimi. Un qualcosa che può risultare comodo.

Per ottenere questo risultato, possiamo agire su uno dei nostri file relativi al tema scelto per la visualizzazione senza modificare il core kernel di Wordpress, in modo da svincolarci da qualsiasi aggiornamento e conservare il pieno controllo sulla modifica effettuata.

Ecco come fare:

  • editiamo il file comments.php del nostro tema Wordpress utilizzato.
  • localizziamo il posto esatto dove inserire il nostro codice, che è quello immediatamente prima del ciclo foreach di visualizzazione dei commenti di un post, cioè:
    1. <?php foreach ($comments as $comment) : ?>
  • inseriamo subito prima del codice sopra indicato il seguente codice PHP:
    1. <?php
    2. //
    3. // Ordino i commenti in ordine temporale dal piu’ giovane al piu’ vecchio
    4. //
    5. foreach ($comments as $key => $comment)
    6.            $data_gmt[$key] = $comment->comment_date_gmt;
    7. //
    8. array_multisort($data_gmt, SORT_DESC, SORT_STRING, $comments);
    9. ?>
  • Il gioco è fatto! Da questo momento in poi, i commenti di tutti i post verranno visualizzati ordinati dal più recente e progressivamente a scendere verso il più vecchio.

Due parole finali sul semplice trucco utilizzato: i commenti sono sostanzialmente caricati in Wordpress come un array di righe ( $comments ), in cui ogni riga è un commento ( $comment ); un commento ha a corredo diversi campi che gli sono peculiari, e tra essi c’è quello che ben si presta al nostro scopo: il campo comment_date_gmt. Di fatto, questo campo è un datetime nella forma YYYYMMDD HH:MM:SS; vedremo in un successivo post perchè questa sintassi si presta meravigliosamente agli ordinamenti temporali.

La funzione array_multisort è una funzione PHP davvero potente che ordina array multipli o multi-dimensionali, per la quale invito a leggere la pagina di manuale relativa sul sito PHP. Proprio da questa pagina ho tratto spunto per la creazione di questo piccolo codice.

Chiudi
Invia per E-mail