March 23, 2016

No Comments

Stencyl – Plataforma para desarrollo de videojuegos

 

Actualmente la programación y los videojuegos se encuentran en el foco de las instituciones educativas y es que la innovación en este ámbito viene significando un futuro prometedor, tanto para los creadores, como para los consumidores, ya que representa uno de los negocios más exitosos a nivel mundial.

 

Stencyl es una plataforma para la creación de videojuegos 2D, que nos permite crear videojuegos desde Linux, OS X y Windows para varias plataformas, integrando una interfaz gráfica drag and drop mediante bloques con diferentes funcionalidades, lo que hace una solución aparte de innovadora, de gran facilidad para interactuar en ella.

 

 

No obstante Stencyl tiene la opción de extender la funcionalidad del motor a través de código, lo que lo hace ser una excelente opción tanto para principiantes como para desarrolladores.

A continuación se muestran los costos de las licencias de esta plataforma:

 

 

En donde podemos observar que la diferencia entre cada una de ellas es la capacidad de poder extender los sistemas en donde puede ser lanzada la aplicación creada.

 

Stencyl nos permite crear un juego ya sea desde cero o con platillas existentes que ponen a disposición los miembros y desarrolladores de la gran comunidad con la que cuentan además de kits con algunas rutinas, procedimientos, funciones, librerías e incluso juegos de ejemplo para poder familiarizarnos con la plataforma, sin necesidad de tener que programarlo.

 

A pesar de las grandes ventajas que tenemos con este Framework existen también ciertas desventajas que se listan a continuación.

 

Ventajas:

  • Muy fácil de aprender y de utilizar
  • Facilidad de desarrollo para diversas plataformas
  • Arquitectura intuitiva de desarrollo
  • Motor de física incluido
  • Gran cantidad de información y documentación, debido a la gran comunidad con la que cuenta.

     

Desventajas:

  • Solo sirve para juegos 2D
  • Es necesario pagar para hacer desarrollo en Android
  • Tiempos de compilación extensos

     

Como podemos ver a pesar de las desventajas es una plataforma altamente recomendable para personas que quieran ingresar en el ámbito de desarrollo de juegos y una gran oportunidad para realizar un negocio, sin necesidad de ser expertos y en donde el límite es la imaginación.

March 23, 2016

No Comments

CTE’S RECURSIVO EN SQL PARA PRINCIPIANTES

Este es el complemento del artículo anterior sobre los CTE en este conoceremos lo que son los Common Table Expressions Recursive. (expresión de la tabla común) donde los resultados del conjunto son temporales donde se puede hacer la referencia el ABC como son SELECT, UPDATE, DELETE, INSERT o también puede crear una vista dentro del CTE.

Una de las ventajas del CTE es que es una sentencia que puede ser no recursiva o recursiva lo cual muchas veces nos ayuda mucho al tratar con ciertos registros.

Estructura.

El CTE se define con una clausula WITH Antes de la consulta principal ya sea un SELECT o INSERT por ejemplo. La cláusula WITH puede incluir uno o más CTE’S

WITH <Common_Table_Expression>

<common_Table_Expression>

Cte_name [ (Column_name [….])]

AS(cte_query)

 

Creación de CTE recursivo.

Esto se refiere que no hace referencia a si misma dentro del CTE.

Para nuestro ejemplo usaremos una tabla que contiene la estructura recursiva simulando archivos dentro de archivos que se llama FolderFromUsers

 

 

En la tabla existe la columna Id que se genera al insertar un registro y la columna Parent que identifica a que carpeta padre pertenece.

 

Con esta consulta obtendremos la jerarquía de los folders según el usuario.

WITH
Folder_CTE
AS (

SELECT
Id, Parent, UserClient, Name
as
NombreCarpeta,
Year
as AnioCreacion,
Month
as MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]

WHERE
Parent
IS
NOT
NULL
AND
UserClient
=
‘758d19d3-dd5b-46f4-8e66-c06fd280179e’

UNION
ALL

SELECT
e.Id, e.Parent, e.UserClient, e.Name
as
NombreCarpeta, e.Year
as
AnioCreacion, e.Month
as
MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]
e

INNER
JOIN
Folder_CTE
ecte
ON
ecte.Id = e.Parent

)

SELECT
*

FROM
Folder_CTE

 

Donde en esta sección se identifica una unión de la misma tabla para realizar una recursividad donde el Id se une con el parent Id buscando la jerarquía que le corresponde.

SELECT
Id, Parent, UserClient, Name
as
NombreCarpeta,
Year
as AnioCreacion,
Month
as MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]

WHERE
Parent
IS
NOT
NULL
AND
UserClient
=
‘758d19d3-dd5b-46f4-8e66-c06fd280179e’

UNION
ALL

SELECT
e.Id, e.Parent, e.UserClient, e.Name
as
NombreCarpeta, e.Year
as
AnioCreacion, e.Month
as
MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]
e

INNER
JOIN
Folder_CTE
ecte
ON
ecte.Id = e.Parent

 

En la parte de abajo se manda a llamar la tabla recursiva que en este caso se declaro como Folder_CTE

)

SELECT
*

FROM
Folder_CTE

 

 

Esto es el resultado. Donde se puede apreciar que el registro 16 es el padre y de ahí se desprende el registro 17 que se repite dos veces con sus respectivos hijos.

 

March 1, 2016

No Comments

CTE’S NO RECURSIVO EN SQL PARA PRINCIPIANTES

En este pequeño tutorial crearemos un CTE (Common Table Expressions) en SQL paso a paso.

CTE al español significa expresión de la tabla común donde los resultados del conjunto son temporales donde se puede hacer la referencia el ABC como son SELECT, UPDATE, DELETE, INSERT o también puede crear una vista dentro del CTE.

Una de las ventajas del CTE es que es una sentencia que puede ser no recursiva o recursiva lo cual muchas veces nos ayuda mucho al tratar con ciertos registros.

Estructura.

El CTE se define con una clausula WITH Antes de la consulta principal ya sea un SELECT o INSERT por ejemplo. La cláusula WITH puede incluir uno o más CTE’S

WITH <Common_Table_Expression>

<common_Table_Expression>

Cte_name [ (Column_name [….])]

AS(cte_query)

 

Creación de CTE no recursivo.

Esto se refiere que no hace referencia a si misma dentro del CTE.

Para nuestro ejemplo usaremos la base de datos de NORTHWIND Orders.

 

Y de empleados esto es para saber cuánta es la carga que tiene el empleado de sus productos para eso se crea la siguiente sentencia.

 

 

Donde en esta sección

WITH


cteCargaTotales
(OrderId,empleado,peso)


AS


(


SELECT
OrderID
,
EmployeeID,
ROUND(SUM(Freight), 2)


FROM
Orders


GROUP
BY
OrderID,EmployeeID


)

 

Definimos la sentencia WITH y en seguida el nombre que tendrá nuestro CTE y las columnas que tendrá. En la parte de abajo se crea la sentencia de select con el total de la carga.

En esta sección

SELECT


sp.FirstName +
‘ ‘
+ sp.LastName
AS
FullName,


sp.City
AS
Location,


ts.peso

FROM
Employees
AS
sp


INNER
JOIN
cteCargaTotales
AS
ts


ON
sp.EmployeeID = ts.empleado

ORDER
BY
ts.peso
DESC

 

Se realiza un SELECT de todos los empleados donde tenemos su nombre la ciudad que reside y a continuación se realiza un INNER JOIN Con la parte de arriba que definimos como cteCargaTotales y se muestra la columna de peso.

 

Aquí el resultado final.

Como podemos ver esto es una forma sencilla de realizar un CTE no recursivo.

 

 

 

Happy coding ;=)

March 1, 2016

No Comments

¿Qué es OAuth2?

OAuth2 es un protocolo de autorización que permite a terceros, clientes o sistemas, acceder a contenidos propiedad de un usuario, alojados en un servidor de recursos sin que éstos tengan que manejar ni conocer las credenciales del usuario, es decir, usuario y contraseña.

 


 

A continuación se describen las acciones de cada uno:

 

  • Propietario de recursos. Es la entidad que nos da acceso a recursos protegidos.

     

  • Cliente. Es la aplicación que hace peticiones a recursos protegidos, con la autorización del usuario que es propietario de ellos.

     

  • Servidor de recursos. Es el servidor o sistema que nos da acceso a los recursos protegidos. Es capaz de aceptar y responder peticiones usando un Access Token, vía URL.

     

  • Servidor de autorización. Hay ocasiones en que el servidor de autenticación es el mismo que el de recursos, en el caso contrario, este servidor es capaz de generar los tokens de acceso para nuestra aplicación.

 

La ventaja de utilizar un mecanismo de seguridad como OAuth2 es que facilita la comunicación entre el usuario y una aplicación tercera y genera más confianza al no tener que ingresar sus credenciales en la misma y es más segura la interacción para el usuario.

 

Funcionamiento

 

El cliente debe estar dado de alta en un servidor de recursos al cual se quiere acceder, en este cuenta con un client_id y la comunicación es mediante URL’s de redirección para intercambios de token y accesos.

 

Existen 2 maneras de llevar a cabo el proceso de autorización y validación:

 

  • Authorization end-point: Este punto de acceso debe ser el encargado de validar clientes y propietarios de recursos, mediante una URL de redirección que dirige el flujo una vez que el propietario y el cliente han sido validados.

     

  • Token end-point: Este punto es el encargado de dar los tokens de acceso al servidor de recursos.


Cuando un cliente quiere acceder a recursos de un propietario, lo primero que necesita es solicitar permisos al propietario del recurso. Este paso se denomina Authorization Grant. Para que un servidor de recursos conceda un token de acceso, es imprescindible presentarle un Authorization Grant junto a las credenciales del cliente que intenta acceder a dichos datos.

Los token de acceso deben tener un periodo de expiración después del cual se consideran caducados y el proveedor debe rechazarlos, obligando al cliente a obtener un nuevo token de acceso, cada vez que este expire.

De esta manera se lleva a cabo el proceso de comunicación entre aplicaciones con el protocolo de autorización OAuth2.

Ejemplo: