The New Cult of Dead Cow

January 7, 2007






Problemas con Monodevelop

Filed under: Mono, Gentoo
Acabo de reestrenar mi sistema Gentoo y estaba necesitaban programar en mono. Sin embargo, esta vez deseaba hacerlo en una suite de desarrollo ( Monodevelop ), sin embargo ni recien actualizado gentoo no levantaba el monodevelop, o mejor dicho se cerraba apenas cargaba.

Despues de pasarme unas 3 horas, compile y recompile las librerias cai en cuenta q el problema es que monodevelop, no trae soporte para funcionar con la nueva version de mozilla ( seamonkey ).
La solucion:

emerge –unmerge seamonkey

emerge mozilla

Y listo, monodevelop corriendo. :D

November 10, 2006






Mono 1.2 Liberado !!!

Acaba de ser liberada la versión 1.2 de mono, el framework de desarrollo .NET para linux. Entre sus caracteristicas tenemos:

  • Una completa implementacion de la API de windows Form 1.1
  • MonoDoc ahora usa el motor de mozilla para la visualizacion
  • Los assemblies ahora pueden ser firmados digitalmente con RSA
  • Soporte para inotify y KQueque en Linux y BSD, respectivamente
  • Soporte para VisualBasic, JavaScript, y Java
  • XSP se ha divido en dos:
    • XSP.exe que maneja el parseo de la linea de comandos
    • Y Mono.WebServer que es ahora es una libreria embebida
  • Versiones alpha del nuevo depurador para mono

Entre otras muchas mejoras que puedes revisar aca

Si deseas descargarlo.

July 13, 2006






Bases de Datos …

Todos los que estamos involucrados en el mundo del desarrollo del software hemos alguna vez tenido que utilizar el popular SQL, ya sea con bases de datos propietarias ( Oracle, MSSQL ), cacharros que se dicen base de datos personales ( MSAccess ), o bases de datos libres ( Mysql, Postgresql, etc).

El SQL (Structured Query Language) es un lenguaje que permite acceder a los contenidos de los DBMs (Data Base Managers).

En la epoca del popular C y del pascal, esto no era mayor problema. Sin embargo, hoy la mayoria de aplicaciones se construyen utilizando el paradigma orientado a objetos, las cuales al querer interrelacionarse con sistemas de base de datos relacionales degeneran en sistemas ineficientes cuando menos.

Este cambio de paradigma al desarrollar la aplicacion, trae varios incovenientes:

  • Mayores costos de capacitación, ya que los desarrolladores deben manejar correctamente ambos paradigmas y ser capaces de cambiar rapidamente de un modo de pensar al otro.
  • Mayores costos de desarrollo, ya que el simple hecho de mapeo entre obtejos y tablas relacionales llega a representar una gran parte del costo del proyecto. De esto se puede dar fe en casi cada proyecto web desarrollado con PHP5.
  • Problemas de Rendimiento, desde ya el simple hecho de convertir objetos a relacional conlleva ejecución de lineas de codigo extra. Este simple hecho ya implica una sobrecarga en el sistema.
  • Mayor costo de Mantenimiento, esto se debe a que un simple cambio en la logica del programa conlleva cambios tambien en el modelo de base de datos, y viceversa.

Desde hace ya algun tiempo, vengo buscando nuevas posibilidades en los sistemas de base de datos.
Una opción que me jora el entendimiento de los desarrolladores en su modelo de base de datos, es un software que realize automaticamente el mapping entre el modelo de objetos y el modelo relacional. Esto sin embargo conlleva la ejecución de codigo extra lo cual no beneficia en nada al rendimiento. Es más, no siempre genera un codigo mas limpio.
En esta opcion de mapeadores de objeto/relacional, existen 2 categorias:
  • De objetos a Tablas, estos permiten escribir un codigo muy sencillo y elegante, sin embargo no se le considera un codigo muy eficiente.
  • De Tablas a Objetos, estos utilizan un codigo que pareciera poco elegante, y a la vez arbitrario, sin  embargo, son los preferidos por los administradores de base de datos por su eficiencia.

Estas son las opciones de cara a seguir utilizando una base de datos relacional. La otra opción es cambiar a una base de datos Orientada a Objetos. En la actualidad existen pocos motores de Base de Datos Orientados a Objetos. En particular yo conozco solo dos:
  • db4o : Base de datos totalmente orientada a objetos. Funciona bajo java y mono.
  • ZODB : Base de datos desarrollada para la plataforma Zope de python. Totalmente orientada a objetos.
Una de las ventajas que más me gusta de usar bases de datos orientadas a objetos, es que ya no tengo q aprender otro lenguaje más (SQL). El modelo de la base de datos, se maneja de la misma manera en que se maneja la logica del resto de la aplicación.

Ejemplo de db4o

May 19, 2006






Mono Desktop Enviroment

Gnome, uno de los escritorios mas populares de Linux/BSD sufrio durante su desarrollo de algunos problemas que los llevaron a adoptar alternativas de solucion que luego en el tiempo resultaron ser una trampa para el mismo Gnome, puesto que complicaban el desarrollo y penalizaban el rendimiento (Segun relata el mismo De Icaza en su presentacion de Mono).

En esa situacion surge el proyecto mono, que pretende ofrecer una solucion mas limpia a los diversos problemas que adolecieron el desarrollo de aplicaciones Gnome y del mismo Gnome.

Hoy, con una plataforma mono mucho mas desarrollada, nos proponemos como objetivo construir un escritorio basado integramente en Mono y GTK#. Se pretende excluir las librerias de gnome, que apesar de considerar que son muy utiles, son tambien una carga apreciable en su ejecucion.

El primer paso para la construccion de este escritorio, es la aplicacion Mono Desktop Manager, que vendria a ser el reemplazo de GDM.

No se pretende desplazar al escritorio Gnome, sino crear un experimento que nos permita mejorar y aprender muchas cosas y divertirnos haciendolo. Si te gusta Mono y te interesaria apoyar podes ponerte en contacto con:
NeCuDeCo y Nachxs



April 16, 2006






MonoDevelop 0.10

Filed under: Programacion, Linux, Mono, Boo

Ya esta al aire el nuevo monodevelop, el cual viene con muchas novedades aunque no por eso deja de tener algunas e importantes carencias:

  • El monodevelop que estoy probando se encuentra en dapper, y realmente la interfaz grafica se ve muy cuidada, sin embargo el periodo de carga y el consumo de recursos durante su uso sigue siendo uno de los puntos debiles de monodevelop.
  • El diseñador grafico Stetic, el cual ahora viene integrado con monodevelop, sin embargo tuve algunos problemas para hacerlo funcionar con un proyecto en boo.
  • Cuando se agrega un HBox o un VBox no se puede especificar el numero de divisiones que se requieren, yo he podido agregar mas divisiones seleccionando una division y diciendole que agregue una antes o despues, pero eliminar divisiones no he podido.
  • Muchas de las propiedades que podemos y estamos acostumbrados a utilizar en glade, no se encuentran en stetic
  • Una pregunta que me hago: ¿Porque no usaron Glade3, el cual ya incluia soporte para se incorporado dentro de algun IDE de desarrollo ??



March 11, 2006






Glade-3

Filed under: Programacion, Linux, Mono, Python

La nueva version de Glade, aún en fase de desarrollo, incluye numerosas mejoras. Las principales a nivel de nucleo de la aplicación, aunque no por eso han descuidado la interfaz la cual incluye numerosas mejoras ( me confieso en lo particular devoto de la interfaz de gazpacho, pero como he tenido problemas de compatibilidad con este ultimo y python me he visto en la necesidad de volver a glade ), como son:

  • Se pueden abrir varios proyectos a la vez, en la misma ventana.
  • El manejo de controles en la paleta a cambiado a un combo para la seleccion de categorias, esto es particularmente util si tenemos en cuenta q en glade3 sera posible incorporar librerias con controles de terceros :D .
  • El manejo de las señales de los objetos, ha sido rediseñado. La nueva interfaz nos provee de una mayor facilidad de uso asi como de nuevas opciones, como son los datos de usuario entre otras.
  • La vista de arbol de los widgets, esta incorporada en la interfaz principal de la aplicacion, lo cual nos reduce el numero de ventanas abiertas.
  • La opcion de deshacer, incopora varios niveles acciones.
  • Ya no se encuentra la opcion de generar codigo C.
  • La implementacion de las ventanas de desarrollo, esta hecho de tal manera que permite ser incrustadas en otros entornos de desarrollo, MonoDevelop por ejemplo ?? .

Para los impacientes que desen probarlo, el codigo lo pueden descargar y las instrucciones para la compilacion son las universales :

      tar -xzf glade-3-2.90.0.tar.gz
      cd glade-3-2.90.0
      ./configure
      make
      sudo make install



December 17, 2005






DataBase for Objects

Filed under: Programacion, Mono, OpenBss, Boo

Buscando alternativas para el manejo de los datos en OpenBSS y alertado por un mail en la lista de desarrollo, dirigi mi mirada a db4o, este framework permite realizar el almacenamiento de Objectos (Java o .Mono) de una forma totalmente transparente.

Anteriormente enzo, estuvo experimentando con Hibernate que permitia guardar los objetos en una base de datos relaciones, sin embargo recuerdo que tuvo muchas dificultades con el proyecto. DB4O, no solo nos permite un uso sencillo de su funcionalidad ( aunque no por es menos potente) sino que ademas nos permite llevar el producto donde sea sin complicadas instalaciones, debido a que es una base de datos empotrada, al mismo estilo sqlite aunque sin tener las deficiencias de este ultimo.

Otro de los puntos a favor de esta tecnologia es su bajo consumo de recursos, y buen tiempo de respuesta (actualmente es usada la el control de las lineas ferreas de los trenes “bala” en España). Lamentablemente no existe una version del proyecto que pueda ser usada directamente en php o en python.

A continuacion un pequeño ejemplo de su uso:


	
import System
import System.IO
import com.db4o
	
class Pilot:
	private _name as string
	private _points as int
	
	def constructor(name as string,points as int):
		_name = name
		_points = points
	
	Name as string:
		get:
			return _name
	
	Points as int:
		get:
			return _points
	
	def AddPoints(p as int):
		_points = _points + p
	
	override public def ToString():
		return _name + \" / \" + _points
	
print \"Creando Contenedor\"
db = Db4o.openFile(\"data.yap\")
db.set(Pilot(\"Mario\",2))
q = db.query()
q.constrain(typeof(Pilot))
result = q.execute()
while ( result.hasNext()):
	Console.WriteLine(result.next().ToString())
db.close()

November 30, 2005






MonoTella

Despues de pasar cerca de 2 semanas metido en windows para poder terminar un trabajo de Dinamica de Sistemas, y casi pelearme con todo el mundo (Es increible como te cambia el humor despues de pasar mas de 8 horas en windows), al fin logre terminar el bendito curso. Y convencido como estoy que nadie mas en el mundo debe tener que soportar usar windows para poder pasar curso alguno, decidi embarcarme en la construccion de monotella que hasta donde tengo entendido seria el primer programa libre para desarrollar diagramas de forrester (tanta era mi deseperacion que hubiera usado un programa hecho en java o incluso uno de KDE :S).

Esta basado como no en mono y gtk, de momento estoy revisando el trabajo de CeronMan y MarioC en el canvas de monouml. Pienso que puedo tomar eso como base y evitarme mucho trabajo.

Para los que no sepan que un diagrama de forrester ahi les dejo unas pantallas. :D

Si alguien estuviera interesado (o interesada) en participar comuniquese conmigo cualquier ayuda es bienvenida.


Diagrama de Forrester

November 5, 2005






Porque no MonoDevelop

Filed under: Programacion, Mono

Seamos francos el projecto mono me parece una de las cosas mas importantes que han sucedido en el Software Libre en los ultimos tiempos, pero su IDE deja mucho que desear :

  • Es un entorno muy pesado
  • Es muy lento, es decir demora mucho en reaccionar al momento de querer sugerir codigo, o ver las propiedades de los objetos
  • No es portable, solo funciona en Linux

Desde hace un tiempo un amigo Ricki, viene desarrollando un IDE mas ligero, funcional y sobretodo portable.

Realmente debera hacerlo sumamente configurable para convencerme sino nadie me mueve de mi vim.
Aqui dejo algunas fotos :







Ponle Splash a tu aplicacion

Filed under: Programacion, Mono, Boo

Tienes una aplicacion recien salida del horno, demora un poco en cargar?, te gustaria que se viera un poco mejor ? pues ponle un splash


import System
import Gtk from \"gtk-sharp\"
import Gdk from \"gdk-sharp\"
import GLib from \"glib-sharp\"
import OpenBss
	
public class Splash:
	
	private wsplash as Gtk.Window
	
	def constructor():
		wsplash = Gtk.Window(Gtk.WindowType.Popup)
		wsplash.WindowPosition = WindowPosition.Center
		wsplash.Modal = true
		wsplash.Resize ( 138,184 )
	
		wsplash.AppPaintable=true
	
		logo = Gdk.Pixbuf(\"pixmaps/logo_obbs.png\")
	
		map1 as Pixmap
		map2 as Pixmap
		logo.RenderPixmapAndMask(map1,map2, 255)
	
		wsplash.ShapeCombineMask(map2,0,0)
		wsplash.ShowAll()
	
		wsplash.GdkWindow.SetBackPixmap(map1, false)
	
		GLib.Timeout.Add(2500, AutoClose)
	
	def AutoClose():
		wsplash.Destroy()
		return false
	
























Get free blog up and running in minutes with Blogsome
Theme designed by B A Khan