martedì 30 giugno 2009

Punizione WoW :)

Ecco cosa succede a scrivere il nome sbagliato di un videogioco alla persona sbagliata :D
/*wow.s**********************************/
/* punizione wow */
/*****************************************/
.text
.global _start
_start:
.global wow_func



wow_func:
ldr r0, =mem @ carica in r0 l'indirizzo della memoria riservata
ldr r1, =str @ carica in r1 l'indirizzo della stringa
mov r4, r1 @ salva indirizzo iniziale stringa
mov r2, #100 @ carica in r2 il numero 100
loop: ldrb r3, [r1], #1 @carica in r3 il byte meno significativo puntato da r1 e dopo lo incrementa
strb r3, [r0], #1 @ salva in memoria
tst r3, #0xff @ conrolla se è arrivato l'EOS
bne loop @ no, ripete il ciclo
mov r1, r4 @ si, ripristina indirizzo stringa
subs r2, r2, #1 @ decrementa di uno il contatore
bpl loop @ è arrivato a zero?
wow_end: b wow_end @ si, trappola

.data
str: .ascii "World of Warcraft \0"
.bss
.align 4
mem: .space 4096 @ spazio riservato in memoria per le copie
.end
Però è pur sempre divertente :D
In pratica questo programmino stupido in assembly ARM dovrebbe scrivere 101 (la condizione pl sul penultimo branch sta per >=) volte il nome del gioco che io erroneamente, in una mail spedita al "punisher" per invitarlo ad un LAN party, ho scritto con la "O".

Posto lo screenshot del programma in azione nel simulatore della schedina Samsung che abbiamo utilizzato in laboratorio per il corso di Architettura degli Elaboratori.

Bene, concludo il post con una piccola citazione da nonciclopedia su DeathNote, un anime estremamente figo che sto guardando in questi giorni (consigliato da Xiao) e che molti di voi molto probabilmente conosceranno già (ovviamente consiglio, a chi non lo conosce di guardarlo! trovate le puntate con audio -ita- qui).
"Ah, questo mi renderà le cose ancora più facili!"
Light su Facebook

mercoledì 20 maggio 2009

Bash Modding

Ecco un paio di comandi per dare un po' di "vita" al prompt della nostra bash!
Premetto che la cosa è abbastanza inutile ma pur sempre divertente :)

Allora, di solito una volta aperto il vostro terminale vi trovate davanti ad una cosa del genere:
user@hostname:~$
Che ne dite di aggiungere qualcos'altro? tipo...mmm...l' ora!, per essere sempre aggiornati così da averla sempre sott'occhio per arrivare puntuali agli appuntamenti sfruttando fino all'ultimo il tempo a vostra disposizione oppure...la data! così se passate ore e ore a smanettare davanti al pc senza interfaccia grafica fino a perdere la concezione del tempo, almeno sapete che giorno è! :D

Una cosa tipo questa v piacerebbe?
[hh:mm:ss - dd mm gg][user@host:~]$
come? Niente di più semplice!
Quelle informazioni sono contenute nella variabile "PS1", qundi dalla vostra console, potete salvarla o guardarla con i comndi:
pippo=$PS1
e
echo PS1
per modificarla basta scrivere sempre sulla console:
PS1="[\t - \d][\u@\h:\W]\$ "
dove:
\t sta per l'ora
\d data
\u utente
\h host
\W work directory

Ecco si, la cosa forse più utile che ho trovato è proprio l'ultima istruzione. Sarà capitato anche a voi di trovarvi in questa situazione:
agno@AgNO-buntu:~/Documenti/Università/Fondamenti di Informatica 1/Esercitazioni Laboratorio/RicercaBisezione$
ed avere così più righe del terminale occupate dal percorso della vostra cartella di lavoro. Molto più carino e pulito invece è questo:
agno@AgNO-buntu:RicercaBisezione$
ottenuto con un semplice:
agno@AgNO-buntu:~$ PS1="\u@\h:\W\$ "
Sempre che non abbiate paura di non sapere dove siete! In questo caso c'è sempre
pwd
che può aiutarvi! ;)

Una volta finito di trovare la combinazione che più vi si addice, potete rendere permanenti (altrimenti limitate alla sessione corrente) le vostre modifiche modificando il file che trovate nella vostra home:
.bashrc
aggiungendo la seguente stringa:
export PS1="codicivari"
Una lista un po' più completa di possibili opzioni da aggungere:
\a il carattere ASCII beep (07)
\d la data nel formato "Giorno-della-settimana Mese Data" (e.g., "Tue May 26")
\e un carattere di escape ASCII (033)
\h l'hostname fino al primo `.'
\H l'hostname
\n il carattere "newline"
\r il carattere "carriage return"
\s il nome della shell, il nome base di $0 (la parte che segue lo slash finale)
\t l'ora corrente nel formato 24-ore HH:MM:SS
\T l'ora corrente nel formato 12-ore HH:MM:SS
\@ l'ora corrente nel formato 12-ore am/pm
\u lo username dell'utente corrente
\v la versione di bash (e.g., 2.00)
\V la release di bash, versione + patchlevel (e.g., 2.00.0)
\w la directory di lavoro corrente
\W il nome di base della directory di lavoro corrente
\! il numero cronologico (history number) di questo comando
\# il numero di questo comando
\$ se l'UID effettivo è 0, un #, altrimenti un $
\nnn il carattere corrispondente al numero ottale nnn
\\ un backslash
\[ comuncia una sequenza di caratteri non stampabili, che potrebbero essere usati per inserire una sequenza di controllo del terminale nel prompt
\] termina la sequenza di caratteri non stampabili
mentre per i colorare la bash qui!

giovedì 7 maggio 2009

Rai.tv e Linux

Questa sera, come più o meno da 7 mesi a questa parte, mi sono trovato al solito chiuso in camera per evitare il "fumo" e il sottofondo che emanano 5-6 persone che giocano a poker mentre guardano una partita di calcio...e...si, volendo anch'io ogni tanto guardare un po' di tv, ho dovuto arrangiarmi.

Bene, vado nel sito della rai->dirette tv e clicco sul canale che mi interessa. Cosa succede? Scarico il plugin Moonlight come consigliato (già per linux) e...non va! Appare lo schermo youtube-like, ma l'immagine resta ferma...frazzo un po', ma nada.

Allora googlo un po' e trovo questo blog -che ringrazio- che spiega come guardare i canali rai in streaming su VLC saltando così l'inghippo del plugin made in Microsoft :D
mi sono accorto che ho scritto un cosa sbagliata: il "plugin" made in Microsoft è Silverlight, mentre Moonlight è l'implementazione opensource sponsorizzata da Novell sviluppata dal progetto Mono

Riassumendo:
- Aprite VLC
- Andate su impostazioni - preferenze - ingresso/codificatori - moduli d'accesso -HTTP(S)
Cliccate su "mostra avanzate" e cancellate quello che c'è in UserAgent e copiaincollate:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6
Fatto questo, come il solito andate su file-apri flusso di rete, cliccate su HTTP/HTTPS/FTP/MMS e copiaincollate uno di questi link, a seconda di quello che volete vedere:
RaiUno: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=983
RaiDue: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=984
RaiTre: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=986
RaiNews24: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=1
RaiSport: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=4145
RaiStoria: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=24269
RaiEdu: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=24268
Buona visione! :)

giovedì 30 aprile 2009

HappyDays Hostel

'Sera! Vi scrivo direttamente da Roma!

Questa in pratica, dato il poco tempo disponibile, vi dico che ho intenzione di postare (a breve) un postsu variabili ambiente e modding della shell (bash per la precisione)!

Ancora saluti da Roma e preparatevi per concerto del primo maggio!
Rock'n'free!

martedì 31 marzo 2009

post? ora illegale!

a senso che scriva se non devo dire niente di interessante? :D

sabato 28 febbraio 2009

1234567890, io c'ero!

Grazie ad un annuncio in MailingList del MontelLUG di Daneel, qualche giorno fa (13 - 02 - 09 alle 23.31 UTC), ho potuto partecipare anch'io, come potete vedere dallo screenshot :D, al coolepoccountdown ("actually up" come suggerisce il title della pagina). In pratica quel numero che vedete li, rappresenta i secondi passati dal primo gennaio 1970 alle ore 00.00 UTC, che sarebbe (è) una sorta di annozero per gli orologi Unix.
Quel numero in particolare non è niente di troppo serio, infatti è solo una semplice combinazione fortunata di numeri delle 2^32 possibili!, ma può essere un buono spunto per iniziare a fare un altro tipo di riflessione, e cioè il fatto che il numero delle combinazioni possibili è finito (2^32 appunto).
Perché proprio 2^32?
Come ben saprete, _tutte_ le informazioni nei pc non sono altro che serie di numeri (in particolare, numeri in base 2), per cui anche quel "tempo", non è altro che un numero che ogni secondo viene incrementato di uno.
Altra cosa da sapere è che nei pc non è possibile rappresentare l'infinito, perché per rappresentare l'infinito servirebbe memoria infinita e ciò è materialemente impossibile da ottenere (c'è da dire che tuttavia esiste una convenzione che indica come rappresentare, in FloatingPoint, infinito (con segno) e cioè: esponente 255 (tutti 1) e mantissa = 0 (tutti 0)).
Ok, mettendo a sistema il tutto, si può dedurre che: il tempo è finito!
Quanto finito?
Riprendendo da Wikipedia "The standard Unix time_t (data type representing a point in time) is a signed integer data type, traditionally of 32 bits" che vuol dire che i numeri sono rappresentati con 4 byte cioè 2^32 possibili diversi numeri. da 00000000000000000000000000000000 a 11111111111111111111111111111111. Sono circa 4 miliardi e rotti.
Se leggiamo attentamente c'è scritto "signed integer" quindi bisogna considerarne circa metà per i positivi e metà per i negativi (circa perché c'è anche lo 0 in mezzo). A questo punto, tirando le somme, si può dedurre che il più grande numero intero con segno a 32 bit rappresentabile è 2^31 - 1 e cioè esattamente +2.147.483.647. Se sapete che questi sono secondi e fate due conticini scoprirete che giovedì 19 gennaio 2038 alle 4 di mattina circa (in Italia) ci sarà lo Unix millenniunm bug! ovvero, non essendoci più cifre/bit a disposizione avverà un Overflow e torneremo indietro nel 1901!!! http://en.wikipedia.org/wiki/Year_2038_problem qui potete vedere meglio, grazie ad un' applet, quello che accadrà.

Conclusioni: premesso che a mio parere l'argomento sembra molto interessante e degno di approfondimenti maggiori, bisognerebbe capire meglio le dinamiche che hanno portato alla scelta di rappresentare il tempo con un intero signed e non usigned, quali potrebbero essere i danni reali del problema, se è realmente un problema[1] e cosa/se si sta facendo per risolverli.
[1]Il 2038 sembra molto lontano (avrò quasi 49 anni!!! O_o) e 29 (2038 - 2009) anni fa nascevano i primi personal computer (1981 primo personal computer dell' IBM) quindi potremmo aspettarci di tutto.

Al prossimo post!

P.S. Il corso architettura degli elaboratori 1 promette molto bene :D

sabato 31 gennaio 2009

Questa volta sono in tempo! E' il 31 gennaio 2009 e sono le 23.53!
Non dovrei più scrivere visto la brutta figura dello scorso mese e dovrei solo vergonarmi, ma ho appena scoperto che ho preso I nell'esame di analisi 1!!! Sono contento perché l'ho passato (lo scritto), ma sono triste perché ero convinto che fosse andato bene! ;( ora ce la metterò tutta per provare a passare l'orale martedì...a sto punto la vedo dura ma...così è :D

Vi linko il tema d'esame di informatica se a qualcuno di voi può interessare. http://elearning.unipd.it/moodle/ing/file.php/46/canale1/primoAppello/compito.pdf

ah, dimenticavo, oggi abbiamo anche vinto la nostra seconda partita di campionato :D siamo a quota 6 punti! -1 dal Biancade e dalla salvezza!

23.59, saluti!