Links da Google Reader
Come al solito inizio la giornata spulciando brevemente Google Reader,quindi condivido con voi i pezzi che ho trovato interessanti:
- Hyperwords: trattasi di un'ottima estensione per Firefox in cui una volta installata,con un semplice click con il destro su una parte del testo selezionata,possiamo fare una serie di azioni come :
- ricerche su Google,Wikipedia,flickr,ecc;
- traduzioni istantanee del testo e resa visiva immediata senza lasciare la pagina;
- funzionalità di rete whois,ip2location,ecc);
e molto altro ancora (vedi recensione di WeWorldWeb); - ClipX: programma per una clipboard avanzata,memorizzata su disco,quindi fa sopravvivere ciò che si copia incolla al reboot del sistema; (via CodingHorror);
- DeltaCopy: software per backup incrementale,una sorta di rsync per windows sebbene non sia un suo porting naturale (come potrebbe esserlo attraverso Cygwin);
- Robocopy: utility robusta presente di default su Windows Vista (merita un articolo a parte). Tutto via CodingHorror;
10:47 | Categorie: blogosfera, Varie | 1 Comments
Programmare con le Socket per PDA: atto I
Se sei un programmatore esperto di C++ e conosci bene i meccanismi di Visual Studio,prova a tornare ai tempi in cui non ci capivi un cazzo e alle frustrazioni che ti dava il linker che non ne voleva sapere di "risolvere" certe funzioncine a te care.
Beh in questi due giorni mi son sentito così,finchè finalmente qualche anima pia ha saputo indicarmi la "cosa giusta".
Ormai mi incollerò come una zecca al forum Smart Devices Native C++ Development.
Quindi in parole povere per lavorare con le Socket su Pocket PC:
- mettete un bell' #include <winsock.h> in cima al file;
- Linkate la liberia "ws2.lib" nelle proprietà del vostro progetto oppure usando l'istruzione
#pragma comment (lib, "WS2.lib")
Per il momento è tutto quello che c'è da sapere. Una buona guardata all'SDK Documentation credo sarà di rigore. Tale documentazione riguarda:
The documentation applies to the following Windows Mobile software platforms:
- Pocket PC 2003 Second Edition
- Smartphone 2003 Second Edition
- Pocket PC 2003
- Smartphone 2003
- Pocket PC 2002
- Smartphone 2002
- Pocket PC 2000
Con questo chiudo e che Dio me la mandi (buona!!).
19:00 | Categorie: c++, mobile, unversità, Visual Studio | 4 Comments
.pureftpd-upload.47a0a5ed.15.da9.8fb20c33
Se vi trovate d'improvviso un file di questo tipo in una vostra directory remota presso il vostro hosting server,non vi intimorite.
In teoria dovrebbe essere un file temporaneo generato da Pure-FTPd:
Pure-FTPd is a free (BSD), secure, production-quality and standard-conformant FTP server.
Se state facendo come me un upload di un file un po' pesantino e vi cade la connessione sembrando che FileZilla ricominci da capo,in realtà quanto abbiamo trasferito viene immagazzinato in file temporanei (non cancellabili da noi,ma automaticamente cancellati dal demone). Potete sfruttare la funzione "Ripristina" di FileZilla per fare l'upload di quanto resta.
18:19 | Categorie: Linux, software | 0 Comments
Recuperare la password di Windows Live M.
Volendo sfruttare i forum di MSDN mi serviva la password del mio account hotmail. Se l'avete salvata tramite il programma di Instant Messanging di Microsoft,questo tool ve la recupera in un batter d'occhio.
Non servirebbe dirlo ma... NON è un programma per recuperare la password degli account altrui. :)
13:39 | Categorie: Windows | 0 Comments
Windows Mobile Developer Power Toys
Fra questi tool molto efficaci e visti in questo blog,avevo solo sperimentato la PPC command shell,che permette di mettere su Pocket PC una comune shell dos (non son sicuro se definirla così, comunque è in grado di interpretare i classici comandi DOS).
Mi era sfuggito invece l'importantissimo Active Sync Remote Display: questo tool mi permette di vedere in real time la rappresentazione del mio VERO Pocket PC connesso via USB tramite Windows Mobile Device Center.
Quindi lanciare un'applicazione console diventa molto semplice tramite il proprio pc: basta chiamare la shell, navigare verso la directory dove si è piazzato il nostro eseguibile ed eseguirlo!
La cosa incredibile è che il tutto funzioni sotto Vista nonostante il nome ActiveSync lasciasse presumere il contrario :D
11:24 | Categorie: mobile, unversità | 0 Comments
I soliti copioni
Notate qualche somiglianza tra quest'articolo e questo? Se non fosse per un link relativo ai links esterni all'interno del testo pedissequamente copiato come tutto il resto,non sarei venuto a conoscenza del solito plagio di turno.
Ragazzi,con la licenza che uso in quel sito (e in questo) potete fare tutto quel cazzo che vi pare,ma per piacere,mettere un link alla fonte no? Costa tanto? Volete che diventi tutto magicamente farina del vostro sacco?
Update: l'autore si è impegnato a metter la fonte :) Poi ricontrollerò.
2ndUpdate (29/1): no ho capito male,ha riservato l'articolo per i membri registrati....va beh andate affanculo allora :-D
10:08 | Categorie: Annunci, blogosfera | 1 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
Emule,id basso e Vista
Ho un problema con emule (utilizzo Vista) che vorrei risolvere,se qualche mente geniale fra voi mi illumina mi farebbe piacere:
- quando sono a casa mia a Bergamo,ho un router Alice Gate Plus Wifi (quello fornito con alice tutto incluso),mi connetto via wireless e ho sempre ID alto,anche con Windows firewall attivo,senza metter mano nè ad emule nè al router (che è intoccabile a quanto ne so,a meno di smontarlo o fargli qualche altra diavoleria);
- quando sono a Pisa (stesso computer ma router diverso) mi collego tramite Ethernet settando le porte corrette che un tizio ha aperto sul router. Nonostante questo l'ID è irrevocabilmente basso,mente su XP della mia ragazza,l'ID è alto. Questo succede indipendentemente dall'attività o meno di Windows Firewall.
Ora magari è una cazzata ma...DOVE STA IL PROBLEMA???
Attendo con ansia una risposta. Grazie :)
16:55 | Categorie: software, Windows | 5 Comments
Hello World per Pocket PC
Non poteva mancare l'immancabile appuntamento dell'"Hello World" con il giocattolo con cui gioco al momento.
I passi per ottenerlo
Prima di tutto sto utilizzando Visual Studio 2005 Professional (che possiede gli emulatori per Pocket PC 2003 e Smartphone) e Windows Vista.
- Aprire Visual Studio 2005 Professional e fare File > New > Project;
- Ampliare Visual C++ e selezionare Smart Device;
- Ci si presentano dei template per Smart Device:
- ATL: a project for Windows Mobile and other Windows CE-based devices that uses the Active Template Library;
- MFC: an application for Windows Mobile and other Windows CE-based devices that uses the Microsoft Foundation Class Library;
- Win32: a Win32 or Console project for Windows Mobile and other Windows CE-based devices;
- MFC ActiveX: an ActiveX control for Windows Mobile and other Windows CE-based devices that uses the Microsoft Foundation Class Library;
- MFC DLL: a dynamic-link library for Windows Mobile and other Windows CE-based devices that uses the Microsoft Foundation Class library; - Sclego Win32 Smart Device - e flaggo Window come tipo di applicazione;
A questo punto siccome abbiamo selezionato "Window",VS ci sparerà dentro il nostro progetto una vagonata iniziale di codice per la gestione degli eventi,le finestre,ecc. Ma all'osso com'è un programma per dispositivi Windows CE based?
#include "stdafx.h"
#include "ppc-hello5.h"
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstan,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
/* printf ("Hello World\n"); verrebbe visualizzato solo su console
non dall'emulatore nè dal pocket pc */
MessageBox (NULL, TEXT ("Hello World"), TEXT ("Hello2"), MB_OK);
return 0;
}
Potete riconoscere una specie di main e una funzione intuitiva: aprirà una finestrella con scritto "Hello World" e un bottone OK per chiuderla:
Note
Se notate ho commentato una printf. Se usate funzioni per stampare in output su Consolle (così come cout) il Pocket PC (e l'emulatore stesso non daranno segni di vita al suo avvio. Questo perchè non c'è il supporto per la consolle. Ma se vi scaricate i Windows Mobile Developer Power Toys potete installare una shell sul vostro pocket pc. E' scritto tutto nel readme,basta spostare una dll nella directory di Windows e due eseguibili dove volete e cliccare su cmd.exe per aprire una shell posizionata in partenza sulla root del dispositivo.
20:58 | Categorie: c++, mobile, Visual Studio | 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
TomTom: raccolta appunti
Ho aperto una pagina sul mio sito d'appunti per raccogliere tutto il materiale di lavoro per la tesi inerente all'uso di TomTom Navigator 6 e del suo SDK.
Inutile dire che se conoscete siti in cui si parla di programmazione con questo SDK,avete a disposizione qualche materiale a riguardo o volte darmi un qualsiasi tipo di aiuto,SIETE PIU' che benvenuti :-)
Del resto io mi sto approcciando all'argomento da TOTALE inesperto quanto a programmazione C++/Visual C++ e all'uso di Visual Studio stesso.
14:04 | Categorie: c++, TomTom, unversità, Visual Studio | 2 Comments
Catene si S.Antonio: fai girare questa,non la solita m***a
Non è mai troppo tardi per aprire la mente del "bovino". Sinceramente esordire così mi dispiace per i bovini,che rispetto. Però il bovino rumina tutto quello che gli dai da mangiare,così l'utente pigro e idiota inotra tutte le c****e che gli arrivano via mail.
Oggi per esempio,un giorno come un altro per gli spammer e i suoi devoti affezionati, è il turno di Rachele,povera bimba di 10 anni affetta da un cancro al cervello operabile sono con sa Dio quanti soldi. Ma se invii la mail "AOL rileverà la traccia di Questa e-mail e calcolerà quante persone la riceveranno." Solo per questa perla,voi che inviate,meritereste il mongolino d'oro.
L'ho ricevuta via mail da uno dei soliti ignoti fra i miei contatti universitari. Si sa,chi fa l'università è dotto. Ed è anche molto bravo nel pigiare i bottoni,specialmente "inoltra",quello a loro piace tanto.
Tutto ciò è smentito come al solito dall'implacabile Paolo che credo leggano solo le persone consapevoli. I COGLIONI (perdonatemi il purismo lessicale) invece,dal momento che non leggono manco ciò che inoltrano,figuriamoci se si mettono a leggere Paolo Attivissimo.
Qualcuno appartenente ad un LUG si è pure azzardato a postarci dentro questo ciarpame ed è stato prontamente redarguito a suon di link. Link che non leggerà probabilmente. Fare una cosa così in una mailing list è come spararsi sui piedi ragazzi :)
Testo da inviare
Hey TU,che invii con indomita e puntuale precisione tutte le e-mail senza manco leggere il contenuto perchè "fa fatica",quando ricevi una mail in cui c'è un appello di solidarietà,spendi 5 minuti della tua preziosa esistenza per verificare che tale appello sia vero.
E' semplice: basta copiare (selezioni la frase e poi fai CTRL+C oppure selezioni la frase e poi click col tasto destro e fai click su copia - lo dico per gli universitari,sapete come sono -) una frase,un nome o un qualsiasi estratto e incollarla in un campo (non di grano,universitari attenti!) di un motore di ricerca e pigiare sul bottone invia oppure vai o una freccina magari (o battere INVIO): vi usciranno cose interessanti,molto spesso potrebbe uscirvi come risultato Paolo Attivissimo,un tipo che si diverte a smentire il ciarpame che tu ti ostini ad inviare.
Omaggi e a risentirci sperando di ricever da te mail più costruttive e divertenti :)
Inviate questo ai vostri migliori contatti,soprattutto se sono universitari,mi raccomando,quelli a forza di studiare hanno consumato tutta la materia grigia :-D
11:41 | Categorie: Annunci, blogosfera, Eventi, me stesso | 0 Comments
[PHP] Script per mostrare il codice sorgente di una pagina,includendo codice lato server
Introduzione
Questo tema che vado a trattare non è certo dei più nuovi:
- ho scritto a suo tempo quest'articolo su Delfins Blog,mostrando alcune tecniche per visualizzare il codice sorgente;
- ho scritto quest'altro che mi è stato molto utile per mostrare il codice qui su Blogger;
Mi mancava l'esplorazione delle funzioni native di PHP: highlight_string e highlight_file.
Gli script
Il codice che ho creato/modificato/copiatoETincollato fa uso di:
- un suggerimento di un lettore di php.net, per quanto concerne l'evidenziazione del codice php attraverso la funzione
highlight_filemostrando il numero di linee usando una tabella e il commento di quest'altro per una funzione che usa invece una lista ordinata,distinguendo tra la funzione precedentemente menzionata ehighlight_string, più conveniente nel caso vogliate mostrare il codice di poche righe o una riga soltanto; - l'uso modificato di questo script javascript per aprire una finestra con il codice evidenziato. Notare che lo script originale così com'è,è piuttosto pericoloso perchè permette l'esecuzione arbitraria di una qualsiasi funzione passandogli dei parametri,il tutto via GET;
- in questo caso ho usato la direttiva
$_SERVER['PHP_SELF']perchè interessato a mostrare il codice del file correntemente letto. Nel caso si voglia leggere un altro file,considerate l'uso di funzioni qualifopen/fread,file_get_contentsefile. Leggiti quest'articolo che spiega con degli esempi pratici l'uso di queste funzioni;
Quindi se vi intyeressa,bando alle ciance e recatevi su questa pagina per vedere la demo,cliccando sul link in fondo.
18:29 | Categorie: PHP | 0 Comments
[Javascript]Aggiungere ai favoriti una pagina
Ho cercato in lungo e in largo uno script cross browser per aggiungere una pagina tra i favoriti,ma la panacea di tutti mali non c'è. O almeno io non l'ho trovata.
Così notando che la finestrella dei segnalibri in Firefox e Opera si apre cliccando semplicemente su un link che abbia un attributo "rel" di valore "sidebar",ho reso ultrasemplice lo script che andrò a presentare.
EDIT: ho poi scoperto che un link siffatto in Firefox apre la pagina nella sidebar come intuitivamente si poteva pensare (questa discussione sembra indicare che addirittura non ci sia una funzione adeguata) ,per IE nessun problema mentre Opera mette un flag sull'apertura della pagina nella sidebar,che si può facilmente togliere.
Le fonti a cui mi sono ispirato (le migliori che sia riuscito a trovare) sono:
Lo script
Mettere un riferimento allo script sottostante nell'header della pagina:
// scegli tu titolo e URL
function bookmarksite(title,url){
if (window.sidebar) { // firefox
window.sidebar.addPanel(title, url, "");
} else if(document.all){ // ie
window.external.AddFavorite(url, title);
}
}
// usa quelli presenti
function bookmarksite(){
var title = document.title;
// Blogger - Replace with <$BlogItemTitle$>
// MovableType - Replace with <$MTEntryTitle$>
var url = document.URL;
// Blogger - Replace with <$BlogItemPermalinkURL$>
// MovableType - Replace with <$MTEntryPermalink$>
// WordPress - <?php bloginfo('url'); ?>
if (window.sidebar) {// firefox
window.sidebar.addPanel(title, url, "");
} else if(document.all) {// ie
window.external.AddFavorite(url, title);
}
}
Creare poi un link del genere:
<a href="#" title="Metti tra i preferiti questa pagina!" onclick="if(document.all) bookmarksite();" rel="sidebar">
In pratica richiamiamo la funzione bookmarksite solo se si tratta di Internet Explorer. Notare che ad ogni modo,la funzione bookmarksite() può funzionare anche per Firefox. Una DEMO qui.
A mio avviso è il metodo più semplice per ottenere ciò che vogliamo ottenendo compatibilità con i 3 maggiori browser (IE - Firefox - Opera). non ho potuto sperimentarlo su Safari (dove immagino non andrà). Se qualcuno volesse farmi sapere una funzione per adattarlo al Mac ne sarei felice :) Lasciate pure un commento qui sotto o scrivetemi una mail!
22:54 | Categorie: javascript | 2 Comments
Zippare una directory con PHP
Avrei voluto utilizzare le zip file functions (di cui trovate un ottimo tutorial su Zend Developer Zone) ma guardando il phpinfo di Aruba si nota che non hanno compilato PHP usando l'ozione di configurazione --with-zip[=DIR].
Ad ogni modo leggebndo fra i commenti presenti in corredo alle zip file funcions,incappo in questo commento di Lennart Poot: l'idea è usare la librearia di "zippaggio" di phpMyAdmin,un semplice file denominato zip.lib.php nella directory "libraries".
A questo punto ecco il codice che crea un archivio al volo specificando la cartella contenente i files e settando gli header per spedirlo direttamente al browser. Il seguente codice NON archivia le directory (if (!is_dir($file) && $file != "." && $file != ".." ) {) e non crea una cartella nell'archivio contenente i files ma semplicemente archivia tutti i files che trova.
Ecco il codice,con qualche modifica rispetto al commento e con l'aggiunta di ciò che altri lettori di php.net han fatto notare:
require_once('zip.lib.php');
$zipfilename = 'chris_sorgentic++.zip'; // nome del file da creare
$ad_dir = 'sorgenti'; // path alla directory contenete i files
$zipfile = new zipfile();
if ($handle = opendir($ad_dir)) { // apre la direcotry
while (false !== ($file = readdir($handle))) {
if (!is_dir($file) && $file != "." && $file != ".." ) {
$f_tmp = @fopen( $ad_dir . '/' . $file, 'r'); // apre in lettura il file
if($f_tmp){
$dump_buffer=fread( $f_tmp, filesize($ad_dir . '/' . $file)); // prende il contenuto
$zipfile -> addFile($dump_buffer,$file); // aggiunge il file allo zip
fclose( $f_tmp );
}
}
}
} else {
echo "Non riesco ad aprire la directory $ad_dir.";
exit;
}
$dump_buffer = $zipfile -> file(); // dump del file
// write the file to disk:
/*
$file_pointer = fopen('newzip.zip', 'w');
if($file_pointer){
fwrite( $file_pointer, $dump_buffer, strlen($dump_buffer) );
fclose( $file_pointer );
}
*/
// response zip archive to browser:
header('Pragma: public');
header('Content-type: application/zip');
header('Content-length: ' . strlen($dump_buffer));
header('Content-Disposition: attachment; filename="'.$zipfilename.'"');
echo $dump_buffer; // stampo il contenuto del file
09:41 | Categorie: PHP | 2 Comments
Rinnovo dei loghi
Finte le feste è ora di togliere il cappello di natale,le palline e i fiocchi di neve che scendono dai nostri siti.
Ringrazio di cuore la mia ragazza che ha avuto la premura di ristrutturare gli header di Chris'Site (da ribattezzare "Chris on Fire!") con questa bella immagine e l'header del coro con quest'altra immagine (che mi ricorda un po' l'album dei metallica "Ride The Lightning").
Già che ci siamo "cavalchiamo insieme il fulmine"!
21:30 | Categorie: Annunci, grafica, me stesso | 0 Comments
coComment: segui i tuoi commenti nella blogosfera
Sicuramente avrete notato quanto sia difficile ricordarsi di tutti i siti dove passiamo e lasciamo un commento. Molto spesso ci viene incontro qualche plugin che ci manda una mail per avvisarci di un nuovo commento,altre volte più sfortunate invece bisogna ricordarsi i siti a memoria.
ViK mi segnala il servizio web 2.0 coComment. Una volta registrato un account e scaricata l'estensione per Firefox,questa terrà traccia per noi di tutti i commenti che lasciamo in giro per la rete.
Io mi son già registrato e ho intenzione di sfruttarlo moltissimo. Per fortuna c'è sempre qualcuno che crea qualcosa per turare alcune falle,in questo caso i vuoti di memoria :)
20:19 | Categorie: blogosfera, Servizi, Web 2.0 | 0 Comments
Visual Studio e le espressioni regolari
Visual Studio non sembra seguire gli standard per le espressioni regolari ma ha dei suoi shortcuts particolari. Nei link sottostanti viene esteso l'argomento:
16:52 | Categorie: Visual Studio | 0 Comments
I bergamaschi di BlogItalia
Intro
Guardo alle classifiche con divertimento e semplicità. Non ne faccio una malattia e se scendo di 20 posizioni o ne salgo di 30 non mi frega quasi niente. Se sono iscritto a certi "calderoni" come BlogItalia o BlogBabel è solo per spargere la voce e farsi trovare,quello che vogliono un po' tutti insomma.
I bergamaschi su Blog Italia
Così per sfizio mi son appuntato i link alle directory web / aggregatori sociali a cui sono iscritto per farci un salto ogni tanto e oggi è il turno di Blog Italia,dopo secoli che non ci guardavo.
Siccome sono un pesce piccolo del mare magnum della blogosfera,ho ristretto il campo ai blog di Bergamo che trattano argomenti di informatica e Internet. Risultati in ordine decrescente:
- The blog's book - chutzpah da Treviglio (BG): se non erro devo aver letto anche qualche suo commento su Napolux, e visto che è anche presente nel suo blogroll la cosa è ancora più probabile :-D;
- Pensieri di Antuana - antuana da Bergamo (BG): non mi sembra tratti d'informatica...chissà cosa ci farà qui dentro :?
- Il blog di David Orban - Davidorban da Bergamo (BG): sembra che neanche lui sia rimasto soddisfatto da Vista.
- .commEurope - Giuseppe Mazza da Bergamo (BG): ora il sito funziona e mi sembra anche molto ben curato.
- Ci sono io :D
Gli altri a qeusta pagina.
Bergamasco ancora per poco,Pisa mi attende e forse qualche altro stato estero ;)
23:56 | Categorie: blogosfera | 5 Comments
AnyBrowser Campaign: uso il browser che mi pare!
Perchè aderire a questa campagna?
I know I can't change the web by myself, but every little bit counts, and this is my vote for a platform independent, non-browser specific World Wide Web. So, I have displayed the "Viewable With Any Browser" button to emphasize that I try to create my web sites to be viewable in all browsers, and totally functional. Some pages may look better in some browsers than others, but they should all be readable by any browser.
Vi sarà capitato migliaia di volte di finire in siti Web e vedere una delle scritte "Ottimizzato per X" oppure "Si consiglia vivamente l'uso di X".
Le guerre di religione (ma non solo) fra browser poi,non sono certo una novità. C'è sempre chi è pronto ad osannare Firefox e gettar mota su IE e viceversa. Si vuole evitare cose come Explorer Destroyer.
La campagna Any Browser vuole un Web accessibile a tutti con la tecnologia che più ci piace,mettendo a dispisizione linee guida e links interessanti.
22:45 | Categorie: Varie, web development | 0 Comments
Win-get: uso e creazione di un repository
Introduzione
Win-get è un packet manager a linea di comando per windows che sfrutta le funzionalità di wget,un porting per Windows del programma omonimo per Linux.
Presenta una lista di programmi via Web (quelli accessibili anche dall'applicazione) e se ci si registra si ha il vantaggio di poter cliccare su dei "+" a fianco dei nomi dell'applicazione e associare l'applicazione stessa al nostro account. In questa maniera sfrutando l'opzione "restore" di win-get,è possibile installare tutti i programmi associati al nostro profilo (specificando le credenziali di autenticazione o nel file di configurazione o come opzioni da linea di comando).
Esiste anche un ' estensione per Firefox (non ancora provata quindi non vi so dire nulla in termini di utilità e compatibilità tra le varie versioni) che permette di segnalare un'applicazione. Fate attenzione che il server non è configurato per le estensioni firefox quindi vi verrà chiesto di scaricarla. Dovrete poi installare tale estensione con "Apri con" e scegliendo Firefox o da linea di comando "firefox estensione.xpi".
Trovate un'altra recensione di questo software su newstechnology.
Funzionamento tecnico
Questo è un pogetto open source,quindi sono disponibili i sorgenti per poterci creare il nostro repository, ma NON l'interfaccia amministrativa e "perlustrativa" del sito ufficiale (in attesa di chiarimenti).
Win-get farà delle query come questa ad uno script PHP (notate i parametri inviati via GET) e si otterrà un file XML descrittivo che verrà poi gestito da Win-get e presentato nel prompt dei comandi.
Come illustra questa query e quella nella foto,sembra che questo progetto sia un repository di collegamenti alle applicazioni da scaricare e che sul server Sourceforge non abbiano messo alcun software (molto probabilmente perchè non si può nemmeno fare). Quindi se guadate al file XML ritornato dalla precedente query,l'indirizzo del file zip verrà dato in pasto a wget presumo.
Creazione di un proprio repository
Ho intenzione di creare un repository su Aruba sfruttando i files forniti,ma permettendo anche di scaricare direttamente dal server Aruba i software,dal momento che godo di spazio illimitato :-D (ma non banda illimitata presumo!). Chi è su Aruba sa che si hanno a disposizione solitamente 5 database predefiniti per un hosting da 30 sacchi l'anno (mi pare,a me hanno regalato il sottodominio quindi non ricordo :-D). Quindi l'istruzione CREATE DATABASE `w154283_winget` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; non sarà possibile. Possiamo:
- rinominare uno dei database predefiniti,azione possibile dal pannello di controllo selezionado "Operazioni";
- semplicemente modificare USE w154283_winget; con il nome del nostro database e cancellare o commentare la creazione del database.
Prendiamo quindi il dump del database e imbocchiamolo a PHPMyAdmin presente su Aruba. Il database è composto da 5 tabelle:
- applications: contiene i dati generali di un'applicazione e il link dove risiede;
- dependencies: le dipendenze per una determinata applicazione;
- errors: gli errori in riferimento alle applicazioni;
- mirrors: eventuali mirrors per una certa applicazione;
- requests: identica ad applications,mi è ancora sconosciuto il significato della sua ridondante esistenza;
Fatto questo basta caricare i file winget.php e db.php sul proprio server. L'indirizzo del proprio repository sarà quello rappresentato dalla locazione del file winget.php.
A questo punto manca tutta l'interfaccia amministrativa che il sito ufficiale presenta. Ho chiesto a Ryan se è possibile avere tali files,dal momento che su CVS di sourceforge presenta solo i 3 files menzionati.
Nel caso non fosse possibile ne costruirò una mia non appena avrò tempo :)
16:32 | Categorie: MySQL, PHP, programmazione, software, SQL, Windows | 0 Comments
A cup of coffee
Una tazza di caffè e uno sguardo alla caffeina :-D (autore: ignoto). Foto pervenutami dai meandri del corso di Chimiche e tecnologie farmaceutiche di Pisa.
22:14 | | 0 Comments
Macro in Visual Studio per formattare e pulire sorgenti importati da fonti esterne
Preambolo
Come già detto forse in alcuni post,mi sto leggendo "Teach yourself ANSI C++ in 21 days", ISBN 0-672-30887-6 , J.Liberty, J.Hord - SAMS Publishing (1996).
In questo libro ben fatto sono presenti numerosi programmi (trovate la lista di quelli che ho fatto io qui),ma dal momento che il libro è in formato PDF,mi tocca andare di CTRL+C per copiare il codice dal PDF e importarlo in Visual Studio.
Qui sorge lo sbattimento di ripulire il codice sorgente da alcune cosette presenti nella versione PDF. A seguire una macro che farà proprio questo,dovrete poi modificare solo l'espressione regolare a seconda di quello che dovete fare.
Presentazione del problema
Un programma nel PDF menzionato sopra,si presenta così:
Quando viene importato in Visual Studio si presenta così:
Fig 2
L'immagine Fig 2 non è il corrispettivo di Fig 1 ma rende l'idea dello schifo generato: un codice non formattato,con la presenza di numeri di linea da scartare e con la possibile presenza di caratteri spurii come ” e via dicendo.
Creazione della macro
Siccome non conosco il Visual Basic e le svariate API che regolano l'uso delle macro in Visual Studio,ho usato lo strumento di registrazione delle macro (Tools -> Macros -> Record Temporary Macro oppure Ctrl+Shift+R).
I comandi che seguono verranno registrati dalla macro:
- Edit -> Find and Replace -> Replace in Files. Cliccare sul + di Options e flaggare "Use" scgliendo dal menu a tendina "Regular Expression". In "Look In" scegliere "Current Document";
- In "Find what" inserire l'espressione regolare che ci serve. Per me: prima tratto i numeri di linea inserendo in "Find What" ^:z\: e in "Replace with" nulla. Se ci sono altre sostituzioni da fare ripetere il passaggio.
- Chiudere la finestra di "Find and Replace";
- Riportiamo il focus sul codice sorgente e premere CTRL+A e poi CTRL+F / CTRL+K in sequenza uno dopo l'altro. Questi comandi rispettivamente selezionano tutto il codice e lo indentano per bene (ci sono ovviamente le rispettive voci di menu). Salviamo il file.
- Stoppare la macro;
In questo modo abbiamo il codicep rincipale per una macro funzionante su UN SOLO E BEN PRECISO FILE: quello su cui stavamo lavorando. Ma se volessimo che la macro funzionasse per tutti i file su cui stiamo lavorando?
Purtroppo Visual Studio registra che abbiamo reso attiva la finestra con il codice del nostro programma e traduce pedissequamente. Dobbiamo editare la nostra macro. Io non conoscendo bene le API ho fatto si che venisse richiesto il nom del file da editare e in questo modo la macro funziona. Ecco la macro finale:
Sub PulisciCodice()Salvate pure questa macro. L'unica cosa che non son riuscito a fare è l'uso dell'espressione regolare per il carattere “ poichè Visual Studio lo interpreta come un uguale. Chiederò su GoogleGoups. Si ringrazia Guido per il breve consulto su Visual Basic.
Dim nomefile As String
nomefile = InputBox("Come si chiama il file da pulire?", "MACRO PULIZIA FILE")
If nomefile = "" Then
MsgBox("Non hai immesso alcun valore,la macro esce.")
Exit Sub
End If
DTE.ExecuteCommand("Edit.ReplaceinFiles")
DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Activate() 'Find and Replace
DTE.Windows.Item(Constants.vsWindowKindMacroExplorer).Activate()
DTE.Find.FindWhat = "^:z\:"
DTE.Find.ReplaceWith = ""
DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
DTE.Find.MatchCase = False
DTE.Find.MatchWholeWord = False
DTE.Find.MatchInHiddenText = True
DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResults1
DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
Throw New System.Exception("vsFindResultNotFound")
End If
DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Close()
DTE.Windows.Item(nomefile).Activate()
DTE.ActiveDocument.Selection.SelectAll()
DTE.ExecuteCommand("Edit.FormatSelection")
DTE.ActiveDocument.Save()
End Sub
17:35 | Categorie: Visual Studio | 0 Comments
Fence post errors e Visual Studio
Dicesi "Fence post errors" quegli errori comuni nella gestione errata di un array,nella fattispecie quando assegniamo un valore ad un indice dell'array fuori dai suoi limiti. Esempio pratico:
long TargetArray[25]; // array to fill
TargetArray[25] = 20; // out of bounds!!
Nell'esempio soprastante,Visual Studio farà tranquillamente l'asseegnamento e stamperà pure 20 in fase di esecuzione. Qualcuno un po' più perito di me in C++ e Visual Studio 2005,mi chiarisce perchè Visual Studio non lancia errori o avvertimenti di sorta ma tratta un array quasi come fosse uno stack? Grazie.
11:10 | Categorie: c++ | 4 Comments
Test di S.Antonio per vedere se sei "a posto"
Preambolo
Chiamo così quei test che l'amico di turno ci invia via mail e ci invita ad inoltrarlo ad altra gente (in uqesto caso è Kia a mandarmelo). E questo di solito vale per presentazioni powerpoint accattivanti,barzellette e via dicendo. Sono drasticamente in calo invece gli inoltri dei classici hoax di persone bisognose,morenti o campagne varie.
Ma puntualmente quando questa roba mi arriva,bella o brutta che sia,si blocca. Giustamente. Non posso contribuire a smerdare le caselle degli altri. La spazzatura va gestita,cosa che purtroppo non succede a Napoli.
Ma veniamo ai test
Ecco la serie di test che mi è pervenuta per stabilire la "normalità" di una persona. I test riguardano calcoli matematici e associazioni mentali. Se rispondi come previsto sei "normale" altrimenti sei quello che sei :-D :
TEST n° 1
Eseguire mentalmente i calcoli ed esporre il risultato:
Hai 1000, aggiungi 40.
Aggiungi ancora 1000.
Aggiungi 30,
e di nuovo 1000.
Aggiungi 20.
Aggiungi ancora 1000 e poi 10.
Qual è il totale?
La risposta sta più in basso
Il tuo risultato È forse 5000?
La risposta esatta è 4100!
Esito mio: ho risposto 4100. Dal primo test risulto anormale :D Andiamo avanti.
TEST n° 2
Conta quante lettere 'F' ci sono nel testo seguente senza usare il mouse.
FINISHED FILES ARE THE
RESULT OF YEARS OF SCIENTIFIC
STUDY COMBINED WITH
THE EXPERIENCE OF YEARS
Quante sono?
Sono 6!!!
Esito mio: cazzo ho detto 2! Da questo test invece risulto rincoglionito :-D Ho praticamente saltato tutti gli OF. Ho visto solo le F nella prima riga.
TEST n° 3
Segui le istruzioni e rispondi alle domande, una per volta,MENTALMENTE e il più rapidamente possibile, ma non andare
avanti senza aver risposto alla precedente. E sorprenditi con la risposta!!! (recita il test)
Adesso rispondi, una per volta. Quanto fa:15+6
3+56
89+2
12+53
75+26
25+52
63+32Si, i calcoli mentali sono difficili, ma adessso viene il bello. Sii persistente e prosegui.
123+5
Adesso:
PENSA SUBITO AD UN ATTREZZO E AD UN COLORE!
Continua ancora a pensare ad un attrezzo ed un colore....pensa intensamente...
Hai pensato ad un martello rosso, non è vero?
Esito mio: non ci posso credere gente. La cosa che mi ha indotto a postare questa stronzata è stato proprio questo test. Voi avrete pensato a palmari,mele,sedie o quadri. Io,purtroppo devo ammettere di aver pensato un maledettissimo martello rosso! Sono totalmente normale e prevedibile,che sconforto :-D
Chi non ha niente da fare,mi dica un po' i suoi risultati.
20:00 | Categorie: Cazzate | 1 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
Ti presento Micio - Bau
Ovunque batte un cuore animale vive una parte di noi. Anche se guardiamo altrove il loro amore ci accompagna,anche dopo aver smesso di amarli, anche dopo aver girato loro le spalle NON abbandonare chi TI AMA ma abbandona GLI ABBANDONI:Vacanze con noi
Questo post è dedicato agli animali chiusi in gabbia: se guardate bene nei loro occhi ci vedrete tanta tristezza,alcune volte diffidenza nei confronti dell'uomo (per via di maltrattamenti),altre volte il desiderio anche inconscio di poter correre via da quei posti,talvolta orrendi,definiti canili.
Oggi presento il portale dedicato agli animali Micio - Bau. Dispone di un forum e di un blog. Se avete un annuncio di adozione da fare oppure siete interessati ad adottare una creaturina bisognosa d'affetto,quello è il posto giusto!
Ma questo post non finisce qui: vuole essere un aggregatore di siti che promuovono l'adozione di animali randagi. Invito per cui i lettori a segnalarmi altri siti e portali simili,provvederò a riempire una lista!!!
Lista
- Adozioni a distanza di cani ex combattenti;
- Associazione Canili Lazio;
- Canile si S.Omobono Terme (Bergamo);
- Cerco Casa - suggerito da Simonetta;
- Cucciolissimi;
- Cercano famiglia (Canile di Grignano - Bergamo);
- Pet files - via dezone;
- Porgi una zampa - via dezone;
21:35 | Categorie: Annunci | 0 Comments
Il cuccioletto
Per la serie "quando meno te l'aspetti..." ecco un altro video di Lasse,il mio mito su Youtube:
20:38 | Categorie: Cazzate | 0 Comments
Campagna "No al preambolfeed"
Oh lettore che capiti qui da remoti nodi della rete,trasportato dai rami tentacolari e monopolistici di Zio G oppure da qualche trackback di un blog a me ignoto,forse sarai interessato alla campagna No al preambolfeed.
Di fatto quel che chiedo per "un feed come Dio comanda (INTERO!)" è che questo sia un feed maledettamente,interamente,del tutto e completamente ma anche un po' fottutamente INTERO. Si,INTERO,lo voglio TUTTO e INTERO :D
Non mi interessa se vuoi guadagnare 1 dollaro ogni tre mesi inserendoci AdSense (ah guadagni di più? Dimmi chi sei!),puoi inserire tutte le zozzerie pubblicitarie che vuoi (e qui qualcuno avrà da ridire dicendo "tagliamelo ma non metterci zozzerie" o qualche altra variante).
Quel che vorrei è che l'utilità di un feed non fosse svilita dal magico flag che la piattaforma/applicazione di turno (vuoi Blogger,Wordpress o FeedBurner) offre,permettendo di mostrare una porzione dell'articolo. Che me ne faccio io di una porzione se il 90% dei blogger partono ragionevolmente con un preambolo? Mi leggo i preamboli via feed? Preambolfeed chiamiamoli allora. Mi tocca fare dei click per leggermi il preambolfeed e poi se proprio mi interessa la cosa (desumendola più dal titolo dell'articolo che dal preambolo) mi tocca fare altri click per leggere la notizia aspettando che si apra Firefox (che ora è bello grasso,con tutte le sue estensioni e gli oltre 2000 bookmarks).
E allora convoco tutti i bloggers a divulgare,diffondere e distribuire in tutte le salse del Web 2.* (ma anche 1.0 va più che bene) questo messaggio,infilando in una delle vostre sidebar un bel talloncino, detto altresì antipixel,creati ad-hoc con i "famosi" (?) servizi Button Maker,Pixel Button e via dicendo e linkando quest'articolo.
Se vi fan schifo questi antipixel,cosa anche ragionevole visto che il testo non è manco allineato per bene,potete crearvene degli altri a vostro piacimento linkando l'articolo. Quel che conta alla fine è il messaggio: FEED COMPLETI. :D
16:02 | | 2 Comments
Scherzi della domenica con software free
MorphVOX Junior 2.6.1 è un bel software (per Windows 2000/XP/XP64/Vista) che ho trovato via AB Techno Blog per modificare la propria voce dopo un breve wizard lanciato dal programma. Le modificazioni possibili sono quelle (nel mio caso):
- voce da accanito fumatore;
- vocina stile maniaco oppure quella provocata dall'elio;
- voce di donna (direi un contralto o meglio un contraltone,perchè la voce è bella profonda);
Fate click su "Morph" cerchiato in blu per modificare la vostra voce e selezionate il morphing tramite il menu a tendina indicato dalla freccia blu. Potete anche immettere effetti sonori quali allarmi,sgommate e via dicendo (freccia blu in basso).
All'atto dell'installazione potete installare il driver e renderlo predefinito. Fatto ciò aprite il vostro client Voip (nel mio caso VoipStunt) e mettete come driver non quello di default bensì quello fornito dal programma (vedi foto qui in basso):
Le features della versione PRO permettono molte altre cose,il costo del software è sui 40 dollari. Da provare eheheh
11:29 | Categorie: Cazzate, software | 3 Comments
Appuntamento con OilProject: DBMS a confronto
Preambolo
Stasera volevo vedermi un film,per cui ho iniziato a prenderne uno a caso dalla mia raccolta: "Un ponte per Terabithia". Beh a metà film ho smesso. Trattasi di ragazzini dalla fervida immaginazione,fervida a tal punto da arrivare a crearsi un mondo tutto loro.
Deciso a non arrendermi ho optato per "Fascisti su Marte",del buon Guzzanti. Sebbene possa sembrare carino per i primi 5 minuti,dopo diventa anch'esso schifosamente noioso. Dunque mi son detto che non era serata per i film e ho deciso di apporfondire un po' le mie conoscenze con qualche lettura che avevo a disposizione.
DBMS a confronto
Si intitola così la presentazione (disponibile in PDF o ODP,ma c'è anche l'MP3 che presenta i suoi lavori) di Nello Coppeto (aka NeCoSi),autore del sito web Geekplace e mebro della community di OilProject.
Il suo lavoro mette a confronto da un punto di vista generale e scarsamente tecnico i tre principali DBMS in circolazione:
- MySQL;
- Oracle;
- PostgreSQL;
Oracle
Nasce dal '77 e prosegue la sua evoluzione fino ad arrivare alla versione 10g del 2003,ora surclassata dalla 11g come mi fa notare un lettore. Esistono ben 5 versioni di Oracle che con mia grande sorpresa costano migliaia di dollari: si va dai 18 mila ai 275 mila dollari per licenze della versione enterprise edition a tempo indeterminato con supporto e aggiornamenti,senza contare che gli optional sono anch'essi a pagamento.
La versione liberamente scaricabile è la Express Edition,che nell'aprile del 2006 viene premiato da non ricordo chi come miglir database. Viene delineato un tratto monopolista di Oracle,che fa addirittura proposte d'acquisto di MySQL e JBoss.
Essendo software chiuso e basando la sua sicurezza su ciò che non si conosce (la più bassa forma per intenderci) ha avuto un record di inefficienza nella bug correction: quasi 2 anni per una patch!!
MySQL
Sviluppato a partire dal '95,viene usato nell'architettura LAMP e da Wikipedia,chi non lo conosce? Quel che non sapevo è che avesse due licenze:
- GPL;
- commerciale: se acquisto questa licenza e se modifico e distribuisco il software posso scegliere anche questa licenza e venderlo,annullando la viralità della GPL;
Scitto in C/C++,ha estensioni per altri DBMS come PostgreSQL. Questo non so a che livello si estenda. Supporterà le stored procedure e le funzioni trigger di PG?
Vanta numeri per 30 mila download al giorno su 5 milioni di installazioni globali.
PostgreSQL
La prima versione risale all'89 e questo DBMS open source arriva ad oggi alla versione 8. Ha una licenza BSD,quindi molto flessibile.
PostgreSQL ho avuto modo di studiarlo e approfondirlo un pochino quest'anno nel corso di basi di dati (mentre per Nello è toccato Oracle). Potete vedere i miei appunti su PotsgreSQL a questa pagina.
Conclusioni
Ho trovato la sua esposizione interessante,tant'è che ve ne sto parlando e vi invito a dargli una buona lettura (e ascolto) soprattutto se siete indecisi su quale DBMS scegliere per i vostri tornaconti e volete farvi una panoramica,anche perchè alla fine dei fatti potete scaricare liberamente dalla rete una versione di qualsiasi di questi tre DBMS.
Potete trovare i lavori di Nello su Oilproject oppure da me nella sezione riservata alle letture libere.
02:50 | Categorie: MySQL, PostgreSQL, software | 2 Comments
Software e mp3 per il relax da stress digitale
Workrave è un software che,preventivamente settato,è in grado di gestire il nostro tempo lavorativo al computer. La finestrella qui a fianco è tutto ciò che vi si presenta. Il tempo a fianco alla tazzina di caffè è il tempo rimanente alla prossima pausa mentre il tempo sotto sono le ore lavorative giornaliere che avete stabilito per voi.
Il software non si limita a questo: prima di tutto è da notare che se vi allontanate dal pc dopo alcuni secondi il contatore si blocca poichè non rileva nè l'uso del mouse nè della tastiera deducendo che non siete al pc,quindi non conteggerà come tempo lavorativo questo momento.
Secondariamente il programma vi offre degli esercizi di stretching e rilassamento dei muscoli e degli occhi da fare durante la pausa (questi io li salto). Allo scoccare della paus venite avvisati con una finestra che vi invita a riposarvi :)
Come altro sollievo vi propongo invece Fullmind. Cos'è FullMind? E'
"un sistema per imparare da soli o con l'aiuto di un esperto a superare i problemi d'ansia di tutti i giorni e aiutare ad affrontare i problemi d'ansia più importanti, come gli attacchi di panico o stati ansiosi generalizzati."Ma quello che ci viene offerto praticamente e gratuitamente sono delle registrazioni audio che,tramite l'inotica voce dello psicologo D'Alessandro,dovrebbero aiutarci a dimenticare ciò che ci circonda e a concentrarsi su noi stessi. Queste registrazioni sono disponibili previa registrazione (niente bugmenot mi dispiace) e in teoria si rivolgono anche per chi è affetto da disturbi d'ansia più complessi come ansia generalizzata o attacchi di panico.
Ad ogni modo io ne ho ascoltata una in treno e quando ho aperto gli occhi mi sono sentito vagamente intorpidito,come appena svegliato,comunque mi sentivo veramente tranquillo. Dateci un ascolto anche voi magari ;)
16:37 | Categorie: software | 0 Comments
[PHP]Listato di una directory e sua dimensione
function size_readable($size, $retstring = null) {
// adapted from code at http://aidanlister.com/repos/v/function.size_readable.php
$sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
if ($retstring === null) { $retstring = '%01.2f %s'; }
$lastsizestring = end($sizes);
foreach ($sizes as $sizestring) {
if ($size < 1024) { break; }
if ($sizestring != $lastsizestring) { $size /= 1024; }
}
if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } // Bytes aren't normally fractional
return sprintf($retstring, $size, $sizestring);
}
La seconda funzione scansiona una directory e fornisce in output i files e directory ivi contenuti,omettendo la directory corrente (".") e quella superiore (".."). Dà altresì come risultato il numero di files la loro dimensione,così come la dimensione totale dei files che occupano la cartella. Usiamo la funzione precedente per l'output sulla dimensione dei files.
function scan_dir($path) {
$dir = $path;
$counter_files = $size = 0;
$string = "";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file == "." || $file == "..") continue;
$counter_files++;
$string.= "- $file - ".filetype($dir."/".$file)." ".filesize($dir."/".$file)." bytes
";
$size+=filesize($dir."/".$file);
}
closedir($dh);
}
echo "Directory contenente $counter_files files e occupante ".size_readable($size)."
Lista:
";
echo $string;
}
}
Il risultato dell'uso di queste due funzioni lo potete vedere qui.
Se invece volete qualcosa di molto più fico,vi suggerisco snif (simple and nice index file). Potete vedere la demo qui e il suo codice sorgente qui.
16:07 | Categorie: PHP | 0 Comments
Clipperz alla prova
Clipperz è un password manager online realizzato in javascript. Basta fare una breve ricerca online per trovare un sacco di recensioni,anche e soprattutto in italiano,visto che gli sviluppatori sono italiani.
Sono un felice utilizzatore di KeePass Password Manager,ancora più felice quando ho scoperto dell'esistenza di KeePassX,il cui formato di database è compatibile con la versione Windows.
Ad ogni modo avere un gestore online sarebbe ancora più comodo,sebbene esista perfino la versione portabile di KeePass. Quindi tornando a Clipperz,la prima cosa che mi premeva era trasportare i miei dati (un centinaio forse,anche meno) in Clipperz. A tal fine Clipperz permette l'importazione di dati in vari formati,anche da quelli esportati da KeePass. Peccato che questa importazione talvolta fallisca,poichè per ammissione stessa degli svviluppatori i test non sono stati moltissimi e quando ci sono stati è per merito di alcuni volontari che hanno fornito il database di KeePass. Ad ogni modo spippolando un pochino e togliendo alcuni campi si riesce ad esportare sostanzialmente quello che ci serve: username e password.
Come seconda cosa direi che l'interfaccia grafica non permette molte manipolazioni delle 'cards' (le schede che contengono i dati di un account): per esempio non è possibile la selezione multipla di più cards e se volessi cancellare in massa 3 o 4 cards dovrei farlo a mano. A questo si aggiunge che non c'è il benchè minimo raggruppamento delle cards: quando sono state importate da KeePass,le cards erano contenute in una lista,di non facile lettura nel caso di centinaia di elementi,quindi rendendo l'applicazione adatta a meno dati.
Il punto di forza sicuramente sono:
- possibilità di lanciare Clipperz in versione compatta in una sidebar (solo per firefox);
- i bookmarklet: permettono di avere un link diretto ad un'applicazione web che ci assicura
l'autenticazione automatica. Nel caso non avessimo già inserito il sito fra le nostre cards,si segue questa procedura,altrimenti questa. Il risultato è eccellente,poichè potete caricare sempre Clipperz in versione compatta nella sidebar di Firefox e avere link diretti ai siti Web che automaticamente vi autenticano,evitando in questo modo di salvare le password in Firefox (ci sarebbero solo i vostri cookie a tradirvi se scegliete il login automatico). La foto qui accanto è il risultato.
10:38 | Categorie: Servizi | 4 Comments
Cambio Feed
D'ora in poi userò Feed Burner come tutti i cristiani. Per i pochi lettori abbonati al blog (almeno due via Google reader :D) usate questo.
00:12 | Categorie: blogger, Eventi, me stesso | 4 Comments
Alien Vs Predator - requiem
Per quanto riguarda Predator,il numero due non è stato davvero un gran che: è stato bello poter vedere più particolari del personaggio ma certe scene erano risibili.
Alien Vs Predator,già dal nome,non presagiva niente di buono,se non una trovata cinematografica,un tentativo di amalgamare e far incontrare le due figure per vedere chi la spunta. Ero andato al cinema con il presentimento di vedere una cazzata (e di vedere Roul Bova fra le prime vittime!!) ma alla fine sono rimasto comunque incollato alla sedia,perchè questi due mostri hanno veramente una grande presa nella mia immaginazione.
Per questo motivo non mi perderò certamente l'ultimo (??) episodio: Alien Vs Predator - Requiem presumibilmente il 25 gennaio in Italia (negli States hanno avuto la pensata di metterlo come film di Natale :D). Il film si preannuncia molto più splatter del previsto! Sotto il trailer "a fascia protetta" per così dire,cioè dovete immettere la vostra data di nascita per vederlo (sarà vietato ai minori di 14 anni?)
20:57 | Categorie: film - Video | 0 Comments
RealPlayer scarica i video di Youtube
- talvolta quello che non apre uno,lo apre quell'altro;
- esistono formati che vengono gestiti meglio o nativamente da alcuni player;
Cliccando su Download This Video verrà scaricato il filmato flash (formato .flv) sul proprio sistema (potete trovare i vostri filmati al percorso C:\Users\Nome\Videos\RealPlayer Downloads in Vista). La conversione in altri formati è valida solo per la versione a pagamento del programma,tuttavia se cliccate con il destro all'interno di RealPlayer sul filmato salvato nella vostra libreria e selezionando la voce "Copy To",se avete una periferica USB collegata,potete selezionarla e RealPlayer voi salverà l'audio del video in formato WMA. Non male come cosa.18:04 | Categorie: software | 0 Comments
Aggiornamenti Wordpress
php bloginfo('version');" ovunque compaia. Non ho idea se esistano metodi per capire la versione estatta di Wordpress. Sicuramente è possibile escludere delle versioni provando vecchi exploit.17:39 | Categorie: wordpress | 0 Comments
Retourné de Paris
Rieccoci in patria dopo 4 giorni in quel di Parigi. Sono stati dei bei giorni nonostante fossi complito dall'influenza che non mi permetteva di godermi sul serio le bellezze della città.Mi sarei aspettato maggir casino sotto la Tour Eiffel,invece devo dire che la gente è rimasta piuttosto composta (probabilmente non sufficientemente ubiraca a quell'ora). Pensavo altresi che la città avesse provveduto a qualche spettacolo,ma in quella zona non è successo nulla,solo languidi fuochi d'artificio sparati in aria da alcuni francesi.
Mi pare di aver visto nella tv locale che c'è stata una parata in alcune vie della città,ma me la sono evidentemente persa.
Per il resto che dire?
- Gli hotel francesi fanno pratica dell'overbooking: prenotano più camere di quelle che hanno per pararsi le chiappette nel caso qualuno molli alla fine. Ma se non molla? Ci si ritrova come noi,a ricevere una mail in cui si dice che per alcuni problemi informatici è saltata la nostra prenotazione :D
Prenotando un altro hotel è successa la medesima cosa ma stavolta non hanno fatto in tempo a spedirci una mail,eravamo per strada ormai. Arrivati lì però sono stati abbastanza cortesi a piazzarci in un altro hotel della loro catena e a trasportarci in taxi a loro spese. Trattamento non sempre riservato. - La cucina francese non è davvero niente male: ho gustato delle maxi insalate guarnite da varie specialità di carne e salsine varie,mi sono abbuffato con le blasonate crepes,talvolta pagate a peso d'oro a seconda del locale in cui finivi (sempre meglio mangiarsele nei baracchini per strada o in locali appositi);
- Le patisserie/boulangerie spaccano davvero! I dolci,i beignet framboise,le torte,i croissant, le eclaire au chocolat e via dicendo...un tripudio di sapori!
- La gentilezza di crti francesi: mentre eravamo per strada con l'amata guida della Loonley planet,una signora ha avuto premura di chiederci se avevamo bisogno d'aiuto. Ve lo iummaginate a Milano una cosa del genere? Al massimo riesco ad immaginare un "Levati dalle palle" o una bella strombazzata di clacson,tanto amato dai guidatori milanesi,che danno il peggio di sè alla guida;
12:55 | Categorie: Eventi, me stesso | 4 Comments
