0
Mag 31 2018

Compara e unisci PDF

I PDF sono dei file molto comodi da leggere, ma possono diventare un inferno da modificare.

Avendo preso l’abitudine di prenderci appunti direttamente sopra, per me diventa un bel problema quando un documento viene aggiornato, così ho deciso di fare un’applicazione web che consenta di compararli visivamente e unirli.

È ancora un po’ un proof of concept. In pratica si basa sul noto PDF.js di Mozilla: lo usa per renderizzare le varie pagine in due canvas affiancati.

La navigazione è basata tutta su JavaScript vanilla, o meglio, su ES6, quindi con i browser moderni funziona, quindi, pur non avendo provato, sono sicuro che non vada su Internet Explorer.

Quindi questo progetto mi ha permesso di mettermi alla prova con JS, per vedere se riesco ancora a fare qualcosa senza jQuery, e mi ha dato modo di imparare un po’ a usare le API HTML5 per il Drag&Drop con i file.

Invece per il drag&drop dell’elenco di pagine che verranno unite mi sono affidato alla libreria html5sortable, che però non ha altre dipendenze. Avevo cominciato a implementare anche quello, però i risultati non erano buoni e la difficoltà parecchia. Quindi per questa cosa ha avuto senso usare una libreria, che peraltro non pesa molto.

Infine, per il lato client, ho usato Bootstrap 4, giusto per dare un po’ di classe al tutto.

Per il lato server ho usato una Servlet Java: pur non piacendomi molto come tecnologia, ha il vantaggio di poter chiamare direttamente l’ottima libreria iText, che è veramente potente e versatile.

L’unico svantaggio è la viralità della sua licenza: Afferro GPL. Mi vedo quindi costretto a rilasciare il lato server sotto questa licenza, invece il lato client, da solo, per quanto mi riguarda, se la Afferro lo concede, lo potete considerare sotto licenza MIT (non sono sicuro sia possibile, però).

Per il momento è ancora allo stato embrionale, soprattutto il codice lato server, quindi per motivazioni di sicurezza non ne faccio il deploy sul mio VPS, però vi lascio volentieri il codice per il download :-) .

0
Apr 17 2016

LibGDX e formati personalizzati di modelli

LibGDX

Di tanto in tanto mi diletto con motori di rendering 3D e game engine. Questa volta è satato il turno di LibGDX.

LibGDX è un framework per lo sviluppo di videogiochi 2D e 3D scritto in Java.

Il suo scopo è quello di rendere disponibili delle API Crossplatform (Windows, Linux, Android, OS X, iOS etc…) per il rendering 2D e 3D (OpenGL ES), la matematica associata, l’audio (OpenAL, Ogg ed MP3) e la fisica (Box2D e Bullet). Inoltre, dove possibile, usa metodi nativi scritti in C per aumentare le prestazioni, ma essendo scritto principalmente in Java, permette l’uso qualsiasi classe dell’enorme libreria standard o qualunque libreria scritta nello stesso linguaggio.

Un altro punto di forza di questo progetto è la grande community che vi è attorno, constatabile anche nel numero di stelle su GitHub.

Forse è merito anche della licenza, molto permissiva: la Apache License 2.0.

Formati di modelli personalizzati

Uno dei miei obiettivi, che prima o poi potrebbe diventare realtà, è fare un gioco, magari anche piccolo, ma compatibile con le mappe dei vecchi Call of Duty 1 e 2, con cui ho giocato molto in LAN con i miei amici.

Questo però richiede o la conversione a priori del… [Leggi il resto...]

0
Mag 11 2012

Eclipse

Finalmente mi sono deciso ad usare un IDE per programmare in C++.

Tutto è nato dall’esigenza di provare Ogre, un motore di rendering 3D. Questa volta avevo voglia di fare le cose bene, così ho seguito il consiglio del loro wiki e ho fatto la mia scelta.

I tre candidati erano Eclipse, NetBeans e CodeBlocks.

L’ultimo l’ho escluso a priori perché in realtà l’avevo già provato su Windows e non mi era piaciuto.

Così la sfida è stata tra Eclipse e NetBeans.

Alla fine ho scelto il primo perché occupava meno spazio.

Che dire? È veramente utile e comodo.

Sono 250MB occupati ma in compenso mi risparmia un sacco di fatica e fa già lui dei controlli per me, per esempio sul tipo, sull’esistenza di variabili/funzioni/classi.

Insomma, se state ancora programmando con editor che offrono solo l’evidenziazione del codice vi consiglio di provare anche a voi questo programma.

È libero, multipiattaforma e supporta anche altri linguaggi, Java in primis.

1
Mag 23 2010

Installare Geogebra su Linux

Geogebra è un bel programma di matematica e geometria.

È rilasciato sotto GPL ed è scritto in java, così è multipiattaforma.

Tuttavia non esiste un pacchetto per le distribuzioni, così ecco un metodo universale su linux per farlo.

Purtroppo l’unica versione scaricabile per Linux pesa 40MB perché include anche java, cosa che però noi non useremo. Useremo il java del nostro computer.

Scarichiamo il .tar.gz dalla pagina di download dal sito ufficiale di geogebra, quindi estraiamo i file .jar e la cartella unsigned in /cartella/di/destinazione (cambiatela a vostro piacimento ovviamente).

Apriamo un terminale di root e digitiamo:

cd /usr/local/lib
mkdir geogebra
mv /cartella/di/destinazione/* geogebra/
wget -O geogebra/geogebra.svg http://upload.wikimedia.org/wikipedia/commons/5/57/Geogebra.svg

Sempre da root dobbiamo ora creare due file.

Per farlo usiamo nano. Si usa con nano nome_file per aprire un file. CTRL + O per salvarlo (bisognerà rispondere Y o S se vi chiede se salvare), quindi CTRL+X per uscire.

Modifichiamo il file /usr/local/bin/geogebra e mettiamo il seguente contenuto:

/usr/bin/java -jar /usr/local/lib/geogebra/geogebra.jar

Rendiamolo eseguibile con chmod +x… [Leggi il resto...]

1
Feb 13 2010

Usare JDownloader su Linux senza SUN Java

Ho conosciuto da poco un software che si chiama jDownloader (grazie Bosca!).

Serve per scaricare da siti come megaupload e simili senza dover mettere il captcha (spero di averlo scritto corretto) e gestendo automaticamente le attese e gli account premium.

È scritto in Java e penso che la J abbia proprio questo significato.

Su GNU Linux esiste OpenJDK per non usare Java della Sun ma non andava.

Ecco come risolvere questo problema:

(da root)
Metodo 1:
nano /proc/sys/net/ipv6/bindv6only
Sostituire 0 con 1
CTRL+O, CTRL+X per salvare e uscire
Metodo 2 (sempre da root):
echo 0 > /proc/sys/net/ipv6/bindv6only

E funzionerà!