Caputo's blog

Informatica, tecnologia, programmazione, fai da te, papercraft e papertoy

Creare pattern da un’immagine

novembre 10th, 2009 by Giovanni Caputo

Repper è una applicazione web-based per creare pattern da una qualsiasi immagine.

E’ possibile uplodare una immagine personalizzata.

Repper Tutorial from Studio Ludens on Vimeo.

Category: Siti Web, Tecnologia | No Comments »

Provare espressioni regolari con Regex Coach

giugno 10th, 2009 by Giovanni Caputo

Le espressioni regolari possono essere utilizzate per identificare le stringhe in un testo.

Queste sono scritte in un linguaggio formale.

La sintassi di base delle espressioni regolari in UNIX è attualmente definita obsoleta dallo standard POSIX, ma è comunque molto usata a causa della sua diffusione. La maggior parte dei programmi che utilizzano le regexp, come grep e sed, utilizzano tali regole di base fornendo al contempo supporto per le nuove regole estese.

In questa sintassi, la maggior parte dei caratteri sono visti come letterali, e trovano solo se stessi (“a” trova “a”, “bc)” trova “bc)” ecc.). Le eccezioni a questa regola sono i metacaratteri:

. Trova ogni singolo carattere (se è nella modalità linea singola altrimenti se è in multiriga prende tutti i caratteri diversi da \n, ovvero un ritorno a capo).
[ ] Trova un singolo carattere contenuto nelle parentesi. Ad esempio, [abc] trova o una “a”, “b”, o “c”. [a-z] è un intervallo e trova ogni lettera minuscola dell’alfabeto. Possono esserci casi misti: [abcq-z] trova a, b, c, q, r, s, t, u, v, w, x, y, z, esattamente come [a-cq-z].Il carattere ‘-‘ è letterale solo se è primo o ultimo carattere nelle parentesi: [abc-] o [-abc]. Per trovare un carattere ‘[‘ o ‘]’, il modo più semplice è metterli primi all’interno delle parentesi: [][ab] trova ‘]’, ‘[‘, ‘a’ o ‘b’.
[^ ] Trova ogni singolo carattere non incluso nelle parentesi. Ad esempio, [^abc] trova ogni carattere diverso da “a”, “b”, o “c”. [^a-z] trova ogni singolo carattere che non sia una lettera minuscola. Come sopra, questi due metodi possono essere usati insieme.
^ Corrisponde all’inizio della stringa (o di ogni riga della stringa, quando usato in modalità multilinea)
$ Corrisponde alla fine della stringa o alla posizione immediatamente precedente un carattere di nuova linea (o alla fine di ogni riga della stringa, quando usato in modalità multilinea)
( ) Definisce una “sottoespressione marcata”. Ciò che è incluso nell’espressione, può essere richiamato in seguito. Vedi sotto, \n.
\n Dove n è una cifra da 1 a 9; trova ciò che la nesima sottoespressione ha trovato. Tale costrutto è teoricamente irregolare e non è stato adottato nella sintassi estesa delle regexp.
*
  • Un’espressione costituita da un singolo carattere seguito da “*”, trova zero o più copie di tale espressione. Ad esempio, “[xyz]*” trova “”, “x”, “y”, “zx”, “zyx”, e così via.
  • \n*, dove n è una cifra da 1 a 9, trova zero o più iterazioni di ciò che la nesima sottoespressione ha trovato. Ad esempio, “(a.)c\1*” trova “abcab” e “accac” ma non “abcac”.
  • Un’espressione racchiusa tra “\(” e “\)” seguita da “*” non è valida. In alcuni casi (es. /usr/bin/xpg4/grep di SunOS 5.8), trova zero o più ripetizioni della stringa che l’espressione racchiusa ha trovato. In altri casi (es. /usr/bin/grep di SunOS 5.8), trova ciò che l’espressione racchiusa ha trovato, seguita da un letterale “*”.
{x,y} Trova l’ultimo “blocco” almeno x volte e non più di y volte. Ad esempio, “a{3,5}” trova “aaa”, “aaaa” o “aaaaa”.

Vecchie versioni di grep non supportano il separatore alternativo “|”.

Esempi:

“.atto” trova ogni stringa di cinque caratteri come gatto, matto o patto
“[gm]atto” trova gatto e matto
“[^p]atto” trova tutte le combinazioni dell’espressione “.atto” tranne patto
“^[gm]atto” trova gatto e matto ma solo all’inizio di una riga
“[gm]atto$” trova gatto e matto ma solo alla fine di una riga

Dal momento che molte serie di caratteri variano a seconda della configurazione locale (in alcuni casi le lettere sono organizzate in abc..xyzABC…XYZ, in altri aAbB..yYzZ), lo standard POSIX ha definito alcune classi o categorie di caratteri come mostrato nella seguente tabella:

classe POSIX sintassi normale significato
[:upper:] [A-Z] lettere maiuscole
[:lower:] [a-z] lettere minuscole
[:alpha:] [A-Za-z] lettera sia maiuscole che minuscole
[:alnum:] [A-Za-z0-9] numeri e lettere maiuscole e minuscole
[:digit:] [0-9] numeri
[:xdigit:] [0-9A-Fa-f] numeri in formato esadecimale
[:punct:] [.,!?:…] segni di interpunzione
[:blank:] [ \t] spazio o TAB
[:space:] [ \t\n\r\f\v] caratteri vuoti
[:cntrl:] caratteri control
[:graph:] [^ \t\n\r\f\v] caratteri non vuoti
[:print:] [^\t\n\r\f\v] caratteri non vuoti e spazi

Le parentesi quadrate fanno parte della sintassi per indicare la classe di caratteri. Ad esempio [[:upper:][:digit:]ab] trova corrispondenza in una qualsiasi lettera maiuscola, in una qualsiasi cifra, nella lettera ‘a’ minuscola e nella lettera ‘b’ minuscola.

Tratto da wikipedia

Regex Coach è un software che permetti di effettuare prove con le espressioni regolari.

L’interfaccia è divisa in due riquadri di visualizzazione che contengono l’espressione regolare e la stringa di target. Il programma mette in evidenza automaticamente la parte delle stringa di target che combacia con l’espressione regolare.

http://weitz.de/regex-coach/shot.png

Category: Programmazione, programmi | No Comments »

FindBugs: Ricercare bugs in applicazioni Java

agosto 12th, 2008 by Giovanni Caputo

FindBugsFindBugs è un software open-source studiato per ricercare bug in programmi Java: Con questo strumento è possibile migliorare le prestazioni di un’applicazione sviluppata e la sua sicurezza, ricercando e risolvendo eventuali bugs presenti. FindBugs tramite un’analisi statica del codice basata sui bug pattern, è in grado di scovare numerose falle senza l’intervento dell’utente che può anche non conoscere il codice sorgente. Il programma, gratuito e studiato comunque per i programmatori, è in grado di riconoscere errori di battitura, errori collegati alle API e/o codici mal formulati oltre a problemi di “Bad practice”, “Performance”, “Multithreaded correctness” e “Dodgy”. Semplice da utilizzare (Basterà selezionare il file jar del codice da analizzare e la cartella del sorgente), FindBugs terminerà tutte le operazioni in pochi minuti.

Read the rest of this entry »

Category: programmi | No Comments »

Algoritmi e tecniche per realizzare un gioco in C++

maggio 17th, 2008 by Giovanni Caputo

In questo posto voglio segnalarvi un libro online dove vengono esposti i principali problemi e i migliori modi per realizzare un gioco in c++.

Concentrandosi sul testing, sulla codifica e fornendo esempi di codice che utilizzano C++, le OpenGL e DirectX API.

Codice di progettazione, strutture di dati, modelli di progettazione, AI, i motori di scripting, 3D pipelines, texture mapping e tanto altro sono espressi chiaramente, coerente e con una particolare attenzione per gli elementi essenziali che saranno di riferimento per gli anni a venire

Ecco il link al libro:

LINK

Category: Curiosità, Programmazione | No Comments »