Saturday, September 16, 2017

¿Qué está pasando con nuestra privacidad en la red? GDPR, te necesito...

Hace 5 días se publicó una noticia que más o menos intuía, tarde o temprano sabría que tendría que ocurrir y bueno, lo que no sabemos, mejor no saberlo de momento...
Protección de Datos multa a Facebook con 1,2 millones por usar información sin permiso
Ya sabemos "el pago que tenemos" que hacer por usar redes sociales que se nos proporcionan como "gratis" en internet.
Pero la mayoría de nosotros sabemos que las marcas utilizan nuestros datos para fines de marketing y ventas aun conociendo los derechos con respecto a nuestros datos personales.

A día de hoy somos conscientes de la amenaza del robo de datos cibernético con todos los dispositivos que utilizamos y están conectados entre si.

¿Quien puede controlar y regular que los datos privados que proporcionamos para que no se usen sin nuestro permiso?

Se entiende que todos los países tiene su propia agencia de protección de datos, en España disponemos de la Agencia Española de Protección de Datos (AEDP), pero que pasa en Francia, Alemania? ¿Se aplican las mismas multas?

Bueno, pues la entrada en vigor en 2018 de la norma europea GDPR, endurece las multas por el uso indebido de información personal y exige más atención a la intimidad del usuario y/o cliente.

¿Qué es GDPR?
 El GDPR (General Data Protection Regulation) pretende crear un marco legal de protección de datos en toda la Unión Europea, con el objetivo de devolver el control a los ciudadanos sobre sus datos personales, imponiendo a su vez reglas estrictas sobre quienes alojen y ‘traten’ estos datos, en cualquier lugar del mundo. El reglamento también presenta reglas referentes a la libre circulación de datos personales dentro y fuera de la Unión Europea.

La fecha de implantación definitiva de esta norma entra en vigor el 25 de mayo de 2018 y a la mayoría de las organizaciones les preocupan las importantes sanciones financieras que puede imponer el reglamento por no cumplir la norma y así, afianzar y generar confianza entre sus clientes.
Ayer tuve la fortuna de asistir a un evento dentro de mi casa, IBM, sobre este tema que creo que nos preocupa a todos, por lo menos a mi desde el punto de vista de usuario.

IBM ofrece un enfoque completo para prepararse para el cumplimiento del GDPR con soluciones y servicios, desde la evaluación hasta su implementación completa. El enfoque cubre todas las actividades necesarias para dar soporte al GDPR en cinco dominios:
  • Gobierno de GDPR
  • Comunicación y formación de los empleados
  • Procesos
  • Datos
  • Seguridad
Como se puede entender también, IBM no proporciona asesoramiento legal, de contabilidad ni de auditoría, ni declara ni garantiza que sus servicios o productos son garantía de que las empresas cumplen con las leyes o normativas vigentes ya que las empresas son responsables de garantizar el cumplimiento de las leyes y normativas aplicables, incluyendo el GDPR de la Unión Europea.
IBM ayuda a la empresas a alinearse con la norma y soportar la creación de gobierno en el contexto de GDPR.

Más información al respecto aquí.

Volviendo al comienzo, noticias como está son necesarias para que los usuarios tengamos esa sensación que estamos protegidos ante tanta recogida de datos, públicos y privados.
Yo, y sin que nadie piense lo contrario, seguiré usando las redes sociales a nivel privado y a nivel profesional. Tengo amigos por todo el mundo, mi trabajo y mi vida privada solo me permite decir de vez en cuando "hola" o "hi". Y eso, por poco que sea, es mejor que nada.

Sobre el uso de las redes sociales y el impacto en la sociedad, generando millones de información "Big Data", ya hablaré en otro post, ya que como bien se sabe, se van incluyendo más iteraciones con usuarios como por ejemplo, captar los sentimientos personales.

Feliz fin de semana!

Monday, September 11, 2017

Game Tutorial using Node.js - IBM Bluemix (Part 2) [WebSocket Communication]

Hi folk,

In this part of the tutorial I will teach you how to implement the client-server part in a game with a few basic concepts using a basic connection model architecture, deploy the application in IBM Bluemix and how you can perform debugging tasks.

Let's start first with some basic concepts of WebSocket and the client-server architecture.

General concepts

WebSocket is a computer communication protocol communications protocol, providing full-duplex communication channels over a single TCP connection. WebSocket is designed to be implemented in web browsers and web servers, but it can be used by any client or server application.

The client-server architecture is a software design model in which tasks are shared between service providers or services, called servers, and callers, called clients. A client makes requests to another program, the server, which gives an answer.

To perform the requests and exchange data there is a concept called socket.
A socket designates an abstract concept by which two programs (possibly located on different computers) can interchange any data at a single node in a computer network.

Procedure

Before following the procedure, it is recommended to create the project structure described in previous post Game Tutorial using Nodejs - IBM Bluemix (Part 1).

So for the WebSocket communication, I'm going to use the Socket.IO library. Socket.IO enables real-time bidirectional event-based communication.

The procedure I followed in this part of the game tutorial is as follows:

1) Execute following command into project root folder to install node modules dependencies:
 
$ npm install socket.io           

2) Open file app.js and copy and paste following lines at the end:
 
// Socket communication
var io = require('socket.io')(server);

// Connect event
io.on('connection', function(socket){
  console.log('a user connected');
  // Disconnect event
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

3) Save file app.js
 4) Open file index.html and copy and paste following lines at the end:
 
<script src="/socket.io/socket.io.js"></script>
<script> 
var socket = io(); 
</script>

5) Save file index.html
6) Execute following command into project root folder to run local Express server:
 
$ node app.js

7) Open a browser a type localhost:3000


Once the connection is made from the client we will send a message to the server.


8) Open file index.html and copy and paste following into script tag:
 
// Send message to server
socket.emit('clientMsg',{
  msg:'Hi from browser client',
});

9) Save file index.html
10) Open file app.js and copy and paste following lines into ‘io’ connection function:
 
// Receive event message from client
socket.on('clientMsg', function(data){
  console.log(data.msg);
});

11) Save file app.js
12) Execute following command into project root folder to run local Express server:
 
$ node app.js

13) Open a browser a type localhost:3000


Finally, the server responds to the client with a return message.


14) Open file app.js and copy and paste following lines into ‘io’ connection function:
socket.emit('serverMsg',{
  msg:'Hi from browser server',
}); 

15) Save file app.js
16) Open file index.html and copy and paste following into script tag:
 
socket.on('serverMsg', function(data){
  console.log(data.msg);
});

17) Save file index.html
18) Execute following command into project root folder to run local Express server:
 
$ node app.js

19) Open a browser a type localhost:3000
20) Open browser Inspect tool.


Note: Most browsers currently have an inspection tool. In the case of Firefox the option is Inspect Element from the options menu of the page.

21) Execute following command into project root folder to push your app to Bluemix:
 
$ bluemix app push

Note: Deploying your application can take a few minutes. When deployment completes, you'll see a message that your app is running.

22) Open a browser and type {nameofyourapp}.mybluemix.net
23) Execute following command into project root folder to debug your app to Bluemix:
 
$ bluemix app logs {nameofyourapp}

Note: Debugging your application can take a few minutes the first time your invoke the service to retrieving logs. When deployment completes, you'll see your application traces log.


Second step done! now you can think something creative to create a game in the cloud.

You can download the sources of the example application here.
And you can also try the client example here.

Are you ready for the next part of the tutorial? Soon I publish it, be patient !!
Be blue, Be mix

Monday, September 4, 2017

Game Tutorial using Node.js - IBM Bluemix (Part 1)

Hi folk,

Many of you ask me to teach how to create a game in the cloud, I am preparing a tutorial step by step so everyone can realize their own game.

There is no better way to learn technological concepts than by playing with them.

Setup project local environment and deploy to Bluemix

What you'll need to build your game

Simple, all you need is:
  • Firefox (Browser)
  • Atom (Text Editor)   
  • NodeJS (Server)
  • Bluemix account (Hosting your game Online)


Project folder structure

A little theory about the project structure, folders and files so that throughout the tutorial people can identify the one we are modifying and why it is modified.


Install software

There is the software that you have to install:

Create project

Before to start the procedure you have to create a project structure with following folders and empty file


1) Open a terminal and go to project directory
2) Open the file package.json by command line (e.g.):
 
$ atom package.json

3) Copy and paste following lines:
 
{
  "name": "project",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "dependencies": {
    "express": "^4.13.4",
    "socket.io": "^1.4.5"
  },
  "devDependencies": {},
  "author": "",
  "license": "ISC",
  "scripts": {
      "start": "node app.js"
  }
}
 
4) Save file package.json
5) Execute following command into project root folder to install node modules dependencies:

$ npm install

New node_modules is added to project

6) Open file app.js
7) Copy and paste following lines:
  
 var http = require('http');
 var express = require('express');
 var app = express();
 
 app.get('/',function(req, res) {
  res.sendFile(__dirname + '/client/index.html');
 });

 app.use('/client',express.static(__dirname + '/client'));

 var server = http.createServer(app);
 server.listen(3000, function(){

   console.log('Express server listening on port ' + app.get('port'));

 });
 
8) Save file app.js
9) Open files index.html
10) Write following line:
 
Hello Folk! Start game here!

11) Save file index.html
12) Execute following command into project root folder to run local Express server:
 
 $ node app.js

13) Open a browser and type:
 
http://localhost:3000

The result:



Try: You can access to client files
http://localhost:3000/client/img/lock.png

Deploy to Bluemix

Now is time to host the application to the cloud.

1) Open a terminal and go to project directory
2) Connect and log in to Bluemix using your account:
 
$ bluemix api https://api.ng.bluemix.net

3) Open file manifest.yml
4) Copy and paste following lines:
 
 applications:
 - path: .
  memory: 512M
  instances: 1
  domain: mybluemix.net
  name: tgbm
  host: {write-your-unique-hostname}
  disk_quota: 1024M
 
 5) Update the host property with your own host name

Note: In this manifest.yml file, random-route: true property generates a random route for your app to prevent your route from colliding with others. If you choose to, you can replace random-route: true with host:{write-your-unique-hostname}, supplying a host name of your choice

6) Save file manifest.yml
7) Execute following command into project root folder to push your app to Bluemix.
 
$ bluemix app push

Note: Deploying your application can take a few minutes. When deployment completes, you'll see a message that your app is running

 
8) Open a browser and type:
 
http://tuto-game-bx.mybluemix.net

The result:
Yeah!!! Your are ready for the next part of this tutorial!!

Let's go then, click here.
Be blue, be mix