mercoledì 30 gennaio 2008

How To Pythonize - L'indentazione del codice


In Python c'è un'indentazione ben precisa da rispettare. La struttura del codice è dettata da rigide indentazioni. In altri linguaggi, tipo il C, il programma può anche essere scritto tutto su una riga come ad esempio:

#include "stdio.h" int main (void){printf("Ciao mondo!");}


Questo oltre a essere molto poco leggibile, è anche poco manutenibile.
Il Python invece impone l'indentazione al codice, in modo da renderlo leggibile e manutenibile.

Vediamo un esempio di blocchi if annidati. L'indentazione vista nell'esempio è OBBLIGATORIA, altrimenti l'inteprete restituisce errore.
Sono ovviamente fuori da questa regola i commenti, ovvero le righe di codice che cominciano con il carattere '#'.



Aggiunta questa fondamentale informazione possiamo dalla prossima volta vedere come complicare un po' gli algoritmi inserendo i cicli.

martedì 29 gennaio 2008

Sussulto mattutino

In italia funziona così:
- fa scandalo una cosa...
- tutti ne parlano...
- passano 3 giorni...
- nessuno ne parla e ne sa più niente.

L'hanno fatto anche con Android. Vi ricodavate che siamo stati esclusi dal torneo milionario per la nuova piattaforma per cellulare?
Bene mi fa piacere annunciare che le cose non sono assolutamente cambiate. Non solo nessuno a pensato a riparare a un bug nella legge che ci esclude da tutti i concorsi di questo tipo, ma ancora meglio nessuno nemmeno ci pensa.

Cmq la mia mattina è cominciata diversamente. Visito la mia pagina di feed su Google Reader e cattura subito la mia attenzione un post sull' Android Developer Blog:

2:13 AM (8 hours ago)
Deadline Extension for the Android Developer Challenge


Ho pensato "sta a vedere che estendono il tempo di consegna perchè entrano anche l'Italia e il Quebec (di cui però mi importa in misura minore).
Ad avvalorare la mia tesi c'era anche l'autore del post: Posted by Quang Nguyen, Developer Advocate

Ma leggendo più sotto ho scoperto che il tempo per la prima consena è stato allungato a causa di una release dell'SDK che verrà effettuata a giorni, e, anche andando a leggere nel regolamento, rimane inalterata l'esclusione dell'Italia dal concorso.

I politici ovviamente pensano a brindare e a sputarsi e a noi chi ci pensa?

Link al post del blog.

lunedì 28 gennaio 2008

La Ballata del programmatore



Niente di più vero: http://www.derelitti.com/ballata_del_programmatore/

1 milione di OpenOffice.org

Da un articolo recente comparso su Tuxjournal.net è emerso che sono stati scaricati un milione di trial di Office 2007, la suite per ufficio di Microsoft.

Ma cosa molto più importante è che sono 1 milione gli italani che hanno scaricato Open Office nel 2007. Che sia quel milione di italiani che ha scaricato prima il trial di Office 2007 per poi dire "ma che roba è..." e passare alla suite open?
Io penso proprio di si. Sento molte persone che dicono: "Ma OpenOffice non fa le stesse cose di Office!". SBAGLIATO! Open Office le fa meglio, la differenza principale e il suo punto di forza è proprio che NON E' MS OFFICE. In aggiunta vorrei parlare a coloro che scrivono un documento in formato .doc e poi si lamentano se OpenOffice non lo apre correttamente: il problema è di MS Office che non usa standard, e quindi se proprio volete spedire un curriculum o qualche documento usate Open Office, il formato odf, e gli strumenti liberi.

Penso che le cifre parlino molto meglio di me, quindi un applauso a Open Office.
Link alla notizia originale.

domenica 27 gennaio 2008

Guido su Python 3000

Girovagando per la rete ho trovato un video interessante di Guido van Rossum.
In questo video parla del futuro di Python, la versione 3.0, meglio conosciuto come Python 3000.

Nelle note a lato del video si legge: "Guido van Rossum is a computer programmer who is best known as the author and Benevolent Dictator for Life of the Python programming language."

Ecco di cosa parla il video che dura più di un'ora: "ABSTRACT
The next major version of Python, nicknamed Python 3000 (or more prosaically Python 3.0), has been anticipated for a long time. For years I have been collecting and exploring ideas that were too radical for Python 2.x, and it's time to stop dreaming and start coding. In this talk I will present the community process that will be used to complete the specification for Python 3000, as well as some of the major changes to the language and the remaining challenges."


venerdì 25 gennaio 2008

Ecco il kernel 2.6.24

Finalmente è stato rilasciato il nuovo kernel Linux 2.6.24.

Si tratta infatti di una release a detta di molti "la più stabile".
Ci sono cose che riguardano da vicino anche chi non può far a meno della connesione WiFi, come me. Il kernel Linux 2.6.24 ha un migliore supporto delle schede broadcom, e quindi della mia, senza ricorrere al firmware o a ndiswrapper.
Il link a una lista completa delle migliorie: Clicca qui

domenica 20 gennaio 2008

War§ow 0.4

Chi ha detto che su Gnu/Linux non si può giocare?

Senza citare il ben noto Wine, che permette di girare più o meno bene i giochi nativi per windows, parliamo dei giochi nativi per Gnu/Linux. O ancora meglio di un gioco multipiattaforma. Warsow.
Un gioco che oramai ha sulle spalle un paio di anni che promette di dare una scossa al mondo del Progaming fissato su più blasonati ma poco profondi titoli.
E' uscito ieri sera in una nuova versione, ancora beta.
Riportiamo la news del sito originale www.warsow.net:
Finally! After 8 months of non-stop (http://www.warsow.net/forum/img/smilies/big_smile.png) coding, mapping, modelling, drawing, fighting, balancing and analyzing, the Warsow team has finally reached yet another milestone in its development cycle! I am very proud to announce the next major release of Warsow: version 0.4!
__________________________

Let's get right at it, what will 0.4 bring? A small summary of some of the major changes (for a detailed overview, check out the changelog):

§ WarsowTV
- broadcast matches in-game to a large amount of viewers
- Full multipov streaming
- Added small minimaps for watchers

§ Engine
- New advanced renderer features (bumpmapping, specularmapping, shadowmapping)
- Optimizations! Increased performance over 0.3
- Outlines now handled by engine, ability to switch on or off
- Profiles: ability to quickly use some predefined graphic settings

§ Maps
- Replaced old wdm2 by TdM's/bLx' Chromo Dynamic
- Replaced old wdm11 by Grumx' Rage
- New TDM maps by Daze: wdm8 - Baxandall and wdm19 - Format
- New TDM map by jal/Daze: wdm9 - Supersym
- New duel map: wdm10 - Deflected
- Retextured most maps to take advantage of new renderer features

§ Models
- New Weapon model: Instagun
- New Player model: Bobot

§ Gametypes
- Tweaked iTDM (domination style gametype)
- New CTF rules
- Added Duel Arena (1v1 ClanArena)

§ Bots
- Advanced movement (bunny hopping, dashing and wall jumping)
- Ability to time items
- More natural behaviour

§ Tweaked movement system
- Added forward bunny hopping
- Increased gravity, compensated by higher jump strength

§ Tweaked weapon settings
- Gunblade: Regenerates ammo, instant fire, added splash damage (trickable!)
- Riotgun: Spiral pattern, increased damage slightly
- Rocket launcher: More splash damage, more self damage, decreased projectile speed (1000 up/s)
- Grenade launcher: Strong grenade explodes on contact, tweaked projectile trajectory

§ Tutorials
- Included basic movement demo-tutorials
- With subtitles, voice-over and recams to explain basic movement and bunny hopping

§ Windows, linux and Mac compatible
- However in beta state, Warsow 0.4 is the first release to run on OSX http://www.warsow.net/forum/img/smilies/big_smile.png
- Windows in both .zip and installer

__________________________

This is a selection out of some of the bigger changes from the changelog. There's much more to explore, so I suggest you go on and download your 0.4 flavour of choice (as usual, only a full release and no update available as there were too many media changes), right after these thanks:

Thanks to everyone who put effort into this release, thanks to all the coders, mappers, testers and team members for dedicating their free-time in making this release possible! Thanks community for all the feedback in forums and devblog throughout the development process. Thanks to everyone who supports Warsow!


E infine la pagina dove poter scaricare il gioco, ovviamente open source e GRATIS!
Download

mercoledì 16 gennaio 2008

How To Pythonize - Le variabili e il controllo del flusso

Eccoci a un altro appuntamento con Python.

Oggi parliamo di come dichiarare variabili e di come controllarne i valori.
Le variabili in Python assumono un tipo al momento in cui vengono inizializzate.
I tipi solo: int, float, bool, char, string.
Per dichiarare una variabile per ogni tipo basta scrivere:

_valore_intero_ = 10 #assegna un valore intero
_valore_float_ = 3.5 #assegna un valore in virgola mobile
_valore_bool_ = true #assegna un valore bool.
_valore_char_ = 'c' #assegna un carattere
_valore_string_ = "questa e' una stringa" #assegna una stringa


Assegnati valori a delle variabili possiamo farne quello che vogliamo stando attenti ai tipi.

_totale_ = _valore_intero_ + _valore_float_ #trasforma il valore intero in float (10.0) e esegue la somma
_totale_ = _valore_intero + _valore_string #non esegue il comando perchè ci sono due valori che contrastano


Nel programma potremo aver bisogno di testare il valore di una variabile. Avremo allora bisogno del cotrutto if come nel codice di esempio:


Alla prossima dove parleremo dell'indentazione del codice.

martedì 15 gennaio 2008

Sim City - Open Source

C'è sempre qualcosa da scoprire, da studiare, da manipolare. Questa volta tocca a Micropolis, il motore che sta dietro Sim City che diventa Open source e che è scaricabile liberamente.
Eccone uno screen:


Dalla pagina http://www.donhopkins.com/home/micropolis/ è possibile scaricare:

- Micropolis-activity.tgz
Per installare micropolis sui sistemi Gnu/Linux.
- Micropolis-activity-source.tgz
Per compilare micropolis dai sorgenti.
- MicropolisCore.tgz
Per usare micropolis, cellengine e tileengine con python.

Che dire nonci resta che unzippare e provare con mano.

lunedì 14 gennaio 2008

Hardy Heron - Aggiornamento


Mi devo far perdonare sei giorni d'assenza nei quali ho dovuto un po studiare per diversi esami con una notizia gustosa.
Siamo arrivati alla Alpha 3 di Ubuntu 8.04. Sarà, come già detto, una release a lungo supporto e tutte le novità introdotte fanno pensare a una vera riscossa per canonical.
Link della news su Ziobudda.net: http://www.ziobudda.net/hardy_heron_alpha3

martedì 8 gennaio 2008

Wikia Search

E' arrivato, è nuovo, è aperto...
Il motore di ricerca lanciato da Wikia (nota per la famosissima wikipedia). La peculiarità di questo motore di ricerca è che tutto il codice utilizzato è aperto. Agli utenti è data quindi la possibilità di affinare gli algoritmi di indicizzazione e ricerca, proprio quello che non fa Google.

E' anche vero che Google ultimamente ha alzato molto gli standard dei servizi web. Wikia Search dovrà quindi darsi da fare per restare a galla.

Nel frattempo mettiamo alla prova il nuovo motore di ricerca: http://alpha.search.wikia.com/

lunedì 7 gennaio 2008

How To Pythonize - Input / Output

Vediamo ora quali sono i principali metodi per acquisire dati da tastiera e stamparli sul monitor.

Python ha delle funzioni molto semplici sia per acquisire i dati in input, sia per stampare gli stessi in output.

Acquisiamo ad esempio un intero da tastiera inserendo all'interno dello script la seguente riga:

data = input('Inserisci un numero > ')


Questo comando chiederà all'utente di inserire un numero nella shell e di premere invio, dopo di che il valore inserito da tastiera è contenuto dalla variabile data.

Per quanto riguarda le stringhe il trattamento è un po diverso:

stringa = raw_input('Inserisci una stringa > ')


Salva la stringa nella variabile "stringa".

Vediamo ora come stampare, i dati appena salvati, a video. Possiamo stampare le variabili semplicemente scrivendo:

print data
print stringa


Oppure si può formattare l'output scrivendo dei placeholder nella stringa da stampare come segue:

print "Ecco l'intero inserito: %d"%(data)
print "Ecco la stringa inserita: %s"%(stringa)


E' facile capire come Python gestisca l'output. All'interno della stringa si scrivono dei caratteri speciali, come %d (interi), %c (caratteri), %s (stringhe), che vengono poi identificati successivamente.

Se si vuole stampare solamente una stringa costante il comando da impartire è:

print 'Questa è una stringa costante.'


Alla prossima...

venerdì 4 gennaio 2008

How To Pythonize - Gli strumenti

Ecco pronto per tutti un piccolo corso di Python. Non ho pretese di spiegare concetti complicati, ma semplicemente creare una guida di base per invogliare, chi lo volesse, a scrivere i propri programmini, o programmoni che sia.


Perchè Python?
E' un linguaggio semplice, si trova di default nella maggior parte dei sistemi GNU/Linux, è leggero, è versatile, è potente, si può estendere facilmente con altri linguaggi.

Da che livello partiamo?
Ovviamente non verranno descritti i costrutti base di ogni linguaggio di programmazione, ma anche chi non ha mai visto una linea di codice potrà essere soddisfatto del proprio lavoro.


Che cosa mi serve per partire?

Tratteremo essenzialmente sistemi GNU/Linux, quindi è opportuno scaricarsi e installare una distribuzione GNU/Linux sul proprio computer. (Io uso Ubuntu 7.10). Gli esempi, soprattutto all'inizio però potranno anche essere eseguiti su Windows.
Ci vorrà poi un editor. Il mio consiglio ricade su IDLE, che è una shell python già pronta all'uso, e per i primi esempi utilizzeremo proprio quella. Successivamente possiamo spostarci su un IDE, o meglio su un editor avanzato come può essere gEdit.

Ahah! Hai sbagliato!
Non c'è problema, il blog è fatto a posta per questo, se gli script proposti come esempio non dovessero funzionare è sempre possibile aggiungere un commento al post per segnalare il bug che verrà immediatamente corretto per fornire una guida il più possibile corretta.
Già in questo post vi consiglio di inserire proposte, consigli e commenti di qualsiasi tipo.

Alla prossima ;)

mercoledì 2 gennaio 2008

OpenMoko - Nuovamente SmartPhone e Gnu/Linux

Leggendo Linux&C. ho trovato un articolo molto interessante su Sistemi Operativi liberi per smarthphone e palmare. In questo articolo si parla di OpenMoko, sistema operativo linux-based.

Mi sono andato allora a documentare su internet e effettivamente sembra un ottimo sistema operativo. Non resta altro che provarlo. Nel frattempo lascio due link:

http://www.openmoko.com/ portale ufficiale di OpenMoko. E' interessante soprattutto scoprire che è possibile acquistare Neo1973, ovvero lo smartphone sviluppato apposta per OpenMoko, all'indirizzo https://direct.openmoko.com/.


http://www.openmoko.org/ portale ufficiale per gli sviluppatori OpenMoko.