• Category Archives Software
  • Consigli per gli aquisti per quanto riguarda il software

  • How to consume a web service, through client certification and Oauth2 Authentication, writing c# code.

    Versione Italiana.
    Who has done similar task , using visual studio, knows the IDE helps the developers, providing some classes useful to easly call a webservice. If the developer has available the WSDL file defining the service, Visual studio parses it , and automatically builds the libraries

    But, if the call must use a channel, encrypted by a client certificate, and further the server expect an Oauth2 authentication token , enclosed in the request, the task becomes quite harder

    With C# it’s quite simple to make an HTTP request using a client certificate to make the call, on the same HTTP request and also simple to add the OAuth2 token among the Headers.
    If the request is simple (It has few parameters and is not structured on several levels), the developer can send a raw HTTP request, inserting the parameters in the body of this.
    If instead the parameters of the request are many and very structured, doing such a thing would take a lot of time.

    I found a way to use the libraries generated by Visual studio, on an encrypted channel and with the Oauth2 authentication token.

    Below, is the code that would be used for a call with the usual method:

    var Binding = new BasicHttpBinding();
    EndpointAddress ServiceEndPoint = new EndpointAddress("http://EndpointAddress.com");
    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);

    If you want to make the call on an encrypted channel, you must first create a certificate object:

    X509Certificate2 certificate = new X509Certificate2("filePath.p12", "Password");

    Where the file containing the certificate must be in p12 format and the insertion of its relative password is mandatory.
    Next you need to create a binding type object different from the usual one, while the endpoint object will remain on the same type:

    var Binding = new WSHttpBinding();
    Binding.Security.Mode = SecurityMode.Transport;
    Binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
    EndpointAddress ServiceEndPoint = new EndpointAddress(https://EndpointAddress.com);

    Note: This time the endpoint is on HTTPS, no longer on HTTP, indeed this type of binding is compatible only with https.

    Then you need to create the client object and set the certificate on it:

    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);
    
    Client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = 
    new System.ServiceModel.Security.X509ServiceCertificateAuthentication();
    System.ServiceModel.Security.X509CertificateInitiatorClientCredential certificateInitiator = 
    Client.ClientCredentials.ClientCertificate;
    certificateInitiator.Certificate = certificate;

    With this we have set up communication through the certified channel, now we must make sure that a token at our convenience is also included in the header of the generated HTTPS request. This is quite complicated, to be able to do it you need to act on the context of the call:

    using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
    {
           MessageHeader<string> header = new MessageHeader<string>("Bearer " + Oautoken);
           var untyped = header.GetUntypedHeader("Authorization", "");
           OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
           HttpRequestMessageProperty requestMessage = new 
           HttpRequestMessageProperty();
           requestMessage.Headers["Authorization"] = "Bearer " + "TokenString";          
           OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] 
           = requestMessage;
           result = client.method(serviceParameter);
    }


  • Come chiamare un Web service tramite certificato Client e autenticazione Oauth2 tramite libreria c#

    English version.
    Chi è già del mestiere , sa che Visual studio viene in aiuto degli sviluppatori che devono eseguire chiamata a servizi web, fornendo a questi, delle librerie generate analizzando il file WSDL del servizio.

    Ma quando la chiamata deve avvenire attraverso un canale cifrato, con un certificato client, ed in più il server si attende un token di autenticazione Oauth2 incluso nella richiesta, il lavoro si complica.

    Con C# è abbastanza semplice effettuare un richiesta HTTP utilizzando un certificato client per effettuare la chiamata, sulla stessa richiesta HTTP è semplice anche aggiungere il token OAuth2 fra gli Header.
    Se la richiesta è semplice (Ha pochi parametri e non strutturati su più livelli), lo sviluppatore può inviare una richiesta HTTP grezza, inserendo i parametri nel body di questa.
    Se invece i parametri della richiesta sono molti e molto strutturati , fare una cosa del genere, porterebbe via moltissimo tempo.

    Io ho trovato il modo di utilizzare le librerie generate da Visual studio , su un canale criptato e con il token di autenticazione Oauth2.

    Qui di seguito il codice che si userebbe per una chiamata con il metodo consueto:

    var Binding = new BasicHttpBinding();
    EndpointAddress ServiceEndPoint = new EndpointAddress("http://EndpointAddress.com");
    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);

    Volendo invece effettuare la chiamata su canale cifrato, occorre prima creare un oggetto certificate:

    X509Certificate2 certificate = new X509Certificate2("filePath.p12", "Password");

    Dove il file contenente il certificato deve essere in formato p12 e l’inserimento della sua relativa password è obbligatorio.
    Successivamente bisogna creare un oggetto di tipo binding diverso dal consueto, mentre l’oggetto endpoint rimarrà dello stesso tipo:

    var Binding = new WSHttpBinding();
    Binding.Security.Mode = SecurityMode.Transport;
    Binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
    EndpointAddress ServiceEndPoint = new EndpointAddress(https://EndpointAddress.com);

    Nota bene: L’endpoint questa volta è su HTTPS , non più su HTTP, infatti questo tipo di binding è compatibile sono con https.

    Poi è necessario creare l’oggetto client e impostarvi sopra il certificato:

    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);
    
    Client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = 
    new System.ServiceModel.Security.X509ServiceCertificateAuthentication();
    System.ServiceModel.Security.X509CertificateInitiatorClientCredential certificateInitiator = 
    Client.ClientCredentials.ClientCertificate;
    certificateInitiator.Certificate = certificate;

    Con questo abbiamo impostato la comunicazione attraverso il canale certificato, adesso dobbiamo fare in modo che nell’header della richiesta HTTPS generata, venga incluso anche un token a nostro piacimento.
    Questo è abbastanza complicato, per poterlo fare bisogna agire sul contesto della chiamata:

    using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
    {
           MessageHeader<string> header = new MessageHeader<string>("Bearer " + Oautoken);
           var untyped = header.GetUntypedHeader("Authorization", "");
           OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
           HttpRequestMessageProperty requestMessage = new 
           HttpRequestMessageProperty();
           requestMessage.Headers["Authorization"] = "Bearer " + "TokenString";          
           OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] 
           = requestMessage;
           result = client.method(serviceParameter);
    }


  • Ecco perché non mi fido della crittografia di Whatsapp.

    Whatsapp non mi è mai stato molto simpatico, come si deduce dal mio precedente articolo.
    Da qualche tempo aprendo una chat con il suddetto sistema, appare un messaggio che riporta:
    “I messaggi che invii in questa chat e le chiamate sono ora protetti con la crittografia end-to-end.”
    Ma cosa significa questo?
    Significa che le comunicazioni con la persona in questione, da quel momento in poi sono rese incomprensibili agli altri tramite uno strumento chiamato “crittografia in chiave pubblica”
    Come funziona fisicamente tutto ciò?
    Vediamo di spiegarlo con un facile esempio.
    Io sono Tizio e voglio mandare a Caio un messaggio, senza che nessun Sempronio riesca a capire che cosa vi sta scritto.
    CrittografiaAllora Caio, genera con uno speciale strumento matematico, due numeri, la sua chiave pubblica e la sua chiave privata. Tali numeri sono in strette correlazione, ma ognuno dei due non è ottenibile dall’altro se non impiegando molto tempo (si parla di 20 anni con un normale computer). Caio mi invia la sua chiave pubblica, io decodifico il messaggio con una procedura che usa come parametro quel numero e lo invio a Caio. Soltanto Caio, che conosce la chiave privata corrispondente a quella che mi ha mandato riuscirà a trasformare il messaggio inviato in quello che era in origine. Sembra magia.
    La stessa operazione si fa con numeri generati dalla mia parte, per ricevere messaggi inviati da Caio. Sempronio non può fare nulla per decodificare i messaggi, dato che le uniche cose a cui potrebbe accedere (nell’ipotesi che stesse intercettando le comunicazioni) sarebbe il messaggio codificato e la chiave pubblica, che serve solamente per codificare il messaggio, non per decodificarlo.

    Questo sistema fu adottato in principio da Telegram, e fu, a parere mio il motivo del suo successo, in quanto, la maggior parte delle persone che conosco, usa Whatsapp, e tutte le persone che conosco, che hanno qualche nozione di sicurezza informatica, usano Telegram.

    Ma veniamo al dunque. Perchè la crittografia di Whatsapp non mi piace?
    Sostanzialmente, per due motivi, il primo è un articolo che ho letto e il secondo è un anomalia che ho notato personalmente.
    L’articolo, che si può leggere qui dice letteralmente “La crittografia end-to-end di Whatsapp, è finta come il culo di Kim Kardashian.
    Se non conosci la Kim in questione, ti basta sapere che il suo culo è più falso delle banconote da 12€.
    Comunque, sempre per chi non è forte con l’inglese, l’articolo spiega che l’algoritmo che decide quali numeri usare come chiavi pubblica e privata, è comunque stato creato da Whatsapp e niente impedisce che whatsapp lo abbia scritto in modo che questi numeri siano un insieme ristretto e che quindi le chiavi siano facilmente rintracciabili dalla stessa whatsapp.
    L’anomalia da me riscontrata riguarda invece l’interfaccia web per l’uso di whatsapp.
    Entrambi i sistemi, Telegram e Whatsapp , funzionano sia attraverso uno smartphone, che attraverso un interfaccia web fruibile da PC. In particolare l’interfaccia web di whatsapp funziona solo se lo smartphone è collegato a internet (Maledetto Whatsapp)
    Se l’utente crea una chat crittografata con Telegram, dal telefono, questa chat non è accessibile attraverso l’interfaccia web. Giustamente la chiave privata usata per decodificare una chat è memorizzata nel telefono, da li non deve uscire, e quindi la chat non è leggibile da PC, che non dispone della chiave.
    Questo non avviene con Whatsapp, Le chat sono utilizzabili indistintamente da PC e telefono, senza alcun problema di sorta.
    Come è possibile?
    Perché ciò sia possibile, il PC deve necessariamente avere a disposizione la chiave privata di chi sta scrivendo.
    Se la chiave privata è arrivata fino al PC, vuol dire che è stata inviata ad un qualche sistema esterno che l’ha poi messa a disposizione del PC. Ovvio che questo sistema esterno è Whatsapp, quindi ovvio che Whatsapp avendo a disposizione la chiave può leggere tutti i vostri messaggi…


  • Whatsapp VS Telegram. Ecco perché Telegram è meglio.

    whatsapp-vs-telegram-loghiQuanti conoscono Whatsapp?
    Tutti!!!
    Quanti conoscono Telegram?
    Pochi…
    Telegram è un servizio di messaggistica istantanea analogo a Whatsapp, di realizzazione relativamente recente che offre molte feature interessanti, non offerte dall’altro.
    La maggior parte delle persone è spinta ad utilizzare whatsapp dal fatto che oramai quasi tutto il mondo lo usa, cosi per poter comunicare con il maggior numero possibile di persone bisogna utilizzarlo.
    Io sono convinto che Telegram sia migliore, sotto molti punti di vista e scrivo questo articolo per invogliare il lettore a provare questa App.
    Ma vediamo ognuna delle grandi qualità che contraddistinguono questa servizio.

    Prezzo
    Whatsapp è a pagamento. Telegram no.
    Ma Attenzione, il discorso per quello che riguarda il pagamento è molto ampio. Il costo irrisorio che l’utente deve pagare annualmente per utilizzare l’app non permette assolutamente al gestore di mantenere il servizio. Il gestore ottiene denaro grazie alle informazioni derivabili dai messaggi scambiati dagli utenti (per lo più indagini statistiche di mercato)
    Però, Come descriverò nella prossima sezione, Telegram permette di fare si che soltanto il destinatario possa leggere i nostri messaggi.

    Privacy
    Tutto quello che viene trasmesso attraverso whatsapp, e dico TUTTO, viene analizzato in maniera automatica per poterne ottenere più informazioni possibili (Bibite bevute, opinioni politiche, cibo preferito…)
    Invece, utilizzando Telegram, possiamo comunicare utilizzando la “chat segreta”. Questa appare come una normale chat, come quelle di whatsapp, ma più in profondità il funzionamento è diverso. Ogni volta che l’utente invia un messaggio, una foto o qualsiasi altra cosa, questa viene crittografata con il metodo della “cifratura in chiave pubblica”. Ovvero, il messaggio è leggibile soltanto al destinatario. I gestori di Telegram, sono talmente sicuri di questo, che sono disposti a pagare 300.000$ a chiunque riesca a trovare il modo di leggere i messaggi non destinati a lui.
    Un altra cosa che riguarda la privacy, interessante da un altro punto di vista, è la possibilità di chattare attraverso un nickname.
    Dopo aver scaricato l’app, mi devo registrare, dando il mio numero di telefono, come si fa con whatsapp. Successivamente utilizzando le opzioni dell’app posso registrarmi con un nickname (a patto che non sia già utilizzato da un altro) e utilizzare questo nick per farmi contattare su telegram da persone, senza metterle a conoscenza del mio numero di telefono.
    Il mio nick ad esempio è @garenki.

    Invio di file
    Whatsapp permette di inviare oltre ai messaggi, le foto , i video , file audio , e registrazioni fatte al momento. Telegram permette di inviare QUALSIASI tipo di file, e questi, al contrario di quanto avviene con whatsapp, non subiscono nessuna modifica (Compressioni che riducono la dimensione dei file, ma ne riducono la qualità)
    Inoltre Telegrame permette di inviare file di di dimensione molto ampia. si parla di 1GB. Questo permetterebbe ad esempio di inviare Il file ISO di una distribuzione Linux ad un amico, tramite telefono.

    Gruppi
    Whatsapp consente di creare gruppi  da 100 persone , Telegram consente di avere 200 persone all’interno di un gruppo.

    Canali
    Questa è un metodo di comunicazione che in whatsapp non esiste. I canali consentono di attuare la trasmissione in broadcasting dei messaggi a tutti gli iscritti al canale. Per esempio, io posso creare il canale “Informatica e affini” , le persone che lo desiderano possono iscriversi al canale, e riceveranno tutti quello che scrivo.
    Il canale si differenzi dal gruppo, in quanto non c’è limite al numero di iscritti ad un canale, questi si possono iscrivere da soli, e non possono scrivere sul canale.

    Open source
    Questa, dal punto di vista di un informatico è la cosa più bella. Tutto il codice che serve per fare funzionare l’applicazione si può consultare liberamente. Questo permette a chiunque lo comprende, di capire che cosa fa l’applicazione in ogni momento, e quindi capire se i messaggi vengono effettivamente crittografati  oppure no.
    Al contrario il codice sorgente dell’applicazione whatsapp è segreto. Per questo non è cosi facile sapere che cosa fa veramente l’applicazione con il nostro telefono.

    Bot
    Un Bot è un’entità che è in grado di sostituire (in alcuni casi) gli esseri umani. I bot di telegram sono programmi che rispondono in maniera autonoma alle richieste degli utenti, permettendo di interagire con altri utenti sconosciuti, ricevere informazioni, giocare…
    Ogni utente, che ne è capace, può costruire il proprio bot, e la comunità ha già dato origine a svariati bot, tra cui quello per giocare a Briscola bugiarda(briscola chiamata) @briscolabot , servizi per imparare l’inglese, il bot di Wolfram alpha, e l’incredibile SPACOBOT !! Bot pazzoide creato da italiani, che è al terzo posto, fra i bot più usati nel mondo!!

    Ma allora Telegram è nettamente meglio di Whatsapp!! Ha solo cose in più…
    Eh no, in realtà esiste una cosa che ha Whatsapp e che non haTelegram, le chiamate Voip.
    Con Whatsapp è possibile effettuare chiamate ad altri utenti senza spendere un centesimo di telefono (Come con Skype)
    Con Telegram per fare una cosa che assomiglia ad una telefonata, bisogna usare l’invio di registrazi0ni, che rendono il risultato finale una comunicazione tipo walkie talkie.

    In conclusione, io uso Telegram, e spero di avervi convinto a fare lo stesso.
    Potete scaricare la app, solo per provarla, è gratis.
    Contribuite a fare conoscere questa cosa a tutti!!


  • Il Nao e la pallina verde.

    Chi conosce il NAO?
    Il nao è un robot umanoide con 25 gradi di libertà e con 2 videocamere. (I device di cui dispone sono molti di più, ma al nostro scopo sono stati utilizzati sono i motori e le videcamere).

    È Stato utilizzato de me e dal mio collega Andrea Vannini per passare l’esame di Robotica. Il nostro intento è stato quello di permettere alla macchina di individuare la posizione della palla nello spazio circostante, fare avvicinare il robot alla palla con il piede sinistro e farlo calciare.

    Il Robot è dotato anche di un sistema capace di calcolare in modo dinamico la proiezione del suo baricentro sulla superficie che gli fa da supporto. Lo stesso sistema permette di compensare il controllo diretto dei giunti con altri movimenti non controllati direttamente dall’utente che gli permettono di mantenere l’equilibrio sulla sua base d’appoggio.
    Ossia , se il robot è in piedi con questo sistema attivato e gli impartisco il comando muovere la gamba destra verso l’esterno, il sistema autonomamente fa muovere il braccio sinistro per mantenerlo in equilibrio.

    Non essendo riusciti, io e il mio collega, a fare funzionare nel modo corretto questo sistema abbiamo pensato di far calciare il Nao attraverso un semplice passo. In questo modo ci siamo concentrati più su l’aspetto riguardante l’intelligenza del nostro robot.

    Un grosso collo di bottiglia con il quale abbiamo dovuto fare i conti è il fatto che il robot attraverso la connessione wifi riesce ad inviare al massimo 2 immagini al secondo ad una risoluzione di 640 x 480 pixel.
    Tenendo conto del fatto che queste immagini dovevano poi essere elaborate dalla nostra applicazione per individuare se la pallina fosse presente nella scena, c’era a disposizione un dato ogni 0.8 secondi all’incirca per poter prendere una decisione.

    Il risultato finale del nostro lavoro è che per effettuare il task il robot effettua questi passi:

    -Si alza in piedi
    -Cerca la pallina nello spazio circostante ruotando la testa e ruotando l’intero tramite l’uso delle gambe.
    -Raggiunge la palla camminando
    -Si allinea con la palla per calciarla
    -Arretra e fa diversi passi avanti per calciarla.

    Ma veniamo alle questioni più tecniche:  L’algoritmo.
    Le seguenti elaborazioni avvengono tutte tramite l’utilizzo delle librerie OpenCV,  abbastanza conosciute nel mondo della computer vision.
    Per consentire al robot di riconoscere la palla in qualsiasi condizione di luce,  e conoscendo noi a priori la precisa colorazione della palla, abbiamo fatto in modo di trasformare la normale immagine inviata dalla telecamera del robot (descritta tramite le cordinate dello spazio RGB) in un altra immagine descritta tramite lo spazio HSV. In questo modo è stato possibile imporre dei vincoli per delineare i pixel della palla senza imporre alcun vincolo sulla quantità di luce riflessa da essa. In questo modo il robot riconosce i pixel appartenenti alla palla in qualsiasi condizione di luce bianca.

    foto1246

    Il risultato di questo è un immagine “sogliata” ovvero un immagine nella quale i pixel che sicuramente non appartengono alla palla sono disegnati in nero mentre gli altri sono bianchi.
    foto1248

    A questo punto il problema diventa fare decidere al calcolatore se un gruppo di pixel bianchi di questa foto, costituiscono oppure no i pixel di una sfera.  Una sfera proiettata su di un piano corrisponde ad un cerchio. Quindi il problema si trasforma nel decidere se un gruppo di pixel bianchi presenti nella foto approssima sufficientemente bene un cerchio.

    La cosa più ovvia per fare questo sarebbe utilizzare la “trasformata circolare di Houg” che segue (la falsa riga :D) della Trasformata di Hough. Tuttavia, la versione della trasformata fornita con le librerie OpenCV non funziona bene come si potrebbe pensare, o perlomeno non come desidereremmo che funzionasse per il nostro task.
    Per questo motivo, ho personalmente riscritto una mia versione di questo algoritmo,che guarda caso è perfettamente funzionante!!!

    Il problema però sta nel fatto che la mia versione è molto, molto lenta…
    Da questo ne deduco che la versione fornita da OpenCV è un giusto compromesso tra affidabilità e velocità adottato dagli sviluppatori .

    Per poter fare prendere decisioni al robot usando il mio codice , era necessario porre dei vincoli nella ricerca dei cerchi. Per questo abbiamo utilizzato questo stratagemma.

    Tramite degli opportuni operatori ( Sobel) calcoliamo per ogni pixel facente parte del contorno dell’ipotetico cerchio, a direzione con massimo gradiente. (in parole povere la direzione attreaverso la quale si raggiunge un pixel bianco partendo da uno nero, percorrendo la minor distanza possibile). In un cerchio perfetto tutte queste direzioni convergono nel centro preciso del cerchio.

    foto1249

    foto1251

    Detto tutto questo, calcolando il punto nel quale passano il maggior numero di queste linee, troviamo un punto che sarà probabilmente il centro di un cerchio.
    Questo test però, origina un gran numero di falsi positivi. Ma per risolvere questo problema possiamo usare la mia versione della trasformata circolare di Hough riducendo lo spazio di ricerca con vincoli derivati dai valori appena trovati con il metodo dei gradienti.

    foto1252

    Il risultato è molto buono.


  • Nuova versione di Filtro

    Mi sono reso conto che il programma da me scritto e pubblicato in questo articolo pur essendo utile a riposare la nostra vista, non permette la facile interazione con le finestre.
    Per questo motivo ho modificato la vecchia versione con una migliore.
    Con il nuovo FILTRO scaricabile da qui è possibile riposare la vista mentre si lavora.
    I valori di colore e di trasparenza si regolano come nella versione precedente (come precedentemente descritto qui)
    Le novità sono le seguenti:
    -Il programma si apre autonomamente a pieno schermo , togliendo un po di impegno all’utente.
    -Il riquadro semitrasparente rimane sempre la prima finestra in vista, e diventa trasparente appena il puntatore viene mosso sopra di esso. Quando è completamente trasparente è possibile operare con le finestre sottostanti come se il riquadro non esistesse. Dopo circa 3 secondi che il mouse non viene mosso il riquadro torna ad essere visualizzato. Questo permette di leggere in maniera riposante un documento, scorrendo senza fatica la visuale sulle diverse pagine.


  • Filtro lettura

    Ho gia descritto in questo vecchio articolo il modo per permetterci di stancare meno la nostra vista mentre lavoriamo al PC.
    Tuttavia mi sono imbattuto nel problema che esistono documenti il cui colore di sfondo non viene modificato dal colore di sistema di Windows. Per esempio un documento in formato PDF con lo sfondo bianco , rimarrà sempre con lo sfondo bianco, che a mio avviso risulta molto stancante.
    Trovandomi a dover leggere molti documenti Pdf di quel genere per svariate ore, ho fatto fronte a questo problema creando un programma che appare come un vetro semitrasparente su tutto lo schermo.
    Il programma si può scaricare qui
    Per usarlo è sufficiente avviarlo e allargarlo a tutto lo schermo.
    È Possibile modificare il colore e il livello di trasparenza con la tastiera in questo modo:
    -Per modificare il livello di trasparenza si usano i tasti SU e GIU della tastiera. SU per diminuire la trasparenza e GIU per aumentarla.
    -Per modificare il colore bisogna operare separatamente su ogni singolo colore primario: Tenendo premuto il tasto R (red) è possibile alzare e abbassare il livello di rosso con i tasti SINISTRA e DESTRA della tastiera. Stressa cosa per gli altri colori tenendo premuto G (green , Verde) e il tasto B (blue , blu)
    Ogni volta che viene effettuata una modifica i valori dei colori e dell’opacità (alpha) vengono descritti dal testo in alto a sinistra della finestra.
    Provate a modificare questi valori in modo da riuscire a leggere il testo che sta sotto senza stancare gli occhi.
    Spero che Il programma possa essere utile anche a voi.
    ————————————————-
    Adesso ho sviluppato una nuova versione leggi qua


  • Da pdf a jpg.

    Cercando sulla rete per motivi di studio ho trovato un interessante programma che permette di ottenere le immagini in formato JPG di ogni singola pagina di un documento PDF.
    Il file è scaricabile da qui
    Il programma è liberamente utilizzabile da tutti.
    Funziona da riga di comando attraverso il prompt di ms-dos.
    Ma esiste un modo più semplice veloce e intuitivo per utilizzarlo. Basta fare Drag & drop con l’interfaccia del nostro sistema operativo Windows. Per ottenere le immagini di ogni pagine del documento PDF dobbiamo cliccare sul file PDF e trasportarlo sull’icona dell’eseguibile del nostro programma appena menzionato.
    Automaticamente il programma creerà una cartella nella stessa cartella dove è presente l’eseguibile chiamata “PDF_to_JPG_files” contenente tutte le immagini.
    Per il corretto funzionamento è necessario accertarsi che non sia già presente una cartella con lo stesso nome. In quel caso il programma termina l’esecuzione restituendo un messaggio di errore.


  • SRT Subtitle Fixer

    Quante volte succede di avere a disposizione un film con la banda audio in lingua straniera e trovare i sottotitoli in lingua italiana che però sono un po’ sfasati con il video?
    Questo succede quando la persona che ha costruito i sottotitoli ha fatto il suo lavoro utilizzando un altra versione del nostro stesso film, che magari non ha la presentazione iniziale o che ha una presentazione diversa.
    I file dei sottotitoli più utilizzati hanno come estensione “srt”  e si sincronizzano con il video utilizzando come punto di riferimento l’inizio di questo.
    Visto questo problema ho deciso di creare SRT Subtitle Fixer. Un programma che permette di anticipare o posticipare a scelta i sottotitoli in formato srt. Il programma è semplicissimo da usare e si può scaricare qui.
    E sufficiente aprire il programma, cliccare sul tasto “Apri file” e  scegliere il file .srt da modificare. La finesta a questo punto mostra il nome del file aperto e la quantità di righe che lo costituisce.
    Nella parte sottostante vi sono 2 caselle di testo:
    -Nella prima bisogna scrivere il valore numerico dei millisecondi di ritardo che vogliamo dare ai sottotitoli. Per esempio , se volessi ritardare i  sottotitoli di un secondo e mezzo scriverei “1500”,  se volessi anticiparli di 2 secondi  scriverei “-2000″(Valore negativo).
    -Nella seconda casella va scritto il nome del file che verrà creato nella stessa cartella di quello aperto e che conterrà i sottotitoli modificati.
    Una volta inseriti questi parametri, basta premere il tasto “Scrivi file” e ci troveremo il nuovo file con i sottotitoli modificati  nella stessa cartella in cui risiede il file aperto.
    Provatelo e se riscontrate dei problemi o malfunzionamenti non esitate a farmelo sapere attraverso questo blog.


  • Come riconoscere la versione di un disegno di autocad

    Il potente strumento di disegno rilasciato dalla ditta Autodesk salva i disegni in file con estensione .DWG

    Chi ha già provato a scambiare file con i colleghi si sarà accorto che un file salvato con una data versione non è apribile con una versione di Autocad meno recente. Per questo motivo per poter permettere alla persona a cui inviamo un disegno di poterlo aprire , dobbiamo prima salvarlo utilizzando il formato della versione da lui posseduta.

    Ma come fare per riconoscere la versione del formato in cui in dato disegno è stato salvato?

    Per farlo dobbiamo aprire il file in questione con un semplice editor di test ad esempio Notepad (il blocco note) e vedere quali sono i primi 6 caratteri. Questi vanno confrontati con i valori riportati in seguito per capire con quale versione di di Autocad è stato salvato il disegno.

    • AC1023 AutoCAD 2009
    • AC1022 AutoCAD 2008
    • AC1021 AutoCAD 2007
    • AC1018 AutoCAD 2004/2005/2006
    • AC1015 AutoCAD 2000/2000i/2002
    • AC1014 Release 14
    • AC1012 Release 13
    • AC1009 Release 11/12
    • AC1006 Release 10
    • AC1004 Release 9
    • AC1003 Version 2.60
    • AC1002 Version 2.50
    • AC1001 Version 2.22
    • AC2.22 Version 2.22
    • AC2.21 Version 2.21
    • AC2.10 Version 2.10
    • AC1.50 Version 2.05
    • AC1.40 Version 1.40
    • AC1.2 Version 1.2
    • MC0.0 Version 1.0