TuxErrante

Libertà vo cercando, ch'è sì cara, come sa chi per lei vita rifiuta

[RDF/OWL] semantic analysis with Jena

Hi, this is a little Eclipse project I did for a course on Semantic Web.

It works with Jena API and uses some dataset for querying through SPARQL. You’ll see how to deal with the various functionalities such as loading a RDF into a model, querying it through runtime code or the Fuseki interface, how to store the model through TDB and some OWL reasoning

Download :   

Download of tweets with Python

Our goal is to download a stream of tweets in Rome as they are created and create a web page that displays their location on Google maps.
We will need the help pf two modules : twython and pygmaps. The first to connect to the Twitter servers and to read the tweets, the second one to represent these tweets on the Google map.

So you will need to

  1. Install twython
  2. download the edited pygmaps module (or you can do it by yourself adding the Title functionality to the addpoint() function)
  3. download and test my script
  4. tweetMap

Swi-Prolog : ricorsione

Learn Prolog now : Recursion
Lista dei predicati in Prolog

% -- hungry bear
isDigering(X,Y):- justAte(X,Y).
isDigering(X,Y):- justAte(X,Z),
		  isDigering(Z,Y).
					
justAte(bear, john).
justAte(bear, honey).
justAte(john, chicken).
justAte(john, potatoes).
justAte(chicken, worm).

/*
	?- isDigering(bear, Gnam).
		Gnam = john ;
		Gnam = honey ;
		Gnam = chicken ;
		Gnam = potatoes ;
		Gnam = worm ;
*/

% -- The history of music 

descend(X,Y):- child(X,Y).
descend(X,Y):- child(X,Z),
	       descend(Z,Y).
				
child(worksong,blues).
child(blues,jazz).
child(jazz, prog).
child(blues,rockabilly).
child(rockabilly, hardRock).
child(hardRock, metal).

% -- Counting one by one

numeral(0).
numeral( succ(X) ):- numeral(X).

% -----------------------

% -- King Fibonacci 

fib(1, 1).
fib(X, Y):- X>0, Z is X-1 ,
	    fib(Z, Y2),
	    Y is X*Y2 .

% somma da una lista			
sumList([], 0).
sumList(List, Sum):- [Head| Tail] = List,
		     sumList( Tail, TempSum),
		     Sum is  TempSum + Head.


% riconosce liste con lo stesso numero di caratteri
a2b([],[]).
a2b([_|A], [_|B]) :- a2b(A, B).


% calcolo lunghezza delle stringhe 
len([],0).
len([_|T], N):- len(T,X), 
		N is X+1.

% mischia due stringhe un carattere alla volta 
combine([],[],[]).
combine(L1, L2, Result):- 	L1 = [A|T1], L2 = [B|T2],
				combine(T1, T2, R),
				append([A,B],R,Result).
				%Result = [A,B,R]. crea una lista di liste	
	/* 
		 combine([c,n],[a,e],X).
		 X = [c, a, n, e] ;
	*/

[2] SWI-Prolog + Eclipse : Parole crociate

Prima di svolgere il prossimo esercizio consiglio di installare il plugin PDT su Eclipse per avere una postazione di lavoro più comoda e potente :

Eclipse : versione successiva alla 4
SWI-Prolog : versione successiva alla 6
PDT

Attenzione a non installare la versione nel repository di ubuntu che è più vecchia

$ apt-cache showpkg swi-prolog
Package: swi-prolog
Versions:
6.4.1-1-g09194b7-raringppa2 ... <- da installare
5.10.4-5ubuntu1 (/var/lib/apt/lists/i

$ sudo apt-get install swi-prolog=6.4.1-1-g09194b7-raringppa2

Exercise 2.4 Here are six Italian words:
astante , astoria , baratto , cobalto , pistola , statale .
They are to be arranged, crossword puzzle fashion, in the following grid:
The following knowledge base represents a lexicon containing these words:

word(astante, a,s,t,a,n,t,e).
word(astoria, a,s,t,o,r,i,a).
word(baratto, b,a,r,a,t,t,o).
word(cobalto, c,o,b,a,l,t,o).
word(pistola, p,i,s,t,o,l,a).
word(statale, s,t,a,t,a,l,e).
Write a predicate crossword/6 that tells us how to fill in the grid. The first three arguments should be the vertical words from left to right, and the last three arguments the horizontal words from top to bottom.

% 3 verticali V1,V2,V3 e 3 orizzonatali H1,H2,H3
word(astante, a,s,t,a,n,t,e).
word(astoria, a,s,t,o,r,i,a).
word(baratto, b,a,r,a,t,t,o).
word(cobalto, c,o,b,a,l,t,o).
word(pistola, p,i,s,t,o,l,a).
word(statale, s,t,a,t,a,l,e).

crossword(V1,V2,V3, H1,H2,H3) :- 
		word(V1, _,V1H1,_,V1H2,_,V1H3,_),
		word(V2, _,V2H1,_,V2H2,_,V2H3,_),
		word(V3, _,V3H1,_,V3H2,_,V3H3,_),
		word(H1, _,V1H1,_,V2H1,_,V3H1,_),
		word(H2, _,V1H2,_,V2H2,_,V3H2,_),
		word(H3, _,V1H3,_,V2H3,_,V3H3,_),
             % non incrociare le parole con sé stesse
		H1\=V1, H2\=V2, H3\=V3.	

% chi più ne ha più ne metta :)
/*
word(scatole, s,c,a,t,o,l,e).
word(estonia, e,s,t,o,n,i,a).
word(baretto, b,a,r,e,t,t,o).
word(cavallo, c,a,v,a,l,l,o).
word(ceretta, c,e,r,e,t,t,a).
word(cintola, c,i,n,t,o,l,a).
word(pittalo, p,i,t,t,a,l,o).
word(lisbona, l,i,s,b,o,n,a).
word(funesto, f,u,n,e,s,t,o).
word(colante, c,o,l,a,n,t,e).
*/

/*
one solution :
     a   c   p
   a s t o r i a  
     t   b   s 
   b a r a t t o  
     n   l   o   
   s t a t a l e  	
     e   o   a
*/

Numero SMS virtuale online

Free online sms

Un paio di siti utili quando non si voglia dare il proprio numero per la registrazione a siti di poco conto

Mentre da qui possiamo inviarli gratuitamente

Primo script in Prolog

SWI-Prolog è la versione qui utilizzata.
Sistema: Ubuntu 13.04.
Strumenti: Gedit, Terminale.
Per installarlo : sudo apt-get install swi-prolog

Prolog is a declarative programming language. This means that in prolog, you do not write out what the computer should do line by line, as in procedural languages such as C and Java . The general idea behind declarative languages is that you describe a situation. Based on this code, the interpreter or compiler will tell you a solution. In the case of prolog, it will tell you whether a prolog sentence is true or not and, if it contains variables, what the values of the variables need to be.

Piccolo script per iniziare a conoscere il Prolog

largeFamily.pl

% database familiare
% iniziamo da lontano definendo un insieme di esseri umani..

human(john).
human(david).
human(gino).
human(bobbysolo).
human(karen).
human(gloria).
% ora separiamoli in base al sesso :
sex(john, man). % maschietti
sex(david, man).
sex(gino, man).
sex(bobbysolo, man).
sex(karen, woman). % femminucce
sex(sasha, woman).
sex(gloria, woman).
% iniziamo a definire le coppie
partner(john, gloria).
partner(david, britney).
partner(gino, topino).
partner(john, karen).
haveChild(john, sasha). % genitori
%haveChild(john, david).
% john,karen -> sasha,bobbysolo -> rocco,brigitte -> moana
haveChild(karen, sasha).
haveChild(gloria, david).
haveChild(sasha, rocco).
haveChild(bobbysolo, rocco).
haveChild(rocco, moana).
haveChild(brigitte, moana).
% definiamo ora delle funzioni che controllino se
% - A sia il padre di B
isFather(A, B) :- sex( A, man), haveChild(A,B).
% - A sia la madre di B
isMother(A, B) :- sex( A, woman), haveChild(A,B).
% - F e M siano padre a madre di A
parents(A, F, M) :- isFather(F, A), isMother(M,A).
% - A sia un avo di B
ancestor(A,B) :- haveChild(A,B).
ancestor(A,B) :- haveChild(A,X), ancestor(X,B). % non senti puzza di ricorsione ?
% - uno dei due è il padre/madre, il figliastro, il fratello/astro o un progenitore
areRelatives(A,B) :- isFather(A,B) | isFather(B,A) | isMother(A,B) | isMother(B,A);
partner(A,C), haveChild(C,B);
partner(C,A), haveChild(C,B);
haveChild(C,A), haveChild(D,B), ( partner(C,D); partner(D,C) );
ancestor(A,B); ancestor(B,A).

Mentre queste sono delle possibili interrogazioni da terminale

?- isFather(john,_).
true.
?- isFather(john,B).
B = david.
?- parents(david,Father,Mother).
Father = john,
Mother = gloria ;
false.

?- ancestor(john, Discendente).
Discendente = sasha ;
Discendente = rocco ;
Discendente = moana ;
false.

?- areRelatives(gloria, sasha).
true .
?- areRelatives(john,david).
true .
?- areRelatives(karen, moana).
true ;

CyanogenMod 10.1 su Samsung SL i9003

Cyanogenmod 10.1 Alpha 8

A partire da una Gingerbread 2.3.6 XXKPQ rootata.

Il sistema è molto gradevole e altamente configurabile, anche reattivo una volta che si è creata la partizione di swap.
Rimangono dei problemi con la fotocamera che spero si risolvano presto (è un’alpha..)

NB : sul mio modello le performance tweaks non hanno funzionato, non facendolo partire. Quindi se ci volete provare non dimenticate il backup..

Screenshot cyanogenmod Screenshot_2013-08-12-14-12-44 Screenshot_2013-08-12-14-17-45

DNS – exercises

–> DNS

1. Run nslookup to obtain the IP address of a Web server in Asia.

[alex@alex-EasyNote:~]$ nslookup nic.ae

Server: 62.101.93.101
Address: 62.101.93.101#53

Non-authoritative answer:
Name: nic.ae
Address: 213.42.0.168
Name: nic.ae
Address: 195.229.242.240

2. Run nslookup to determine the authoritative DNS servers for a university in Europe.

[alex@alex-EasyNote:~]$ nslookup -type=NS uniroma1.it

Server: 62.101.93.101
Address: 62.101.93.101#53

Non-authoritative answer:
uniroma1.it nameserver = risc-ns.cics.uniroma1.it.
uniroma1.it nameserver = desiree.cics.uniroma1.it.
uniroma1.it nameserver = ns1.garr.net.

Authoritative answers can be found from:
ns1.garr.net internet address = 193.206.141.38
ns1.garr.net has AAAA address 2001:760:ffff:ffff::aa
desiree.cics.uniroma1.it internet address = 151.100.4.13
risc-ns.cics.uniroma1.it internet address = 151.100.4.2

3. Run nslookup so that one of the DNS servers obtained in Question 2 is queried for the mail servers for Yahoo! mail.

[alex@alex-EasyNote:~]$ dig yahoo.com MX +noall +answer

; <<>> DiG 9.7.3 <<>> yahoo.com MX +noall +answer
;; global options: +cmd
yahoo.com. 420 IN MX 1 mta7.am0.yahoodns.net.
yahoo.com. 420 IN MX 1 mta5.am0.yahoodns.net.
yahoo.com. 420 IN MX 1 mta6.am0.yahoodns.net.

[alex@alex-EasyNote:~]$ nslookup mta7.am0.yahoodns.net ns1.garr.net

Server: ns1.garr.net
Address: 193.206.141.38#53

** server can’t find mta7.am0.yahoodns.net.fastwebnet.it: REFUSED
viene falsato dai router di fastweb

Potete scaricare il file con la spiegazione e gli altri esercizi qui: Wireshark_DNS_Sept_15_2009

RFC 1034

wlan0 - Wireshark_007

Sicurezza nei social network

Una raccolta di testi e siti dedicati alla sicurezza e al mantenimento della privacy in rete

 

 

Android : cambiare kernel e gestore grafico

Annoiato dalla solita grafica e dalla lentezza del sistema, ieri ho fatto un giro in rete per cercare qualche alternativa. In breve ho ottenuto un ambiente molto più reattivo ed un design travolgente. Ecco come :

Necessario:

  1. Se abbiamo una versione differente dalla XXKPQ dobbiamo flasharla tramite Odin 3. Io avevo la XXLE4 e quindi ho fatto un downgrade senza problemi. A parte qualche blocco della procedura di Odin, che una volta ripetuta non ha dato problemi.
  2. scaricate e flashate il VurrutKer sempre tramite Odin ( il file va caricato nella sezione PDA ). Io ho scaricato la 9.1, controllate che per il vostro smart non ci siano controindicazioni.
  3. Se avete letto la guida avrete già fatto più volte il flash della Rom e avrete già eseguito la formattazione dei dati. Giusto ?
  4. A questo punto il sistema dovrebbe essere già operativo e più reattivo di prima. Se volete potete fermarvi qui ma io vi consiglio di proseguire.
  5. Dopo aver aggiornato le applicazioni andate nel Google Play e scaricate ADW Launcher. Vi permette una grande personalizzazione dei temi.
  6. Cercate un tema di vostro gradimento. Io ho scelto il Wihte.
  7. Divertitevi con le cofigurazioni.
ps: se vi piacciono le animazioni ricordate di abilitarle in Preferences > Display > Animation > All animations

[FQL] estrarre i propri stati da facebook

FQL : Facebook Query Language

Avete dimenticato quali furono i vostri primi stati su facebook ? cliccate qui !

  • Rilasciate i permessi all’applicazione Graph Api Explorer.
  • Controllate che ci sia l’access token user_status : simula la concessione dei permessi all’applicazione.
  • inserite il codice sottostante 

SELECT upper(message)
FROM status
WHERE uid = me()
ORDER BY time ASC
LIMIT 20 

  • Submit

Il resto lo lascio alla vostra fantasia e alla documentazione..

[java] la classe Pila

Un semplice esempio sulla gestione di un oggetto di tipo Pila

  • Con controllo d’errore :

[update] tips linux

Inseriti collegamenti per il recupero di file cancellati e altro.. 

[java] Client-Server multithread, lettura file XML

Qui oltre al codice troverete anche la documentazione (javadoc e pdf), è un’applicazione Java sia lato client che server con le seguenti caratteristiche:

Scopo:
Si vuole realizzare un applicazione che permetta ad un client di consultare un database presente
su un server, per poter effettuare alcune letture, che siano dell’intero file o il risultato di una
selezione al suo interno.
Lo scambio dei messaggi tra le due parti applicative deve avvenire attraverso una connessione
affidabile.
Caso in esame:
Si è preso come esempio uno studente che voglia consultare gli stage disponibili attualmente nel
mondo del lavoro, a cui deve essere data la possibilità di avere una visione globale e di poter
effettuare una selezione dei campi attraverso il numero dei posti disponibili, la durata dello stage
o il relativo salario offerto.

Il codice è stato aggiornato rispetto alla documentazione.
Ricordatevi di mettere il file xml nella stessa cartella degli eseguibili.

[update] UDP Echo Client-Server

Aggiornate le classi UDPEcho:

  • inserito il calcolo dei tempi di ricezione per i singoli pacchetti (RTT) e la media totale

Page 2 of 6

Powered by WordPress & Theme by Anders Norén