Alt1040. Noticias acerca de Internet, diseño, música, cine, opiniones, weblogs y medios

Es uno de los weblogs de tecnología más seguidos de la blogosfera hispana.

Bitelia. Blog de software, internet y servicios web

Software y aplicaciones para mejorar tu vida, guías de uso, trucos, listas, noticias y todo sobre tecnología.

Xataka. Publicación de noticias sobre gadgets y tecnología.

Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc.

Wwwhatsnew. Aplicaciones, marketing y noticias en la web.

Servicios que os pueden ser útiles para dibujar, gestionar tareas, hacer amigos, encontrar restaurantes...

Fayerwayer. Discusiones y opiniones de lo ultimo en tecnología y gadgets

Con secciones dedicadas a Internet, Software o Redes Sociales es un referente a nivel de tecnología en español.

Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

7 de octubre de 2020

¿Qué es Docker? breve introducción y conceptos básicos

Logo Docker
Docker ha sido una propuesta diseñada y desarrollada inicialmente por Salomón Hykes en la empresa "dotCloud" con el propósito de automatizar los procesos de integración continua (CI) y entrega continua (CD). A raíz de su potencia y facilidad de uso, fue liberado como proyecto de código abierto en el año 2013.


Desde su liberación en 2013, el proyecto ha ido creciendo y se ha consolidado como uno de los más importantes en GitHub con el mayor número de estrellas y de forks.

Empresas como Microsoft, IBM, RedHat, HP, entre otras, no tardaron en ver la potencia y valor de Docker y por ello, participan activamente en su desarrollo y crean soluciones propias partiendo de Docker.

DevOps


¿qué es Docker?


Es un proyecto open source utilizado principalmente para el despliegue de aplicaciones en espacios virtualizados. Estos espacios son también conocidos como contenedores.

Es una tecnología muy extendida en la industria del desarrollo de software, siendo una práctica muy frecuente en los equipos de desarrollo. Estos usan Docker para poder desplegar fácil y rápidamente las aplicaciones que crean.

¿qué es un contendor?


Es un espacio virtual (hay diferencias importantes con las máquinas virtuales) en dónde instalamos todo el software necesario para que podamos ejecutar las aplicaciones que vamos desarrollando.

Podemos tener un contenedor con una configuración muy específica. Por ejemplo, podríamos crear un contenedor que incluya Apache, PHP y MySQL con versiones muy concretas y lo podemos desplegar facilmente en otros sistemas en los que necesitemos que se encuentre en ejecución esta aplicación (estas plataformas sólo necesitan correr un servicio de Docker).

El objetivo de los contenedores es incluir todo lo necesario para que una aplicación se pueda ejecutar en cualquier plataforma sin tener que cambiar nada.

¿qué es una imagen?


Un contenedor sólo es posible crearlo a partir de una imagen.
Una imagen, a grandes rasgos, es una plantilla que nos permite crear contenedores. Incluye el diseño y la configuración necesaria para poder crear contenedores concretos.

De forma general, una imagen define el software que vamos a instalar en el contenedor y que versiones tienen que tener. Es decir, las imágenes siguen un modelo y sintaxis estándar.

A modo de ejemplo, podríamos hacer un símil en el mundo del desarrollo diciendo que "una imagen sería una clase y un contenedor el objeto propiamente dicho".

Estos dos elementos son imprescindibles para poder utilizar Docker.

Caraceterísticas importantes de Docker


  • las imágenes y los contenedores se gestionan de una forma centralizada por medio de un servicio que se encuentra en ejecución en el sistema operativo. Este servicio es conocido como "dockerd".

    En sistemas basados en linux (en las distribuciones más recientes) este servicio se encuentra gestionado, como muchos otros, por systemd.

    Lo que normalmente hacemos es utilizar el cliente de Docker (comando docker) para poder conectarnos con este servicio y poder gestionar imágenes y contenedores.

    Este comando se encarga de conectarse al servicio de docker y realizar todas las operaciones de administración sobre este servicio como son la gestión de imágenes y contenedores, configuraciones de red, etc.

  • existen multitud de imágenes que tienen configuraciones estándar.

    Es bastante habitual encontrarnos con equipos de desarrollo que van a necesitar el mismo stack tecnológico (Apache, PHP, MySQL por ejemplo). Para ello existe un repositorio centralizado conocido como Docker Hub (https://hub.docker.com/) en donde se encuentran cientos de imágenes registradas que podemos descargar y posteriormente utilizar para crear nuestros contenedores partiendo de esas imágenes.

  • los contenedores admiten múltiples configuraciones, incluyendo la asignación de contenedores a distintos segmentos de red. Esto nos permite, entre otras cosas, crear contenedores que se van a ver entre ellos partiendo de un contexto de red común.

  • en docker también podemos crear clusters de contenedores, crear volúmenes y otras muchas funcionalidades que facilitan la actividad de un DevOps.

Diferencias Contenedores vs Máquinas Virtuales


Las máquinas virtuales han sido la forma estándar y tradicional de desplegar múltiples aplicaciones con diferentes infraestructuras en una misma máquina o sistema.

Las máquinas virtuales se basan en un Hypervisor que es un software que permite la instalación de otros sistemas operativos (invitados) sobre el sistema anfitrión.

Las máquinas virtuales tienen una desventaja importante, cada sistema invitado es completamente independiente del sistema anfitrión, tiene su propia gestión de recursos, procesos, tareas, etc. Esto dificulta la gestión de las aplicaciones que instalamos en estos sistemas invitados.

En cambio docker, lo que propone es no instalar un sistema operativo invitado sino aprovechar las características que ya se encuentran disponibles en el sistema anfitrión. Esto es posible gracias al uso de un motor de Docker (Docker Engine).

Docker Engine es un servicio como cualquier otro que se encuentra en el sistema operativo anfitrión pero tiene la ventaja de que se pueden desplegar sobre este servicio diferentes contenedores y cada uno de estos contenedores va a ser completamente independiente de los otros, compartiendo la misma base (librerías, aplicaciones, etc) del sistema operativo.

Es mucho más liviano trabajar con imágenes y contenedores que trabajar con un sistema operativo completo, que es lo que hacemos con las máquinas virtuales con un hypervisor como por ejemplo VirtualBox o VMWare.




21 de noviembre de 2019

El lenguaje Go cumple 10 años

Golang
El pasado 10 de noviembre tuvo lugar el décimo aniversario de Go, un hito celebrado por la comunidad global de desarrolladores de este lenguaje de programación con conferencias como Gopherpalooza en Mountain View y KubeCon en San Diego, además de docenas de reuniones en todo el mundo.


Go, también conocido como Golang, es un proyecto de código abierto que combina la velocidad de desarrollo de un lenguaje interpretado como Python, con la eficiencia y seguridad de un lenguaje compilado como C o C++.

Fué creado en Google el mes de noviembre de 2009 por Rob Pike, Robert Griesemer y Ken Thompson, co-creador con Dennis Ritchie de Unix y del lenguaje de programación C.

Lo más destacado es que Go fué diseñado ex profeso para mejorar la productividad de máquinas con más de un núcleo, en red y enormes bases de código, lo que permite a los programadores escalar rápidamente tanto el desarrollo como la implementación de software.

A medida que el uso de Go ha ido creciendo (tiene más de un millón de usuarios en todo el mundo), se han construido más y más servicios básicos con él. Las aplicaciones populares de código abierto creadas en Go incluyen Docker, Hugo, Kubernetes. La plataforma de nube híbrida de Google, Anthos, también está construida con Go.





Hay más de un millón de desarrolladores que usan Go en todo el mundo, englobando la banca y el comercio electrónico, los juegos y los medios de comunicación, la tecnología y otras industrias, en empresas tan diversas como American Express, Capital One, Dropbox, IBM, Monzo, New York Times, Salesforce, Square, Target, Twitch, Uber y, por supuesto, Google.

Un claro ejemplo es la empresa argentina dedicada a compras digitales Mercadolibre que usa Go para escalar y modernizar su ecosistema de comercio electrónico, mejorar la rentabilidad y los tiempos de respuesta del sistema.

El equipo de desarrollo de MercadoLibre crea y mantiene sus APIs, compatibles con la mayor parte de proveedores en la nube, en base a soluciones de microservicios. Históricamente, la arquitectura de desarrollo de software de la compañía tenía como pilar Grails y Groovy respaldado por bases de datos relacionales. Sin embargo, este gran marco con múltiples capas pronto se encontró con problemas de escalabilidad.

La conversión de esa arquitectura heredada a Go simplificó esas capas intermedias y produjo grandes beneficios de rendimiento. Por ejemplo, un servicio Go ahora puede ejecutar 70.000 solicitudes por máquina con solo 20 MB de RAM.

"Go fue maravilloso para nosotros", explica Eric Kohan, Gerente de Ingeniería de Software en MercadoLibre. "Es muy potente y fácil de aprender, y con la infraestructura de back-end ha sido excelente para nosotros en términos de escalabilidad".

El uso de Go permitió a MercadoLibre reducir el número de servidores que usan a un octavo del número original (de 32 servidores a cuatro), además cada servidor puede operar con menos potencia (originalmente cuatro núcleos de CPU, ahora hasta dos núcleos por procesador).

Con Go, los tiempos de compilación de MercadoLibre son tres veces más rápidos y su conjunto de pruebas se ejecuta 24 veces más rápido. Esto significa que los desarrolladores de la compañía pueden hacer un cambio, luego compilar y probar ese cambio mucho más rápido que antes.

Hoy, aproximadamente la mitad del tráfico de Mercadolibre es manejado por las aplicaciones Go.

Puedes leer más sobre el éxito de MercadoLibre con Go en el siguiente estudio: MercadoLibre crece con Go

Gracias al crecimiento de Go, se ha creado un nuevo centro para desarrolladores de Go: go.dev

Comienza a aprender:


31 de marzo de 2019

Llega Code Jam 2019, la competición de programación de Google

Codejam 2019
Code Jam es una iniciativa organizada por Google que reta a los programadores de todo el mundo a poner a prueba sus habilidades resolviendo múltiples rondas de problemas de algoritmia. Se permite el uso de cualquier lenguaje de programación y entorno de desarrollo para dar solución a estos problemas.


En esta temporada, se presentan problemas algorítmicos desafiantes (algunos de ellos son interactivos) para la comunidad global de programadores.

Cada año, el equipo de ingeniería de Code Jam y un grupo exclusivo de colaboradores de Google dedican miles de horas combinadas en la creación, prueba y publicación de algunos de los problemas algorítmicos más difíciles del mundo.

Este año se ha incorporado la característica de "formular una pregunta", que ofrece a los participantes la oportunidad de interactuar con los ingenieros de Code Jam durante las rondas en línea. También se están introduciendo nuevos conceptos, como la capacidad de probar una solución en sus servidores, así como proporcionar certificados a los competidores.

La ronda de clasificación se lleva a cabo el 5 de abril (regístrate aquí).
De las decenas de miles de participantes en el concurso, solo los 25 primeros calificarán para asistir el viernes 9 de agosto a la gran final en las oficinas de Google en San Francisco, Mountain View (California).

El nuevo Campeón del Mundo se llevará a casa $15,000, mientras que los 1.000 mejores competidores ganarán una camiseta de edición limitada de 2019.




Desafíos de la edición 2018 y ejemplos de resultados de uno de sus participantes

:

1- Rounding Error (5pts, 9pts, 11pts)


Enunciado del problema: Rounding Error, Problem

Respuesta » C++ (G++) code

#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

int solve(){
 int n, l;
 cin >> n >> l;

 int ans = 0;

 priority_queue pq;

 int left = n;
 rep(_,0,l){
  int c;
  cin >> c;
  left -= c;
  int res = 200 * c - n;
  while(res >= 0){
   res -= 2*n;
   ans++;
  }
  pq.push(res);
 }
 rep(i,0,left){
  int res = pq.top();
  pq.pop();
  if(res < -n){
   pq.push(-n);
   --i;
   continue;
  }
  res += 200;
  while(res >= 0){
   res -= 2*n;
   ++ans;
  }
  pq.push(res);
 }
 return ans;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": " << solve() << endl;
 }
}

2- Mysterious Road Signs (10pts, 20pts)


Enunciado del problema: Mysterious Road Signs, Problem

Respuesta » C++ (G++) code
#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

void solve(){
 int s;
 cin >> s;
 vi m(s), n(s);
 rep(i,0,s){
  int d, a, b;
  cin >> d >> a >> b;
  m[i] = d+a;
  n[i] = d-b;
 }
 
 map mm, nn;
 map mn;

 rep(i,0,s) mm[m[i]] = nn[n[i]] = mn[pii(m[i],n[i])] = 0;

 int ix = 0;
 trav(pa, mm) pa.second = ix++;
 ix = 0;
 trav(pa, nn) pa.second = ix++;
 ix = 0;
 trav(pa, mn) pa.second = ix++;
 
 vi mr(s), nr(s), mnr(s);
 rep(i,0,s){
  mr[i] = mm[m[i]];
  nr[i] = nn[n[i]];
  mnr[i] = mn[pii(m[i],n[i])];
 }

 vector ml(sz(mm)), nl(sz(nn)), mnl(sz(mn));
 rep(i,0,s){
  ml[mr[i]].push_back(i);
  nl[nr[i]].push_back(i);
  mnl[mnr[i]].push_back(i);
 }

 auto cnt = [&](int fr, int to, vi &v){
  return lower_bound(all(v), to) - lower_bound(all(v), fr);
 };

 auto good = [&](int fr, int to, int m1, int n1){
  int z = -1;
  if(mn.count(pii(m1, n1))) z = mn[pii(m1,n1)];
  int x = mm[m1], y = nn[n1];
  
  int res = cnt(fr,to, ml[x]) + cnt(fr,to, nl[y]);
  if(z >= 0) res -= cnt(fr,to, mnl[z]);

  return to-fr == res;
 };

 auto len = [&](int fr, int m1, int n1){
  int lo = 1, hi = s-fr+1;
  while(lo+1 < hi){
   int mi = (lo+hi)/2;
   if(good(fr, fr+mi, m1, n1)) lo = mi;
   else hi = mi;
  }
  return lo;
 };
 int rek = 0, num = 0;

 rep(i,0,s){
  int res = len(i, m[i], n[i]);
  if(i+res < s) {
   int j = i+res;
   res = max(res, max( len(i, m[i], n[j]),
       len(i, m[j], n[i]) ) );
  }
  if(res > rek){
   rek = res;
   num = 0;
  }
  if(res >= rek) ++num;
 }
 cout << rek << ' ' << num << endl;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": ";
  solve();
 }
}

3- Transmutation (15pts, 18pts, 12pts)


Enunciado del problema: Transmutation, Problem

Respuesta » C++ (G++) code
#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

ll solve(){
 int m;
 cin >> m;

 vi r1(m), r2(m);
 rep(i,0,m) cin >> r1[i] >> r2[i];
 trav(x, r1) --x;
 trav(x, r2) --x;

 vector g(m);
 trav(x, g) cin >> x;

 ll tot = 0;
 trav(x, g) tot += x;

 auto works = [&](ll y){
  vector gg = g;

  gg[0] -= y;

  rep(_,0,m-1){
   rep(i,0,m) if(gg[i]<0){
    if(gg[i] < -tot) return false;
    ll pr = gg[i];
    gg[i] = 0;
    gg[r1[i]] += pr;
    gg[r2[i]] += pr;
   }
  }
  trav(x, gg) if(x < 0) return false;
  return true;
 };

 ll lo = g[0], hi = tot+1;
 while(lo+1 < hi){
  ll mi = (lo+hi)/2;
  if(works(mi)) lo = mi;
  else hi = mi;
 }
 return lo;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": " << solve() << endl;
 }
}






17 de febrero de 2019

Stack Overflow e InfoJobs se asocian para ofrecer más oportunidades de trabajo

Stack Overflow Jobs
La formula de asociación funciona de la siguiente manera: los trabajos técnicos publicados en InfoJobs también se encontrarán en los trabajos de Stack Overflow Jobs siempre que cumplan con los estándares de calidad de trabajo de Stack Overflow.


El principal requisito de calidad es que las ofertas de empleo deben buscar profesionales cuya principal tarea sea solucionar un problema técnico mediante el desarrollo de software.

¿Cuáles son los motivos de este acuerdo?


Stack Overflow es la comunidad online de programadores más grande del mundo y en España cuenta con 900.000 visitantes cada mes.

En Stack Overflow cualquier persona que codifica puede encontrar soluciones a sus problemas técnicos.

Por otro lado, el Informe Anual del mercado laboral presenta los siguientes datos: en 2018 se publicaron en InfoJobs alrededor de 350.000 vacantes (un 10% más que el año anterior) en búsqueda de profesionales en el sector de la Informática y las Telecomunicaciones.

Y esta demanda seguirá creciendo en virtud de la encuesta realizada a más de 1.000 empresas en la que el 47% de las grandes corporaciones tiene previsto contratar perfiles tecnológicos en los próximos 24 meses.

Dominique Cerri, directora general de InfoJobs, explica que

"el principal beneficio de este acuerdo y que contribuye a un cambio de paradigma en la contratación de profesionales IT para nuestras empresas, es que Stack Overflow se alinea con nuestra ambición de que sean las ofertas las que encuentran al candidato y no el candidato el que debe buscar las ofertas. En este sentido, Stack Overflow sólo muestra las ofertas de empleo a los usuarios que encajan con el perfil solicitado".





Fuente de información: InfoJobs firma un acuerdo con Stack Overflow, la comunidad de programadores más grande del mundo

¿Qué tipo de perfiles profesionales se demandan?


Fundamentalmente:

  • Analistas, Business Intelligence o Data Scientist: roles para personas que escriban código personalizado, no personas que solo usan herramientas de desarrollo.
  • CTO (Chief Technical Officer): máximo responsable del departamento tecnológico, informático y técnico de una compañía.
  • Programadores, diseñadores o ingenieros de software.
  • Gerentes de producto: trabajan en conjunto con los desarrolladores para implementar nuevas características técnicas.
  • Probadores de software (QA o Test Developer).
  • Administradores de sistemas y DevOps (Development Operations).


Code Programmer


¿Cómo puedo optimizar las búsquedas de empleo?


La plataforma permite realizar búsquedas por preferencias de usuario:

  • Búsqueda por tecnología (Acceder)
  • Búsqueda por salario (Acceder).
  • Buscar trabajos más recientes (Acceder).
  • Buscar trabajo en empresas populares (Acceder)

Contratar a los desarrolladores es difícil


Programadores profesionales y aspirantes visitan Stack Overflow cada mes para ayudar a resolver problemas de codificación, desarrollar nuevas habilidades y encontrar oportunidades de trabajo.

Fundada en 2008, Stack Overflow se asocia con empresas para ayudarlas a comprender, comprometer, habilitar y contratar a desarrolladores de todo el mundo.








10 de enero de 2019

Aprende a programar javascript con Grasshopper, la app de Google para iOS y Android

Javascript Programming
Grasshopper (saltamontes en español) es una aplicación para dispositivos móviles diseñada para enseñar a codificar Javascript real.
Es una app gratuita, orientada a perfiles sin experiencia en programación, que cubre los conceptos básicos de programación.


Grasshopper es una de las últimas creaciones del taller para productos experimentales de Google, Área 120 que forma parte de Google Inc. Se trata de una incubadora dónde los trabajadores de Google lanzan docenas de ideas novedosas, que luego (las que prosperan) se abren al público en sus versiones beta. Grasshopper se lanzó en abril del pasado año.

El nombre Grasshopper rinde honor a Grace Hopper, uno de los primeros pioneros en la programación de computadoras.


Grasshopper App


1. ¿Qué conceptos básicos de JavaScript cubre?


Actualmente, Grasshopper enseña a utilizar el popular lenguaje de programación JavaScript, utilizado por más del 70% de los desarrolladores profesionales.

Grasshopper usa JavaScript para enseñar conceptos de programación fundamentales que son universales para casi todos los lenguajes de programación:

  • Los fundamentos: cómo funciona el código, funciones, variables, cadenas, bucles for, arrays, condicionales, operadores, objetos y cómo todos estos elementos interaccionan entre sí.
  • Animaciones I: dibuja formas utilizando la popular librería 3D, definiendo funciones, callbacks y animaciones.
  • Animaciones II: creación de funciones más complejas con 3D y los temas del curso The Fundamentals.

2. ¿Qué debo hacer después de usar Grasshopper?


Si has disfrutado de Grasshopper y deseas llevar sus habilidades de codificación al siguiente nivel, el equipo ha identificado varias opciones en las que puedes continuar su viaje de codificación:

  • Seguir recibiendo clases en línea:: nos hemos asociado con Coursera, una compañía que trabaja con las principales universidades para ofrecer cursos online. Estas son algunas de las clases que ofrecen y que podrían ser el próximo paso perfecto después de completar The Fundamentals:
    * Fundamentos de programación con JavaScript, HTML y CSS
    * Algoritmos, Parte 1
    * Especialización en diseño web + Portafolio y certificado
  • Ir a un bootcamp: para los estudiantes con sede en EEUU, en Seattle, St. Louis, Kansas City, Miami o Tampa, también nos hemos asociado con LaunchCode, una organización sin fines de lucro, para ofrecer campos de entrenamiento de codificación gratuitos a un número selecto de estudiantes.
    Puedes registrarte aquí.
Además, si estás interesado en una carrera basada en la tecnología, considera inscribirte en el programa de Certificación Profesional de Soporte de TI de Google + Coursera.


Grasshopper App


3. ¿Cómo puedo obtener la aplicación?



4. ¿Qué debo hacer si quiero eliminar mi cuenta de Grasshopper?


Envía un correo electrónico a grasshopper-support@google.com y el equipo de soporte te ayudará a eliminar tu cuenta.


26 de marzo de 2018

StackOverflow: ya están disponibles los resultados de la encuesta anual de desarrolladores 2018

The Mosted - App de noticias
StackOverflow acaba de publicar los resultados de la encuesta anual de desarrolladores para este año 2018. La encuesta ha tenido lugar el pasado mes de enero y han participado más de 100.000 encuestados de todo el mundo, por lo que se trata de la encuesta más amplia y completa en el ámbito del desarrollo de software.


Los resultados reflejan tendencias de la comunidad de desarrolladores como cuales son los lenguajes más queridos y los más temidos, que herramientas de trabajo usan a diario, preferencias laborales y temas de carácter novedoso como la inteligencia artificial o la ética en la codificación.

Developer Survey 2018 - StackOverflow

¿Qué es StackOverflow?


Stack Overflow es una plataforma que lleva una década siendo el mayor referente para el mundo de la programación.

Este portal es utilizado por una comunidad de desarrolladores informáticos para encontrar soluciones a problemas de programación en diferentes lenguajes.

El uso del sitio web es muy sencillo: el usuario se registra, hace pública su pregunta, y recibe las respuestas.

Las respuestas son publicadas por los miembros de una comunidad determinada o por otros usuarios con las mismas experiencias que encontraron solución al problema planteado.

Todos los usuarios pueden votar por las preguntas y por sus respuestas, cuando se vota por una pregunta, el usuario puede calificarlas como más relevante o menos relevante; por otra parte, cuando se vota por las respuestas, éstas pueden ser más acertadas o menos acertadas.

Cada mes, cerca de 50 millones de personas visitan StackOverflow para aprender, compartir y construir sus carreras.
Se estima que 21 millones de estas personas son desarrolladores profesionales y estudiantes de nivel universitario.

Cada año desde 2011, Stack Overflow ha preguntado a los desarrolladores sobre sus tecnologías favoritas, hábitos de codificación y preferencias de trabajo, así como también sobre cómo aprenden, comparten y suben de nivel o escalafón profesional.

Algunas conclusiones de los resultados de este año


  • DevOps (metodología para creación de software) y el aprendizaje automático son tendencias importantes en la industria del software actual. Los idiomas y marcos asociados con este tipo de trabajos van en aumento, y los desarrolladores que trabajan en estas áreas obtienen los salarios más altos.
  • Los desarrolladores son, en general, optimistas sobre las posibilidades que ofrece la inteligencia artificial, pero no están de acuerdo sobre cuáles son los peligros de la IA.
  • Python ha aumentado en los rangos de lenguajes de programación en nuestra encuesta, superando a C# en popularidad este año, al igual que superó a PHP el año pasado.
  • Las mujeres dicen que sus mayores prioridades son la cultura de la compañía y las oportunidades para el desarrollo profesional, mientras que los hombres dicen que sus mayores prioridades son la remuneración y el trabajo con tecnologías específicas.

Lenguajes de programación, scripting y marcado


JavaScript
  • 69.8%
HTML
  • 68.5%
CSS
  • 65.1%
SQL
  • 57.0%
Java
  • 45.3%
Bash/Shell
  • 39.8%
Python
  • 38.8%
C#
  • 34.4%
PHP
  • 30.7%
C++
  • 25.4%
C
  • 23.0%
TypeScript
  • 17.4%
Ruby
  • 10.1%
Swift
  • 8.1%
Assembly
  • 7.4%
Go
  • 7.1%
Objective-C
  • 7.0%
VB.NET
  • 6.7%
R
  • 6.1%
Matlab
  • 5.8%
VBA
  • 4.9%
Kotlin
  • 4.5%
Scala
  • 4.4%
Groovy
  • 4.3%
Perl
  • 4.2%


Framework, librerías y herramientas


Node.js
  • 49.6%
Angular
  • 36.9%
React
  • 27.8%
.NET Core
  • 27.2%
Spring
  • 17.6%
Django
  • 13.0%
Cordova
  • 8.5%
TensorFlow
  • 7.8%
Xamarin
  • 7.4%
Spark
  • 4.8%
Hadoop
  • 4.7%
Torch/PyTorch
  • 1.7%


Bases de Datos


MySQL
  • 58.7%
SQL Server
  • 41.2%
PostgreSQL
  • 32.9%
MongoDB
  • 25.9%
SQLite
  • 19.7%
Redis
  • 18.0%
Elasticsearch
  • 14.1%
MariaDB
  • 13.4%
Oracle
  • 11.1%
Microsoft Azure
  • 7.9%
Google Cloud Storage
  • 5.5%
Memcached
  • 5.5%
Amazon DynamoDB
  • 5.2%
Amazon RDS/Aurora
  • 5.1%
Cassandra
  • 3.7%
IBM Db2
  • 2.5%
Neo4j
  • 2.4%
Amazon Redshift
  • 2.2%
Apache Hive
  • 2.2%
Google BigQuery
  • 2.1%
Apache HBase
  • 1.7%


Plataformas


Linux
  • 48.3%
Windows Desktop or Server
  • 35.4%
Android
  • 29.0%
AWS
  • 24.1%
Mac OS
  • 17.9%
Raspberry Pi
  • 15.9%
WordPress
  • 15.9%
iOS
  • 15.5%
Firebase
  • 14.5%
Azure
  • 11.0%
Arduino
  • 10.6%
Heroku
  • 10.5%
Google Cloud Platform/App Engine
  • 8.0%
Serverless
  • 4.5%
Drupal
  • 3.0%
Amazon Echo
  • 2.9%
Windows Phone
  • 2.7%
SharePoint
  • 2.7%
ESP8266
  • 2.2%
Salesforce
  • 2.2%
Apple Watch or Apple TV
  • 1.9%
IBM Cloud or Watson
  • 1.4%
Google Home
  • 1.4%
Gaming console
  • 1.3%
Mainframe
  • 0.8%


Podéis visualizar todos los datos de la encuesta en el siguiente link:

Developer Survey Results 2018




25 de marzo de 2018

The Mosted - la app de noticias para tu smartphone

The Mosted - App de noticias
Antes de comenzar, en caso de que no hayáis oído hablar de ello antes, Flutter es una SDK de aplicaciones de Google, que sirve para crear "aplicaciones móviles modernas". Está en fase beta desde Marzo, pero viene con una gran documentación y herramientas, incluyendo algunas aplicaciones de producción ya en el mercado.


Por Antonio Bernardino, CTO y Cofundador de The Mosted.

¿por qué los desarrolladores de aplicaciones nativas deben considerar seriamente Flutter?


Soy un desarrollador aficionado, y acabamos de lanzar nuestra aplicación usando Flutter.

Solo para que entendáis que tipo de aplicación hemos lanzado, se trata de un agregador de noticias con el cual puedes seleccionar tus propios intereses y fuentes preferidas, y leer todas las noticias al instante, en un solo lugar.

Cierto es que existen apps similares en el mercado, pero nos diferenciamos por la sencillez del funcionamiento y por los elementos sociales que iremos incorporando en los próximos meses.

Queremos unificar el agregador con una plataforma social que permita a los usuarios no solo leer noticias, sino también compartir y generar experiencias sociales a través de ellas.

La hemos llamado The Mosted y está disponible tanto en Android como iOS.

De vuelta con Flutter... Deciros que desarrollar en Flutter fue una experiencia tan placentera que debía compartirla con la comunidad.

Me llevó alrededor de 15 días codificar la mayor parte de la app, incluido el tiempo que le dediqué a aprender a usar la SDK.

En los intentos previos, desarrollamos aplicaciones nativas en Android / Java e iOS / Swift 4, que estaban siempre en diferentes fases de desarrollo. Pero Flutter no solo nos ayudó a construir rápido, sino más importante aún, nos ayudó a tener la apps en los diferentes sistemas operativos al mismo nivel. ¡Fue muy divertido! No hace falta decir que ahora ya soy fan de Flutter.

La primera vez que me topé con Flutter fue en Enero de este año. Estaba todavía en Alpha. No profundicé demasiado, y mentalmente lo metí en la misma categoría que React Native, que también está bien. Pero este mes pasado, Google la pasó a Beta y me decidí a echarle un vistazo.

Solo a simple vista, la comparación con React Native era bastante obvia. A nivel conceptual, las similitudes comienzan y terminan con el modelo de programación reactiva. No obstante, en mi humilde opinión, Flutter da un salto generacional en términos de ideas clave que ha implementado. Como desarrollador, también intenté usar React un par de veces, pero realmente nunca me gustó demasiado porque usa mucho HTML.

Estoy acostumbrado a programar en Java y Javascript y sinceramente pienso que Dart no ofrece mucha ventaja sintáctica, los formatters son horribles y los code-styles un poco confusos. Si te gustan los estilos claros, te aconsejo probar Golang, lo uso desde hace 4 meses y es el lenguaje más claro y fácil de aprender del momento.

Donde realmente destaca Flutter es un par de funcionalidades como los estilos compartidos (las apps son totalmente iguales en Android y en iOS) y en el Hot-reload, que para mí es todavía mejor que el de Java, derivado de la forma en que almacena los estados y que te permite cambiar todo el design y visualizarlo en 2 segundos.

La advertencia es que Flutter es nuevo, por lo que existen problemas y limitaciones y, por supuesto, problemas desconocidos que pueden surgir. No obstante, muchas limitaciones son un objetivo claro para el equipo de desarrollo de Flutter y estoy seguro que se irán resolviendo rápidamente.


Sobre The Mosted


The Mosted es una startup de Barcelona que ha desarrollado una plataforma que recoge en tiempo real las noticias publicadas por los principales medios de comunicación y las categoriza por intereses.

Esta plataforma funciona además con un algoritmo que a través de tecnología machine learning y sentiment analysis ofrece al usuario contenido relacionado de forma que quien usa la app solo encuentre contenido de su interés sin información intrusiva ni contenido que no le interese.

Una de las apuestas principales del proyecto es luchar contra las noticias falsas, que es uno de los grandes problemas de la industria de la información actualmente, que a través de la tecnología desarrollada y la participación de usuarios se podrá limitar.

Además, la compañía organiza eventos de forma gratuita en colaboración con espacios de Coworking en Barcelona.

Sus speakers o partners han sido tanto empresas locales como Vive Virtual (realidad virtual) o también a nivel internacional con la CNN (Reino Unido).

El próximo speaker será un Software Engineer de una de las grandes tecnológicas que dará un speech "live" desde San Francisco sobre Coches Autónomos y la industria en general.

El evento tendrá lugar el próximo martes 27 de Marzo a las 18:45 en Spaces Barcelona 22@, el centro de innovación de Barcelona:

El Coche Autónomo de Silicon Valley . Público · Organizado por The Mosted

Información sobre el evento


Conoce todo sobre el Coche Autónomo y lo que las grandes tecnológicas de Silicon Valley se traen entre manos:

- ¿Qué es un Coche Autónomo? ¿Cómo funciona? ¿Como sabe si un peatón pretende cruzar o está solamente parado? ¿En qué se diferencia las fases de perception y motion planning?

- ¿Quiénes son los big players de la industria? ¿Es Tesla el pionero del mercado? ¿Está construyendo Apple su propio coche autónomo? ¿Cómo se diferencian el Model S (Tesla) del Waymo (Google) o del coche autónomo de Uber?

- ¿Cuál es la proyección de la industria de aquí al 2025?

Coche autónomo


10 de marzo de 2018

Inscripciones abiertas para Code Jam 2018

Únete a la comunidad Code Jam y enfréntate a una serie de problemas algorítmicos para tener la oportunidad de ganar el título de Code Jam Champion en la final de Toronto (Canadá) y obtener un premio valorado en 15.000 dólares.
La ronda de clasificación comienza el próximo 6 de abril a las 23:00 UTC.


¿Qué es Code Jam?


Code Jam es una iniciativa organizada por Google que reta a los programadores de todo el mundo a que pongan a prueba sus habilidades resolviendo múltiples rondas de problemas de algoritmia.
Se permite el uso de cualquier lenguaje de programación y entorno de desarrollo para dar solución a estos problemas.

Esta competencia de programación internacional comenzó en el año 2003 como un medio para identificar a los mejores talentos de ingeniería para un empleo potencial en la compañía Google y consiste en un conjunto de problemas algorítmicos que deben resolverse en un período de tiempo fijo.

A partir de 2015, Google también lleva a cabo Distributed Code Jam (Code Jam Distribuida), con el foco en algoritmos distribuidos. Este se ejecuta en paralelo con el Code Jam regular, con su propia calificación y ronda final, para obtener un premio máximo de $10,000, pero solo está abierto para las personas que clasifiquen a la ronda 2 de Code Jam (hasta 3000 personas).




Resultados de Code Jam 2017


Los 26 mejores concursantes lucharon durante cuatro horas extenuantes de competencia en Dublín, Irlanda, pero finalmente Gennady Korotkevich de Bielorrusia se llevó el título de Code Jam 2017 World Champion y el premio de $15,000.


Finales Mundiales de Code Jam 2017


Transmitido en tiempo real el 11 de agosto de 2017.
Tiempo de grabación: 5:48:34



Aprende más



Code Jam en las redes sociales



Otras competiciones de codificación de Google


  • Kickstart para estudiantes universitarios que buscan desarrollar sus habilidades de codificación y seguir una carrera en Google.
  • Código Hash para estudiantes de África, Europa y Oriente Medio que buscan trabajar en equipo con problemas reales de Google.




20 de noviembre de 2017

Bravent y Microsoft promueven el desarrollo de la primera aplicación móvil colaborativa para la Asociación Española Contra el Cáncer

El cáncer sigue siendo una de las principales causas de mortalidad en el mundo. En concreto, en España se diagnostican 247.00 casos nuevos cada año, y lamentablemente, esta cifra sigue en aumento.
El diagnóstico de cáncer produce en la mayoría de las personas una mezcla de confusión, temor, dudas, y mucha soledad.


La atención inmediata a pacientes diagnosticados y familiares se hace absolutamente necesaria para evitar problemas mayores como la depresión o la pérdida de autoestima.

Actualmente, los pacientes o familiares que requieren de esta atención, tienen que acudir presencialmente a los Centros de la Asociación, llamar por teléfono o contactar a través de la web. Un trabajo que cada vez se hace más duro para la AECC porque cada vez hay más personas que demandan estos servicios.

La solución: el desarrollo de una app colaborativa

Estudiando estas necesidades, Bravent y Microsoft pusieron al servicio de la Asociación Española Contra el Cáncer sus conocimientos tecnológicos para el desarrollo de una aplicación móvil que pudiera poner en contacto directo a los pacientes y familiares que solicitaban ayuda con los voluntarios formados por la Asociación.

Esta app, permitirá llegar a más personas, sobre todo jóvenes, que utilizan el móvil como principal dispositivo para comunicarse, y optimizará el proceso de comunicación entre voluntario y paciente, haciéndolo mucho más efectivo y rápido a través de la creación de un chat.

Un proyecto de todos

"Queremos que en este proyecto participe toda la Sociedad ya que, creemos que es un problema que nos afecta a todos, directa o indirectamente". Dice la responsable de MKT de Bravent.

Es por esto que se ha publicado como Proyecto OpenSource para que todo aquel que tenga conocimientos de programación pueda poner su granito de arena y subir su parte de código al repositorio GitHub que se ha creado para ello.

El desarrollo se ha comenzado con la herramienta Xamarin, lo que permitirá estar disponible en las tres plataformas principales del mercado (iOS, Android y Windows Phone), para así llegar al máximo número de usuarios.

Además, para la gestión del chat se está empleando BOT framework de Microsoft con la idea de utilizar los servicios cognitivos de Micrsofot en un futuro cercano.

"Animamos a todos aquellos que quieran aprender o que tengan unos conocimientos mínimos de programación a que participen en este proyecto. Necesitamos más voluntarios para crear la aplicación que ayudará a miles de personas a pasar por el duro trance de la enfermedad del cáncer". Expone la responsable de MKT de Bravent.

Participa en el desarrollo de la primera app colaborativa para AECC: http://info.bravent.net/app-contra-el-cancer





23 de octubre de 2017

Google pone fecha límite al uso de reCAPTCHA en su primera versión

Y remite la información a través de un email del tipo
"usted está recibiendo este correo electrónico porque está registrado como administrador del sitio web de reCAPTCHA, y su sitio web sigue utilizando reCAPTCHA v1, versión que dejará de funcionar a partir del 31 de marzo de 2018".


¿Qué es reCAPTCHA?


reCAPTCHA es un servicio gratuito que protege a los usuarios de Internet del spam y el abuso en sus sitios web, siendo el proveedor de CAPTCHA más utilizado en el mundo.

Utiliza técnicas avanzadas de análisis de riesgos para diferenciar a los humanos y los bots, impidiendo que el software automatizado participe en actividades abusivas en tu sitio web y permitiendo, al mismo tiempo, que los usuarios validados pasen con facilidad.

Con la nueva API, un número significativo de usuarios humanos validados superarán el desafío reCAPTCHA sin tener que resolver un CAPTCHA.



¿Cómo funciona?


La nueva version (reCAPTCHA v2) elimina completamente el recuadro con números y/o letras que estábamos acostumbrados a ver.



Esta tecnología analiza cómo han interactuado los usuarios en un sitio web, cómo hacen clic en el botón 'enviar formulario', cómo mueven el ratón, su comportamiento de navegación, etc.

De esta forma podremos acceder a un sitio web sin ser conscientes de que hemos pasado el filtro de la Inteligencia Artificial(IA) de Google y sin necesidad de detener la navegación para demostrar que no somos robots.

El nuevo CAPTCHA está disponible para todo tipo de webs y navegadores, y si la IA tiene dudas, mostrará un rompecabezas con imágenes en pantalla para validad la autenticidad del usuario.

reCAPTCHA se presenta en forma de widget que puedes añadir fácilmente a tu blog, foro, formulario de registro, etc.



¿Cómo integrar la api en tu blog o página web?


En la página para desarrolladores, Developer's Guide, se explican los pasos a seguir para su implementación.

Para comenzar a utilizar reCAPTCHA, tenemos que registrarnos para obtener un par de claves API para nuestro sitio.

El par de claves consiste en una clave pública del sitio y una clave secreta:

  • la clave pública se utiliza para invocar el servicio reCAPTCHA en tu sitio web o aplicación móvil.
  • la clave secreta autoriza la comunicación entre el backend (servidor web) de tu aplicación y el servidor reCAPTCHA para verificar la respuesta del usuario.
A continuación, elegimos el tipo de reCAPTCHA:

  • reCAPTCHA v2: requiere que el usuario haga clic en una casilla de verificación que indica que el usuario no es un robot.
  • Invisible reCAPTCHA: no requiere que el usuario haga clic en una casilla de verificación, sino que se invoca directamente cuando el usuario hace clic en un botón existente en su sitio o puede invocarse a través de una llamada API de JavaScript.
  • reCAPTCHA Android Library: esta librería proporciona APIs nativas de Android que puedes integrar directamente en una aplicación.
Por último, especificamos los dominios autorizados o nombres de paquetes (packages) para el uso de estas claves API.

Página de administración de claves API del servicio reCAPTCHA: Manage your reCAPTCHA API keys

Si ya estás registrado y quieres actualizar el servicio a la nueva versión, accede al panel de administración y genera un nuevo par de claves para tu dominio.

En el lado del cliente hay que añadir:

  • la librería javascript <script src='https://www.google.com/recaptcha/api.js'></script>
  • el siguiente elemento html <div class="g-recaptcha" data-sitekey="API_KEY"></div> dentro del formulario, dónde sustituimos el valor API_KEY por la clave pública del sitio.
El action del formulario html nos dirige hacia una página de servidor dónde se procesan los datos enviados por el cliente.

  • en la página de servidor, hay que sustituir el valor API_SECRET por la nueva clave privada.
Si quieres incorporar el captcha en tu página de WordPress, tan sólo tendrás que acceder a la siguiente página oficial e instalar el plugin siguiendo las instrucciones detalladas: https://es.wordpress.org/plugins/google-captcha/

API de Android de reCAPTCHA


Google presenta la nueva API de Android de reCAPTCHA (Making the Internet safer and faster: Introducing reCAPTCHA Android API).

Como parte de la API de Google SafetyNet, mitiga los riesgos en los dispositivos móviles a través de una seguridad mejorada y utiliza la última tecnología Invisible reCAPTCHA para optimizar la experiencia del usuario.




23 de enero de 2017

Alternativas a Google Feed API para añadir a tu web artículos de un blog

En el post Google Api hicimos mención a las APIs de Google que permiten acceder a múltiples servicios de forma muy sencilla. Una de las características de Google Feed Api era la posibilidad de integrar artículos publicados en cualquier blog en nuestra web, a modo de tablón de anuncios o sección de últimas noticias.


Desafortunadamente, Google ha decidido dejar de dar soporte a esta funcionalidad (Google Feed API Subject to the Deprecation Policy)

No obstante, existen otras opciones útiles para tal propósito.
En este post voy a hacer especial hincapié en estos tres servicios por su facilidad de uso:

  • FeedBurner: es un proveedor de gestión de fuentes web propiedad de Google. Proporciona herramientas de gestión de fuentes web RSS a bloggers, podcasters, y otros publicadores de contenido basado en tecnología web.
  • Yahoo Query Language: la plataforma YQL (Yahoo! Query Language) permite consultar, filtrar y combinar datos a través de la web mediante una única interfaz. Utiliza una sintaxis similar a SQL y puede leer información en formato HTML, XML, JSON, RSS, Atom y microformato devolviendo el resultado en formato xml o json.
  • Rss to Json online converter: se trata de una api creada por un desarrollador independiente que ofrece documentación en https://rss2json.com/docs con ejemplos funcionando en lenguajes de programación como Javascript, PHP, Ruby o Python.

Feedburner

El servicio FeedBurner permite convertir el Feed (Fuente o Canal web) de cualquier blog en un fragmento de código HTML para integrar en tu página web.
En el post "FeedBurner: como añadir entradas de un blog a tu web, sin plugins y en una línea de código." doy instrucciones precisas para utilizar esta api.
Vas a poder comprobar que el 100% es configuración dando como resultado un línea de código para integrar en tu blog o web.
<script src="https://feeds.feedburner.com/hipertextual/index?format=sigpro" type="text/javascript"></script>

Yahoo Query Language

Este servicio web de uso público presenta pocas limitaciones (Información de uso de esta api) y parece ser una opción válida para la visualización de canales RSS de recursos externos.
Dispone de una consola YQL Console que podemos utilizar para realizar consultas in situ y una guía YQL Guide para obtener más información sobre la creación de consultas.

<script>
  var mycallback = function(data) {
    var entry = data.query.results.rss.channel.item;
    var container = document.getElementById("feed"), date;
 for(var i = 0; i < entry.length; i++){
  dv = document.createElement("div");
  date = new Date(entry[i].pubDate);
  dv.innerHTML = '<a href="' + entry[i].link + '" target="_blank">' + entry[i].title + '</a><br/>' + date.toDateString().substr(4) + '<br/><div class="article">' + entry[i].description.substring(0,600) + '...</div>';
  dv.innerHTML += '<hr/>';
  container.appendChild(dv);
 }
  };
</script>
<div id="feed"></div>
<script src="https://query.yahooapis.com/v1/public/yql?q=select * from xml where url = 'http://feeds.feedburner.com/hipertextual'&format=json&callback=mycallback"></script>

Rss to Json online converter

La web facilita una caja de texto para introducir la url de un feed válido.
A continuación, pulsamos el botón Convert to Json y obtenemos la respuesta del documento en formato json.

<div id="feed"></div>
<script>
(function(){
 var url = "https://hipertextual.com/feed";
 var xhr = createCORSRequest("GET","https://api.rss2json.com/v1/api.json?rss_url="+url);
 if (!xhr) {
   throw new Error('CORS not supported');
 } else {
  xhr.send();
 }
 xhr.onreadystatechange = function() {
  if (xhr.readyState==4 && xhr.status==200) {
   var responseText = xhr.responseText; 
   var result = JSON.parse(responseText);
   var container = document.getElementById("feed"), entry = result.items, date;
   for(var i = 0; i < entry.length; i++){
    dv = document.createElement("div");
    date = new Date(entry[i].pubDate);
    dv.innerHTML = '<a href="' + entry[i].link + '" target="_blank">' + entry[i].title + '</a><br/>' + date.toDateString().substr(4) + '<br/><div class="article">' + entry[i].content.substring(0,600) + '...</div>';
    dv.innerHTML += '<hr/>';
    container.appendChild(dv);
   }
  }
 }
})();
function createCORSRequest(method, url) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined") {
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}
</script>


Escribimos este fragmento de código dentro del cuerpo de nuestro documento html y sustituimos la url 'https://www.tecnoblog.guru/feeds/posts/default' por la de nuestro feed. También podemos modificar el número de entradas a mostrar representado entry.length por un número entero.

Éste es el resultado final:




9 de septiembre de 2015

¿sabes cómo funciona un programa antivirus y cómo protegerte contra malwares?

Un antivirus no es más que un programa de seguridad que se instala en un equipo informático o dispositivo móvil para protegerlo de infecciones por malware.
El término "malware" hace referencia a cualquier tipo de software malicioso o malintencionado cuyo objetivo es infiltrarse o dañar una computadora o sistema de información sin el consentimiento de su propietario.

Este tipo de software incluye:

  • Virus: su función es alterar el normal funcionamiento del ordenador, sin el permiso o el conocimiento del usuario. Habitualmente, reemplazan archivos ejecutables por otros infectados con el código de éste.
  • Troyanos (Trojans): se presenta al usuario como un programa aparentemente legítimo e inofensivo, pero que, al ejecutarlo, le brinda a un atacante acceso remoto al equipo infectado.
  • Gusanos (IWorm): tiene la propiedad de duplicarse a sí mismos. Se propagan de computadora a computadora, pero a diferencia de un virus, tiene la capacidad a propagarse sin la ayuda de una persona.
  • Keyloggers: se encarga de registrar las pulsaciones que se realizan en el teclado, para posteriormente memorizarlas en un fichero o enviarlas a través de internet.
  • Botnets: hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática. El artífice de la botnet puede controlar todos los ordenadores/servidores infectados de forma remota.
  • Spyware o Programa espía: recopila información de un ordenador y después transmite esta información a una entidad externa sin el conocimiento o el consentimiento del propietario del ordenador.
  • Adware: muestra publicidad web al usuario durante su instalación o durante su uso para generar lucro a sus autores.
  • Rootkits: permite un acceso de privilegio continuo a una computadora pero que mantiene su presencia activamente oculta al control de los administradores al corromper el funcionamiento normal del sistema operativo o de otras aplicaciones.
  • Hijackers: realizan cambios en la configuración del navegador web. Por ejemplo, algunos cambian la página de inicio del navegador por páginas web de publicidad o página pornográfica, otros redireccionan los resultados de los buscadores hacia anuncios de pago o páginas de phishing bancario.
  • Dialers: toman el control del módem dial-up, realizan una llamada a un número de teléfono de tarificación especial, muchas veces internacional, y dejan la línea abierta cargando el coste de dicha llamada al usuario infectado.
  • Ransomwares o Secuestradores: cifran los archivos importantes para el usuario, haciéndolos inaccesibles, y piden que se pague un "rescate" para poder recibir la contraseña que permite recuperar los archivos.
  • etcétera...
Fuente: Malware (del inglés 'malicious software') - Wikipedia

Cualquier sistema operativo, incluyendo Mac OS X y Linux, puede ser infectado.
Y cada mes surgen nuevos virus que atacan a teléfonos inteligentes y tablets.


Cómo funciona un antivirus

Basicamente, existen dos formas de que un software antivirus identifique el malware:

  • Detección de firmas y
  • Detección de comportamiento.
La detección por firma funciona como el sistema inmune humano.
Se analiza el equipo en busca de características o “firmas” de programas maliciosos identificables.

Para ello hace uso de un diccionario de malware conocido, si hay algo en la computadora que coincide con un patrón en el diccionario, el programa intenta neutralizarlo.

Al igual que el sistema inmunológico humano, el enfoque del diccionario requiere actualizaciones (como vacunas contra la gripe) para proteger contra las nuevas cepas de malware. Un antivirus sólo puede proteger contra lo que reconoce como nocivo.

El problema con los atacantes cibernéticos es que están desarrollando nuevo malware tan rápido, que los desarrolladores de antivirus no pueden mantener el ritmo.

Con la detección de comportamiento, el antivirus no trata de identificar malware conocido pero monitorea el comportamiento de software instalado en tu computadora.

Cuando un programa actúa sospechosamente, como tratando de acceder a un archivo protegido o modificar otro programa, el software antivirus basado en comportamiento hace notar la actividad sospechosa y te advierte de ello.

Este enfoque proporciona protección contra nuevos tipos de malware que aún no existen en los diccionarios.

El problema con este enfoque es que puede generar falsas advertencias. Tú como usuario puedes sentirte inseguro sobre lo que debes permitir o no permitir y con el tiempo, llegar a ser insensibles a todas esas advertencias.

Puedes tener la tentación de hacer clic en “Aceptar” en cada aviso dejando tu computadora abierta a un ataque o una infección.
Además, en el momento en que se detecta el comportamiento, el malware probablemente ya se ejecutó en tu máquina y podrías ignorar qué acciones tomó antes de que el software antivirus lo identificara.

Extracto del boletín de seguridad preventiva del Instituto SANS (SysAdmin Audit, Networking and Security Institute), una de las organizaciones más prestigiosas de seguridad de la información que agrupa a 165.000 profesionales de la seguridad informática (consultores, administradores de sistemas, universitarios, agencias gubernamentales, etc).


¿Cómo protegernos contra "malwares"?

  • Instala un antivirus adecuado y un firewall o cortafuegos.
  • Utiliza contraseñas de alta seguridad: se recomienda que las contraseñas no contengan nombres completos, nombres reales o de tu empresa, así como números muy conocidos (número de teléfono o fecha de nacimiento).
    La web howsecureismypassword averigua la dificultad para descifrar tu contraseña por una computadora.
  • Mantén actualizados el sistema operativo y los navegadores web de tu equipo.
  • Usa el "sentido común": ten precaución al ejecutar software procedente de Internet o de periféricos como CD o memorias USB. No abras páginas o mails de orígenes dudosos o desconocidos.

¿Qué antivirus debemos usar?

En la actualidad, existen infinidad de antivirus y debemos elegir la solución que mejor se adapte a nuestras necesidades.
Voy a hacer mención especial a BitDefender Antivirus España por razones que expongo a continuación:

  • Dispone de un laboratorio de pruebas, un servicio técnico y convenios con diferentes universidades y entidades públicas como la Universidad Abierta de Cataluña o el Centro de Alerta Antivirus.
  • Posee múltiples certificaciones y premios internacionales: Bitdefender 2015 ha ganado cuatro premios de PC MAG y CNET, y obtuvo Editor’s Choice una crítica excelente de PC WORLD. El producto se desarrolla sobre una versión mejorada de Bitdefender 2014, la cual ganó el título de "Mejor Antivirus of 2014" y dos premios Editor’s Choice de PC MAG.
  • Ofrece software contra las amenazas a más de 500 millones de usuarios domésticos y soluciones corporativas en más de 180 países.
    Tiene oficinas en Estados Unidos, Reino Unido, Alemania, España (ubicadas en Madrid, Barcelona, Vigo, Las Palmas de Gran Canaria, Valencia y Sevilla), Perú y Rumanía. Además, posee una red local de distribuidores en más de 200 países.
  • Además de la protección antivirus habitual en este tipo de aplicaciones contra malware, spyware, ataques de phishing, etc., incluye un firewall, un gestor de contraseñas, control parental, un escáner para perfiles de Facebook (Safego) que bloquea posibles enlaces que podamos recibir a través de esta red social, una aplicación para borrado seguro de ficheros y, también, un navegador Web (Safepay) para acceder de forma segura a cualquier entidad bancaria que funciona en su propio escritorio sin interactuar con el resto del Sistema Operativo.
  • También ofrece una licencia gratuita para que puedas probar sus productos antes de adquirirlos.
Toda la información en:

Antivirus Bitdefender
Bitdefender Internet Security

Aquí os dejo un vídeo sobre Bitdefender Total Security 2015 Full (en español):