Inicio Semana Informática

Septiembre 3, 2008

Queridos Informáticos

A partir de esta semana iniciamos todas las actividades de organización, correspondiente a la Semana Informática a realizarse entre el 29 de Septiembre y 4 de octubre del presente año e inauguramos nuestro blog como canal de difusión de los diversos eventos que ocurran antes y durante la semana informática.

Cualquier duda, consulta o participación remitirlo a alejandroiglesias@gmail.com

Procesos en .NET

Agosto 14, 2008

Lanzando y monitorizando programas externos desde .NET

El namespace System.Diagnostics tiene una clase Process en el que usted puede lanzar programas externos. Usted pasará el nombre de un archivo ejecutable o un archivo con una extensión asociada con una aplicación ejecutable.

System.Diagnostics.Process.Start(”c:\…\MyTextFile.txt”)

 

Este código retorna un objeto Process:

Dim myProcess As Process = System.Diagnostics.Process.Start("c:\...\MyTextFile.txt")

MessageBox.Show(myProcess.ProcessName)

 

Un método sobrecargado Process.Start toma un parámetro ProcessStartInfo que deja a usted configurar los valores de inicialización tal como WindowStyle.

Dim psInfo As New System.Diagnostics.ProcessStartInfo ("c:\...\MyTextFile.txt")

psInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal

Dim myProcess As Process = System.Diagnostics.Process.Start(psInfo)

 

O

Dim myProcess As System.Diagnostics.Process = new System.Diagnostics.Process()

myProcess.StartInfo.FileName = "c:\...\MyTextFile.txt"

myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal

myProcess.Start

 

Usted puede también hacer todo a través del IDE arrastrando un componente Process dentro de su formulario desde el área de componentes de la barra de herramientas.

Iniciar un proceso y esperar hasta que este termine

Para esperar que un proceso lanzado finalice, llamé al método Process.WaitForExit. Su aplicación detendrá la ejecución hasta que el proceso lanzado termine. Sin embargo, Esto causará que su aplicación deje de responder a los eventos del sistema tal como el evento Paint.

'Comienza un nuevo proceso (Notepad).

'

Dim myProcess As Process = System.Diagnostics.Process.Start("MyTextFile.txt")

'

'Espera hasta que termine.

'

myProcess.WaitForExit()

 

MessageBox.Show("Notepad ended: " & myProcess.ExitTime & "." & _

System.Environment.NewLine & "Exit Code: " & myProcess.ExitCode)

'

'Cierra el proceso para liberar recursos

'

myProcess.Close()
			

 

Comenzar un proceso invisible

Usted puede iniciar un proceso y obtener su salida sin una ventana visible. El siguiente ejemplo muestra como cambiar a la carpeta de sistema, ejecute el comando DOS Dir “*.exe” y envié la salida al archivo Ouput.txt. El Shell de Windows XP reconoce “&&” como un comando separador, por lo tanto, usted puede poner múltiples comandos en una sola línea. El operador “>>” redirecciona la salida a un archivo.

Dim myProcess As Process = New Process()

Dim s As String

Dim outfile As String = Application.StartupPath & "\Output.txt"

'

'Obtener la ruta de Sistema.

'

Dim sysFolder As String =        System.Environment.GetFolderPath(Environment.SpecialFolder.System)

'

'Crear la línea de comandos

'

myProcess.StartInfo.FileName = "cmd.exe"

myProcess.StartInfo.Arguments = "/C cd " & sysFolder & _

        " && dir *.com >> " & Chr(34) & outfile & Chr(34) & " && exit"

'

'Comience el proceso en una ventana oculta

'

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

myProcess.StartInfo.CreateNoWindow = True

myProcess.Start()

'

'Termine el proceso si este no finalize en un minute

'

myProcess.WaitForExit(1000)

If Not myProcess.HasExited Then

myProcess.Kill()

End If

'

'Muestre los resultados

'

MessageBox.Show("The 'dir' command window was " & _

        "closed at: " & myProcess.ExitTime & "." & System.Environment.NewLine & _

        "Exit Code: " & myProcess.ExitCode)

 

myProcess.Close() 
			

 

Determinar cuando un proceso termina

La clase proceso lanza un evento Exited cuando un proceso finaliza. Usted debe configurar la propiedad Process.EnableRaisingEvents y crear un manejador de evento.

myProcess.EnableRaisingEvents = True

'

'Añadir un manejador de eventos.

'

AddHandler myProcess.Exited, AddressOf Me.ProcessExited

'

myProcess.Start()

'

' Manejador de evento

'

Friend Sub ProcessExited(ByVal sender As Object, _

            ByVal e As System.EventArgs)

 

    Dim myProcess As Process = DirectCast(sender, Process)

 

    MessageBox.Show("The process exited, raising " & _

            "the Exited event at: " & myProcess.ExitTime & _

            "." & System.Environment.NewLine & "Exit Code: " & myProcess.ExitCode)

 

    myProcess.Close()

End Sub

 

Nota, Si el proceso lanzado no responde, también lo hará su aplicación

 

Controlando el proceso de Entrada y Salida

Usted puede necesitar enviar una entrada directamente a un proceso lanzado y enviar la salida directamente a su programa. Para programas que usan StdIn, StdOut y StdErr, tal como aplicaciones de consola, usted puede sobrescribir los valores por defecto y proveer un StreamWriter para escribir una entrada y StreamReaders para leer las salidas StdOut y StdErr.

.NET usa la función Win32 ShellExecute para lanzar procesos entonces cuando usted quiera reasignar Streams de entrada y salida, usted debe configurar la propiedad ProcessStartInfo.UseShellExecute a false antes de comenzar el proceso. También usted debe especificar la ruta completa del archivo o la ubicación del archivo que deberá estar en la cadena de ruta environmet o en uno de los lugares de búsqueda de Windows para archivos.

Dim myProcess As Process = New Process()

Dim s As String myProcess.StartInfo.FileName = "cmd.exe"

 

myProcess.StartInfo.UseShellExecute = False

myProcess.StartInfo.CreateNoWindow = True

myProcess.StartInfo.RedirectStandardInput = True

myProcess.StartInfo.RedirectStandardOutput = True

myProcess.StartInfo.RedirectStandardError = True

myProcess.Start()

 

Dim sIn As StreamWriter = myProcess.StandardInput

Dim sOut As StreamReader = myProcess.StandardOutput

Dim sErr As StreamReader = myProcess.StandardError

 

sIn.AutoFlush = True

sIn.Write("dir c:\windows\system32\*.com" & System.Environment.NewLine)

sIn.Write("exit" & System.Environment.NewLine)

s = sOut.ReadToEnd()

 

If Not myProcess.HasExited Then

        myProcess.Kill()

End If

 

MessageBox.Show("The 'dir' command window was " & _

        closed at: " & myProcess.ExitTime & "." & _

        System.Environment.NewLine & "Exit Code: " & myProcess.ExitCode)

 

sIn.Close()

sOut.Close()

sErr.Close()

myProcess.Close()

MessageBox.Show(s)

 

 

Para programas que no usen StdDin, usted puede usar el método SendKeys para ingresar teclas.

Dim myProcess As Process = New Process()

 

myProcess.StartInfo.FileName = "notepad"

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal

myProcess.EnableRaisingEvents = True

 

AddHandler myProcess.Exited, AddressOf Me.SendKeysTestExited

    myProcess.Start()

'

' Wait until the program is ready for input.

'

myProcess.WaitForInputIdle(1000)

 

If myProcess.Responding Then

        System.Windows.Forms.SendKeys.SendWait( _

                "This text was entered using SendKeys.")

Else

   myProcess.Kill()

End If

El sitio objectsbydesign lista los libros más recomendados del diseño orientado a objetos, cabe mencionar que uno de esos libros “Applying UML and Patterns:
An Introduction to Object-Oriented Analysis and Design
” existe la versión en español, la cual estoy estudiando muy detalladamente y me ha dejado muy contento, sin duda un referente para el conocimiento del Análisis y Diseño Orientado a Objetos.

Leyendo sobre las novedades de SQL Server 2008, me encontré con la adquisición de Dundas una herramienta líder en el mercado de gráficos de datos avanzados, la cual es integrada con Reporting Services en SQL Server 2008, además de incluir componentes para .NET, en su página se puede ver todo el potencial de la herramienta a través de su galería.

Siguiendo con Adquisiciones, y en mi investigación sobre Business Intelligence, me extrañaba no ver una herramienta web de Análisis, o una herramienta que pudiera quizás sobrepasar la potencia de Tablas Dinámicas en Excel sobre Cubos Olap. Para mi sorpresa Microsoft Adquirió ProClarity, Herramienta que permite a los usuarios de las empresas explorar grandes cantidades de datos para obtener, en poco tiempo, una visión interna del negocio y que hoy se ha convertido en PerformancePoint Server, que incluso integra Business ScoreCard con nuestro querido Office 2007, antes llamado Microsoft Office Business Scorecard Manager 2005.

 

Cansado de postear con el editor de su blog, bueno afortunadamente existen algunas alternativas bastante interesantes (instalando Windows Live Writer mientras escribo). El sitio bloggingbits lista 15 alternativas para escritorio que permiten trabajar off-line, productivamente y sin distracciones. Solo me queda agregar que Word 2007 también tiene esta función.

 

Impresionante revista IT

Junio 14, 2008

Software Guru es una revista de distribución Mexicana, la cual me ha llamado la atención por sus contenidos, tan directamente relacionado con los propósitos de la célula, existen números dedicados por ejemplo a Metodologías Agiles, Business Intelligence, técnicas de programación, Diagramas UML entre otros. Aunque en la página no pude encontrar links a sus artículos, a través de Google encontré un enlace a sus números en PDF.

.Net Open Source

Junio 13, 2008

Buscando comuniones entre .NET y el open Source, he encontrado está página, la cual muestra interesantes proyectos, entre ellos el proyecto Wii de Johnny Chung Lee, sin duda un gran material digno de ser investigado, además de CMS, Logging, Base de datos, etc

 

Tiempos de respuesta, disponibilidad, y estabilidad son los factores vitales a tener en cuenta al crear y mantener aplicaciones web. Si te preocupa la velocidad de tus páginas web o quieres asegurarte que están en plena forma antes de iniciar o lanzar un proyecto, en Six Revisión han reunido unas cuantas herramientas libres que te ayudarán a lograrlo. Herramientas sencillas de usar,utilizables en distintos Sistemas Operativos.

Business Intelligence es una de las tecnologías de base de datos más llamativas de los últimos años y un campo donde Microsoft ha formado su camino a través de distintas versiones de SQL Server. Su amplia funcionalidad, costo e integración, la hacen ser un producto atractivo para tanto medianas como grandes empresas de amplios sectores. Business Intelligence apunta a solucionar necesidades complejas, las que antes de la existencia de esta, representaban un gran despliegue de profesionales o simplemente no era abordado.

Antes de conocer estas herramientas, debemos conocer que es Business Intelligence.

¿Qué es Business Intelligence?

Business Intelligence es un método de almacenamiento y presentación de los datos claves de la empresa, los cuales pueden ser accedidos rápida y fácilmente por cualquier persona (con los permisos correspondientes). BI permite a los usuarios finales entender porque su negocio obtiene particulares resultados, y tomar las desiciones más acertadas, para el éxito de su empresa. Además del término Business Intelligence existen multiples términos asociados los que iremos viendo a lo largo de este artículo.

Además del término Business Intelligence existen múltiples términos asociados los que iremos viendo a lo largo de este artículo.

Conceptos.

Datawarehouse

Una única estructura que usualmente, pero no siempre, consiste en uno o más cubos, los Datawarehouse son usados para mantener una vista de solo lectura de los datos calculados de una organización. Algunas estas estructuras incluyen clientes para consultas.

DataMart

Un subconjunto definido de un Datawarehouse, a menudo un cubo individual. El cubo individual representa una unidad de negocios (ej. Marketing) de un gran entero (la compañía). Los Datamarts solían ser la unidad básica de una organización en Analysis Services 2000 debido a las limitaciones en el producto, este ya no se aplica en SSAS (SQL Server Analysis Service). Hoy en día los Datawarehouse consisten de un solo Cubo.

Cubo

Una Estructura de Almacenamiento usada por clásicos productos Datawarehouse en lugar de muchas (a menudo normalizadas) Tablas. A diferencia de las tablas que usan filas y columnas, estas usan dimensiones y medidas (hechos). También los cubos presentan datos calculados (a menudo sumados), en vez de ítems individuales (filas). Los cubos presentan vistas con datos empresariales calculados opuesto a las tablas normalizadas que presentan datos detallados. Los Cubos son poblados con una copia de la fuente de datos (o datos de producción) de solo lectura. En algunos Casos, los cubos tienen una copia completa de los datos de producción; en otros casos, contienen sub-conjuntos de la fuente de datos. Los Datos son movidos desde el sistema fuente a los cubos mediante el proceso ETL (Extracción, Transformación y carga).

Otro nombre conocido para los cubos es OLAP (Online Analytical Processing), de estos existes algunos Tipos :

  • Molap (Multidimensional OLAP)
  • Holap (Hybrid OLAP )
  • Rolap (Relational OLAP)

Estos hacen referencia al método en que los datos y metadatos son almacenados en un cubo SSAS.

Decision Support System

Este término tiene una amplia definición, puede significar una copia de solo lectura de una Base de datos OLTP o un grupo de cubos OLAP o incluso una mezcla de ambos. Si la fuente de datos consiste en una BD OLTP esta seguramente estará normalizada. Uno de los desafíos de usar OLTP como fuente, es la dificultad de escribir rápida y con poca sobrecarga consultas en el sistema fuente. Esto es planteado debido al nivel de normalización de la Base de datos, mientras mayor sea la normalización deberá ejecutar más joins en sus consultas, además el comportamiento de bloque de base de datos es tal, que largas consultas pueden causar una espera significativa de recursos para los usuarios finales. Otra complejidad es la necesidad de la indexación apropiada para las consultas.

Una de las claves que hacen la diferencia en el enfoque de Microsoft es integrar soporte SSAS (SQL Server Analysis Service) dentro de su producto Office – específicamente Excel. Excel 2003 puede ser usado como cliente SSAS a mucho menor costo que un cliente de terceros. Microsoft ha expandido el soporte de características SSAS en Excel 2007.

Productos Microsoft

SQL SERVER 2005

Este es el escenario preferido y posiblemente la ubicación fuente para soluciones BI. Los datos pueden ser actualmente recuperados desde una variedad de almacenamiento de datos (Oracle, Db2, etc..), debido a esto una instalación de SQL Server no es estrictamente requerida para construir una solución Microsoft BI. Sin embargo, debido a la integración de algunos conjuntos de herramientas claves: ej. SSIS o SQL Server Integration Services, el cual es usado para ejecutar el proceso ETL (Extracción, Transformación y Carga) de la fuente de datos al datawarehouse. La Mayoría de las soluciones BI deberán incluir al menos una instalación de SQL Server. Otro componente clave en muchas Soluciones BI en SQL Server Reporting Services (SSRS). Así como la interfaz de Administración SSMS (SQL Server Management Studio).

SQL SERVER ANALYSIS SERVICE

Este es el servidor núcleo en una solución Microsoft BI. SSAS provee almacenamiento para los datos usados en Cubo para su DataWarehouse. Este producto puede o no ejecutarse en el mismo Servidor físico que el de SQL Server 2005. Business Intetelligence Developmente Studio (BIDS) será usado para desarrollar cubos para Analysis Service.

DATA MINING

Este es un componente opcional incluido en SSAS que permite a usted crear estructuras Data Mining. Estas estructuras incluyen modelos Data Mining. Estos son objetos que contienen fuentes de datos (Relacionales o Multidimensionales) que han sido procesados usando un particular tipo de algoritmo Data Mining. Estos algoritmos clasifican (agrupan) o predicen uno o más valores de columnas.

A pesar de que Data Mining está disponible desde Análisis Service 2000. Microsoft ha mejorado significativamente las capacidades de esta herramienta en la edición 2005. Por Ejemplo: en el 2000 existían solo dos algoritmos DM disponibles, en la edición 2005 Existen Nueve.

SQL SERVER INTEGRATION SERVICES

Este conjunto de herramientas es un componente en la mayoría de las soluciones BI. Es usada para importar, limpiar y validar los datos, antes de ser disponibles para Analysis Services. Es usual usar fuentes de datos diferentes (Relacionales, Archivos planos, XML, Etc.) para un DataWarehouse. Por esta razón, SSIS es útil para facilitar la compleja carga de datos que son a menudo comunes en una solución BI. Esta función es llamada ETL, en SQL Server 2000 era DTS (Data Transformation Services). La versión 2005 ha sido rediseñada.

SQL SERVER 2005 REPORTING SERVICES

Este es un componente opcional para su solución BI. Microsoft ha hecho una significante mejora en la versión actual. Que hace el uso de de SSRS una atractiva parte de una solución BI. La más importante es la inclusión de un diseñador de consultas visuales para cubos SSAS. El cual facilita la rápida creación de reportes, reduciendo la necesidad de Escribir consultas manuales sobre cubos de datos.

Lenguajes BI

El lenguaje de consultas para SSAS es llamado MDX. SSAS también incluye la capacidad de construir estructuras DM. Para consultar datos en estas estructuras usted usará otro lenguaje llamado DMX. Finalmente, Microsoft em SSAS introduce un lenguaje de Script Administrativo – XMLA.

MDX (Multidimensional Expression)

Este es el lenguaje usado para consultar cubos OLAP. Sin embargo, este lenguaje es un estándar y terceros han adoptado parte de este en soluciones BI. La realidad es que muy pocos desarrolladores son hábiles en MDX. Esto se debe a que la necesidad de escribir código MDX manualmente en una Solución BI es reducida. Debido a esto retener desarrolladores que tengan al menos un conocimiento básico de MDX es una consideración importante en la planificación de una Solución BI.

Ejemplo

SELECT CUSTOMER.GEOGRAPHY ON COLUMNS,

PRODUCT.[PRODUCT NAME] ON ROWS

FROM [Analysis Services Tutorial]

El lenguaje de Consulta MDX es usado para recuperar datos desde cubos SSAS. A pesar de que MDX tiene una Estructura tipo SQL, MDX es más difícil de dominar. Esto es debido a la complejidad de las estructuras de fuente de datos SSAS – CUBOS.

DMX (Data Mining Extensions)

Este es un lenguaje usado para consultar estructuras Data Mining (la cual contiene modelos DM). Al igual que MDX este es un estándar abierto y existen pocos desarrolladores hábiles debido al poco uso, además, la interface de Microsoft DM es fuertemente manejada con Asistentes mas que en la creación de cubos.

XML for Analysis

Este es un Lenguaje usado para ejecutar tareas Administrativas en SSAS, tales como: Visualización de meta datos, respaldo, copia, etc., Al igual que los lenguajes anteriores, es un estándar abierto y existen muy pocos desarrolladores hábiles, Esto es debido a que Microsoft ha hecho que la generación de código sea Simple. Cuando Conectamos a SSAS, usted puede hacer clic k derecho sobre cualquier objeto SSAS y generar Script XMLA usando la Interface Gráfica (GUI).

Ventajas de Business Intelligence

BI es comprensible y flexible

Un único cubo diseñado correctamente, puede contener todos los datos de una organización, y presentar los datos al usuario final consistentemente. El modelado de cubos es ahora lo suficientemente flexible para reflejar la realidad de negocios en un único cubo.

En versiones anteriores donde se usaba más de un solo cubo, esta carecía de flexibilidad y a menudo esta era traspasada al cliente.

BI es accesible (Intuitivo para todos los usuarios para ver y manipular)

Al mostrar las tablas dinámicas en su organización. Los Ejecutivos notarán rápidamente y estará impresionados (algunos emocionados) de ver el potencial alcance de una solución BI en su compañía.

Las tablas dinámicas reflejan la forma en que muchos usuarios piensan acerca de los datos, que es “Que son las medidas (números) y que atributos (factores) crearon los números”.

Algunos usuarios pueden requerir una interface más Simple que una tabla dinámica (”Reporte enlatado”). Para esto Microsoft provee SSRS. Es importante que usted haga un balance para este tipo de requerimiento, el cuál provocará que usted haga este trabajo manualmente versus el uso de tablas dinámicas.

BI es rápido de Consultar

Unas de las ventajas en una Solución BI, es que las consultas son un 1000 % más rápidas que en OLTP, además SSAS es altamente optimizado para proveer una muy superior experiencia de consulta.

BI es simple para consultas

Los usuarios finales solo soltarán ítems en un área de tabla dinámica, debido a esto los desarrolladores escribirán muy poco código de consulta, cabe mencionar que los clientes SSAS (como Excel) generan automáticamente consultas MDX.

BI provee Exactitud, cercana al tiempo real e información resumida

Esto mejora la calidad de las desiciones de negocios, SSAS provee en su versión Enterprise, proactve Caching, que permite tener los cubos una latencia de minutos e incluso segundos.

Las Herramientas Microsoft se integran a Terceros

  • SSAS crea cubos desde Oracle, DB2, etc.
  • Debido al bajo costo, fácil implementación y conjunto de características, SSAS ahora toma el primer lugar en proveedores de soluciones BI para Oracle.

En esta primera parte de Business Intelligence sobre SQL Server repasamos conceptos Generales, así como también indicamos las herramientas necesarias para cada etapa del Diseño de Modelos BI. En la segunda parte, veremos un ejemplo práctico de cómo utilizar BI sobre la base de datos de prueba de SQL Server “Adventure Works DW”, espero les haya parecido interesante, pronto más novedades.


Documento PDF

Business Inteligence Open Source Solutions v/s Comercial SolutionsBuscando alguna herramienta para BI (Business Inteligence) en proyectos Open Source encontre un interesante artículo que considero apropiado publicar para posteriores investigaciones mas profundas acerca de herramientas particulares para esta tecnología.

Entre lo destacable es que aparace una tabla con la compartiva entre herramientas propietarias y su equivalente en Open Source ordenadas por categoria.

Acceder a artículo original.