The Zen of Python, by Tim Peters

Ecco la filosofia che c’è dietro al linguaggio di programmazione Python:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Letture consigliate:

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/29/the-zen-of-python-by-tim-peters/.

Mostra di Salvador Dalì a Roma

Salvador Dalì
09 marzo 2012 – 01 Luglio 2012
Complesso del Vittoriano, ROMA

Tratto da The Salvador Dalì Forum

La mostra organizzata in collaborazione con la Fondazione Gala-Salvador Dalì, propone un approccio inedito sulla figura dell’artista indagato in tutte le sue molteplici e diverse sfaccettature: pittore, disegnatore, pensatore, scrittore, appassionato di scienza, catalizzatore delle correnti delle Avanguardie, illustratore, orafo, cineasta e scenografo. Si farà luce su un aspetto tutt’ora trascurato negli studi e nelle mostre daliniane: il rapporto dell’artista spagnolo con l’Italia.

L’Italia sarà infatti la costante, il filo rosso, l’elemento che terrà insieme tutte le opere esposte.

Attraverso documenti, fotografie, disegni, lettere, progetti, oggetti lo si potrà seguire nei suoi viaggi per l’Italia, e rivivere gli incontri per ideare collaborazioni artistiche, come quello con Anna Magnani e con Luchino Visconti.

La mostra si pone il compito di tessere il filo tra l’artista e l’uomo per restituire a tutto tondo il genio Salvador che ha saputo creare dalle sue bizzarrie caratteriali e biografiche un universo affascinante e suggestivo di immagini plastiche e letterarie davvero uniche.

Montse Aguer-Lea Mattarella

——————————————————————————–
ORARIO 
aperto tutti i giorni Lunedì-Giovedì: 9.30-18.30; Venerdì Sabato 9.30-22.30; Domenica 9.30-19.30
——————————————————————————–
TARIFFE 
l’ingresso € 12
ridotto € 8,50

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/28/mostra-di-salvador-dali-a-roma/.

I numeri immaginari: l’impossibilità nella realtà diventa possibile altrove

Raffaele Bombelli aveva anche inventato un’altra coppia matematica. Prima di lui esisteva la coppia +1, -1, più e meno. Bombelli ne aveva aggiunta un’altra: più di meno: +sqrt{-1} e meno di meno: -sqrt{-1} . Da allora, l’algebra sarebbe diventata il campo di una partita di doppio, con quattro protagonisti. Dopo aver dettato le regole di quel calcolo allargato, compose una filastrocca per facilitarne la diffusione:

Più di meno via più di meno fa meno. 
Più di meno via meno di meno fa più.
Meno di meno via più di meno fa più. 
Meno di meno via meno di meno fa meno.

Il che equivale a:

sqrt{-1} * sqrt{-1} = -1
sqrt{-1} * ( -sqrt{-1}) = +1
( -sqrt{-1}) * sqrt{-1} = +1
( -sqrt{-1}) * ( -sqrt{-1}) = -1

Era cominciata l’era del calcolo con quelle nuove entità, di cui tutti si guardavano bene dal fornire una definizione, tanto apparivano fittizie. Pure materiali di calcolo, erano utilizzate come semplici intermediari, sommati al tutto a condizione di scomparire senza lasciare traccia del loro passaggio. Un affaruccio, suvvia! Un po’ come nell’arte della prospettiva, inventata proprio nella stessa regione, qualche decennio prima: le rette, dopo che erano servite a tracciare una prospettiva, venivano cancellate con cura, diventando invisibili nella fase finale del dipinto.

Queste entità si dovevano definire numeri? In caso affermativo, non potevano che essere numeri «impossibili». In seguito, Cartesio migliorò la loro condizione: per indicare in quale ordine di realtà si collocava, li definì «immaginari»! Ancora più tardi, una volta ammessa la loro realtà, il matematica tedesco Gauss li considerò semplicemente numeri … «complessi».

Continua la lettura

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/25/797/.

[SitoWeb] Real Estate Di Trolio

Sito web: Real Estate Di Trolio

URL: www.ditrolio.it

Descrizione: Sito web dell’Agenzia Immobiliare di Guerino Di Trolio. Informazione e pubblicità; Personale.

Tecnologie: Joomla 1.7 – Linguaggi PHP5, CSS2

[portfolio_slideshow]

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/25/sitoweb-real-estate-di-trolio/.

[iOs] Archiviazione e distribuzione di un “ad hoc build” o IPA file con XCode 4

Se volessimo distribuire la nostra app senza rilasciarla su Apple Store, magari per farla testare ad altri utenti, occorre seguire i seguenti passi.
Teoricamente, occorrerebbe creare un pacchetto “ad-hoc” (ad hoc build) firmandolo con un “ad hoc distribution provisioning profile” (certificato per la distribuzione creato su iOs Dev Center). Cioè dovremmo condividere oltre che il file .app anche un file .mobileprovision (con il certificato).
L’utente dovrà importare il file .mobileprovision nella barra sinistra di iTunes, insieme al file .app.
Il modo migliore è distribuire un file IPA contrassegnato con un “ad hoc distribution profile“, così che l’utente dovrà fare soltanto un doppio click sull’IPA file e installarlo in iTunes.

Operazione preliminare – Build & Archive
Per creare un file IPA, occorre usare direttamente XCode e rilasciare un Archivio (scheda Product e poi Archive). Verrà creato un archivio nell’Organizer, dove si dovrà scegliere il provisioning profile per firmarlo.
E’ buona norma utilizzare un “ad hoc distribution provisioning profile“, oppure è possibile usare un distribution profile con un nome generico (o con wildcard).

IMPORTANTE. Occorre generare un certificato “Ad Hoc Distribution” sulla propria pagina personale di DEV APPLE, associando il certificato ai dispositivi su cui poi si dovrà installare l’app (per la distribuzione al cliente, per esempio, prima della pubblicazione definitiva su Apple Store). Il dispositivo su cui installare l’app si associa inserendo nella pagina di DEV APPLE il codice UDID di 40 cifre alfanumeriche (vi riporto alla fine del presente articolo un riferimento che spiega come recuperarlo). Dopo averlo inserito, occorre generare un certificato di distribuzione “Ad Hoc” associandolo al dispositivo (sempre in DEV APPLE), scaricarlo e importarlo in Organizer di XCode (basta fare il doppio click sul file .mobileprovisioning). Una volta importato, occorre associare il certificato alla configurazione di XCode, come spiegato di seguito).

Creazione di una nuova configurazione in Project Settings
Si crea una configurazione (la possiamo chiamare Ad Hoc Distribution). Cliccare sul nome del progetto (pannello a sinistra) e nel pannello Groups & Files selezionare prima il progetto e poi il target.

Si duplica la voce Release e si crea una nuova configurazione a cui dare un nome (Ad Hoc Distribution, per esempio).

Setup del target
Nella scheda del Target, assicurarsi che sotto il tab Build Settings, selezionando ALL e COMBINED, in corrispondenza della voce Code Signing vi sia il corretto certificato per la distribuzione (nel nostro caso, “Ad Hoc Distribution”).

Skip install
Se nel progetto ci sono librerie statiche (tipo Cocos2d oppure Three20), occorre eseguire uno step extra che assicuri che esse vengano incluse nell’app binaria correttamente. Basta selezionare le singole librerie e nel pannello a destra, per ognuna di esse, occorre trovare la voce Skip Install (in Build Settings, gruppo Deployment – utilizzate la funzione di ricerca per velocizzare) e inserire il valore YES per la configurazione creata al passo precedente (“Ad Hoc Distribution“, nel nostro caso) .

NOTA. Lo step “Skip Install” è necessario solo se il progetto contiene le static libraries e deve essere eseguito SOLO per le static library e NON per il Target o il progetto della propria app.

Configurazione per l’Archive Scheme
Nel menù Product, vi è la voce Edit Scheme. Selezionare Archive dal pannello sinistro e poi settare Build Configuration con la propria configurazione (“Ad Hoc Distribution“, nel nostro caso), salvando.

Creazione dell’archivio
E’ possibile ora creare l’Archivio. Nel top menu, sotto la voce Product vi è l’opzione Archive. Quando l’operazione è terminata correttamente, sotto l’Organizer vi è il tab Archives con il nostro pacchetto.

Creazione del file IPA
Selezionato l’archivio appena creato, si può creare il file IPA, cliccando su Share e poi confermando il provisioning profile utilizzato. Andando avanti, scegliendo in corrispondenza di Contents la voce “iOS App Store Package .ipa“, si crea l’IPA file con un nome e lo si salva.

Adesso siamo pronti per distribuire il pacchetto IPA. L’utente che lo riceverà, dovrà semplicemente fare un doppio click e sincronizzare il proprio device con iTunes, per trovarsi l’app così installata.

Riferimenti:

10 ottimi motivi per cambiare lavoro

“Dobbiamo sempre provare a cambiare, a rinnovarci, cercare di ringiovanirci; altrimenti diventiamo solo più duri”
Johann Wolfgang Von Goethe

Girovagando sulla rete, ho trovato degli indicatori di salute che ci segnalano che siamo stanchi del nostro lavoro. Premetto che io sono appassionato del mio (anche se spesso capitano situazioni o periodi in cui mi sento stanco e penso “Ma chi me lo fa fare!”), ma ho risposto tra me e me alle domande che sto qui ad elencare.

Chi non alterna momenti di entusiasmo, fasi di relativo benessere e giorni di sconforto, quando pensa al proprio lavoro? Ecco le domande che occorre farsi per capire se si è stanchi e che dovrebbero spingere a prendere in mano la situazione per non sentirsi insoddisfatti.

1. Siete insofferenti quando vi recate a lavoro? Se la mattina faticate a svegliarvi per prepararvi e uscir di casa e, durante il tragitto, vi viene il magone al pensiero di trascorrere otto ore in ufficio, scatta un primo indicatore.

2. Avete il desiderio di cambiare lavoro? L’insoddisfazione porta al desiderio di cambiare lavoro, all’immaginarsi in un altro contesto lavorativo o a qualcosa che si vuol fare in un prossimo futuro. E’ sintomo che non vi piace quello che fate.

3. Cercate spesso altre opinioni sul vostro desiderio di cambiare lavoro? Quando iniziate a chiedere ad altri colleghi o conoscenti, cosa ne pensano circa la vostra insoddisfazione e quando, soprattutto, iniziate a spettegolare e a parlar male di persone che lavorano con voi, iniziate ad “odiare” l’ambiente lavorativo in cui vi trovate e si passa, dunque, al punto 4.

4. Avete risentimento verso i vostri colleghi e la società per cui lavorate? Il risentimento porta a parlare male dei colleghi e a vedere la società per la quale si lavora come un organismo oppressivo e che costringe a “sprecare ore preziose”.

5. Le vostre difese immunitarie ultimamente sono calate? I disturbi psicosomatici protratti nel tempo, portano momenti di stress, di stanchezza fisica e abbassamento delle difese immunitarie. L’organismo avvisa che occorre dare una svolta alle proprie abitudini.

6. Non date importanza a quello che fate o lo fate svogliatamente? Se reputate che le vostre azioni siano importanti per altri, ma non per voi, oppure le fate svogliatamente, si perde l’entusiasmo di crescere professionalmente. Si pensa che quel che si fa sia finalizzato ad accrescere un profitto altrui e non ci si sente più parte di un gruppo o organizzazione. Si ha la consapevolezza di non imparare più nulla in quella attività.

7. Siete meno produttivi? Questo indicatore è particolarmente pericoloso. A lungo andare il datore di lavoro potrebbe prendere provvedimenti o un cliente potrebbe lamentarsi. O si ritrova la voglia e lo stimolo, oppure occorre cambiar vita prima che siano gli altri a decidere le nostre sorti.

8. Dimenticate spesso gli impegni o commettete errori? Sintomo che si presta più attenzione in quel che si fa. Potrebbe recare un disagio o un pericolo per colleghi e clienti.

9. Non siete più propositivi e creativi? Se avete la fortuna di fare un lavoro creativo e non sapete più proporre idee, realizzarle, non introducete novità, il mestiere che state svolgendo non permette al vostro istinto creativo di emergere.

10. Non rispettate più alle regole?  Se le regole vi stanno strette, vi opprimono, ve le sentite imposte, ecco che non avete più la coscienza di lavorare per una organizzazione.

Queste sono solo alcune delle domande che fanno capire che si è insoddisfatti del proprio lavoro. Se la risposta è positiva per almeno la metà, allora iniziate ad attivarvi per trovare qualcosa di più stimolante. Potreste essere più creativi, propositivi, finalmente realizzati e in pace con voi stessi.

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/24/10-ottimi-motivi-per-cambiare-lavoro/.

[iOs] Distribuzione su Apple Store: errore “No architectures to compile for armv6”

Chi ha avuto esperienza di programmazione su XCode 3 e ha iniziato a sviluppare un progetto lì e poi ad importarlo su XCode 4, sicuramente è incappato nell’errore “No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv6 armv7)“.

Questo errore non avviene a tempo di compilazione, ma all’atto della distribuzione su Apple Store.

Ho letto che capita anche sviluppando direttamente su XCode 4 e si verifica quando si crea un progetto che di default viene testato su una architettura armv7, che per intenderci è il processore che gira dagli iPhone 3GS a salire.

L’iPhone 3G monta un processore armv6, quindi, affinchè si possa deployare sui modelli da 3G a 4S, occorre settare la predisposizione a questa architettura sul compilatore. A partire dal firmware 4.3 apple ha tolto il supporto ai dispositivi basati su armv6 (iPod Touch/IPhone 1G, 2G, 3G), per cui se vi occorre rendere compatibile e scaricabile la vostra app anche su di essi, vi occorre compilarla su firmware 4.2 al massimo e dichiarare esplicitamente la compatibilità con l’architettura armv6.

Per prima cosa, occorre andare sulle proprietà del vostro progetto e settare una architettura valida (voce Valid Architecture):

  1. Navigare sul tab Build Settings e trovare le voci sotto il gruppo Architectures
  2. Per le voci presenti sotto tale gruppo settare i seguenti valori: Architectures: Standard (armv6 armv7); Base SDK: Latest iOS (iOS 4.3), Build Active Architecture Only: No, Supported Platforms: iphonesimulator, iphoneos e Valid Architectures: armv6 armv7 i386;
  3. Se nella voce Valid Architectures vi sono già i valori armv6 armv7, cancellarle, restartare XCode e reinserirle. Se vi è il valore $(ARCHS_STANDARD_32_BIT), vi consiglio di cancellarlo e inserire le due voci armv6 e armv7;
  4. Sempre in Valid Architectures, il valore i386 non è obbligatorio, ma permette di definire correttamente l’architettura utilizzata dal Simulatore che gira su un MacIntel.

Vi consiglio di fare anche il seguente passo, perchè mi è capitato che dopo essere riuscito ad uploadare la mia app su Apple Store, nonostante non mi abbia più dato l’errore “No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv6 armv7)“, mi segnalava l’app compatibile anche per iPhone 3G, ma quando la si provava a scaricare ed installare, non succedeva nulla (ovvero nè la scaricava nè la installava sul device).

5. Nel vostro progetto vi è sicuramente un file che si chiama yourProjectName-Info.plist, che contiene tutte le info di configurazione della vostra app. Occorre che cancellate tutte i valori presenti sotto la voce Required device capabilities (se c’è).

enter image description here

Vi allego gli screenshot dei passi descritti e i due post che mi sono serviti per risolvere questo bel problema di compatibilità sui dispositivi con armv6:

“Una vita a colori”: gli acquerelli di Marcel

Ecco che vi consiglio un appuntamento, dell’artista Marcel Gorgone:

Una vita a colori” – gli acquerelli di Marcel.
Performances degli artisti internazionali: Adrian Kaye, Maxim Blakhov, Sami Jabbara. Con la presenza del giovane Edoardo Ruggiero e di Habiba Maana.
La “Casa di Marcel” nelle fotografie di Ben Tari.

Dove? Bras cafè – piazza Navona 2 (Museo Braschi)

Quando? Sabato 18 Febbraio alle ore 20.30 fino a sabato 25 febbraio 2012 alle ore 23.30

Altre informazioni:
  • L’ingresso è da Piazza Navona 2
  • L’ingresso è libero, chi vuole può anche prendere un aperitivo e cenare al Bras cafè
  • Le performances degli artisti saranno solo il 18 febbraio
  • La serata di chiusura sarà il 25 febbraio

Il nepotismo nelle Università Italiane


E’ risaputo (o meglio, lo era?) che nell’ambito scientifico gli autori italiani che pubblicano su importanti riviste del settore vanno molto forte. Eppure si hanno enormi difficoltà a fare ricerca in Italia, per mancanza di investimenti e continui stravolgimenti nella vita accademica, che portano molte brillanti menti ad espatriare.

Mi ha colpito molto lo studio fatto da un tale Stefano Allesina, docente italiano di metodi matematici applicati all’ecologia che (guarda un po’) insegna all’Università di Chicago. Forse un po’ per ripicca, ha deciso di fare una statistica sulla frequenza delle ripetizioni di cognomi fra i 61 mila e passa docenti censiti dal Ministero della Pubblica Istruzione, dell’Università e della Ricerca. Ecco i dati che se ne sono estrapolati:

  • circa 27 mila cognomi sono risultati differenti
  • il resto, che comunque è soggetto ad omonimie, lo si è “ponderato”confrontando le frequenze dei cognomi uguali con quelle che si avrebbero da un campione casuale di cognomi (operazione simulata un milione di volte al calcolatore).

Ne è uscito fuori che esiste un’elevata probabilità di diffusi comportamenti nepotistici nelle Università Italiane e, guarda caso, le identità si concentrano in una stessa disciplina. Ecco le discipline dove si verificano più di questi casi: ingegneria industriale, giurisprudenza e medicina, per citarne alcune.

A questo punto, “Evviva!” l’articolo 18 della Legge 240/10, entrato in vigore a gennaio 2011 che vieta l’assunzione, in un dipartimento di parenti, fino al quarto grado, di un docente che già vi appartenga.

Un grosso plauso va ai nostri talenti, tagliati dalla ricerca italiana, che hanno ottenuto riconoscimenti internazionali nel 2011 (e non sono pochi!). Alla faccia dei raccomandati!

(Articolo ripreso dal numero di Settembre 2011 de Le Scienze)

Letture consigliate sull’argomento:

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/02/06/il-nepotismo-nelle-universita-italiane/.

[Subversion] Spostamento di una repository da un server SVN ad un altro

In un precedente articolo si è parlato della installazione e configurazione di un server SVN su ambiente Linux (distribuzione Debian). Una  volta configurato il server, però, mi si è posto il problema dell’importazione di una repository salvata su un server SVN installato su un’altra macchina (Windows), eseguendo una procedura alquanto semplice e che ha “travasato” tutta la history, senza perdere nessun dato.

Ecco i passi da eseguire:

1. Backup della vecchia repository: Occorre effettuare un dump della repository che si occorre importare eseguendo il comando da terminale (DOS su Windows; shell/bash su Unix)

svnadmin dump /path/to/repository > repo_name.svn_dump
									

Tale comando invoca il servizio svnadmin (occorre ovviamente essere amministratori della macchina) che esegue il comando dump, seguito dal path assoluto della repository (il path è quello del file system e non la URL della repository). Il dump copia tutta la repository in un file che ha estensione svn_dump che potete chiamare come preferite (potete specificare anche un path assoluto in cui salvare tale file).

2. Creazione della nuova repository: se non avete già creato una repository sul nuovo server SVN, occorre crearla con il comando svnadmin create

svnadmin create /path/to/repository
									

3. Importazione del dump sulla nuova repository: a questo punto, copiare il dump che avete esportato sulla nuova macchina, posizionatevi da terminale nella directory dove avete copiato il file di dump e lanciate il comando svnadmin load

svnadmin load /path/to/repository < repo_name.svn_dump
									

In alcuni casi, occorre forzare che l’UUID della nuova repository sia uguale a quella della vecchia. Per cui, se vi viene visualizzato un errore del genere dopo aver lanciato il comando load, potete rilanciare la precedente riga di codice specificando l’opzione –force-uuid (l’UUID della vecchia repository la potete vedere con un client SVN visionando le proprietà della working copy).

Ecco dei comandi utili per poter visualizzare e settare la UUID di una repository:

$ svnlook uuid /var/svn/repos cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec 
$ svnadmin setuuid /var/svn/repos  #NOTA. generate a new UUID 
$ svnlook uuid /var/svn/repos 3c3c38fe-acc0-11dc-acbc-1b37ff1c8e7c 
$ svnadmin setuuid /var/svn/repos  cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec #NOTA. restore the old UUID 
$ svnlook uuid /var/svn/repos cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
									

Importazione di una repository a partire da una specifica revisione

E’ possibile importare una vecchia repository anche a partire da una specifica revisione. Occorre effettuare il dump specificando quale revisione importare e importando poi in modo incrementale. Ecco i comandi:

svnadmin dump --incremental -r 1234 /path/to/repository > rev1234.svn_dump

L'importazione nella nuova repository si importa allo stesso modo:
svnadmin load /path/to/repository < rev1234.svn_dump