martedì 30 marzo 2010

Temi GTK in Window Manager

Oggi voglio parlarvi di come usare i bellissimi temi GTK senza installare programmini che, pur facendo il loro dovere, vi tolgono il gusto di aver messo le mani nelle impostazioni del vostro sistema operativo. Anche perché, se usando tali programmi non sapete, in realtà, COSA è stato modificato, aggiungendo righe in un file di testo saprete sempre come tornare alle impostazioni precedenti. Bene. Cominciamo. I nostri temi GTK si trovano, una volta installati in /usr/share/themes o in ~/.themes. Se avete scaricato un tema compresso in un archivio, basterà copiare il suo contenuto in ~/.themes. Ora, l'unica cosa che dobbiamo fare è creare due file nella nostra home (si potrebbe creare anche un solo file, ma per una questione di ordine, anche mentale, consiglio di crearne due distinti): gtkrc.mine e gtkrc-2.0. Nel primo inseriremo le impostazioni per il font, il tema delle icone e tutte le impostazione personali dell'user, nel secondo includeremo il tema GTK e il primo file. Posto il mio gtkrc.mine:


style "user-font"
{
font_name = "Droid Sans 9"
}
widget_class "*" style "user-font"
gtk-font-name = "Droid Sans 9"

gtk-icon-theme-name = "ACYL_Icon_Theme_0.8.1"

gtk-enable-event-sounds = 0

Le prime sei righe riguardano, come potete capire, il font. L'unica cosa necessaria da cambiare è il nome del font nelle righe font-name e gtk-font-name. gtk-icon-theme-name, invece, identifica il nome del tema di icone, che si trovano in /usr/share/icons o in ~/.icons. L'ultima riga, che ho aggiunto io, potrebbe servirvi se volete togliere i suoni di gtk, che a me non piacevano. In ogni caso, potete tranquillamente eliminare tale riga. Per quanto riguarda il .gtkrc-2.0, la faccenda è ancora più semplice!


include "/usr/share/themes/MurrinaFancyBlaster/gtk-2.0/gtkrc"
include "/home/andrea/.gtkrc.mine"

La prima riga chiama il tema. Ricordatevi che dovete includere sempre il gtkrc, che si trova nella cartella gtk-2.0 presente in ogni tema GTK. Il tema che ho incluso io è quello di Bl@ster. Date un'occhiata al suo sito!
L'ultima riga, invece, include il file creato in precedenza.

Se tutto è a posto, ora potete ammirare il vostro tema GTK, che siate in OpenBox, in Compiz stand-alone o in un altro WM. A presto!

domenica 28 marzo 2010

Quanti triangoli ci sono?

Mi è capitato spesso, girando per il web, di trovare dei giochetti matematici. Un esempio è il classico gioco dei triangoli. Quanti triangoli ci sono in questa immagine? Chiunque, almeno una volta nella vita, ha provato a risolverlo contando il numero di triangoli, spesso perdendone qualcuno per strada. Ma se uno volesse trovare un modello matematico per la risoluzione di questo enigma? Fa come me, prende carta e penna e si mette a studiare i vari casi, prendendo prima un triangolo piccolo per poi aumentare la sua grandezza. Io sono riuscito a trovare una soluzione studiando il triangolo a pezzi. Ora non voglio annoiare nessuno con la matematica, ma chi fosse curioso, può guardarsi il codice java qui sotto, per provare ad intuire la soluzione che ho trovato. E, perché no, per proporne una di migliore e più elegante (perché sicuramente esiste).


public class Triangle {
private int l;

public Triangle(int l) {
this.l = l;
}

public int n(int l, int i) {
int n = 0;
if (i == 1)
n = 2*l - 1;
if (i > 1) {
if (l <= (2*i - 1))
n = l - (i - 1);
else
n = 2*(l - i) - (i - 2);
}
return n;
}

public int resolve() {
int result = 0;
for (int l = this.l; l > 0; l--) {
for (int i = 1; i <= l; i++) {
result += n(l, i);
}
}
return result;
}

public static void main(String[] args) {
Triangle triangle = new Triangle(1000);
System.out.println(triangle.resolve());
}
}

sabato 20 marzo 2010

HTML5 su youtube


Qualcuno di voi forse saprà che un nuovo linguaggio di markup è in drafting: HTML5. Introduce moltissime novità interessanti che renderanno HTML completamente libero da alcuni plugin esterni, come per esempio Adobe Flash o Silverlight. Come?? Con i semplicissimi tag audio e video. Se avete un browser come Google Chrome o Safari potete godere già di questa novità, recandovi alla pagina di aggiornamento. In basso potete cliccare il link che vi cambierà il video player, passando a quello di HTML5. Poi? Basta. Già fatto. Le mie prime impressioni sono state abbastanza positive, in quanto ho notato una vistosa riduzione dei tempi di caricamento! Molti però hanno avuto dei problemi. Per tornare al player di default, basterà tornare alla stessa pagina e cliccare lo stesso link. Fate delle prove e fatemi sapere come va. Ciao!

giovedì 18 marzo 2010

Petizione per il miglioramento dell'Android Market

Se possedete o avrete l'occasione di comprare un cellulare dotato del sistema operativo Android, firmate la petizione di sotto.
Serve per convincere Google a migliorare il market, ancora scarno e con pochi vantaggi per gli sviluppatori di applicazioni.
Google, please improve the Android Market. - Petition



P.S.: dai, facciamo terminare questo impero dell'iPhone!!

mercoledì 17 marzo 2010

Io sono un pitone?

You are Python You are slower than others, but easier to understand. You are a minimalist, who doesn't like clutter.


Grazie, grazie! Questo quiz spacca sul serio. E ci azzecca pure! Veramente superlativo!
Perché non ci provate anche voi? Ciao!

sabato 6 marzo 2010

Google Nexus One VS HTC Desire: solo questione di prezzo?

Sinceramente mi sento in imbarazzo. Google Nexus One e HTC Desire, i due super-phones in uscita ad aprile in Europa, sembrano riscuotere parecchio successo tanto da meritarsi l'appellativo di iPhone-killers. Eppure, se prima mi sentivo sicuro che avrei preso il N1, ora un cambio di idea non mi sembra una decisione stupida, soprattutto se il prezzo del secondo sarà inferiore al primo. D'altro canto, è vero anche che non vado pazzo di Sense (l'interfaccia dei telefoni HTC) e che, in caso la volessi provare, esiste già la ROM per il Nexus. Innegabile è anche il fatto che il googlefonino sembra aver avuto problemi tecnici non indifferenti riguardanti non solo i tasti touch difettosi, ma anche la connessione internet 3g. Bisogna dire anche che Google regalerà al suo telefono gli ultimissimi aggiornamenti in tempo reale. Insomma, analizzando pro e contro, credo che ormai l'ago della bilancia sarà condizionato dal prezzo dei due terminali Android più in voga del momento. Quel che è certo è che ora non sono più sicuro della scelta.
Voi cosa fareste?

GO: operazioni matematiche da terminale

Dopo che sono venuto a conoscenza dell'esistenza del linguaggio di programmazione di Google, ho cominciato a studiarlo con calma, per conoscere le sue caratteristiche e le librerie principali. Il linguaggio è interessante e si può dire essere una via di mezzo tra l'efficienza del C e il divertimento del Python (d'altronde, io conosco solo questi due linguaggi :-)). Ad ogni modo, mi sono divertito a scrivere uno script per effettuare operazioni matematiche da terminale. Lo posto!

package main



import "flag"
import "os"
import "strconv"


const NEWLINE string = "\n"


var (addFlag = flag.Bool("a", false, `add a and b`);
subFlag = flag.Bool("s", false, `subtract b to a`);
mulFlag = flag.Bool("m", false, `multiply a and b`);
divFlag = flag.Bool("d", false, `divide b from a`);
helpFlag = flag.Bool("help", false, `this help`))


func add(a, b int) int {
return a + b
}


func subtract(a, b int) int {
if a >= b {return a - b}
return -1
}


func multiply(a, b int) int {
return a * b
}


func divide(a, b int) int {
if b != 0 {
return a / b
}
return -1
}


func main() {
flag.Parse()
a, errA := strconv.Atoi(flag.Arg(0))
if errA != nil {a = -1}
b, errB := strconv.Atoi(flag.Arg(1))
if errB != nil {b = -1}

if *addFlag {
os.Stdout.WriteString(strconv.Itoa(add(a, b)) + NEWLINE)
} else if *subFlag {
os.Stdout.WriteString(strconv.Itoa(subtract(a, b)) + NEWLINE)
} else if *mulFlag {
os.Stdout.WriteString(strconv.Itoa(multiply(a, b)) + NEWLINE)
} else if *divFlag {
os.Stdout.WriteString(strconv.Itoa(divide(a, b)) + NEWLINE)
} else if *helpFlag {
flag.PrintDefaults()
}



Questo script usa la libreria flag per parsare le opzioni del programma, strconv per la conversione degli interi a stringhe e viceversa e di os per la gestione dell'output. Il programma è sicuramente migliorabile, però con questo esempio volevo dimostrare che, anche con poca esperienza di programmazione, con poche ore si possono ottenere buoni risultati! Per le istruzioni di compilazione vi rimando al sito ufficiale del linguaggio.
Ciao!

giovedì 4 marzo 2010

Microsoft: come (non) disporre 5 elementi in una pagina web

Ormai in molti sapranno della decisione di Microsoft di far scegliere all'utente il browser web da usare in Windows. È da poco disponibile una scelta fra 5 browser web. Fin qui può sembrare tutto a posto. E invece la suddetta pagina è male programmata!!! Non riesce infatti ad elaborare la giusta decisione! Ma, caspita, ci rendiamo conto che stiamo parlando di Microsoft, un colosso, che però non riesce a disporre 5 elementi in una pagina e ad interfacciarsi con l'utente!?! Mah... Un altro indizio che porta acqua al mulino del software libero e, in generale, a tutto ciò che non è Microsoft.
Ciao!