[PDF] Librerie e applicazioni utili
Nel ricercare un tool su SourceForge che mi permettesse di esportare le immagini da un PDF, ho trovato interessanti librerie che mi propongo di analizzare nel medio-lungo periodo (il tempo è tiranno e gli impegni molti):
- PDFBox [Java]: PDFBox is an open source Java PDF library for working with PDF documents. This project allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from documents. PDFBox also includes several command line utilities.
- PHP PDF Factory [PHP]: PDFLib-free PDF creation using PHP. It has interface compatible with php pdf creator (pdf-php library). Implements most of Adobe recommended features like PageTrees, Outlines, and so on.
- XML-PDF Transformation GUI [Java]: This is a Java Swing GUI for popular XML tools from the Apache Group. It uses Xerces for XML validation, Xalan for XSLT, FOP for XML to PDF and iText for adding security features to the PDF. Can produce FO, HTML and PDF. I personally use it for my DocBook.
- QPDF [C++]: QPDF is a command-line program that [...] is capable of creating linearized [...] files and encrypted files. It is also capable of converting PDF files with object streams [...] to files with no compressed objects or to generate object streams from files that don't have them (or even those that already do). QPDF also supports a special mode designed to allow you to edit the content of PDF files in a text editor. For more details, please see the documentation links below.
- PDF Edit [C++,XPDF, QT3,QSA]: Free (and open source) editor for manipulating PDF documents. GUI version + commandline interface. Scripting is used to a great extent in editor and almost anything can be scripted, it is possible to create own scripts or plugins. Target platform are operating systems of Unix type (Linux, BSD).
- [PHP]: Want to create dynamic pdf documents with PHP, but don't want to (or can't) install any of those required modules? Wll we could have the solution.. for you, a PHP class which will allow the easy production of simple pdf documents.
- PDML [PHP]: PDML is an informal markup language written in 100% PHP, allowing to create complex PDF documents very easily for people already familiar with HTML. People familiar with PHP can also use it as a way to define templates for dynamic PDF documents. PDML is built on top of FPDF, and is licensed under the GPL;
- Peters PHP PDF Report: A PHP5 class, which capable to generate PDF report (w optional sections like pageheader, reportheader, content etc..) based on fpdf class. The report is defined in xml, groups' definitions and variable replacement from any database are supported.
- WP2PDF: it is a script that converts the content of one or more entries of the Blog-Software WordPress to PDF. It is based on FPDF, a free PDF library and written in PHP. It requires a working WordPress installation and PHP 4.x.
19:21 | Categorie: c++, HTML, java, PHP, programmazione, software | 0 Comments
[Java] Introduzione a JSP
Ho appena iniziato la lettura di "Pro JSP 2", un libro che sembra esser ben fatto, oltre ad essere recentemente pubblicato (risale al 2005).
Qui di seguito vediamo una breve introduzione alla tecnologia JSP e a come creare una pagina JSP con Tomcat come application server.
Introduzione
Java Platform Enterprise Edition 5 (Java EE 5) ha due tecnologie differenti ma complementari per produrre contenuto web: Java Servlet and JavaServer Pages (JSP).
Le servlet sono semplici classi Java che ereditano dall'interfaccia javax.servlet.Servlet
. Le servlet vengono compilate e distribuite all'interno di un servlet container, che consiste di un ambiente Java che gestisce il ciclo di vita della servlet e gestisce la comunicazione a basso livello basata sulle socket.
Il servlet container può esser parte di un web server preesistente e java-enabled oppure può esser usato come prodotto stand alone che si integra in un web server di terze parti.
Una pagina JSP invece consiste semplicemente in un file di testo che contiene del markup (solitamente (X)HTML)) utile per visualizzare il contenuto in un browser. all'interno di questo markup ci sono degli elementi JSP, che vengono usati per fornire la processazione logica atta a produrre il contenuto dinamico da una richiesta del borwser. Ogni pagina JSP viene di fatto convertita in una servlet al fine di fornire tale logica, da qui la complementarietà delle due tecnologie.
Il ciclo di vita di una JSP segue quattro fasi (assumendo che un browser la stia richiedendo):
- traduzione: generazione di una servlet a partire dal codice JSP presente nella pagina e sua compilazione;
- inizializzazione: viene caricata in memoria l'istanza della servlet generata al punto 1;
- esecuzione: viene richiamato il metodo
_jspService()
della servlet creata; - finalizzazione: distruzione della servlet attraverso la chiamata di
jspDestroy()
.
Hello JSP
Vediamo i passi per creare la prima pagina JSP:
- Scaricare Tomcat dal sito ufficiale. Nel mio caso ho scelto l'installer per Windows e ho specificato di installarlo come servizio che parte automaticamente all'avvio del computer. L'application server starà in ascolto sulla porta 8080;
- Aprite il borwser all'indirizzo http://localhost:8080/. Se l'installazione è andata a buon fine vedrete la pagina di default di Tomcat che mostra la pagina presente all'indirizzo
%TOMCATHOME%/webapps/ROOT/index.html
. - Recarsi nella directory di installazione di Tomcat ed entrare nella directory
webapps
. Qui creare la directoryjsppro_test
e al suo interno un'altra directory denominataWEB-INF
; - Tutte le applicazioni hanno un descrittore, che consiste essenzialmente di un file xml, il cui template di base è raffigurato qui sotto (
web.xml
): salvare questo file nella directoryWEB-INF
.<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
version="2.4" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</web-app> - Ora creiamo la pagina JSP (
test.jsp
) che ritornerà semplicemente la data e l'ora odierna.<html>
<body>
<h2>Greetings!</h2>
<p>The current time is <%=new java.util.Date()%> precisely</p>
</body>
</html> - A questo punto inserite il file
test.jsp
dentrosppro_test
ed eventualmente create una pagina index.html. Puntate poi il vostro browser suhttp://localhost:8080/jsppro_test/test.jsp
ed osservate il risultato.
00:02 | Categorie: java, web development | 0 Comments
[Link] Raccolta di cheet sheet
Qui di seguito una raccolta di "bigini" online :)
- Google: uno | due;
- Firefox | Thunderbird;
- Wordpress;
- CSS: uno | due | tre | quattro; HTML entità;
- Bash; VI; Ubuntu;
- LaTeX;
- DOS; Win32;
- Wikipedia;
- XSS; SQL Injection;
- SEO;
- Building cheat sheets in Eclipse;
Raccoglitori di cheet sheet e altro materiale
Ecco una lista di ottimi siti web che raccolgono liste di memorandum in formato PDF in merito a svariati argomenti:
[Java] Frequently Asked Question
Ecco una breve lista di tutte le FAQ che ho sommariamente raccolto in giro per la rete:
- FAQ su Cafe au Lait a cura del gruppo comp.lang.java;
- www.javafaq.nu: presenta libri gratuitamente scaricabili, fra cui per esempio "1000 Java Tips" (gli altri son presenti in questa pagina);
- JavaFAQ: contiene una lista di domande e risposte suddivisa in categorie di difficoltà;
- FAQ di Cristiano Sadun, non più aggiornata da 5 anni ma contenente svariate domande (e risposte) interessanti.
08:47 | Categorie: java | 0 Comments
JoBo, download manager e web spider tool in Java
Tempo fa avevo cominciato a buttar giù qualche riga di codice per creare un tool che controllasse la validità dei collegamenti ipertestuali di un sito Web.
Leggendo il riassunto online della tesi di laurea di William Nazzaro, vengo a conoscenza di JoBo, un'applicazione open source (il codice è disponibile qui) scritta in Java, disponibile sia a riga di comando sia con un front-end grafico, in grado di:
- ricercare ricorsivamente tutti i documenti a partire da un documento di partenza;
- supportare i tag <A> <AREA> <IMG> <FRAME>;
- supportare il protocollo di esclusione per i web crawler (robot.txt);
- definire il livello di profondità nella scansione di un sito web;
- definire il nome dello user agent;
- supportare il riempimento automatico dei form, l'uso dei cookie di sessione e degli header di referrering;
- limitare l'uso della banda;
- permettere o negare il download dei files a seconda del loro mime type o della loro dimensione;
- convertire i collegamenti assoluti in realtivi;
- scaricare solo i files più recenti rispetto ad una data impostata;
- interrompere e recuperare il lavoro.
La sua configurazione è basata su un file XML.
08:53 | Categorie: java, software | 0 Comments
[Java] Inviare dati via HTTP POST
Il protocollo HTTP (Hypertext Transfer Protocol) è fra i più noti protocolli Internet. Il suo uso principale è quello di essere un mezzo per prelevare pagine HTML da mostrare in un browser.
HTTP è un protocollo di richiesta/risposta. Ci sono vari tipi di richieste effettuabili, ognuna delle quali viene identificata da un preciso metodo HTTP. I metodi più noti sono GET e POST.
Una richiesta di tipo POST spedisce dei dati (solitamente inseriti dall'utente in un form web) dopo aver specificato la pagina che analizza i dati spediti, il server, vari header e una linea bianca dopo quest'ultimi. Esempio:
POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded
userid=chris&password=indovina
Invio richieste POST in Java
Qui di seguito il codice per inviare richieste POST ad un sito web in Java:
URL url;
URLConnection urlConn;
DataOutputStream printout;
DataInputStream input;
try{
url = new URL ("http://www.sito.com/pagina.php");
urlConn = url.openConnection();
urlConn.setDoInput (true);
urlConn.setDoOutput (true);
urlConn.setUseCaches (false);
urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// spedisce al server i dati via POST
printout = new DataOutputStream (urlConn.getOutputStream());
String content = "username=" + URLEncoder.encode ("pippo","UTF-8") +
"password=" + URLEncoder.encode ("pippopass","UTF-8");
printout.writeBytes (content);
printout.flush ();
printout.close ();
// Stampa a video la risposta del server linea per linea
BufferedReader bufline = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String str;
while (null != ((str = bufline.readLine()))) {
System.out.println (str);
}
bufline.close ();
}catch(Exception e){
System.out.println("ERRORE: "+e);
}
12:21 | Categorie: java | 8 Comments
[Java] Nasce Jaaava

Jaaava è un motore di ricerca personalizzato, basato come sempre su Google Custom Search Engine.
Questo motore di ricerca è (come suggerisce il nome) tarato per filtrare le ricerche restitundo risultati attinenti al mondo Java.
Penso che lo utilizzerò.
21:17 | Categorie: Google, java | 0 Comments
Tutti i nodi vengono al pettine
Oggi mentre scartabellavo le mail arrivate dal JUG di milano, incappo in un link che porta al blog di Stefano Sanna, programmatore JME e Symbian, articolista e tante altre belle cose (buon per lui, il mio curriculum invege è ancora ben candeggiato, più bianco non si può :-D).
Ma quello che mi porta a scrivere qui è che mi ritrovo il suo libro citato nella bibliorafia di un corso che ho seguito, tenuto per giunta dal mio attuale relatore di tesi :-D
Se ben ricordo ai tempi, per superare il progettino che consisteva nella costruzione di una midlet comunicante con un servizio web in PHP (niente di stratosferico!), mi affidai al libro gratuito di MokaByte, che è ben fatto.
Scusami Gerdavax se ai tempi ti snobbai, ma sono povero e se le cose non son gratuite al momento mi tocca prenderle in prestito dalla cara rete del mulo.
Sebbene sembri un elogio alla pirateria (ehi ma lo è!), al mulo devo tanto: avete presente quanti libri (e di qualità) si trovino in quella rete? Si non è giusto ok...però... :-D
Effetti indesiderati nell'avere più JDK installati
Oggi per necessità (reali?) di avere la versione obsoleta 1.3.1_16 del JDK della Sun per compilare l'applicazione per PDA, è successo che quando sono andato su Scacchisti.it improvvisamente:
- Internet Explorer non eseguiva più le applet, come se non ci fosse alcun plugin;
- Firefox mi eseguiva l'applet con la JRE vecchia! Uno strazio nel vedere il continuo refreshing dell'applet di Scacchisti.it.
Ho installato allora la nuova versione di JRE (1.6.0_05) e Internet Explorer è tornato a fare il bravo ma Firefox continuava ad usare la versione nonnesca...
E' stato sufficiente alla fien cancellare tutti i files inerenti al plugin vecchio nella cartella plugins di Firefox per far tornare tutto alla normalità.
In teoria Firefox dovrebbe far riferimento a quale JRE usare dal registro di sistema di Windows al seguente percorso:
HKEY_LOCAL_MACHINE > SOFTWARE > JAVASOFT > JAVA PLUGIN
Ad ogni modo non ho trovato la maniera di specificare quale JRE fargli usare. Da about:config ho provato a cambiare il valore per la chiave plugin.scan.SunJRE ma di fatto non è cambiato nulla, sembra usare sempre il valore più alto che trova...va beh chi se ne frega :)
20:43 | Categorie: firefox, java, Windows | 0 Comments
[Java]Risorse per Swing
Se siete alle prese con Swing e siete come me alle prime armi, vi potrà tornare utile il materiale che ho raccolto: ho riassunto in 13 pagine il libro "Up to speed with Swing 2nd Edition" (528 pagine) copiando i pezzi più significativi e rimaneggiando talvolta il codice degli esempi.
Ovviamente non ho il permesso degli autori per ripubblicare parte dei contenuti del loro libro, ma confido nel fatto che nessuno mi verrà a cercare :-D
Potete scaricarvi 66 programmi che esplorano le basi di queste librerie. Il download degli esempi è possibile farlo direttamente alla pagina del sito del libro. Anche qui non ho i permessi per distribuire il codice del libro, ma confido anche qui che nessuno mi verrà a cercare :-D
Per ogni pagina ho avuto premura di linkare gli ottimi tutorial ufficiali della Sun.
Penso sia venuto fuori un buon lavoro. In futuro quando avrò tempo potrei rimaneggiare ulteriormente tali pagina, magari traducendole in italiano in modo da farle diventare un lavoro più "a norma di legge".
19:19 | Categorie: java | 0 Comments
PDF Split and Merge
- un programma open source (chiaramente!);
- un programma scritto in Java (Swing e altro credo);
- un programma italiano (Andrea Vacondio);
- avviabile da linea di comando o con il solito doppio click (o sull'eseguibile Windows "Starter" o sul file jar);
12:24 | Categorie: java, software | 0 Comments
[Java]Errata corrige
Ho scritto AWT nei post precedenti? E invece è Swing! C'è stata qualche incomprensione con il correlatore.
Sinceramente preferisco così. C'è più materiale su cui lavorare e dispongo già di alcuni libri.
Ho messo le mani sopra Swing 2nd Edition, MATTHEW ROBINSON, PAVEL VOROBIEV, ISBN 1930110-88-X , ©2003 by Manning.
Vi farò sapere com'è. Ho allestito una pagina ad-hoc per riportare stralci del libro e ovviamente tutti gli esempi :)
Se conoscete libri migliori o tutorial di ineccepibile bellezza, non esistate a commentare qui sotto!
18:43 | Categorie: java, Libri | 0 Comments
[Java] Download abusivi
Se vi interessa, ho trovato questo forum (vedi link per i titoli) che mette a disposizione una quarantina di libri (la maggior parte penso risalga a 6-10 anni fa) su svriati argomenti del mondo Java.
I libri (link al download) sono raccolti in un archivio con password darkmindz. Il post risale a fine gennaio di quest'anno,quindi non so per quanto tempo rimarrà online :)
16:12 | Categorie: java | 0 Comments
[Java] From applet to application
Introduzione
Mentre stavo lavorando la mio progetto di tesi,mi sono accorto che non è poi così intuitivo costruire un'interfaccia grafica in java usando AWT. Si son riuscito a creare frame e menu,pop-up informativi,ma trovo delle difficoltà nel ridisegnare il contenuto della finestra quando accade un nuovo evento o devo presentare dei dati.
Non parliamo poi dei Layout vari...poichè ho molto materiale su come costruire applicazioni con Swing ma non in AWT,mi è venuta l'idea di leggere un libro su come costruire delle Applet, per poi trasformare l'applet in unìapplicazione standalone.
C'è molto materiale in più sulla costruzione di applet e visto che sono costretto per ragioni tecniche all'uso di AWT,spero che questa tecnica renda i suoi frutti.
Links
- Mindprod: eseguire l'applicazione in entrambi i modi;
- Rgagnon: convertire l'applet,estendendo Panel invece che Applet,creando un frame a cui si aggiunge il pannello e invocando esplicitamente init(). Il metodo paint rimane invariato.
- applet2app: in teoria quest'applicazione dovrebbe convertire l'applet in un'applicazione standalone. Ho fatto un breve test su un'applet banalissima: si è piantato.
- Articolo di Tony Squier su Sun developer Netowrok: mostra vari dettagli su come sia possibile fare la conversione, cambiando o meno il codice;
- Esercizio a cura di JGuru: presenta l'approccio di mantenere init() richiamandolo nel costruttore o trasportare il suo contenuto nel costruttore (vedi step by step);
- Woodger: "[..] an applet can easily be converted to an application if the applet is the independent of the HTML page where it resides. If the applet relies on HTML pages elements and dynamic "LiveConnect" calls to/from JavaScript, then it will require more work to convert the applet to a standalone application (because all the HTML/JavaScript interaction will have to be separately migrated to Java)."
- Java by Example, Clayton Walnum: parte di un capitolo di un intero libro online del '96.
Extra
James Begole presenta le differenze fra librerie AWT e Swing.
Infine ho trovato un prodotto interessante,AjaxSwing:
...is a unique product that provides runtime conversion of Java Swing applications into dynamic HTML web site with AJAX functionality. Web enabling requires installing AjaxSwing and specifying deployment and configuration properties for the Swing application. AjaxSwing provides AjaxSwing Console, a simple wizard-driven GUI to configure your application settings, and a pre-configured Tomcat web server that be used immediately to test your application execution. Built-in demo applications can be used to test the setup and to see how Swing components are represented in AJAX version of the application.
Se si dà un'occhiata alle demo si ha l'impressione di far girare per l'appunto un'applicazione Swing nel browser.
10:51 | Categorie: java | 0 Comments
Un po' di link interessanti
- Hosting Java: è un servizio offerto dallo studio ILZ,offre un account sul loro sito per quegli sviluppatori che hanno l'esigenza di testare applicazioni JSP senza affidarsi ad un hosting professionale a pagamento. Come specificato qui,si hano 40 MB a disposizione.
- Ajax poller: script che fa uso di PHP e MySQL. Mostra un istogramma con le percentuali dei voti (qui la demo).
- Unicode character ranges for Web designer: tabella con tutti i codici Unicode. Ricordo che comunque anche l'applicazione charmap su Windows mostra i codici Unicode (Start > Esegui > digitare charmap);
- Working with text: tutorial in java riguardante la formattazione del testo, la normalizzazione e l'uso di diversi charset;
- SACK: framework per AJAX incluso in Wordpress 2.0. Non l'ho provato perchè non ho assolutamente tempo,ma rientrerà nelle cose da fare post laurea.
15:03 | Categorie: Ajax, java, PHP, Varie | 0 Comments
[Java]Applicazioni console e lettere accentate
Penso chiunque abbia creato un'applicazione sotto Windows per console, abbia verificato che le lettere accentate vengono sostituite da caratteri completamente diversi da quelli desiderati.
Questo è dovuto alle differenti codifiche in gioco: la codifica predefinita di Windows è Cp1252,mentre quella nell'ambiente DOS è cp850 (come mostra questa pagina).
Occorre quindi effettuare una conversione da una codifica all'altra per stampare sulla console le lettere accentate:
String aString = new String("che c'è?");
System.out.println(aString);
Charset Cp850 = Charset.forName("Cp850");
byte [] buffer = new byte[aString.length()];
buffer = aString.getBytes(Cp850);
String bString = new String(buffer);
System.out.println(bString);
In questo modo potete vedere come verrà stampata male la prima stringa e correttamente la seconda.
10:13 | Categorie: java | 0 Comments
"Vista is the problem": problemi di crema
Questo sito offre una breve ma efficace panoramica delle più conosciute JVM in commercio per eseguire le proprie applicazioni java.
Chi mi segue saprà che sto scrivendo un'applicazione J2ME Personal Profile e per tali applicazioni con configurazione CDC non basta il riconoscimento nativo dei file jar da parte dei dispositivi mobili,poichè verranno interpretati come midlet e vi daranno errore.
Ho provato a scaricare Cr-eME 4.12: nel mio caso devo eseguire applicazioni java su un Pocket PC con Windows Mobile 2003 SE come sistema operativo,quindi se scaricate dal sito Creme,dovrete specificare il tipo di processore (nel mio caso ARM),il sistema operativo di riferimento (Windows CE va bene) e come target device "Pocket PC".
Avviso per Vista-users
Se possiedi Vista non riuscirai ad installare Cr-eMe sul tuo PDA. Ho scritto al supporto di Creme che mi ha fulmineamente risposto allegandomi un file CAB che mi permette (una volta trasferito sul mio PDA) di installare Cr-eMe:
Hi,
Vista is the problem. Find attached a CAB file. Put it on the device and click on it to install.
Regards,
Rene, NSIcom Help Desk
Quando torno a casa (ora sono in laboratorio) magari faccio l'upload del Cab file così vi scaricate direttamente quello se avete a che fare con dispositivi uguali ai mei ;)
14:38 | Categorie: java, mobile, unversità | 0 Comments
ESP (Emule Switcher Port)
Intro
ESP è un programmino in java che ho scritto per la mia ragazza. Lei vive a Prato ma studia a Pisa. A Prato lei usa le porte standard (4662 per tcp,4672 per udp) mentre a Pisa l'ingegnere informatico della casa ha deciso di usare 4762 e 4772.
Ci si trova quindi nella scomoda situazione di dover cambiare le porte ogni volta che ci si trova in una città diversa e di doversele ricordare o segnare su un fogliettino.
Nasce quindi sto programmino così risolve il problema in poco tempo.
Il programma
Il programma è scritto in java. Fa uso di un file properties strutturato in questa maniera:
# il primo numero è la porta TCP,il secondo la porta UDP
bergamo = 35393,\57264
prato = 4662,\4672
pisa = 4762,\4772
La prima linea è un commento che spiega come sono strutturati i valori delle chiavi. I file properties sono molto utili come files di configurazione per i programmi in java (leggere la documentazione del metodo load per saperne di più).
E' un programma a linea di comando (anche perchè oltre a non esser in grado di fare interfacce grafiche non ne vedo manco la necessità per un'inezia del genere),quindi per rendere la cosa alla portata della mia ragazza,ho creato un file batch con una linea dentro:
@echo off
java -jar esp.jar
Cliccando sul file .bat s'avvierà il programma che chiederà in quale città ci si trovi e riscriverà il file preferences.ini di Emule con le corrette porte. Alla fine chiederà anche se si vuole avviare il mulo.
Nota sulla lettura/scrittura di files
In questo caso si necessitava di editare solo due linee di un file di oltre 300 linee. Siccome in generale le API java mi sembra che permettano solo di scrivere un nuovo file,leggere un file o appendere ad un file esistente nuove linee,ho deciso di immagazzinare ogni linea del file in un ArrayList e modificare le linee che mi interessano quando le incontro,immagazzinando nell'ArrayList le linee modificate.
Alla fine riscrivo il file usando le linee presenti nell'ArrayList:
BufferedReader in = new BufferedReader(new FileReader(pref));
String str;
boolean tcpfound = false;
boolean udpfound = false;
// appena trova la prima occorrenza di port e udpport
// non richiama più il metodo per i lsettaggio della porta
while ((str = in.readLine()) != null) {
if(str.toLowerCase().startsWith("port") && !tcpfound) {
str = esp.setTCPport(prop);
System.out.println(str);
tcpfound = true;
}
if(str.toLowerCase().startsWith("udpport") && !udpfound){
str = esp.setUDPport(prop);
System.out.println(str);
udpfound = true;
}
lines.add(str);
}
in.close();
Qualcuno conosce un metodo più rapido per editare solo delle specifiche linee di un file senza doverselo immagazzinare in una struttura dinamica temporanea per poi riscrivere il file da capo? Mi farebbe piacere sapere cosa fareste voi.
Nota sui files .bat
Sul Pc della mia ragazza i batch files erano associati a Notepad++. come fare per riassociare l'estensione bat agli script per shell? Non è così semplice,perchè Windows XP non mette a disposizione alcun meccanismo grafico per fare ciò (che io sappia).
Windows IT Pro però ci dice i comandi per farlo e han funzionato egregiamente su Windows XP home edition:
ftype batfile="%1" %*
assoc .bat=batfile
Download
Chi volesse scaricare il programma,lo può fare cliccando qui. Nel file jar è presente anche il sorgente (saprete ovviamente come estrarlo no? :-D ). Un saluto,torniamo alla tesi.
10:35 | Categorie: java | 2 Comments
Putiferio programmatoriale
OK dai piani alti non arrivano sempre direttive molto chiare,per cui oggi ho proposto ai miei relatori di proseguire sostanzialmente per passi:
- realizzazione di un'applicazione client/server java in J2ME Personal Profile (a dopo per le spiegazioni);
- realizzazione di un client/server in Visual C++;
- ovviamente i due devono comunicare tra loro bel seguente modo: l'applicazione java devespedire dei comandi al server il quale li rigirerà al TomTom tramite le API fornite nel suo SDK. Ricevuta la risposta la porterà di nuovo all'attenzione dell'applicazione java.
Facile no? :-D Insomma,partiamo per punti:
- J2ME è sostanzialmente strutturato secondo 3 elementi principali:
- 1 - le configurazioni (CDC e CLDC): CDC è orientata per dispositivi con capacità di calcolo maggiori come smatphone e PDA,mentre CLDC il contrario. Forniscono un set di API comuni per un vasto range di dispositivi;
2 - i profili: sono delle API più specifiche. Ogni configurazione ha i suoi profili,per esempio CLDC ha MIDP (le famose MIDlet) mentre CDC ne ha 3 tra cui quello a cui sono interessato ossia Personal Profile;
3 - package opzionali per tecnologie specifiche;
Il bello comunque è che quanto già conosci per J2SE può esser in qualche modo sfruttato anche per il Personal Profile poichè supporta tutte le API del JDK v.1.2 e le AWT 1.1. Quindi supporta sockets,StringTokenizer e altre amenità non presenti per MIDP.
Quanto al programma in C++: io devo creare un applicazione che vada su un Pocket PC con Windows Mobile 2003 SE (il cui cuore se non erro è comunque Windows CE). Devo trovare come aprire le socket sui palmari. Non è importante abbia interfaccia grafica,anzi penso proprio non freghi a nessuno.
Fatti questi due punti si potrebbe lanciare l'eseguibileda java direttamente come server in ascolto e passargli tutti i nostri sporchi comandi.
E posso usare tranquillamente J2SE v. 6 credo,basta usare le API supportate dalla vecchia versione,anche perchè l'installer JDK 1.2 su Vista non ne vuol sapere di esser eseguito (un workaround è farselo installare da qualcuno con XP e farsi tornare indietro il contenuto della cartella,il problema sta nell'installer,non nel contenuto!)
Quindi non credo ci siano particolari configurazioni da fare per Eclipse ( se non l'impacchettamento in un file jar suppongo...mi devo informare).
I link d'oro sono:
- PersonalJava Compatibility Classes: classi addizionali disponibili nelle API PersonalJava API ma non disponibili nel corrispondente JDK. Tali classi permettono alle applets e applicazioni sviluppate con PersonalJava di esser eseguite in un ambiente basato su JDK.
- JavaCheck: tool per testare se l'applicazione sarà compatibile con un particolare ambiente Java e perciò se possa essere eseguita su tutti i dispositivi che implementano tale ambiente Java. analizza i file .class per cercare dipendenze non incluse in particolari APIs. Ciò permette agli sviluppatori di creare applicazioni che vengano eseguite in modo sicuro su differenti implementazioni Java . JavaCheck legge i platform specification files (.spc), files specifici per certe API i quali sono stati codificati (disponibile solo per PersonalJava);
- PersonalJava Emulation Environment: verifica che le applicazioni scritte possano girare in un ambiente che supporta Personal Java. (NON VISTA COMPATIBILE: un workaround è farselo installare da qualcuno con XP e farsi tornare indietro il contenuto della cartella,il problema sta nell'installer,non nel contenuto!)
-
Writing an application for the J2ME Personal Profile: la domanda che ho posto a google e che mi ha fatto trovare tutto quello che mi servivia :-D
Qualcuno ha idee,link,conosce libri su come sviluppare un'applicazione per Pocket PC che:
- abbia funzionalità di rete;
- utilizzi classi C++ (quindi niente metodi particolari del .NET Framework);
Any help is appreciated thanks ;)
00:03 | Categorie: c++, java, mobile, unversità | 6 Comments
Timer: scrivi un programma idiota in java più in fretta che puoi
Torno a casa stanco da una giornata persa a far litigare fra loro il ricevitore GPS Qstarrz,Windows Mobile 2003 SE e TomTom Navigator 5,apro Google Reader e apro un post di Paperino.
Sono contento per lui che abbiano "tappato il buco" nella sua azienda. Risulta interessante notare dal post (oltre al loro ferreo filtering di assunzione) il fatto che programmatori con qualche qualifica imortante (laurea,PhD che credo stia per dottorato...non son sicuro) non sappiano poi risolvere velocemente semplici quesiti.
Continuando a leggere il post mi imbatto in un post a Coding horror,in cui Jeff asserisce di selezionare i candidati con dei "FizzBuzz Questions",stanco di trivarsi di fronte gente inetta con il curriculum gonfiato:
Il quesito
Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".
Traduzione per chi avesse problemi:
Scrivi un programma che stammpi i numeri da 1 a 100. Ma per i multipli di 3 stampi "Fizz" invece del numero e per i multipli di 5 stampi "Buzz". Per i numeri i quali sono multipli sia di 5 sia di 3 stampi "FizzBuzz".
E' evidentemente un programma cazzuto da fare,di quelli che ti danno ai corsi di informatica generale,per intenderci,quando ancora devi capire cos'è una variabile.
Tuttavia volevo vedere in java quanto ci mettessi a scriverlo,anche se un linguaggio di scripting per questo genere di cose sarebbe più indicato.
Prendete un timer (io ho scelto Dinner Timer Lite,un programma creato per ricordarsi che abbiamo le pentole sul fuoco,dateci un'occhiata non è niente male :D) e settiamolo a 2 minuti,il tempo ragionevole secondo Jeff (o anche meno di due minuti) per scrivere il programma. Ma qui lo scriviamo in Java.
public class togliinetti {
public static void main(String[]args){
for(int i=1;i<=100;i++)
if(i%3==0 && i%5==0)
System.out.println("FizzBuzz");
else if(i%3==0)
System.out.println("Fizz");
else if(i%5==0)
System.out.println("Buzz");
else System.out.println(i);
}
}
Purtroppo ci ho impiegato 2 minuti e 42 secondi. Sarei curioso di sapere cosa combinerebbero Teo e Federico,magari conoscono metodi un po' più agili :-D. Mi scuso con i lettori per la trivialità del post,vi prometto più serieta nei prossimi mesi,visto che mi dovrei laureare :-D
23:33 | Categorie: Cazzate, java, programmazione | 11 Comments