Visualizzazione post con etichetta Programmazione. Mostra tutti i post
Visualizzazione post con etichetta Programmazione. Mostra tutti i post

mercoledì, settembre 02, 2009

Triste storiella dal mondo della programmazione in Java

Ho piacere di raccontarvi una piccola chicca a cui ho personalmente assistito alcuni giorni fa.

Ero seduto al mio PC, quand'ecco arrivare una nuova persona (che da ora, per semplicità, chiameremo Niubba) fino a quel momento mai vista.


Continuando a farmi i c***i miei, sento e vedo con la coda dell'occhio che Niubba saluta alcuni dei presenti nella stanza. "Forse si conoscono già... bah!" penso tra me e me.


Dopo diversi minuti, la vedo sedersi ad un altro PC, poco lontano da me. Lo accende, attende alcuni secondi, pigia qualche tasto e, passati alcuni istanti, la vedo alzarsi per andare
a chiedere qualcosa un'altra persona (che chiameremo Tizio) da lei poco distante.

Non sento cosa si dicono, e sinceramente non mi interessa particolarmente.


Persevero nei miei intenti quando di colpo mi trovo Niubba e Tizio vicino alla mia scrivania, sulla quale si trovano alcuni manuali di vario genere.

Tizio inizia a prenderne in mano alcuni e, dopo averli esaminati con attenzione superflua, gliene passa in mano uno. "Wow!" esclama Niubba, non celando un'espressione di lieve perplessità sul suo volto.
"Bah..." continuo a pensare io. Il manuale in questione è un malloppazzo di 1000 e passa pagine per superare l'esame SCJP (Sun Certified Java Programmer).
"Niubba vorrà forse prepararsi all'esame SCJP?" mi chiedo senza troppo interesse.

Niubba prende in mano il gigantesco fermacarte e torna a sedersi al suo PC.


Passa circa mezz'ora. Mi alzo per andare a fumare una sigaretta. Passo dietro Niubba e la vedo che sta leggendo le primissime pagine dell'orrendo mattone cartaceo. Sullo schermo del PC non c'è niente,
solo il vomitevole sfondo di default di Windows XP con la collina verde e il cielo blu.
Torno dopo 10 minuti. Ripasso dietro Niubba. Stavolta, sullo schermo noto una finestra di Microsoft Internet Explorer aperta sulla pagina di Google Translator. "Abbiamo fatto progressi..." penso divertito.

Passa la mattina. Giunta l'ora di pranzo, mi alzo per uscire ed inevitabilmente passo ancora dietro a Niubba. E' ancora lì, ferma sulle stesse prime pagine dell'inutile accozzaglia di inchiostro e carta, con davanti la stessa
finestra del browser. Se non fosse che ogni tanto ha digitato qualcosa alla tastiera, oserei dire che è stata immobile per più di 2 ore.

Rientro dopo pranzo. Niubba è ancora lì, stavolta con un'espressione lievemente provata sul volto. Incomincio ad incuriosirmi seriamente, al punto che mi risiedo alla mia scrivania ed incomincio a tenerla sotto osservazione buttandole un'occhiata ogni tanto.


Le ore passano, io continuo ad osservarla, e sento crescere in me l'orrenda certezza sul fatto che sto finalmente capendo che cosa Niubba sta combinando da praticamente tutto il giorno.

Giunto il momento di andare via, a fine giornata ho finalmente compreso. E silenziosamente ho pianto dentro di me.

Niubba deve imparare Java.
Niubba non sa un c***o di Java (forse non l'ha mai neanche sentito nominare).
Niubba chiede a Tizio se può darle qualche aiuto.
Tizio sa poco più di lei, pertanto si para il culo dandole in mano il primo manualone su cui intravvede la scritta "Java".

Niubba rimane basita dallo spessore del libro, ed inizia a temere il peggio. Nonostante ciò, ringrazia Tizio per il prezioso aiuto.
Niubba apre quindi l'osceno volume. Legge le prime righe e scopre con tremenda sorpresa che il libro è in inglese. *TUTTO* in inglese. Inizia a sudare. Lei non sa una parola di inglese.

Ma deve imparare Java, e non possiede altri strumenti. Non sa che su Internet ci sono milioni di miliardi di guide e howto per chi si avvicina per la prima volta al linguaggio. Non sa che esistono manuali in PDF gratuiti da scaricare liberamente dalla rete. Non sa che forse avrebbe fatto meglio ad andare a zappare i campi e a mungere le mucche.
Presa dallo sconforto, Niubba capisce che l'unica strada percorribile è tradurre il manuale paragrafo per paragrafo. Ecco spiegato il saltuario uso della tastiera. Ecco spiegato Google Translator. Ecco spiegata l'espressione sul suo volto che peggiora di ora in ora. Ecco spiegato perchè in Italia l'informatica fa pena.

Ecco spiegato perchè attendo con ansia e trepidazione il 21 dicembre 2012.

lunedì, febbraio 02, 2009

Canephora, un piccolo filesystem virtuale scritto in Java

Signore e signori, coders e h4x0rz, sono lieto di comunicare che ho da poco dato vita ad un nuovo progettino.

Esso si chiama Canephora, è ospitato dal fantastico servizio BarberaWare di cui vi ho già parlato, e consiste in un piccolo filesystem virtuale scritto interamente in Java.

Attualmente si trova ancora in fase di intenso sviluppo e non è per niente completo, tuttavia già si può apprezzare una release di prova scaricabile dalla pagina del progetto. E' inoltre disponibile un repository SVN dal quale si può scaricare liberamente il codice sorgente, rilasciato sotto licenza GPL.

Sarei molto grato a tutti se lo provaste e mi faceste pervenire consigli, critiche, idee o suggerimenti per migliorare il mio piccolo progetto.

Inoltre, in caso ci fosse qualcuno interessato a partecipare attivamente allo sviluppo, sappia che è il benvenuto! :-D

venerdì, giugno 20, 2008

Classe esistenzialista

public class Question extends Hamlet
{
private boolean b;

public Question(boolean a)
{
this.b = a;
}

public boolean isTheProblem(boolean c)
{
return (c == b);
}

public boolean getTheAnswer()
{
return this.isTheProblem(/*2*/b||!/*2*/b);
}
}

mercoledì, febbraio 27, 2008

La sfiga da un punto di vista informatico

Piccolo ed insignificante post, leggermente blasfemo, designato a sottolineare la nefandezza degli eventi quotidiani e le cause che li generano secondo schemi squisitamente deterministici ma, ahimè, assolutamente non alla nostra portata per essere compresi nella loro interezza.


Noi umani, considerati come esseri viventi, siamo solo un piccolo sottoinsieme di tutte le entità di vario genere e natura che compongono l'universo, e l'esistenza di ogni singolo individuo, unita a quella di ogni altro elemento definibile come tale, contribuisce a formare uno o più sistemi complessi (non complicato, complesso).

Ci sono studiosi che cercano, in un modo o nell'altro, di provare o meno l'esistenza della sfortuna, più amichevolmente conosciuta come sfiga, ma ogni loro lodevole tentativo finisce inesorabilmente col produrre e consegnare fuffa di altissima qualità.

Io invece preferisco uscire da un qualsiasi eventuale schema mistico/esoterico/divino e concentrarmi su un approccio più "informatico" (beh, in fondo sono un informatico...).
Prendendo in considerazione il paradigma di programmazione ad oggetti, se provo a considerare ogni entità del cosmo come un oggetto, mi ritrovo a concludere che la sfiga non è nient'altro se non una proprietà di tale oggetto. Non una forza, non un'energia, non una mano invisibile, non un volere divino, ma una pura e semplice proprietà di un oggetto istanziato e referenziato.

Sto aspettando il garbage collector.

martedì, novembre 20, 2007

Ho provato Android, la nuova e rivoluzionaria piattaforma di Google per cellulari e PDA

Non ho saputo resistere... Non appena è uscita l'SDK di Android, la nuova e rivoluzionaria piattaforma di Google per cellulari e PDA, da bravo e irrecuperabile smanettone che sono l'ho subito installata e provata.

Lo scopo di questo post non è scrivere una recensione, ma devo dire che sono rimasto piacevolmente colpito da questo nuovo sistema.

L'emulatore è veramente veloce (a differenza di quello disponibile per provare OpenMoko), oltre che bello, ma ciò che più sorprende sono la bellezza e la semplicità d'uso dell'intero sistema una volta caricato e pronto.

Effetti di tutti i tipi, trasparenze, immagini, animazioni, supporto al touch-screen, cubi in OpenGL... il tutto in un'interfaccia, ripeto, semplice e pulita. Non mi vergogno a dire che, per quanto riguarda l'aspetto prettamente software (qui l'hardware non c'entra), preferisco di gran lunga Android all'iPhone (sì, ho avuto modo di provare di persona un iPhone... grazie Dany!).

Siccome non mi voglio dilungare troppo, preferisco postare un paio di screenshots (già, perchè uno screenshot vale di più di 10^3 parole...):

Come potete vedere, l'emulatore è proprio bello (inoltre, si possono cambiare le skin! LOL!). Notate come il mio sito viene visualizzato correttamente con il browser già presente in Android... già, ma di che browser si tratta?

Ma di Safari, naturalmente! E' una scelta se vogliamo discutibile, ma quantomeno esso adotta KHTML, il miglior motore di rendering di pagine web mai sviluppato. Il sistema operativo non viene ancora riconosciuto correttamente (ShinyStats lo riconosce come unknown, e qualche altro sito lo ha riconosciuto come WIndows ME).

Ah, naturalmente con l'SDK è possibile sviluppare, in Java, qualsiasi tipo di applicazione venga in mente. L'unico freno è la fantasia. Solo la fantasia.

Cavolo... Google ha fatto centro di nuovo...!!!

Quindi, che dire... non vi resta che provarlo, gente. Ne rimarrete entusiasti!


martedì, ottobre 09, 2007

Convertire documenti di Microsoft Office in PDF tramite la riga di comando

Oggi mi sono definitivamente ed ufficialmente rotto i cojoni.

Sono stufo ed arcistufo di trovare gente che si ostina ad utilizzare gli orrendi formati proprietari di Microsoft Office per divulgare documenti et similia. Mi riferisco in particolare ad alcuni docenti che non riescono a capire che le slides sarebbe meglio distribuirle in formato PDF piuttosto che in quel cesso di PPT.

Quante volte desidero studiare al PC con un sistema leggero e minimale, un semplice Fluxbox come WM e xpdf per leggere i PDF. E invece no! Devo caricare quel bisonte di OpenOffice per poter leggere le slides o gli esercizi (questi ultimi il più delle volte in formato DOC). Poi, già che ci sono, mi metto lì e, non avendo un cazzo da fare, butto nel cesso il poco tempo prezioso che ho per esportare in PDF tutti i files, uno per uno.

Alchè oggi ho detto "basta!!!".

Ho quindi stilato, dopo qualche breve ricerca su Google, una mini-guida che spiega come convertire qualsiasi documento di Microsoft Office in PDF usando semplicemente la riga di comando. Prima di tutto, è necessario avere OpenOffice installato sul proprio sistema, poichè il tutto si baserà sull'uso di una macro creata appositamente per lo scopo.

Per prima cosa, lanciare il binario generico di OpenOffice con:

$ ooffice

Quindi, per creare una nuova macro, cliccare rispettivamente su Tools ---> Macros ---> Organize Macros ---> OpenOffice.org Basic come riportato in figura:


Cliccare poi su My Macros, Standard e quindi sul pulsante New come in figura:


A questo punto, cancellare il testo che potrebbe essere presente nell'editor di testo e copiare il seguente codice (in
Visual Basic, bleeeaaah!!!):

Sub DocumentToPDF(strFile as string)
Dim oDoc as Object
Dim strFilterSubName as String

strUrl = ConvertToUrl( strFile )
oDoc = StarDesktop.loadComponentFromURL( strUrl, "_blank", 0, array(MakePropertyValue("Hidden",true)))

If not IsNull(oDoc) Then
strFilterSubName = ""
' select appropriate filter
If oDoc.SupportsService("com.sun.star.presentation.PresentationDocument") Then
strFilterSubName = "impress_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
strFilterSubName = "calc_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.WebDocument") Then
strFilterSubName = "writer_web_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.GlobalDocument") Then
strFilterSubName = "writer_globaldocument_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.TextDocument") Then
strFilterSubName = "writer_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.drawing.DrawingDocument") Then
strFilterSubName = "draw_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.formula.FormulaProperties") Then
strFilterSubName = "math_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.chart.ChartDocument") Then
strFilterSubName = "chart_pdf_Export"
Else
'
EndIf
EndIf

If Len(strFilterSubName) > 0 Then
oDoc.storeToUrl( ConvertToUrl( strFile & ".pdf" ), array(MakePropertyValue("FilterName", strFilterSubName ),MakePropertyValue("CompressMode", "1" )))
EndIf

oDoc.close(True)
End Sub

Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
oPropertyValue = createUnoStruct( "com.sun.star.beans.PropertyValue" )

If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf

If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf

MakePropertyValue() = oPropertyValue
End Function

Qui un piccolo screenshot:


Fatto ciò, salvare e chiudere OpenOffice.

Ok, ora arriva la parte più interessante.
Se siete in una directory in cui avete un mix letale di files PPT, DOC, XLS, ecc..., vi basta il semplice e comodo comando seguente per convertire tutti i suddetti files direttamente in PDF, senza dovervi neanche preoccupare di esplicitare il formato di origine (ci pensa la macro a rilevarlo):

$ for i in `ls *`; do ooffice "macro:///Standard.Module1.DocumentToPDF(`pwd`/$i)"; done

Naturalmente, ora ci si può sbizzarrire a fare script di ogni genere e sorta in base alle proprie necessità. Inoltre, per il comando sopra riportato non è necessario l'uso di X, perciò si possono convertire i files tranquillamente in modalità solo testuale.

Cià! :-D

lunedì, giugno 04, 2007

Nasce BarberaWare, il portale dedicato allo sviluppo di software libero in Piemonte

E' da poco nato BarberaWare, il portale dedicato agli sviluppatori indipendenti di software libero in Piemonte. News, aggiornamenti, documentazione, idee e proposte per tutti quelli che il software libero non si limitano ad usarlo ed apprezzarlo, ma lo fanno!

Dedicato a tutti coloro che vogliono distribuire il proprio codice e condividere le proprie idee in un ambiente collaborativo, esso offre pieno supporto e tutti gli strumenti necessari: spazio web, repository CVS, forum, mailing list, trackers e molto altro.

Quindi... carissimi sviluppatori piemontesi amanti della bagna caôda... fatevi avanti!!! :-D

lunedì, ottobre 30, 2006

Modellazione UML con GNU/Linux e Gnome

A coloro che come me si stanno avvicinando per la prima volta (vuoi per curiosità, necessità o studio) alla modellazione UML con l'intenzione di lavorare esclusivamente con strumenti liberi, consiglio Dia, un programma di modellazione e disegno vettoriale che fa uso delle GTK+ e che è in grado di esportare in una consistente varietà di formati.
Per chi volesse poi generare anche del codice a partire da un progetto in UML, c'è un programmino che si chiama "dia2code" che prende in input un file di Dia e sputa fuori il risultato in Ada, C, C++, IDL, Java, PHP, Python, SHP o SQL.

Per ottenere questi due strumenti, per chi usa Ubuntu Linux o Debian GNU/Linux è sufficiente un:
# apt-get install dia-gnome dia2code
Per chi invece usa KDE, è vivamente consigliato l'uso di Umbrello.

Infine, per un'introduzione al linguaggio UML semplice e ben fatta, vi consiglio la seguente pagina: Fabrizio Fazzino - Il linguaggio UML.

Buone modellate!

mercoledì, ottobre 25, 2006

Sistemi operativi online

Ecco qui un elenco dei cosiddetti "sistemi operativi online", vale a dire applicazioni AJAX che simulano un sistema operativo o un ambiente desktop all'interno di un web browser tramite pagine web dinamiche.

Per ora non riesco ancora a vederne l'utilità concreta, però si sa che l'informatica si sta lentamente spostando sempre di più verso ambiti web-based, quindi può darsi che questi "ambienti multipiattaforma" si riveleranno essenziali in un prossimo futuro.
  • JS/UIX - Simulazione di una shell UNIX, comprensiva di tutti i comandi base (c'è pure vi!), interamente scritta in JavaScript
  • FlyakiteOSX - Simulazione del desktop di MacOS X (comprese le chicche grafiche...)
  • YouOS - Simulazione di un ambiente desktop sviluppata da alcuni capoccioni del MIT
  • DeskWeb - Simulazione di un ambiente desktop, sotto licenza GNU GPLv2, scritta da un ragazzo di Torino conosciuto come "maxb"
  • eyeOS - Altro ottimo "web OS", sempre sotto licenza GPL, che oltre ad offrire un'interfaccia decisamente... uhm... "soave", permette, tramite la potenza di AJAX, di aggiungere nuove applicazioni e funzioni (grazie a maxb per la segnalazione!)
Se ne conoscete altri, segnalatemeli, così li aggiungo insieme a questi.

Hola!