Archivos para junio, 2009

Google Charts – Generando gráficos de forma dinámica

Posted in Programación with tags , , , on 29 junio, 2009 by febrer

La librería de Google Charts, nos permite generar gráficos de una manera muy simple, sin tener que instalar nada en nuestro servidor, ni realizar complejos desarrollos.
El mayor problema que veo en este tipo de servicios, es la total dependencia de los servidores de Google, el día que no les interese dar este tipo de servicios gratuitamente, no habrá más remedio que pasar por caja.
Hay que andar con ojo, y no abusar de este tipo de servicios gratuitos.

Link a la documentación de la API: http://code.google.com/intl/es/apis/chart/

Gráfico de tarta: http://chart.apis.google.com/chart?cht=p3&chd=t:60,40,12,2,2,3,4,5,12,34,60,23&chs=500×200&chl=Ene|Feb|Mar|Abr|May|Jun|Jul|Ago|Sep|Oct|Nov|Dic

 

Ejemplo de gráfico QR: http://chart.apis.google.com/chart?cht=qr&chs=100×100&chl=FebrerSoftware

 

Ejemplo de mapa: http://chart.apis.google.com/chart?cht=t&chs=400×200&chtm=europe

Cambiar clave de instalación de Microsoft Office

Posted in Microsoft with tags , , on 20 junio, 2009 by febrer

Llevaba días con la “estrellita azul” de microsoft. Porque claro, ¿a quien no le a pasado alguna vez que ha instalado sin querer, un software pirata? Estas cosas pasan, hasta en las mejores familias.
Llevaba días con la intención de desinstalar, y volver a instalar, y al final, googleando, encontré un método más sencillo, simplemente hay que borrar una entrada del registro para que la aplicación al iniciar, vuelva a solicitarnos la clave de instalación.

En esta documentación de microsoft lo explican muy clarito: http://support.microsoft.com/kb/895456/es

Como borrar el registro de transacciones (Transaction Log) en SQL Server

Posted in Programación with tags , , , on 19 junio, 2009 by febrer

El procedimiento ‘normal’ para realizar el borrado del registro de transacciones, sería el siguiente:

BACKUP LOG [MIBASEDEDATOS] WITH TRUNCATE_ONLY
DBCC SHRINKFILE(NOMBRE_LOGICO_LOG, 1)

En el caso de que sigamos obteniendo un error del tipo:

Msg 9002, Level 17, State 4, Line 1
The transaction log for database ‘MIBASEDEDATOS’ is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Deberemos tomar una solución más drástica, como borrar físicamente el fichero LOG en el disco. Para ello, lo primero que tenemos que hacer es ‘detachear’ o ‘Separar’ la base de datos. El procedimiento es el siguiente:

1 – Forzamos la escritura de las páginas en memoria con CHECKPOINT (repetimos varias veces este comando).
2 – Separamos la base de datos con sp_detach_db

USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N’MIBASEDEDATOS’
GO

3 – Borrado del fichero .LDF físico existente en nuestro disco duro. Normalmente, su ubicación es:

C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MIBASEDEDATOS.LDF (ojo, no MDF, mdf es la base de datos)

4 – Una vez eliminado el fichero .LDF, procederemos a realizar de nuevo el ‘attach’ o ‘Adjuntar’ la base de datos, de esta manera:

USE [master]
GO
CREATE DATABASE [MIBASEDEDATOS] ON
( FILENAME = N’C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MIBASEDEDATOS.MDF’ )
FOR ATTACH
GO

Sin indicarle el fichero LDF. Automáticamente SQL Server, genera un nuevo fichero LDF de transacciones.

Espero que este método pueda serte útil.

Haciendo Ping desde ASP.NET

Posted in Programación with tags , , on 10 junio, 2009 by febrer

Esta es una sencilla manera de realizar ping’s a equipos, indicando su ip o su nombre desde una página ASP.NET.

System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply pingreply = ping.Send("ip_o_nombre_equipo");
txtPing.Text += "Address: " + pingreply.Address.ToString();
txtPing.Text += "Roundtrip Time: " + pingreply.RoundtripTime;
txtPing.Text += "TTL (Time To Live): " + pingreply.Options.Ttl;
txtPing.Text += "Buffer Size: " + pingreply.Buffer.Length.ToString();

Recuperando elementos web con WebRequest a través de un proxy y validación básica en destino.

Posted in Programación with tags , , , on 10 junio, 2009 by febrer

Imaginate que quieres acceder a un gráfico (gif, bmp, etc …) alojado en un servidor externo a tu red local. En nuestro ejemplo son gráficos estadísticos que nos genera nuestro proveedor de internet, al cual hay que acceder mediante una validación. A parte, disponemos de un servidor proxy en nuestra empresa para acceder a internet, que tambien requiere validación.

En este escenario, la menera más sencilla (por supuesto utilizando .NET), es utilizar los objetos NetworkCredential, WebProxy y HttpWebResponse, para recuperar el gráfico deseado.

¿Como lo hacemos?

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
 
namespace TestWebRequest
{
class Program
{
static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://url_a_nuestro_proveedor/fichero_a_recuperar");

// establecemos las credenciales para el servidor ISA SERVER
NetworkCredential credentials = new NetworkCredential("usuario", "password","dominio.com");
//creamos el objeto proxy que nos permitira acceder a internet
System.Net.WebProxy proxy = new System.Net.WebProxy("nuestro.servidorisa.com",8080);

proxy.Credentials = credentials; //asignamos las credenciales al objeto proxy

request.Proxy = proxy; //asignamos el proxy al objeto WebRequest.

// Credenciales para acceder a nuestro proveedor de internet
NetworkCredential reqCredentials = new NetworkCredential("usuario", "password");
request.Credentials = reqCredentials; // asignamos las credenciales.

WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(stream);

Console.Write(streamReader.ReadToEnd());

Console.Read();
}
}
}

Si nuestra aplicación es de tipo web, tambien podemos indicar el servidor Proxy en el fichero Web.Config de nuestra aplicación web, de esta manera:

<configuration>
  <system.net>
    <defaultProxy>
      <proxy usesystemdefault="True"
        proxyaddress="<a ref="http://nuestro_servidor_proxy:8080/">http://nuestro_servidor_proxy:8080</a>"
        bypassonlocal="True">
    </defaultProxy>
  </system.net>
</configuration>

Leyendo un fichero excel desde .NET con OLEDB

Posted in Programación with tags , , on 4 junio, 2009 by febrer

Este es un sencillo método para acceder a un fichero excel desde .NET utlizando OLEDB. Simplemente tenemos que indicar la ubicación del fichero en nuestro disco, y el nombre la la hoja a la cual queremos acceder. El paramentro HDR=NO, indica que la primera línea de la hoja excel no es el nombre de las columnas del datatable generado.

///
///
///
private DataTable GetExcel(string fileName, string sheetName)
{
OleDbConnection dbConn = null;
DataTable resultTable = new DataTable(sheetName);
// construimos la cadena de conexión.
string connString = “Provider=Microsoft.Jet.OLEDB.4.0;” +
“Data Source=” + fileName + “;Extended Properties=’Excel 8.0;HDR=NO;'”;

// creamos la conexión y la abrimos.
dbConn = new OleDbConnection(connString);
dbConn.Open();

if (!sheetName.EndsWith(“$”))
{
sheetName += ‘$’;
}
string query = string.Format(“SELECT * FROM [{0}]”, sheetName);
using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, dbConn))
{
adapter.Fill(resultTable);
}

return resultTable;
}