25 dicembre 2009

16 dicembre 2009

IronPython 2.6, Ovvero Python for .NET

Per quanti volessero "giocherellare" con Python su piattaforma .NET, ma non solo. Con IronPython e possibile anche gestire applicazioni Silverlight tramite browser e server ASP.NET.

Il giorno 11/12/2009 è stata rilasciata la release 2.6(stable)di IronPython, che sfrutta le migliorie apportate dalla versione(CPython) 2.6 del linguaggio standard .

Voglio ricordarvi, che IronPython(creato da Jim Hugunin), è pienamente compatibile anche su piattaforma Gnu/Linux, e browser Firefox tramite il lavoro svolto da Miguel Icaza, denominato Mono, e Moonlight.

Non mi resta che augurarvi(agli interessati) buon divertimento.

15 dicembre 2009

Il Mio Regalo di Natale per "Domare" Windows7

Nolente o dolente, negli ultimi tempi, tra parentela, amici, e conoscenti vari, sto "sbattendo" il muso sempre di più su sistemi che al loro interno montano una versione di Windows.

Quindi è cosi che ho deciso di auto-regalarmi due testi, che possano tornarmi utili anche per il mio mostriciattolo preso di recente, e equipaggiato con Windows 7 professional.

Windows Internals e Windows 7 Resource Kit, tanto per passare un po di tempo in queste notti di Natale(dove altri preferiscono giocare a carte) che inevitabilmente per forza di cose diventano lunghe e ti forzano a dover restare sveglio.

6 dicembre 2009

Il Computer Alle Dipendenze di Redmont

Ecco, dopo una assenza di un paio di mesi(tra cui, mancanza di tempo, problemi personali di vario genere, e la meditata chiusura del blog stesso)mi ritrovo a scrivere un "piccolo" post su di un argomento, che qualche tempo addietro, fu la causa della mia "curiosità" verso i Computer, e tecnologie interconnesse agli stessi.

Come in passato Win XP, si prese alcune libertà, per altro da me non concesse, tra le quali quelle di installare "alcuni aggiornamenti" da me espressamente rifiutati nelle settimane precedenti. Oggi mi ritrovo a dover "subire", ancora una volta da un mio Computer equipaggiato con un sistema windows, nella versione specifica di Windows 7 professional, una attivazione dello stesso, fuori dalla mia volontà.

Vorrei specificare(per gli scettici) che stando a quanto mi diceva la videata del pannello di controllo, mi restavano ancora 23(VENTI TRE)giorni, per poter decidere, e evidenzio DECIDERE(che a quanto mi risulta ha il significato che a prendere questa decisione sia IO)di poter attivare il prodotto.


ps. Preciso che questo è avvenuto dopo aver visitato il sito www.microsoft.com/genuine.
E per i più curiosi, il SO e detenuto da me, con regolare licenza d'uso.

Credo che questo ci debba fare riflettere attentamente, su quali sistemi dovremmo usare quando in rete vorremmo veramente avere un computer che sia alle nostre dipendenze, e non alle dipendenze di chi produce il software.

14 settembre 2009

11 Capitoli in PDF dal Libro Sviluppare Applicazioni WEB con Django, Fornite da Apogeo Gratuitamente su Stacktrace.it


Con il Permesso di Apogeo ben 11 capitoli in Pdf del libro di Marco Beri, Sviluppare Applicazioni Web con Django. Il tutto scaricabile dal sito Stacktrace.it e udite udite GRATUITAMENTE.

Gli 11 capitoli messi a disposizione vanno a formare un tutorials completo non resta che scaricarvelo e sperimentare.

13 settembre 2009

Evidenziare Delle Righe di Testo Tramite la pseudo-classe :target

L'attributo :target lo si usa specificatamente come attributo per l'apertura di un link, ad esempio in una nuova finestra. Noi oggi lo useremo per evidenziare delle semplici righe di testo.

Creiamo il codice html con un menu orizzontale e poi creiamo una serie di paragrafi <p> </p>che identificheremo ognuno singolarmente con il proprio id di appartenenza in questo modo:

<body> <p><a href="#cavallo">Orazio</a> | <a href="#cane">Pluto</a> | <a href="#gatto">Silvestro</a>| <a href="#topo">Topolino</a>| <a href="#papero">Paperino</a></p> <p id="cavallo">Io sono un Cavallo</p> <p id="cane">Io sono un Cane</p> <p id="gatto">Io sono un Gatto </p> <p id="topo">Io sono un Topo </p> <p id="papero">Io sono un Papero </p> </body>

poi andiamo a creare la regola CSS che ci permetterà di riconoscere l'animale tramite il click dato dal puntatore sul nome del menu orizzontale, naturalmente il CSS va inserito tra i tag <head> e </head> del documento html.

<style type="text/css">
:target {
background: lime;

}

</style>

facendo click sul nome Silvestro il risultato e quello che vedete nell'immagine qui sotto.

11 settembre 2009

Un Layout con il Body Centrato

Come creare un layout a una colonna centrata con dei semplici paragrafi e alcune regole CSS.

Ecco come procedere, inseriamo una serie di paragrafi <p> e </p> tanti quanti ne abbiamo bisogno per contenere i brani di testo che andranno a formare il nostro documento web. Io ho inserito anche un titolo di primo livello <h1> </h1>, ma nulla ci vieta di avere altre opzioni del tipo titoli di secondo livello <h2> </h2> inserimento di classi o altro. Un esempio specifico potrebbe essere quello di inserire una classe che ci permette di abbellire per ogni inizio di paragrafo una first-letter con una immagine o un font particolare. Ma questo lo lascio decidere alla vostra inventiva.

Questo e l' esempio abbreviato dei nostri paragrafi


<h1>Colonna Centrata</h1>

<p> Hypertext Transfer Protocol -- HTTP/1.1Status of this Memo...</p>

<p>Transferred as the payload of a request orresponse...</p>

<p>Scannot be used by a server that is acting as a tunnel...</p>

<p> A server that is acting as a tunnel...</p>

<p>HTTP cachable response is allowed ...</p>


Qui le nostre regole CSS:

Inserite per lo sfondo della pagina il colore nero


html { background: #000000; }

Mentre per il corpo del documento, io ho inserito uno sfondo bianco, evidenziato da un bordo di 4pixel tratteggiato(dashed) grigio che da un effetto trasparenza del tipo PNG(a scacchiera)che fa tanto moda nei tutorials con photoshop, il padding di 40 pixel e i margini sinistro e destro impostati ad auto in modo che si adattino alla finestra del browser. Mentre la larghezza a 40 em se questo serve a non fare collassare il vostro layout, potete "mischiare" sia pixel che em.

Ecco il CSS restante per il body

body {
background: #ffffff;
border: 4px dashed silver;
padding: 40px;
margin-left: auto;
margin-right: auto;
width: 40em;
}

E questa e la cattura della schermata per mostrarvi il lavoro finale

Riflessione su Linguaggio per il Web

Dopo le meritate ferie rieccomi a scrivere su Other to Think.

Nel diverso tempo libero avuto in quest' ultimo periodo, ho cercato di capire quale linguaggio di tipo Open Source(quale altri se no)sia il più indicato per lavori sul web.

Vi anticipo che per forza di cose, non necessariamente il linguaggio ritenuto "migliore di altri" sia la scelta migliore(conclusione personale) per un determinato ambito, nel caso specifico il web.

Nonostante PYTHON e RUBY, sono linguaggi nettamente migliori del PHP e altrettanto innegabile che per lavori web, PHP, ad oggi rimane la scelta migliore per vari motivi che adesso andiamo ad approfondire. Con PHP diventa molto facile trovare hosting e cosa di non poco conto l' economicità dei prezzi di hosting, se non quando addirittura del tutto gratuiti.

Stessa cosa non si può dire della controparte, che sia PYTHON, o RUBY che oltre tutto sono sia più cari i prezzi di hosting che molto più rari da trovare(almeno nel mercato informatico italiano ). A peggiorare la situazione c'è anche il fatto che applicazioni web PYTHON/RUBY necessitino anche di accesso tramite shell, se non quando addirittura di una macchina dedicata per poter gestire l' applicazione web.

Ritornando sul versante PHP e tralasciando quella brutta carogna di ripetizioni a raffica di $ e <? ?> mischiato nell' html, quello che ne rimane è quanto di meglio uno sviluppatore web possa aspettarsi di trovare. A maggiore ragione se abbiamo avuto la sfortuna di nascere nel Paese di Dante, e non capire l'inglese, vedi tutorials, guide varie, e siti che parlano di PHP in lingua italiana, confrontateli con guide pythoniche e rubyste, e capirete.

E come non tenere conto dei vari CMS alla Wordpress, che permettono di gestire il proprio sito web anche a chi del web non sia necessariamente un guru della programmazione, il tutto si riduce a copiare la directory nel posto giusto, e al più a qualche piccolo ritocco, e se volessimo osare un pochino di più come potremmo non menzionare i famosi WAMP, MAMP o XAMP che con pochi click ci offrono chiavi in mano tutto l' occorente, con comodissime interfacce grafiche del tipo PhpAdmin dove possiamo amministrare web server comprensivo di database.

Ad essere onesto anche le controparti PYTHON/RUBY hanno iniziato con Django e Rails, a fornire qualcosa del tipo "tutto compreso chiavi in mano" che trovate qui, ma con differenze sostanziali che fanno pendere l'ago della bilancia dalla parte dell'ambiente PHP.

E questo e tutto, opinabile tra l' altro in quanto frutto di una mia personalissima riflessione.

9 agosto 2009

document.writeln(" Buone Vacanze ");

Other to Think vi augura Vacanze geek.

A presto ;-])

Come Servire Il Mime-Type Xhtml

Ultimamente, molte discussioni accese stanno avendo luogo sui blog, la questione: Xhtml vs html5. E ad essere sincero, niente mi fa pensare che nei mesi a venire la diatriba si raffreddi, è con essa gli animi dei sostenitori e dei detrattori dell'uno o dell'altro tipo di linguaggio di markup.

Una delle maggiori critiche che viene mossa a xhtml, e quella del MIME-TYPE non riconosciuto da parte dei browser. Vale a dire text/html invece di xhtml+xml.

Quindi proporrei(html5 è ancora allo stato embrionale)per quanti vorrebbero usare un MIME-TYPE in puro xhtml/xml, e mi riferisco a xhtml1.0 di adottare le seguenti modalità.

Inserire per quanti sono soliti usare il web server Apache, le direttive appena sotto nel file .htaccess


AddType application/xhtml+xml xhtml


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} (text/html|\*/\*)
RewriteCond %{REQUEST_FILENAME} .*\.xhtml
RewriteRule ^.*$ - "[T=text/html,L]"

Se malauguratamente non aveste la possibilità(compresi i permessi necessari) di mettere le mani direttamente sul server, si può sempre risolvere il problema del mancato riconoscimento del MIME-TYPE con uno dei tanti linguaggi di scripting, nel nostro caso PHP.

<?php if (strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml'))
{
header('Content-type: application/xhtml+xml; charset=UTF-8');
} else {
header('Content-type: text/html; charset=UTF-8');
}
?>


In attesa che con le meritate ferie si plachino gli animi vi auguro BUONE VACANZE.

16 luglio 2009

Aprire un File Binario con Vim

Tante di quelle volte si perde un sacco di tempo nella ricerca di una utility o programma che sia per poi scoprire che quello che cerchiamo risiede già sui nostri hard disk.

Ecco un esempio di come usare Vim o Gvim a editor esadecimale. Questo vale sia per sistemi windows che di tipo unix.

Da Linux apriamo la shell e lanciamo vim con il nome del file-binario da leggere come da esempio:


vim -b nome_file_binario ( Esc : e %!xxd ) che apre il file in modo esadecimale.

Per riportare vim al modo editor di testo ( Esc : %!xxd -r ).
Il tutto va digitato senza parentesi.

Mentre su Windows tutto questo è ancora più facile.


Apriamo Gvim Strumenti -> converti in esadecimale, e per ritornare al default Strumenti -> converti da esadecimale.

Firefox 3.5 una Release Nata Zoppa

Appena passato da Firefox 3.0.11 a Firefox 3.5 su win, t'aspetti delle migliorie e invece cosa ti ritrovi?

Un bel alert su Mozilla Security di un bug a pericolosità elevata, e sfruttabile remotamente. Una dimostrazione di come si possa sfruttare tale bug su Milworm con annesso codice d'esempio.

Tra le possibili soluzioni(un passo avanti, e uno indietro)disabilitare Tracemonkey è ritornare al vecchio interprete javascript di Firefox 3.0.11.

Se intendete intraprendere il passo appena citato aprite firefox nella barra degli indirizzi digitate about:config scorrete le voci sino alla stringa javascript.options.jit.content, fate un bel doppio click è impostate il valore a false. Ricordatevi che questa è una "pezza" temporanea in attesa dell'uscita di Firefox 3.5.0.1, dove si stà già lavorando.

Tra l' altro, ho notato in fase di avvio, un raddoppio(molto seccante) del tempo di esecuzione se messo a confronto con la precedente release 3.0.11, spero sia solo una pecca di gioventù prossima a essere risolta.

3 luglio 2009

XHTML e Morto! Viva le Zuppe di Codice

XHTML2 non ha nessun futuro!
Con buona pace di chi negli ultimi anni, ha cercato di rendere il web un posto migliore per tutti.

Amen!

Le Applicazioni MONO sono Davvero Indispensabili?

Ormai e cosa indubbia che le applicazioni scritte in C# anche se mediante la sua implementazione libera MONO, con il tempo possa diventare una spina nel fianco della comunità FLOSS, non tanto per il linguaggio stesso che e stato Standardizato da enti come l' ECMA, ma da software di terze parti o da componenti non standardizzati di proprietà della Microsoft. La stessa Microsoft garantisce di non denunciare solo Novell e i suoi utenti con un accordo stipulato(e criticato da molte parti) con Novell che e la principale sponsorizzatrice del progetto MONO.

Sul tema recentemente si e espresso(negativamente) il fondatore della FREE SOFTWARE FUNDATION, Richard Stallman con un post sul blog della stessa FSF, mettendo in guardia da MONO tutti i principali attori del software libero riguardo a problemi che applicazioni in C# potrebbero portare per via dei brevetti di proprietà della Microsoft, che ogni tanto non manca di rivendicare(senza fornire prove evidenti)di presunte violazioni dei suoi brevetti da parte del kernel Linux.

Chi segue anche del tutto sporadicamente il planet GNOME non può non aver notato l'inasprmento delle discussioni sul tema MONO e in modo specifico su due applicazioni Banshee, e Tomboy, il primo un player musicale e il secondo una applicazione per tenere traccia di note personali.

Mi chiedo come sia possibile che una "manciata" di programmi che in fin dei conti non sono altro che"copie" di applicazioni che nel mondo FLOSS abbondano e senza stare a fare il PRI- PRO- QUO del se sono migliori o peggiori, possano dividere la comunità e gli sviluppatori del FREE SOFTWARE.

Essendo un utente Gnome,non ho mai avuto l'esigenza di usare i sopra citati programmi e a ragion veduta me né terrò a debita distanza. Ma quello che veramente non riesco a capire, è il motivo che spinge gli sviluppatori Gnome a dover obbligatoriamente inserire Banshee, Tomboy e magari anche Gnome-Do, che porterebbe per forza di cose all ' inserimento dell' ambiente Mono nelle macchine degli utenti, che magari con Mono non vogliono niente avere a che fare.

Quello che in questa vicenda mi rattrista più di tutto(mettendo da parte Ubuntu), e che distribuzioni come Debian, che hanno sempre delineato un punto fermo tra il software libero, e quello che comunque non rispecchia a pieno lo standard libero non possono(per quale motivo poi?) non fare a meno di un software come Tomboy, che Fedora ha deciso di sostituire con Gnote. Evidentemente visto che Novell e una delle maggiori sponsorizzatrici di Gnome, e il capo sviluppatore di Mono, e quel Miguel Icaza che è stato lo sviluppatore di Gnome stesso be.. qualche forzatura ad includere Mono in Gnome evidentemente cè.

Che sia arrivato il momento di iniziare a provare il KDE4, che tra l'altro e un progetto di taglio più europeo, o addirittura di iniziare la cernita di qualche altra distribuzione? Certamente Fedora, Mandriva, o la Slackware male non sono.

1 luglio 2009

I Dieci Motivi Ironici(ma non troppo)per cui Linux non sarà mai sui Desktop degli Utenti Medi di PC

Visto l' interesse e le discussioni di riviste di settore, forum, usenet, blog, e di appassionati del genere, su quale possa essere l'anno in cui Linux rosicchi grandi fette di utenze Desktop al sistema a finestre, ho deciso di stilare una mia personale lista dei dieci motivi per cui Linux non occuperà mai i Desktop sui pc degli utente medio di computer a discapito di Windows.


Questa e una brevissima lista(IMHO)dei primi dieci motivi per cui Linux non prenderà mai piede sui Desktop dell'utente medio di Computer.

1) All'utente medio di pc non interessa un cavolo capire come funzionano i computer e la tecnologia in generale, basta che funzioni.


2) Il Pc ideale per l'utente medio dovrebbe fare tutto quello che l'utente richiede possibilmente con un solo click. Figuriamoci se mettersi a smanettare su di un terminale astrusi comandi.


3) Alle masse di utenti di pc interessano soltanto quattro tipi di file che sono i seguenti: MP3, Video, foto pornografiche, e virus. Anche se di quest' ultimi farebbero molto volentieri a meno.


4) Perché dovrebbe interessare loro un' altro sistema gratuito e libero? Se già tutto il software che usano, sistema operativo compreso sono già aggratis?'


5) Tutti gli applicativi più "fighi" che conoscono sono per windows, quindi perché provare un altro sistema operativo? E poi quello che manca su windows l'ho fornisce direttamente Linux con le versioni windows dei sui migliori software.


6) E stata già una faticaccia imparare a dover fare copia e incolla, figuriamoci adesso se mettersi ad studiare concetti del tutto nuovi.


7) Quando un utente medio di pc ha dei problemi, trova sempre un amico a portata di mano che gli risolve il problema, ma con Linux dove lo trova un amico che glielo risolva?


8) Su Linux c'è il problema delle periferiche che non funzionano, mentre su Windows funzionano perfettamente anche se alla fine quelle stesse periferiche non vengono mai usate.


9) Una delle mancanze più sentite di Linux è quella della scarsa documentazione, mentre su di una qualunque versione di Windows la documentazione la trovi sempre e in abbondanza. Peccato che tutto questo sia uno spreco visto che la documentazione non la legge mai nessuno.


10) Con l'attuale governo in carica, usando Linux si verrebbe accusati di essere comunisti, se così fosse, poi come fanno a leccare il culo alla Microsoft, e a Berlusconi?


ps. per quanti prendessero seriamente o a male uno qualsiasi di questi motivi, il mio consiglio e quello di patentarsi. Così quando avrete delle difficoltà con i computer potrete ammonirli con la patente.

21 giugno 2009

netstat: Statistiche di Connessioni e Routing

Come Linux, anche Windows comprende comandi per avere informazioni e statistiche sulle connessioni in uso dal sistema, nello specifico analizziamo netstat.

Netstat e un comando per analizzare il protocollo usato nelle connessioni tra il nostro sistema(pc) e sistemi remoti che dialogano tramite determinate porte con il nostro sistema.

Per poter usare il comando netstat, basta aprire il prompt dei comandi situato in start -> tutti i programmi -> accessori -> prompt dei comandi. Una volta aperto il prompt dei comandi si può digitare netstat con una serie di opzioni che forniscono output differenti a secondo della opzione scelta.

Vediamo in che modo possiamo usare netstat.

Digitanto al prompt solo netstat, senza opzioni avremo la statistica che riguarda la sola connessione corrente, mentre con uno dei seguenti switch netstat [-a] [-e] [-n] [-o] [-s] [-p proto] [-r], che potremo associare anche in modo multiplo, avremo una statistica molto più esaustiva e dettagliata.

netstat -? e il comando di aiuto che ci fornisce tutti gli switch(opzioni)disponibili e il loro significato d'utilizzo che analizziamo sotto.

-a serve per visualizzare le porte in ascolto sul nostro Pc

-e serve per le statistiche sulla nostra connessione Ethernet

-n serve per visualizzare le porte sul nostro Pc in una forma numerica

-o serve per visualizzare l'id associato al processo che sta usando la connessione

-p serve per visualizzare le connessioni del protocollo chiamato proto che ha come valori TCP, UDP, Ipv6, ICMP, ecc,

-s e una opzione che può essere associata alle opzioni '-e' e '-p', per una visualizzazione più estesa e completa della statistica

-r serve per visualizzare l' instradamento del routing(tabella di routing)


Ecco un esempio di switch multiplo [-a n o ] sulla mia macchina xp, e il relativo output:

protocollo, porte in uso, stato, e il pid usato.

Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\@rchieCreative>netstat -ano

Connessioni attive

Proto Indirizzo locale Indirizzo esterno Stato PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1024
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 79.43.34.55:1590 80.65.228.130:80 TIME_WAIT 0
TCP 79.43.34.55:1598 80.65.228.130:80 TIME_WAIT 0
TCP 79.43.34.55:1601 80.65.228.130:80 TIME_WAIT 0
TCP 127.0.0.1:1042 127.0.0.1:1041 TIME_WAIT 0
TCP 192.168.1.2:139 0.0.0.0:0 LISTENING 4
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 780
UDP 0.0.0.0:1026 *:* 1236
UDP 0.0.0.0:1050 *:* 1236
UDP 0.0.0.0:1053 *:* 1236
UDP 0.0.0.0:1054 *:* 1236
UDP 0.0.0.0:1060 *:* 1236
UDP 0.0.0.0:4500 *:* 780
UDP 79.43.34.55:123 *:* 1120
UDP 127.0.0.1:123 *:* 1120
UDP 127.0.0.1:1900 *:* 1352
UDP 192.168.1.2:123 *:* 1120
UDP 192.168.1.2:137 *:* 4
UDP 192.168.1.2:138 *:* 4
UDP 192.168.1.2:1900 *:* 1352




E adesso per concludere questa breve guida, vedremo come tramite una delle nostre tante incursioni sul web, il nostro computer "dialoga" in modo a noi completamente invisibile con il resto del mondo.

stato di una porta significato

CLOSE WAIT porta che chiude la connessione

CLOSED porta non in uso (chiusa)

CLOSING entrambe le porte stanno chiudendo
(trasmissione dati non finita)

ESTABLISHED connessione in corso

FIN WAIT 1 porta chiusa (connessione in conclusione)

FIN WAIT 2 porta chiusa (porta computer remoto in attesa)

LAST ACK porta chiusa (computer remoto in attesa di conferma)

LISTENING porta in attesa (ascolto connessioni in arrivo)

SYN RECV inizio connessione in corso

SYN SEND tentativo di instaurare connessione in corso

TIME WAIT in attesa di conferma (conclusione della connessione)

UNKNOWN stato della porta sconosciuto

con questo e tutto. Se avete intenzione di approfondire l'argomento, non vi resta che dare un' occhiata al TCP-ip(si pronuncia TCP-AI) e al mondo del networking in generale.

7 giugno 2009

e/mails Usa e Getta Contro lo Spam

Credo che vi sia già capitato che iscrivendovi ad una mailing list, sito o altro servizio web in generale, tempo una mezza giornata, e vi siete ritrovati con la vostra casella di posta stracolma di ogni schifezza possibile, dalle e/mail pubblicitarie allo spam vero e proprio del tipo: Natural Penis Enlargment Guide o vere e proprie catene di sant' Antonio.

Beh.. da oggi(se non sapevate dell'esistenza di questi servizi)potrete fare le vostre iscrizioni un po' più a cuor leggero, specie se il sito in questione vi crea dubbi.

La lista dei servizi di mail usa-e-getta è sicuramente più lunga di questa propostovi qui, ma vi posso garantire che i servizi in questa lista sono tra i più efficienti e sicuri di tutto l'intero web.


usate queste mail per tutto quello che volete, solo cosi potrete garantirvi di mantenere la spazzatura lontana dal vostro account principale.

1 maggio 2009

Controllo del Sistema Tramite Shell

Per quanti siano convinti che il monitoraggio di una linux box passi "esclusivamente" dal monitor di sistema, o da una delle tante utility grafiche che "passano" come output grafico accattivanti e coloratissime schermate, beh.., sappiate che i sistemi di tipo unix, hanno sempre avuto (dai tempi dei terminali a soli caratteri)le loro efficenti utility per monitorare il sistema.

Tra queste di utility cè free per visualizzare la memoria usata e quella rimanente libera.
Potete scegliere di usare con il comando free una serie di switch nel modo in cui intendete visualizzare l'unità della memoria.

Ecco alcuni esempi

free -b per visualizzare la memoria dettagliata in byte singolo
free -m per visualizzare la memoria dettagliata in megabyte
se intendete tenere(in tempo reale) costantemente sotto controllo l'uso della memoria cè lo switch -s, che può essere usato anche con uno dei precedenti switch in questo modo free -m -s2. Vale a dire visualizza dettagli della memoria in megabyte ogni 2 secondi.

archie@geek:~$ free
total used free shared buffers cached
Mem: 638520 282680 355840 0 14948 134296
-/+ buffers/cache: 133436 505084
Swap: 2240984 0 2240984


df per lo spazio libero su disco, il comando df, può essere usato(anche) su vari tipi di file system in coppia con il comando mount.

Esempio.

archie@geek:~$ df
File System blocchi di 1k Usati Dispon. Uso% Montato su
/dev/sda1 41231344 2779736 36357136 8% /
tmpfs 319260 0 319260 0% /lib/init/rw
varrun 319260 96 319164 1% /var/run
varlock 319260 0 319260 0% /var/lock
udev 319260 164 319096 1% /dev
tmpfs 319260 1200 318060 1% /dev/shm
lrm 319260 2392 316868 1% /lib/modules/2.6.28-11-generic/volatile
/dev/sda6 36337352 186572 34304916 1% /home



du per lo spazio occupato da directory e files sul disco. Il comando du a molte opzioni quindi vi consiglio di dare un bel man du per approfondimenti.

Esempio.

archie@geek:~$ du
88 ./.gconfd
0 ./.gvfs
4 ./Musica
8 ./.idlerc
20 ./.cache
4 ./Documenti
12 ./.fontconfig
8 ./.config/gtk-2.0
4 ./.config/gnome-session/saved-session
8 ./.config/gnome-session
28 ./.config
4 ./Pubblici
8 ./.gconf/desktop/gnome/accessibility/keyboard
12 ./.gconf/desktop/gnome/accessibility
8 ./.gconf/desktop/gnome/applications/window_manager
12 ./.gconf/desktop/gnome/applications
8 ./.gconf/desktop/gnome/background

[output tagliato per abbreviare]


ulimit per limitare tutta una serie di eventi(dai core dumb, alla grandezza dei files) su files e componenti del sistema, qui e usato con lo switch -a

Esempio.

archie@geek:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signal (-i) 5120
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes,-s) 8192
cpu time (seconds,-t) unlimited
max user processes (-u) 5120
virtual memory (kbytes,-v) unlimited
file locks (-x) unlimited


vmstat per visualizzare una istantanea del sistema, dalla memoria virtuale, alla swap, alla cpu, sino al carico di sistema.

Esempio.

archie@geek:~$ vmstat
procs -----------memory------------ ---swap-- -------io------ -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 0 352980 15496 135004 0 0 16 1 261 90 2 2 95 0



top per visualizzare e controllare i processi sul sistema. Visto che i comandi per controllare i "processi interni" a top sono parecchi e con scopi differenti tra loro, eccovi uno screenshots di top, e vi rimando alla solita man page(man top).

archie@geek:~$ top















pstree utility per vedere tramite una comoda visualizzazione ad albero, i processi che a loro volta avviano altri sottoprocessi, con il loro ordine di avvio.

Esempio.

archie@geek:~$ pstree
init─┬─NetworkManager
├─anacron───sh───run-parts───apt───sleep
├─atd
├─avahi-daemon───avahi-daemon
├─bluetoothd


├─bonobo-activati───{bonobo-activati}
├─console-kit-dae───63*[{console-kit-dae}]
├─cron
├─cupsd
├─2*[dbus-daemon]
├─dbus-launch


├─dd
├─fast-user-switc
├─gconfd-2
├─gdm───gdm─┬─Xorg
│ └─x-session-manag─┬─bluetooth-apple


├─evolution-alarm───{evolution-alarm}
│ ├─gnome-panel
│ ├─metacity


├─nautilus
│ ├─nm-applet
│ ├─python


├─seahorse-agent
│ ├─ssh-agent
│ ├─update-notifier


└─{x-session-manag}
├─6*[getty]
├─gnome-keyring-d
├─gnome-power-man
├─gnome-screensav
├─gnome-settings-───{gnome-settings-}


├─gnome-terminal─┬─bash───top
│ ├─bash───pstree
│ ├─gnome-pty-helpe
│ └─{gnome-terminal}


├─gvfs-fuse-daemo───3*[{gvfs-fuse-daemo}]
├─gvfs-gphoto2-vo
├─gvfs-hal-volume
├─gvfsd
├─gvfsd-burn
├─gvfsd-trash


├─hald───hald-runner─┬─hald-addon-inpu
│ └─hald-addon-stor
├─indicator-apple
├─klogd


├─mixer_applet2───{mixer_applet2}
├─multiload-apple
├─nm-system-setti
├─notify-osd
├─pulseaudio─┬─gconf-helper


└─2*[{pulseaudio}]
├─syslogd
├─system-tools-ba
├─trashapplet
├─udevd
└─wpa_supplicant



ps che mostra i programmi in esecuzione con il loro relativo pid. Il comando ps ha molte opzioni utili che potete usare sia singolarmente che in modo concatenato. Per approfondire cè il solito man ps che ci chiarira tutto.

Esempio.

archie@geek:~$ ps
PID TTY TIME CMD
3091 pts/0 00:00:00 bash
7510 pts/0 00:00:00: ps



uptime mostra da quanto tempo una macchina e in funzione, e quanti utenti la stanno usando.

Esempio.

archie@geek:~$ uptime
01:21:32 up 2:44, 2 users, load average: 0.29, 0.18, 0.06


w e simile a uptime, ma ci offre tutta una serie di dettagli in più su che applicazioni stanno usando gli utenti, da quando sono loggati, sino all'uso che stanno facendo della cpu.

Esempio.

archie@geek:~$ w
01:21:32 up 2:44, 2 users, load average: 0.26, 0.17, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
archie tty? :0 22:41 2:44m 1:05 1.00s x-session-manager
archie pts/0 :0.0 22:49 0.00s 0.76s 0.03s w

23 aprile 2009

PIL Immagini con Python

PIL e una libreria Python che permette di elaborare, e nello stesso tempo creare immagini in molteplici formati tra cui GIF, JPEG, BMP, PNG, PBM, TIFF, RGB, PGM, RAST e molti altri, per una lista completa vi rimando al sito www.pythonware.com, e alla relativa documentazione.

PIL e scritta da Fredrik Lundh, l'autore del libro "The Standard Python Library", e molte altre librerie scritte in python scaricabili dal sito effbot.org.

Ecco due piccoli(e semplici) esempi di PIL con il suo modulo Image.



Crea una immagine

>>> from PIL import Image, ImageDraw
#crea una nuova immagine 400x400 pixel di colore nero
>>> crea_immagine = Image.new('RGB',(400,400),(0,0,0))
>>> draw = ImageDraw.Draw(crea_immagine)
#crea una linea di colore
>>> draw.line((80,60,190,90), fill = (0,255,0))
#scrive il testo di colore bianco
>>> draw.text((100,180), 'PIL is Magic!', (255,255,255))
#scrive una linea di colore
>>> draw.line((200,200,40,240), fill = (255,0,0))
>>> crea_immagine.show()#.show visualizza l'immagine
#.save() per salvarla
>>> crea_immagine.save('my_canvas.jpg')
>>>


Elaborazione Immagine con PIL tramite il modulo principale Image.
Questa sotto è l'immagine "labs.png" originaria prima dell'elaborazione con la libreria PIL.




















>>> import Image
#apro l'immagine da elaborare
>>> immagine = Image.open('labs.png')
#visualizza l'immagine
>>> immagine.show()
#converte l'immagine
>>> immagine.convert('1').show()
#salva l'immagine in formato .gif
>>> immagine.save("labs_elaborata_con_PIL.gif")
>>>




Questa invece è l'immagine "labs_elaborata_con_PIL.gif" dopo averla aperta e eleborata col modulo Image.





















Questi naturalmente, sono piccoli esempi che non rendono giustizia, della potenza reale di PIL, e del modulo Image. Per quanti volessero approfondire la libreria PIL, al suo interno ha molti altri moduli molto utili e potenti al pari del modulo Image.

19 aprile 2009

PYTHON Funzioni Annidate

Annidare le funzioni(le def) nelle ultime versioni di python e del tutto normale. Semplicemente le def sono codice eseguibile a tutti gli effetti, ma nelle "vecchie" versioni non era affatto cosi.

La def delle versioni recenti.

>>> def func():
... scope_func = 'marameoo'
""" una funzione e del codice eseguibile
a tutti gli effetti"""
... def func_annidata():
... print 'tu sei un ..', scope_func
... return func_annidata
...
>>> chiamata = func()
>>> chiamata() # esegue la def annidata
tu sei un .. marameoo
>>>


Questo codice che nelle versioni 2.4, 2.5, 2.6 di Python funziona a meraviglia, ma se lo provate in una versione precedente a quelle appena elencate vedrete che produce degli errori.

Per ottenere del codice che funziona in qualsiasi versione di python ha bisogno che la def annidata referenzi il valore passato dalla def precedente.

Vediamo un esempio.

>>> def func():
... scope_func = 'marameoo'
... # Referenza
... def func_annidata(scope_func = scope_func):
... print 'tu sei un ..', scope_func
... func_annidata()
...
>>> func() # chiamata alla funzione
tu sei un .. marameoo
>>>

Perle Della Bash[19-04]

Questo comando trova tutti i file nascosti(quelli col dot .)nella vostra /home/directory e li manda in output.
:~$ grep -l 'PATH' ~/.[!.]*


cerca nella home dell'utente tutti i file mediante l'estensione passatagli(in questo caso file musicali '.mp3'), e se sono molti 'less' permette di leggerli pagina dopo pagina nella schermata della shell.
:~$ find /home/archie -name *.mp3 | xargs pink floyd | less



rimuove linee bianche in un file e le visualizza tramite lo stream di sed.
:~$ cat my_file | sed /^$/d



cerca e rimuove file con estensione '.rb' tramite una pipe con rm
:~$ find . -name '*.rb' | rm



cerca con find file di testo dal nome sia in minuscole che con le maiuscole
:~$ find . -name '*.txt [Ff][Ll][Vv]' -print

E Stata Dura ma Siamo Nuovamente on-line

Ragazzi anche se non ve nè può fregar de meno, siamo nuovamente operativi!

Devo ammettere, che trovare una piastra madre per il mio 'povero' PentiumIII, non è stata una passeggiata, ma alla fine ci sono riuscito. E oltre tutto, ne ho approfittato per dare anche una bella rinfrescata alla macchina in generale(si è anzianotta).

Ho aggiunto 128mb di RAM in più. Ora siamo alla "megagalattica" quantità di 620mb, e giacché che c'ero, ho pensato bene di aggiungere un "mega" hard disk da 20 giga, dove risiede già una fiammante Debian Lenny.

Ecco alcuni screenshots

Il Potente Processor ;-)

















E la rivitalizzante Ram ;-)
















Che dire, mah, non saprei. Sicuramente dopo la sosta forzata, possiamo riprendere a scrivere sul blog.

24 marzo 2009

Un Semplice Test in Python

Un semplice test in Python. Il pezzo di codice da testare va inserito tra le variabili start e end.
Il tempo puo essere impostato a vostra discrezione, in base alla porzione di codice da voi desiderato.

>>> def test_speed():
... import time
... start = time.time()
... def main():
... print 'Bullett....'
... main()
... end = time.time() - start
... assert end < 10, \
... "spiacente il codice supera i 10 secondi!"
...
>>> test_speed()
Bullett....
>>>

23 marzo 2009

Nuova Release Dello Gnomo








Buon Divertimento.

Proprietà CSS per Elaborare il Testo

Il testo, in una pagina web, e l'elemento che determina più di ogni altro componente, la bellezza e la particolarità(tra cui la leggibilità in primis)della stessa.

I Cascading Style Sheets, hanno introdotto proprietà per il tag font dalle potenzialità molto vicine a quelli della carta stampata. Ecco cosa possiamo ottenere con le sole proprietà letter-spacing, e vertical-align, su di un semplice font della famiglia sans-serif.

Il corpo del documento(body) e impostato con una grandezza del font a 1.2em, una famiglia di font sans-serif, e la spaziatura(letter-spacing) tra le lettere a normale. Mentre h1, ha un valore di spaziatura tra le lettere, negativo di -5px, il secondo h2 ha un valore di spaziatura di 1.25em.

Sub e sup(subscript, e superscript), sub viene allineato verticalmente in modo negativo al -100%, mentre sup in modo verticale al 100% della possibilità. Chiudono le due classi impostate cosi, .prima-classe con una spaziatura tra le lettere di 3pixel, e .seconda-classe con una spaziatura a normale(normal;).


Questo e l'esempio completo del markup e del Css.

<html>

<head>

<title>letter-spacing, vertical-align</title>

<style type="text/css">

body {

font-size: 1.2em;
font-family: arial, helvetica, sans-serif;
letter-spacing: normal;
}

h1 {

letter-spacing: -5px;
}

h2 {

letter-spacing: 1.25em;
}

sub {

vertical-align: -100%;
}

sup {

vertical-align: 100%;
}

.prima-classe {

letter-spacing: 3px;
}

.seconda-classe {

letter-spacing: normal;
}


</style>

</head>

<body>

<div id="contenitore">

<h1> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</h1>

<p class="prima-classe"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>

<h2> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</h2>

<h3>Lorem ipsum dolor <sup>sit amet,</sup> consectetuer <sub>adipiscing elit.</sub><br />

<span class="seconda-classe"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</span></h3>
</div>

</body>
</html>



Layout Centrato

Una semplice pagina resa impostando #container con i margini superiore e inferiore a 0, e il margine sinistro e destro su auto. La larghezza width impostata a 500px, e un blockquote come sopra impostato opx margine superiore e inferiore, e margine sinistro e destro a 100px.

Per quanti non sapessero come funzionano i margini, semplicemente si segue il senso orario, vale a dire: margine-superiore, margine-destro, margine-inferiore, e margine-sinistro.

Vediamo il markup html.

<html>

<body>


<div id="container">

<h1>A Title</h1>

<h2>A Sub Title</h2>

<p>Tristique quis, convallis ac, tempor eu, nisl. Morbi mauris.
a that will live on through the generations.</p>

<blockquote>

<p>"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi interdum nisi vitae neque."</p>

</blockquote>


<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit...</p>

<p>Nunc interdum. Nam eros urna, tristique quis,...</p>

<p>Praesent dictum, risus id feugiat dapibus,...</p>

</div>

</body>

</html>


E le regole Css.


<head>

<style type="text/css">
body {
font: 62.5%/1.5 verdana, arial, helvetica, sans-serif;
color: #000000;
background: #ffffff;
padding: 20px;

}

#container {
font-size: 1.2em;
line-height: 1.5em;
margin: 0 auto;
width: 500px;
}

h1 {
font: 1.5em/1.8em verdana, arial, helvetica, sans-serif;
text-transform: uppercase;
}

h2 {
font:1.2em verdana, arial, helvetica, sans-serif;
text-transform: uppercase;
}

blockquote {
margin: 0 100px;
}

blockquote p {
font-family: "Monotype Corsiva", gautami, serif;
font-size: 1.5em;
}

</style>

</head>
Questo e il risultato finale.