Giu 28

Mi è capitato di recente di ricevere una richiesta particolare: realizzare una piccola modifica ad una applicazione web realizzata in asp.net. L’applicazione in questione era stata rilasciata compilata e senza i sorgenti acclusi.
Dopo una breve indagine, la cosa si riviera meno semplice del previsto: il collega che si occupò della realizzazione del progetto ha smarrito i sorgenti (argh!).

Che fare quindi? Riscrivere da capo l’applicazione? Nooooo! Decompiliamo la versione attualmente in produzione! -)

Per prima cosa, diamo uno sguardo a cosa ci troviamo tra le mani: anziche’ avere, come in fase di sviluppo del progetto, ad ogni pagina .ascx un corrispondente file contenente il codebehind (.ascx.vb o .ascx.cs), in una applicazione compilata e’ presente solamente il file .ascx, che a sua volta ‘pesca’ codice da un assembly posizionato nel folder Bin, nella root dell’applicazione.

Nell’intestazione della nostra pagina troveremo quindi qualcosa del genere:

La proprieta’ Inherits ci fornisce il nome dell’assembly che contiene il codebehind della pagina (in questo caso App_Web_js57z-yx.dll).
A questo punto abbiamo tutte le informazioni che ci servono, iniziamo a decompilare.
Scarichiamo quindi un decompilatore per .net: personalmente uso Reflector, la versione base e’ gratuita e sembra fare il suo lavoro senza grossi problemi.

Una volta installato, diamo in pasto a reflector l’assembly identificato leggendo l’intestazione della pagina (App_Web_js57z-yx.dll), poi click di tasto destro sul nome apparso nell’elenco e selezionate ‘Export’:

Reflector a questo punto salvera’ un folder contenente il sorgente estratto dall’assembly: assieme ad alcune dipendenze che, troverete anche il file contenente il codebehind della pagina:

Ci rimane da effettuare una ultima, semplicissima operazione: copiamo il file generato da reflector nella stessa directory contenente il corrispondente .ascx, rinominiamo il nostro file con la sintassi standard (nel nostro esempio default.ascx.vb oppure default.ascx.cs) e modifichiamo in questo modo l’intestazione della pagina:

Compiliamo il progetto e prendiamo nota delle dipendenze che non vengono soddisfatte: ripetiamo quindi questa procedura per i rimanenti file fino a risolvere tutte le dipendenze mancanti.

Infine, ricontrolliamo il codice verificando che tutti gli eventi dei controlli siano ‘collegati’ nel codebehind: in caso contrario sara’ necessario specificare l’handle dell’evento alla sub corrispondente.

Archiviato in:ASP.NET, featured, Programmazione



fonte: andreafortuna.wordpress.com » Vai al post originale





Giu 28

Bel tutorial pubblicato da hack-a-day che illustra la realizzazione di una stampante per t-shirts.

Archiviato in:Generici, Hacking



fonte: andreafortuna.wordpress.com » Vai al post originale

Ago 29

Prowl e’ un progetto interessante: un sistema di notifiche push per iPhone che si interfaccia col piu’ famoso sistema di notifica Growl (per Mac e Windows).

Prowl fornisce anche una serie di API, utili per mandare notifiche Push agli iPhone registrati. Viene fornito anche uno script di esempio in Perl.

Io preferisco una soluzione piu’ ’scarna’ ma immediata: utilizzando CURL e’ possibili inviare una notifica con una sola riga di codice:

curl -X POST -d"apikey=APIKEY" -d"application=Test" -d"event=Messaggio" -d"message=Test" https://prowl.weks.net/publicapi/add

sostituite naturalmente la parola APIKEY con la vostra chiave API, reperibile a Questo Indirizzo.

Posted in iPhone, Programmazione Tagged: bash, iPhone



fonte: andreafortuna.wordpress.com » Vai al post originale

Mar 23

Suggerimento rapidorapido pescato dal forum di supporto di Dreamhost.

Nel caso si abbia la necessità di personalizzare il PHP.INI, ad esempio (come è servito a me) per aumentare il timeout di uno script, la procedura è questa:

  1. Se non presente, creare una directory ‘cgi-bin’ all’interno della directory che ospita il dominio (mkdir ~/domain.com/cgi-bin/)
  2. Nella home del proprio utente, creare un file (php_update.sh) contenente il seguente script:

    #/bin/sh

    CGIFILE="$HOME/dominio.com/cgi-bin/php.cgi"
    INIFILE="$HOME/dominio.com/cgi-bin/php.ini"

    cp /usr/local/bin/php "$CGIFILE"
    cp /etc/php/php.ini "$INIFILE"

    perl -p -i -e '
    s/.*post_max_size.*/post_max_size = 100M/;
    s/.*upload_max_filesize.*/upload_max_filesize = 100M/;
    s/.*max_execution_time.*/max_execution_time = 600/;
    s/.*memory_limit.*/memory_limit = 90M/;
    ' "$INIFILE"

  3. Renderlo eseguibile (chmod +x php_update.sh) ed eseguirlo (./php_update.sh).
  4. Aggiornare il file .htaccess nella root del sito (o crearlo se non presente) e aggiungere la riga seguente: “AddHandler php-cgi .php” (senza i “)
  5. Aggiungere lo script al crontab in modo da farlo eseguire a scadenza settimanale, in modo da mantenere la propria copia locale di php.ini aggiornata con quello principale.

Posted in PHP, Programmazione, Tips, Unix Tagged: dreamhost, php.ini


fonte: andreafortuna.wordpress.com » Vai al post originale

Jul 30

1. Herbalife è una multinazionale con 25 anni di esperienza diffusa oggi in 60 paesi del mondo
2. Tutti i prodotti sono a base naturale, vero e proprio "cibo" senza controindicazioni
3. 45.000.000 di clienti soddisfatti in tutto il mondo
4. Herbalife ha finanziato il primo laboratorio al mondo di Nutrizione Cellulare e Molecolare all'interno dell'Università UCLA di Los Angeles, diretto dal Prof. David Heber, nutrizionista di fama mondiale, Direttore del nostro staff medico-scientifico. Heber è l'ideatore di ShapeWorks, la nuova linea nutrizionale basata sulla personalizzazione dell'apporto di proteine di soia.
5. All'interno del suo comitato medico scientifico illustri personalità come il Premio Nobel per la Medicina 1998 Dr. Louis J. Ignarro, famoso per i suoi studi sulla cardiovascolarità. Ignarro ha già firmato prodotti rivoluzionari di prevenzione e benessere in esclusiva per Herbalife, come il Prelox Blue ed il NiteWorks (per saperne di più clicca qui)

fonte: dieta-dimagrante.com » vai al post originale

Mar 19

genius-barIeri, improvvisamente e inaspettatamente dopo 7 mesi di servizio ineccepibile,  il mio iPhone ha deciso di trasformarsi in un iPod Touch: l’audio delle telefonate misteriosamente sparito (dallo speaker interno, dal vivavoce, dalle cuffie e dall’auticolare BT), presente invece in tutte le altre funzionalita’.

Dopo aver provato reset vari, ripristino e riti voodo desisto e chiamo il servizio clienti Apple (199 120 800).
Vengo accolto da una signorina che, senza nemmeno dirmi ‘buongiorno’ mi chiede numero di serie dell’iPhone, nome, cognome, indirizzo email, numero di cellulare e numero di scarpe: avuti i dati diventa improvvisamente gentile e mi chiede di illustarle il problema.

Le spiego il malfunzionamento e lei mi mette davanti a 2 scelte: prenotare il ritiro da parte di un corriere del telefono e riceverlo riparato entro 5 giorni oppure (essendo a Roma) prenotare un appuntamento al Genius Bar nell’AppleStore del centro commerciale Roma Est.

Scelgo la seconda e la sera, uscito dall’ufficio, mi sciroppo una ventina di chilometri per raggiungere il centro commerciale.

L’AppleStore come al solito e’ talmente pieno di gente da dover quasi sgomitare per raggiungere il GeniusBar, dietro le casse: gente che, oltre a osservare-toccare-provare i prodotti, inaspettatamente per il periodo economico non proprio felice COMPRA. -)

Mi accoglie Paolo, ‘Apple Specialist’ al quale spiego nuovamente il problema: prende in consegna l’iphone, lo scruta con un un oggetto simile a un otoscopio (forse per verificare i famosi sensori di umidita’?), fa un paio di telefonate di prova e poi conclude con un laconico “Ok, non funziona, te lo cambio.“.

10 minuti dopo esco dall’apple store con un iPhone nuovo (leggi ‘rigenerato’), senza graffi e per di piu’ con la batteria sicuramente in uno stato migliore del precedente.

Che dire? Lode a Apple per l’ottima assistenza che, non smettero’ mai di dirlo, e’ fra le motivazioni che giustificano pienamente i prezzi nettamente piu’ alti rispetto alla concorrenza.

Posted in Apple, iPhone, Personali Tagged: AppleStore, assistenza, audio, GeniusBar, iPhone


fonte: andreafortuna.wordpress.com » Vai al post originale

Feb 15

La domanda su come fare mi è stata posta oggi in ufficio, e la risposta non posso che prenderla dalla pagina dedicata su TechNet:

Di seguito viene riportata una procedura per configurare Microsoft SQL Server al fine di migrare il database MySQL.

1. Installare il supporto MyODBC, disponibile all’indirizzo http://www.mysql.com/

2. Durante l’installazione viene visualizzata la finestra di dialogo seguente:


      Configurare le impostazioni ODBC utilizzando le informazioni seguenti:

      Windows DSN name:
      test

      Description:
      Database di prova

      MySQL Database:
      test

      Server:
      seawolf.microsoft.com

      User:
      cgunn

      Password:
      my_password

      Port:
      3306

      Nel caso delle impostazioni precedenti, il nome specificato nel campo “Windows DSN name” deve essere univoco nel computer che esegue la connessione, l’impostazione relativa al server può essere un nome di dominio completo (assicurarsi che sia disponibile un sistema di risoluzione dei nomi, per esempio tramite DNS) oppure un indirizzo IP.

    3. Quindi eseguire l’Importazione/Esportazione guidata DTS. Dal gruppo di programmi Microsoft SQL Server selezionare Importazione ed esportazione dati. Verrà visualizzata la finestra di dialogo seguente.

        Fare clic su Avanti, quindi proseguire con il passaggio successivo.

      4. Fornire le informazioni necessarie sull’origine dei dati: queste informazioni devono essere MySQL come origine dei dati ODBC e test come DSN del sistema. Quindi, fornire le credenziali di accesso, il nome utente e la password mostrati nella successiva finestra di dialogo, infine fare clic su Avanti.

        5. Fornire i dettagli della connessione di destinazione, come mostrato nella finestra di dialogo seguente, quindi fare clic su Avanti.

          6. La finestra di dialogo Copia tabella o query consente di selezionare gli oggetti del database dall’origine, in questo caso MySQL. Selezionare Copia tabelle e viste dal database di origine. È opportuno rammentare che MySQL non supporta le viste pertanto, selezionando questa opzione, verranno copiati solo gli oggetti tabella, come mostrato di seguito. Fare clic su Avanti per continuare.

            7. Verrà visualizzata la finestra di dialogo Seleziona tabelle e viste di origine, in cui è possibile selezionare le tabelle di origine e quelle di destinazione.

              8. Fare clic sul pulsante con i trattini per eseguire la trasformazione dei dati, come mostrato nella finestra di dialogo seguente Mapping e trasformazioni di colonna.

                  In questa finestra di dialogo vengono abbinati i tipi di dati di origine e di destinazione e vengono selezionati i campi di dati Null. Al termine, fare clic su OK.
                  Verrà visualizzata la finestra di dialogo Salva, pianifica e replica pacchetto, che consente di pianificare la migrazione fuori degli orari di punta e di salvare il pacchetto DTS in percorsi e formati diversi.

                9. La finestra di dialogo Salva pacchetto DTS fornisce due tipi di password per il pacchetto DTS. La prima password è quella del proprietario e consente di proteggere tutte le informazioni sugli utenti e sulle password incluse nel pacchetto, mentre la password dell’utente consente di eseguire il pacchetto e impedisce qualsiasi esecuzione non autorizzata, come mostrato di seguito. Fare clic su Avanti per continuare.

                  10. Infine, la finestra di dialogo Completamento della Importazione/Esportazione guidata DTS riepiloga le opzioni selezionate nella procedura guidata.

                      Fare clic su Fine per iniziare la migrazione dei dati.

                    11. La finestra di dialogo Esecuzione pacchetto visualizza lo stato di ogni attività mentre viene eseguita. Un segno di spunta verde indica il completamento di un’attività. Se l’esecuzione di un’attività non riesce e l’errore interrompe il processo, verrà visualizzata una finestra che riporta le informazioni sull’errore.

                      Posted in Microsoft, MySQL, Programmazione, SQL Tagged: MySQL, SQLServer


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Google ha finalmente  introdotto la possibilità di sincronizzare ‘OverTheAir’ contatti e calendari del proprio account su iPhone, senza utilizzare servizi come NuevaSync.

                      Su questa pagina tutti i dettagli sulla configurazione.

                      Posted in Apple, Google, iPhone Tagged: google calendar, Google Contacts, iPhone


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Ho installato Leopard sul mio iBook G4 gia’ da qualche tempo, senza riscontrare nessun problema.

                      Tuttavia, dopo l’ultimo aggiornamento di Safari (che ha portato il browser alla versione 3.2.1) ho iniziato a notare un fastidioso comportamento: dopo qualche minuto di utilizzo, il browser di mamma Apple iniziava a impegnare il processore in maniera anomala, bloccando nel contempo anche la navigazione. L’unico modo per risolvere il blocco si riduceva a una ‘chiusura forzata’ e al restart del browser.

                      Dopo alcune prove, sono riuscito a restringere la ricerca del problema alle nuove funzionalita’ introdotte in questa ultima versione, e in particolare al ‘filtro anti-phishing’ (nella tab ‘Sicurezza’ delle preferenze di Safari):

                      immagine-1

                      Disabilitando questa utile funzionalita’ (che ho potuto verificare dare problemi anche su altre macchine con processore PowerPC, mentre funziona senza alcun intoppo sul mio MacMini Intel) Safari ricomincia a funzionare senza blocchi.

                      In attesa del prossimo aggiornamento di Safari… -)

                      Posted in Apple Tagged: Leopard, PowerPC, Safari


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Leggo questa richiesta nei commenti di un post dedicato a BloggerSync:

                      [...] realizzare una pagine navigabile con iphone, è solo un probelma di dimensioni e css.. ??
                      Puoi indicarmi qualche risorsa in merito per imparare qualcosa ? [...]

                      Ultimamente sto realizzando delle semplici Web Applications per iPhone e sto utilizzando iUI, un framework che, con un uso intensivo di Javascript punta alla realizzazione di applicazioni web con look&feel assolutamente simile a quello delle applicazioni ’stand-alone’.

                      L’utilizzo e’ estremamente semplice, la documentazione e gli esempi presenti aiutano non poco: buon divertimento!

                      http://code.google.com/p/iui/

                      Posted in Apple, CSS, iPhone, JavaScript, Programmazione Tagged: iPhone, iUI


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Scenario: realizzazione di un sistema di ‘aggregazione dati’ in grado di caricare in memoria dati da fonti diverse (Db SQLServer/Oracle/MySQL, files Excel, Db Access) ed utilizzarli per realizzare semplici ‘reports’.

                      Riempire di dati le DataTables e’ cosa da poco, aggregarle all’interno di un DataSet e’ ancora piu’ semplice, comincia a saltar fuori qualche difficolta’ quando arriva il momento di permettere agli utenti di  ‘interrogare’ il DataSet utilizzando una sintassi ‘SQL-Like’: soluzione ottima per l’utente finale con una minima infarinatura di Structured Query Language, difficile da realizzare senza scomodare LINQ e il Framework 3.5.

                      Per fortuna ci viene incontro Emmet Gray, ottimo programmatore che ha realizzato una classe che implementa un engine SQL minimale utilizzabile sui DataSet: SQL_Engine.

                      L’utilizzo di tale classe e’ straordinariamente semplice: una volta riempito il nostro DataSet con le tabelle contenenti i dati da interrogare, basta instanziare l’oggetto passando al constructor il dataset

                      Dim sc As New SQL_Engine.SelectCommand(ds)

                      e richiamare il metodo ‘Execute’ (passando come parametro la query da eseguire) , che si occupera di restituire una DataTable contenente i risultati

                      Dim dt As DataTable = sc.Execute(query)

                      Posted in Programmazione, SQL, VB.NET Tagged: DataSet, DataTable, SQL_Engine


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Bell’hack! Conosco giusto qualcuno che ha appena acquistato il DrumController…chissà se me lo presterebbe! -)

                      (Fausto! Se ci sei batti un colpo!)

                      via Rock Out in GarageBand with the Rock Band Drum Controller | Mac|Life

                      Posted in Apple Tagged: garage band, hack, Mac, Rock band


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      facebooklogoL’interesse per Facebook da parte dei media negli ultimi tempi e’ cresciuto in maniera esponenziale: il mio account, registrato distrattamente ormai piu’ di un anno orsono ultimamente ha avuto un ‘boom’ di richieste di amicizie (e ovviamente di attivita’).

                      Visto il grande movimento intorno alla piattaforma di socialnetworking, mi e’ sembrato naturale iniziare a dare uno sguardo alle API fornite e alla sviluppo di applicazioni che si appoggino su di essa.

                      Il primo passo da compiere e’ visitare il sito ufficiale per gli sviluppatori FaceBook,  http://developers.facebook.com/, dal quale e’ possibile sia scaricare le ‘client libraries‘ (in PHP, ma sono state gia’ realizzate conversioni in molti altri linguaggi), sia aggiungere al proprio profilo il tool Facebook Developer App, indispensabile per la creazione di (appunto) nuove applicazioni.

                      E’ disponibile anche un indispensabile wiki (http://wiki.developers.facebook.com/index.php/Main_Page), contenente tutta la documentazione sulla piattaforma e le API e una comodissima Getting started guide, e un forum (http://forum.developers.facebook.com/).

                      La struttura di una applicazione Facebook e’ particolare: non viene infatti ospitata dai server di FaceBook, ma si interfaccia con essi tramite un sistema di callback:

                      facebook-app-servers

                      da qui deriva una metodologia di sviluppo che utilizza l’accesso a FaceBook solamente per ricevere e inviare informazioni, mentre il ‘peso computazionale’  e’ esclusivamente a carico dell’hosting che ospita l’applicazione.
                      Vi rimando quindi all’ottimo Tutorial  presente sul sito ufficiale.

                      fogm_iphoneLa mia creatura prende il titolo di FriendsOnGmaps, e non fa altro che localizzare su una mappa (realizzata con Google Maps) gli amici collegati al proprio profilo (prendendo come punto di riferimento i dati inseriti dall’utente riguardo la citta’ di residenza).

                      Per velocizzare lo sviluppo ho affidato la compilazione del codice Js di GoogleMaps a una libreria PHP pre-esistente, Phoogle Maps.

                      E sembra funzionare correttamente anche sull’iPhone!

                      Posted in FaceBook, Internet, PHP, Programmazione Tagged: developers, Facebook, PHP


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Dando uno sguardo alle keyword con le quali il mio blog viene raggiunto, mi accorgo che in parecchi sono rimasti vittime di un ‘falso positivo’ dell’antivirus AVG che, dopo un aggiornamento rilasciato nella notte tra sabato e domenica, riconosceva il file User32.dll (su sistemi non aggiornati all’ultimissimo ‘patch level’) come infetto da un trojan e lo rimuoveva senza troppi scrupoli.

                      La mancanza di tale file, indispensabile a windows, non permetteva successivamente di avviare il PC.

                      La soluzione è semplice, e la trovo su SpippolAzione:

                      [...] potete ripristinare il file avviando con il cd di installazione di Windows XP, o quello di Vista ed avviare la console di ripristino, oppure potte usare una distribuzione linux sufficente recente da riuscire a scrivere sui dischi NTFS, una Ubuntu 8.04 o 8.10 o simili andranno benissimo.

                      Una volta avviata la console di ripristino o la distribuzione linux troverete una copia del file cancellato perfettamente utilizzabile in c:\windows\system32\DLLcache, dovete solo rimetterla in c:\windows\system32 e riavviare.

                      Talvolta (a me è capitato), dopo aver ripristinato il file è possibile trovarsi nuovamente impossibilitati ad avviare il sistema, questa volta con l’errore

                      “Si è verificato un problema e Windows è stato arrestato per impedire danni al computer. Informazioni tecniche: STOP: c0000135 {Impossibile individuare un componente} Impossibile avviare l’applicazione specificata. Winsrv non è stato trovato. Una nuova installazione dell’applicazione potrebbe risolvere il problema.”

                      E anche questa volta la soluzione è stata prontamente pubblicata su SpippolAzione:

                      Questo e’ dovuto al fatto che, non si capisce per quale motivo, il file preso dalla DLLcache non gli andava bene.

                      Questo c000015 è un vecchio errore che usciva fuori quando si installava il service pack 2 di XP quando nel computer era presente un ben preciso malware, ma non è il nostro caso.

                      Ho risolto con il solito sistema, rimettendo a posto user32.dll, ma non quella presente nella DLLcache ma quello che ho trovato nella cartella C:\WINDOWS$NtUninstallKB925902$

                      ATTENZIONE: potrebbe non andare bene per tutti, dipende dai livelli di service pack e aggiornamenti che avete nel pc, comunque se da prompt dos vi spostate in c:\windows e fate un

                      dir usr32.dll /s

                      vedrete dove trovare le varie copie di user32.dll, quindi provate a copiarli uno per uno in c:\windows\system32 e riavviare.

                      Posted in Microsoft, Windows Tagged: AVG, BSOD, user32.dll, Winsrv


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      bloggersyncVisto l’interesse nato attorno a BloggerSync (le statistiche degli accessi mi hanno stupito), ho deciso di rilasciare un piccolo aggiornamento, correggendo un paio di bugs e adattando il (semplicissimo) layout dell’applicazione alla visualizzazione con iPhone.

                      Essendo già sviluppato in maniera ‘verticale’, l’unica modifica necessaria per renderlo fruibile comodamente col melafonino consiste nel ‘forzare’ il livello di zoom di default, in modo da centrare la webapp nello schermo senza successivi ridimensionamenti a colpi di dita, utilizzando il metatag ‘viewport’:

                      inoltre è una buona pratica il realizzare un foglio di stile dedicato a Safari Mobile (adattando ad esempio i fonts allo schermo di dimensioni ridotte) includendolo in questo modo:

                      photoCosì facendo tutti i device con uno schermo di dimensione superiore ai 480 pixel (iPhone in modalità ‘landscape’) ignoreranno il caricamento del CSS dedicato all’iPhone.

                      Posted in iPhone, Programmazione, Python Tagged: blogger, bloggersync, google app engine, iPhone


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Per la serie “Come far del male alla propria LinuxBox”.
                      Simpatici i 7 ‘comandi mortali’, ancora piu’ interessanti i numerosi commenti al post: TECH SOURCE FROM BOHOL: The 7 Deadly Linux Commands

                      Posted in Linux Tagged: linux commands


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Film-gratis e’ un portale realizzato dalla nota casa editrice Edizioni Master, che permette agli utenti registrati la visione di film in streaming, in maniera completamente legale.

                      Cito il sito:

                      Film-Gratis è un’iniziativa di Edizioni Master nata per consentire la fruizione gratuita e legale dei titoli cinematografici provenienti dalle principali etichette di settore.

                      Al contrario di ciò che si scarica da molte reti di file sharing, infatti, i film contenuti in Film-Gratis non infrangono la Normativa corrente sul diritto d’autore.
                      Ognuno di essi, infatti, è frutto di accordi con la major che lo produce e la sua riproduzione e trasmissione è autorizzata dalla SIAE.

                      I vantaggi sono molteplici.

                      Innanzitutto, non si hanno problemi con la Legge
                      È tutto assolutamente legale e non si corre il rischio di incappare in pesanti sanzioni.

                       

                      Ancora, si evitano problemi di sicurezza, malware e phishing, tipici di molti siti non autorizzati il cui fine è solo quello di raggirare l’utente senza offrire alcunchè.

                      Dulcis in fundo, è tutto gratuito.
                      Accomodati pure in sala, il biglietto lo paghiamo noi!

                      Veramente una bella iniziativa, speriamo duri! Una sola (grande) pecca: tutti i contenuti sono protetti da DRM e visualizzabili solo su Windows Media Player, escludendo quindi tutti i sistemi non Microsoft.

                      Posted in Internet, IPTV Tagged: gratis, streaming


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      function diskspace($dir)
                      {
                         $s = stat($dir);
                         $space = $s["size"];
                         if (is_dir($dir))
                         {
                           $dh = opendir($dir);
                           while (($file = readdir($dh)) !== false)
                             if ($file != "." and $file != "..")
                               $space += dskspace($dir."/".$file);
                           closedir($dh);
                         }
                         return $space;
                      }

                      restituisce le dimensioni in bytes della directory specificata, comprese eventuali sotto-directory.

                      Posted in PHP, Programmazione Tagged: PHP, snippets


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      FileName: thumb.php

                      < ?php

                      $im      = $_GET['im'];
                      $maxsize = $_GET['maxsize'];

                      if ($maxsize == '') {
                          $image = exif_thumbnail($im, $width, $height, $type);

                          if ($image) {
                              header('Content-type: ' .image_type_to_mime_type($type));
                              print $image;
                          }
                          else {
                              print 'No thumbnail available';
                          }   

                      } else {

                      $filename = $im;

                      $width  = $maxsize;
                      $height = $maxsize;

                      header('Content-type: image/jpeg');

                      list($width_orig, $height_orig) = getimagesize($filename);

                      if ($width && ($width_orig

                      utilizzo:

                      thumb.php?im=uploads/immagine.jpg&maxsize=100

                      ridimensiona l’immagine con il lato maggiore non superiore a 100 pixels.

                      Se non viene specificata la dimensione massima, viene estratto (se disponibile) il thumbnail Exif contenuto nel file Jpeg (metodo molto più veloce nel caso di immagini di un certo peso).

                      Posted in PHP, Programmazione Tagged: Exif, PHP, Thumbnails


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      function full_copy( $source, $target )
                          {
                              if ( is_dir( $source ) )
                              {
                                  @mkdir( $target );

                                  $d = dir( $source );

                                  while ( FALSE !== ( $entry = $d->read() ) )
                                  {
                                      if ( $entry == '.' || $entry == '..' )
                                      {
                                          continue;
                                      }

                                      $Entry = $source . '/' . $entry;           
                                      if ( is_dir( $Entry ) )
                                      {
                                          full_copy( $Entry, $target . '/' . $entry );
                                          continue;
                                      }
                                      copy( $Entry, $target . '/' . $entry );
                                  }

                                  $d->close();
                              }else
                              {
                                  copy( $source, $target );
                              }
                          }

                      Posted in PHP, Programmazione Tagged: Copy, PHP


                      fonte: andreafortuna.wordpress.com » Vai al post originale

                      Feb 15

                      Pare che in parecchi si siano scontrati con la comodissima rotella di scroll del Mighty Mouse che, dopo qualche mese di uso intenso causa polvere e sporcizia, inizi a ’scrollare a vuoto’.

                      In giro sulla rete si trovano tutorial che prevedono l’apertura del mouse, o interventi sui forum che suggeriscono di richiederne la sostituzione in garanzia.

                      Niente di tutto questo: ho scovato questo video che propone un metodo semplice e rapidissimo. Provato di persona, funziona perfettamente!

                      YouTube - Apple - Mighty Mouse - Scrolling Problem!

                      Posted in Apple


                      fonte: andreafortuna.wordpress.com » Vai al post originale