Showing posts with label DEVELOPMENT. Show all posts
Showing posts with label DEVELOPMENT. Show all posts

Monday, May 24, 2010

Installing Mono 2.6 (or the latests version) on Ubuntu 10.4(or the latest version)

This is a quick guide to install the latest mono runtime in your existing Ubuntu:
First of all:
  • I'm not an expert installing Mono from Sources, so this is all at your own risk.
  • Don't remove your existing Mono Runtine, you still need it.
  • I recommend you to keep your existing Mono Runtime(the one you installed via APT) side by side with the version that you are going to configure.
Here we go:
1.a using synaptic or aptitude, install the following packages:
  • autotools-dev
  • autoconf
  • libtool
  • bison
  • gettext
2. Download the Stable version right here:
http://ftp.novell.com/pub/mono/sources-stable/ (is the first one from the first group, currently the name is mono-2.6.4.tar.bz2)
3. Read the instructions right from the Mono wiki(but don't execute them yet):
Note: You may want to install into a different location and not '/usr/local' in order to avoid conflict with your existing Ubuntu Mono installation, so I would recommend you to use '$HOME/mono/local' or something, just like this:
./configure --prefix=$HOME/mono/local;
4. Now you can follow the instructions.
Feel free leave a comment if you find any errors.

Monday, December 3, 2007

Como funciona HTTP como Separador de Mensajes TCP

Tal como ya había comentado en un post anterior, TCP es un Protocolo de Control de Flujo de Datos, no de Mensaje de Datos por lo que es necesario implementar un separador de Mensajes sobre TCP. ¿Qué exactamente Hace un Separador de Mensajes? Un separador de Mensajes es un conjunto de reglas que se aplican sobre la transmisión de datos para saber de que parte de que flujos comienzan o finalizan los mensajes, casi siempre el Separador de Mensajes se implementa con un Encabezado y un Contenido donde una de las múltiples funciones del encabezado es el de informar del tamaño total del cuerpo del mensaje en caso de que exista. Protocolos como HTTP implementan su propio separador de Mensajes. Ejemplo:

HTTP/1.1 POST /

Content-Length:16

txtNombre=Johan

El ejemplo anterior es un mensaje HTTP, se compone de un encabezado y un cuerpo. El encabezado se compone de un conjunto de Líneas separadas por un tabulado LFCR?? Que se separa del cuerpo del mensaje por una línea en blanco. Si el encabezado contiene una línea Content-Length entonces después de la línea en blanco se recibirá como cuerpo del mensaje el número total de bytes que se especifico en la línea Content-Length, si no se especifica Content-Length, entonces el mensaje se compone solo del encabezado y los siguientes bytes recibidos después de la línea en blanco son tomados como el Encabezado de otro Mensaje.

Para el ejemplo del Mensaje HTTP que se mostro anteriormente corresponde a el siguiente conjunto de bytes:

72, 84, 84, 80, 47, 49, 46, 49, 32, 80, 79, 83, 84, 32, 47, 10,13,67, 111, 110, 116, 101, 110, 116, 45, 76, 101, 110, 103, 116, 104, 58, 49, 54,10,13,10,13,116, 120, 116, 78, 111, 109, 98, 114, 101, 61, 74, 111, 104, 97, 110

Debido a que el encabezado del Mensaje HTTP es siempre ASCII cada byte del encabezado corresponde a un carácter ASCII, la combinación de byte 10(LF, Representado en Espace Unicode de C# como ‘\n’) y 13(CR, Representado en Escape Unicode de C# como ‘\r’) indican que finaliza una Linea del Encabezado HTTP. El dato binario anterior compone un mensaje HTTP completo pero ese dato binario puede recibirse en multiples flujos de datos TCP de cualquier tamaño, Es decir, que podríamos recibir:

  1. 72, 84, 84, 80, 47, 49, 46, 49, 32, 80, 79, 83, 84, 32, 47, 10

  2. 13,67, 111, 110, 116, 101, 110, 116, 45, 76

  3. 101, 110, 103, 116, 104, 58, 49, 54,10,13,10,13,116, 120, 116

  4. 78, 111, 109, 98, 114, 101

  5. 61, 74, 111, 104, 97, 110

Cuando se está percibiendo datos TCP y haciendo un parsing para Formatear Mensajes, se tiene que saber que bytes corresponden a el encabezado del mensaje actual, el contenido del mensaje actual o el encabezado de los siguientes mensajes que se recibirán. Las operaciones a realizar son las siguientes:

  1. Leer todas las líneas del encabezado hasta encontrar una línea en blanco, que equivale a encontrar la secuencia de bytes 10,13,10,13.

  2. Si el encabezado contiene una sentencia Content-Length y su valor es mayor a 0, entonces después del encabezado se tomaran cuantos bytes se reciban como contenido del Mensaje hasta agotar la cantidad especificada. Ejemplo: Si se recibe en el encabezado la línea ‘Content-Length:3563’, entonces se tomaran los 3563 bytes que se reciban en uno o más flujos de datos después de encontrar la secuencia 10,13,10,13.

Ejemplo:

Ultima Línea del Encabezado

Fin de Línea en Blanco

56

34

673

10

13

10

13

43

48

34

Final de Encabezado HTTP

Contenido

En una proxima entrega explicare como se ha implementado este Procolo en C#.

Sunday, April 22, 2007

Proyecto Personal Enabled!

Sorprendentemente alguien me ha comprado mi idea (por asi decirlo) y ya hemos empezado a desarrollarla. Es un framework para desarrollo de aplicaciones distribuidas para linux construido 100% en C#/Mono incluyendo un servidor de datos, un servidor de procesos de negocios y un servidor de presentacion que no es ASP.NET. El tiempo de desarrollo aproximado esta entre 5 a 7 meses a partir del miercoles 23 de Abril y despues de ese periodo desconocemos como realizaremos una estrategia comercial aunque se proponen distribucion propietaria de muy bajo costo(diagmos unos 100$), Freeware o hasta LGPL. Soportara inicialmente Linux+Postgres y de acuerdo a la demanada se soportaran otros sistemas operativos y bases de datos. Debido a que aun no hemos comprado el dominio en internet no puedo dar el nombre oficial pero esta relacionado a un elemento de la tabla periodica(eso creo...). Probablemente mi blog sea la fuente principal de noticias del asunto hasta que todo salga a la luz publica con un fin comercial.

Thursday, April 5, 2007

Anatomy Of A Debian Package - Google TalkTech

El siguiente video es para los desarrolladores de DebianX (ubuntu,xubuntu,edubuntu) que requieran entender un poco el sistema de empaquetado de debian, una presentacion de onathan Oxer uno de los autores de "Ubuntu Hacks" de O'Reilly. Video - Google TalkTech

Monday, February 19, 2007

Example: Gnome.Sound class

Codigo fuente: TestGnomeSound.cs(Download Source) Namespaces: Gnome Clases: Gnome.Sound Ensamblados: gnome-sharp.dll Portabilidad: Linux, Gnome - Desarrollo de Aplicaciones Linux usando Novell Mono y Gnome Desktop. Introducción: Este ejemplo introduce al uso de la clase Gnome.Sound de Mono Linux usando el entorno de escritorio Gnome para reproducir sonidos WAV

Example: Gnome.PasswordDialog Class

Codigo fuente: GnomePasswordDialogSample.cs(Download Source) Namespaces: Gnome Clases: Gnome.PasswordDialog Ensamblados: gnome-sharp.dll Portabilidad: Linux, Gnome - Desarrollo de Aplicaciones Linux usando Novell Mono y Gnome Desktop. Introducción: Este ejemplo introduce al uso de la clase Gnome.PasswordDialog de Mono Linux usando el entorno de escritorio Gnome para mostrar y obtener los datos del cuadro de dialogo de credenciales de Gnome como se muestra a continuación: