miércoles, 21 de septiembre de 2011

Windows 8 Developer con Oracle Virtual Box

En la mayoria de las opciones para virtualizar equipos no es posible aun correr el Windows 8 Developer Preview sin embargo en Oracle Virtual Box si es posible dado que cuenta con la opcion de IO APIC(Advanced Programmable Interrupt Controller ), el cual es un controlador de interrupciones, incorporado en la unidad central de procesamiento y diseñado por y para el multiproceso, concretamente para poder incorporar múltiples microprocesadores a la placa madre. No confundir con el "I/O APIC" de la placa base que consiste en una mejora del PIC clásico de la arquitectura AT y la ventaja es que ofrece más de 16 IRQs y un manejo más rápido de las mismas.


Además es posible virtualizar el de 64bit habilitando en la VT-x/AMD-V, para ello hay que habilitar en el BIOS de la maquina la virtualización por hardware.



domingo, 21 de agosto de 2011

Instalación del shell GNOME3 en UBUNTU 11.04

Para agregar el shell de GNOME 3 en Ubuntu hay que seguir una serie de sencillos pasos secuencialemente, mismos que debemos ejecutar en modo terminal.


1. Agregar GNOME3 al repositorio y descargar los paquetes


1.1. Ejecutar: sudo add-apt-repository ppa:gnome3-team/gnome3
1.2. Ejecutar: gksu apt-get update
1.3. Ejecutar: sudo apt-get dist-upgrade (responder yes en la pregunta de actualización que hace el sistema interactivo)


2. Instalar el Shell GNOME 3
2.1. Ejecutar: sudo apt-get install gnome-shell




Notas:

  • Debemos recordar que cada vez que usemos elevación de permisos usando SUDO se requiere de dar la contraseña del root.

miércoles, 30 de marzo de 2011

martes, 22 de marzo de 2011

Versión C# del Wrapper para consumir la API del Wolfram Alpha

Wolfram Alfa, al igual que otros motores de búsqueda o computo del conocimiento expone su API para utilizar la bastitud de herramientas de calculo computacional con las que cuenta, utilizando una API sencilla escrita en VB.NET, pero para aquellos que no nos gusta (VB) o que preferimos utilizar C# por estándares esta es una opción para integrar la funcionalidad de calculo del Wolfram en nuestras apps.


jueves, 17 de marzo de 2011

Funciones C# para obtener numero de columna y nombre de columna, basado en columnas de Excel

Las siguientes funciones complementarias obtienen el numero de columna en Excel basado en el nombre y viceversa.

Ej 

GetExcelColumnName(731) ==> "ABC"

GetExcelColumnNumber("AB") ==> 28

miércoles, 16 de marzo de 2011

Obtener Color de un Pixel de un UIElement en Silverlight (Windows Phone 7)

Hay diferentes requerimientos en los que nos podria ser útil leer un pixel de un elemento grafico en Silverlight o en aplicaciones Windows Phone 7, en seguida coloco una función para obtener el color, de un pixel dado el par ordenado X,Y y el UIElement.


/// <summary>
        /// Get a Pixel Color from UIElement
        /// </summary>
        /// <param name="UIObject">UI Element</param>
        /// <param name="X">X Axis magnitude</param>
        /// <param name="Y">Y Axis magnitude</param>
        /// <returns></returns>
        public static Color GetPixelColor(UIElement UIObject, double X, double Y) {
            var bmp = new WriteableBitmap(UIObject, new MatrixTransform());
            int index=(int)(bmp.PixelWidth * Y + X);
            Color color ;
            if (index < bmp.Pixels.Length)
            {
                int c = bmp.Pixels[index];
                color = Color.FromArgb((byte)(c >> 24), (byte)(c >> 16), (byte)(c >> 8), (byte)(c));
            }
            else {
                color = Colors.Black;
            }

            return color;
        }

jueves, 10 de marzo de 2011

Lectura de Archivos XLSx con C#, extrae el contenido como colecciones de rows o de entidades o bien de DataTables

Lectura de archivos XLSx, con C#, conversión del contenido en Listas de entidades o en DataTables.


Es importante agregar una referencia a Windows Base.





Libreria basica de calculos con geocoordenadas

En algunas ocasiones es util realizar cálculos como distancias, puntos medios, latitud máxima, punto de destino, o el bearing.


en seguida coloco una clase que realiza algunos de esos cálculos, en el futuro la seguiré extendiendo


Desplegar imagenes GIF en Windows Phone 7, usando C#

Actualmente el Windows Phone 7, no soporta el renderizado de imágenes GIF debido a que usa Silverlight, por lo que es útil, el uso de algún decodificador de imágenes, ya sea que lo escribamos o utilicemos alguno de los ya disponibles.




Para este ejemplo en particular utilice el ImageTools.

sábado, 26 de febrero de 2011

Cálculo de distancias entre dos geo-coordenadas con C#

En aplicaciones de información geográfica comúnmente es útil el cálculo de distancias entre dos coordenadas geográficas.


La siguiente función calcula la distancia entre dos puntos utilizando 



viernes, 25 de febrero de 2011

Obtención de Datos del Clima basado en un WOEID usando Yahoo API en C# para Windows Phone 7

Para el desarrollo de aplicaciones mobiles de apoyo al viajero uno de los temas más socorridos es el estado del tiempo.


Obtención del WOEID de un lugar mediante Yahoo API usando C# en Windows Phone 7

Un WOEID es un identificador único de lugares en la tierra por sus siglas (Where On Earth IDentifier), fue introducido por Yahoo para identificar cualquier característica de la tierra. Es útil para identificar lugares (zonas) en las que caen las coordenadas de latitud y longitud, de un lugar.


El WOEID es útil para obtener información como por ejemplo el clima.



lunes, 21 de febrero de 2011

Traducción de Idiomas y Síntesis de Voz con Google API y Microsoft translator en Windows Phone 7

Es util hoy en día contar con herramientas para la traducción de idiomas, las cuales cada vez ofrecen mejores servicios, ejemplos claros son google translate y Microsoft Translator.


La siguiente clase utiliza los servicios de google translator API usando http, desde una app Windows Phone 7, pero puede ser utilizado en otros contextos, mediante una ligera modificación.



jueves, 10 de febrero de 2011

PieChart para Windows Phone 7 usando amCharts

      En este ejemplo se muestra el uso de las amChart para Windows Phone 7, con un ejemplo básico de consumo de servicios web asíncronos y el uso del patrón MVVM.

      Descargue las amCharts de http://www.amcharts.com/


miércoles, 9 de febrero de 2011

Pruebas Unitarias con VS.NET 2008

Generando un caso de pruebas unitarias con Visual Studio .NET 2008
Recordemos que previo a la generación de un proyecto de pruebas unitarias, se debió haber definido el o los casos de pruebas de manera formal, utilizando el documento designado para ello. 

Ejecución de un Cursor basado en un Query dinámico en ORACLE

Esta característica de ORACLE es muy útil para resolver múltiples necesidades, por ejemplo cuando un mismo algoritmo se aplica a diferentes origines de datos o para generar mecanismos estandarizados de consulta.


Ver código



Truncado de bitacora SQL 2000

En ocasiones sobre todo en sistemas que realizan muchas transacciones lo primero en llenarse es la bitacora de transacciones, por lo que regularmente se debe respaldar dicha bitacora y borrarla. Pero si ocurre que no hacemos esto reguarmente y no hay un DBA que lo haga. Las siguientes instrucciones te sirven para eliminar los Logs.
como parámetro toma la fecha a partir de la cual se deben preservar las entradas en la bitacora de transacciones, todas las anteriores son borradas. El problema de usar esto es que elimina las de todas las Bases de Datos.

USE msdb 
EXEC sp_delete_backuphistory '01/01/00'


La siguiente opcion es para truncar la bitacora de una bd antes de las siguientes instrucciones se recomienda hacer un respaldo de la bitacora de transacciones o de toda la BD.


DBCC SHRINKFILE (DB_log, Size)
BACKUP LOG DB 
WITH TRUNCATE_ONLY

Truncado de flotantes en .NET 1.1

En .NET Framework 1.1 no hay función por defecto para truncar datos tipo double.


Ver código



Stored Procedures utiles en SQL 2000, para temas de configuración


--- Este store te dice datos sobre el espacio ocupado por una
--- tabla u objeto de BD
sp_spaceused 'ObjectName'


--- Este store aplica una accion sobre todas las tablas de la BD, --- funciona igual que un cursor.
EXEC sp_msforeachtable 'sp_spaceused ''?'''


-- Este store sirve para modificar variables de servidor
-- En este ejemplo se trata concretamente de la configuracion
-- de una variable que permite que se hagan actualizaciones
-- AD HOC sobre las tablas de sistema, es decir updates,
-- inserts y deletes sobre sysproperties, sysobjects, etc..
-- Se habilitan los updates



EXEC sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE


-- Se deshabilitan los updates


EXEC sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE

Queries para obtención de Metadatos en Oracle

Aunque existe la instrucción DESCRIBE, en ocasiones es útil, obtener metadatos de una BD de oracle, ej. para temas de autogeneración de código.



Ejemplo del uso de la Notación JSON en JavaScript

Programación Orientada a Objetos en Java usando la notación JSON.
JSON: JavaScript Object Notation.
La intensión del Script mostrar como definir una Clase en JavaScript. esta clase es parte del F.js, se utiliza para un servicio de mensajeria embedido en la aplicación de tipo chat.


Ejecución de un DTS desde un SP en SQL 2000

Sobre todo en entornos de tipo Warehouse se requiere ejecutar bajo demanda un DTS para ejecutar alguna extracción o transformación luego de una acción o transacción de la BD.


En seguida el código de un SP que ejecuta paquetes DTS en SQL 2000.



Ejecución de queries dinámicos y retorno escalar SQL 2000

DECLARE @expr  nvarchar(4000),
@sql  
nvarchar(4000),
@res  decimal(
186)


set @expr '(1+2)+6'


SELECT @sql N'SELECT @res = CONVERT(decimal(18, 6), ' + @expr + ')'


EXEC master.dbo.sp_executesql @sql, N'@res decimal(18, 6) OUTPUT', @res OUTPUT

PRINT 
@res

Efectos de entrada y salida en paginas HTML

Efectos de entrada en una página Web usando el meta tag http-equiv.



Convertir arreglos de objetos a DataTable

Esta clase muestra como convertir arreglos de objetos en DataTables utilizando reflection.



Consumo de un REF Cursor desde ASP.NET y ASP

Consumo del REF Cursor desde .NET y desde ASP 3 usando VB6


Consulta de espacio ocupado por objetos de BD SQL Server 2000

-- Para obtener el tamaño de cada uno de los archivos de la BD 
declare @page_size INT
set 
@page_size 8000 
-- Tamaño de pagina
select size as 'pages', size*@page_size as 'size'name
from 
sysfiles
-- Para obtener el tamaño de la base de datos en MB
sp_spaceused @updateusage 'TRUE'
-- Para obtener el tamaño de una tabla u objeto de BD
sp_spaceused 'objName'
-- Para obtener el tamaño de todas las tablas de la bd por separado
exec sp_MSforeachtable "exec sp_spaceused '?'" 

Chequeo de espacio en disco y bitacoras en SQL 2000

Comandos basicos para revisar bitacoras y uso de disco en una BD de SQL Server 2000.
-- espacio usado
sp_spaceused
-- espacio usado por las bitacoras
DBCC SQLPERF(logspace)
-- información de los archivos fisicos de las bitacoras
 DBCC LOGINFO

-- transacciones pendientes
DBCC OPENTRAN
-- backup y truncado de bitacora
BACKUP LOG DBName WITH NO_LOG

Auditoria de Bloqueos en SQL Server 2000

Este query es una mutación del sp_lock, que agrega algunos datos que el SP_LOCK no muestra.


Util para detectar Dead locks.



Ejecución Select sobre SP que arroja un recordset usando linked server Tips MS SQL

Para usar este aproach se debe tomar en cuenta que si el SP a ejecutar hace conexiones a otros servers se debe tener configurado correctamente el servicio de Manejo de transacciones distribuidas de MS.

-- Se agrega el linked server solo una vez
sp_addlinkedserver @server = 'localhost',@srvproduct = '',@provider = 'SQLOLEDB',@datasrc = @@servername


-- Construye tu consulta de acuerdo a los resultados que emita el SP


SELECT * FROM OPENQUERY(localhost, 'exec spName param1,...')

Colocar un consecutivo a un record set en SQL

En ocasiones dentro de un Store Proceduree necesitamos ponerle un consecutivo a una consulta, esto para procesos complejos o que por su naturaleza necesiten de un numero ordinal consecutivo y que vaya numerado de "1" en "n".
Aunque hay muchas formas de hacerlo algunas mas complejas que otras podriamos apoyarnos en dos conceptos basicos, una funcion y una tabla temporal.
La funcion IDENTITY(integer DataType, [Seed, Increment]), seed e increment por defecto son 1.

select IDENTITY(int1,1) Consecutivo , * into #from sysobjectsselect from #t

martes, 8 de febrero de 2011

Activación de las aplicaciones de Email y SMS para Windows Phone 7 C#

En el siguiente código muestro como invocar a las aplicaciones de EMAIL y SMS, de manera programática, con la finalidad de invocar dichas funcionalidades desde algún modulo en particular de una aplicación. (esté código será actualizado en cuanto termine la app en la que lo uso).

Listado de código

Función para paso de parámetros entre páginas Windows Phone 7 C#

Una de las formas para el paso de parámetros entre páginas en una aplicación para Windows Phone 7, es utilizando el área de almacenamiento aislado, en seguida coloco el código fuente para encapsular el paso de parámetros entre paginas en un par de funciones tipo SET y GET. 

Ver listado de código

lunes, 31 de enero de 2011

Clases para Carga y Descarga de BLOBs a MS SQL (C# ASP.NET)

En la siguiente entrada se podrán observar un par de clases una utilizada para la descarga de BLOBs desde una base de datos y otra para la carga de BLOBs en una base de datos SQL, en el caso de la de carga también tiene funcionalidad para subir archivos en un File System.


Listado de código

miércoles, 19 de enero de 2011

Procesamiento de imágenes básico con C#

En seguida publico un set de clases para ejecutar procesamiento de imágenes básico con C#.

Clase para Cargar un BLOB en Oracle usando C#

En aplicaciones empresariales o de cualquier indole, es muy utilizado el almacenamiento de blobs en bases de datos, este ejemplo muestra una clase que sube archivos binarios a una base de datos ORACLE. La clase tiene algunas propiedades que permiten que se pueda usar utilizando una definición personalizada de la tabla en la que se almacenará el blob.


En seguida el listado del código


Clase en C# para consultar Cubos OLAP y ejecución de comandos MDX usando AdoMD

En proyectos sobre todo de inteligencia de negocios con plataformas Microsoft es común utilizar Microsoft Analysis Services, y si tenemos alguna aplicación en .NET que requiera información extraída de esa fuente una forma es utilizando AdoMD para conectarse y consultar los cubos que están en el Warehouse.


En seguida el listado de código



Implementación de Encripción de Cadenas y Archivos con AES256 ( algoritmo Rijndael)

En desarrollo es muy socorrido el uso de algoritmos de encripción de llave publica o privada, en este caso expongo una clase que implementa el algoritmo Rijndael o AES de 256bits, el cual es de llave privada, simétrico y de encripción por bloques. Para mas detalles ver http://es.wikipedia.org/wiki/Advanced_Encryption_Standard.

Esta clase es capaz de encriptar archivos pequeños (en un solo chunk) o grandes (usando múltiples chunks), así como cadenas de texto. Con algunos ligeros ajustes seria posible también encriptar o decriptar Streams.

En seguida el listado de código



Clase para ejecutar Impersonificación NTLM de forma programática C#


En algunas aplicaciones sobre todo Web  es necesario hacer uso de lo que se conoce como impersonificación, y existen diferentes formas de hacerla, una es de forma programática y en seguida coloco una clase en C# que facilita esa labor. Para mayor información ver http://msdn.microsoft.com/en-us/library/ff647404.aspx.



Compilación y ejecución dinámica de código .NET


Algunas ocasiones podriamos requerir generar un interprete de scripts o compilar y ejecutar código de forma dinámica, como para el procesamiento de plantillas, una forma de hacer esto es como lo muestra el siguiente listado de código.


martes, 18 de enero de 2011

Wrapper para la API de Win32


Cuando se tienen requerimientos muy particulares a la plataforma Windows esta clase puede ser muy útil, por ejemplo podríamos escribir un keylogger con relativa facilidad o una aplicación espía se que se encargue de tomar screen shots de cierta ventana o del escritorio completo, o algunas otras aplicaciones.


En seguida coloco el código.

Funciones gráficas (Captura de Pantalla utilizando C#)


En seguida un ejemplo de como usar GDI para capturar el contenido del escritorio, o una sección del mismo, en seguida el código.


Serialización de objetos para usarla en Web Services


Es común en el desarrollo de Web Services utilizar el concepto denominado serialización, el cual nos permite intercambiar objetos entre sistemas heterogéneos. Ver listado de código.



Versión C# de una clase para imprimir usando ZPL


Sobre todo en ambientes Industriales es muy socorrido el uso de impresoras Zebra, en seguida el código fuente, la siguiente clase implementa un buen Wrapper.


Clase Cliente FTP en C# para versiones 2 o inferiores del Framework


Cliente FTP para .NET 1.1 o 2, antes de que existieran los clientes FTP en el System.Net. En seguida el listado de código.



Validación de Usuarios con el Directorio Activo


Este es un complemento al tema de directorio activo, permite hacer validaciones de cuentas de usuario vs el directorio activo.



Consultas al Directorio Activo


En ocasiones es útil hacer consultas al directorio activo ya sea para buscar usuarios u otros objetos que estén en el directorio activo.


En seguida el código.

Ejecución de JOBs de DataStage usando REXEC en C#


Utilizando la clase descrita en la entrada de este mismo blog referente a la ejecución de REXEC utilizando C# se pueden construir otro tipo de aplicaciones como por ejemplo un componente que nos permita ejecutar programáticamente JOBs en DataStage sin utilizar API de DataStage.


En seguida el código 

Ejemplo en C# para ejecutar comandos remotos en UNIX usando REXEC


Esta clase tiene como propósito brindar a aplicaciones .NET la capacidad de interactuar con el protocolo REXEC, descrito en el RFC 2179, en seguida el listado de código.



Transacciones Fiori

  /UI2/CACHE Register service for UI2 cache use /UI2/CACHE_DEL Delete cache entries /UI2/CHIP Chip Registration /UI2/CUST Customizing of UI ...