Wednesday, November 12, 2008

Patrones de diseño

Christopher Alexander, arquitecto de los años '60, creador del término de "Patrones de Diseño".
“Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.”

Los patrones de diseño son soluciones recurrentes al diseño de software. Son soluciones reutilizables para problemas comunes que se encuentran en el momento del desarrollo. Generalmente, un grupo de clases que resuelve de manera óptima un problema genérico a plicable a diferentes situaciones específicas.

Se clasifican en:

*Patrones de Creación: Inicialización y configuración de objetos.
*Patrones de estructura: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes.
*Patrones de comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.

PATRONES DE CREACIÓN

Fábrica Abstracta (Abstract Factory)
Proporcionar una interfaz que permite crear familias de objetos relacionados entre sí, sin especificar (ni conocer a priori) sus clases concretas.

Builder (Constructor virtual)

Abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto.

Método de Fabricación (Factory Method)
Centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la casuística para elegir el subtipo que crear.

Prototipado (Prototype)
Se basa en la clonación de ejemplares copiándolos de un prototipo.
SingletonEl patrón Singleton garantiza que una clase sólo tenga una instancia y proporciona un punto de acceso global a ésta instancia.

Singleton (Instancia única)
Garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia.

PATRONES DE ESTRUCTURA

Adaptador (Adapter)
Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.

Puente (Bridge)
Desacopla una abstracción de su implementación permitiendo modificarlas independientemente.

Objeto Compuesto (Composite)
Utilizado para construir objetos complejos a partir de otros más simples, utilizando para ello la composición recursiva y una estructura de árbol.

Envoltorio (Decorator)
Permite añadir dinámicamente funcionalidad a una clase existente, evitando heredar sucesivas clases para incorporar la nueva funcionalidad.

Fachada (Facade)
Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.

Peso Ligero (Flyweight)
Elimina la redundancia o la reduce cuando tenemos gran cantidad de objetos con información idéntica.

Apoderado (Proxy)
Mantiene un representante de un objeto.

PATRONES DE COMPORTAMIENTO

Cadena de responsabilidad (Chain of responsibility)
La base es permitir que más de un objeto tenga la posibilidad de atender una petición.

Orden (Command)
Encapsula una petición como un objeto dando la posibilidad de “deshacer” la petición.

Intérprete (Interpreter)
Intérprete de lenguaje para una gramática simple y sencilla.

Iterador (Iterator)
Define una interfaz que declara los métodos necesarios para acceder secuencialmente a una colección de objetos sin exponer su estructura interna.

Mediador (Mediator)
Coordina las relaciones entre sus asociados. Permite la interacción de varios objetos, sin generar acoples fuertes en esas relaciones.

Recuerdo (Memento)
Almacena el estado de un objeto y lo restaura posteriormente.

Observador (Observer)
Notificaciones de cambios de estado de un objeto.

Estado (Server)
Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo.

Estrategia (Strategy)
Utilizado para manejar la selección de un algoritmo.

Método plantilla (Template Method)
Algoritmo con varios pasos suministrados por una clase derivada.

Visitante (Visitor)
Operaciones aplicadas a elementos de una estructura de objetos heterogéne
a.

Thursday, October 23, 2008

Estilos De programación II

Continuando con las buenas prácticas de un programador :D les dejo lo siguiente:

1. Indentación
Sobre como indentar hay varios estilos tales como: Allman, K&R, BSD KN, Whitesmiths, etc.
El estilo Allman es el mejor, el cual dice que debemos usar los sangrados para indentar el código, nunca espacios. Poner las llaves de control en la línea subsiguiente.




2. Saltos de Línea
Añadir un salto de línea después del cierres de los paréntesis de los parámetros.
Añadir un salto de línea después un punto y coma, cuando termina la sentencia.




3. Espacios y líneas en blanco
Usar espacios en blanco para mejorar la legibilidad del código.
Usar espacios en blanco e ambos lados del operador de símbolos, después de comas y después de las declaraciones.
Usar líneas en blanco para separar trozos de código.
Usar líneas en blanco antes de cada método dentro de la clase.



4. Longitud de la línea
Evite las líneas de mas de 80 caracteres cuando supera se debe córtalo bajo los siguiente principios
Salto de línea después de la coma.
Salto de línea después de un operador.
Alinear la nueva línea con el principio de la expresión en el mismo nivel en la línea anterior.


Wednesday, October 22, 2008

Estilos De programación I

Entre las buenas prácticas de un programador, está el hacer uso de alguna convención de nombramiento ya sea de proyectos, archivos de código fuente e identificadores (campos, variables, métodos, propiedades, clases, interfases, etc. (depediendo del Leguaje de Programación))


¿Cuál es el objetivo de esta buena práctica? Implementar código fuente que sea legible, claro, consistente, fácil de comprender y mantener. 

A veces no será posible seguir en aquella empresa donde desarrollamos alguna aplicación y así que será otra la persona que se ocupe de su mantenimiento. Nuestro código debe tener la característica de que "otros" también puedan entenderlo sin máximo esfuerzo, costo y tiempo.

Las cosas podrían llegar a ser muy serias hasta el caso de que resultaría mejor volver a desarrollar ese sistema desde cero!

Bueno, pero como mencioné hace unas líneas arribas, una de las buenas prácticas es Convención de Nombres.

Entre los estilos, están los que siguen a continuación:

Camel Case: forma de escribir una palabra donde su primera letra está en minúsculas y la primera letra de las subsiguientes palabras en mayúsculas. Ejemplo: nombreCliente

Pascal Case: forma de escribir una palabra donde la primera letra está en mayúscula y la primera de las subsiguientes palabras igualmente en mayúscula. Ejemplo: NombreCliente

Estilo Mayúsculas: Todas las letras del identificador se encuentran en mayúsculas.

Estilo Minísculas: Todas las letras del identificador se encuentran en minúsculas.

Por defecto, algunos lenguajes de programación usan unos de estos estilos. Por ejemplo, 

Los que conocen JAVA, para nombrar las constantes, todo mayúscula. Para nombrar clases, usa PascalCase, para los métodos, usa camelCase.

CONVENCIÓN DE NOMBRES
La convención de nombres es un conjunto de normas y reglas para la escritura de nombres, código fuente, identificadores y comentarios dentro de la programación, que facilitan y hacen más comprensible su lectura.

1. Clases
Las clases representan “cosas” y no “acciones”, por tal motivo evitar verbos como nombre de clase.
El nombre de la clase debe estar en singular, salvo que la clase represente multiplicidad de cosas.
Las Nombres de las clases deberían ser Sustantivos: ejemplo carro, hombre, tienda, pais, empleado, proveedor
Cada clase debe tener un bloque de documentación según la norma del lenguaje.

2. Métodos
Los nombres de los métodos deberían ser un verbo, dado que describe una acción ; ejemplo remover(), enviar(), cargar()
Los Métodos dentro de las clases siempre debe declarar su visibilidad tales como privadas, protegidas, públicas, etc

3. Variables
Evitar variables que sean de un solo carácter, Los nombres comunes para las variables temporales son i, j, k, m, y n para los números enteros; c, d, y e para los caracteres.
Nombres de variables sólo pueden contener caracteres alfanuméricos
Nombres de variables deben ser camelCase


PARA LOS QUE TRABAJAN EN LA PLATAFORMA .NET


Tuesday, October 21, 2008

Base De datos - practicando SQL

Les dejo algunos recursos Web que encontré para que practiquen consultas en SQL. Que disfruten que las base de datos son bonitas =)
Practicando consultas en SQL - Parte I



Practicando consultas en SQL - Parte IV

En cada enlace encontrarán una pequeña base de datos (diagrama + script para hacer correr y crear la base de datos), enunciados o preguntas y sus respuestas (obviamente mi consejo es NO ver las respuestas HASTA haber primero INTENTADO resolverlas.)

Monday, October 20, 2008

Cómo generar contraseña aleatoria

Estaba buscando en la Web código en VB.NET que me genere contraseñas o password randómicos o aleatorios y encontré este súper código que por cierto ya lo probé y está buenísimo (con caracteres parametrizados, letras, números, caracteres especiales y un rango parametrizado también (mínimo, máximo))

Se los comparto por aquí, tienen para escoger: en Visual Basic.NET y en C#
EN C#, CÓMO GENERAR PASSWORD RANDÓMICO
EN VB.NET, CÓMO GENERAR PASSWORD RANDÓMICO

RandomPassword.vb

Friday, September 5, 2008

Bugs en google chrome

Me pasaron un artículo en el que explica los problemas de seguridad que encontraron en el navegador de Google o.O

Es un error que se encuentra en el Webkit de Apple a través del cual un pirata podría ejecutar aplicaciones en la computadora de la víctima.

Dicen que fue un detalle que los desarrolladores de Google pasaron por alto.

Existe una demo que la pueden probar en sus máquinas.

El link directo al artículo es: http://alt1040.com/2008/09/encuentran-la-primer-seria-falla-de-seguridad-en-chrome/

Y la demo la encuentran en DEMO

Bueno, desde aquí les mando barra para que mejoren, hay que darle chance... aún es una Demo =P No empezaron tan mal que digamos =D

Lo que Me gusta De google chrome

Cuando entré a la página principal de Google, leí "¡Nuevo! Descarga Chrome (BETA) - nuevo navegador de Google" y no le di importancia. Después en momentos de descansillo =p lo descargué y lo estoy usando ahora. Uhm pues si, me parece bonito. Y como dice en su misma descripción de este navegador: Su objetivo es que los usuarios obtengan la información que buscan y accedan a los sitios web con la mayor rapidez posible.


Me agrada mucho el Modo Incógnito (para que las páginas que visitamos no aparezcan en el historial web) =p. También las vistas en miniatura de las páginas visitadas. La interfaz es chula y las pestañas o tabs son independientes =)

Wednesday, September 3, 2008

Base De datos III

heLLo (=
Aquí otro material de la "Recopilación Introducción a Base de Datos" jejeje
Aunque estas presentaciones están de cabeza porque los ejercicios eran para lo último =P pero bueo, igual da.

Por ahora, el material trata de apuntes básicos, una recopilación de bibliografía propia de la asignatura.

Pero pueden empezar leyendo desde la página 11, al grano, no? ^^

Download Material - (.PDF)

Thursday, August 28, 2008

Base De datos II

Palabras claves: base de datos, ejercicios resueltos, minimundos para modelar MODELO ENTIDAD RELACIÓN, mapeo

Aquí otro material de la "Recopilación Introducción a Base de Datos" (=


Donwload Material (.ppt)

Para hacer de los juegos, más reales

Es interesante ver cada vez cómo los gráficos de los juegos parecieran cada vez más reales, esos personajes parecieran de verdad, los lugares por los que uno va navegando... embargo, ciertos detalles pueden sacarte un poco de la fantasía, cuando, por ejemplo, te acercas a una pared de “madera” que parece más una superficie recubierta de papel pintado.














Una de las formas para trabajar estas texturas, es modelarlas en 3D pero para un juego completo tomaría bastante tiempo, otra es utilizando los escáneres láser pero es muy caro.

¿Entonces? Hay una forma económica con la que se puede obtener los mismos o acertados resultados, desarrollado por la Universidad de Manchester. Se trata de tomar una foto de la textura deseada con flash y luego repetir el proceso sin éste. Aquí es donde entra en juego la técnica desarrollada por el equipo de la universidad.

Se trata de un programa que puede deducir la profundidad de una fotografía comparando las fotos. Para lograr esto, usa la luz, deduciendo que aquello que se ve más oscuro está en un sitio más “oculto”, es decir, un agujero o algo por el estilo. Sin embargo es importante usar las dos fotografías, porque las variaciones de color en la superficie de la que queremos separar la textura podrían modificar los resultados. Así, al comparar ambas fotos, se obtendrían texturas de excelente calidad para el modelado 3D.




Esto son muy buenas noticias, ya que significa que los gráficos de los juegos próximos a ver la luz serán aún más reales. Sin embargo, esto nos hace preguntarnos: juegos con tanto detalle, ¿requerirán demasiado poder de proceso por parte de nuestro ordenador?

Fuente: www.neoteo.com Revista tecnológica.

Wednesday, August 27, 2008

Base De datos I

Palabras claves: Introducción a base de datos

Estudiando base de datos (para la universidad), encontré ciertos materiales que me gustaron.

Esta es una recopilación de archivos que juntos pueden ayudarte a engrosar tu conocimiento sobre base de datos básica.

En este primer post, te dejo estas diapositivas:


Wednesday, August 20, 2008

Tips para comprarnos una cámara digital

Al ver un montón de opciones sobre la mesa, nos volvemos locos al no saber cuál elegir =) Miramos una y nos gusta, miramos otra y también nos gusta pero la realidad es que no podemos comprar 2 o más, tenemos que decidirnos por una =D

Hay cuatros preguntas que debemos considerar antes de comprarnos una cámara digital:

1.- ¿Cuánto dinero quiero gastar?
Es importante plantearse un presupuesto inicial. Poner el dinero destinado para la compra sobre la mesa y ser firmes con esta decisión buscando una cámara que se ajuste a ese máximo. De modo que ya va un filtro.

2.- ¿Qué tipo de fotos voy a sacar? ¿Con una Réflex o una compacta?

Según las fotografías que vayamos a hacer, necesitaremos una compacta sencilla, una más avanzada o una réflex.

Esta es una cámara digital compacta.

Entre las ventajas que ofrece una réflex (o en las tiendas con el nombre SLR) está: la posibilidad de ver realmente la imágen que quedará reflejada en la cámara, incluyendo la profundidad de campo, los colores, la luminosidad, etc.



Esta es una cámara digital réflex.

También nos da la oportunidad de intercambiar lentes, trabajar con una gran cantidad de parámetros que suelen estar automatizados en las cámaras compactas y no tienen demora entre el momento de realizar la foto y el almacenamiento propio dicho de la imágen.

Como habrán notado, si estabamos buscando fotos profesionales es justo y necesario una réflex: es la que usan los fotógrafos. Sin embargo, si solo somos gente que queremos las fotos para luego compartirlas con los amigos, subirlas al facebook, etc (jajaja) nos basta una compacta (=

3.- ¿Qué accesorios necesito?Una tarjeta de memoria (el tamaño es depende de sus necesidades, cuántas fotos sacarás en una viaje a las Islas Canarias?). Y dependiendo de la cámara: o pilas recargables o batería alternativa. Y por supuesto, para mantenerla chula y sin rayaduras, un estuchito o funda.

4.- ¿Qué uso le va a dar?
Es importante tenerlo claro, tal vez primero la querramos porque vamos a tener un full viaje y no queremos perder ninguna imágen pero quizá más adelante la vayamos a usar para otras necesidad que con una cámara del primer tipo no podríamos cubrir.

A veces no somos claros y nos dejamos llevar por "la hipnótica fuerza del consumismo". Una compra inteligente sería adquirir lo que realmente necesitamos al mejor precio del mercado.

Fuente: mi revista tecnológica favorita Julio/2008 (www.enter.com.bo)

Wednesday, August 13, 2008

vTunnel

Palabras claves: cómo acceder a sitios bloqueados

Les presento una de las formas (digo una porque imagino que otras más) para acceder a sitios cuyo acceso han sido bloqueados (por otros ya sea en la escuela, universidad o trabajo) en nuestra máquina... es un sitio web (que me imagino que éste no debe ser bloqueado pues estaremos fritos jajaja)

Cómo usar
Es sencillo, mediante el snapshot se los explico:



Dentro de la parte que está encerrada por el rectángulo rojo, hay una caja de texto y en ella deben escribir el link de la dirección a la que quieren acceder y luego hacen clic sobre el botón "Begin Browsing" Y no es nada más =) Enjoy it (Ahm bueno a ciertas webs no van a poder acceder, a aquellas que tienen seguridad contra esto, por ejemplo al facebook no podrán pues para entrar se necesita acceder desde la misma dirección del facebook y no así desde otra como es vtunnel)

Ah... se me olvidaba darles el link jejej...
vTunnel

Saturday, August 2, 2008

Cosas que podemos hacer cuando no tenemos conexión a Internet


Bueno, cuando vean esta imágen significa que el post está para reir!
Esta es una lista de las cosas que podemos hacer para cuando por alguna extraña razón, nos quedamos sin conexión a Internet, jajaja!


1.- Recorrer los archivos que guardamos pero no sabemos para qué: 25 imágenes curiosas, 14 juegos de flash,
3 paquetes de iconos

2.- Borra alguno, arrepentirse y volverlo a recuperar

3.- Cambiar los nombres de los archivos tipo 0214525vgveyuw47523v.gif por pinguinitoAnimado_135.gif

4.- Buscar y eliminar los archivos temporales.

5.- Mirar si el modem funciona.

6.- Vaciar la papelera de reciclaje

7.- Reiniciar la PC por las moscas.

8.- Crear una carpeta Archivos a Organizar y mover el contenido de la antigua carpeta Archivos a Verificar. Eliminar esta última.

9.- Vaciar la papelera de reciclaje

10.- Mirar si el modem funciona.

11.- Revisar cuidadosamente la lista de pendientes y dejarla tal cuál está.

12.- Organizar el Menú Inicio.

13.- Ir a Conexiones de Red y hacer click en Reparar esta conexión. Esperar.

14.- Reiniciar la PC por si acaso.

15.- Jugar un rato.

16.- Probar diferentes wallpapers.

17.- Fijarse si en Archivos de Programas quedaron carpetas vacías después de desinstalar software

18.- Vaciar la papelera de reciclaje.

19.- Reiniciar la PC por las dudas.

20.- Escribir sobre las cosas que se pueden hacer en el PC cuando no hay conexión a internet.



Fuente: http://cosassencillas.wordpress.com/

Friday, August 1, 2008

Imágenes vectoriales vs. Mapas de bits

Las imágenes de mapa de bits están formadas por puntos, llamados píxeles, organizados en una cuadrícula. Cuando se edita una imagen de mapa de bits, se modifican los píxeles, no las líneas y curvas. Las imágenes de mapa de bits dependen de la resolución, es decir, los datos que las definen están fijos en una cuadrícula que tiene un tamaño determinado. Cuando se aumenta el tamaño de un elemento gráfico de mapa de bits, los píxeles se redistribuyen en la cuadrícula, lo que puede dar lugar a que sus bordes queden desiguales.



Los gráficos vectoriales representan las imágenes mediante líneas y curvas, denominadas vectores, que incluyen información de color y posición. Cuando se edita una imagen vectorial, se modifican las propiedades de las líneas y curvas que describen su forma. Las imágenes vectoriales son independientes de la resolución, lo que significa que es posible desplazar, cambiar el tamaño, alterar la forma, modificar su color y visualizarlas en dispositivos de salida de diferente resolución, sin que cambie la calidad de su aspecto.

La principal ventaja de las imágenes vectoriales es su capacidad de almacenar los dibujos en un archivo muy compacto, ya que sólo se requiere la información necesaria para generar cada uno de los vectores. Los vectores pueden definir algunas propiedades de los objetos como el grosor de la línea o incluso el color de relleno de los objetos.

Los cambios de tamaño de las imágenes vectoriales no afectan a la calidad de las mismas, pues se actualizan de forma matemática todas las nuevas relaciones y posiciones de los elementos geométricos que las componen.

Los dibujos se pueden escalar (reducir o aumentar el tamaño de la imagen), sin que se produzca una pérdida de información, puesto que si el dibujo aumenta o disminuye de tamaño el programa recalcula automáticamente la posición y longitud de cada uno de los vectores que dibuja cada uno de los elementos

Sin embargo, como en todo hay inconvenientes o limitaciones, el principal inconveniente de las imágenes vectoriales es su falta de eficacia para representar imágenes de tipo fotográfico

Les dejo con algunos sitios de los cuales se pueden descargar de forma gratuita imágenes vectoriales

http://vector4free.com/
http://www.vecteezy.com/

Tuesday, July 22, 2008

Cómo ocultar un tabpage

Palabras Claves: Cómo ocultar un TabPage de un TabControl en VB.NET 2005 How to hide TabPage

Resulta que tenía que ocultar un tabPage a partir de un checkBox, busqué todas sus propiedades y no encontré un ".Visible" (como suelen traer algunos controles para ponerlos en visible=true o visible=false) Y me dije a mi misma: "Jum, no creo que no se pueda, debe haber alguna forma".

Y así fue, es algo súper sencillo, aunque encontré dos formas, recomiendo una que por lógica me parece lo más óptimo. Con la segunda forma ni siquiera probé pero igual así se las dejo las dos (en mi código, la que está comentada es la segunda forma):


Primera Forma:
Para ponerlo en invisible:Me.TabPage.Parent = Nothing

Para ponerlo en visible:Me.TabPage.Parent = Me.TabControl

Segunda Forma:
Para ponerlo en invisible:Me.TabControl.TabPages.Remove(Me.TabPage)

Para ponerlo en visible:Me.TabControl.TabPages.Add(Me.TabPage)


If Me.getparVerTabSeguridad = "0" Then
'Me.tbcMantenimiento.TabPages.Remove(Me.tbpSeguridad)
Me.tbpSeguridad.Parent = Nothing
Else
'Me.tbcMantenimiento.TabPages.Add(Me.tbpSeguridad)
Me.tbpSeguridad.Parent = Me.tbcMantenimiento
End If

Thursday, May 22, 2008

Null - nothing

VB.NET y C# son lenguajes de programación de la plataforma .NET que más se utilizan y no es mentira que cuando se programa con uno durante mucho tiempo y luego quiere pasar a otro como que se confunde jejeje... a mi me pasa con los puntos y comas :S Cuando estoy en C# olvido terminar la sentencia con un punto y coma ah y las llaves, méndigas llaves, jejeje.

Ya, la vaina es que quería hacer un cambio de un pedazo de código de C# a VB.NET en cuanto al "null" y el "nothing", por si alguien está en las mismas, aquí les dejo la solución

En C#


while (objeto != null
{
//aqui el cuerpo
}

if (objeto == null)
{
}


En VB.NET

While Not objeto Is Nothing
'aqui el cuerpo
End While

If ojeto Is Nothing

End If

Donde 'objeto' es un variable cualquiera.

Sencillo, no?

Wednesday, May 21, 2008

Cómo desglosar Un rango De fechas

Hace un poco más de un mes cuando empezé a hacer mis consultas en SQL para mis reportes, me encontré con que necesita desglosar un rango de fechas para mostrar el horario de los empleados. Bueno, lo primero que me dijeron es: eso se soluciona utilizando TABLAS TEMPORALES. Una tabla temporal se la usa para guarda datos que sólo sirven para el proceso que se está realizando. Sólo se la tiene disponible en ejecución.

Ok, resulta que como datos sólo tengo un rango de fechas: del '01/05/2008' al '31/05/2008' y lo que se pretende hacer es desglosarlo... o sea
01/05/2008
02/05/2008
03/05/2008
04/05/2008
...
31/05/2008

Ok, eso es lo que voy a mostrarle... y cómo usar esa tabla dependerá de sus requerimientos.

1) Creamos un Stored Procedure (Un stored procedure o procedimiento almacenado es un programa (o función) el cual está físicamente almacenado en una base de datos)


CREATE PROCEDURE spDias
@fechaini datetime,
@fechafin datetime
AS
BEGIN
create table #Fecha
(codigo int, fecha datetime)
declare @dif as int
declare @cont as int
declare @fechaact as datetime
set
@dif=datediff(day,@fechaini,@fechafin)
set
@cont=1
set @fechaact=@fechaini-1
WHILE (@cont<=@dif+1) BEGIN
set @fechaact=dateadd(day,1,@fechaact)
INSERT INTO #Fecha VALUES (@cont,@fechaact)
set @cont=@cont+1
END

select * from #Fecha
END


Ok, copian ese código en el editor de consultas del Microsoft SQL Server Management Studio o del que estén usando, en mi caso yo utilizo el que mencioné.

Crear una tabla temporal es casi similar a una tabla normal con la diferencia que se le antepone un numeroal (#) al nombre de la tabla.

Ok, una vez ejecutado ese código si está todo Ok, tienen que salirle: "Query executed successfully"

2) Luego llaman al stored procedure con la siguiente línea:


exec spDias '2008/05/01','2008/05/31'

Y obviamente, tiene que generar el desglose de ese rango de fechas, así:


Sencillo, no?

Thursday, April 24, 2008

Visual studio 2008 y SQL server 2008

El año pasado fui a un evento auspiciado por Microsoft, también en Los Tajibos en el que mostraron todas las características que ofrece el Visual Studio 2008. A full! Aquí les presento algunas (descritas por Alexander Jiménez) y también sobre SQL Server 2008:

Visual Studio 2008
Ambiente de Desarrollo Integrado (IDE): Si instalas Visual Studio 2008 en una computadora con Visual Studo 2005, laprimera vez que inicies Visual Studio 2008 puedes importar todas las configuraciones que tenias en Visual Studio 2005.Si tienes snippets personalizados o de una empresa, puede que necesites pasar estos de manera manual. Otra de las características es que el menu Community (Comunidad) fue removido de la barra principal. Los comandos internos del menu, como Ask a Question (Haz una pregunta) y Check Question Status (Cheque el estatus de la pregunta) se unieron para formar una opción denominada MSDN Forums dentro del menu Help (Ayuda). El comando Send Feedback (Sugerencias), cambio denombre y ahora se llama Report a Bug (Reporta un problema) y esta dentro del propio menu Help. La que me agrada más es el soporte de diseñador de clases (Class Designer) de Visual Studio a C++ .NET. Lo malo es que solamente se utiliza para documentación y visualización, es decir, no trae soporte a código.
Proyectos y Soluciones: Soporte a Windows Presentation Foundation de manera nativa. Cuando se inicia un proyecto, seleccionando el lenguaje, se pueden crear cuatro (4) tipos de proyecto WPF:
WinFX Windows Application
WinFX Web Browser Application
WinFX Custom Library
WinFX Service Library
Una de las mejores características que se agregaron a Visual Studio 2008 es la capacidad de especificar el Framework sobre el cuál se desea compilar. En las cajas de dialogo Advanced Compiler Settings (VB) y Advanced Build Settings (C#), ahora existe un nuevo campo denominado Target Framework que permite seleccionar lo siguiente:

.NET Framework 2.0
.NET Framework 3.0
.NET Framework 3.5

Implementación: ClickOnce ha sido mejorado para brindar soporte a Windows Vista:
Ahora soporta la implementación de proyectos WPF Web Browser Application. Como estos proyectos requieren una implementación especial y una configuración adicional de seguridad, ahora Visual Studio provee de los asistentes y pasos requeridos para configurar dichos elementos.
Ahora las empresas que desarrollan software comercial (ISVs), toman ventaja de una característica interesante. Ahoran pueden firmar nuevamente el manifiesto de la aplicación, colocando elementos dentro del manifiesto que permiten identificar a la empresa.
Soporte para publicación a través del Publicador de Proyectos o del Asitente de Publicación.

Edición: Ahora, tenemos una herramienta para el diseño de hojas de estilo (CSS). También se agrego tecnología Intelisense a JScript en los proyectos AJAX. Además, el diseñador de WPF permite crear aplicaciones y controles personalizados en el IDE.

SQL Server 2008
Entities (Entity Data Model): Se creo un framework sobre ADO para proveer a los desarrolladores un modelo de abstracción para programar en alto nivel (clases y objetos) y manipular información relacional (BD). Esta característica de abstracción se brinda gracias a la tecnología LINQ, la cuál es una tecnología que permite hacer consultas contra la información que se maneja en las entidades, sin utilizar T-SQL.

Ocassionally Connected Systems: También se agregó características de desconexión temporal de los datos a través del modelo de “Sistemas Conectados Ocasionalmente”.

FileStream: También (y creo que es la característica que me agrada más de SQL) es la capacidad de poder almacenar cualquier tipo de datos, a través del nuevo tipo de dato FileStream.

Wednesday, April 23, 2008

Microsoft silverlight 2.0


Silverlight 2.0 (marzo de 2008) la nueva plataforma multimedia online que pretende desafiar a Flash de Adobe.

Básicamente Silverlight es un subconjunto de XAML (eXtensible Application Markup Language) especialmente diseñado para construir aplicaciones multimedias sobre web.

Silverlight requiere de la instalación de un plugin, de escaso peso, apenas 2MB.

Al igual que sucede con Flash, Microsoft Silverlight viene acompañado de herramientas de desarrollo tanto para diseñadores como para desarrolladores de "software".

Silverlight 2.0 incluye un .NET Framework multiplataforma y multinavegador que nos permite una plataforma de desarrollo para .NET que se ejecuta en el navegador. Podemos desarrollar aplicaciones Silverlight en cualquier lenguaje de .NET

La Beta 1 de Silverlight 2.0 nos aporta un gran conjunto de características para desarrollar aplicaciones RIA. Entre otras:

*WPF (Windows® Presentation Foundation) UI Framework: Silverlight 2 incluye un framework basado en WPF que nos permite crear interfaces de usuario ricas muy fácilmente. Incluye un motor de animación y de gráficos muy potente, y también aporta capacidades a la hora de hacer interfaces de usuario como controles, layout, data-binding, styles, y tmplate skinning. Este framework WPF es compatible con un subconjunto de las características de WPF en la versión completa de .NET, y permite reutilizar lo que ya tenemos hecho.

*Controles ricos: Silverlight 2 incluye un conjunto de controles que tanto desarrolladores y diseñadores pueden usar para crear aplicaciones. Esta Beta1 incluye controles comunes como (TextBox, CheckBox, RadioButton, etc), paneles de layout (StackPanel, Grid, Panel, etc), controles con funcionalidad básica (Slider, ScrollViewer, Calendario, DatePicker, etc), y controles para la manipulación de datos (DataGrid, ListBox, etc). Además estos contorles soportan un modelo de templates, que permite que los desarrolladores y diseñadores colaboren juntos para crear soluciones muy pulidas.

*Soporte de Networking: Silverlight 2 incluye un gran soporte para networking. Soporta llamadas REST, WS*/SOAP, POX, RSS, y servicios HTTP estándar. Soporta acceso entre dominios de red (permitiendo a los clientes de Silverlight acceder a recursos y datos en la web). La Beta 1 también soporta sockets de manera nativa.
*BCL rica: Silverlight 2 incluye una gran BCL de funcionalidad (colecciones, IO, generics, threading, globalization, XML, etc). Incluye varias APIS que permiten la integración HTML DOM/JavaScript con código .NET. También soporta LINQ y LINQ to XML (permitiendo un forma fácil de transformar y consultar datos), y cacheo de datos locales. Las API’s de silverlight son un conjunto compatible con el .NET Framework.

Si querés ver una demostración por Scott Guthrie sobre Cómo construir una aplicación simple en Silverlight usando .NET, podés hacerlo haciendo click en el botón play:

Scott Guthrie demonstrates Silverlight

Si querés saber más acerca de Silverlight, podes visitar su web Microsoft Silverlight

P.D. El 15 de mayo en el Hotel Los Tajibos (Santa Cruz, Bolivia) habrá una conferencia sobre Silverlight 2.0 Días antes me pueden enviar un mail para pedirme una invitación para que puedan inscribirse gratuitamente si es que no están subscritos en en lo que es Microsoft Bolivia porque sino, fija que les llegará la invitación. No pueden perderselo!!!

Monday, April 21, 2008

Cómo pasar valores De Un listbox a Un datagridview

Bueno, lo prometido es deuda... aquí les va el código en VB.NET (app window) que les prometí...

Si alguna vez quisieron hacer lo que ven a continuación en esta imágen:




Tienen diferentes controles (ya sea listbox, textbox, combobox, etc) en los cuales ingresan datos y con un evento, puede ser el evento de botón, como ven el botoncito de >, quieren llevar esos datos ingresado a las celdas de un datagridview...

Ok, primero deben hacer sus validaciones, eso de qué campos son requeridos, los tipos de datos permitidos, etc... eso no lo vamos a contemplar aquí.

Como segundo paso, deben crearse de forma global un DataTable, un DataRow y un DataSet.

Dim dtHorario As DataTable = New DataTable
Dim dr As DataRow
Dim dsHorario As New DataSet

En el método load del formulario, deben cargar el dataset. Deben añadir las columnas al DataTable que crearon. Y cargarlo al DataSet que crearon también.
Public Sub cargaDataSet()
dtHorario.Columns.Add(New DataColumn("Horario", GetType(String)))
dtHorario.Columns.Add(New DataColumn("Día Inicial", GetType(Integer)))
dtHorario.Columns.Add(New DataColumn("Día Final", GetType(Integer)))
dsHorario.Tables.Add(dtHorario)
End Sub
Ok, ahora a ese DataTable que crearon, deben cargalos con sus datarows respectivos que son los valores que extraen de los controles

Como lo que yo estoy cargando, es un horario... asi se llama mi función, vean que devuelve un DataSet:
Public Function CargarHorario() As DataSet
Dim intDiaInicial As Integer = CInt(Me.txtphoDiaInicial.Text)
Dim intDiaFinal As Integer = CInt(Me.txtphoDiaFinal.Text)
Dim strHorario = Me.lstHorarios.SelectedValue
Try
Try
dr = dtHorario.NewRow
dr(0) = strHorario
dr(1) = intDiaInicial
dr(2) = intDiaFinal
dtHorario.Rows.Add(dr)
Catch ex As Exception
Throw ex
End Try
Return dsHorario
Catch ex As Exception
Throw ex
End Try
End Function


Y bueno, a esa función la llaman desde un método o subrutina en el que únicamente tienen que crearse un DataView y otro DataSet que lo cargan utilizando la función que acaban de crear y de ahí hace el famoso DataSource

Public Sub TraerValoresToGrid()
Dim dsHorarios As DataSet
Dim dvHorarios As DataView
dsHorarios = Me.CargarHorario
dvHorarios = dsHorarios.Tables(0).DefaultView
grdDatosHorario.DataSource = dvHorarios
End Sub


Y bueno, a esta subrutina la llaman desde el botoncito > que añade los valores al gridview


P.D.(I Hate You)!!!

Tuesday, April 15, 2008

ASP.NET

Encontré un website interesante que no hace falta darle mucha introducción porque solito habla por sí mismo. Es especial para programadores .NET Podés visitarlo haciendo click a ASP.NET

¿Qué es ASP.NET? Microsoft ASP.NET es un “Marco” (framework) para programar aplicaciones web, de un modo similar al que se programan las aplicaciones windows. El componente principal son los Web Forms (formularios web) que permiten, entre otras cosas, separar la interfaz del usuario de la funcionalidad de la aplicación.

Una aplicación web es un conjunto de páginas HTML que se transmiten por medio del protocolo HTTP de un servidor al cliente y viceversa, brindando distintas funcionalidades a un usuario final.

En este website podés aprender a usar ASP.NET a través de tutoriales, vídeos y demás. Lo ventajoso es que está disponible en 5 idiomas, Inglés, Español, Francés y otros.

Aquí te dejo 3 links de quiénes utilizan ASP.NET.


myspace.com utiliza ASP.NET

Dell.com utiliza ASP.NET

Match.com utiliza ASP.NET

Friday, March 28, 2008

Diseño gráfico

¿Qué es el diseño gráfico? Es la disciplina u oficio dirigido a idear y proyectar mensajes visuales, contemplando diversas necesidades que varían según el caso: estilísticas, informativas, identificatorias, vocativas, de persuasión, de código, tecnológicas, de producción, de innovación, etc.

Una clasificación difundida del diseño gráfico es: el diseño gráfico publicitario, el diseño editorial, el diseño de identidad corporativa, el diseño web, el diseño de envase, y el llamado diseño multimedia, entre otros.

Programas que se utilizan para el diseño gráfico
De Adobe Creative Suite
  • Photoshop
  • Freehand
  • Illustrator
  • InDesign
  • Dreamweaver
De otras compañías
  • GIMP
  • Corel Draw

Diferencias entre: sitio web, página web, portal

Ayer en la noche mientras pasaba clases en la universidad, el Ing. nos formuló la pregunta ¿Cuál es la diferencia entre sitio web, página web y portal?
Después de escucharlo y buscar en la Web, puedo decir que:

Sitio Web (en inglés website, también se suele decir simplemente sitio): conjunto de páginas web relacionadas entre sí (tanto por la temática: afines, como físicamente: hiperenlaces) alojadas generalmente en un mismo servidor. Puede incluir texto, gráficos, ficheros de audio y vídeo, entre otros. Cada sitio web tiene una página de inicio (home page) que es el primer documento que ve el usuario cuando entra en el sitio web poniendo el nombre del dominio (dirección URL) de ese sitio web en un navegador. Todos los sitios web públicamente accesibles constituyen la gigantesca World Wide Web (wwww) de información.

Página web: documento componente de un sitio web de la www que se especifica por una dirección única o URL. Es multimedia (porque puede contener textos, imágenes, sonidos, animaciones) con hiperenalces (vínculos que permiten acceder a otras páginas) Visualmente se muestra en la pantalla del ordenador como si fuera una página.

Analogía Con Un Libro
Página Web y Sitio Web no son sinónimos. Una página web es parte de un sitio web y es un único archivo con un nombre de archivo asignado, mientras que un sitio web es un conjunto de archivos llamados páginas web.

El libro entero es el sitio web.
Cada capítulo del libro es una página web.
El título del libro es el nombre del dominio del sitio web.
El índice de los capítulos del libro es el mapa del sitio web (sitemap en inglés)

Portal de Internet: es un sitio web cuyo objetivo es ofrecer al usuario, de forma fácil e integrada, el acceso a una serie de recursos y de servicios, entre los que suelen encontrarse buscadores, foros, documentos, aplicaciones, compra electrónica, etc. Principalmente están dirigidos a resolver necesidades específicas de un grupo de personas o de acceso a la información y servicios de una institución pública o privada.

El profesor nos lo ilustró de la siguiente manera:

Imagínense un condominio. Ese condominio tiene una puerta, una entrada... a qué? A varios lugares del condominio, los departamentos. Y esos departamentos tienen también sus propias entradas. La puerta del condominio es un portal de Internet.

El término portal tiene como significado puerta grande, y precisamente su nombre hace referencia a su función u objetivo: es, por lo general, el punto de partida de un usuario que desea entrar y realizar búsquedas en la web. Se puede decir que un portal ofrece servicios para la navegación en el internet, logrando incrementar la intensidad de tráfico en el mismo.

En fin...
Si son como yo, querrán ver ejemplos reales. Yo soy así, después de escuchar una bonita charla me gustan que me den ejemplos para terminar de entender. Aquí van:

*Ejemplo de portal de Internet:
AOL
*Ejemplo de sitio web:
Sofía Avícola
*Ejemplo de página web:
Operaciones de Chaco