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

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 ...