sabato 17 aprile 2010

Aprire un progetto su SourceForge



Per poter cominciare a lavorare seriamente al mio progetto di media center, ho deciso di usare un servizio di hosting gratuito per progetti open source.

La scelta era tra launchpad, savannah e sourceforge, e la scelta è ricaduta su quest ultimo per i seguenti motivi:
  • launchpad: usa bazaar come sistema di gestione del codice, che però non conosco e non mi andava di studiare
  • savannah: non sono del tutto sicuro che il mio progetto faccia uso al 100% di free software (mame? mldonkey? mplayer?) e non mi va di verificare
  • sourceforge: mi ha convinto la prima voce di questa pagina: code hosting con SVN che era proprio quello che cercavo

Creazione di un progetto su SourceForge

La prima cosa da fare per creare un progetto è registrare un account; sourceforge accetta login con openid (ne ho uno con google), ma bisogna comunque immettere dei dati.

Dopodichè si passa alla creazione del progetto, nome, descrizione, e più in dettaglio le caratteristiche tipo: licenza, categoria, parole chiave, linguaggio ed altro (qui il tutorial ufficiale).

Dopo aver inserito i dati del progetto, si passa all'upload di un po' di codice.

Ho preparato un archivio contenente il codice python, le immagini ed un file README con delle informazioni base del progetto; questo archivio l'ho caricato tra i file di progetto di sf usando l'interfaccia web.

Da ricordarsi di aggiungere uno o più screenshot del progetto: nel tag Develop, alla voce Screenshots (vedi immagine seguente) si apre la schermata per la loro gestione: selezionare la voce Admin per uploadare le schermate.


Controllo del codice

Tra i vari servizi, sourceforge fornisce un repository SVN del progetto.

Per poter scaricare il codice il comando è
svn co https://atlantismc.svn.sourceforge.net/svnroot/atlantismc atlantismc

Per aggiungere file e cartelle il comando è
svn add main.py README main.mnu data

Per finalizzare l'aggiunta (o la modifica) il comando è
svn commit
usando come utente e password quelle fornite all'atto della registrazione.

Tutti questi comandi svn vanno lanciati nella stessa cartella di progetto.

Il repository SVN è browsabile anche via web all'URL:

Ecco la pagina del progetto che ho appena registrato:

Buon coding!

venerdì 16 aprile 2010

DVB: creare una lista di canali


Per poter vedere i canali TV da un ricevitore DVB (-S o -T), è necessario generare un file, chiamato channels.conf, che associa ad ogni canale la sua frequenza trasmissiva ed altri parametri.

Il file channels.conf può essere generato automaticamente dai programmi appositi, come me-tv o kaffeine, oppure in modo manuale.

Per la modalità manuale, la procedura prevede come primo passo la creazione di un file chiamato tuning.txt contenente l'Initial Tuning Data, che spesso è già presente nel sistema se si è installato un programma di visione DVB nella cartella
/usr/share/doc/dvb-utils/examples/scan/dvb-t
Dopodichè si genera il file channels.conf con il comando
scan tuning.txt > channels.conf
Il file tuning.txt, contenente l'Initial Tuning Data, può essere generato automaticamente usando un tool che si chiama w_scan, con uno dei due comandi (verificare quale è meglio):
./w_scan -cit -x > tuning.txt
./w_scan -E 0 -ft -t2 -cit -x > tuning.txt
Ho penato un po' perchè w_scan mi trova circa 150 services, ma poi nel file tuning.txt ci sono poche righe: e' del tutto normale, facendo lo scan poi i canali trovati ci sono tutti (se poi il decoder DVB non ce la fa a visualizzarli è un altro discorso...)
Riporto qui il file tuning.txt da me creato:
#------------------------------------------------------------------------------
# file automatically generated by w_scan
# (http://wirbel.htpc-forum.de/w_scan/index2.html)
#! 20100316 2 1 OFDM IT
#------------------------------------------------------------------------------
# location and provider:
# date (yyyy-mm-dd) : 2010-04-16
# provided by (opt) :
#
# T[2] [# comment]
#------------------------------------------------------------------------------
T 205500000 7MHz AUTO AUTO AUTO AUTO AUTO AUTO # Rai
T 1600000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE
T 530000000 8MHz 1/2 NONE QPSK 8k 1/8 NONE # NapoliTivu
T 100000000 8MHz 5/6 NONE QPSK 2k 1/32 NONE
T 546000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # Rai
T 500000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
T 594000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # Mediaset2
T 543500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
T 602000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # 3LIndustriale
T 610000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # DVBH
T 490000000 8MHz 2/3 2/3 QAM64 8k 1/4 2
T 650000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE
T 634000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # TVR AUTOVOX
T 36000000 8MHz 1/2 NONE QAM64 2k 1/32 NONE
T 674000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # GOLDTV
T 682000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO
T 690000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # TIMB3
T 698000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # R 4
T 0 8MHz 2/3 NONE QPSK 8k 1/32 NONE
T 722000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # Mediaset1
T 800000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
T 754000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # Mediaset
T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
T 810000000 8MHz 2/3 NONE QPSK 8k 1/8 NONE
Per la generazione manuale del file tuning.txt  (procedura da confermare) si puo accedere al sito ufficiale del digitale terrestre italiano, selezionare provincia e comune di interesse, selezionare "elenco multiplex" e generare una riga per ciascuna frequenza riportata; ad esempio se per un gruppo di canali la frequenza indicata è 682,000 aggiungere nel file tuning.txt la riga:

T 682000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO
magari ignorando le frequenze assegnate a gruppi di canali non di interesse (tipo dahlia, premium)
...
Di interesse:
T 682000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 690000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 546000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 514000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 626000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 594000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 698000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 770000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE

Non di interesse:

T 786000000- 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 738000000- 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 706000000- 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 722000000- 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 758000000- 8MHz 2/3 1/2 QAM64 8k 1/32 NONE


Buona visione!

domenica 14 marzo 2010

Burocrazia automatizzata

Se c'è una cosa che non sopporto è scrivere duecento volte il mio nome, cognome, data di nascita, codice fiscale, ecc su documenti che prima o poi tutti dobbiamo riempire e consegnare in triplice copia cartacea.

Ho sempre pensato che se questi documenti, magari fortunosamente recuperati in formato PDF, li potessi editare con un apposito programma aggiungendo una sola volta le informazioni, e poi stamparli già riempiti quante volte ci pare, sarebbe un'ottima soluzione.

Ere informatiche fa, sono riuscito a fare una cosa del genere con l'uso di una vecchia versione di adobe illustrator, ma non sono riuscito a trovare il cd per poterlo provare sotto wine.

Nella ricerca di soluzioni native sotto linux, ho scoperto che inkscape (alternativa free di illustrator) permette di fare una cosa del genere. Anche kword e pdfedit pare lo facciano, ma per il primo non mi va di installare le librerie KDE a corredo, mentre pdfedit da usare è veramente un dito nel naso (trad. una cosa scomoda e fastidiosa)!!

Il tentativo di oggi è stato fatto con un programma di nome flpsed, e devo dire che sono rimasto piacevolmente sorpreso dalla semplicità d'uso e dalla utilità del programma!

Aggiornamento 2018

Un altro programma utile, che permette inoltre di apporre anche immagini (ho la firma in formato png): xournal. Da ricordarsi di attivare tra le impostazioni: Legacy PDF Export per avere il pdf in alta risoluzione.

domenica 7 febbraio 2010

Se funziona solo Google

Me lo segno qui perché oggi pomeriggio sono impazzito su questa cosa; avoglia ad impostare i DNS di OpenDNS:
  • 208.67.222.222
  • 208.67.220.220
o di google:
  • 8.8.8.8
  • 8.8.4.4
Ricordarsi di mettere user e password corretti nel modem ADSL: in caso contrario, alcuni provider ti fanno andare solo su google e sulle loro homepage.

Alice contro il vento

Nella mia necessità di un modem adsl con filo, sono riuscito a recuperare un vecchio modem Alice Gigaset della Siemens.

Connesso al pc via cavo ethernet, il modem correttamente assegna al pc un indirizzo ip mediante DHCP. Connettendosi con il browser al modem, una schermata ci mostra lo stato del modem, ma non si vede da nessuna parte la possibilità di configurare il modem, come ad esempio il nome e la password, o altri parametri importati (VCI, MUX, PPPoATM o PPPoE, ecc).

Dopo una breve ricerca su internet, una paginetta ben fatta mostra come rendere questo modem perfettamente configurabile e funzionante per tutti i provider. Riporto qui brevemente che bisogna connettersi all'URL http://192.168.1.1/upload.html e scaricare il firmware che si trova nella paginetta di cui sopra.

Seguite le istruzioni, all'indirizzo del modem appare finalmente una interfaccia grafica con tutte le funzionalità di configurazione disponibili, quindi basta inserire i parametri del nostro providet, et voilà, il modem si connette senza colpo ferire!

Il modem è indicato supportare solo la tecnologia ADSL, ma funziona anche su linee ADSL 2+.

Aggiornamenti ubuntu - 2

Fermo restando quanto detto nel post precedente, mi trovo costretto a diffidare ulteriormente degli aggiornamenti automatici.

L'altro giorno, come al solito, ho aggiornato il mio sistema. Alla fine dell'aggiornamento, però, un messaggio abbastanza preoccupante riportava un errore nell'aggiornamento di FUSE.

Al successivo riavvio, il pc si è bloccato dopo il logo ubuntu con un messaggio di errore relativo all'assenza di un file nella cartella script (non ricordo bene il testo, l'ho inserito come ricerca in google ma non sto ritrovando la cronologia...); ovviamente su google nessuno ha avuto il mio problema...

Fortunatamente il sistema si avviava con il kernel precedente, anche se i driver video Nvidia non venivano caricati per cui l'unica risoluzione video possibile era 800 x 600.

Ho effettuato un po' di tentativi, ma alla fine sono riuscito a risolvere il problema.

Tra i tentativi andati a vuoto:
  • da linea di comando: sudo apt-get install --fix-broken
  • sudo dpkg -- configure -a
  • sudo apt-get remove/install ubuntu-desktop
  • da synaptic: reinstallazione del kernel difettoso
Tra i tentativi che avrei provato:
  • da synaptic: rimozione di tutta la linea del kernel non funzionante
Tentativo andato a buon fine:
  • attivato per default da grub il kernel funzionante
  • reinstallato con envy il driver della scheda video
ora il sistema funziona!!

Maledizione!

Aggiornamenti ubuntu - 1

E' buon uso nell'informatica tenere sempre ben aggiornato un sistema, nell'ottica di essere protetto da eventuali bachi nel software che compromettono la stabilità e la sicurezza del sistema stesso.

Così come windows, le migliori distribuzioni linux offrono un comodo sistema di aggiornamento automatico, che permette di avere un sistema sicuro anche a chi di pc ne capisce poco.
Tutto questo è molto bello e funziona alla perfezione fintantoché si installano solo le applicazioni presenti nei repository ufficiali.

Mi sono capitati almeno due casi in cui l'aggiornamento ha reso inservibili dei software che avevo installato (magari con qualche difficoltà):
Entrambi questi software si installano compilando porzioni di codice rispetto alla versione di kernel attuale, per cui se si cambia versione del kernel (e con gli update questo può capitare 3-5 volte l'anno), tali software smettono di funzionare.

Se per vmware la cosa si risolve perdendo un po' di tempo a rieffettuare l'installazione, per i driver della penna DVB bisogna ingegnerarsi un po', perchè la procedura che mi ero salvato non funziona più: non sono più presenti dei sorgenti necessari che avevo trovato con tanta fatica e va cercato chissà dove un altro sistema per farla funzionare.

Morale della faccenda, tra un update del kernel e l'altro, è di fondamentale importanza verificare che le applicazioni compilate funzionino ancora. Se non funzionano si è costretti a ricompilare o, come nel mio caso, ad usare il kernel vecchio.

sabato 30 gennaio 2010

Thumbnail

Per la generazione automatica di mini-immagini significative da una collezione di film, ci viene in aiuto il comodo mplayer, mediante il seguente comando:
mplayer test.mpeg -ss 22 -nosound -vo jpeg
-frames 1
Questo comando crea, a partire dal file test.mpg, 22esimo secondo, un file chiamato "00000001.jpg" contenente uno screenshot del filmato.

Nel progetto di un media center, questo risulta utile per visualizzare, di fianco alla lista, uno screenshot del film selezionato in quel momento:
  • Il sistema cerca il file film.jpg nella cartella nascosta .cache/
  • se lo trova lo visualizza nel riquadro
  • se non lo trova lo genera con il comando sopra, lo salva nella cartella nascosta con il nome del film e lo visualizza

domenica 18 ottobre 2009

Virtualizzare, oggi


Volendo portarmi appresso una chiavetta USB con su l'immagine virtuale di un'installazione di un linux da condividere tra casa e lavoro, stavo sperimentando le varie soluzioni di virtualizzazione presenti in giro.

Poichè a casa ho ubuntu, mentre in ufficio Windows XP, mi sono concentrato sulle due soluzioni multi-piattaforma: VirtualBox e VmWare.

A livello di sensazione, Virtual Box mi sta molto più simpatico, per cui ho iniziato con questo. Dopo averlo usato un po' posso elencare vantaggi e svantaggi:

Pro:
  • E' presente nei repository di ubuntu per cui si installa molto facilmente.
  • La creazione e l'esecuzione di una macchina virtuale è molto semplice.
  • Sicuramente usa l'estensione VT del mio processore.
Contro:
  • La procedura per spostare la macchina virtuale da un pc all'altro è abbastanza ostica: non è possibile copiare semplicemente un file o una cartella ma bisogna lanciare un comando da shell, poi aggiornare un file xml etc etc.
Ho provato ultimamente VmWare, e come prime impressioni posso dire che:

Pro:

  • Copia della macchina virtuale molto semplice: basta copiare il contenuto della directory che la contiene ed eseguirla su di un altro pc.
Contro:
  • L'installazione è un po' particolare, bisogna prima installarsi la versione server, che serve per creare una macchina virtuale, e poi si installa il player che effettivamente la esegue.
  • Il player non fa uso dell'estensione VT.

Procedura di installazione di VmWare

Mi appunto qui la sequenza delle operazioni necessarie all'installazione, creazione ed esecuzione di una macchina virtuale usando le soluzioni free di VmWare:
  1. Installare il server, password nella mail usata per la registrazione, segnarsi il numero di serie
  2. modificare /etc/vmware/hostd/authorization.xml
  3. Scaricare il player.

domenica 27 settembre 2009

Atlantide Media Center: Video Streaming

Gli utlimi aggiornamenti riguardo al media center scritto in python sono:
  • ho contattato il creatore dell'immagine che inizialmente avevo impostato come sfondo, per sapere se potevo usarla in via 'ufficiale'. L'autore, gentilissimo e bravissimo, mi ha risposto che i diritti di quell'immagine sono già venduti (buon per lui). Dopo una infruttuosa ricerca su internet, ho deciso di farmene una da me. Con Gimp ho quindi creato questo sfondo, che mi sembra adeguato.
  • ho attivato la visualizzazione del canale demoscene.tv alla tv! Da shell bisogna lanciare il seguente comando:
    mplayer -vc vp6 -framedrop -fs http://91.121.4.152:PORTA
    se PORTA = 8000: streaming in alta risoluzione (qui da me spesso si blocca)
    se PORTA = 8074: streaming in bassa risoluzione (meglio)
    se PORTA = 8072: streaming in bassa risoluzione del canale OldSchool! Amiga rulez! :)
  • ho impostato i movimenti all'interno del menù mediante i bottoni del mouse con il seguente codice:
    if event.type == MOUSEBUTTONDOWN:
    #sx
    if event.button == 1:
    command = lCurrentMenu[iItemSelected][1]
    globals()[command]()
    #cx
    #elif event.button == 2:
    #dx
    elif event.button == 3:
    sys.exit(0)
    #su
    elif event.button == 4:
    iItemSelected -= 1
    #giu
    elif event.button == 5:
    iItemSelected += 1

lunedì 27 luglio 2009

Problemi di mldonkey

E' già la terza volta che il servizio mldonkey del media-center non parte più.

La prima volta ho reinstallato il pacchetto e sono riuscito a ripristinare i download recuperando i file che iniziano con "urn_ed2k_" nella cartella /var/lib/mldonkey/temp e il vecchio file di configurazione files.ini.

Dopo di chè ho creato un back-up archivio della cartella /var/lib/mldonkey.

La seconda volta che si è bloccato, ho ripristinato l'archivio vecchio, e recuperato il file files.ini; la cartella /var/lib/mldonkey/temp è un link simbolico, da ripristinare.

La terza volta, il file files.ini era corrotto, ma ho recuperato quello che viene automaticamente backuppato ad ogni lancio del server, situato nella sottocartella old_config/.

Sarà forse il caso di rendere un po' più robusta la gestione dei file di configurazione?

E' anche vero che la versione installata nel media box è la 2.9.5, mentre l'ultima ad oggi è la 3.0.0., che magari risolve il problema. Potrei provare a sostituire il binario mlnet contenuto nella cartella /usr/bin (da fare).

mercoledì 22 luglio 2009

Super penna! (usb)

Ho una penna usb bella spaziosa (16GB), e mi stavo giustappunto chiedendo come sfruttarla bene.

Mi piacerebbe avere una partizione con un linux permanente installato, una swap se serve, e il resto dello spazio vfat o ntfs per l'accesso da macchine win come normale penna usb.

Un primo tentativo: ho partizionato la penna in questo modo:
Dispositivo Boot Start End Blocks Id System
/dev/sdb1 * 1 9538 2441712 83 Linux
/dev/sdb2 9539 62111 13458672+ 5 Esteso
/dev/sdb5 9539 11492 500208 82 Linux swap / Solaris
/dev/sdb6 11493 62111 12958448 c W95 FAT32 (LBA)
ed installato un linux mediante l'utility usb-creator, ma non è andato a buon fine:
  1. senza la penna inserita all'avvio non si boota più il pc!!
  2. la penna non è letta da windows (nemmeno la partizione fat32...forse perchè estesa?)
  3. la penna non boota
per risolvere il primo grave punto, ho dovuto avviare il pc con la penna, ed entrare nel sistema insstallato; poi ho smontato la penna e reinstallato grub con il comando grub-install /dev/sda (sda=partizione locale).

Per risolvere il punto 2 pensavo di mettere la partizione fat32 nella primaria, ed installare linux nell'estesa, istruendo grub dove andare a prendersi i file di boot.

Per quanto riguarda il punto 3, il manuale del GRUB potrebbe essermi d'aiuto, sopratutto le istruzioni per installare grub manualmente.

Una procedura per rendere avviabile la penna usb è con syslinux: il comando syslinux /dev/sdb1 dovrebbe fare al nostro caso; il problema è che alcune penne non bootano con alcuni sistemi per misteriosi motivi di incompatibilità, per cui spesso una penna che pare non bootare in realtà potrebbe funzionare su un altro pc.

C'è anche da dire che l'utility di creazione di dischi di avvio di default per ubuntu ogni tanto sembra fallire (avviando da penna il menù di selezione rimane quello dell'iso precedente) e non riconosce le iso non ubuntu (?)

Un programma da tenere in considerazione è Plop, un boot manager che potrebbe aiutare all'avvio da usb.

domenica 12 luglio 2009

Sessione di VNC con x11vnc

Alcune volte sorge la necessità di accedere da remoto al media box in modalità grafica.
In questo caso ci viene in aiuto programma x11vnc, che implementa un server vnc.
Si installa il pacchetto omonimo, e si esegue con il comando (via ssh):
x11vnc -display :0
Non lo metto in esecuzione automatica, perchè non mi serve automaticamente, ma solo saltuariamente.

Per la visualizzazione, lanciare dal client il programma "Visualizzatore di desktop remoti" nel menù Internet.

Apt/dpackage da linea di comando

Ci sono occasioni (tipo la gestione del media box via ssh) in cui risulta comodo o necessario accedere alla lista di pacchetti installati/installabili senza l'ausilio di interfaccie grafiche (synaptic in primis). Ecco quindi una breve lista di comandi da terminale utili all'uopo:
  • lista di pacchetti installati: dpkg -l
  • lista di pacchetti installabili: less /var/lib/dpkg/available
  • ricerca di una stringa all'interno dei pacchetti: apt-cache search "stringa"
  • ricerca di un file all'interno dei pacchetti: dpkg -S "file"
  • lista di file installati da un pacchetto: dpkg-query -L

martedì 7 luglio 2009

Caratteri Unicode comodamente disponibili


Uno degli elementi più utili da aggiungere al pannello di gnome è sicuramente la Tavolozza Caratteri.

Questo breve post per indicare quali simboli mi sono più utili:
«»·~→ª✓
ÀÈÌÒÙ
Altri simboli si possono aggiungere sfruttando una comoda utility raggiungibile dal menù Applicazioni→Accessori→Tabella caratteri, o ancora meglio, inserita nella barra di menù di Gnome (il nome è Tavolozza caratteri):


In alcuni casi nella tabella caratteri non si trova il simbolo che si vuole aggiungere, come ad esempio il "check mark" (✓) che ho aggiunto per ultimo, per cui è necessario andare su google e cercare "check mark unicode"; in questo modo si recupera con il copia-incolla il carattere richiesto.
Ricerche che riguardano le lettere ad apice o pedice si possono fare usando i termini "unicode superscript" o subscript.

Un buon sito dove cercare i caratteri unicode è il seguente:
http://unicode-table.com/en/

andando a spulcuiare nella tabella mostrata dal sito, si notano un'infinità di caratteri interessanti a partire dai codici:
(per cercare a partire da un codice: http://unicode-table.com/en/#codice)

2010: percento, punti interrogativi, punti per liste (‰, ‱, ⁈, ⁋, ⁍)
2100: caratteri matematici e fisici: omega, gradi, farheneit, frazioni, numeri romani (Ω, ℇ, ℃, ℉, ℕ, ℝ, ⅀, ⅗, Ⅷ)
2200: insiemistica (∉, ∩, ⊂, ≅)
2470: elenco numerato (⒄, ⒗, ⒦, Ⓦ)
2600: tempo, religione, oroscopo (☀, ☔, ☠, ☣, ☧, ☮,☪, ☭, ♎, ♕, ♤, ♬)
2710: asterischi (✥, ✾, ❅, ❂)
3370: unità di misura (㎆, ㎉, ㎓, ㎦, ㎨)

e molto altro...

Un altro modo per ricercare caratteri unicode, è usare questo splendido tool che permette di disegnare con il mouse il carattere cercato, ed il sistema trova i caratteri unicode simili a quello disegnato. Utilissimo! Ulteriori informazioni su questo blog italiano.


sabato 4 luglio 2009

Un Mare Di Musica

A partire da un post su Ubuntu Forums, ecco una lista di possibili posti dove poter scaricare un sacco di musica interessante:
- Jamendo
- magnatune
http://www.ghacks.net/2005/12/03/free-music-list-december-2005/
-remix kwed org
netlabels
http://netlabels.org/
http://www.archive.org/details/netlabels
http://www.nettare.org/
http://www.eclassical.com/

streaming:
- shoutcast
- icecast

...

martedì 30 giugno 2009

Atlantide Media Center: menù di partenza

Un po' di brainstorming per il media center:
  • ogni menù ha una voce 'setup' che permette di configurare gli aspetti di quel menù, come ad esempio il percorso dove trovare i file multimediali, o il comando da impostare per riprodurli
  • ogni menù ha una voce 'indietro' ('esci' su quello principale)
  • dati possono essere directory e file, che si possono rinominare, cancellare, copiare, spostare; si possono creare directory nuove
  • se evidenziata una cartella, ti dice il numero di file e la data del più recente
  • se evidenziato un file ti dice dimensione, data e lunghezza (e magari copertina e info IMDB o equivalente italiano!)
  • nel menù 'Guarda TV' la funzione 'Setup' attiva la funzione di popolamento dei canali, e il comando per la visualizzazione dei canali stessi
  • i programmi registrati vanno in 'Registra TV', si possono poi spostare a piacere; in quel menù sono presenti le programmazioni
E ora un po' di codice python...

#!/usr/bin/python
########################################################
# Note sul nome delle variabili e funzioni :
# iniziano tutte con una sequenza che indica il tipo
#
# i = intero
# s = surface
# str = stringa
# font = font
# r = rect
########################################################
# Imports
########################################################
import pygame, sys, os
from pygame.locals import *
########################################################
# Inizializzazione variabili
########################################################
pygame.init()
iiResolution = (800, 600)
fontDefault = pygame.font.Font(None, 36)
# set screen resolution
pygame.display.set_mode(iiResolution, 0, 32)
sScreen = pygame.display.get_surface()
strBackgroundFile = os.path.join(".","Atlantis_by_aksu.jpg")
sBackground = pygame.image.load(strBackgroundFile)
strCurrentMenu = os.path.join(".","main.mnu")
########################################################
# Functions
########################################################
def drawMenu(menuFile, iSelected):
# Disegna il contenuto del menuFile ed evidenzia il selected
global sForeground, fontDefault
##################################
file = open(menuFile, 'r')
i=0
centerx = sForeground.get_rect().centerx
offsy = sForeground.get_rect().centery/2
for line in file:
line = line.replace ( "\n", "" )
sText = fontDefault.render(line, 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = centerx
rText.y = i*32+offsy
if i == iSelected:
rText2 = rText.inflate(118,4)
rText2.centerx = centerx
sBox = pygame.Surface.convert_alpha(pygame.Surface((rText2.width, rText2.height)))
sBox.fill((0, 255, 255, 100))
sForeground.blit(sBox, rText2)
sForeground.blit(sText, rText)
i=i+1
# Setup string
sText = fontDefault.render("Setup", 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = sForeground.get_rect().centerx
rText.y = i*32+offsy
sForeground.blit(sText, rText)
# Exit/back string
i=i+1
sText = fontDefault.render("Exit", 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = sForeground.get_rect().centerx
rText.y = i*32+offsy
sForeground.blit(sText, rText)
##################################
def input(events):
# Gestisce gli eventi di input
global iItemSelected
##################################
for event in events:
if event.type == KEYDOWN:
if event.key == K_UP:
iItemSelected -= 1
elif event.key == K_DOWN:
iItemSelected += 1
elif event.key == K_ESCAPE:
sys.exit(0)
else:
print event
########################################################
# Main
########################################################
iItemSelected =0

# Main loop
while True:
sForeground = pygame.transform.scale(sBackground, iiResolution)
input(pygame.event.get())
pygame.display.flip()
drawMenu(strCurrentMenu, iItemSelected)
sScreen.blit(sForeground, (0,0))

domenica 28 giugno 2009

Atlantide Media Center: prime prove

Nell'ottica di implementare un front-end grafico per la mia linux-box, sto studiando il python e pygame.

Questo è il risultato di un paio d'ore di smanettamento:

#!/usr/bin/python

import pygame, sys, os

from pygame.locals import *

screenwidth = 800
screenheight = 600

pygame.init()

# set screen resolution
pygame.display.set_mode((screenwidth, screenheight))#, pygame.FULLSCREEN)
screen = pygame.display.get_surface()

back_file_name = os.path.join(".","Atlantis_by_aksu.jpg")
back_surface = pygame.image.load(back_file_name)

font = pygame.font.Font(None, 36)
text = font.render("Guarda un film", 1, (255, 255, 255))
textpos = text.get_rect()
textpos.centerx = back_surface.get_rect().centerx
back_surface.blit(text, textpos)

fore_surface = pygame.transform.scale(back_surface, (screenwidth, screenheight))

screen.blit(fore_surface, (0,0))

pos = 0,0

def input(events):
for event in events:
if event.type == MOUSEBUTTONDOWN:
sys.exit(0)
elif event.type == MOUSEMOTION:
global pos
pos = pygame.mouse.get_pos()
screen.blit(back_surface, (pos[0],pos[1]))
else:
print event

# Main loop
while True:
input(pygame.event.get())
pygame.display.flip()

Visualizzare codice sorgente in HTML

Per visualizzare del codice C all'interno di una pagina HTML, ho effettuato i seguenti passi:
  • usato il programma code2html, che non necessita di installazione, basta aprire il pacchetto tar.gz ed estrarre l'eseguibile, e si esegue con il comando code2html codice.c codice.c.html
  • con un editor sostituire ai tab la stringa &#09";" (senza doppi apici), come suggerisce wikipedia
  • ricopiare dal tag "<" pre > al < /pre > ed incollare nel codice html...et voilà
Da notare che il programma code2html gestisce più linguaggi di quelli indicati nella sua homepage, tra cui il python.

Un altro metodo potrebbe essere quello di usare lo SCIntilla Text Editor, e sfruttare la funzione Export→as HTML..., ma non lo sto usando perchè adopera i CSS che in questo blog non posso inserire, inoltre il codice creato è piuttosto complesso.

Un terzo metodo che ho usato oggi a distanza di 6 anni è il seguente:
  1. andare alla pagina https://www.palfrader.org/code/code2html/cgi/
  2. riempire il form e cliccare invia richiesta (si può lasciare il campo HTML title vuoto)
  3. cliccare con il tasto destro sulla pagina creata, visualizzare il sorgente e copiare la parte che ci interessa compresa tra i tag PRE
Un altro sito utile per la formattazione in HTML è hilite.me che supporta molti più linguaggi rispetto al link precedente.

Ultimo usato: tohtml.com

martedì 23 giugno 2009

Configurazione di firefox

Se per qualcuno Firefox è sicuramente il miglior browser sulla piazza (me compreso) è grazie alla sua configurabilità e alle estensioni, che rendono la navigazione in internet una gran comodità; (certo non è stato esente da problemi, come quando si freezava ogni 3 per 2 e per la gestione delle animazioni flash).

Ecco un breve appunto su come configurarlo al meglio.

Lista delle estensioni utili
  • adblock (plus)
  • Context Search
  • DownThemAll
  • Gmail space
  • Google Bookmarks button
  • Plain Text Links
  • gTranslate (provare quick TransLation)
Configurazione
  • tutte le tab sempre visibili: da about:config mettere browser.tabs.tabMinWidth a 0
  • scrivere nella barra indirizzi rallenta: da about:config mettere
browser.urlbar.matchOnlyTyped = True
browser.urlbar.matchBehaviour = 2 (provare 0 che con 2 mi si blocca)
browser.urlbar.maxRichResults = (max results, put between 2-5)
browser.urlbar.search.timeout = (search timeout, put something lower than 100, depending on ur needs)
Motori di ricerca da impostare
  • wikipedia en, it
  • wordreference en-it
  • de mauro paravia
  • virgilio sinonimi & contrari
  • wordnet
  • acronymfinder