ExtraGeek

La Tecnologia vista da me

[Coomand Line] Ibernazione

Ecco i comandi da eseguire via prompt eseguito come amministratore per abilitare o disabilitare la modalità ibernazione:

powercfg -h off
powercfg -h on

L'utilità dell'ibernazione in molti casi è comprovata, sarà molto più rapido il vostro computer a rimettersi in moto da un'ibernazione piuttosto che un'accensione dopo un normale shutdown. Come controparte quando questa modalità è attiva il file chiamato hiberfil.sys sarà presente nella root del vostro disco di sistema ed occuperà molti GB del vostro hard disk, la dimensione è dipendente da molti fattori, si può anche arrivare tranquillamente a 13-15 GB e non sono pochi.

Quindi usate i due comandi proposti in maniera oculata.

[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.

 

[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.

[Android Dev] Icona su barra del titolo applicazione

Per aggiungere una icona sulla barra del titolo dell’applicazione è necessario scrivere (con le dovute modifiche):

requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.main);
setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.header);       

[Android-Dev] Application Lifecycle

L’età avanza e certi concetti faticano a trovare una collocazione permanente nella mia “zucca”, quindi ecco alcuni appunti di programmazione per sistemi Android.

Quando l’utente seleziona l’icona della nostra applicazione nella schermata Home, il sistema chiama il metodo onCreate() per l’Activity della nostra applicazione che abbiamo dichiarato essere la “launcher” (o “main”) activity. Questa rappresenta il punto di ingresso principale per l’interfaccia utente della nostra applicazione.

Possiamo definire quale sia l’Activity da usare come principale nel file di manifesto AndroidManifest.xml che si trova nella cartella root del nostro progetto Android.

L’Activity principale (“manin”) deve essere dichiarata nel file di manifesto con un <intent-filter> che includa l’azione MAIN e la categoria LAUNCHER.

[ASP.NET] Utilizzo di Repeater ItemCommand

Questo sistema è molto simile a quello usato con "DataGrid RowCommand" ma con alcune lievi modifiche.

Innanzitutto è necessario creare un controllo Repeater a cui si legano alcuni dati (bind). All'interno dell'elemento ItemTemplate (o qualsiasi altro associato al controllo ripetitore) creare un controllo Link Button (ma va bene anche un Button oppure un ImageButton). Impostare la proprietà CommandName con un nome descrittivo. Impostare la propretà CommandArgument con il vostro identificatore univoco (chiave).

Per intenderci una cosa tipo questa: 

<asp:LinkButton ID="btnCancella" runat="server" Text="Cancella" CommandName="Cancella" CommandArgument=<%#Eval("ID") %>></asp:LinkButton>

Sto impostando il CommandArgument all'ID che è bindato al mio repeater. Ora, nella vista di progettazione, fare doppio clic sul controllo del repeater e Visual Studio creerà un metodo per la gestione dell'evento ItemCommand. Qui è necessario verificare se il CommandName è quello che stiamo cercando per poi eseguire l'azione richiesta passando il CommandArgument. (Nel mio caso cancellare un commento). Questo è ciò che mi aspetto: 

Protected Sub rptCommenti_ItemCommand(source As Object, e As RepeaterCommandEventArgs)

    If e.CommandName.ToLower().Equals("cancella") Then

      Dim commenti As New clsCommenti("mediadb")
      commenti.CommentID = Integer.Parse(DirectCast(e.CommandSource, LinkButton).CommandArgument)
      commenti.DeleteRecord()
      rptCommenti.DataBind()

    End If

End Sub

 

Windows Live Mail

Nei giorni scorsi mi è capitato di dover aiutare una amica a spostare tutte le vecchie email da un notebook con Outlook Express verso un nuovo notebook con installato il nuovo Live Mail del pacchetto "Microsoft Live Essential".

Diciamo che questa fase è superata. Diciamo che da oggi in poi lo scenario poterbbe essere quello di dover spostare mail e contatti da una installazione di Live Mail verso un altra. Mi scusera Emanuele Mattei se faccio copia-incolla del suo testo, ma la pagina del suo blog dove sta il contenuto restituisce un errore, in ogni caso, per correttezza, aggiungo il link alla sua home. Prosegue...

IE6 e Virtual PC

Alcuni giorni fa stavo parlando con un amico circa un lavoretto web, una cosa semplice semplice sul layout, unica modifica apportata ad uno dei fogli di stile CSS. Ma a parte questo, una volta effettuata la modifica, ho chiesto all'amico di guardare se il risultato lo soddisfaceva. Con mio stupore mi rispondeva che su Internet Explorer 6 non riusciva a vederla la modifica.

Se devo essere sincero, questa volta, non mi sono neanche posto il problema della compatibilità con IE6, anzi volutamente mi sono escluso da questo tipo di martirio. Ho cercato allora di convincere l'amico, evidentemente ancora utilizzatore di IE6, che la cosa più saggia da fare è quella di installare una versione più recente di Explorer. Ancora non so se sono riuscito o meno nell'opera di convincimento, spero proprio di si.

La stessa Microsoft scoraggia l'uso di questo mal riuscito browser e a tal proposito è giusto rammentare un sito della stessa MS che si intitola inequivocabilmente "IE6 Countdown". In questo sito si viene inoltre incoraggiati ad inserire sui propri blog e/o siti un banner che appaia solo quando a visualizzare è un utente IE6 invitando ad effettuare il download. Credo che potrei anche accettare di mostrare questo banner, ma come poter fare due test proprio con IE6 ?

Semplice, installando Virtual PC ed una delle immagini gentilmente offerte dalla stessa MS già predisposte con le varie versioni di Explorer.

LINK:
The Internet Explorer Countdown
Virtual PC - XP and Vista Users
Virtual PC - 7 Users
OS Image + IE