Mostrando entradas con la etiqueta Recipe. Mostrar todas las entradas
Mostrando entradas con la etiqueta Recipe. Mostrar todas las entradas

jueves, 8 de noviembre de 2018

Receta Python 3 No. 7-10: Enviar Datos Adicionales en un Callback

1. Problema

Se requiere adicionar datos extras en la invocación de funciones de tipo callback: manejadores de eventos, completitud, entre otros.

2. Solución

Se pueden definir las funciones que actúan de forma directa sobre los argumentos pasados (tupla) a la función que ejecuta los argumentos, y que se encarga de ejecutar el callback con los resultados generados.

3. Código Python 3

Archivo Python datos_sobre_callback.py [enlace alternativo]:

Prueba de ejecución:

[1] generó: 5

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 30 de marzo de 2018

Receta C# No. 9-7: Procesar los Resultados de una Consulta SQL con un Lector de Datos

1. Problema

Procesar los datos retornados por el método IDbCommand.ExecuteReader.

2. Solución

Cuando se ejecuta el método IDbCommand.ExecuteReader() se retorna una instancia de tipo IDataReader (namespace System.Data).


Las instancias de tipo IDataReader permiten el acceso suencial o aleatorio a cada uno de los elementos del resultado de la consulta (Jones, Freeman, 2010).

3. Código C#



Prueba de ejecución:
Lectura de datos de una consulta SQL
Figura 1. Lectura de datos de una consulta SQL.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# 9-6: Usar Parámetros en un Comando SQL o Procedimiento Almacenado

1. Problema

Usar o establecer los parámetros en un comando SQL o en un procedimiento almacenado.

2. Solución

Los objetos de comandos en .NET implementan la interfaz IDataParameter (namespace System.Data). Los objetos de comandos requieren configurar el tipo de dato, el valor, y la ubicación: esto se logra a través de la colección Parameters y su método Add (Jones, Freeman, 2010).


El placeholder o el elemento faltante de la sentencia se representa con la cadena @NombreParametro.

3. Código C#

Archivo C# R906Programa.cs [enlace alternativo]:

Prueba de ejecución:
Parametrización comando SQL y procedimiento almacenado.
Figura 1. Parametrización comando SQL y procedimiento almacenado.

Repositorio: https://github.com/Fhernd/Recetas.CSharp

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

jueves, 29 de marzo de 2018

Receta C# No. 9-5: Ejecutar un Comando SQL o Procedimiento Almacenado

1. Problema

Ejecutar un comando SQL o un procedimiento almacenado en una base de datos.

2. Solución

En .NET todos los objetos para la definición de comandos implementan la interfaz IDbCommand (namespace System.Data). Es necesario crear un objeto de esta interfaz para ejecutar un comando SQL o un procedimiento almacenado. Además, configurar las propiedades CommandType y CommandText (Jones, Freeman, 2010).


Existen, así mismo, métodos para la ejecución para tipos de comandos: ExecuteNonQuery, ExecuteReader, y ExecuteScalar.

3. Código C#



Prueba de ejecución:
Ejecución de comandos SQL y procedimientos almacenados
Figura 1. Ejecución de comandos SQL y procedimientos almacenados.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

miércoles, 28 de marzo de 2018

Receta C# No. 9-4: Proteger el Almacenamiento de una Cadena de Conexión a una Base de Datos

1. Problema

Almacenar una cadena de conexión de conexión de base de datos de forma segura.

2. Solución

Para ser protegida una cadena de conexión debe especificarse en una sección encriptada del archivo de configuración de la aplicación (Jones, Freeman, 2010).


Para esta receta se requiere agregar el assembly System.Configuration.dll a las referencias del proyecto.

3. Código C#

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 9-3: Codificar una Cadena de Conexión de una Base de Datos

1. Problema

Codificar una cadena de caracteres que represente las partes de la conexión a una base de datos.

2. Solución

Por medio de la clase DbConnectionStringBuilder (namespace System.Data.Common) o cualquiera de las clases heredadas se define una cadena de conexión. Estas clases forman parte de un proveedor de datos ADO.NET (Jones, Freeman, 2010).

3. Código C#


El programador también puede modificar las propiedades usadas en las líneas 15-21 para asignar los valores correpondientes de la cadena de conexión.

Repositorio: https://github.com/Fhernd/Recetas.CSharp

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

martes, 27 de marzo de 2018

Receta C# No. 9-2: Usar un Pool de Conexiones a Base de Datos

1. Problema

Usar un pool de conexiones a base datos para mejorar el rendimiento y escalabilidad de una aplicación.

2. Solución

Para establecer el tamaño del pool de conexiones se debe configurar la cadena de conexión del objeto de conexión. En esta cadena aparecerán parámetros como el tiempo de vida de la conexión, el reinicio, el tamaño mínimo y máximo del pool, entre otros más (Jones, Freeman, 2010).


Una de las principales ventajas de un pool de conexiones es la reducción de la sobrecarga asociada a la creación y destrucción de los recursos utilizados por la conexión a la base de datos (ídem).

3. Código C#


Nótese como en la cadena de conexión se usan parámetros como Min Pool Size y Max Pool Size para establecer el tamaño mínimo y el máximo del pool.


Una vez se alcance el fin de la sentencia using (líneas 9-15) se invocara el método Close(), a continuación se reintegra la conexión al pool para posteriores usos.

Repositorio: https://github.com/Fhernd/Recetas.CSharp

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 9-1: Conectar a una Base de Datos

1. Problema

Conectar a una base de datos SQL Server Express.


[Nota: Para las recetas de esta serie se usará SQL Server Express como servidor de base de datos y el almacen Northwind.]

2. Solución

En primer lugar se debe crear un objeto de conexion. Los objetos de conexión implementan la interfaz IDbConnection (System.Data). A continuación se debe asignar una cadena de conexion a la propiedad ConnectionString del objeto de conexión. Finalmente se invoca al metodo Open para abrir una conexión al servidor (Jones, Freeman, 2010).

3. Código C#



Prueba de ejecución:
Conexión a SQL Server Express con SqlConnection y OleDbConnection
Figura 1. Conexión a SQL Server Express con SqlConnection y OleDbConnection.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

viernes, 23 de marzo de 2018

Receta C# No. 8-20: Reconocer Texto en una Imagen usando OCR

1. Problema

Reconocer texto en una imagen usando OCR (Optimal Character Recognition).

2. Solución

Por medio de COM Interop es posible accede a las características de reconocimiento de texto en imágnes de Microsoft Office Document Imaging (Jones, Freeman, 2010).

Hay que dejar claro que en versiones posteriores a Microsoft Office 2007 está característica no está disponible.

3. Código C#

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 8-19: Lectura de Texto a Voz

1. Problema

Leer un texto a voz.

2. Solución

El assembly System.Speech cuenta con la clase SpeechSynthesizer. Esta clase provee el método Speak: éste recibe un argumento como cadena de caracteres (Jones, Freeman, 2010).

3. Código C#


Prueba de ejecución:

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

jueves, 22 de marzo de 2018

Receta C# No. 8-18: Gestionar la Cola de Impresión

1. Problema

Gestionar -i.e. pausar o reanudar- la cola de documentos para impresión.

2. Solución

Para este propósito se usa Windows Management Instrumentation (WMI): con la clase Win32_PrintJob se obtiene datos de la cola de impresión y acceso a operaciones de pausa -Pause- y reanudación -Resume-. Adicionalmente, se hace uso de la clase Win32_Printer para soportar esta gestión (Jones, Freeman, 2010).

3. Código C#



Prueba de ejecución:
Gestión cola de impresión
Figura 1. Gestión cola de impresión.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 8-17: Mostrar una Vista de Impresión Dinámica

1. Problema

Mostrar una vista previa de impresión del aspecto actual de un documento.

2. Solución

Se pueden usar PrintPreviewDialog o PrintPreviewControl para visualizar una vista previa de un documento (Jones, Freeman, 2010).

3. Código C#


Prueba de ejecución:
Vista previa impresión
Figura 1. Vista previa impresión.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

miércoles, 21 de marzo de 2018

Receta C# No. 8-16: Imprimir Bloque de Texto en Varias Líneas

1. Problema

Imprimir un bloque de texto en varias líneas (wrapped text).

2. Solución

El método DrawString (Graphics) cuenta con una versión sobrecargada que permite dibujar un rectándulo delimitado (Jones, Freeman, 2010).

3. Código C#

Archivo C# Principal.cs [enlace alternativo]:

Prueba de impresión (documento PDF):
Impresión bloque de texto
Figura 1. Impresión bloque de texto.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 8-15: Imprimir un Documento de Varias Páginas

1. Problema

Imprimir un documento de varias páginas.

2. Solución

Crear una clase derivada de PrintDocument, crear un handler para el evento PrintPage, y establecer la propiedad PrintPageEventArgs.HasMorePage con el valor true (Jones, Freeman, 2010).

3. Código C#

Clase que hereda de PrintDocument:





Prueba de impresión: 
Resultado impresión
Figura 1. Resultado impresión.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

martes, 20 de marzo de 2018

Receta C# No. 8-14: Imprimir un Documento

1. Problema

Imprimir un docuento de texto y/o imágenes.

2. Solución

Sobre el PrintPage de la clase PrintDocument se asigna un handler para llevar a cabo la impresión: se usan los métodos DrawString y DrawImage para la impresión de contenido (Jones, Freeman, 2010).

3. Código C#



Prueba de ejecución (documento impreso en PDF):
Impresión documento
Figura 1. Impresión documento.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

viernes, 16 de marzo de 2018

Receta C# No. 8-13: Obtener los Detalles de las Impresoras Instaladas en el Sistema

1. Problema

Obtener la información de las impresoras que están instaladas en el sistema.

2. Solución

Desde la colección InstalledPrinters (clase PrinterSettings) se obtienen los detalles de las impresoras instaladas (Jones, Freeman, 2010).

3. Código C#



Prueba de ejecución:
Impresoras instaladas
Figura 1. Impresoras instaladas.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

Receta C# No. 8-12: Reproducir un Archivo de Vídeo

1. Problema

Reproducir un archivo de vídeo.

2. Solución

Con el componente ActiveMovie COM, que es parte de Windows Media Player, es posible reproducir archivos en formato de vídeo. La reproducción de vídeo se realiza sobre un componente de tipo PictureBox: en particular la propiedad IVideoWindow.Owner del formulario que contiene el objeto PictureBox -a éste se debe asignar el valor de la propiedad nombrada sobre su propiedad Handle.


Es necesario incluir la librería Quartz: en Receta C# No. 8-11: Reproducir un Archivo MP3 se explica cómo lograrlo.

3. Código C#


Prueba de ejecución:
Reproducción vídeo
Figura 1. Reproducción vídeo.

Repositorio: https://github.com/Fhernd/Recetas.CSharp

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

jueves, 15 de marzo de 2018

Receta C# No. 8-11: Reproducir un Archivo MP3

1. Problema

Reproducir un archivo de audio en formato MP3.

2. Solución

Por medio del componente COM ActiveMovie, el cual es parte de Windows Media Player, es posible reproducir un archivo de audio en formato MP3.

3. Código C#

Primero que todo es necesario agregar la libreria Quartz:

tlbimp C:\Windows\System32\quartz.dll /out:QuartzTypeLib.dll


Luego, agregarla al proyecto desde el manejador de referencias.



Prueba de ejecución:

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O