Smemoratezze dal sottosuolo

Nella vita precedente questo è stato un blog cattivo

Archive for the ‘programmazione’ tag

Java, come si comporta il finally se si rilanciano eccezioni?

with 11 comments

Mi è stato dato del “blog tecnico“, quindi sono profondamente offeso. Ma ringrazio il sempre buon prostatico antiblogger per il pensiero. E per sdebitarmi rispondo a un quesito che sicuramente ha assillato lui e voi tutti fin dal primo giorno che avete visto una Java Virtual Machine. Cosa succede se lancio un’eccezione all’interno di un catch seguito da un finally? La logica dovrebbe farvi rispondere correttamente, ma potreste essere tratti in inganno. Che le vostre convinzioni non vacillino: il blocco contenuto nel finally viene eseguito sempre e comunque, cascasse il mondo (ricordatevelo, se siete allo step precedente nell’impervia strada della conoscenza: viene eseguito anche se non sono state lanciate eccezioni).

Programmino di esempio che mi sono scritto oggi mentre bestemmiavo in luganese (!):

public class ProvaFinally {

        public static void main(String[] args) {
                try {
                        try {
                                System.out.println("0");
                                throw (new Exception());
                        } catch (Exception e) {
                                System.out.println ("1");
                                throw(e);
                        } finally {
                                System.out.println("2");
                        }
                } catch (Exception e) {
                        System.out.println("3");
                }
        }
}

L’output sarà:

0
1
2
3

Non vi sentite un po’ più ricchi, ora? Che bella cosa, essere sapienti.

Written by StM

February 1st, 2008 at 8:27 pm

Posted in how-tos

Tagged with , , , , ,

Migrare da Bloggers.it a Movable Type e WordPress

with 66 comments

Oggi è possibile. Forse lo era anche ieri, ma nessuno sa se lo sarà anche domani. Fossi in voi approfitterei dell’occasione: esportate il vostro blog da Bloggers.it oggi, ed evitate il rischio che vi siano in futuro cambi di formato di export, o impossibilità dello stesso. Scusate, eh, signori di Bloggers.it, ma già come lettore sono molto scontento; figuriamoci poi se avessi un blog sulla vostra piattaforma: sarei viola di rabbia. Perciò ritengo un Diritto Inviolabile del Blogger fare uso di questo script e farvi ciao ciao con la manina. Senza rancore.

StM in associazione con Obi-Fran Kenobi.

Script

Senza tante parole, se già sapete di cosa si tratta, a voi lo script di conversione. Perché possiate scaricarlo è necessario che io mantenga l’estensione .txt, ma normalmente dovrebbe avere estensione .py.

Bloggers2MovableType.py

La data di revisione è contenuta all’interno. La licenza di utilizzo è quella di attribuzione.

A chi interessa

Questo post interessa chiunque sia in possesso di un blog sulla piattaforma bloggers.it (ora, dicono, blogdrops.com) e che voglia trasferire il contenuto del proprio blog (post, autori, categorie, commenti) su piattaforma Movable Type o WordPress (su dominio proprio o sulla piattaforma gratuita wordpress.com). Qui si terrà conto solo dell’import su WordPress in quanto non si conosce Movable Type.

Funzionamento in breve e requisiti

Il vostro backup da bloggers.it, contenuto in un set di file .xml, viene convertito in un file di testo costruito secondo il formato di export di Movable Type (che consiglio a chiunque voglia cimentarsi in attività del genere, in quanto completo e molto semplice). Per effettuare questa operazione avete bisogno, oltre che dello script, anche dell’interprete python per eseguirlo. Potete scaricare e installare tale interprete per il vostro sistema operativo da qui (se non l’avete già installato, e se usate linux potrebbe essere questo il caso):

http://www.python.org/download/

Se siete già pratici di programmazione e/o python, invocate una volta lo script senza parametri o date uno sguardo al codice per avere le istruzioni di utilizzo. Altrimenti continuate a leggere.

Procedura passo-passo: 1 – Esportazione da Bloggers.it

Sezione a cura di Obi-Fran Kenobi.

Salvare il backup dei vostri interventi è meccanicamente facile, il problema sta nel beccare quei dieci minuti in cui i server di bloggers rimangono up.

Prima di tutto, ovviamente, loggate nel pannello di amministrazione. Gli interventi che volete siano inclusi nel file di backup devono essere prima archiviati con lo script integrato. Controllate quindi che sulla colonna di sinistra non appaia il messaggio “E’ necessario archiviare”. In caso appaia, cliccatelo e attendete che bloggers archivi i vostri post. Se non l’avete mai fatto (e in questo caso sareste stati più saggi e intelligenti di me) occorreranno alcuni minuti.

Una volta finita l’archiviazione, dal pannello principale, cliccate su “Profilo utente“, nel riquadro in basso a sinistra chiamato “Modifica” (img 1).

img1

(img1)

Arriverete alla pagina “I miei dati personali“. Cliccate sull’ultima opzione, “Backup del blog” (img2).

img2

(img2)

Infine, sulla finestra che apparirà, cliccare “Scarica” e salvate il file .zip che il browser vi porgerà dove preferite (img3).

img3

(img3)

Procedura passo-passo: 2 – Download e configurazione dello script

Scaricate lo script dal link che trovate qui in giro, e apritelo con un editor di testo; in effetti al momento del download avrà probabilmente estensione .txt (per permettervi di scaricare il sorgente senza problemi). Noterete che il sorgente è già ricolmo di commenti (tutto ciò che segue un # viene ignorato dall’interprete al momento dell’esecuzione), ma ripeterò qui tutti i concetti rilevanti.

A voi interessa solo impostare alcune variabili, ma potete ignorare il resto del codice.

importa_chiusura_commenti=0

Questa variabile, se impostata a 1, fa in modo che lo script legga da Bloggers.it per quali post non sia più possibile inserire commenti, e riporti tale informazione su wordpress. Da come mi è stato spiegato, la procedura di archiviazione di bloggers comporta tra le altre cose la chiusura dei commenti per i post che vengono archiviati. Vista l’assurdità della cosa, io fossi in voi lascerei questa variabile a 0, ma impostatela a 1 se invece preferite così.

url_immagini_bloggers="http://www.bloggers.it/{nomeblog}/itcommenti/"
url_immagini_destinazione="http://www.nomedominio.boh/wp-content/uploads/imgbloggers/"

Le due variabili qua sopra effettuano nei post (e solo nei post, attualmente) la sostituzione di una particolare stringa con un’altra; tendenzialmente la cosa dovrebbe servirvi qualora intendiate caricare sul vostro dominio le immagini che al tempo furono caricate su bloggers.it, cosa quantomai consigliabile. Verificate che effettivamente su bloggers.it le immagini fossero nella sottocartella /itcommenti/, e mettete in url_immagini_destinazione la url completa di dove avete caricato le immagini. Ricordatevi comunque che l’output sarà un normale file di testo, su cui perciò potrete effettuare tutte le sostituzioni ed elaborazioni del caso. Se non intendete fare uso di questa sostituzione automatica, date alle due variabili il valore della stringa vuota (“”) o due valori identici.

Date uno sguardo alla sezione Questioni di Encoding se scoprite/pensate di avere problemi di codifica caratteri, per qualche impostazione aggiuntiva.

Procedura passo-passo: 3 – Esecuzione dello script

A questo punto potreste cambiare l’estensione del file da .txt a .py, almeno per motivi filologici (altrimenti sostituite .txt ogni volta che scrivo .py nel seguito). L’invocazione pura e semplice dello script, per chi sa maneggiare python, consta del seguente comando:

$ [eventuale path]python Bloggers2MovableType.py bloggers.it/basedati/nomeblog/archivio > mt-export.txt

Dove “python” è un interprete python, “bloggers.it/basedati/nomeblog/archivio” è dove sono conservati tutti i file .xml dell’archivio di bloggers, e “mt-export.txt” è il vostro file di output. Se omettete la parte “> mt-export.txt”, il risultato dell’elaborazione vi verrà visualizzato a schermo. Per [eventuale path] s’intende il nome della cartella in cui si trova l’eseguibile dell’interprete python (su windows si chiama python.exe, altrove solo python), qualcosa tipo “Pythonbin” (verificate dove lo avete installato), necessario se non è nella vostra variabile PATH.

Esempio pratico
Supponiamo che:

  1. python sia installato in C:Python25, e quindi l’eseguibile dell’interprete sia C:Python25python.exe
  2. abbiate gli archivi in C:bloggers.itbasedatinomeblogarchivio
  3. abbiate lo script in C:Bloggers2MovableType.py
  4. vogliate ottenere il file convertito in C:export.txt

La sequenza di comandi diventa:

$ cd C:
$ Python25python.exe Bloggers2MovableType.py bloggers.itbasedatinomeblogarchivio > export.txt

Ed è tutto.

L’elaborazione si interrompe se incappa in un qualsiasi errore non gestito: ve ne accorgete perché le ultime (uniche, se state scrivendo su file) righe di output a schermo parlano di eccezioni o qualcosa del genere. Se non vedete errori una volta terminata l’elaborazione (in fondo a tutto, se state visualizzando a schermo), allora questa è filata liscia.

Se non avete la minima idea di cosa sia e come funzioni questo python che vi ho fatto scaricare, abbiate pazienza e prima o poi scriverò qualche istruzione anche per voi.

Procedura passo-passo: 4 – Import in WordPress

(Va da sé che vi consiglio fare una prova di importazione in un blog creato apposta ed eliminabile)

Accedete alla dashboard di WordPress. Fate un controllo in Options -> Reading se la codifica caratteri sia UTF-8, e in caso contrario date una scorsa alla sezione Questioni di Encoding prima di procedere. Per l’import vero e proprio, andate in Manage -> Import, e cliccate su “Movable Type and TypePad”, caricate il file e seguite le istruzioni. Una nota, se vi è capitato di scrivere post con nomi utente diversi quando in realtà eravate sempre voi: avrete possibilità, nella pagina successiva, di mappare ciascuno di essi a utenti esistenti o di crearne di nuovi; in seguito potrete comunque eliminare gli utenti che non vi servono e specificare a WordPress di attribuire i loro post ad un altro utente.

Terminato l’import non c’è più molto da dire: divertitevi col vostro nuovo vecchio blog su WordPress!

Questioni di encoding

Esclusa la documentazione, un terzo del tempo di scrittura dello script è stato assorbito dalla gestione dei problemi di codifica caratteri. Tutti i file xml dell’export di Bloggers.it dichiarano di essere codificati in UTF-8; ma quelli più vecchi, se dati in pasto a un parser (=lettore e interprete) xml, generano errore a causa della presenza di caratteri non UTF-8 all’interno del file. Tali caratteri, in genere, sono le lettere accentate tanto amate da noi italiani. Lo script, in caso di errore durante la lettura di un file xml, fa un secondo tentativo, provando con un’altra codifica caratteri, attualmente la ISO-8859-1 (altrimenti detta Latin-1), che è quella che usa la stragrande maggioranza degli utenti italiani (corrispondente grossomodo a una qualche codifica di Windows che ha un nome diverso). Lo script restituisce come output un testo con codifica UTF-8, che è la codifica raccomandata per WordPress. Se tutto va bene, non dovrete intervenire in queste lambiccate faccende.

Se qualcosa va male, ma non troppo, potreste dover modificare una o più di queste variabili nello script:

# codifica caratteri dichiarata nel file xml di export (vedere prima riga, in genere UTF-8)
declared_charset_encoding="UTF-8"

# codifica caratteri presumibilmente REALE di alcuni file xml di export (per archivi vecchi)
real_charset_encoding="ISO-8859-1"

# codifica caratteri desiderata per il file di output. UTF-8 e' il default per WordPress,
# ed e' consigliato.
wanted_charset_encoding="UTF-8"

Ovviamente speriamo di no.

Assistenza e suggerimenti

Questo è il mio primo script in python, perciò può non essere perfetto: saranno molto graditi suggerimenti da programmatori esperti del linguaggio. Attualmente la gestione degli errori è molto limitata, quindi in caso di errori vi vedrete apparire messaggi “strani” (per chi non è programmatore) piuttosto che spiegazioni stilate di mio pugno. Il senso in genere è comprensibile ugualmente, altrimenti (sigh) chiedete assistenza qui nei commenti riportando il messaggio di errore per intero (se non è già presente).

Di una cosa sola vi prego: non fate domande prima di aver letto e cercato di comprendere tutto il post. Io ho impiegato del tempo a scriverlo proprio per evitare di fare assistenza permanente, che per esperienza so essere in grado di fagocitare porzioni rilevanti della vita di un essere umano. Le vostre domande potranno comunque contribuire a migliorare lo script o la documentazione, quindi non vi sto vietando di farne :D

Potrebbe essre che prima o poi modificheranno qualcosa nel formato di export di Bloggers.it (abitudine diffusa nel mondo informatico, specie tra i perdenti o coloro che non stanno vincendo quanto vorrebbero). Quando e se succederà, spero avrò tempo per dedicarmi alle modifiche, o in caso contrario che ci sia qualcuno che possa occuparsene.

Problemi & Soluzioni

Problema potenziale: per via del formato di export di Movable Type, se nel vostro blog esiste una riga costituita solo dalla stringa “—–” o “——-” (esattamente all’inizio della riga), potrebbe esserci una perdita di dati durante il trasferimento (quelle stringhe vengono interpretate come fine sezione). Sto pensando se me ne devo preoccupare o no, visto che da quel che ho visto è probabile che il problema si verifichi solo nei commenti.

Problema: mi dice “xml.parsers.expat.ExpatError: no element found: line 1, column 0″. Adesso ti picchio. Soluzione: nella cartella contenente gli archivi xml ci dev’essere qualche file intruso – ad esempio è capitato che vi fossero file di lunghezza nulla (0 byte). Eliminate quei file e riprovate.

Versioni

20080202 – impostato ISO-8859-1 come charset predefinito (e io che mi credevo che ISO-8859-15 andasse bene).

20080210 – ora lo script legge solo i file .xml contenuti nella cartella (visto che in alcuni sistemi operativi o usando alcuni programmi vengono creati in giro file che non c’entrano niente).

Written by StM

January 20th, 2008 at 3:35 pm

Software, errori strambi (2) – Operazioni Pianificate di Windows 2003 Server

with 2 comments

Lo dico solo per mettervi in guardia. Così magari non perdete quella mezz’ora-un’ora nel confessionale a domandarvi dove, dove, dove avete peccato nel vostro codice.

E poi mi è molto piaciuto il successone di pubblico del post precedente della serie, hai visto mai che riusciamo ad attirare un altro po’ di gente che non si sa con chi ce l’ha e perché, ma lo manifesta con cazzuta tenacia?

Credo, spero, che l’errore non sia davvero riproducibile, e che abbia solo bisogno di un esorcismo.

Operazione pianificata impostata per essere eseguita ogni 3 minuti. Il file si chiama start.bat, lancia un’applicazione java. Disabilito l’operazione pianificata, e risulta disabilitata. Faccio alcuni test ed eseguo a mano l’applicazione, osservando però che, invece di fare un inserimento di record nel database, ne fa N. Gratta e gratta il capo, non scopro che l’operazione pianificata stava *funzionando comunque*, anche se *disabilitata*? Soluzione: rinominare il file start.bat con un nome qualsiasi. Anche se il riavvio del computer può aiutare.

Giusto per avvisarvi di non dare mai nulla per scontato. I programmatori, è vero, hanno un po’ troppo il vizio di dare la colpa al computer quando invece è tutta loro, ma non sempre hanno davvero torto.

Written by StM

November 29th, 2007 at 7:40 pm

Posted in software e OS

Tagged with , ,

Anche le gonadi beneficiano delle rotonde

with 7 comments

Girano girano e girano.

Ieri ho fatto trasferire di server tutta la sitaglia che gestisco, perché sono capriccioso e voglio PHP5. Le cose importanti sono andate bene. Però attualmente fate conto che le mie gallerie di immagini non esistano, ok? C’è qualche fottuto problema con il PATH_INFO, e fate anche finta di accondiscendere. Così ho deciso di buttare via delle ORE della mia vita per vedere se, invece di darmi pena per rimettere in sesto quel brontosauro grasso di Gallery, potevo installare qualche altro software che avesse quei 3-4 requisiti e che fosse in un linguaggio tra php, python, perl, ruby, insomma ampia scelta, mica mi attaccavo a nulla.

Alla fine invece a qualcosa mi sono attaccato: al tram. Tonnellate di script tutti uguali, che neanche si preoccupano né di mostrare peculiarità né di implementare quelle 4-5 cose veramente utili, mentre si profondono in funzionalità cretine e inutilizzabili. C’è una frenesia dilagante tra gli sviluppatori da “io so usare ajax”; va bene, grazie tante, ma da come hai implementato direi che non sai usare un mouse, un monitor e un browser; oppure non sei umano. Software tutto sommato graziosi hanno smesso di essere sviluppati anni fa, e tuttavia c’è sempre qualcuno che pensa di poter fare meglio iniziando da zero; ma va’ ciapà’ i rat’, scusa. Ho capito che Flickr e Picasa rendono poco rosea la prospettiva dei software per fotogallerie installabili, ma questo dovrebbe fungere da incentivo, non dovrebbe indurre a pensare “be’, se uno vuole qualcosa di decente usa i servizi di Yahoo e Google, noi sviluppiamo schifezze per masochisti”. Checcazzo.

I miei amici di Bluehost poi s’erano dimenticati di ridarmi l’accesso ssh allo spazio web, e quando me l’hanno dato mi sono accorto che qualche cervellone ha creato la linux box più incasinata della storia dell’uomo dal 33 d. C. in avanti (circa) e tra le altre cose non posso utilizzare gzip.

Tutto questo quando dovevo finire di leggermi una robetta sulla fotografia, una guida per il venturo viaggio, e scendere in strada accoltellando ignari sviluppatori di applicazioni web a caso. Vi suggerisco solo di non impegnare rotonde senza prima controllare se vi stiano girando attorno le mie gonadi, ché attualmente sono MOLTO pericolose.

Written by StM

August 4th, 2007 at 9:16 pm

Ho mica già parlato di Trenitalia, recentemente?

with 8 comments

Non è per le quattro ore e mezza per giungere da Milano Centrale a casuccia mia.

[Parentesi di mugugno off-topic]

Che poi era MESI che non pioveva. Quand’è che decide di smaltire gli arretrati? Ma quando il mio bel trenino arriva GIUSTO GIUSTO nell’istante in cui il mio bell’autobus parte, cosicché possa aspettare 45 minuti per quello dopo. Ah, amato capoluogo di provincia. Vediamo un po’ cosa offrono i dintorni quanto a cena… escludendo i distributori automatici… uhm… niente. Non offrono niente, i dintorni. Tabula rasa. Deserto. Fischia il vento, ma soprattutto urla la bufera. Mi spremo come un pompelmo ma il luogo più vicino che mi viene in mente è a un chilometro. Vabbe’. Faccio due passi. Tanto sono due gocce. Ogni quattro secchiate.

E lì per lì non ho nemmeno badato al fatto che non mi ha rilasciato scontrino fiscale, quindi non finisce nel rimborso spese. Uff.

[/Parentesi di mugugno off-topic]

Dicevo, non è per queste bazzecole che ormai non impressionano più nessuno. E’ il sito, perdiana.

Qualche anno fa un mio collega di università, nel mentre che aspettava di laurearsi, aveva cominciato a lavorare a tempo pieno come programmatore; e ci raccontava di come stesse scrivendo in java la nuova versione di un portale piuttosto rilevante. Va bene che era stato banfato dai datori di lavoro come un superespertone di java, e che era (è?) un ragazzo in gamba, ma all’epoca ne sapeva quanto me, forse meno (avevo parecchio expato su Thinking in Java, sul quale avevo anche cercato di perdere diottrie stampandolo piccolo su un plico di fogli A4 tagliati a metà, e che mi erano stati rilegati con fare scazzato perché avevano tutto l’aspetto di fotocopie illegalissime); e io non ne sapevo granché.

Non crediate che dietro ai portaloni ci siano le menti di grandi designer, ingegneri illuminati e programmatori con le gonadi; facile che ci sia piuttosto il sangue sputato da qualche neolaureato a cui è stato detto di fare una cosa grossomodo così e cosà, usando questo e quello (progettazione, questa sconosciuta). E magari così si spiega il caso di Italia.it, ma non entro nel merito. Però spezzo una lancia a favore dei giovani, tra le cui fila tra l’altro mi ascrivo (e sennò la lancia restava integra, tiè): assorbono come spugne (specie quando PIOVE, porca ZOZZA – scusate).

Ma veniamo a trenitalia.com (non ve lo linko perché mi viene l’angoscia). Volete acquistare un biglietto online. Sequenza.

  1. Cercate nell’orario il treno che volete prendere.
  2. Pigiate “acquista biglietto”.
  3. Scegliete tariffa, posto preferito, che misura di reggiseno/pacco deve avere la vicina/il vicino, a che ora il mondo finirà, di quanto volete tardare, se volete ritirare il biglietto in stazione, se lo volete sul treno, se volete la fattura via mail, se la volete alla biglietteria (ma perché devono essere esclusivi???), se volete il pecorino sui rigatoni, eccetera.
  4. Procedete, e vi verrà chiesto il login.
  5. Fate il login. Difficoltà aggiuntiva se non vi ricordate la password, sorvoliamo. E sorvoliamo anche sul fatto che il login è in chiaro.
  6. La password è scaduta.
  7. Fate il cambio password.
  8. Ora potete tornare alla homepage -.-
  9. Rieseguite i punti da 1 a 5.
  10. Scegliete il metodo di pagamento.
  11. Pagate in modalità sicura.
  12. Fatevi mandare l’sms con il numero di prenotazione, che darete al controllore o in pasto alle biglietterie self-service.

Che dire… non è esattamente l’Amazon one-click shopping…

[Concorso della settimana: perché diavolo il 50% dei profili dei siti ciatta-ciatta incominciano con che dire...?]

Written by StM

March 7th, 2007 at 10:51 pm

[VB6] Nientemeno che salvare un blob in un byte array :|

with 5 comments

Strano a dirsi, c’è ancora gente che usa Visual Basic 6; ancor più strano, non ho trovato in rete un modo furbo di mettere il contenuto di un blob in un array di byte. Il più furbo che ho trovato credo fosse salvarlo su file e poi leggere da file, ma del resto stiamo parlando appunto di sviluppatori Visual Basic (ammmòri :*).

Normalmente il metodo Read dell’oggetto ADODB.Stream restituisce una Variant (vade retro), ma non si offende se il risultato lo piazzate direttamente in un array di byte, quindi il sistema è presto trovato (unica difficoltà capire che lo stream va “riavvolto” e ricordarsi la sintassi per creare array in VB).

(lascio questo messaggio nella bottiglia se servisse ancora a qualcuno… anche se io per esempio cercavo direttamente termini inglesi e quindi non me lo troverei, questo post… direte voi, scrivilo in inglese… uff…)

[...]
Dim con As adodb.Connection
'a un certo punto la creo, la apro, eccetera, ma questo lo saprete
[...]

Dim rstblob_in As ADODB.Recordset

Dim dbstream As ADODB.Stream
Set dbstream = New ADODB.Stream
dbstream.Type = adTypeBinary
dbstream.Open

Set rstblob_in = New Recordset
rstblob_in.Open "select ILBLOB from TABELLA " _
                & "where ID='cippirimerlo'", con, adOpenStatic

Dim letto As Boolean
letto = False

If Not rstblob_in.EOF Then
        If rstblob_in("ILBLOB").ActualSize > 0 Then
            dbstream.Write rstblob_in("ILBLOB")
            letto = True
        End If
End If

If letto Then
        dbstream.Position = 0 'riavvolgo il nastro
        Dim ilblob() As Byte
        ilblob = dbstream.Read
        'e poi ne fate quel che volete
End If

Written by StM

March 6th, 2007 at 6:09 pm

Posted in how-tos

Tagged with

Perché potreste non volermi assumere

with 9 comments

(caro lettore, sei malauguratamente capitato nel Mese del Risveglio Nerd. Abbi pazienza, prima o poi ritornerò a postare tette. Come dite? Non ho mai postato tette? Be’, ho fatto male.)

Io non faccio debug. Quasi mai. Il minimo, diciamo. Ci metto un fottìo di tempo (sono lento & perfezionista), ma alla fine il programma è finito. Senza averlo mai lanciato nemmeno una volta.

Poi i miei programmi… se li guardo li trovo eleganti. Ad una seconda occhiata, a dire il vero, quella in cui mi metto nei panni di uno che passa di lì per caso, mi viene da dire “Occazz’, che è ‘sta robba?”. Sono eleganti, sì, sintetici, sì, ma per capirci qualcosa bisogna sforzarsi un pochetto (raggiungo i 3 livelli di ereditarietà in un batter d’occhio). Non per nulla scrivo una marea di documentazione, eh, ma mi par di capire che nel mondo reale non la guardi mai nessuno, preferendo il buon vecchio “ehi, com’è che si fa questo?”.

Forse non sono bravo a lavorare in team. Se non altro perché sono molto geloso delle mie scelte di progettazione, e poco tollero sia il pressapochismo che l’ambizione esagerata (rispetto ai talenti disponibili). E poi credo di avere sempre ragione ma non ho mai voglia di impormi. Poi vabbe’, lo ammetto: le mie scelte di progettazione diventano tali al 30-50% del “tempo di sviluppo” – prima è sperimentazione; non posso mica tenere fermi tutti gli altri mentre decido il da farsi, no?

Poi magari divento bravo a raccogliere le specifiche in anticipo e a progettare con dovizia, non si può mai dire (basta che impari a fare interrogatori convincenti e che diventi un pozzo di conoscenza). In effetti non ho mai realizzato un progetto ideato da me. Ma il mio futuro è oscuro.

Sono un distratto cronico (con preferenza per le distrazioni GROSSE); questo come minimo dimezza la mia utilità in certi ambiti, ed è un peccato. Ho maggiore attitudine alla speculazione che ad azioni di immediata e concreta utilità.

Mi piace imparare – non sono molto da copia&incolla; ciò mi permette di farmi un bagaglio di conoscenze, ma mi rallenta.

Non sono bravo a spiegare, a fare quadri della situazione, a mettere le freccioline “voi siete qui” in modo chiaro e semplice. Questo sì che ha bisogno di debug. Alla terza funziona bene, ma ormai è troppo tardi. Tutto deriva dal fatto che sono ormai incastrato nel ruolo di “pensatore diverso”, quello che non sottolinea il soggetto in primo piano ma tutta una serie di dettagli dello sfondo. Tanto il soggetto è lampante, mi dico, ma forse se considerassi che a volte è l’unica cosa che importa al mio interlocutore…

Written by StM

February 8th, 2007 at 10:57 pm

Posted in nosce te ipsum

Tagged with

Death of a computer programmer

with 12 comments

Ecco quelle cose che potete mettere in atto se proprio volete che io faccia schifezze e ci metta più tempo del dovuto:

  1. Non datemi documentazione o specifiche, oppure datemele obsolete, siate evasivi e arrangiatisti
  2. Datemi da finire (alla svelta) il lavoro cominciato da un altro
  3. Obbligatemi ad usare strumenti che non so usare (e che quindi con ogni probabilità sono oggettivamente pessimi)
  4. Fate fruttare il mio tempo interrogandomi in ogni momento riguardo allo stato di avanzamento dei lavori
  5. Ditemi, all’atto dell’assegnazione, che la scadenza è domani; poi spostatela di giorno in giorno, in modo che io non faccia piani di ampio respiro ma metta pezze su pezze
  6. Cercate di concentrare la maggior parte del carico di lavoro nel minor tempo possibile, per esempio lasciandomi senza far nulla per settimane e dandomi poi tre nuove cose da fare nello stesso giorno
  7. Suggeritemi di chiedere aiuto a qualcuno con maggiore esperienza ad ogni minimo intoppo, cosicché si sarà in due a meravigliarci per terrificanti, straordinarie problematiche mai viste prima (e si sarà in due a perdere tempo)
  8. Datemi tutta la strumentazione necessaria, per esempio UN solo computer per eseguire contemporaneamente DUE task da utilizzo intensivo della CPU, in aggiunta alla normale amministrazione di un IDE esoso di risorse e di vari programmilli indispensabili
  9. Fate fare tutto a me da zero, tutto – se mi serve (magari in fretta) un database Oracle, fatemi imparare ad installare Oracle (sul computer di cui al punto precedente); se mi serve una tirata di coca, fornitemi un biglietto aereo per la Colombia
  10. Apprezzate quello che faccio, sottolineando le volte in cui toppo e sorvolando su quelle in cui faccio qualcosa di buono (e lasciamo stare tutto ciò di buono che faccio che non è documentabile) – è un vero incentivo a fare bene

(vedetelo come un testamento, lammiseriaccia :P)

Written by StM

January 30th, 2007 at 10:48 pm

Posted in IT and me

Tagged with ,

Democracy killers

with 6 comments

Il documentario-denuncia di Beppe Cremagnani ed Enrico Deaglio avrebbe potuto essere condensato in un’oretta invece che in un’ora e mezza, ma poi come lo giustificavi il dvd? Mantellini (ho preso a linkarlo spesso, spero sia solo una fase sennò lo devo assumere per scrivere direttamente qui) riporta un fotogramma che vale quella mezz’ora di fuffa in più.

Io intanto mi limito a rabbrividire nell’aver quasi certamente riconosciuto la piattaforma utilizzata per creare il programma truffa-elezioni… Visual Basic 6.0. Oltre al danno la beffa. Insomma, mi uccidi la democrazia e per giunta lo fai in un linguaggio orribile e abbandonato anche da chi l’ha creato? Che cosa triste… uno si figurava l’hacker genio, sregolatezza, cappello nero e gadget fighi, e invece…

Ma forse è indicativo anche questo di quanto le nostre libertà, che sempre più saranno influenzate dal mondo elettronico, siano in balìa di incompetenti – che siano in buona o in mala fede.

Written by StM

November 28th, 2006 at 2:38 pm

Scala JKL di gravità dei bug

with 4 comments

(…dedicata a un collega…)

Grado Gravità del baco Effetti
I Nessun baco visibile, compilazione ed esecuzione perfette out-of-the-box. Sorriso a 32 denti.
II Qualche svista sintattica, niente che non si risolva in frazioni di secondo. Ampio sorriso.
III Il baco si lascia correggere solo dopo una breve riflessione. Fugace aggrottamento di ciglia.
IV Un accavallamento di bachi minori rende necessarie varie prove in sequenza. Si sbuffa e si borbotta.
V Un baco bastardo tiene impegnati per diversi minuti. Bestemmie sussurrate, minacce di violenze alle periferiche.
VI Un baco laido si annida in un posto dove non si era pensato di guardare. Si può raggiungere e superare l’ora di ricerca per neutralizzarlo. Le periferiche di interfaccia con l’umano cominciano a subire moderate violenze.
VII Dopo numerose ore di sviluppo, si scopre che il design era difettoso fin dal principio, e bisognerebbe rifare tutto da capo. La soluzione di ogni errore porta via tempi inumani. S’irraggia odio per il calcolatore. Chi staziona nei pressi assiste a quelli che appaiono come incontri di pugilato.
VIII Un baco bastardamente laido, difficile da risolvere di per sé, nel frattempo vi ha eliminato dati preziosi, magari altri sorgenti. Ostentando indifferenza introducete in ufficio un maglio da mezza tonnellata e punite il calcolatore per la sua sfrontatezza.
IX Il vostro progetto è pronto, terminato. Fate solo quell’ultima modifica e… e scompare tutto dal vostro hard disk, senza che capiate il perché; l’ultimo backup valido risale a un mese prima. I calendari si staccano dalle pareti e vanno a nascondersi negli angoli turandosi le orecchie per non sentire; le vibrazioni prodotte dall’incazzatura cominciano a essere misurabili in gradi della scala Richter.
X In seguito a un baco di grado inferiore, tirate una capocciata al monitor in preda alla disperazione; quando rinvenite, vi accorgete di aver perso la memoria, e che l’unico linguaggio di programmazione che vi ricordate è la guida TV. La tastiera viene proiettata fuori dalla finestra a velocità Mach 1.5; il bang sonico generato provoca l’esplosione del monitor. L’unità di elaborazione centrale viene assorbita in un buco nero.
XI Chiedete ai vostri compagni di sventura se possono farvi il piacere di testare il vostro software tutti in contemporanea. Sfortunatamente, le chiamate di sistema a basso livello che avete incluso nel software e un paio di stack overflow generano l’istantaneo azzeramento di tutti i dati su tutti i dischi di tutti i computer su cui era eseguito e relative reti locali. Emigrate e vi fate una plastica facciale, ma a causa delle macumbe morirete giovani, visualizzando una schermata blu poco prima di spegnervi.
XII Per qualche oscuro motivo mistico, il vostro software spalanca le porte dell’Inferno. Bestemmiate, ma solo per ingraziarvi i nuovi padroni della Terra.

(Trascinata di peso dalla sezione programmazione, giacché inizialmente doveva essere un post del blog, ma con lo script vecchio le tabelle venivano fuori da schifo)

Written by StM

October 24th, 2006 at 8:01 pm

Posted in scritti

Tagged with ,