martes, 15 de diciembre de 2009

Sitio Web Dedicado a la Animación Flash y Action Script

Una publicación mas:
Recomiendo ampliamente a "Banit Web" http://www.banditwebdesign.com/, he navegado en su website y me pareció una aportación muy importante de esta persona desde el país de Perú.
Visítenlo para aquellos que quieran aprender mas sobre Adobe Flash y Action Script. Saludos.

jueves, 10 de diciembre de 2009

::: 2 ( D O S ) :::A Ñ OS ::: Year ::: De Digital Design

El día de ayer 09 de Diciembre del 2009 (el primer post: http://adrymvweb.blogspot.com/2007/12/bienvenidos-digital-design-blog.html) cumplió mi Blog 2 Años de estar en la Web, publicando un promedio de 2 artículos por Mes.
Me tomaré estos días que restan del año en no publicar mas, así que nos vemos en Enero, con nuevos Temas, he estado aprendiendo nuevas cosas sobre programación, diseño gráfico y web que quisiera compartir en este nuevo año.
Me resta decirles la frase célebre de fin de año: "Feliz Navidad y Prospero Año Nuevo", saludos a todos los Internautas.
Su Amigo
Lic. Adrian Melo Villegas

domingo, 29 de noviembre de 2009

Archivos externos de Hojas de Estilos CSS en Páginas ASPX

Las hojas de estilo en cascada (en inglés Cascading Style Sheets), CSS es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirán de estándar para los agentes de usuario o navegadores.
La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación.
A continuación muestro un ejemplo sencillo de un Archivo de Estilos CSS y como se utiliza en una página ASPX:
estilos.css:
/*Estilos CSS para controlar el formato a todos
los Elementos Webs de las Páginas*/body { background-image:
url(soporte/imagenes/fondo.jpg); background-repeat:
repeat;}
.menuNoActivo { font-family:Arial, Helvetica,
sans-serif; font-size: 14px; font-weight:
normal; color:#0000FF; text-align:center; font-style:inherit;}
.menuActivo
{ font-family:Arial, Helvetica, sans-serif; font-size:
14px; font-weight:
normal; color:#000000; text-align:center; font-style:inherit;}
.piePagina{ font-family:Arial,
Helvetica, sans-serif; font-size: 12px; font-weight:
normal; color:#000000; text-align:center; }
.textoEtiquetas{ font-family:Arial,
Helvetica, sans-serif; font-size: 18px; font-weight:
normal; color:#000000; text-align:center; }
.textoNormal{ font-family:Arial,
Helvetica, sans-serif; font-size: 14px; font-weight:
normal; color:#000000; text-align:center; }
.tablaGrid{ font-family:Arial,
Helvetica, sans-serif; font-size: 12px; font-weight:
normal; color:#000000;}
pagina.aspx:
link href="../estilos.css" rel="stylesheet"
type="text/css"

domingo, 18 de octubre de 2009

Store Procedure para Insertar un Registro con SQL Server 2005 y C#.net

Este es un ejemplo sencillo de un procedimiento almacenado para insertar un registro, suponemos que tenemos una tabla en nuestra base de datos que se llame "Alumnos" con los campos:
- matricula
- nombre
- apellidoPaterno
- apellidoMaterno
El procedimiento almacenado lo llamaremos "InsertarAlumno" y para crearlo escribiremos el siguiente código en el "Analizador de Consultas" de SQl Server 2005:
Use NombreDeNuestraBD
CREATE PROCEDURE
dbo.InsertarAlumno
(
@matricula
nvarchar(10),
@nombre
nvarchar(100),
@apellidoPaterno
nvarchar(100),
@apellidoMaterno
nvarchar(100)
)
AS SET NOCOUNT ON
INSERT INTO Alumnos(matricula,
nombre, apellidoPaterno, apellidoMaterno)
VALUES
(@matricula, @nombre, @apellidoPaterno, @apellidoMaterno)
A continuación en nuestro proyecto de Visual Studio crearemos el siguiente método que puede ir en una Clase de Acceso a Datos:
public void GuardarAlumno(string
matricula, string nombre, string apellidoPat, string
apellidoMat)
{
Conectar();
SqlCommand comando = new
SqlCommand("InsertarAlumno",
conexion);
comando.CommandType =
CommandType.StoredProcedure;

comando.Parameters.Add("@matricula",
SqlDbType.NVarChar);
comando.Parameters.Add("@nombre",
SqlDbType.NVarChar);
comando.Parameters.Add("@apellidoPaterno",
SqlDbType.NVarChar);
comando.Parameters.Add("@apellidoMaterno",
SqlDbType.NVarChar);
comando.UpdatedRowSource =
UpdateRowSource.None;
comando.Parameters[0].Value =
matricula;
comando.Parameters[1].Value =
nombre;
comando.Parameters[2].Value =
apellidoPat;
comando.Parameters[3].Value =
apellidoMat;
comando.ExecuteNonQuery();
Desconectar();
}
En nuestro formulario podemos llamarlo desde un botón pasando los parámetros necesarios del Método:

private void btnGuardar_Click(object sender, EventArgs
e)
{
BaseDatos.GuardarAlumno(textMatricula.Text, textNombre.Text,
textApellidoPaterno.Text,
textApellidoMaterno.Text);
}

Espero que haya sido entendible el crear un procedimiento almacenado y ejecutarlo en un proyecto de Visual Studio con C#.net.

domingo, 20 de septiembre de 2009

Crear y Ejecutar un Procedimiento Almacenado (Store Procedure) en C#.net

Una característica de muchos gestores de bases de datos como Sql Server, es que permiten guardar las consultas para poder ejecutarlas desde nuestro código. Asi conseguimos abstraer nuestra lógica de datos de nuestra lógica de negocio. En Sql Server estas consultas se llaman "Procedimientos Almacenados". Un ejemplo de esto es:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE dbo.sp_test

-- Add the parameters for the stored procedure here

@IdFoo int
AS
BEGIN
SELECT
*

FROM
Foo

WHERE
IdFoo = @IdFoo

END
GO SET ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.sp_test
-- Add the
parameters for the stored procedure here
@IdFoo
int
AS
BEGIN
SELECT
*
FROM
Foo
WHERE
IdFoo =
@IdFoo
END
GO


Este procedimiento recibe como parametro el entero @IdFoo, y busca en la tabla Foo, un registro que tenga el campo IdFoo igual al parametro de entrada @IdFoo. Para llamar este procedimiento de almacenado desde nuestro código tan sólo debemos hacer lo siguiente

public void ExecuteStoreProcedure(int idFoo)
{

using (SqlConnection connection = new SqlConnection(connectionString))

{

using (SqlCommand command = new SqlCommand())

{
connection.Open();


command.Connection = connection;

command.CommandType = System.Data.CommandType.StoredProcedure;

command.CommandText = "sp_test";

command.CommandTimeout = 10;


command.Parameters.AddWithValue("@IdFoo", idFoo);


SqlDataReader reader = command.ExecuteReader();

}
}
} public void
ExecuteStoreProcedure(int idFoo)
{
using (SqlConnection connection = new
SqlConnection(connectionString))
{
using (SqlCommand command = new
SqlCommand())
{
connection.Open();
command.Connection =
connection;
command.CommandType =
System.Data.CommandType.StoredProcedure;
command.CommandText =
"sp_test";
command.CommandTimeout =
10;
command.Parameters.AddWithValue("@IdFoo", idFoo);
SqlDataReader reader
= command.ExecuteReader();
}
}
}


Como vemos es muy fácil, creamos una conexión, y un comando. A este comando le decimos que ejecutará el procedimiento sp_test y le pasamos el parametro idFoo como @IdFoo. El resultado de la consulta se guarda en un SqlDataReader. Ahora podremos recorrer este SqlDataReader para devolver algún dato o pasar la información a un objeto de negocio.
La principales ventajes de los procedimientos almacenados son:

  • Evita en parte los molestos ataques por inyección sql (sql injection).
  • La velocidad de la consulta es mayor.
  • Toda la logica de acceso a datos se encuentra en la base de datos.

domingo, 13 de septiembre de 2009

Microsoft Visual Studio 2010 Beta 1

Hace unos días descargué de la página oficial de Microsoft la primera Beta de la Suite de Visual Studio 2010, lo instalé en mi equipo para empezar a probar las nuevas funcionalidades que posee. aquí les muestro algunas pantallas que capturé durante la instalación y tambien en el primer uso que le dí en mi comptadora.Antes de continuar instalando lo único que difiere de las instalaciones de las versiones anteriores es que pide seleccionar entre dos tipos de soporte de la instalación como "Entorno de Desarrollo en .NET" o como "Entorno de Desarrollo de C++" obviamente el que se elige mayormente es la primera opción.La instalación personalizada permite escoger los elementos que necesitaremos en nuestro entorno en ejecución, en donde podemos elegir entre los lenguajes de programación que instalaremos para utilizarlos posteriormente, cabe destacar que en esta versión 2010 se implementa un nuevo lenguajes de programación llamado "F#". En la página oficial de microsoft existe documentación sobre este nuevo lenguaje.
Se procede con los pasos básicos para la instalación, un poco diferente la interfaz de instalación hasta terminar los procesos necesarios.
Reiniciamos la computadora y procederemos a abrir nuestro Visual Studio con el IDE que se encuentra como siempre en el menú inicio, y esta es la interfaz principal de inicio:
Vamos a crear un nuevo proyecto para que vean como es la interfaz en donde se crean los proyectos nuevos de los lenguajes instalados.

Voy a insertar un botón y lo programaré para mostrar un mensaje en pantalla, esto lo hago con la intención de que observen las herramientas de desarrollo y el editor de código mejorado, el aspecto visual para programar es mucho mejor que las versiones anteriores.


Y esto fue una visita rápida en Visual Studio 2010 Beta 1, para que ya se vayan familiarizando en esta nueva versión, con muchas mejoras para nosotros como desarrolladores y eso hace que nuestras aplicaciones sean elaboradas cada vez mas rápidas y con mayor calidad.

domingo, 30 de agosto de 2009

Windows Live Writer

liveWriter

Es un programa gratuito de la suite “Windows Live” que sincroniza nuestro blog (Blogger, WordPress, Freewebs, etc.) permitiendo diseñar nuestros artículos en forma local con el programa y luego subirlo al servidor que contiene nuestro blog, es muy fácil de configurar, tan solo descarguen la versión Live para Messenger e instalen la opción “Live Writer” lo único que solicitará al ejecutar el programa es lo siguiente:

  • Proveedor de Servicios del Blog
  • Dirección Web del Blog
  • Usuario y Contraseña

Contiene opciones muy fáciles de utilizar para diseñar nuestros Post y publicarlos en nuestro Blog una vez sincronizado.

envioArticulo

domingo, 16 de agosto de 2009

Channel 9

Channel 9 es una comunidad de desarrolladores de todo el mundo pertenecientes al TI de Microsoft Corp, recomiendo ampliamente este Blog por su contenido para desarrolladores en .NET y sobre todo la nueva tecnología de código abierto "ASP.net AJAX".

Lo que destaca mas de este blog son los Videotutoriales en línea sobre las nuevas tecnologías .NET y lo mas asombroso que se pueden descargar en nuestras computadoras ya que estan hechos en Silverlight.

Les dejo el link de la página principal:
http://channel9.msdn.com/

sábado, 8 de agosto de 2009

Microsoft Windows 7



Windows 7 (anteriormente conocido con nombre código Blackcomb, y luego Vienna) es la última versión de Microsoft Windows, un sistema operativo producido por Microsoft Corporation para uso en PCs, incluyendo equipos de escritorio en hogares y oficinas, Notebooks, tablet PCs, netbooks y equipos media center.
A diferencia de su predecesor, Windows 7 es una actualización incremental del núcleo
NT 6.0, esto con la meta de mantener cierto grado de compatibilidad con aplicaciones y hardware en los que su antecesor Windows Vista ya era compatible. Las metas de desarrollo para Windows 7 fueron el mejorar su interfaz para hacerla más amena al usuario, con nuevas características que permiten hacer tareas de una manera más fácil y rápida, al mismo tiempo en que se realizaron esfuerzos para lograr un sistema más ligero, estable y rápido. Diversas presentaciones dadas por la compañía en el 2008 se enfocaron en demostrar capacidades táctiles multi-touch, una interfaz rediseñada junto con una nueva barra de tareas y un sistema de redes domésticas denominado Grupo en el Hogar, además de mejoras en el rendimiento.

viernes, 10 de julio de 2009

Uso de las Sentencias SQL Select, Insert, Update y Delete en Visual Basic .NET

A petición de unos jóvenes que programan en Visual Basic .NET he publicado el siguiente post donde explico detalladamente estas operaciones básicas hacia una Base de Datos.
Se supone que ya se tiene creado un proyecto en donde vamos agregar los elementos que se describen a continuación.
1. Se agrega un archivo de Clase de Visual Basis .NET lo guardamos con cualquier nombre (en mi caso lo nombre AccesoBd.vb)
2. Dentro de esa clase de VB.net copiamos los siguientes Namespaces (Librerias de Clases) y lo pegamos en la parte de arriba de nuestro archivo de clase.
Imports System
Imports System.Diagnostics
Imports System.Data
Imports System.Data.Odbc
3. Dentro de nuestro cuerpo de la clase copiamos el siguiente código, que son los métodos que vamos a utilizar desde cualquier formulario que hagamos.
Dim conexion As New OdbcConnection("dsn=bd;")
Public Sub conectar()
Try
conexion.Open()
Catch ex As Exception
Trace.WriteLine(ex.ToString())
End Try
End Sub
Public Sub desconectar()
Try
conexion.Close()
Catch ex As Exception
Trace.WriteLine(ex.ToString())
End Try
End Sub
Public Function consultaDS(ByVal sqlCad As String) As DataSet
Dim ds As New DataSet()
Try
Dim adaptador As New OdbcDataAdapter(sqlCad, conexion)
adaptador.Fill(ds)
Catch ex As Exception
Trace.WriteLine(ex.ToString())
End Try
Return ds
End Function
Public Function EjecutarSql(ByVal cadenaSQL As String) As OdbcCommand
Dim orden As New OdbcCommand(cadenaSQL, conexion)
Return orden
End Function
4. Se supone tambien que el lector ya sabe realizar conexiones de ODBC hacia Base de Datos por DSN de Sistema.
5. En la clase que se mostró en la parte de arriba se creó un objeto que se llama "conexion" de tipo "OdbcConnection" para conectarnos a la Base de Datos (Access, SQL Server, VisualFoxPro) mediante DSN de Sistema.
6. SI observaron bien existen 4 métodos: conectar(), desconectar(), consultaDS(ByVal sqlCad As String) As DataSet y EjecutarSql(ByVal cadenaSQL As String) As OdbcCommand.
7. Los primeros dos métodos nos conectan y desconectan de la Base de Datos respectivamente, el método consultaDS() se utiliza para consultar datos mediante una instrucción SQL y EjecutarSql() permite ejecutar las instrucciones INSERT, UPDATE y DELETE.
8. Bueno ya construimos la Clase que nos permitirá manipular cualquier dato de una Base de Datos. Ahora imaginemos que tenemos un formulario con 3 textBox (Nombre, Apellidos y Edad), la tabla en la Base de Datos se llama "Personas", nuestros codigos irían de la siguiente forma:
En la parte de arriba Pegamos la declaraciones de los siguientes Namespaces:
Imports System
Imports System.Diagnostics
Imports System.Data
Imports System.Data.Odbc
Dentro de la clase del formulario pegamos lo siguiente:
Dim BaseDatos As New AccesoBD()
Dim ordenSql As New OdbcCommand()
Dim sql, nombreBusqueda As String
9. En el botón "Insertar" pegamos lo siguiente:
BaseDatos.conectar()
sql = "INSERT INTO Personas VALUES ('" + textNombre.Text + "','" + textApellidos.Text + "','" + textEdad.Text + "')"
ordenSql = BaseDatos.EjecutarSql(sql)
ordenSql.ExecuteNonQuery()
BaseDatos.desconectar()
MsgBox("Registro Guardado con Éxito", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
10. En el botón "Modificar" pegamos lo siguiente:
BaseDatos.conectar()
sql = "UPDATE Personas SET Apellidos= '" + textApellidos.Text + "', Edad= '" + textEdad.Text + "' WHERE Nombre = " + textNombre.Text + ""
ordenSql = BaseDatos.EjecutarSql(sql)
ordenSql.ExecuteNonQuery()
BaseDatos.desconectar()
MsgBox("Registro Modificado con Éxito", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
11. En el botón "Eliminar" pegamos lo siguiente:
BaseDatos.conectar()
sql = "DELETE FROM Personas WHERE Nombre= " + textNombre.Text.Trim() + "" ordenSql = BaseDatos.EjecutarSql(sql)
ordenSql.ExecuteNonQuery()
BaseDatos.desconectar()
MsgBox("Registro Eliminado con Éxito", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
12.Y Con eso tenemos Insertamos, Modificamos y Eliminamso registros, ahora para consultar los datos pegamos lo siguiente en el botón "Ver Datos":
Try
nombreBusqueda= InputBox("Teclee Nombre de la Persona")
BaseDatos.conectar()
sql = "SELECT * FROM Personas WHERE nombre= " + nombreBusqueda + ""
Dim datos As New DataSet()
datos = BaseDatos.consultaDS(sql)
textNoombre.Text = datos.Tables(0).Rows(0).ItemArray.GetValue(0).ToString()
textApellidos.Text = datos.Tables(0).Rows(0).ItemArray.GetValue(1).ToString()
textEdad.Text = datos.Tables(0).Rows(0).ItemArray.GetValue(2).ToString()
BaseDatos.desconectar()
Catch ex As Exception
MsgBox("El Nombre no se encuentra", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly)
End Try
Y eso es todo, este es un ejemplo sencillo, espero y sea entendible, no coloque como quedaría el Formulario pero ustedes con un poco de imaginación ya se imaginan como quedaría, inténtenlo y publiquen aquí mismo sus dudas y comentarios.

domingo, 28 de junio de 2009

Utilizando Visual Studio 2008, Framework 3.5

Recomiento ampliamente utilizar Visual Studio 2008 y mucho mas recomendable para los que trabajan con Windows Vista, el 2008 no es mas pesado, no alenta la computadora porque en lo personal tengo 4 meses trabajando con el VS 2008 y se siente mas estabilidad, mejor entorno y lo mejor de todo que tambien trabaja sin nigún inconveniente en Windows XP.

Con respecto a la programación lo único que difiere es que en el paquete se eliminó ya el VJ#.net, es lo mejor que hicieron ya que ese lenguaje derivado de Java y C pues no ha tenido mucho auge aun desde cuando se llamaba J++ en VS Studio 6.0.


Por lo demás tenemos los lenguajes que hemos utilizado desde el VS 2002 C#.net, VB.net y C++.net, así tambien como el VWeb Developer para programación de Sitios en ASP.net en la versión 3.0 de este lenguaje.


Por este lado de las herramientas de desarrollo que crea Microsoft osea lo que es el Visual Studio y en particular esta versión no tengo queja alguna, lo recomiento ampliamente, migren a la versión 2008.
A continuación enlisto una de las tantas mejoras que trae:
  • Visual Studio 2008 permite incorporar características del nuevo Windows Presentation Foundation sin dificultad tanto en los formularios de Windows existentes como en los nuevos. Ahora es posible actualizar el estilo visual de las aplicaciones al de Windows Vista debido a las mejoras en Microsoft Foundation Class Library (MFC) y Visual C++. Visual Studio 2008 permite mejorar la interoperabilidad entre código nativo y código manejado por .NET. Esta integración más profunda simplificará el trabajo de diseño y codificación.
  • LINQ (Language Integrated Query) es un nuevo conjunto de herramientas diseñado para reducir la complejidad del acceso a Base de Datos, a través de extensiones para C++ y Visual Basic así como para Microsoft .NET Framework. Permite filtrar, enumerar, y crear proyecciones de muchos tipos y colecciones de datos utilizando todos la misma sintaxis, prescindiendo del uso de lenguajes especializados como SQL o XPath.
  • Visual Studio 2008 ahora permite la creación de soluciones multiplataforma adaptadas para funcionar con las diferentes versiones de .Net Framework: 2.0. (Incluido con Visual Studio 2005), 3.0 (incluido en Windows Vista) y 3.5 (incluido con Visual Studio 2008).
  • .NET 3.5 incluye biblioteca ASP.NET AJAX para desarrollar aplicaciones web más eficientes, interactivas y altamente personalizadas que funcionen para todos los navegadores más populares y utilicen las últimas tecnologías y herramientas Web, incluyendo Silverlight y Popfly.

viernes, 26 de junio de 2009

El Objeto TimeSpan en C#.net

Un objeto TimeSpan representa un intervalo de tiempo medido como número positivo o negativo de días, horas, minutos, segundos y fracciones de segundo. La unidad de tiempo más grande utilizada para medir la duración es un día. Los intervalos de tiempo se miden en días por cuestión de coherencia, ya que el número de días en unidades de tiempo mayores, como meses y años, varía.
Veamos un pequeño ejemplo en que queremos medir el tiempo que tarda en ejecutarse cierto proceso:
DateTime inicio = DateTime.Now;
// EJECUCIÓN de un proceso
DateTime final = DateTime.Now;
TimeSpan duracion = final - inicio;
double segundosTotales = duracion.TotalSeconds;
int segundos = duracion.Seconds;
Como vemos, se recoge el momento de inicio, se ejecuta el proceso (por ejemplo mil accesos a una base de datos) y se recoge el final. Calculamos la diferencia, que nos da el resultado en TimeSpan, y almacenamos en una variable double el total de segundos transcurridos, y en una variable int los segundos... pero, ¿Cuál es la diferencia?Por ejemplo, si el proceso ha tardado en ejecutarse un minuto y medio, TotalSeconds nos devuelve el total de los segundos, es decir 90, mientras que Seconds nos devuelve los segundos que veríamos, por ejemplo, en un reloj digital, es decir 30.
Esto es muy importante saberlo, y lo mismo sucede con Days - TotalDays, Minutes - TotalMinutes y el resto de unidades de medida... personalmente tuve algunos problemas con esto, pues yo quería averiguar los segundos totales y le pedía duracion.Seconds... y errores como éste son muy difíciles de localizar.
Para finalizar sólo decir que el TimeSpan se puede sumar y restar entre sí muy fácilmente con los típicos operadores '+' y '-' o con sus funciones Add y Substract.

domingo, 24 de mayo de 2009

Comparando Java, ASP.NET y PHP (Lenguajes de Programación que se ejecutan del lado del Servidor)

  • Sintaxis: Java es el que mejor sintaxis tiene, PHP aún usa '::' y '->' y algunas funciones podrían ser usadas dentro de los objetos y no como procedimientos. Para ASP.NET lo más sencillo es VB.NET.
  • Curva de aprendizaje: PHP es el más sencillo, aunque a mí me pasa que siempre tengo que estar mirando en algunas funciones el orden de los parámetros porque a veces no siguen la misma lógica. ASP.NET también es bastante sencillo y J2EE el más complicado de aprender.
  • Velocidad de desarrollo: ASP.NET es el más rápido, debido a la cantidad de componentes que tiene que te hacen todo el trabajo. PHP es rápido si se usa algún framework. J2EE es el más lento.
  • Plataforma: PHP trabaja mejor en LAMP, aunque funciona también en otras plataformas, ASP.NET es Windows y J2EE trabaja bien en cualquier plataforma.
  • Base de datos: normalmente es MySQL para PHP, Oracle para J2EE y MSSQL para ASP.NET.
  • IDE (Integrated Development Environments): ASP.NET tiene Visual Studio que es una gran aplicación, pero de coste elevado. J2EE tiene varias herramientas comerciales, pero Eclipse es la mejor (incluso alguna de las comerciales como WASD está basada en Eclipse). Para PHP no existe una que destaque sobre las demás, aunque también puedes usar Eclipse.
  • Soporte orientado a objetos: J2EE y ASP.NET son los mejores, aunque PHP ha mejorado en las últimas versiones.
  • Seguridad: J2EE parece el más seguro, aunque PHP tiene mala fama, pero es debido sobre todo a los desarrolladores, no al lenguaje de programación. ASP.NET tiene también mala fama debido a fallos de seguridad debidos a Windows.
  • Rendimiento: Suele ganar PHP en cuestión de velocidad y recursos. J2EE es más pesado, parecido a ASP.NET.
  • Servidor Web: ASP.NET solo funciona con IIS, PHP y J2EE tiene versiones comerciales y open source.
  • Librerías y frameworks: Todos tiene muchas librerías y frameworks disponibles, siendo para PHP y J2EE la mayoría gratuitas y open source.
  • Soporte y comunidad: para ASP.NET la mayoría de los foros, grupos de usuarios y comunidades de desarrolladores están manejados por Microsoft, mientras que para PHP y J2EE existen muchos grupos independientes.
  • Coste: PHP es la alternativa totalmente gratuita, ASP.NET tiene licencias bastante caras, mientras que J2EE puede desarrollarse con herramientas gratuitas y de pago.

domingo, 10 de mayo de 2009

Visual Studio 2010 y .Net Framework 4.0

Dentro lo nuevo que trae tenemos:
    • Soporte a multiples diagramas incluyendo UML

    • Un nuevo Architect Explorer

    • Inclusión de caraterísticas enfocadas a metodologías ágiles

    • Con el nuevo Test Impact View ahora podremos identificar y ejecutar solo aquellas pruebas que son afectadas con un cambio en el código.

    • La opción de que los testers guarden la información de bugs incluyendo características del SO, estado de la memoria e incluso de una captura de video de la pantalla durante la ejecución de la prueba fallida, con la posibilidad de que el desarrollador pueda reproducir el error con toda la información posible

    • Se han unificado las versiones Develpment y Database en una sola

viernes, 10 de abril de 2009

Enviar Correo Electrónico con CSharp.net

Es posible enviar un correo electrónico mediante C#, mediante las clases System.Net, System.Net.Mail y System.Net.Mime

En el siguiente ejemplo se muestra un formulario que envia un simple correo electrónico a través del Servidor SMTP de GMAIL y se le adjunta una imagen ".jpg"
Clases que se deben de declarar:
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
//Se crea un Objeto llamado "msg" de la
clase
"MailMessage"

System.Net.Mail.MailMessage msg = new
System.Net.Mail.MailMessage();


//Se establece el destinatario

msg.To.Add("adrianmevi@hotmail.com");


/*Se establece el remitente, asi como el nombre que aparecerá en la

bandeja de entrada, así como el formato de codificación
*/

msg.From = new MailAddress("adrianmevi@gmail.com",
"Soy adry", System.Text.Encoding.UTF8);


//Se establece el asunto del mail

msg.Subject = "Prueba de envío de correo desde Cuenta Gmail en c# by
adryan";


//Formato de codificación del Asunto

msg.SubjectEncoding =
System.Text.Encoding.UTF8;


//Se establece el cuerpo del mail
msg.Body
= "Si veo este correo en una cuenta mía esque si se pudo jjejejejej !!!! by
adryan";


//Se establece la
codificación del Cuerpo

msg.BodyEncoding =
System.Text.Encoding.Unicode;


//Se indica si al cuerpo del mail, se interpretara como código
HTMl

msg.IsBodyHtml =
false;


//Se establece la cadena de texto con la ubicación del archivo a
adjuntar
string
file =
"d:/foto.jpg";

//Se adjunta el archivo

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

ContentDisposition disposition = data.ContentDisposition;

disposition.CreationDate = System.IO.File.GetCreationTime(file);

disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);

disposition.ReadDate = System.IO.File.GetLastAccessTime(file);

msg.Attachments.Add(data);


//Se prepara el envio del mail creando un objeto de tipo
SmtpClient

SmtpClient client = new
SmtpClient();


//Se establecen las credenciales para enviar el mail, muy importante
autentificarse con la cuenta de correo y la contraseña

client.Credentials = new System.Net.NetworkCredential("adrianmevi@gmail.com",
"*************");


//Se establece el puerto de envio

client.Port =
587;


//Se establece el servidor SMTP, en este caso GMAIL

client.Host =
"smtp.gmail.com";

//Seguridad SSL si o
no

client.EnableSsl = true;


//Se envia el Mail controlando la
ecepción

try

{

client.Send(msg);

}
catch
(System.Net.Mail.SmtpException
ex)

{

MessageBox.Show(ex.Message);

}
Este código puede ir en el evento clic de un botón, en el evento load de un form o en donde se requiera colocarlo.
Como se menciono antes, es necesario contar con las clases indicadas, así como el archivo a adjuntar. Acerca de las credenciales, es importante tener una cuenta de correo electrónico en el cual podamos utilizar su servidor SMTP. GMAIL lo permite, pero parece ser que Hotmail no. Habría que probar con algún otro servidor de correo, como sería nuestro proveedor de internet, el del trabajo, etc.

domingo, 5 de abril de 2009

Mostrar un MessageBox en una página ASP.net

Si es posible mostrar un MessageBox al estilo de un Form de Windows, el único inconveniente esque el mensaje aparece como un elemento externo, si no me entiendes hasta este momento lo entenderás al fina, los pasos son sencillos y aquí te lo pongo (Estos pasos que coloco son mi lógica de programación si alguien puede mejorarlo y lo publica en otro sitio de internet estaría muy agradecido que como referencia coloque mi dirección web).

Antes que nada se supone que ya saben crear un nuevo sitio en Visual Studio 2005 y que ya se tiene agregado un form por lo menos el "Default.aspx".

Se inserta un ASPBUTTON dentro del form (este es solo un ejemplo sencillo) le configuramos las propiedaades que nosotros queramos, yo le cambie el text a "Mostrar Mensaje" y el id del botón a "btnMostrarMensaje".

Le damos clic derecho en el explorador de soluciones y elegimos la opción "Agregar Referencia".

Nos aparece la siguiente Ventana; y elegimos el ensamblado "System.Windows.Forms" que es el contiene el espacio de nombres (namespace) System.Windows.Forms el utilizado en los programas de "WindowsForms", cosa muy diferente en los programas con ASP.net que son "WebForms".

Lo seleccionamos y damos clic en "Aceptar", hasta ahora solo hemos agregado el ensamblado.
En la página de código agregamos el "Espacio de Nombres" "System.Windows.Forms" declarándolo en el encabezado de Namespaces.

En el evento "clic" del Botón escribimos el código correspondiente para mostrar un mensaje con el objeto "Message" y su método "Show()" este ejemplo está en c#.net pero es lo mismo para VB.net.

Listo!!!, ya tienes tu mensaje emergente de Windows y NO es un JavaScript!!!, ejecútalo y compruebalo, te aparederá de la siguiente forma:
¿Ven el inconveniente? El mesaje ocupa un lugar en la barra de tareas independiente de la página. Si alguien lo mejora que me lo haga saber, saludos a todos.

domingo, 22 de marzo de 2009

Ventajas de una Computadora Mac.

Hace todo lo que hace una PC, sólo que mejor.
Una Mac incorpora todos los componentes esenciales, incluyendo la última tecnología inalámbrica, chips Intel avanzados y un sólido sistema operativo que está lleno de innovaciones.


Nació lista.

A diferencia de otras computadoras que necesitan que emplees muchas horas en configurar dispositivos, una Mac se conecta a tu cámara digital, dispositivo inalámbrico o unidad externa, y listo. Ya está realmente funcionando.


Tecnología inalámbrica al instante.
Una Mac hace que lo inalámbrico sea sencillo. Las redes aparecen automáticamente y, con sólo un par de clics, puedes conectarte a Internet.



Siempre al día.
Una Mac verifica actualizaciones regularmente para Mac OS X y para cualquier software Apple incluido, y las descarga automáticamente. Realmente, una Mac se pone mejor con los años.



Mac OS X Leopard
Ningún otro sistema operativo –incluido Vista- ofrece la innovación y simplicidad de Mac OS X. Con Mac OS X Leopard, la Mac va aún más allá con nuevas características que te permiten hacer más con menos esfuerzo.

jueves, 12 de marzo de 2009

Uso de la Sentencia sql "LIKE" en ASP.net

La mayoría de las operaciones con registros hacia una base de datos (Oracle, SQL Server, MySql, Access, etc) se resumen en practicamente 4 principales:
- Consultar
- Ingresar Registrar
- Modificar
- Eliminar
Que su equivalente en el lenguaje Universal SQL son:
- SELECT
- INSERT
- UPDATE
- DELETE
En esta ocación voy a colocar un ejemplo de una consulta de tipo SELECT utilizando tambien LIKE que devuelve las coincidencias encontradas segun los parámetros dentro del LIKE, este código funciona en ASP.net con C#.net y en cualquier entorno tambien .NET (J#.net, VB.net, COBOL.net, etc):

BaseDatos.Conectar();
GridView1.DataSource = BaseDatos.ConsultaDS("SELECT claveEmpleado, nombre,
apellidoPaterno, apellidoMaterno, sexo, FechaNacimiento, correoElectronico,
telefono, fechaIngreso, status FROM Empleados WHERE apellidoPaterno LIKE ('" +
TextApellidoPaterno.Text + "%')");
GridView1.DataBind();
BaseDatos.Desconectar();

Lo importante es en :

WHERE apellidoPaterno LIKE ('" + TextApellidoPaterno.Text + "%')

Que esta indicando que la consulta SELECT devolverá todas las filas que coincidan al principio con lo que se escriba en el TextBox.
Por ejemplo:
Si en mis registros de la tabla en mi base de datos tengo en el campo "apellidoPaterno" :Peña, Perera, Prieto, Palomeque, y en el textbox para consultar escribo "pe" me devolvera las filas que contienen el nombre Peña y Perera.
Espero y les sirva a algunos, porque esto los master ya lo saben muy bien.

domingo, 1 de marzo de 2009

Cadena de Conexión SQL

Esta es una típica cadena de conexión para SQL Server:
Data Source = ServidorSQL; Initial Catalog = BaseDatos; Integrated Security =
True


Ahora observemos esta cadena:
Data Source = '" + System.Environment.MachineName.ToString() + "'; Initial
Catalog = BaseDatos ; Integrated Security = True

La diferencia que radica en la segunda este utilizamo una propiedad del Espacio de Nombre "System" para poder saber el nombre del servidor que hace referencia para acceder a la Base de Datos. Quiere decir que si yo cambio mi proyecto a cualquier computadora y se conectará a la Base de Datos sin ningún problema.

domingo, 22 de febrero de 2009

Archivo de Configuración para ASP.NET "web.config"

Este tipo de archivos contienen valores específicos de una aplicación, valores de configuración que puede leer la aplicación y valores que lee el CLR.

Supongamos que tenemos una plicación web cuya base de datos tiene que ser migrada deservidor, esto nos obliga a cambiar la cadena de conexión para nuestras operaciones.

Si tenemos la cadena de conexión dentro de nuestras páginas asp,estamos obligados a recompilar el código, operación que no puede ser del todoútil ya que posiblemente tendremos que volver a mandar al servidor que alojanuestra aplicación el resultado de la compilación.

El otro panorama es tener la Configuración de la cadena de conexión dentro del archivode configuración mediante
como se muestra a continuación:
/> value="user" /> />

En cuyo caso, será tomada por nuestra aplicación de la siguiente forma:
miConexion = New OleDb.OleDbConnection(
_
"Provider=SQLOLEDB;Data source=" &
ConfigurationSettings.AppSettings("gsServidor") &
_
";initial catalog=" & ConfigurationSettings.AppSettings("gsBD") &
_
";user id=" & ConfigurationSettings.AppSettings("gsUsuario") &
_
";password=" & ConfigurationSettings.AppSettings("gsPassword"))

De esta manera basta con editar el archivo de configuración cada vez que sea necesariocambiar algún parámetro de nuestra cadena de conexión.

domingo, 11 de enero de 2009

Autenticación por Formularios en ASP.Net y C#

Quiero hacer un paréntesis, este blog tiene ya mas de DOS AÑOS en línea con un Promedio de Publicaciónes de 3 Post por Mes, me siento contento al saber que mas de un Post publicado aquí le haya servido a alguien. Gracias a todos los internautas (Programadores, Diseñadores, público en general).

Seguiemos entonces, existen TRES tipos de Autenticaciones en ASP.Net (Windows Mode, Con Credenciales de ASP.Net que es el Passport, y la de Formularios) en este tema explicaré como autentificarse por formularios.

Para empezar modificaremos el archivo Web.config de nuestro proyecto, en la etiqueta de Auhentication mode... lo cambiaremos por lo siguiente :

=".ASPXAUTH" loginUrl="login.aspx" protection="All"
timeout="60"/>


.ASPXAUTH: Es el tipo de cifrado de datos.
login URL: la pagina que servirá como pagina para autentificarse
protection: Todas las configuraciones por default
timeout: Tiempo de caducidad de la sesión


Haremos el login, con las herramientas de formulario del Visual Studio, yo ya tengo uno hecho:

Cualquier petición a una página si el usuario no esta autentificado se redireccionará automáticamente a esta página de login para validarse como usuario.