Struttura Dati Lista

Una lista (list) è una sequenza di elementi di un certo tipo. Ogni elemento (item) ha una posizione all’interno della sequenza. Sia L=a1, a2, …, an una lista, allora la sua lunghezza è n. La posizione di un generico elemento ai si indica con pos(i). E’ evidente che pos(i) = i ma si preferisce comunque dare un tipo di dato … Continua a leggere

Rimuovere protezione DRM da file PDF

Come rimuovere drm da pdf. Ho avuto la necessità di rimuovere la protezione password da un file pdf (ovviamente conoscevo la password!), per poter leggerlo anche dal mio ebook reader. Per rimuovere le password da documenti pdf basta installare il programma pdftk, quindi eseguendo il canonico comando sudo apt-get install pdftk, oppure trovandolo dal Gestore Pacchetti. Il software pdftk non … Continua a leggere

Esercizi svolti: Dimostrazione che un linguaggio è libero, teorema di chiusura e pumping lemma

Sia dato il linguaggio dimostrare che è libero e che non è regolare. Si userà: teorema di chiusura e pumping lemma dei linguaggi regolari (tipo 3). Posso dividere L in due linguaggi più semplici, in modo che L = L1 U L2 Per il teorema della chiusura dei linguaggi liberi da contesto rispetto all’operazione unione, se L1 e L2 sono … Continua a leggere

Grammatica per un linguaggio di programmazione JPreBus 1.0 e 1.1 con JavaCC

Vai giù subito alla versione 1.1. Il nome JPreBus deriva da PREsentation level (livello di presentazione) e BUSiness level (livello di business), la J indica la provenienza del suo parser: JavaCC (e qui trovate un manualetto in italiano per JavaCC). Il linguaggio propone una proprietà che consiste nell’obbligare il programmatore a separare in files distinti la modalità di interfacciamento con … Continua a leggere

Esercizi svolti: Automa numeri romani DFA

L’esercizio consiste nel generare l’automa a stati finiti deterministico (DFA) dei numeri romani. Innanzitutto come è ovvio, se vogliamo insegnare qualcosa ad una macchina (o anche ad una persona) allora noi dobbiamo essere i primi a conoscerla bene. Quindi chiariamo prima come funziona la notazione dei numeri romani. Si basa su queste regole: I=1, V=5, X=10, L=50, C=100, D=500, M=1000 … Continua a leggere

Esercizi svolti: Pumping Lemma determinare il tipo di un linguaggio

Questo è un esercizio svolto per determinare il tipo di un linguaggio usando eventualmente il pumping lemma. Dato un linguaggio, bisogna determinarne il tipo usando strumenti formali (tra cui il pumping lemma). Il linguaggio proposto è abbastanza semplice, per una sfida più difficile (molto di più) leggere questo articolo. Sia dato il linguaggio determinarne il tipo. Uso il Pumping Lemma … Continua a leggere

Struttura Dati Dizionario

La struttura dati dizionario è una collezione di elementi a cui sono associate delle chiavi. Le operazioni tipiche sono Creazione; Inserimento di una coppia <chiave, elemento>; Cancellazione di un elemento data la chiave; Ricerca di un elemento associato ad una chiave in input; La struttura dati Dizionario in un progetto ad oggetti deve essere in grado di separare la specifica … Continua a leggere

Implementazione pattern Application Controller in ADISys

In questo articolo vi presento l’implementazione del pattern Application Controller nel sistema software ADISystem. La classe ApplicationController implementa la seguente funzione: L’utente della struttura richiede un servizio inviando una stringa che identifica il servizio di business voluto, l’AC trova la corrispondente classe che si occupa di quel servizio cercandola con l’ausilio della classe ReadCrossing in un file XML. Una volta … Continua a leggere

Reset play count in Banshee

In this article I will show you how to reset play count in Banshee. First of all you have to know that Banshee has a SQLite database which is usually stored in ~/.config/banshee-1/banshee.db, so check if this file exists. Then download and install sqlite3 package typing in terminal sudo apt-get install sqlite3 or finding it from Package Manager. Now you … Continua a leggere

Azzerare contatore riproduzioni Banshee

In questo articolo vi mostrerò come azzerare il contatore di riproduzioni del software Banshee. Innanzi tutto dovete sapere che Banshee ha un database in SQLite dove sono memorizzati tutti i dati e di solito si trova in ~/.config/banshee-1/banshee.db, quindi controllate se questo file esiste. Poi scaricate e installate il pacchetto sqlite3 digitando da terminale sudo apt-get install sqlite3 o trovandolo … Continua a leggere