ExtraGeek

La Tecnologia vista da me

Fastidiosi refresh

Vi sarà sicuramente capitato di leggere qualcosa su internet, specialmente quotidiani on-line, e, sul più bello, la pagina si ricarica in automatico. Che rabbia. Ovviare a questo è possibile in maniera parziale, ovvero, se il refresh è fatto attraverso meta-tag è possibile disabilitarlo, al contrario se fosse fatto attraverso js l'unica soluzione è quella di disabilitare l'esecuzione di tutti gli script lato client e a mio avviso non è che sia proprio una gran cosa.

Allora quale soluzione ? Semplicemente basterebbe che chi gestisce quei siti desse la possibilità di disattivare il refresh. Semplice ed efficacie. Ci sono contro ?? Direi che l'unico contro che ci può essere riguarda il numero delle visualizzazioni complessive del sito stesso, probabilmente ci rimetterebbero qualche centinaia di Euro di pubblicità ... Capirete quindi che questa soluzione sarrà difficile venga implementata. Però ripensandoci bene, le statistiche dei siti che adottano questo sistema di refresh automatico sono molto falsate.

Non ci resta che rassegnarsi, anzi, se trovate un sito di news on-line di vostro gradimento segnalatelo e date precedenza a quello nella consultazione, a discapito degli altri "furbetti" dal refresh facile. Forse la intenderanno.

Fotografia digitale

Ebbene si, son un fotografo per passione. Nel senso che la fotografia mi appassiona e che sto cercando di capire come funziona in tutti i suoi aspetti.

Qualche tempo fa ho partecipato ad un corso base, ho potuto apprendere i primi rudimenti, concetti quali ISO, esposizione e apertura del diaframma. Poi finalmente ho fatto il grande passo e mi sono fatto la mia prima reflex: Nikon D3300.

Certo è una entry level, ma per iniziare mi sembrava più che valida. E oggi, dopo quasi due mesi, posso dire che sono pienamente soddisfatto. Per quello che è il mio livello attuale questa macchina è più che perfetta e mi permette di sperimentare ed applicare tutto quello che apprendo.
Certo che poi l'appetito viene mangiando, come si suol dire. E allora ecco materializzarsi il primo obbiettivo per accompagnare il 18-55 del kit, un Nikkor 55-300 per poter riprendere anche i soggetti più lontani e per poter raccogliere i dettagli in soggetti un po' più distanti.

Questo vuol essere il primo di una serie di post sulla fotografia digitale che, secondo me, si sposa bene con l'informatica e la tecnologia in genere. Al prossimo post, magari con qualche scatto di corredo.

[COMMAND LINE] Owner e grant su file e cartelle

Due buoni comandi per acquisire la owner e i diritti full su cartelle e files senza dover agire su singoli files e cartelle. Sono da eseguire aprendo una prompt dei comandi in modalità amministratore:

icacls "*.*" /grant everyone:F

al posto di "everyone" può essere specificato altro utente particolare.

takeown /F "*.*"

[VB.NET] Funzione per ridimensionare immagine

In un mio ultimo lavoro ho dovuto affrontare il problema di dover ridimensionare a run-time alcune immagini. Devo dire che è stato il primo progetto in cui ho affrontato certi argomenti e quindi ho dovuto fare un po' di ricerca e studio.

Il ridimensionamento di un'immagine è un lavoro che dovrà essere svolto dalla libreria System.Drawing che dovrà quindi essere referenziata nella giusta maniera.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Questa funzione restituisce una versione ridimensionata di un'immagine fornita
' Input:
'   immagine (Image)
'   dimensioni (Size)
'   mantieniAspectRatio (Boolean default True)
' Output:
'    ResizeImmagine (Image)
' by ExtraGeek.Com
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Shared Function ResizeImmagine(ByVal immagine As Image, ByVal dimensioni As Size,
                                           Optional ByVal mantieniAspectRatio As Boolean = True) As Image
 
            Dim nuovaWidth As Integer
            Dim nuovaHeight As Integer

            ' Verifico se necessario mantenere il rapporto fra le dimensioni
            If mantieniAspectRatio Then
                Dim originaleWidth As Integer = immagine.Width
                Dim originaleHeight As Integer = immagine.Height
                Dim rapportoWidth As Single = CSng(dimensioni.Width) / CSng(originaleWidth)
                Dim rapportoHeight As Single = CSng(dimensioni.Height) / CSng(originaleHeight)

                'Calcolo il rapporto
                Dim rapporto As Single = If(rapportoHeight < rapportoWidth,
                rapportoHeight, rapportoWidth)
                
                'Assegno le nuove dimensioni calcolate sul rapporto fra di esse
                nuovaWidth = CInt(rapportoWidth * rapporto)
                nuovaHeight = CInt(rapportoHeight * rapporto)
            Else
                nuovaWidth = dimensioni.Width
                nuovaHeight = dimensioni.Height
            End If
            Dim nuovaImmagine As Image = New Bitmap(nuovaWidth, nuovaHeight)
            Using graphicsHandle As Graphics = Graphics.FromImage(nuovaImage)
                graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic
                graphicsHandle.DrawImage(image, 0, 0, nuovaWidth, nuovaHeight)
            End Using

            'Ritorno l'immagine ottenuta dal ridimensionamento
            Return nuovaImage
 
        End Function

Buona programmazione a tutti !

[SQLCE] Operazioni con le date

Due note per rammentarsi alcune semplici operazioni da effettuare sulle date utilizzando SqlCe.

Sommare/Sottrarre giorni ad una data:

SELECT dateadd(day,-14,getdate());

Nell'esempio vengono sottratti 14 gg dalla data di sistema (si recupera con la funzione GETDATE()). Se avessi voluto sommare bastava indicare un numero positivo di giorni. Se avessi voluto sommare mesi avrei indicato "month" al posto di "day", lo stesso per gli anni "year" al posto di "day".

La stessa funzionalità ovviamente può essere usare per confrontare date in clausole WHERE, ad esempio:

SELECT * FROM Customer WHERE CustDate < dateadd(month, -1getdate());

Per ottenere tutti i clienti che non hanno eseguito acquisti nell'ultimo mese a partire da oggi.

 

[VIDEO] Come fare per ridurre il rumore di fondo da un video

Vi sarà capitato di fare un video con il vostro smartphone, con una fotocamera ecc ??

Penso proprio di si. Spesso però capita che l'audio non sia proprio "pulito", che ci sia troppo rumore di fondo. Come fare quindi per pulire l'audio ?

Non è molto complicato e gli strumenti da utilizzare nella procedura che vi illustrerò sono tutti gratuiti.
Per prima cosa è necessario scaricare ed eseguire VirtualDub, ed effettuare il rip della traccia audio del nostro file video.
Semplicemente dal menù: Open AVI, File -> Save Wav
Dopo è necessario scaricare ed installare Audacity. Individuiamo una porzione di file dove è udibile il solo rumore di fondo (sarà il campione per applicare il filtro di riduzione del rumore). Apriamo Effetti -> Riduzione Rumore -> Get Noise Profile (è necessario aver selezionato la porzione di file come detto prima).
A questo punto selezioniamo l'intera traccia (Ctrl + A), apriamo Effetti -> Riduzione Rumore, questa volta selezioniamo "Riduci" e poi Ok. Il file verrà elaborato applicando il filtro relativo al campione che noi stessi abbiamo in precedenza identificato (Se avete difficoltà provate a seguire questa guida).
Ecco fatto, eventualmente possiamo applicare un effetto di equalizazione se lo riteniamo necessario. Salviamo il file ed il gioco è fatto.
Torniamo a VirtualDub. Apriamo il file AVI, poi Audio -> Wav source (Audio from other file), Video -> Direct Stream Copy, File -> Save as AVI.

Finito, adesso abbiamo una copia del nostro filmato con l'audio ripulito dai rumorei di fondo. Spero che il procedimento vi sia utile come lo è stato per me.

[ASP.NET] Ciclo di vita degli eventi HTTP

Il post di oggi si rivolge a tutti i programmatori .NET in quanto l'articolo che suggerisco contiene nozioni fondamentali sul ciclo di vita degli eventi generati da richieste HTTP che ogni sviluppatore .NET dovrebbe tenere ben presente.

HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know

 

Buona lettura.

[Gadget] Droni

Nell'ultimo anno, se vi foste sfuggito, abbiamo assistito all'affermarsi in maniera massiva del fenomeno "Droni". In realtà non è stato inventato niente di nuovo, semmai è stato rivisitato con una formula più "essenziale" quello che è sempre stato il modellismo.

Macchine e velivoli radiocomandate sono anni che sono presenti sul mercato, probabilmente per un discorso di costi e tecnologie non erano configurabili per un grande pubblico. Oggi invece si ha la possibilità di acquistare per qualche decina di euro un "quadricottero" (velivolo molto simile all'elicottero nel sistema di volo, ma con quattro eliche) e per qualcosa di più dotarlo anche di videocamera per riprese dall'alto.

Oggi leggo che anche la NASA si vuol dotare del proprio drone da inviare su Marte nelle prossime missioni esplorative ...

La NASA spedirà su Marte elicotteri drone per aiutare i rover

Aggiornamento Software

Scrivo molto raramente da un po' di tempo a questa parte ... ma per lo meno aggiorno il software Tongue Out

Ho preso la decisione di installare l'ultima versione compilata per il framework .NET 4.0 in quanto il mio provider di hosting supporta al momento fino a questa versione. Se facessero la sorpressa di passare alla 4.5 ... aggiornerò di nuovo.

Al momento sembra tutto funzionare con esclusione di una sezione di amministrazione (gestione temi). Cercherò di indagare per capire il problema. Questo però non dovrebbe inficiare in nessun modo la normale fruizione del blog.

Stay tuned ...

Ciao

[VB.NET] Semplici funzioni matematiche

Premetto che ho preso spunto da un vecchio post trovato su altro blog ...
Ma vediamo nel dettaglio questi piccoli ma sempre utili suggerimenti.

Arrotondare un numero reale all’intero più vicino. Es.:

 1,4 --> 1 1,7 --> 2 3,9 --> 4

Si utilizza il metodo

 System.Math.Round(numero)

Prendere solamente la parte intera, scartando completamente la parte decimale. Es.:

 1,4 --> 1 1,7 --> 1 3,9 --> 3

Si ottiene questo risultato con

 System.Math.Truncate(numero)

Individuare il numero intero immediatamente superiore o immediatamente inferiore. Es.:

 Superiore di 1,3 --> 2 Inferiore di 1,3 --> 1

Questi ultimi due si ottengono rispettivamente con:

System.Math.Ceiling(d) ' ceiling = soffitto, tetto
System.Math.Floor(d) ' floor = pavimento, piano
 

Non me ne vorrà il blogger se non lo cito, ma al momento non riesco a recuperare il post. Se lo troverò in seguito non mancherò di aggiornare con il doveroso link.