Ejemplos: Atlas

En este artículo vamos a hacer un ejemplo “muy original” cogeremos la base de datos de ejemplo Northwnd y vamos a filtrar los Costumers según su ciudad, ya os dije que era original :P. Para ello es necesario que tengáis instaladas las plantillas de Atlas para Visual Studio 2005 (VS2005) o Visual Web Developer (VWD).

Lo primero que haremos será crear una nueva plantilla de Atlas y  copiamos la base de datos en nuestra aplicación Web para usar el SQL Express, luego creamos un Dataset, al que llamaremos CostumersDS, con un método: FillByCity (Figura 1).


Figura 1 – FillByCity

Una vez que ya tenemos el Dataset listo (Figura 2), pues nos vamos a la página principal.


Figura 2 – CostumersDS

En nuestra página principal añadimos un UpdatePanel y debajo un UpdateProgress. Modificamos la plantilla de error del ScriptManager (que se creó por defecto), activamos la propiedad EnabledPartialRendering del SmartTag y la ProgressTemplate del UpdateProgress (Figura 3)


Figura 3 – Templates

Ahora en el UpdatePanel añadimos un DropDownList y un GridView. El DropDownList lo llenaremos con un SQLDataSource al que lo llenamos con la sentecia de la figura 4 y el GridView lo llenamos con el DataSet usando el método FillByCity obteniendo el parámetro City del DropDownList (Figura 5).


Figura 4 – SQLDataSource

 


Figura 5 – Elementos colocados

El diseño lo he puesto a mi gusto, vosotros podéis ponerlo al vuestro, pero ahora solo queda una cosa, activar la propiedad Enable AutoPostBack del SmartTag del DropDownList.

¡Ya está listo! Ahora a probarlo… podéis ver el resultado en la Figura 6.


Figura 6 – Resultado

Como podéis haber observado el único código que hemos tenido que escribir en este ejemplo son las sentencias SQL y aún así con ayuda de un diseñador de sentencias, así que ya sabéis informaros sobre ASP.NET, os dejo los links de ASP.NET ahí abajo:

Enlaces:

¡¡David Carmona ya tiene blog!!

David Carmona inauguró su blog el lunes 12 de junio… y yo sin saberlo! La sorpresa me la lleve hoy cuando mi lector de RSS, bueno el Outlook 2007, descargo la siguiente entrada:


«David Carmona ya tiene blog


Después de hacer un intento en los blogs de GrupodeUsuarios.Net David Carmona tiene su propio blog , http://blogs.msdn.com/tropezones. Conociéndole seguro que no deberíamos dejar de leerlo.


Iñigo H.»


La fuente era Nuberos.NET.

La Invasión de los Robots…

Una iniciativa dirigida a desarrolladores de software que tiene como objetivo crear “robots” inteligentes que integrados dentro del programa de mensajería instantánea proporcionen de forma automática e interactiva respuestas e información a los usuarios, como si de una persona real se tratara. Consulta las bases del concurso en http://www.robotinvaders.com


Esta es la noticia que hoy, tras mi visita rutinaría por las webs más importantes, me encontraba en MSDN España.Os preguntaréis de qué se trata, pues es un concurso para hacer bots para el MSN Messenger, curioso…. ¿verdad?


Bueno ahi tenéis el link para que le podáis echar un vistazo: http://www.robotinvaders.com

Encriptación: Una clase que te puede simplificar las cosas

‘Este código que hoy os mando es fue desarrollado por mí y el amigo Elliott (dev4u.net@gmail.com) he dividido el trabajo de los 2 en Regiones, mi parte del trabajo es la región Contraseñas Hash y la de Elliott Encriptar/Desencriptar, yo comentaré mi parte, si tenéis alguna duda con su código contactad con él, o contactad conmigo para que os ponga en contacto con él.


 


‘Antes de que me olvide otra cosa, fue desarrollado con Visual Studio 2005, pero no tiene ningún problema en ser usado con Visual Studio .NET 2003 (a mi no me dio ningún conflicto).


 


Imports System


Imports System.IO


Imports System.Security


Imports System.Security.Cryptography


Imports System.Text


 


Public Class Criptologia



#Region «Contraseñas Hash»



    ‘Con esta función que tenemos aquí abajo, lo que haces es transformar la cadena en Bytes.


    Shared Function ConvertirCadenaEnMatrizDeTipoByte(ByVal Cadena As [String]) As [Byte]()


        Return (New UnicodeEncoding).GetBytes(Cadena)


        ‘Retornamos la cadena convertida.


    End Function



    ‘En esta función la cadena la convertiremos en Bytes con la función anterior, lo transformaremos en un valor Hash, encriptado con el algoritmo SHA512 y más tarde lo convertiremos en una cadena.



    Public Function EncriptarHash(ByVal ValorAEncriptar As String) As String


        Dim ValorToHash As [Byte]() = ConvertirCadenaEnMatrizDeTipoByte(ValorAEncriptar)


        ‘Declaramos la variable de tipo Byte y llamamos a ConvertirCadenaEnMatrizDeTipoByte y convertimos la cadena a encriptar en typo Byte


        Dim ValorHash As Byte() = CType(CryptoConfig.CreateFromName(«SHA512»), HashAlgorithm).ComputeHash(ValorToHash)


        ‘Encriptamos variable Byte en una cadena de tipo Byte, también.


        Return Convert.ToBase64String(ValorHash)


        ‘BitConverter.ToString(ValorHash)


        ‘Retornamos la variable de tipo Byte en String.


    End Function



    ‘Para comparar dos valores lo primero es enviar como parametros una cadena sin encriptar y otra cadena encriptada, con el mismo tipo de encriptación, y haciendo uso del mismo algoritmo, en nuestro caso usaremos Hash con el algoritmo SHA512. Luego encriptamos el valor si encriptar y comparamos los dos valores, retornando True si son iguales y False si son diferentes, esto lo podemos hacer con una simple sentencia IF.


    Public Function Comparar(ByVal ValorSinEncriptar As String, ByVal ValorEncriptado As String) As Boolean


        If EncriptarHash(ValorSinEncriptar) = ValorEncriptado Then


            Return True


        Else


            Return False


        End If


    End Function


#End Region


 


#Region «Encriptar/Desencriptar»


    Const StrClave As String = «EjemploDeCodigo»


    Public Function EncriptarTexto(ByVal CadenaAEncriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)


        Dim i As Integer, C As Integer


        Dim CadenaEncriptada As String


        If MantenerMayusculas = False Then


            Clave = Clave.ToUpper()


            CadenaAEncriptar = CadenaAEncriptar.ToUpper()


        End If


        If Len(Clave) Then


            For i = 1 To Len(CadenaAEncriptar)


                C = Asc(Mid$(CadenaAEncriptar, i, 1))


                C = C + Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))


                CadenaEncriptada = CadenaEncriptada & Chr(C And &HFF)


            Next i


        Else


            CadenaEncriptada = CadenaAEncriptar


        End If


        Return CadenaEncriptada


    End Function


 


    Public Function DesencriptarTexto(ByVal CadenaADesencriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)


        Dim i As Integer, C As Integer


        Dim CadenaDesencriptada As String


        If MantenerMayusculas = False Then


            Clave = Clave.ToUpper


        End If


        If Len(Clave) Then


            For i = 1 To Len(CadenaADesencriptar)


                C = Asc(Mid$(CadenaADesencriptar, i, 1))


                C = C – Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))


                CadenaDesencriptada += Chr(C And &HFF)


            Next i


        Else


            CadenaDesencriptada = CadenaADesencriptar


        End If


        Return CadenaDesencriptada


    End Function


#End Region


End Class

El bucle While (Mientras que)



Bueno, hoy por la mañana (17/05/2006), abrí correo y me encontre con un correo de estudiante de ingeniería civil en colombia, en el cual me decía que no entendia el ciclo mientras que (While) y me pedía si podía ayudarle con él. Bueno, pues aquí tenéis mi respuesta (os copio el email tal cual):


Bueno, pues claro que tienes mi ayuda. A ver, te refieres al bucle While. Pues te voy poner un ejemplo para que lo entiendas*.

Dim n As Integer = 1
Dim Cadena As String = «»
Do While n <= 10
cadena += n
n += 1
Loop

Ahora me preguntarás que qué hace ese código, pues bien, primero declaramos unas variables, n de tipo entero (Integer), y cadena de tipo cadena (String). Luego creamos el bucle:

Do While n <= 10

Loop

¿Qué significa? Pues bien que el código que se encuentre dentro del bucle (ahora las líneas en blanco) se va a ejecutar mientras n sea menor o igual a 10. Luego dentro incluiremos una concatenación de caracteres:

cadena += n

Y luego modificaremos n:

n += 1

Te preguntarás para qué modificamos n pues bien, si nosotros tenemos un bucle (repetición de sentencias) con una condicional (que n sea menor o igual a 10) si no modificamos n nunca será mayor que 10 para que se termine el bucle, ¿no crees? Bien, ahora bien, cuál será el resultado de este código, pues que cadena contenga la siguiente cadena: 12345678910. Una ultima cosa en la condicional si ponemos algo así:

Do While 1 = 1

Loop

¿Qué pasará? Pues que el código que lo contiene se ejecutará siempre. Así que ten cuidado. Bueno y otra cosa más. Podemos salir del bucle con una sentencia:

Exit While

Un saludo, y espero que lo entendieses, espero tus comentarios:D

*Este código lo hice con la versión 2005 Express Edition, gratuita.


Pues esto es todo, saludos.

C# un lenguaje desconocido para muchos



Desde la primera versión de .NET nos encontramos con un lenguaje nuevo en las tecnologías de microsoft. Se trata del C# (CSharp o CS). Es un lenguaje, que como muchos, viene derivado del C, otros lenguajes, muy conocidos, derivados de C son:


  • C++ (o Cpp): Es la versión orientada a objetos de C. Podemos encontrar dos versiones más importantes. La de Borland y la de Microsoft (compatible con .NET). Se puede decir que el cpp de Borland (ya que no usa el .NET Framework) es uno de los lenguajes más potentes. Pero también uno de los que más tiempo necesitarás para su aprendizaje y para tus desarrollos.
  • Java: Es un derivado de C de las manos de Sun Microsystems, actualmente su última versión es J2EE, usa un maquina virtual para ejecutar sus aplicaciones.

C# es uno de los lenguajes más usados de .NET junto con Visual Basic. Según diversas fuentes, un derivado de C# es el que utiliza la propia Microsoft para sus desarrollos. Aún no hace muchos meses conocíamos una noticia de que Microsoft estaba desarrollando un sistema operativo con C# simplemente por razones experimentales (no comerciales). Para su desarrollo usaron una mezcla de C# y Sing#, que es un derivado de Spec# (otro derivado de C#)*.


Como podéis ver C# tiene futuro, y además tiene una sintaxys que deja que envidiar a lenguajes como Visual Basic. Su sintaxys, no solo le deja rienda suelta al programador en cuanto a la extensión de las lineas, sino que puedes escribir varias sentencias en una misma linea. Por ejemplo:


string Cadena1 = «Cadena1»;
Cadena1 = «Texto1»;


Eso es lo mismo a:


string Cadena1 = «Cadena1»; Cadena1 = «Texto1»;


Como podéis ver podemos hacer uso del lenguaje como más cómodo nos sea.


Bueno, ya sabéis si usáis .NET, C# es una buena opción para programar.




*Noticia completa en VBPrincipiantes:
http://www.vbprincipiantes.com/Noticias.aspx?id=5