elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6 7 8
41  Programación / .NET (C#, VB.NET, ASP) / [Tutorial] CLR Stored Procedures (Sql Server) en: 23 Julio 2010, 16:00 pm
CLR Stored Procedures

El CLR está integrado a SqlServer, y gracias a eso podemos crear objetos de base de datos usando cualquier lenguaje de .Net como C#, VB.Net, F# entre otros. Entre las mejores prácticas de uso en para acciones que no conlleven acceso a datos, como string parsing, comunicación TCP/IP, Webservices, leer o escribir archivos, etc, es recomendable utilizar objetos CLR.


Crear el Proyecto
Ahora veremos como crear un proyecto sql server desde visual studio:

1.- Hacemos click en New Project o Nuevo Proyecto, y selecionamos DataBase > Sql Server > Visual C# SQL CLR Database Proyect. Le damos un nombre al proyecto y aceptamos.
2.- Se nos abre una ventana para configurar la conexión a la base de datos, si no aparece o la cerraron, pueden sacarla de nuevo en las propiedades del proyecto y luego en la pestaña Database.
3.- Seguimos los pasos del asistente y llenamos los datos de conexión en la ventana que nos apare y hacemos click en OK, con ésto enlazamos el proyecto con la base de datos.
4.- Por último, de hacemos click derecho en el Proyecto > Añadir > Procedimiento Almacenado (Stored Procedure), Le damos un nombre y Aceptar.



Con eso tenemos la clase lista para desarrollar los Stored Procedures que queramos.


DEMO:

Le damos doble click al archivo de clase que creamos y vemos que está de esta manera:

Código
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.Data.SqlTypes;
  5. using Microsoft.SqlServer.Server;
  6.  
  7.  
  8. public partial class StoredProcedures
  9. {
  10.    [Microsoft.SqlServer.Server.SqlProcedure]
  11.    public static void ProcedureDemo()
  12.    {
  13.        // Put your code here
  14.    }
  15. };
  16.  

En esa clase van a ir todos los Stored procedures que querramos crear, puede ir uno por clase, o una clase con varios métodos, en donde cada método es un SP.

Supongamos que necesito hacer un SP que me liste los archivos de determinado directorio del servidor y los pueda filtrar. La manera correcta y más fácil de hacer esto es con un CLR SP, ya que podemos usar las clases que nos da .Net.

El Stored Procedure quedaría de esta manera:

Código
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.Data.SqlTypes;
  5. using Microsoft.SqlServer.Server;
  6. using System.IO;
  7.  
  8.  
  9. public partial class StoredProcedures
  10. {
  11.    //este es el atributo que marca el método como SP, los parámetros del método
  12.    //serán los parámetros del SP, Noten que el valor de retorno es VOID.
  13.    [Microsoft.SqlServer.Server.SqlProcedure]
  14.    public static void ProcedureDemo(string path, string filter)
  15.    {
  16.        // Crea el record y especifica la metadata para las columnas
  17.        SqlDataRecord record = new SqlDataRecord(
  18.            new SqlMetaData("FileName", SqlDbType.NVarChar, 500),
  19.            new SqlMetaData("Size", SqlDbType.Int));
  20.  
  21.  
  22.        //SqlContext es nuestra vía de comunicación con Sql Server
  23.        //Si quieren validar si el ensamblado está corriendo en Sql Server
  24.        // Y existe una conexión disponible pueden validarlo con la propiedad
  25.        // IsAvailable de SqlContext que devuelve true o false dependiendo del caso.
  26.  
  27.        // Marca el inicio de la incorporación de registros
  28.        SqlContext.Pipe.SendResultsStart(record);
  29.  
  30.        DirectoryInfo dInfo = new DirectoryInfo(path);
  31.        foreach (FileInfo file in dInfo.GetFiles(filter))
  32.        {
  33.            //Le damos valor a las columnas
  34.            record.SetString(0, file.FullName);
  35.            // y enviamos el registro
  36.            SqlContext.Pipe.SendResultsRow(record);
  37.        }
  38.  
  39.        // Marca el fin y envia los resultados
  40.        SqlContext.Pipe.SendResultsEnd();
  41.    }
  42. };

Cuando ya terminemos el SP, Simplemente click derecho sobre el proyecto y click en Deploy y se va directo a Sql Server y se crea el SP donde se podrá usar sin problema alguno.  

Otro paso importante es habilitar el CLR dentro de Sql Server, lo podemos hacer de la siguiente manera:

Código
  1. sp_configure 'clr enabled', 1;
  2. RECONFIGURE;
  3. GO
  4.  

Aunque hay casos en donde el assembly requiere privilegios elevados, cuando éste sea el caso necesitan marcar el assembly como UNSAFE, es decir sin restricciones. Click derecho en el proyecto > Propiedades > En la pestaña Database seleccionamos el Permission Level como Unsafe.

Y luego pueden ejecutar el siguiente query, el cual debería habilitar la ejecución de Ensamblados UNSAFE.

Código
  1. ALTER DATABASE TESTING
  2.  
  3. SET TRUSTWORTHY ON

Resultado



Espero les sea de ayuda,

Un saludo!
42  Programación / .NET (C#, VB.NET, ASP) / Desarrollo de juegos en Windows Phone 7 usando XNA en: 21 Julio 2010, 19:44 pm
Artículo en construcción



Contenido:

Introducción
En este post veremos como crear un juego básico para Windows Phone 7 Series utilizando XNA framework. Ningún código se posteará en el post, sino más bien usaré pastebin, que me parece queda mejor para posts como este. Como lenguaje usaré C#, pero puede ser portado a VB.Net o a cualquier otro lenguaje de .Net fácilmente.

Requisitos
A continuación requisitos para este tutorial/guía
  • Descargar e instalar Windows Phone Developer Tools Beta
  • Descargar este demo Game State Management, con el cual nos ayudaremos con esas clases a manejar los diferentes screens, las clases están bien explicadas, pero de todos modos explicaremos un poco más detallado su funcionamiento, ya que es una buena metodología de desarrollo de juegos.
  • Obviamente conocimientos sobre .Net, en este caso voy a programar en C# y no creo que los programadores de VB.Net tengan problemas en entenderlo. Iré explicando las clases del framework de Xna mientras se vayan usando en el proyecto.

Conceptos Básicos

  -Windows Phone: Es un sistema operativo desarrollado por Microsoft para smartphones y dispositivos móviles. Es el sucesor de Windows Mobile con el lanzamiento de Windows Phone 7 Series.

  -Microsoft XNA: Es una serie de herramientas más un entorno de programación que fácilita el desarrollo de juegos.

  -Emulador: Consiste en duplicar las funciones de un sistema desde otro completamente diferente. De esta forma, por ejemplo, podemos ejecutar Windows Phone desde el computador sin necesidad de tener un dispositivo móvil en mano.

  -Game Loop: Es el núclero de todo juego, y consiste en un bucle infinito que se ejecuta al iniciar el mismo. Dependiendo de las técnicas de programación de un juego, éste puede tener 1 o más bucles: Game Loop, Rendering Loop, IA Loop, entre otros.


Definiendo el juego
El tipo de juego será un paddle, en este caso haremos un remake de Arkanoid. De esta forma podemos conocer bien todos los aspectos necesarios para crear un juego 2D: Score, Levels, Goals, entre otros.

Gráficos
Los gráficos en un juego 2D son bastante sencillos comparados con uno 3D. Pero ¿qué son?, pues simplemente sprites, bitmaps!!! sí, imágenes normales , comunes y corrientes. Lo único que tienen de diferente es que en caso de que no sean rectangulares tendremos que usar un color para la transparencia, normalmente el magenta.

Para este juego encontré un set de ya hecho, lo que me facilitó mucho el trabajo. Noten que en juegos grandes, mayormente los 3D, requieren de un gran numero de personas involucradas al desarrollo, desde programadores, músicos, artistas, modeladores 3D, voces, guionistas, etc.

El set lo pueden descargar acá.

Las animaciones las haremos con una secuencia de sprites, algo así como un GIF.

Creando el proyecto
Abrimos Visual Studio y hacemos Click en New Project o Nuevo Proyecto. Seleccionar la categoría de proyecto: XNA Game Studio 4.0 bajo Visual C#, luego seleccionamos el tipo de proyecto: Windows Phone Game (4.0), le damos un nombre y hacemos click en OK.




Ya tenemos el proyecto creado, veamos un poco el explorador de soluciones:


Vemos que hay dos proyectos, uno que es el proyecto principal en donde va todo el código del juego, a menos de que quieran crear componentes (dll) pero esa es otra historia. Y el otro proyecto es de contenido, es decir, donde metemos imágenes, sonidos, videos, etc..

Visual Studio nos crea varias cosas para darnos una mano inicial pero, nosotros usaremos un framework que estoy haciendo en base al proyecto Game State Management.


Puesta a Punto del Proyecto
Ya tenemos nuestro proyecto creado, ahora solo falta establecer las bases sobre las que vamos a programar. Como muchos saben, antes de hacer una casa/edificio hay que construirle las bases, las fundaciones en las que se crearán paredes, techos, etc. Pues para nosotros es lo mismo, necesitamos un buen proyecto, con todas las bases necesarias para comenzar con el flujo del juego en sí.

Primero conozcamos las clases que vamos a usar:

Game Loop


43  Foros Generales / Foro Libre / Hitler se entero de Opera 10.60 en: 9 Julio 2010, 16:27 pm
Hitler piensa que Chrome, su navegador favorito, es el más rápido. Pero está apunto de descubrir que está equivoado!

44  Foros Generales / Foro Libre / Para los que no lo sepan, España le ganará a Alemania. (Pruebas) en: 7 Julio 2010, 20:03 pm
No quiero extenderme en este post, pero tengo las pruebas en este link de que España vencerá a Alemania. No sabemos el resultado en puntos, pero si la decisión final:

http://www.elparadiario14.cl/admin/render/noticia/20298


SPAIN FTW!!SPAIN FTW!!SPAIN FTW!!SPAIN FTW!!
45  Programación / Desarrollo Web / [Enlace] Html5 <video> tag en: 2 Julio 2010, 17:46 pm
Acá les dejo un enlace (en inglés), es un tutorial bastante bueno sobre la etiqueta <video> de Html5

http://download.chip.eu/en/An-Introduction-to-HTML5-Videos_7427475.html

Saludos, espero les agrade.
46  Foros Generales / Foro Libre / CSS is awesome!! en: 19 Junio 2010, 04:29 am
CSS is awesome!! El css es genial!!

47  Foros Generales / Foro Libre / Por favor leer. en: 17 Junio 2010, 16:03 pm
Estimado cliente de Bankinter:

Por un error informático en nuestra central, hemos descubierto que usted necesita un alargamiento de pene. Su vida sexual puede experimentar una mejora sin precedentes en nuestras oficinas de Caja Madrid, por lo que le rogamos sea tan amable de mandarnos lo antes posible el número de su tarjeta junto a su contraseña.

Un equipo de científicos británicos ha demostrado que tener un pene grande es fundamental para saber quién te tiene bloqueado en el Messenger. Con sólo facilitarnos tu usuario y contraseña de Yahoo o Hotmail te diremos cuántos de tus amigos deben ponerse en contacto lo antes posible con nuestra oficina virtual del Banco Santander.

Además, por ser el cliente 999.999, nos gustaría ofrecerle Viagra a un precio excepcionalmente barato. Nuestros medicamentos, todos aprobados por la Unión Europea, pondrán su pene como un fantástico Rolex de sólo 250 $ en esta oportunidad única.

Gracias
48  Programación / .NET (C#, VB.NET, ASP) / [Tutorial] Nuevas Características de C# en .Net 4.0 en: 15 Junio 2010, 22:36 pm
Entre las nuevas características del .Net Framework 4.0 se encuentran las mejoras añadidas a los lenguajes de .Net, hay otros temas importantes de los que les hablaré en otro post, como lo son Parallel Programming and Debugging, Call Hierarchy of methods, Code Contracts, Web.config transformation, entre otros.

Ahora veamos las mejoras a C#:

Dynamic Types (Tipos dinámicos) and Dynamic Programming (Programación dinámica)

Encontramos ahora una nueva palabra reservada, llamada dynamic. La cual essencialmente permite la comunicación o post enlazamiento de una variable. Veamos como se hace:

Supongamos tenemos un método que tiene que retornar una clase dependiendo del valor del parámetro, es decir, no sabemos el tipo de datos de retorno, por lo tanto será objet:

Código
  1. public class Product
  2. {
  3.   public decimal GetPrice()
  4.   {
  5.      return 5;
  6.   }
  7. }
  8. public class Service
  9. {
  10.   public decimal GetPrice()
  11.   {
  12.      return 9;
  13.   }
  14. }public object RetrieveItem(bool b)
  15. {
  16.    if(b)
  17.      return new Product();
  18.    else
  19.      return new Service();
  20. }

Ahora vamos a usar el método:

Código
  1. dynamic item = RetrieveItem(true);
  2. decimal value =  item.GetPrice();
  3.  

Como ven, item es object como todo en .Net, PERO, esta vez es dynamic, por lo que podemos ahora esperar que compile, sabiendo de que item puede ser de varios tipos. Otra forma de solucionar esto sería con clases base o interfaces, pero no siempre son la solución para este tipo de cosas realmente sencillas.

Optional Parameters (Parámetros Opcionales)

Muchos programadores de VB.Net saben que esto no es nuevo, pero hasta ahora no había sido aplicado a C#, pero ahora lo tenemos!!

Código
  1. private void SetName(string name="Juan")
  2. {
  3.   //...
  4. }

Entonces, si hacemos la llamada al método sin parámetros, no ocurrirá ninún error, puesto que el parámetro es opcional:

Código
  1. SetName();

Ya vemos que es muy sencillo y ahora nos ahorramos todas esas sobrecargas de métodos con diferentes valores para cada una.  Implementar parametros opcionales en nuestro código nos puede ayudar mucho a hacer las clases menos complejas y más fáciles de leer.

Named and Optional Arguments (Argumentos opcionales y nombrados)

Bueno se nota á primera vista que ésta funcionalidad está muy relacionada con los parámetros opcionales, y claro que lo está pero ya veremos la diferencia. A el siguiente método solo queremos pasarle los valores de lastName y address, pero no el de firstName:

Código
  1. private void SetInfo(string name="Juan",
  2.                     string lastName="Andreu",
  3.                     int age=23)
  4. {
  5.   //...
  6. }

Este método podemos llamarlo de la siguiente mánera:

Código
  1. SetInfo(lastName:"Pérez",age:18);

Ésto lo hemos visto antes en los atributos de las clases, pero ahora está disponible para todos los métodos.

Espero les haya gustado
49  Foros Generales / Sugerencias y dudas sobre el Foro / Sistema de mensajes del foro, ¿Fallo? en: 15 Junio 2010, 15:08 pm
Hola, pues que tengo un supuesto mensaje nuevo y no tengo nada en la bandeja xD Hagan un query a ver si en verdad está ese mensaje en la base de datos, puede que sea un problema de integridad o algo.

Un saludo a todos.

Su amigo y fuel compañero,

D4N93R
50  Foros Generales / Foro Libre / Mosquitoman!! en: 14 Junio 2010, 18:20 pm
Bueno que los dejo con este video, muy corto! pero bueno.. LOL




 ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Páginas: 1 2 3 4 [5] 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines