Anuncios

Como acceder desde Java a contenidos de celdas en Excel


Lo cierto es puede que  en  ocasiones necesitemos procesar ficheros excel u otro tipo de hojas de cálculo de   forma automatizada, por ejemplo  para extraer  información  de determinadas celdas, manipular estas , generar ficheros de metadatos que  sigan ciertas reglas , etc

En este caso nos vamos a centrar en los documentos OLE 2 de Microsoft, que manipularemos  usando la libreria  Apache POI – the Java API for Microsoft Documents, que nos proporciona acceso a los diferentes tipos de ficheros de Microsoft que utilizan esta estructura como:  Excel Word o  Powerpoint, también hay otros proyectos dentro de esta API para Visio y Publisher por ejemplo

Como se  puede   imaginar de todos estos el más desarrollado es Excel Workbooks y es precisamente el tipo de fichero elegido para este ejemplo.

Antes de empezar  usaremos  la librería POI-HSSF and POI-XSSF – Java API To Access Microsoft, donde HSSF es el proyecto POI de implementación total en Java para ficheros excel.Esta libreria usa cuatro componentes fundamentalmente:

  • HSSFWorkbook: Representación de alto nivel de un libro (Workbook) que será nuestra documento excel. Es el primer objeto que construiremos si vamos a leer o escribir una hoja excel.
  • HSSFSheet: representación de alto nivel de una hoja excel, podemos elegir la hoja de la excel usando el HSSFWorkBook.
  • HSSFRow: representación de celda de una fila de la hoja excel, solo las filas que tienen filas se pueden añadir a la hoja.
  • HSSFCell: representación de una celda en una fila de la un hoja de la excel, la utilizaremos para manejar el contenido de la celda.

Bien, sin más  dilaciones,  empezamos  a  ver como podemos procesar ficheros de Tipo Excel  

Paso 1: Descargar librería Apache Poi Java API

Antes de nada, tenemos que descargar la librería API Apache Poi Java, para añadirla a nuestro proyecto, voy a explicar cómo hacerlo en el IDE que estoy usando para este ejemplo: Netbeans, en otros IDES será similar la forma de integración de las librerías.

En nuestro proyecto buscamos la carpeta Libraries nos colocamos encima y seleccionamos Add Library, no tiene mucho que explicar así que te lo mostraré en imágenes:

La librería es  https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.1.0-20190412.zip

 

 

 

 

Paso 2-Registro de la librería en nuestro proyecto

Una vez  descargada y descomprimida, nos iremos a Properties del proyecto , después a   Java Build Path y   pincharemos en la pestaña  Libraries

Aquí  pulsaremos Add External JARs  seleccionando “poi-4.01.jar” desde al ruta donde la hayamos dejado esta librería.

 

 

Paso 3-Incluir las librerías

Ahora toca pasarse  a  programar, pero antes , no debemos olvidar importar las  cuatro librerias  que comentaabamos al principio

  • HSSFRow: representación de celda de una fila de la hoja excel, solo las filas que tienen filas se pueden añadir a la hoja.
  • HSSFWorkbook: Representación de alto nivel de un libro (Workbook) que será nuestra documento excel. Es el primer objeto que construiremos si vamos a leer o escribir una hoja excel.
  • HSSFSheet: representación de alto nivel de una hoja excel, podemos elegir la hoja de la excel usando el HSSFWorkBook.
  • HSSFCell: representación de una celda en una fila de la un hoja de la excel, la utilizaremos para manejar el contenido de la celda

Visto asi , adjuntando otras librerias utiles , la cabecera de importaciones de librerias quedaria  asi: 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;

import java.io.FileDescriptor;

import org.apache.poi.ss.usermodel.Cell;

 

Paso 4-Convertir al menos a  formato excel97  o superior

Antes de proseguir , en caso de tener ficheros excel en formato muy antiguos( por ejemplo Excel 95) .  deberemos  convertir estos   al menos al  formato excel 97,  para ello, en caso de que el formato sea de excel 95 deberemos abrir dicho fichero e irnos  a la opción   Guardar como seleccionamos   “libro de Excel 97-2003(*.xls)”

 

 

 

5-Pasemos al código

Una vez salvada  la hoja en formato excel 97 o superior  veamos un simple ejemplo de cómo capturar  los valores contenidos en las celdas

 

                      ——

      FileInputStream file = new FileInputStream(new File("C:\\prueba.xls"));

    // Crear el objeto que tendrá el libro de Excel

      XSSFWorkbook workbook = new XSSFWorkbook(file);

      /** Obtenemos la primera pestaña a la que se quiera procesar indicando el indice.

     * Una vez obtenida la hoja excel con las filas que se quieren leer obtenemos el iterator

      * que nos permite recorrer cada una de las filas que contiene.

      */



      XSSFSheet sheet = workbook.getSheetAt(0);

      Iterator<Row> rowIterator = sheet.iterator();

      Row row;

    // Recorremos todas las filas para mostrar el contenido de cada celda

      while (rowIterator.hasNext()){

          row = rowIterator.next();

         // Obtenemos el iterator que permite recorres todas las celdas de una fila

          Iterator<Cell> cellIterator = row.cellIterator();

          Cell celda;

          while (cellIterator.hasNext()){

            celda = cellIterator.next();

            // Dependiendo del formato de la celda el valor se debe mostrar como String, Fecha, boolean, entero...

            switch(celda.getCellType()) {

            case Cell.CELL_TYPE_NUMERIC:

                if( DateUtil.isCellDateFormatted(celda) ){

                   System.out.println(celda.getDateCellValue());

                }else{

                   System.out.println(celda.getNumericCellValue());

                }

                break;

            case Cell.CELL_TYPE_STRING:

                System.out.println(celda.getStringCellValue());

                break;

            case Cell.CELL_TYPE_BOOLEAN:

                System.out.println(celda.getBooleanCellValue());

                break;

            }

          }

      }


   // cerramos el libro excel

      workbook.close();


Como vemos en el ejemplo anterior , crearemos el objeto que tendrá el libro de Excel(FileInputStream file = new FileInputStream(new File(“xxx..) y obtenemos la primera pestaña a la que se quiera procesar indicando el indice 0 (  XSSFSheet sheet = workbook.getSheetAt(0);

Una vez obtenida la hoja excel con las filas que se quieren leer ,obtenemos el iterator que nos permite recorrer cada una de las filas que contiene. (  Iterator<Row> rowIterator = sheet.iterator()😉

Y  ya bastaría ir recorriendo todas las filas con un bucle  while ( while (cellIterator.hasNext()))  ,  lo cual nos  va  a permitir  procesar  el contenido de cada celda

Obtenemos el iterator(  row = rowIterator.next(); ) que permite recorrer todas las celdas de una fila y salvar el objeto en la variable row

Ahora ya dependiendo del formato de la celda de la variable   row  ,  el valor se debe mostrar como String, Fecha, boolean, entero

El programa tras recorrer todas las filas acaba cerrando el libro excel

 

 

Como ejemplo más elaborado , vamos a ver como procesar  una hoja excel s donde cada fila representa los diferentes metadatos , por lo que con el programa  iremos capturando dicha información diferente  celda a celda para cada fila , para ir componiendo una fila de texto con los diferentes metadatos  capturados   y  que separaremos por el carácter almohadilla ( #) .

Finalmente veamos  pues el ejemplo cuya finalidad es extraer de un excel un fichero csv de un modo automático via el siguiente programa en java;

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;

import java.io.FileDescriptor;

import org.apache.poi.ss.usermodel.Cell;

 

 

public class Main {

//private static String nombre;

public static void main(final String[] args) throws IOException {

String lineaslog=””;
String lineaslog2=”\r\n”;

//fichero de log
File filelog = new File(“d://ficherolog.txt”);
FileOutputStream fos2log = new FileOutputStream(filelog);

 


//añadimos 4 ceros la contador y generamos nuevo nombre
nfichero= “salida.txt”;
System.out.println(“Nuevo nombre fichero salida:” + nfichero);
lineaslog=”Nuevo nombre fichero salida:” + nfichero;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());
//Procesar el excel a txt


//Creamos nuevo fichero de metadatos del tipo texto
File file = new File(nfichero);
FileOutputStream fos1 = new FileOutputStream(file);
FileDescriptor fd = fos1.getFD();


FileOutputStream fos2 = new FileOutputStream(fd);

String rutaArchivo=files22[ i ] ; //directorio3;
System.out.println (“Leyendo archivo :” + rutaArchivo );
lineaslog=”Leyendo archivo :” + rutaArchivo ;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());

System.out.println (“NOMBRE HOJA :”+ hoja);
lineaslog=”NOMBRE HOJA :”+ hoja;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());



try (FileInputStream fileexcel = new FileInputStream(new File(rutaArchivo)))

{
System.out.println(“Leer archivo Excel “);
lineaslog=”Leer archivo Excel “;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());

// leer archivo excel97
HSSFWorkbook worbook = new HSSFWorkbook(fileexcel);

System.out.println(“Leyendo la hoja del fichero excel”);
lineaslog=”Leyendo la hoja del fichero excel”;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());

//obtener la hoja que se va leer
HSSFSheet sheet = worbook.getSheetAt(0);

System.out.println(“Obtener las hojas del fichero excel”);
lineaslog=”Obtener las hojas del fichero excel”;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());
//obtener todas las filas de la hoja excel
Iterator<Row> rowIterator = sheet.iterator();

Row row;

System.out.println(“La ruta del fichero excel es rutaarchivo :”+rutaArchivo);
lineaslog=”La ruta del fichero excel es rutaarchiv:”+rutaArchivo;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());


Integer nm3=0;

while (rowIterator.hasNext()) // se recorre cada fila hasta el final

{

//System.out.println(“linea1”);

row = rowIterator.next();
nm3=nm3+1;

//se obtiene las celdas por fila
Iterator<Cell> cellIterator = row.cellIterator();
Cell cell;

//se recorre cada celda
int indice=0;
while (cellIterator.hasNext()) {

// se obtiene la celda en específico y se la imprime
cell = cellIterator.next();

//System.out.print(“(i”+i +”)=”+ cell.getStringCellValue()+” | “);

switch (indice) //tomaremos diferentes columnas del fichero excel
{

case 0:
{
nombre_fichero=cell.getStringCellValue();
}
case 1:
{
boletin=cell.getStringCellValue();
}
case 2:
{
telefono=cell.getStringCellValue();
}

case 3: // cif o nif
{
ncif=cell.getStringCellValue();
}

case 4: //valor del cif
{
cif=cell.getStringCellValue();
}

case 8:
{
fecha=cell.getStringCellValue();
}
case 9:
{
hora=cell.getStringCellValue();
}
}



linea= linea + cell.getStringCellValue() +”#”;

indice=indice+1;

}


lineas=boletin +”#” +telefono +”#”+ncif+”#” + cif+”#”+tipo +”#” +fecha+” “+hora+”#” +”#” +”#” +”#”+ nombre_fichero+ “#”+ nombre_fichero+”#”;


fos2.write(lineas.getBytes());

//System.out.println();

lineas=”\r\n”;

fos2.write(lineas.getBytes());

}

worbook.close();


linearesumen= directorio+”;”+ hoja +”;”+directorio22+ “P5_”+ fechaok+String.format(“%05d”, contador) +”;”+nm3;

fos3.write(linearesumen.getBytes());

linearesumen=”\r\n”;

fos3.write(linearesumen.getBytes());

nm3=0;

}
catch (Exception e)

{

e.getMessage();
System.out.println(e.getMessage());
lineaslog=e.getMessage();
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());

}

fos1.close();
fos2.close();

System.out.println(“Fin de generacion del txt de metadatos desde excel a txt”);
lineaslog=”Fin de generacion del txt de metadatos desde excel a txt”;
fos2log.write(lineaslog.getBytes());
fos2log.write(lineaslog2.getBytes());

}

Anuncios

Cómo enviar correos de forma masiva gratis y sin limite


Si alguna vez  se  ha preguntado cómo enviar correos electrónicos de forma masiva  y prácticamente  sin límite  sin caer en spam , o lo que es lo mismo,  mandar emails,  newsletter o boletines a  destinatarios que haya recopilado con el consentimiento de esas personas, así como  a listas de correos, sin necesidad de ir enviándolos uno a uno,   en  este post   vamos  a ver como gracias al veterano servicio de calidad de  Mailrelay con más de 15 años online, usado  tanto de forma personal como profesional ,  es en realidad una  tarea bastante sencilla  hacerlo y todo ello sin coste alguno   usando este servicio web    que además  cuenta   prácticamente  una capacidad ilimitada (es decir 75.000 emails al mes, y gestión de hasta 15.000 suscriptores).  

Quizás  lo más  interesante de destacar es que el servicio de Mailrelay al contrario de otros servicios , es   gratuito  sin publicidad en las newsletters  pues  otros servicios  similares   ponen muchas trabas, y se aprovechan insertando publicidad , incluso en cuentas de pago básicas en algunos casos,   y además no tiene  límite de envío diario, no tiene  limitaciones de funcionalidades y ofrecen  soporte gratuito  ¿Por qué gastar esfuerzos de marketing en publicitar o r anunciar otra empresa?

En efecto   gracias a Mailrelay es posible  crear newsletter, enviar mailings, gestionar listas de suscriptores y analizar  campañas de email de   una forma  gratuita  y más ahora  que    ha sido actualizada  y mejorada  en  nueva version 3 que como vamos    ver en este video  hace  que sea realmente sencillo lanzar este tipo de e-mails

 

Como vemos  en el video esta nueva version V3  de Mailrelay cuenta  nuevo dashboard principal con menú superior y resumen de las últimas campañas,nuevo y potente editor drag & drop (que facilita la creación de newsletters, con bloques para redes sociales, vídeo, texto, grupos de imágenes, columnas, etc)  ,estadísticas mejoradas con más información y en tiempo real,posibilidad de segmentación por grupos de forma tradicional o utilizando los nuevos segmentos dinámicos ,automatismos mejorados y ampliados en base a registros, click o apertura de boletín , etc

De hecho  más de 200.000 clientes en todo el mundo incluyendo grandes empresas   lo están usando como  puede apreciarse  en el gráfico de abajo

 

Veamos  a continuación cómo realizar una  sencilla campaña con  Mailrelay   ,donde como  vamos a ver,  no es demasiado  difícil  pues la operativa se  reduce a la importación de   los contactos, crear una newsletter, enviarlas   y `por supuesto realizar   un seguimiento estadístico de todo,

Bien  veamos  como hacerlo  usando esta  veterana herramienta.

 

 

1- Importación de  contactos y creación de  lista de suscriptores

Suponiendo que tengamos cuenta gratuita con  Mailrelay , lo primero que tenemos que hacer es crear la «ubicación» donde vamos a incluir » nuestros contactos.Tenemos dos opciones bien diferenciadas: Grupos  y Segmentos .( los segmentos se diferencia porque los contactos que hay en ellos deben cumplir una condición y son dinámicos, por lo que su número de suscriptores es variable.)  Nos  iremos al menú «suscriptores» -> «grupos» y en esta pantalla haremos clic en el botón «añadir», para crear un nuevo grupo.

Crear un grupo es muy sencillo pues solo tenemos dos valores posibles para darle: Nombre  y Descripción ( !ojo pues esta es  solo un valor interno,  para que podamos organizar nuestra lista de contactos”) .Añadiremos  un nombre al grupo y haremos click en «crear grupo».

Una vez hemos hecho clic en crear grupo veremos esta pantalla:

mailrelay email marketing tutorial v3

Ahora realizaremos una nueva importación, haciendo click en el botón «nueva importación» que podemos ver a continuación:

mailrelay email marketing tutorial v3

En la siguiente pantalla, vamos a ver las opciones de importación de las que disponemos actualmente Veamos las opciones:

  1.  Copiar y pegar
  2.  Subir Archivos > importar de un txt o CSV esta es la que usaremos ahora
  3.  Importar desde Mailchimp >

Al  marcar la opción, aparece un recuadro donde podemos arrastrar el fichero a subir. Puede importar un fichero CSV o TXT (también ha de estar separado por comas).En realidad no importa demasiado cuántos valores tengamos, pero debemos respetar que solo tengamos un contacto por línea, y que los campos estén separados por comas.

Bien, una vez tengamos ese fichero, lo que haremos será arrastrarlo a la casilla donde pone «arrastra el archivo». Una vez se haya subido el fichero, vamos a ver una pantalla bastante similar a la siguiente:

Como vemos en la imagen hay tres  puntos clave:

  1.  Campos y columnas: iremos usando  los desplegables y nos ayudaremos de la vista previa de los datos. En los desplegables de campo  hay campos de tipo «incorporado», campos que existen por defecto en el sistema, como nombre, dirección, ciudad, etc. No es necesario que los cree, simplemente importe los datos en ellos.
  2.  Importar en los grupos. Aquí elegiremos el grupo al que queremos importar los contactos (, solo tenemos que hacer click y seleccionarlo) 
  3.  Opciones adicionales. Por último podemos elegir qué hacer con los contactos existentes, si bien ignorarlos (los saltamos y no hacemos nada) o los sobreescribimos

Ahora solo queda hacer click en «importar» y se realizará la importación  del contenido del fichero  csv a la bbdd del servicio de Mailrelay .Una vez finaliza la importación de contactos veremos un pequeño resumen,con  el listado de emails importados, y el resultado, por si hubiera habido algún error o problema con el email en cuestión..

 

2· Crear una newsletter con el editor drag & drop de Mailrelay

Esta  nueva versión de Mailrelay incluye varias opciones para crear nuestros boletines, opción que  podemos ver en el menú «Boletines» –>«Boletines».

Aquí, si hacemos click en el botón «Añadir» como en los menús anteriores, veremos una pantalla  con cuatro opciones de edición de boletines:

  1.  Crear boletín. Con esta opción haremos uso del editor drag & drop para crear nuestro diseño de newsletter de forma fácil y rápida
  2.  Pegar código. Si disponemos de un diseño de boletín en html, podemos importarlo pegándolo directamente en un editor clásico
  3.  Subir archivo zip. Funciona igual que la opción anterior, pero importando directamente
  4.  Importar desde una URL. Otra función similar, en esta ocasión importaremos desde una URL. Importante: las páginas web hacen uso de CSS, Javascript externos, menús, etc. Por lo que no se importarán bien, o no se enviarán bien como un email. No importes la URL de una web
Elegimos la opción «crear boletín», y lo primero que tendremos que hacer será rellenar    la típica información que enviaríamos en un e-mail:
  1.  Asunto. El asunto de nuestro email, el subject o título, es lo que verán los contactos al recibir en su cliente de correo.
  2.  Previsualizar texto. Es el texto de la precabecera, un pequeño texto que aparece después del asunto en algunos clientes de correo.
  3.  Remitente. Aquí pondremos el email de remitente que vamos a emplear, por defecto podemos elegir el email con el que hemos creado la cuenta.
  4.  Grupos. Y el grupo que hemos creado lo seleccionaremos aquí.

Cuando ya lo tenemos todo listo, haremos click en el botón «Siguiente» de la esquina inferior derecha y  pasaremos a una pantalla donde podremos seleccionar una plantilla de base . Podemos elegir la que queramos y haremos  click de nuevo en «siguiente».

► El editor drag & drop para crear newsletters

Este editor es muy sencillo de utilizar pues tenemos dos espacios bien diferenciados, a la izquierda la visualización de la plantilla.Lo  destacado es que si pasa sobre cualquier elemento verá que se superpone un menú flotante que nos permite: Mover el elemento, Editarlo,Duplicarlo o eliminarlo. Asimismo en las imágenes verá también la opción de «buscar imagen» para sustituir la imagen por defecto por una de las que tenga en su equipo.

Bien,  en la parte  derecha veremos esto:

opciones del editor de Mailrelay

Como vemos ,los elementos que tenemos disponibles son:

  1.  Texto. Para insertar un cuadro de texto, donde poder escribir, insertar enlaces, y en general darle el formato que queramos.Los bloques de texto funcionan igual que las imágenes, solo tiene que arrastrar el bloque en cuestión a la zona donde quieras ubicarlo.Recuerde, una vez arrastrado el bloque de texto, hacemos clic en «editar»:Tenemos tres opciones:
    1.  Contenido. Este será el contenido de texto del bloque
    2.  Diseño. Valores como tipo de fuente, tamaño, alineación, etc
    3.  Configuración. Número de columnas
  2.  Imagen. Nos permite insertar una imagen.Si ya tenemos un elemento de imagen solo tenemos que hacer click en el botón «buscar imagen», y si no, primero arrastraremos un elemento de tipo «imagen»a la zona de edición.Al hacer click en «buscar imagen» y en la caja donde pone «Drop files here to upload»?Aquí podremos pinchar y elegir la imagen de nuestro equipo, o arrastrar la imagen, con lo cual la veremos aparecer.Una vez hecho eso, solo tenemos que hacer click en la imagen que queremos utilizar, se situará en la parte izquierda, y podremos hacer click en el botón «usar archivo», lo que hará que la imagen aparezca en el editor de esta forma:
  3.  Imagen con leyenda. Si tenemos que poner una imagen que incluya una leyenda.Para empezar solo tenemos que arrastrar este bloque a donde queramos posicionarlo.Elegiremos
    1. Número de imágenes. Elegiremos  las imágenes que deseemos incorporar
    2.  Posición de las columnas. Podemos tenerlas una al lado de otra, o una encima de la otra
    3.  Posición de la leyenda. Esto hace referencia a la posición del texto, arriba de la imagen, o debajo
  4.  Grupo de imágenes. Para insertar más de una imagen en nuestra newsletter
  5.  Botones de redes sociales
  6.  Divisor
  7. Vídeo

Con estas opciones tendremos más que suficiente para crear un buen diseño para nuestro email.

Estos elementos los podemos arrastrar a la parte izquierda para crear elementos de forma fácil, como vemos en la siguiente imagen:

 

► Añadir el nombre del contacto

Antes hemos subido nuestra lista de contactos incluyendo el nombre, así que quizás  se pregunte ¿cómo incluimos el nombre en la newsletter? Pues editaremos el bloque de texto donde queremos incluir el nombre, posicionamos el cursor del ratón donde queremos añadir el nombre y utilizamos el desplegable «Variables» , En el mismo bajamos hasta encontrar la sección «Suscriptor» y elegimos la opción «Nombre» y ya cuando envíe la newsletter esta variable se sustituirá por el nombre del contacto en cuestión.

► Añadir  el enlace de baja

Al igual que en el caso anterior, vamos a utilizar el editor, pero en este caso, la variable que seleccionaremos será una de las opciones de «URLs de baja»:

editor de newsletter mailrelay enlace de baja

Tenemos varias opciones aquí:

  1.  URL de baja normal. Cuando el suscriptor hace click, se da de baja inmediatamente
  2.  URL de baja con confirmación por email. Cuando el suscriptor hace click recibe un email de baja en el que ha de hacer click para confirmar
  3.  URL de baja de grupo. Solo da de baja al suscriptor en el grupo en el que ha realizado el envío

Si hace click en esta opción, verá que inserta en el editor algo como esto:{{ unsubscribe_url }}

Y ya está. Ahora que tenemos la newsletter lista y preparada, la guardamos utilizando el botón de la esquina inferior derecha:

guardar plantilla de newsletter

 

3· Enviar una newsletter 

Vamos a entrar en la última parte  realizando el envío del boletín, así que lo  primero que tenemos que hacer es volver al menú «Boletines»– «Boletines», y ahi veremos un listado de los boletines ,.

Ahora miremos un poco más a la derecha:verás por cada línea, una serie de iconos como estos:

enviar newsletter gratis con Mailrelay

De izquierda a derecha esos enlaces  tienen esta  funcionalidad:

  1.  Enviar newsletter ( no esta por casualidad en primer lugar) ,Al hacer click en el mismo veremos una pantalla de errores posibles.Lo bueno, es que si hace click en los enlaces, puede ver cómo se deben realizar estas configuraciones.
  2.  Duplicar
  3.  Mostrar (visualizar el boletín)
  4.  Editar
  5.  Borrar

 

enviar newsletter gratis con mailrelay

 

Si seguimos un  poco más abajo tenemos otras dos opciones más:

  1.  Enviar boletín a un grupo o segmento. Opción con la que podríamos enviar el boletín al grupo donde hemos importado los suscriptores.
  2.  Enviar un boletín de prueba. De esta forma nos podemos enviar una prueba de boletín, para ver cómo queda la newsletter en nuestro cliente de correo
  3. Y para terminar  como tercer punto podemos ver que es posible programar el envío para una fecha determinada o enviar la newsletter en ese momento

Bueno, en todo caso  pulsando el primer botón de enviar newsletter , ya tendremos nuestro mailing enviado por lo que sólo nos queda comprobar que efectivamente ya se ha enviado  asi como lo datos estadisticos.

 

4- Las estadísticas del envío 

Es interesante cerciorarse que en efecto el envío de la newsletter se ja realizado con éxito , así que nos  iremos al menú «informes» – «boletines enviados». Aquí vemos una lista de los boletines enviados:

listado de mailings enviados

Es importante fijarse  que el estado indique  «completado», ya que en otro caso indicaría si está en proceso o cualquier posible error.

También en esta pantalla de boletines enviados podemos ver un pequeño resumen, de emails enviados, visualizaciones y clicks, aunque de todas formas si queremos ver el detalle del envío podemos hacer click en el asunto de la newsletter e iremos a una pantalla con más detalle:

estadísticas de mailing

Como  podemos ver en esta pantalla a modo de  resumen rápido y general podemos  ver información rápida de: Emails entregados, cantidad y porcentaje, Emails rebotados, Visualizaciones y porcentaje (es posible que un mismo suscriptor abra varias veces el email) y  Clicks y porcentaje

Pero ademas fíjese que tenemos más menús, al lado de la flecha: Emails enviados, Visualizaciones, Clicks, Baja y  Reenviado. En estos menús tenemos mucha más información, como los contactos que han abierto, los que han hecho click, el mapa de click,geolocalización, etc .

Si le interesa en su blog  puede ampliar mas información al respecto .

 

 

 

Creemos  que para una primera toma de contacto, ya hemos visto los aspectos más importantes de lo que se puede hacer con una nueva cuenta de Mailrelay en su nueva version  V3  ,  que como decíamos en la introducción, es uno de  las pocas servicios gratuitos ,·que no tiene límite diario de envío, y  que  como hemos visto , incluye  una ingente  número de funcionalidades  extra  .

Además  un aspecto que no debemos  desdeñar de la  funcionalidad de Mailrelay ,  es que  no incluyen publicidad en sus newsletters, pues la verdad suena un poco anacrónico que para  intentar informar de algún producto nuevo , una novedad  o lo  que sea que queramos enviar a nuestra  base de clientes  o usuarios   tengamos  que incluir publicidad  de terceros ¿a  que sonaría bastante raro verdad?  

 

Como cambiar la Rom de un dispositivo Android


Gracias a las herramientas ADB y Fasbbot podemos ejecutar una serie de comandos que vamos a necesitar, y que nos permiten desinstalar las aplicaciones que no necesitamos sin tener que contar con permisos de  root en nuestro  dispositivo Android ( smartphone, tablet u incluso otros dispositivos). 

  • En efecto ADB, o lo que es lo mismo Android Debug Bridge ( Conector o puente para depuración de Android ), es un juego de herramientas incluido en el paquete SDK de Android  que consiste en una serie de programas con función tanto de cliente, como de servidor, que se comunican entre ellos . Como es sabido el uso normal del ADB se realiza desde la línea de comandos, aunque  existen numeroso interfaces gráficos para controlarlo.
  • Fastboot es una herramienta que nos proporciona Android para flashear archivos y modificar algunos factores de software. Es decir, con ella podemos abrir el bootloader y tener la posibilidad de cambiar la ROM.

Por tanto ADB Android y Fastboot son dos herramientas muy utilizadas y de obligatorio uso para desarrolladores Android asi como para aquellos usuarios que necesiten, por ejemplo, cambiar la ROM o instalar un Recovery personalizado, por ejemplo, para hacer root.

 

  

 

Estas dos herramientas funcionan en modo de comandos, desde una ventana de MS-DOS, por lo que a simple vista para muchos usuarios puede resultar confusa e incluso complicada, veamos primero como instalamos estas herramientas en nuestro ordenador  y después como podemos usarlas

 

Archivos necesarios para adb  y fastboot en Android

Para poder hacer uso de estas herramientas necesitaremos los binarios correspondientes y las dependencias, en forma de librerías .dll. La lista de estos archivos es:

  • adb.exe
  • fastboot.exe
  • AdbWinUsbApi.dll
  • AdbWinApi.dll

Tanto el adb en Android como el fastboot y las librerías suelen instalarse automáticamente junto a Android Studio y todo el SDK de Android. Como el entorno de desarrollo de Android ocupa varios gigas y estas sencillas aplicaciones apenas superan los 10 megas podemos descargarlas separadas del SDK desde múltiples sitios, por ejemplo, desde los foros de XDA.

Una vez tenemos estos archivos podemos optar por dos opciones:

  • La primera de ellas y la más sencilla y segura es guardarlos todos ellos en una misma carpeta en nuestro disco duro (por ejemplo en C:\ o en el mismo escritorio) y cuando abramos una ventana de MS-DOS situarnos mediante el comando cd en ella, para poder ejecutar las herramientas que deseemos.

  • La segunda de ellas, recomendable si hacemos uso habitual de adb y fastboot, es copiar los 4 archivos anteriores a la ruta C:\Windows\System32. De esta manera simplemente abriendo una ventana de MS-DOS, independientemente de nuestra ruta, podremos ejecutar las aplicaciones escribiendo adb o fastboot.

 

Para que querido lector se haga una idea ,una vez instalada la utilidad adb  la ejecución desde  linea de comandos desde un equipo con windows 10 del comando adb  sin parámetros , se ve así:

Microsoft Windows [Versión 10.0.17134.590]
(c) 2018 Microsoft Corporation. Todos los derechos reservados.

C:>adb
Android Debug Bridge version 1.0.31

-a – directs adb to listen on all interfaces for a connection
-d – directs command to the only connected USB device
returns an error if more than one USB device is present.
-e – directs command to the only running emulator.
returns an error if more than one emulator is running.
-s – directs command to the device or emulator with the given
serial number or qualifier. Overrides ANDROID_SERIAL
environment variable.
-p – simple product name like ‘sooner’, or
a relative/absolute path to a product
out directory like ‘out/target/product/sooner’.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
-H – Name of adb server host (default: localhost)
-P – Port of adb server (default: 5037)
devices [-l] – list all connected devices
(‘-l’ will also list device qualifiers)
connect [:] – connect to a device via TCP/IP
Port 5555 is used by default if no port number is specified.
disconnect [[:]] – disconnect from a TCP/IP device.
Port 5555 is used by default if no port number is specified.
Using this command with no additional arguments
will disconnect from all connected TCP/IP devices.

device commands:
adb push – copy file/dir to device
adb pull [] – copy file/dir from device
adb sync [ ] – copy host->device only if changed
(-l means list but don’t copy)
(see ‘adb help all’)
adb shell – run remote shell interactively
adb shell – run remote shell command
adb emu – run emulator console command
adb logcat [ ] – View device log
adb forward –list – list all forward socket connections.
the format is a list of lines with the following format:
” ” ” ” “\n”
adb forward – forward socket connections
forward specs are one of:
tcp:
localabstract:
localreserved:
localfilesystem:
dev:
jdwp: (remote only)
adb forward –no-rebind
– same as ‘adb forward ‘ but fails
if is already forwarded
adb forward –remove – remove a specific forward socket connection
adb forward –remove-all – remove all forward socket connections
adb jdwp – list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] [-s] [–algo –key –iv ]
– push this package file to the device and install it
(‘-l’ means forward-lock the app)
(‘-r’ means reinstall the app, keeping its data)
(‘-s’ means install on SD card instead of internal storage)
(‘–algo’, ‘–key’, and ‘–iv’ mean the file is encrypted already)
adb uninstall [-k] – remove this app package from the device
(‘-k’ means keep the data and cache directories)
adb bugreport – return all information from the device
that should be included in a bug report.

adb backup [-f ] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] []
– write an archive of the device’s data to .
If no -f option is supplied then the data is written
to “backup.ab” in the current directory.
(-apk|-noapk enable/disable backup of the .apks themselves
in the archive; the default is noapk.)
(-obb|-noobb enable/disable backup of any installed apk expansion
(aka .obb) files associated with each application; the default
is noobb.)
(-shared|-noshared enable/disable backup of the device’s
shared storage / SD card contents; the default is noshared.)
(-all means to back up all installed applications)
(-system|-nosystem toggles whether -all automatically includes
system applications; the default is to include system apps)
( is the list of applications to be backed up. If
the -all or -shared flags are passed, then the package
list is optional. Applications explicitly given on the
command line will be included even if -nosystem would
ordinarily cause them to be omitted.)

adb restore – restore device contents from the backup archive

adb help – show this help message
adb version – show version num

scripting:
adb wait-for-device – block until device is online
adb start-server – ensure that there is a server running
adb kill-server – kill the server if it is running
adb get-state – prints: offline | bootloader | device
adb get-serialno – prints:
adb get-devpath – prints:
adb status-window – continuously print device status for a specified device
adb remount – remounts the /system partition on the device read-write
adb reboot [bootloader|recovery] – reboots the device, optionally into the bootloader or recovery program
adb reboot-bootloader – reboots the device into the bootloader
adb root – restarts the adbd daemon with root permissions
adb usb – restarts the adbd daemon listening on USB
adb tcpip – restarts the adbd daemon listening on TCP on the specified port
networking:
adb ppp [parameters] – Run PPP over USB.
Note: you should not automatically start a PPP connection.
refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1

[parameters]

– Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ ]
can be interpreted in several ways:

    • If is not specified, both /system and /data partitions will be updated.
    • If it is “system” or “data”, only the corresponding partition
      is updated.

environmental variables:
ADB_TRACE – Print debug information. A comma separated list of the following values
1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
ANDROID_SERIAL – The serial number to connect to. -s takes priority over this if given.
ANDROID_LOG_TAGS – When used with the logcat option, only these debug tags are printed.

C:>

Como  se puede apreciar en las lineas anteriores , existe infinidad de opciones para esta versatil  utilidad , pero no se preocupe porque vamos a recopilar los principales comandos más utilizados para realizar tareas básicas de configuración avanzada de sistemas Android.

 

Comandos básicos de ADB

adb devices

Este comando nos muestra en pantalla la lista de dispositivos conectados en modo adb a nuestro ordenador. Es el primer comando que debemos ejecutar ya que si nuestro smartphone aparece es que la comunicación es correcta y los drivers son los adecuados.

adb push  <ruta>

Con este comando enviamos un archivo a nuestro dispositivo. Es muy práctico cuando las funciones de almacenamiento masivo no funcionan correctamente. Debemos especificar la ruta donde se guardará el archivo enviado.

adb pull

Justo el comando inverso. Nos permite copiar un archivo desde nuestro smartphone al ordenador.

adb install <aplicación.apk></aplicación.apk>

Este comando nos permite instalar aplicaciones en formato apk en nuestro dispositivo.

adb uninstall <aplicación.apk></aplicación.apk>

Nos permite desinstalar una aplicación, al contrario que el comando anterior.

adb shell

Nos carga un terminal que nos permite controlar nuestro dispositivo en modo texto. Es una opción para usuarios avanzados, pero muy práctica, por ejemplo, si tenemos problemas con los permisos.

adb reboot

Este comando reinicia nuestro dispositivo en modo normal, para cargar Android (o el sistema operativo instalado) automáticamente.

adb reboot-bootloader / reboot recovery

Con estos comandos podemos reiniciar el teléfono en el modo bootloader o en el modo recovery, según lo que necesitemos en cada momento.

Comandos básicos de Fastboot

Los comandos de fastboot sólo funcionan cuando nuestro dispositivo está en modo bootloader, por lo que si tenemos el dispositivo en modo adb estos comandos no funcionarán.

Siempre podemos utilizar el comando adb reboot-bootloader para que el dispositivo se reinicie automáticamente en el modo compatible con Fastboot.

fastboot devices

Su función es la misma que la de adb devices, es decir, comprobar que el dispositivo está correctamente conectado al ordenador y es detectado por esta herramienta.

fastboot oem unlock

Este comando es utilizado por muchos fabricantes como Sony o Google en sus dispositivos para liberar el bootloader y poder, por ejemplo, instalar un recovery o hacer root.

Este comando nos mostrará una serie de pasos (entre los que nos pedirá la clave secreta de desbloqueo) para proceder con la tarea.

fastboot flash

Este comando nos permite flashear cualquier archivo .img descargado para nuestro dispositivo.

4 sencillos ejemplos de flash más comunes son:

  • fastboot flash recovery recovery.img -> Flashea e instala el recovery en nuestro dispositivo.
  • fastboot flash boot boot.img -> Cambia el sistema de arranque (boot) de nuestro dispositivo, necesario para poder cargar el recovery en muchos casos.
  • fastboot flash radio radio.img -> Instala los nuevos controladores de radio.
  • fastboot flash system system.img -> Instala un nuevo sistema completo.

fastboot flashall

Este comando nos permite flashear automáticamente todos los archivos .img que tengamos descargados y copiados en la ruta de adb y fastboot. Muy útil cuando hay que flashear varios archivos en un dispositivo, por ejemplo, cuando ha quedado en modo soft brick.

fastboot boot <imagen>

Esta función nos permite cargar “en modo live” una imagen del sistema operativo para probarla sin necesidad de escribir los datos en la memoria interna. La suelen utilizar los desarrolladores para probar un nuevo kernel o recovery, aunque de cara al usuario la utilidad práctica está algo reducida.

Error splicing file:file too large


En efecto en un ordenador con sistema operativo Linux  en cualquier de sus variantes como Ubuntu, Lubuntu ,Fedora, etc.  puede  que copiando archivos  grandes hacia una unidad extraible USB termine dando error con el típico mensaje   “Error splicing file:file too large“.

Afortunadamente entender el motivo  del error es sencillo ,pues generalmente el problema se debe a que el disco de destino (es decir en la unidad extraible en el que desea copiar el archivo) está formateado con el sistema de fichero FAT32 , el cual  tiene un límite de tamaño de archivo de aproximadamente 4GB, por lo que efectivamente Linux cuando intenta copiar sobre una unidad destino formateada en fat32 el so. empieza copiando hasta que llega  aproximadamente a los 4GB , momento en el cual no puede continuar, pues el sistema de ficheros no lo permite, terminando dando error y abortándose la copia.

Curiosamente según el tipo de fichero que sea ,es posible que incluso abortando la copia con el mensaje Error splicing file:file too large , en caso de copias de ficheros de vídeo ( por ejemplo en formato mkv) , a pesar de esto, incluso con el error puedan ser reproducibles parcialmente ( es decir, sin poder reproducirse hasta su totalidad).

Afortunadamente para resolver este problema, la solución es bien sencilla pues bastara en volver a  formatear su disco de destino a EXT3, EXT4 o NTFS.

Mientras que FAT, FAT32 y exFAT se utilizan en memorias USB y tarjetas SD , NTFS es   utilizado sobre todo por discos duros, lo cual no significa  que ntfs no  deba usarse también en unidades extraibles USB: todo lo contrario ,pues por las razones que vamos a ver , ntfs tambien deberia ser  la mejor opción para unidades  extraibles usb.

NTFS (New Technology File System) es el sistema de archivos que Windows utiliza por defecto,  (de hecho windows sólo puede ser instalado en una unidad con este sistema),Su adaptación no es casual pues , ntfs  conlleva  múltiples ventajas:

  • Como hemos comentado su límite de tamaño de archivos es de 16 TB,  ( los volúmenes pueden llegar a tener 264 TB cada uno)
  • Se pueden configurar los permisos de acceso a un archivo (vital para un sistema operativo).
  • Permite cifrar archivos.
  • Permite nombres de archivos largos.
  • Se recupera más fácilmente de errores si el ordenador se cuelga

Vemos pues para soslayar el problema “Error splicing file:file too large”  y la unidad destino esta formateada en otro formato ,  tendremos  que  formatear en NTFS  pues así no habrá problemas  a  la hora de copiar estos ficheros.

 

FORMATEO DESDE WINDOWS

En realidad formatear en NTFS un unidad USB con Windows 10 es muy fácil:

  • Pinche con el botón DERECHO del ratón en el menú Inicio de Windows y elige Explorador de archivos.
  • En la ventana que se abre haga clic a la izquierda en Este equipo.
  • A la derecha verá las unidades de disco duro, particiones, discos o pendrives USB o CD/DVD que tenga tu PC. Seleccione la unidad que quiere formatear pinchando en ella con el botón izquierdo. Luego haz clic encima con el botón DERECHO y elige Formatear. (!IMPORTANTE !: -Es obvio que debe elegir con mucho cuidado la unidad pues formatearla borrará por completo todo lo que haya en ella.
  • Al elegir la opción de formateo se abre su ventana de propiedades.Defina así las opciones siguientes que incluye:
      • Sistema de archivos:Pincha en la lista desplegable de abajo y elija  NTFS.
      • Tamaño de unidad de asignación. Lo normal es que deba mantener el tamaño que te indique por defecto la ventana de formateo.
      • Etiqueta del volumen :Escriba un nombre que describa lo que hay o habrá en ese disco o USB. No es una opción obligatoria pero sí recomendable.
      • Opciones de formato:Desactive la casilla de Formato rápido haciendo clic en ella. Así obligara a que Windows chequee el disco o USB e intente reparar de forma automática posibles errores que tenga por lo que puede ahorrarle problemas futuros o hasta pérdidas de datos. Por cierto mantener el formato rápido acelera el proceso pero se salta la comprobación del disco o USB.
  • Finalmente pulse Iniciar cuando acabes de configurar esas opciones. Confirme con Aceptar el aviso de que se borrará todo lo que haya en esa unidad.
  • El formateo tardara más o menos dependiendo del tamaño de la unidad seleccionada, la velocidad de su PC y si ha elegido o no la opción rápida. Acepte y cierra la ventana cuando termine.

 

FORMATEO DESDE LINUX

Ahora veremos como  soslayar el problema ” Error splicing file:file too large”  y la unidad destino esta formateada en otro formato ,   formateando  en NTFS  desde el propio Linux  para que no haya problemas  a  la hora de copiar ficheros de mas de 4GB

Lo primero que tenemos que tener claro a la hora de formatear una unidad es la ruta en la que se encuentra en el sistema.

Para ver que dispositivo es el que vamos a usar escribimos en Terminal (Abrir Terminal presionando Ctrl + Alt + T) :

Para eso, solo tendremos que escribir en el Terminal el comando:

df

Este comando nos mostrará todos las particiones y discos que tiene actualmente el ordenador conectados al sistema. Como podremos observar, los sistemas basados en Ubuntu 16.04 asignan cómo nombre de partición de la siguiente forma sdaX donde la X es un número de partición, por lo que si tenemos una unidad USB  conectado , el nombre será muy similar a sdaX ( por e ejemplo sdb3).

Una vez hayamos encontrado la memoria USB desde el terminal, tenemos que desmontarlo del sistema para que podamos formatearlo. Para realizar esta tarea tendremos que ejecutar el siguiente comando:

sudo umount /dev/sdb3

Ahora ya lo tenemos preparado para formatear. Por lo que tendremos que escribir la siguiente línea de código en el terminal.

sudo mkfs.vfat -F 32 -n "Nombre_pendrive" /dev/sdb3

Quizá no entiendas nada de lo que hemos puesto en esa parte de código, pero aquí estamos para resolver estas dudas:

  • mkfs.vfat: Es el programa de ejecución de la herramienta del terminal para formatear unidades del sistema.

  • -F 32: Esto le indica al sistema que el formato ha de realizarse con el sistema de archivos de Fat32.

  • -n “Nombre_pendrive”: Este será el nombre que aparecerá cada vez que conectemos el USB al ordenador.

  • /dev/sdb3: Esta tiene que ser la ruta completa donde se sitúa la memoria USB que queremos formatear.

 

Es posible formatear   en diferentes formatos:

  • Formatear USB con Extended File System (Ext) :Este es el sistema de archivos preferido por Linux.

<pre “>

sudo mkfs.ext4 /dev/sdb3

  • Formatear USB con FAT (File Allocation Table) 
 sudo mkfs.vfat /dev/sdb3 
  • Formato de formato USB con NTFS (Sistema de archivos de nueva tecnología)
 sudo mkfs.ntfs /dev/sdb3 

Por ultimo, salimos de Terminal con:

exit

Esta es la salida de la ejecución de estos comandos:

[email protected]:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 214372 0 214372 0% /dev
tmpfs 47028 2948 44080 7% /run
/dev/sda1 38192692 11567744 24655132 32% /
tmpfs 235132 0 235132 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 235132 0 235132 0% /sys/fs/cgroup
tmpfs 47024 12 47012 1% /run/user/1000
/dev/sdb1 15108880 41156 15067724 1% /media/carlos/KINGSTON16G

[email protected]:~$ sudo umount /dev/sdb1
[sudo] password for carlos:

[email protected]:~$ sudo mkfs.ntfs /dev/sdb1
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 41%100% – Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
[email protected]:~$

 

No esta de mas recordar que debe cambiar la identificación del dispositivo USB en los comandos anteriores o desde el interfaz grafico ,En el  ejemplo en un viejo portatil hp con Lubuntu se ha usado sdb3 , pero no necesariamente sera el mismo identificador que tengan sus unidades.

Como puedes observar, es un proceso muy sencillo pero tiene las complicaciones de saber que es lo que hace cada cosa y cual es la dirección correcta que queremos formatear, ya que si nos equivocamos puede ser fatal para nuestro sistema operativo.

 

 

 

Nueva protección antimalware de Windows


Windows Defender   en su características contra amenazas  avanzadas , como novedad , ofrece una característica muy interesante de protección antimalware : Bloqueo a primera vista ,característica  que ofrece una nueva  manera de detectar y bloquear nuevo malware en segundos.

Desgraciadamente no hay ninguna configuración individual específica en System Center Configuration Manager para habilitar o deshabilitar el bloqueo a primera vista. Se habilita de manera predeterminada cuando la configuración de requisitos previos está definida correctamente  (donde es  de destacar que el antivirus windows defender este activo y que la licencia del  sistema operativo este vigente).

En la mayoría de los casos, esta configuración de requisitos previos se habilita de manera predeterminada así que esta característica se ejecutara sin necesidad de intervención alguna ( de hecho se puede usar la configuración de Directiva de grupo para confirmar que la característica está habilitada ), pero si no esta seguro, es muy sencillo confirmar que el bloqueo a primera vista está habilitado con la aplicación de seguridad de Windows  como vamos a ver a continuación.

Bloqueo a primera vista está habilitada automáticamente siempre y cuando la protección basada en la nube y el envío automático de muestras estén activados.Obviamente también suponemos que Windows Defender esta activo para lo cual debe tener el equipo con licencia del sistema operativo  activa y disponer de conectividad: 

En efecto, se puede confirmar que el bloqueo a primera vista está habilitado en la configuración de Windows , Para confirmar que el bloqueo a primera vista está habilitado en clientes individuales basados en windows 10, puede seguir estos pasos:

  1. Abra la aplicación de seguridad de Windows, y haga clic en el icono de escudo en la barra de tareas.

  2. Haga clic en el icono de protección contra Virus y contra amenazas (o en el icono de escudo en la barra de menús de la izquierda)

  3. A continuación, haga clic en configuración de protección contra Virus y amenazas:                                       

  4. Confirme que la Protección basada en la nube y el Envío de muestras automático se han establecido en Activado.(en la imagen del ejemplo se ve en un pequeño circulito en verde con la “v” de verificado

 

Por cierto ,en Windows 10, versión 1803, bloqueo a primera vista puede bloquear ahora no portátiles archivos ejecutables (por ejemplo, JS, VBS o macros), así como los archivos ejecutables.

 

Funcionamiento

Cuando el Antivirus de Windows Defender encuentra un archivo sospechoso pero no detectado, consulta en la nube de Azure el servicio  de protección de la nube. El back-end de nube aplica heurísticas, aprendizaje automático y análisis automatizado del archivo para determinar si los archivos son malintencionados o limpios.

Bloqueo a primera vista solo usa el back-end de protección en la nube para los archivos ejecutables y portátiles que no son los archivos ejecutables que se descargan de Internet o que se originan desde la zona de Internet. Se comprueba un valor de hash del archivo .exe a través del back-end de la nube, para determinar si se trata de un archivo no detectado anteriormente.

Si el back-end de nube no puede determinarlo, Antivirus de Windows Defender bloqueará el archivo y se cargará una copia en la nube. La nube realizara un análisis adicional para llegar a una determinación antes de que permita la ejecución del archivo o lo bloqueará en todos los encuentros futuras, dependiendo de si se determina que el archivo es malintencionado o seguro.

En muchos casos, este proceso puede reducir el tiempo de respuesta de  nuevo malware de horas a segundos.

 

Validar las conexiones entre la red y la nube

Existe una  serie de url’s asocidos a este  servicio de Windows Deefender a los que debe asegurarse el acceso desde el equipo  ( es decir es una especie de lista blanca las direcciones URL) ,

En la tabla siguiente se  pueden ver  los serviciosa, las descripciones   y por supuesto sus direcciones URL asociadas a los que la red tiene que poder conectarse. 

Servicio Descripción Dirección URL
Servicio de protección entregada en la nube del Antivirus de Windows Defender, también conocido como Microsoft Active Protection Service (MAPS) Usado por el Antivirus de Windows Defender para proporcionar protección entregada en la nube *. wdcp.microsoft.com
*. wdcpalt.microsoft.com
*. wd.microsoft.com
Servicio Microsoft Update (MU) Inteligencia de seguridad y las actualizaciones de productos *.update.microsoft.com
Inteligencia de seguridad de las actualizaciones de ubicación de descarga alternativa (ADL) Ubicación alternativa para las actualizaciones de inteligencia de seguridad de Antivirus de Windows Defender si la inteligencia de seguridad instalada desactualizadas (7 días o más) encuentra detrás de *.download.microsoft.com
Almacenamiento de envío de malware Cargar la ubicación de los archivos enviados a Microsoft a través del envío del formulario o el envío de muestra automático *.blob.core.windows.net
Lista de revocación de certificados (CRL) Usado por Windows al crear la conexión SSL a MAPS para actualizar la CRL http://www.microsoft.com/pkiops/crl/
http://www.microsoft.com/pkiops/certs
http://crl.microsoft.com/pki/crl/products
http://www.microsoft.com/pki/certs
Almacén de símbolos Usado por el Antivirus de Windows Defender para restaurar ciertos archivos críticos durante los flujos de corrección https://msdl.microsoft.com/download/symbols
Cliente de telemetría universal Usado por Windows para enviar datos de diagnóstico de cliente; Antivirus de Windows Defender lo usa para fines de supervisión de calidad de productos Esta actualización usa SSL (puerto TCP 443) para descargar manifiestos y cargar datos de diagnóstico en Microsoft, usando los siguientes puntos de conexión DNS:
  • vortex-win.data.microsoft.com
  • settings-win.data.microsoft.com

Por desgracia no podría usar un archivo de configuración automática de proxy (.pac) para probar las conexiones de red a estas direcciones URL por lo que tendrá que comprobar sus servidores proxy y cualquier filtrado de herramientas manualmente para garantizar la conectividad de red.

Para comprobar  si en ese equipo se llegan a estas url’s ,  Microsft proporciona la utilidad  mpcmdrun.exe que se identifica a sí mismo como el Microsoft Malware Protection Command Line Utility siendo  parte del Windows Defender de Microsoft.  Esta utilidad al conectarse a internet, puede parecer sospechoso, pero usualmente es un programa del propio Microsoft  que solo funcionará en Windows 10, versión 1703 o posterior.

Use el argumento siguiente con la utilidad de línea de comandos (mpcmdrun.exe) de Antivirus de Windows Defender para comprobar que la red puede comunicarse con el servicio de nube de Antivirus de Windows Defender:

MpCmdRun -ValidateMapsConnection

Para ejecutar esta utilidad , deberá abrir un interfaz de comandos   ( ejecutar comando cmd)   y  ejecutándolo como administrador del símbolo del sistema(hagz clic con el botón secundario en el elemento del menú Inicio, en Ejecutar como administrador y en  en el mensaje sobre permisos.  Por cierto , para ejecutarlo debería situarse en  %ProgramFiles%\Windows Defender\  ( es decir normalmente en  C:\Program Files\Windows Defender\:

 

Si por alguna razón falla, tendrá  que asegurarse de que no existen reglas de filtrado de red o firewall que puedan denegar el acceso a estas direcciones URL, Incluso puede que tenga que crear una regla de permiso específicamente para ellas

Comprobado  que su equipo tiene conectividad con los servidores de Windows Defender,  podemos probar la efectividad del proceso  descargándonos un archivo de prueba: de este modo el Antivirus de Windows Defender detectará y bloqueará si está conectado correctamente a la nube.

Obviamente este archivo no es un fragmento real de malware. Es un archivo falso que está diseñado para probar si está conectado correctamente a la nube y si funcionan adecuadamente los servicios de Windows Defender antimalware

El ejemplo se puede descargar  visitando el siguiente vínculo:

http://aka.ms/ioavtest

Si estás conectado correctamente, verá una advertencia de notificación de Antivirus de Windows Defender:

 

Si usa Microsoft Edge o Internet Explorer  también verá un mensaje de notificación muy similar al anterior

Si le interesa ver el detalle ,también verá una detección de amenazas en cuarentena en la sección de historial de exámenes en la aplicación de seguridad de Windows:

  1. Abra la aplicación de seguridad de Windows haciendo clic en el icono de escudo en la barra de tareas o buscando Defender en el menú Inicio.
  2. Haga clic en el icono Protección contra virus y amenazas (o en el icono de escudo de la barra de menús de la izquierda) y, después, en la etiqueta Scan history:
  3. En la sección Quarantined threats, haga clic en la etiqueta Ver historial completo para ver el malware falso detectado:

 

Asimismo , el registro de eventos de Windows también mostrará el id. de evento 2050 del cliente de Windows Defender.

Para  terminar, windows defender, se encargara de eliminar el propio fichero descargado de prueba pues este contenía el malware que ha sido detectado  , analizado  y puesto en cuarentena  por este nuevo servicio de Windows Defender:

 

Por cierto las versiones de Windows 10 anteriores a la versión 1703 tienen una interfaz de usuario diferente pero en esencia las opciones de estos menús de windows defender son muy similares

 

Mas información en https://docs.microsoft.com/es-es/windows/security/threat-protection/windows-defender-antivirus

 

Cómo borrar cualquier aplicación en Android sin root


El proceso de rooteo de un terminal   destinado  a conceder permisos de super-usuario al usuario con el que se accede a  Androud esta destinado a usuarios un poco más avanzados y que saben lo que hacen, porque con una modificación del sistema incorrecta podemos dejar nuestro sistema corrupto pero en efecto una vez que tengamos acceso a root podemos suprimir aquellas aplicaciones que el fabricante haya pre-instalado    así como incluso algunas  propias de aplicaciones de Android   que vengan incluidas con el sistema operativo  y que no necesitamos ( por ejemplo  salvapantallas , animaciones , clientes de correo, etc. )  , lo cual   en muchos  casos nos permitirá  rebajar en gran medida  no  solo  la tasa de ocupación de la memoria interna    sino  también el numero de procesos que tenemos corriendo en nuestro terminal contribuyendo así a mejorar el rendimiento del terminal

Sin embargo como ya adelantábamos, no todo es perfecto al tener privilegios de root   , sobre todo cuando se desconocen los riesgos, pues llegar a este punto  también tiene sus inconvenientes :

  1. Se pierde la garantía: es decir ,realizando el proceso de root en el terminal e instalando las aplicaciones necesarias, se anula la garantía del fabricante ( a no ser  que el fabricante lo comercialice ya rooteado ) . Afortunadamente  no obstante el proceso de rooteo en casi todos los terminales es revertible.  

  2. Se pierden las actualizaciones vía OTA: Al hacer root estamos modificando el sistema, por lo que en los pasos previos a una actualización OTA se detectará que el sistema ha sido modificado, inhabilitando el servicio de actualización oficial. En algunos casos podrá llevar a cabo la actualización, pero lo más probable es que se elimine el root del terminal.

  3. Disminuye la seguridad del sistema: El fin principal de hacer root a un terminal es poder dar permisos de super-usuario ( es decir sin restricciones  )  a determinadas aplicaciones para que realicen cambios en el sistema lo cual puede generar bastantes problemas  cuando desde las propias aplicaciones se tiene acceso a todo el sistema de ficheros  y proceso en cursos sin limitaciones .

  4. Puede crear conflicto con algunas aplicaciones: Como cualquier modificación de software, este proceso puede entrar en conflicto con otras aplicaciones. 

  5. Inestabilidad del sistema: Aunque por norma general este proceso se realiza para mejorar el sistema, si no sabemos bien lo que hacemos podemos provocar mucha inestabilidad en el sistema, haciendo que este disminuya su rendimiento o aumente su uso de batería. Por ejemplo, si no prestamos atención al dar permisos podemos dotar de privilegios a una aplicación para que consulte nuestra ubicación constantemente, cualquier aplicación del tiempo por ejemplo, con lo que esto aumentará el uso de batería y disminuirá el rendimiento al tener constantemente un proceso realizando operaciones en nuestro sistema.

Vemos que rootear un terminal tiene  sus peligros , pero ¿y  si pudiésemos  tener las ventajas del rooteo   pero sin disminuir la seguridad,ni perder la garantía ni las actualizaciones?  Pues en efecto se puede  como a vamos a ver a  continuación  

 

Una de las utilidades  mas interesantes del rooteo es desinstalar aplicaciones que no podemos  quitar desde el propio dessistalador al estar incluidas enla rom del so  bien porque se han incluido por el propio fabricante o bien porque vengan incluidas en el propio SO

Para desistalar estas aplicaciones “especiales ” vamos a necesitar la aplicación App Inspector, disponible gratis en la Google Play Store. Esta app sirve para inspeccionar las propiedades detalladas de todas las aplicaciones instaladas en su dispositivo. Estas propiedades están disponibles desde  PackageManager interno de Android, por lo general muchas de ellas no están expuestas por la interfaz de usuario por defecto del sistema (como el código de la versión, Target SDK versión, etc)  de modo que esta app es util  no solo para los desarrolladores   sino para  usuarios curiosos por igual.

 

Captura de pantalla

 

Al abrirla, entonces podremos ver el nombre de ‘paquete’ de cualquiera de las aplicaciones que estén instaladas en nuestro teléfono inteligente. Es decir, que lo que deberíamos hacer con ella es identificar cuál es el ‘nombre interno’ de la app pre-instalada de la que nos queremos deshacer. Y a partir de aquí podremos continuar.

Captura de pantalla

Esta interesante aplicación   incluso no  da acceso a información del bloatware preinstalado, para que sin necesidad de tener el móvil rooteado podemos  desinstalarlo   ,como vamos a  ver a continuación mediante la utilidad  adb

Si sólo necesita el ADB no hay necesidad de instalar el SDK completo pues es posible  instalar una versión versión mínima de dicha herramienta.

El  ADB es básicamente un software o programa de PC a través del cual se puede darle órdenes especiales al móvil, usando comandos de texto. Estos comandos incluyen órdenes básicas que se usan en el sistema Linux (copiar, pegar, mover, son algunos ejemplos) así como una variedad de comandos específicos para desarrolladores.

Los comandos ADB se pueden mandar al teléfono cuando el mismo está encendido/arrancado, y también cuando se encuentra en modo recovery. La herramienta ADB se puede utilizar para enviar comandos hacia dispositivos con y sin root.

Si tiene instalado Android Studio , este se instala por defecto  junto con el resto del software , pero  tendremos después que invocarlo o donde hayamos almacenado los archivos binarios de ADB, para lo cual pulsaremos Shift y clic derecho en la carpeta correspondiente, para que la consola de comandos se abra exactamente ahí.

Si no tiene el adb instalado , siga estos pasos:

  • Descargue la ultima versión disponible(en este momento la 1.4.3)   para 32 y 64 bits para Windows en el foro  de xda-developes http://forum.xda-developers.com/showthread.php?t=2317790.
  • Ejecute el instalador haciendo doble clic en  minimal_adb_fastboot_v1.4.3_setup.exe
  • Instale normalmente siguiendo las instrucciones.
  • Se instalara: en C:\Program Files (x86)\Minimal ADB and Fastboot
  • Al finalizar se abrirá la ventana a través de la cual podrás enviar los comandos a tu móvil.

 

Ahora tendremos que abrir nuestro ordenador, y con el móvil conectado por el cable USB, abriremos Símbolo del sistema mediante el comando  cmd

 Hecho esto, tendremos que irnos  a  la ruta  C:\Program Files (x86)\Minimal ADB and Fastboot     e   introducir el  comando :

  • adb shell pm disable-user –user 0  <package_to_disable>
  • package_to_disable>  : indica  el nombre de paquete de la aplicación que queremos eliminar de nuestro dispositivo  y que hemos conseguido con la aplicación App Inspector )

En el  siguinte ejemplo  con el citado comadno vamos a desactivar el instalador de facebook :

Ahroa en el caso de que quisiéramos recuperar unlistado de las aplicaciones que hemos deshabilitado siguiendo este método, entonces tendríamos que ejecutar el siguiente comando:

  • adb shell pm list packages -d

Con este  comando  se mostrarán las aplicaciones que han sido deshabilitadas , dpnde como vemos  donde ya se ha incluido el instalador de la app de facebook que desactivamos con el comando del ejemplo anterior:

Para habilitar  una app , el comando que tendríamos que ejecutar es el siguiente, sustituyendo , de nuevo, por el nombre de paquete que corresponda

  • adb shell pm enable

Algunos ejemplos  de  app que se pueden desinstalar o congelar sin peligro:

  • Calculadora: No es necesaria, aunque tal vez si la borra  nos convenga en otro momento  instalar otra  alternativa.
  • Calendario: Igual que la calculadora, esta aplicación no afectará al funcionamiento de tu smartphone.
  • Cámara: La aplicación de Cámara no supondría ningún problema para su terminal para  ser desinstalada, pero   personalmente nunca la eliminaria  puesto que si desistalamos no podremos acceder a la cámara.
  • Correo: Si no le interesa el cliente de correo nativo de Android siempre podemos desinstalarlo y con ello liberarnos memoria interna, Sobre todo tiene sentido cuando usamos otros gestores de correo como gmail o el propio outlook  para este cometido.
  • Fondos Animados: Esta es una de las funciones que, personalmente, veo más inútiles. Mediante estos desinstaladores podremos borrar los fondos animados, aunque no vienen todos en un pack. Algunos de estos fondos son: Burbujas, Agujero Negro, Humo Mágico o Phase Beam. Dependiendo del dispositivo y del fabricante  incluso puede haber muchos más.
  • Galería: si utilizá alguna alternativa, como Quickpic, tal vez no necesita la galería por defecto (o la que os haya instalado el fabricante).
  • Gmail: Por la misma razón  que exponíamos anteriormente con el cliente de correo nativo , si no le interesa el cliente de correo de Google puede desinstalarlo sin problemas.
  • Google+: Esta red social de Google cada  vez tiene menos adeptos desde que Google decidió dejarla  solo para  clientes empresariales.     Sin duda , si no es un lciemte empresarial , lo mejor  es desinstalarla.
  • Google Chrome: Si sois usuarios de otros navegadores, tal vez no queráis tener en vuestro smartphone el navegador de Google.
  • Google Maps: Se puede borrar sin que tenga ningún efecto en el rendimiento del terminal.La aplicación de mapas de Google  está rastreando la ubicación todo el tiempo, para lanzar notificaciones cuando se acerca a un sitio u otro  por lo que su so en primer plano consume muchísima batería, y en segundo plano, si tiene el GPS activado, también
  • Google Play: Google Play y sus diversas aplicaciones (Music, Libros, Kiosco, Películas y Games) se pueden desinstalar sin efectos graves, aunque siempre es recomendable tener una tienda alternativa.
  • StreetView: Si hemos borrado Google Maps esta app no nos servirá para nada puesto que es complementaria.
  • YouTube: La aplicación de YouTube no afecta en nada al sistema.
  • Google Calendar: La aplicación de calendario de Google no deja de sincronizar en segundo plano, y además sabe perfectamente qué estás haciendo, cuándo y dónde lo estás haciendo. La única forma de limitarlo es o bien desactivando la sincronización automática o deshabilitándola / desinstalándola.
  • Google Now:La aplicación de Google es el asistente virtual que, hasta que llegue Google Assistant, hay instalado en todos los terminales. Dicha app no deja de actualizarse en segundo plano, obteniendo información del tráfico, del tiempo, noticias, información de interés… Eso consume muchísima batería sin que nos demos cuenta. Si no usas el desbloqueo por voz o no eres demasiado fan de Google Now, no pierdes nada por desinstalarla de tu terminal.
  • Google Photos:Aunque es una de las apps más útiles que nos podemos encontrar en el panorama Android, la aplicación de sincronización en la nube y galería de Google consume muchísima batería. Cada vez que hacemos una foto o un vídeo y estamos conectados a una red WiFi, Google Fotos se pone a sincronizar en segundo plano y a subir todos los nuevos archivos a la nube. Si no la tenemos bien configurada, puede llegar a consumir mucha batería. Sobre todo , si no se hace uso de su servicio, lo mejor es deshabilitarla o desistalarala

Como ver la previsión del tiempo desde una Raspberry Pi


Wttr.in es un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

El servicio wttr.in utiliza  visualización de  wego y diferentes fuentes de datos para obtener información de la previsión del tiempo.

Lo puede ver funcionando aquí: wttr.in desde  un navegador,   pero lo mas interesante de esta utilidad ,  es que  se puede lanzar desde una consola  en nuestra Raspberry pi , para  lo que únicamente  necesitaremos:

  • Conectividad  bien vía WIFI o por cable ethernet
  • Tener instalado el curl 
  • No es fundamental usar la ultima versión Rasperry Pi 3, pues esta utilidad funciona  perfectamente con la versión 2 e incluso en versiones anteriores.

 

Instalar curl en un Raspberry Pi

El comando curl es bastante útil y flexible siendo su  objetivo servir como  herramienta de transferencia de  datos, sin interacción del usuario, hacia o desde un servidor, utilizando uno de los muchos protocolos admitidos.

Si tiene PHP 5 instalado en la Rasperry Pi 3,    y no tiene instado curl cuando instaló Raspbian  ,para ejecutar la utilidad de previsión del tiempo se requiere . Para ello puede hacer lo siguiente:

sudo apt-get update

Y entonces:

sudo apt-get install php5-curl

Estos dos comandos únicamente son los que  realmente todo lo que tenemos que lanzar en el peor de los casos  ya  que puede que  tenga instalado curl en la    Rasperry Pi ,.

 

Ejecución de wttr

Para ver la previsión de tiempo de wttr en la Raspberry Pi  lo podemos  hacer accediendo  desde el navegador Web  Chromiun  e ir a la url http://wttr.in  , pero es mucho mas interesante y rápido (y obtendremos el mismo resultado)  si hacemos la llamada  desde un shell.

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio , abriremos la consola de terminal desde la propia Rasperry Pi ,  y  ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24  en lugar de la marcada por defecto de 80 x25 .

 

Ahora pulsaremos Aceptar  y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl  wttor.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

Como es de suponer ,la  ubicación real  se obtiene  de su dirección IP real    tomando  no solo la localización sino la zona horaria  y la hora .

 

Si quiere obtener la información meteorológica para un lugar específico  también se puede Agregar la ubicación deseada a la URL en su solicitud como esta:

$ curl wttr.in/London
$ curl wttr.in/Moscow

Recuerde , como hemos hablado  que si se omite el nombre de la ubicación, obtendrá el informe de su ubicación actual, basado en su dirección IP.

También se puede utilizar códigos del aeropuerto de 3 Letras con el fin de obtener la información del tiempo en un determinado aeropuerto:

$ curl wttr.in/muc      # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham      # Weather for IATA: ham, Hamburg Airport, Germany

Digamos que quieres obtener el tiempo en un lugar geográfico que no sea un pueblo o ciudad – tal vez una atracción en una ciudad, un nombre de montaña o en algún lugar especial. Agregar el carácter antes del nombre para ver nombre ubicación especial antes de que el tiempo es entonces obtenido:~

$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro

Hay muchos ejemplos, debajo de la salida del tiempo en que se muestra los resultados de geolocalización de buscar la ubicación:

Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648] 

También puede utilizar (directa) de direcciones IP o nombres de dominio (con el prefijo) para especificar una ubicación:@

$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru

Por ultimo también ofrece  información detallada en línea, para lo cual  solo se necesita acceder a la página de /:help :

$ curl wttr.in/:help
Mas información en  su sitio de Github https://github.com/chubin/wttr.in
A %d blogueros les gusta esto: