jueves, 24 de octubre de 2013

Problemas con Inserción desde Procedimientos almacenados al recuperar las claves o cuando usar @@identity Scope_Identity() o Ident_Current()

Buenas a tod@s

Hoy voy a contaros un par de cosillas de los procedimiento almacenados que os puede ser de gran utilidad. Muchas veces, nosotros manejamos la base de datos a través de procedimientos almacenados, ya que es más seguro, ofrece buenas herramientas de análisis, separamos el grueso de acceso a datos del resto de aplicación, permite que modifiquemos sentencias sin tener que generar una nueva publicación… y cualquier otra razón que a vosotros os guste más.

Uno de los problemas que nos enfrentamos a la hora de insertar un nuevo registro, es al devolver la clave del registro insertado, ya que este puede ser que asigne de forma automática. Muchos de nosotros utilizamos el parámetro @@identity para este fin, pero puede que no sea buena idea, ya que es posible que no devuelva en índice correcto.

Existe tres formas de obtener la clave y cada una tiene sus particularidades:
Scope_Identity(): Devuelve  la clave de la última inserción dentro del procedimiento almacenado en el que lo estamos ejecutando.
@@Identity: Devuelve la clave de la última inserción, a nivel de sesión. Esto quiere decir que si después de la inserción se ejecuta un trigger, al recuperar el valor de la clave, devolverá la clave del trigger y no la del procedimiento almacenado donde lo ejecutamos.
Ident_Current(): Devuelve la última clave introducida sin tener en cuenta sesiones. Es decir, si por ejemplo estamos introduciendo datos con dos usuarios a la vez devolverá la clave de la última inserción independientemente del usuario que lo haya insertado. Es probable que ambos reciban el mismo valor si la inserción ha sido simultánea.

Como podéis comprobar, cada una de las funciones está delimitada de una forma muy concreta. Es posible que para ciertos casos nos interese una u otra, eso tendremos que verlo en su contexto. Lo que está claro es que en muchos casos utilizamos @@identity cuando no es correcto y puede producir un gran problema de coherencia en los datos.

La información a sigo extraída de http://technet.microsoft.com/es-es/library/ms187342.aspx

Espero que este tema haya resultado interesante, no muy aburrido, que ahorre un susto a más de uno y sobre todo que sirva para algo.

Muy importante, si decides comentar o republicar parte de este articulo porque te ha sido útil, por favor cita la fuente y el autor del mismo (vamos cítame) y pon un enlace al artículo de mi blog

Muchas gracias por leerme.
Saludetes a todos

P.D. Podéis seguirme en Twitter @jberron y LinkedIn



jueves, 10 de octubre de 2013

SteamOS el nuevo sistema operativo de Valve ¿Que puede suponer para Linux?

Buenas a tod@s

Hoy voy a hablaros de noticias fresquitas, fresquitas de Linux y de Juegos todo en un mismo artículo, haciendo una reflexión a futuro.
Evidentemente son conclusiones propias, lo cual no quiere decir que realmente se cumpla ninguna de ellas (desafortunadamente para mi economía no soy Rappel, ni la Bruja Lola…).


Historia de los juegos en Linux

Linux y los juegos son dos palabras que no suelen ir nunca juntas. ¿Por qué? Bueno básicamente porque a día de hoy salvo alguna excepción los juegos comerciales que todos conocemos no salen para Linux. Bien porque las librerías de Linux no son del todo optimas, porque cada distribución funciona de una forma, porque para Windows ya se encarga Microsoft de ofrecer unas herramientas mejores o porque las gallinas ponen huevos. 

Con sinceridad la mayor parte de las escusas son vanas pero la cruda realidad es que el mercado de juegos de pc es para Windows, en algún caso (cada vez mas) también para OSX pero para Linux realmente aparecen muy pocos títulos y menos famosos y comerciales. A día de hoy no existe por ejemplo un Diablo III, un StarCraft 2 o un GTA para Linux. Por lo tanto la mayor parte de los juegos que existe para Linux son juego o bien sencillos en plan mini juegos, algunas adaptaciones de juego antiguos (como Quake III), o títulos de tipo indie.


Y aparece Valve


No sé si a día de hoy existe alguien que no conozca a Valve pero por si acaso os voy a contar un poco sobre los inicios de esta singular empresa con ese peculiar crédito en sus juegos. 

Valve es una empresa americana creada haya por el año 1996 y en 1999 apareció su primer juego Half-Life. Si alguien no ha jugado a este título… debería hacerlo. Es posiblemente uno de los mejores juegos que existen para pc, quizá a día de hoy sus gráficos está ya muy anticuados y su mecánica es básica, pero en el año 1999 fue totalmente rompedor, con un historia digna de una gran película de acción y conspiraciones. 

La historia comienza con un nuevo empleado llega a Black Mesa Doctor en Física llamado Gordon Freeman y al realizar su primer experimento, la cosa no sale precisamente bien…o sí... ahí lo dejo para el que quiera saber el resto de la historia que juegue a este juegazo.

Pero no fue el juego en si sino el éxito vino después, Valve dejo abierta una puerta para que cualquiera pudiera crear de una forma más o menos sencilla un juego basado en su juego, es decir, un Mod. Un tiempo después apareció un pequeño Mod hecho por unos aficionados en el que te enfrentabas con otros jugadores en red local u online (si he dicho online) en el que podías ser un terrorista o un antiterrorista y completar diferentes misiones, si no lo habéis adivinado ya hablo de Counter-Strike. 


La gracia era que el mod lo descargabas gratuitamente y solamente tenías que tener una licencia de Half-Life para jugar online. Gracias a que Half-Life era un juego barato y que sus requerimientos eran bajos para la época en la que salió el juego reventó en ventas y Valve gano mucho dinero.


Valve crea Steam

Tiempo después, en Septiembre de 2003, Valve creo la plataforma Steam, la cual no es más una tienda para juegos al más puro estilo AppStore, Google Play o Windows Marketplace (de hecho estoy seguro que estos se inspiraron en el funcionamiento de Steam para crear sus plataformas). 


Evidentemente  Valve puso todo su catálogo de juegos en esta plataforma, de tal manera que si para jugar al Counter-Strike o Half-Life, podías descargar Steam e introducir tu número de serie y automáticamente tenías el juego dentro de la plataforma. Esta también se encargaba de actualizar los juegos a las últimas versiones etc etc. Esta plataforma a día de hoy solamente distribuye juegos y ofrece grandes facilidades para la publicación a cualquier desarrollador (os suena de algo verdad). Actualmente su catálogo tiene más de 2200 juegos.


Steam llego a Linux 

Como toda empresa que se precie, Valve intenta que su plataforma sea capaz de ejecutarse en cualquier ordenador. La versión para Windows salió en el año 2003, pero en ese momento Linux era mucho más minoritario que ahora y tenía muchos problemas con la aceleradoras graficas 3D (a día de hoy, ya no existe tarjetas sin aceleración 3D, antiguamente una tarjeta gráfica no tenía porque tener aceleración 3D, por lo que llamar tarjeta gráfica a una aceleradora 3D es incorrecto, hoy en día estos dos términos se entienden como uno no siempre fue así, la culpa de unirlas la tuvo la genial 3DFX y NVIDIA) y los drivers privados que no existían para Linux. 

Afortunadamente para Linux esta época ya pasó y cada día son más los fabricantes de tarjetas gráficas que tienen drivers para Linux que funcionan correctamente (aunque muchas veces no bien optimizados, al menos funcionan). En Febrero de 2013 Valve creo una versión  de su plataforma Steam para Linux la cual va acompañada de 50 juegos. Ya no es necesario tener Windows en tu portátil para jugar a Half-Life o Counter-Strike lo puedes hacer desde tu Linux favorito. La arriesgada apuesta de Valve ha sido todo un acierto y además funcionando muy bien en ventas.


SteamOS

La noticia es de hace aproximadamente una semana, en la que Valve acaba de anunciar SteamOS.


¿Qué es SteamOS? 
En pocas palabras, es una distribución de Linux gratuita, creada y mantenida por Valve y optimizada para juegos. Es decir, Valve ha cogido Linux y lo ha adaptado para que su plataforma Steam funcione perfecta. Al decir que Steam tiene que funcionar perfecta, nos referimos a que los juegos que están en Steam correrán de forma perfecta. Además el hardware es actualizable y está pensado para utilizar pantallas grandes, no es por desechar los monitores de 19 o 21 pulgadas que tenemos, sino de poder utilizar de una forma cómoda nuestra tv de 40. La idea es convertir el ordenador en una especie de consola de videojuegos.


Que puede aportar SteamOS a Linux y al revés

La idea es muy buena, pero tiene varios problemas, por un lado, los ordenadores no son todos iguales por lo que hay disparidad de componentes a tutiplén. Linux tiene la ventaja de que soporta casi cualquier cosa, desde una terminal para fichar, hasta el más complejo de los sistemas que se envía a marte y por eso se aprovecha Linux ya que funcionará casi en cualquier equipo. Además Valve sacara un equipo modelo, pero aun así nos darán la oportunidad de utilizar y montar el que nosotros queramos o incluso ampliar el de modelo con una mejor grafica o más RAM. 

El problema son los drivers de los nuevos dispositivos. Actualmente como sabéis el mercado del pc no está en su mejor momento, y si hablamos de sobremesas o torres, menos aún, por lo que el mercado de estos equipos prácticamente está en los jugadores. Si SteamOS tiene tirón los fabricantes de componentes se van a ver obligados a lanzar drivers de sus más avanzados dispositivos a la vez que el propio dispositivo para SteamOS o perderán muchas ventas. Si lo diseñas para SteamOS, finalmente lo estás diseñado para Linux, por lo que lo usuarios del pingüino deberían tener muchos menos problemas para obtener buenos drivers para sus equipos y ponerse casi a la par con Windows. Yo por ejemplo, tengo un portátil con sistema Optimus (2 graficas una para juegos y otra para trabajo) y en Linux este sistema no funciona (o al menos no funcionaba). De ahora en adelante si quieren vender componentes los fabricantes tendrán que pensar más en Linux y eso nos beneficia a todos, algunos incluso puede olviden a Windows.


Conclusiones

La plataforma SteamOS se beneficia del funcionamiento de Linux y de sus drivers, pero su éxito puede hacer que Linux se beneficie de drivers más específicos y mejores para cualquier dispositivo por parte de sus fabricantes, liberando así a la comunidad de gran parte de este desarrollo y pudiendo enfocar su esfuerzo en otras tareas, aumentando así es desarrollo del sistema en otros campos.
También puede ocurrir que Valve haga que estos drivers sean propietarios y nos los ofrezca a la comunidad, aunque en este caso también sería tirar piedras contra su tejado, ya que Valve tiene una versión de Steam para Linux que no es SteamOS.

Estos meses se prevén interesantes, ver cómo funciona en ventas SteamBox, en instalaciones SteamOS y cómo reacciona Valve  de cara a la comunidad Linuxera. Muy interesante

Y tú… ¿Qué piensas?


Espero la lectura haya sido amena e interesante
Muy importante, si decides comentar o republicar parte de este articulo porque te ha sido útil, por favor cita la fuente y el autor del mismo (vamos cítame) y pon un enlace al artículo de mi blog


Muchas gracias por leerme.
Saludetes a todos

P.D. Podéis seguirme en Twitter @jberron y Linkedin