sabato 28 marzo 2015

Download Microsoft Small Basic 1.1 Italiano

Developer Tools



Da pochi giorni è stata rilasciata la nuova versione del programma gratuito per la programmazione Small Basic 1.1, che si basa sul framework 4.5.

Il programma permette la creazione di semplici applicazioni, per il download e maggiori informazioni visitate il seguente sito https://www.microsoft.com/it-IT/download/details.aspx?id=46392

venerdì 27 marzo 2015

DotNetCampus 2015

Il 30 maggio 2015, una data che ogni sviluppatore si deve segnare, infatti torna l'appuntamento più importante d'Italia riguardante lo sviluppo software sulla tecnologia Microsoft.
L'evento DotNetCampus, qui http://www.dotnetcampus.it/ il sito ufficiale, è una bellissima iniziativa formativa riguardante la tecnologia .Net.
Durante la giornata del sabato 30 maggio 2015, oltre alle varie sessioni sulla tecnologia Microsoft .Net, ci sarà la possibilità di consegnare alle aziende il proprio cv e parlare con alcuni membri delle varie community.

Una giornata formativa e di aggregazione molto bella, che invito tutti gli appassionati del computer a partecipare.

Per partecipare bisogna iscriversi nel sito precedentemente indicato, dove si trova anche il luogo e l'agenda.


mercoledì 25 marzo 2015

Tools convert pdf to Word

Ecco qui http://www.investintech.com/pdf-ocr.htm altro interessante tools che permette di convertire un file pdf in Word.
Dopo aver selezionato il file da convertire, nella casella inferiore inserire l'indirizzo email dove si vuole ricevere il file convertito.

martedì 24 marzo 2015

Free ebook Microsoft System Center Deploying Hyper-V with Software-Defined Storage Networking

Microsoft System Center Deploying Hyper-V with Software-Defined Storage & Networking




Nuovo ebook per tutti coloro che si occupa di sistemi, dal seguente sito http://blogs.msdn.com/b/microsoft_press/archive/2015/03/17/free-ebook-microsoft-system-center-deploying-hyper-v-with-software-defined-storage-amp-networking.aspx la possibilità di scaricare gratuitamente un libro riguardante Hyper-V.

l'ebook è in formato pdf, mobil e epub ed in lingua inglese.

domenica 22 marzo 2015

.Net creare la prima applicazione in Windows Phone 8.0

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_creare-la-prima-applicazione-per-windows_1382.aspx

In questo articolo vedremo come avvicinarsi alla programmazione mobile tramite l’ambiente gratuito Visual Studio 2012 Express per Windows Phone, con il linguaggio di programmazione C#.
Da qualche anno, il nuovo sistema operativo Microsoft per il mobile ha stravolto la programmazione di questi dispositivi, permettendo uno sviluppo ed approccio diverso dalle precedenti versioni, in cui tramite il Compact Framework venivano realizzati applicazioni per sistemi operativi mobile quali Windows Mobile.
Con questo nuovo sistema operativo, tramite l’ambiente di sviluppo Visual Studio 2012 e versione successive, possiamo sviluppare applicazioni per questa nuova versione.
Anche in questo caso, abbiamo la possibilità di utilizzare i linguaggi più comuni, quali Visual Basic .Net e C#.
Dopo aver scaricato l’ambiente di sviluppo Visual Studio 2012 express per la programmazione mobile, dal seguente link http://www.microsoft.com/it-IT/download/details.aspx?id=35471  per la programmazione di Windows Phone 8, mentre qui https://dev.windowsphone.com/it-it/downloadsdk trovate gli emulatori, gli ultimi ambienti di sviluppo e vari software, possiamo scoprire questo mondo.
Terminato il download dell’ambiente di sviluppo gratuito, dovremmo effettuare l’installazione.
Creazione della prima applicazione Windows Phone
Per la versione di Windows Phone 8, l’installazione avviene solo con la versione del sistema operativo di Windows 8 o versione successiva.
Dopo ave terminato l'installazione sul nostro computer dotato di Windows 8.1, ci troveremo nella schermata iniziale di Windows 8, le applicazioni installate, tra queste troviam la voce di menu   “VS Express per Windows Phone” (figura 1) il quale ci permette di aprire l’ambiente di sviluppo.


Figura 1 – la voce di menu

Al primo avvio è richiesta la verifica della licenza (anche se è gratuita bisogna validare la licenza) di utilizzo.
Per creare un nuovo progetto, dobbiamo fare click sulla voce “Nuovo progetto….” Che troviamo nella pagina iniziale, oppure tramite la voce di menu “File”, selezionare nuovo progetto.


Figura 2 – La finestra pagina iniziale


Nella finestra che viene aperta (figura 3) dobbiamo selezionare il linguaggio di nostro interesse tra VB.Net e C#, e tra i vari modelli presenti nella parte destra, selezionare la voce “applicazione per Windows Phone”.


Figura 3 – La finestra di creazione progetto

Questa voce di menu ci permette di creare una semplice applicazione, che possiamo man mano definire secondo le nostre esigenze.
Confermate il tutto tramite il pulsante “OK”, a questo punto ci viene chiesto per quale versione di Windows Phone vogliamo realizzare l’applicazione (figura 4).


Figura 4 – scelta della versione di Windows Phone

A questo punto verrà aperto l’ambiente di sviluppo con la doppia visualizzazione, in una è presente l’aspetto grafico, il quale fornisce un anteprima di come sarà visualizzata l’applicazione sullo SmartPhone, e dall’altra il codice XAML, il tutto come mostrato in figura 5.


Figura 5 – L’ambiente di sviluppo

Dalla barra degli strumenti, trasciniamo il controllo “Button” e lo posizioniamo nell’emulatore, il tutto come mostrato in figura 6.


Figura 6 – Il pulsante button.

A questo punto facciamo doppio click sul pulsante, e nella visualizzazione codice scriviamo il seguente frammento di codice.
private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Prova");
        }
Il frammento è molto semplice, visualizza un messaggio a video.
A questo punto possiamo eseguire la nostra prima applicazione, tramite la barra dei menu o tramite la voce di menu “Debug” e “avvia Debug” in questo modo verrà eseguito la nostra applicazione.
Se viene eseguita l’applicazione su un “emulatore” potremmo ritrovarci un messaggio di errore, come in figura 7.



Figura 7 – Il messaggio di errore che non abbiamo attivato Hyper-V


Questo avviene, perché nonostante il computer ha installato Hyper-V un software di virtualizzazione, non è possibile eseguirlo per dei parametri non impostati nel bios.
A questo punto le soluzioni sono due, o cambiamo le impostazioni del bios (non è semplice) oppure possiamo eseguire la nostra applicazione sul dispositivo.
Se impostiamo il debug sulla voce “Device” nelle impostazione, come riportato in figura 8, l’applicazione verrà eseguita sullo Smartphone.

Figura 8 – La scelta del test sul dispositivo

Un altro possibile messaggio di errore che possiamo riscontrare, è nel caso che il dispositivo è bloccato (schermata di blocco), in questo caso l’ambiente ci informa di tale situazione, il tutto come riportato in figura 9.


Figura 9 – errore di debug in caso di pin attivo

Per risolvere il problema basterà effettuare il codice di attivazione in modo che lo schermo viene sbloccato, in questo modo  si accede allo Smartphone e si potrà eseguire la nostra applicazione.
Tempo qualche secondo e la nostra applicazione sarà visualizzata sul cellulare, come mostrato in figura 10.


Figura 10 - L'applicazione eseguita sul dispositivo mobile Nokia 520

Conclusione

L’articolo ha voluto introdurre la programmazione allo sviluppo di applicazioni per Windows Phone 8, tramite l’ambiente gratuito Visual Studio express 2012.
Le versioni express, si possono utilizzare gratuitamente ed offrono funzionalità e prestazioni ottimali, questi strumenti si rilevano ben fatti per iniziare ad avvicinarsi alla programmazione.

mercoledì 18 marzo 2015

download ViVo Next 3.1 ed il Computer legge per Te


ViVo Next 3.1 il computer legge per te










Nuova versione del programma gratuito Vivo Next 3.1, che offre un valido supporto ed aiuto alle persone con problemi di vista.

Il programma scaricabile qui http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=2406&Itemid=33 facilita l'utilizzo del computer, leggendo il testo che viene visualizzato a video.

Il programma è in italiano e portable ossia che non richiede nessuna installazione.

Complimenti ad Antonio e Silvio per questo ottimo programma.

mercoledì 11 marzo 2015

free ebook Windows 8.1 Succinctly - sviluppo univeral app





Dal seguente sito http://www.syncfusion.com/resources/techportal/ebooks/windows8.1si può scaricare la prima parte del libro riguardante lo sviluppo di applicazioni universal Windows app.

Il libro è scritto in lingua inglese e fornisce le basi per avvicinarsi alla programmazione di Windows 8.1

lunedì 9 marzo 2015

Outlook VBA salvare gli allegati delle email

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_vba-outlook-salvare-gli-allegati-delle-e_1385.aspx


Può capitare di creare una procedura in VBA, che permette di leggere tutte le email di una determinata cartella creata in Outlook (qualsiasi versione) e salvare sul computer gli allegati.
Le potenzialità offerte dal linguaggio Visual Basic Application, (VBA) permettono agli applicativi Office, di aggiungere funzionalità personalizzate da parte degli utenti migliorando così l’utilizzo del programma.

Stesura di codice


Dopo aver aperto Outulook (ogni versione è indifferente, l’unica differenza sta nel fatto di aprire la finestra dell’Editor VBA), dobbiamo aprire il programma per la stesura del codice VBA, in particolare l’ambiente VBA.
Una volta impostata la visualizzazione codice, scriviamo in alto la seguente dichiarazione che obbliga di scrivere la dichiarazione di variabile.


Option Explicit

Terminata di scrivere tale riga di codice, si riporta qui di seguita una funzione che permette di rilevare un oggetto di tipo “Folder” che permette di gestire il contenuto (email) . Con questo oggetto possiamo effettuare il ciclo su tutti gli elementi. Tramite l’oggetto Folders, possiamo passare il nome della cartella su cui vogliamo ricercare gli allegati nelle email.
Qui di seguito si riporta la funzione

Function GetFolderPath(ByVal NomeCartella As String) As Outlook.Folder
    Dim oFolder As Outlook.Folder
    On Error Errore
    Set oFolder = Application.Session.Folders.Item(1).Folders.Item(NomeCartella)
    Set GetFolderPath = oFolder
    Exit Function
Errore:
    Set GetFolderPath = Nothing
    Exit Function
End Function


A questo punto dobbiamo scrivere la macro che verrà eseguita dall’utente oppure tramite un pulsante posto sulla barra degli strumenti.
La funzione non fa altro che visualizzare a video, due richieste, quali nome cartella da esaminare ed il tipo di allegato (doc, zip, etc) che si vuole estrapolare.
Una volta ottenuta la folder, ciclo per ogni email trovata ed in essa per tutti gli allegati trovati.
Qui di seguito si riporta tale codice.

Dim objInbox As MAPIFolder
Dim objMail As Outlook.MailItem
Dim objAttachment As Outlook.Attachment
Dim strFileName As String
Dim strTargetPath As String
Dim ObjCartella As Folder
On Error GoTo Errore
Dim StrCartella As String
StrCartella = InputBox("Scrivere la cartella dalla quale estrapolare gli allegati dalle email.")
If Trim(StrCartella) = "" Then
 MsgBox "Indicare una cartella nella quale trovare gli allegati. ", vbInformation + vbOKOnly,
"Allegati"
    Exit Sub
End If
Dim StrTipoAllegato As String
StrTipoAllegato = InputBox("Indicare il tipo di file (Esempio per i word doc per i file di testo txt.", "SalvaAllegati", "doc")
If Trim(StrTipoAllegato) = "" Then
 MsgBox "Impossibile continuare, indicare il tipo di file. ", vbInformation + vbOKOnly, "Salva Allegati"
    Exit Sub
End If
Set ObjCartella = GetFolderPath(StrCartella)
If ObjCartella.Items.Count = 0 Then
 MsgBox "Non ci sono email nella cartella indicata. ", vbInformation + vbOKOnly, "Allegati"
    Exit Sub
End If
Dim NomeFileDaSalvare As String
Dim Elementi As Object
Dim AllegatoTrovato As Attachment
Dim IConta As Integer
Iconta = 1
For Each Elementi In ObjCartella.Items
    For Each AllegatoTrovato In Elementi.Attachments
    If Right(AllegatoTrovato.FileName, 3) = StrTipoAllegato Then
         NomeFileDaSalvare = "E:\" & Iconta &  AllegatoTrovato.FileName
         AllegatoTrovato.SaveAsFile NomeFileDaSalvare
         Iconta = Iconta + 1
      End If
    Next AllegatoTrovato
Next Elementi
Set objItems = Nothing
Set objInbox = Nothing
Set objMail = Nothing
Set objAttachment = Nothing
Exit Sub
Errore:
MsgBox ("Si è verificato il seguente errore: " & Err.Description)
End Sub


Conclusioni

Questo semplice script, fornisce al lettore una base di come lavorare sui singoli elementi contenuti in una cartella creata in outlook. Volendo si può estendere, apportando anche un ciclo su tutte le cartelle presenti.

venerdì 6 marzo 2015

Motore di ricerca per immagini gratuite

Il sito http://pixabay.com/  è un motore di ricerca, riguardante le immagini.
Le immagini trovate da questo motore di ricerca, sono di pubblico dominio, si possono utilizzare sia per uso personale che per uso commerciale.
Chiunque può pubblicare le proprie immagine o utilizzare quelle presenti in questo sito.

sabato 28 febbraio 2015

TVLC Next programma per vedere film e sentire radio con possibilità di registrazione

TVLC Next Dirette TV e Radio anche Registrabili

Nuovo programma gratuito e portable di Antonio e Silvio, che questa volta fornisco un buon servizio in ambito di intrattenimento.
Il programma Tvlc Next, scaricabile dal seguente sito http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=2399&Itemid=33 sito è un programma portable e quindi non richiede nessuna installazione, in italiano che permette di vedere la tv o sentire la radio, con possibilità di registrazione.
Un esempio di file Ini è presente sempre nel sito situato nella parte inferiore.
Flessibilità e utilità fanno di questo programma un ottimo strumento che ogni persona dovrebbe avere sul proprio pc.
Ci auguriamo che Antonio e Silvio, aggiornano la lista dei canali con nuovi link o quelli già esistenti nel caso che vengono cambiati.
Ancora un grazie a questi due eroi del web.

















martedì 24 febbraio 2015

Tutorial Reporting Services Il controllo Indicator

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_reporting-services-il-controllo-indicato_1383.aspx


In questo articolo vedremo come utilizzare il controllo “Indicator” di Reporting Services 2014.
Vedremo come utilizzare l’ambiente per la creazione dei Report di Visual Studio 2012, (Shell) che tra le funzionalità permette la creazione dei report.
Naturalmente  questo potente strumento dobbiamo averlo installato.

Creazione di una tabella e dei dati

Create una tabella in Sql Server, denominata “Popolazione” con due colonne, la prima colonna sarà denominata   “Citta” la seconda “Popolazione”.
A questo punto popolate i dati secondo le vostre esigenze, nel nostro caso abbiamo inserito i seguenti valori.
Citta Popolazione
Roma 6243000
Milano 2345600
Catania 643980
Firenze 1245987

Creazione del report

Dopo aver avviato Visual Studio 2012 Shell, dal menu File selezioniamo la voce di menu “Nuovo Progetto“, nella finestra che viene aperta (figura 1) selezioniamo la categoria “Reporting Services” e tra i modelli selezioniamo la voce “Report Server Project”, impostiamo nelle case un nome del progetto.



Figura 1 – La scelta del progetto

A questo punto nel progetto, dobbiamo aggiungere il report. Nella finestra “Esplora soluzione” (Figura 2) nella voce “Report” facciamo click con il tasto destro, sulla voce “Add New Report”  oppure aggiungi nuovo report.


Figura 2 – L’aggiunta di un report

A questo punto verrà avviato il wizard, una procedura guidata che permette all’utente di aggiungere il report.
La procedura di configurazione lo abbiamo descritto in maniera dettagliata nei precedenti articoli, anche se gli articoli erano riferiti a Reporting Services 2012, la procedura rimane identica.
Ricordiamoci di puntare alla tabella precedente creata, selezionando i due campi.
Terminata la procedura guidata, verrà visualizzata il report con le due colonne (figura 3) .



Figura 3 – La tabella con i due campi

Nei precedenti capitoli, abbiamo illustrato il controllo “Tablix” il quale visualizza le informazioni in modalità tabellare.
Il controllo si presenta con due righe, la prima le intestazione di colonne, mentre la seconda, i riferimenti ai campi della tabella.
Facciamo click sulla seconda riga, quella con il testo “[Popolazione]” ed eliminiamo tale valore.
Dalla barra degli strumenti (figura 4) selezioniamo il controllo “Indicator” e lo trasciniamo nel campo appena modificato.


Figura 4 – la barra degli strumenti con il controllo “Indicator” selezionato.

Dopo aver rilasciato il pulsante, verrà avviata la creazione guidata (figura 5) il quale ci fornisce le informazioni di come vogliamo impostare l’aspetto ed i dati del controllo.


Figura 5 –  Il wizard del controllo Indicator

Selezioniamo il primo esempio della voce “Directional” come mostrato in figura 5, fatto ciò  facciamo click sul pulsante “OK”.
A questo punto dobbiamo impostare i valori ed i dati di riferimento.
Facciamo click con il tasto destro sul nome del controllo e nel menu che viene visualizzato selezioniamo la voce “Indicator Proprietiers” o “Proprietà indicatore” nella finestra che viene aperta (figura 6) selezioniamo la voce “Values and States”.


Figura 6 – La finestra delle proprietà.

Nella finestra che viene aperta (figura 6) ,  selezioniamo la voce “Values and State”, in questa pagina ci sono dei campi da valorizzare.
Il campo “value” indica il riferimento al campo della tabella, mentre la voce “States Measurement Unit” va impostata in “Numeric” per via del valore numerico.
Nella parte inferiore, abbiamo la possibilità di impostare il tipo di icona, il colore delle immagini e la scala dei valori per i quali utilizzare un immagine piuttosto che un'altra.
Se facciamo l’anteprima, verranno visualizzate le immagini come mostrato in figura 7.



Figura 7 – Anteprima del report

Conclusioni

Abbiamo visto l’utilizzo del controllo Indicator, per visualizzare in forma grafica alcune informazioni dei dati. Un controllo per la gestione dei grafici che può tornare utile nella realizzazione dei report.

sabato 21 febbraio 2015

Free ebook: Microsoft Azure Essentials Fundamentals of Azure

Microsoft Azure Essentials Fundamentals of Azure



Dal seguente sito http://blogs.msdn.com/b/microsoft_press/archive/2015/02/03/free-ebook-microsoft-azure-essentials-fundamentals-of-azure.aspx   è possibile scaricare un ebook in lingua inglese su Azure.
Il manuale scaricabile gratuitamente in formato pdf, mobi e epub, fornisce al lettore indicazioni di base sulla architettura Azure.


venerdì 13 febbraio 2015

Dotnetcampus 2015

Ritorna l'appuntamento tanto atteso per chi si occupa di programmazione con la tecnologia .Net, il 30 maggio 2015, si svolgerà l'evento DotnetCampus http://www.dotnetcampus.it/ un giorno da segnare in agenda.
L'agenda è ancora in fase di preparazione ma vista la qualità offerta negli anni passati, di certo troveremo tante sessioni che affascineranno i programmatore, sviluppatori, dba di tutta Italia.
Per maggiori informazioni visitate il seguente sito http://www.dotnetcampus.it/

mercoledì 11 febbraio 2015

Crystal Report format string in date

Nel caso che vogliamo formattare un campo di tipo string in data, di tipo dd mm yyyy, in Crystal Report, nella sezione formula, il seguente frammento di codice permette tale formattazoine.


if not isnull({tabella.campo})  then
ToText(Cdate({tabella.campo}), "dd MMMM yyyy")

lunedì 9 febbraio 2015

Ext.net edit row only based value

Nel controllo GridPanel del framework Ext.Net nel caso che si vuole rendere una riga abilitata all'editor o no in base ad un valore, il frammento di codice qui di seguito illustra tale tecnica.

Nel tag Editor, impostare per l'evento BeforeEditor, una funzione javascript che verifica se il valore della riga che vogliamo modificare corrisponde o no ad un determinato valore, in caso contrario  disabilitiamo la modifica della riga.
Nella parte qui sotto la parte relativa al tag roweditor.

Parte Html

                                               
                                               
                                               

                                               


Mentre la funzione, accetta due parametri, il secondo lo possiamo utilizzare come indice della riga, per rilevare nel oggetto store il record, con il quale andiamo a verificare il valore del campo.
Qui di seguito tale funzione.

Funzione javascript

 var beforeEdit = function (rowEditor, rowIndex) {

            if (this.grid.store.getAt(rowIndex).data.MIOCAMPO == "VALORE") {
                return true;
            }
            else {
                return false;
            }
       

sabato 7 febbraio 2015

Asp.Net export to Csv

Nel caso che si vuole esportare il risultato di una select in Linq in Csv, il frammento di codice qui di seguito permette tale scenario.
Come si vede dal frammento di codice,  dobbiamo inserire i valori separati da punto e virgola, tramite l'oggetto StringBuilder, aggiungiamo le singole righe e tramite Response generiamo il file.
Qui di seguito l'esempio in C#

 var Valori = GetDati().Where(p => p.CampoID== "valore").ToList();
         var risultato = from n in Valori
               orderby n.campoA ascending
               select new
               {
                   Riga = n.CampoA,
                   Colonna = n.CampoB,
                   Lunghezza = n.CampoC
               };
         string Testo = "IntestazioneA;IntestazioneB;IntestazioneC";
         var sb = new StringBuilder();
         sb.AppendLine(Testo );
         foreach (var elemento in risultato)
         {

             Testo = elemento.CampoA+ ";" + elemento.CampoB+ ";" + elemento.CampoC + ";"  ;
             sb.AppendLine(Testo);
         }
         string attachment = "attachment; filename=NomeFile.csv";
         HttpContext.Current.Response.Clear();
         HttpContext.Current.Response.ClearHeaders();
         HttpContext.Current.Response.ClearContent();
         HttpContext.Current.Response.AddHeader("content-disposition", attachment);
         HttpContext.Current.Response.ContentType = "text/csv";
         HttpContext.Current.Response.AddHeader("Pragma", "public");
       
         HttpContext.Current.Response.Write(sb.ToString());
         HttpContext.Current.Response.End();

giovedì 5 febbraio 2015

C# Custom Linq Ordering

Nel caso che dobbiamo ordinare in maniera personalizzata un oggetto di tipo list, il frammento di codice qui di seguito illustra tale tecnica.
Supponiamo di avere una lista di classi, di cui una proprietà ha un certo valore, se vogliamo ordinare in base a determinati valori quella proprietà, tramite il metodo orderBy dell'oggetto list possiamo passare una funzione che valorizzo l'ordinamento.

Qui di seguito un esempio di codice



MiaClasse[] ListClass = GetAllDateClass();
 var Risultato = ListClass .OrderBy(f => OrderKey(f.ProprietA)).ToList();

  public int OrderKey(string Dato)
        {
          
            int result =
               Dato== "AA" ? 1 :
               Dato== "DD" ? 2 :
               Dato== "EE" ? 3 :
                            4;
            return result;
        }

nel metodo OrderBy viene richiamato la nostra funzione denominata OrderKey nella quale viene passato il valore della proprietà dell'oggetto.

lunedì 2 febbraio 2015

ext.net gridpanel roweditor textarea set height

Nel caso che dobbiamo utilizzare un textarea nella fase di editor in un controllo GridPanel la grandezza della casella risulterà delle dimensioni della riga della griglia.
Se vogliamo personalizzare la proprietà height e quindi la grandezza della casella textarea, dobbiamo impostare nella sezione style della pagina Aspx lo stile x-row-editor-body.
Qui di seguito un esempio.

 .x-row-editor-body
        {
            height: 100px !important;
        }

domenica 1 febbraio 2015

c# readalltext exception outofmemoryexception

Quando utilizziamo il metodo ReadAllText della classe file, nel caso che vengono gestiti file di grandi dimensioni si verifica l'eccezione outofmemoryException.
Per evitare ciò utilizzare il metodo ReadAllLines della classe File, che permette la gestione dei file di grandi dimensioni.

giovedì 29 gennaio 2015

LINQ to Entities does not recognize the method System.String PadRight(Int32, Char) and this method cannot be translated into a store expression LINQ to Entities non riconosce il metodo 'System.String PadRight(Int32, Char)', che pertanto non può essere convertito in un'espressione di archivio


Nel caso che si esegue un metodo, per esempio il metodo Padright di un oggetto di tipo string, durante l'esecuzione della query genera un errore come indicato dal titolo del post.
Qui di seguito la query che genera l'errore.


string spazio = "";
 var risultato = (from Dati in Oggetti()
                             where Dati.Campo == "1" 
                             select new
                             {

                                PrimoCampo= "1",
                                 SecondoCampo = (string.IsNullOrEmpty(Dati.CAmpoA) == true ? spazio .PadRight(10, ' ') : Dati.CAmpoA)
}

Per risolvere tale problema, dobbiamo utilizare la select nel methodo ToList utilizzato nell'espressione della query, che restituisca un insieme di tipo tolist.

Qui di seguito si riporta l'esempio di query Linq per risolvere tale errore.


string spazio = "";
Qui di seguito un esempio di codice
var risultato= (from Dati in Oggetti()
                        where Dati.Campo == "1" 
                        select Dati).ToList().Select(c => new  {
                            PrimoCampo= "1",
                            SecondoCampo = (string.IsNullOrEmpty(c.CAmpoA) == true ? spazio .PadRight(10, ' ').ToString() : c.CAmpoA)
                       
                        }).ToList();




martedì 27 gennaio 2015

.Net C# decomprimere file tar e gz tramite libreria tar-cs

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_decomprimere-file-di-tipo-tar-e-gz-trami_1372.aspx


In questo articolo vedremo come utilizzare la libreria Tar-Cs per decomprimere file compressi tramite il linguaggio di programmazione C#.
Prima di creare il progetto, bisogna scaricare la libreria gratuita, qui https://code.google.com/p/tar-cs/ è possibile scaricare il sorgente ed il componente.

Stesura del codice

Utilizzeremo un progetto di tipo Windows Application, per scoprire come utilizzare questo componente.
Dopo aver creato un progetto di tipo Windows Application, inseriamo un pulsante nella Windows Form, in questo modo al click del pulsante verrà eseguita l’operazione di estrazione file.
Passiamo in visualizzazione codice ed in particolare nell’evento “Click” del pulsante, dobbiamo scrivere il codice che permette di decomprimere il file.
Nell'evento verrà richiamata una funzione, che gli viene passata la cartella nella quale si trovano i file compressi.
Qui di seguito si riporta il frammento di codice delle suddette operazioni.


private void BtnEstrai_Click(object sender, EventArgs e)

        {

            if (DecomprimiFileCompresso(@"C:\CartellaFile\") == true)

            {

                MessageBox.Show("File estratti con successo.");

 

            }

            else

            {

                MessageBox.Show("Impossibile estrare i file");

           

           

            }


Il codice precedente è molto semplice, richiama una funzione (DecomprimiFileCompresso) in uno specifico percorso.
la funzione riportata qui di seguito, cerca tutti quei compressi di tipo .gz.
A sua volta verrà richiamata una funzione che permette di decomprimere tali file.
Qui di seguito si riporta il codice di tale operazioni.

private static bool DecomprimiFileCompresso(string PercorsoFile)

        {

            bool Esito = false;

            try

            {

 

 

                //eseguo la prima estrapolazione del file .gz nella stessa cartella dove si trovano i file .gz

                DirectoryInfo DiPercorsoFileGz = new DirectoryInfo(PercorsoFile);

 

               

                foreach (FileInfo fi in DiPercorsoFileGz.GetFiles("*.gz"))

                {

                    DecomprimiFileGz(fi);

                }

                //Decomprimo tutti i file *.tar

                Esito = DecomprimiFileTar(PercorsoFile);

 

            }

            catch (Exception ex)

            {

               

                throw ex;

            }

            return Esito;

        }

 
La funzione “DecomprimiFileCompresso” esegue una ricerca nella cartella che viene passata ed estrapola tutti i file .tar contenuti nel vari file di tipo “gz”.
A questo punto viene eseguita una funziona per estrapolare tutti i file di tipo gz e poi successivamente tutti i file di tipo “Tar”.
Qui di seguito sono riportati tali funzioni.



private static bool DecomprimiFileTar(string PercorsoFile)

        {

            bool Esisto = false;

            try

            {

                DirectoryInfo di = new DirectoryInfo(PercorsoFile);

 

                //Decomprimo tutti i file di tipo *.tar

                foreach (FileInfo fi in di.GetFiles("*.tar"))

                {

                    string PercorsoFileDecompresso = "";

                    string PathCartellaFile = "";

                    using (FileStream unarchFile = File.OpenRead(fi.FullName))

                    {

 

 

                        TarReader reader = new TarReader(unarchFile);

 

                        while (reader.MoveNext(true))

                        {

                            var path = reader.FileInfo.FileName;

                            if (reader.FileInfo.EntryType == EntryType.Directory)

                            {

                                //Essendo una cartella verifico se è quella che interessa (percorso superiore)

                                if (PercorsoFile.Contains(Path.GetDirectoryName(path)) == true)

                                {

                                    //creo la cartella ed estrapolo i dati

                                    PercorsoFileDecompresso = Path.Combine(PercorsoFile, Path.GetDirectoryName(path));

                                    Directory.CreateDirectory(PercorsoFileDecompresso);

                                    

                                    PathCartellaFile = Path.GetDirectoryName(path);

                                }

                            }

                            else

                            {

                                //Elaboro solo se nella variabile path (nome file) è presente la cartella da cui devo estrapolare i dati.

                                if (path.Contains("MioFile") & PathCartellaFile.Trim().Length > 1)

                                {

                                    //verifico che sia superiore a 3000 byte ossia 3 kb

                                    if (reader.FileInfo.SizeInBytes >= 3000)

                                    {

                                        path = Path.Combine(PercorsoFileDecompresso, Path.GetFileName(path));

                                        using (FileStream file = File.Create(path))

                                        {

                                            reader.Read(file);

                                            Esisto = true;

                                        }

                                    }

 

 

 

                                }

 

                            }

 

 

 

                        }

                    }

                }

 

            }

            catch (Exception ex)

            {

 

                throw ex;

            }

            return Esisto;

        }

 

        public static void DecomprimiFileGz(FileInfo pFileInfo)

        {

            //Rilevo lo stream dei file e decomprimo tutti i file .

            using (FileStream StreamFile = pFileInfo.OpenRead())

            {

                //imposto il nome del file togliendo l'estenzione .gz

                string FileCorrente = pFileInfo.FullName;

                string FileOrigine = FileCorrente.Remove(FileCorrente.Length - pFileInfo.Extension.Length);

 

               

                using (FileStream outFile = File.Create(FileOrigine))

                {

                    using (GZipStream Decompress = new GZipStream(StreamFile,    CompressionMode.Decompress))

                    {

                      

                        byte[] buffer = new byte[4096];

                        int numRead;

                        while ((numRead = Decompress.Read(buffer, 0, buffer.Length)) != 0)

                        {

                            outFile.Write(buffer, 0, numRead);

                        }

                      

                    }

                }

 

            }

        }








La funzione “DecomprimiFileTar”, estrae solo quei file che contengono il nome  di tipo “MioFile” e che hanno una dimensione superiore ai 3 kb. Questa gestione dei file avviene tramite la classe "TarReader" che permette la gestione dei file compressi.

Conclusioni

L’articolo ha voluto illustrare le potenzialità di questo componente, che può tornare utile anche in quei contesti con sistemi diversi.
Tramite la parola “Download” potete scaricare il progetto di esempio di questo articolo.