Thursday, April 28, 2011

How to get public IP using Powershell

   1: $r = [System.Net.WebRequest]::Create("http://automation.whatismyip.com/n09230945.asp")
   2: $resp = $r.GetResponse()
   3: $reqstream = $resp.GetResponseStream()
   4: $sr = new-object System.IO.StreamReader $reqstream
   5: $result = $sr.ReadToEnd()
   6: write-host $result
That scrips makes a HTTP GET to a page in http://www.whatismyip.com to find out the public IP address of the computer running the script.
Spanish Version

Powershell Script para obtener la IP Publica

   1: $r = [System.Net.WebRequest]::Create("http://www.whatismyip.com/automation/n09230945.asp")
   2: $resp = $r.GetResponse()
   3: $reqstream = $resp.GetResponseStream()
   4: $sr = new-object System.IO.StreamReader $reqstream
   5: $result = $sr.ReadToEnd()
   6: write-host $result

Lo que hace el ejemplo anterior es obtener la IP publica del host donde ejecuta el script utilizando una pagina de http://www.whatismyip.com.


Version en Ingles

Monday, April 18, 2011

NetOrientDB Cliente .NET para OrientDB via REST

He comenzado el desarrollo de un cliente .NET para la base de datos documental y de grafos OrientDB utilizando su interfaz REST.

OrientDB es una base de datos documental y de grafos altamente escalable desarrollada en Java. Para mas informacion ver documentacion en el sitio del proyecto.

NetOrientDB es un set de componentes .NET desarrollados en C# 4.0 que mediante la interfaz REST que expone OrientDB permite interactuar con el motor.

Si bien, recien inicio el desarrollo, en su version actual permite crear, actualizar, borrar y buscar documentos.

Hay 2 assemblies, NetOrientDB.ObjectModel que contiene las clases que representan los objetos que interactuan con el servidor y NetOrientDB.HttpClient que contiene las clases que ejecutan las operaciones.

La clase pricipal es NetOrientDB.HttpClient.Connection que representa una conexion al servidor y contiene los metodos que ejecutan las operaciones contra el mismo.

Para utilizarla se necesita instanciarlar con los parametros de construccion (url del servidor, base de datos, usuario y password) y luego llamar al metodo Connect.

   1: using (Connection cn = new Connection(server, database, username, password))
   2: {
   3:     // connects to database
   4:     cn.Connect();
   5: }

Al conectarse el objeto Connection llenara su propiedad Classes con las clases y sus propiedades existentes en la base de datos.
Pueden imprimirlas en la consola asi:





   1: Console.WriteLine("Classes:");
   2: foreach (var cls in cn.Classes)
   3: {
   4:         Console.WriteLine("\tId:{0} Name:'{1}' Records:{2}", cls.Id, cls.Name, cls.Records);
   5:         foreach (var p in cls.Properties)
   6:         {
   7:             Console.WriteLine("\t\tId:{0} Name:'{1}' Type:{2}", p.Id, p.Name, p.Type);
   8:         }
   9: }

Supongamos que tenemos creada la clase user con las propiedades username y age, para crear un nuevo registro o documento del tipo user necesitamos crear una nueva instancia de NetOrientDB.ObjectModel.OrientDocument y setear sus propiedades de esta manera:



   1: var doc = new OrientDocument { ClassName = "user" };
   2: doc.SetProperty<string>("username", "jdoe");
   3: doc.SetProperty<byte>("age", 35);
   4: var rid = cn.InsertDocument(doc);

OrientDB maneja un ID interno para cada documento llamado rid que lo genera al insertar un nuevo documento.
La estructura de este ID esta compuesta por el ID del cluster al cual fue insertado el documento y el ID del documento separados por un :
Ej: 3:1 – Este RID significa que el registro esta en el cluster 3 y tiene ID 1.


El metodo InsertDocument llena la propiedad Rid del documento cuando lo crea y ademas lo retorna.


En los siguientes posts seguire cubriendo las otras operaciones.