Thursday, February 14, 2013

GxAgro - Software Agricola

GxAgro es un software de Gestión Agrícola, se gestó hace muchos años, en el 1984.
En esa época yo estaba trabajando en la UNRC (Universidad Nacional de Río Cuarto) y tenía varias actividades principalmente trabajaba en la cátedra de Administración Rural de la Facultad de Agronomía y Veterinaria, y además colaboraba en el Laboratorio de Estadidisticas en Investigación y Desarrollo de Software. 

También tenía desarrollaba programas, de análisis económicos fuera de la Universidad en la consultora Agropecuaria "Campo y Gestión" de Bartolomé Felix Sciola y Juan Carlos Mafei.

Los principales trabajos realizados eran elaboración de Análisis económicos para la empresa agropecuaria, elaborabamos estadísticas y gráficas para el Suplemento Rural del Diario Puntal de la ciudad de Río Cuarto, y atendíamos una amplia cartera de productores y empresarios agropecuarios, a los que asistíamos para generar análisis de resultados económicos que iban más allá del Margen Bruto, se llegaba a obtener muchas comparativas y distintos ídices de rentabilidad y retorno económico.

En este contexto, uno de los clientes de la consultora, me solicitó hacer un desarrollo de software a medida para lo cual, si yo aceptaba el proyecto, compraría una PC de alrededor de 20.000 u$s, en ese tiempo, era una cifra mucho más importante que ahora.




Obviamente que acepté y así comenzó el desarrollo de la primera versión de GxAgro,para ambiente MS-DOS 3.0 y lenguaje xBase (Primero fué dBase III, y luego Clipper Summer'87). 
La primera versión en Windows, ambiente en el cual no tenía lenguaje conocido en el cual desarrollar fue realizada gracias a que yo conocia la herramienta CASE GeneXus, desde el 1992/93, en ese entonces trabajaba solo para pantallas   " verdes "  , DOS, AS/400 o a lo sumo  " ambar " , había tambien pantallas color, pero eran básicamente de Texto. Cuando en 1997, decidí hacer la primera versión para Windows, sólo pude hacerlo debido a que conocía GeneXus, de lo contrario hubiese sido imposible. Esa versión fué hecha con GeneXus 6.1 y para FoxPro for Windows, que era un lenguaje a medio camino entre DOS y Windows.. 
En el 2003, trabajamos migrando de FoxPro f/Windows a Visual FoxPro 6.0, ya un lenguaje Visual, con GeneXus 8.0, y allí ha quedado hasta HOY, 10 años después, en que de nuevo gracias a los impresionantes avances de la tecnología dominada por el mundo GeneXus, vamos a compenzar, Hoy, 14 de Febrero de 2013, el desarrollo de nuevas versiones de GxAgro para dos tremendos e igual de desafiantes ambientes:

I -  Web  que correrá probablemente con Ruby / JAVA o C#(.Net) con bases de datos, optativamente Oracle, MySQL, PostgreSQL, DB2, etc. .

II - Y para la novedosa plataforma de  Smart Devices , los Smart Phones y Tabletas, para TODOS los ambientes populares:
  • Android (GalaXy Tab, GalaXy S3, ASUS Tablets, e infinidad más)
  • iOS (iPad, iPhone, iPod)
  • Black Berry (Smart Phones)
  • Windows 8 RT - (Surface Pro) 

 Debemos ser realistas, si nuestro equipo fuese un equipo de desarrollo "tradicional" es decir que domina una plataforma/tecnología. No podríamos plantearnos una locura así, básicamente porque cada plataforma y ambiente, que es dominada por algunos lenguajes requiere, si se desea conquistar, que luego de seleccionar un lenguaje nos avocásemos a estudiar el mismo, además de estudiar la plataforma (DOS, Web, Windows, Linux, Apple, IOS, Android...) 

Nuestro equipo, no conoce ni de estos lenguajes dominantes (Ruby, Objective C, HTML5, Ruby, JavaScript, JAVA, etc.) solo conoce GeneXus, y por eso decidimos que podemos desafiar a estas grandes plataformas con sus lenguajes y tecnologías.


Referencias:
GeneXus : http://www.genexus.com
GxAgro BLOG: http://www.gxagro.blogspot.com.ar


-----------------------------





Tuesday, July 26, 2011

El Cisne Negro de Nassim Nicholas Taleb

Mis amigos.
Es un libro que me siento impulsado a recomendarles.




Leer este libro forma parte de aquellas cosas que hacen que exista "un antes y un después" en el modo de ver el mundo.

Yo no diría que es de lo mejor cambiar todo el tiempo la forma que vemos el mundo, por el contrario somos propensos a no cambiar nuestro modo de ver las cosas, a no cambiar mucho en ningún sentido. No nos gusta cambiar.

Les advierto: de alguna manera, ésta lectura cambia el modo de comprender nuestra propia existencia.
Creo que al leerlo, comprendemos que -paradójicamente- nuestro conocimiento del mundo disminuye.

Sin embargo, a mí me gusta comprender un poco más el universo, a pesar de que esto implique tirar por la borda mucho de lo que "sabía".
Tengo -según me acusa un amigo- una curiosidad infinita, y a pesar de que trato de aprender de todo, voy descubriendo cada vez, que lo que conozco es siempre más pequeño en relación al todo.

La compresión que nos regala Taleb, es única y extraordinaria.
Este conocimiento, hace que cambiemos el modo de ver las cosas, y el modo en que nos manejamos e interpretamos el mundo.

Acá les dejo una explicación del Black Swam, por el propio autor.






PD: gracias Nicolas Jodal @njodal

Tuesday, September 01, 2009

Google WAVE & XMPP.

by Peter Neubauer
Google Wave - concurrent document editing on steroids
Google Wave is introducing a concept where a central XML document (the Wave), reflecting the total of a conversation, is simultaneously edited by several participants (via XMPP clients) of the conversation at the same time. While the incremental changes are sent to the XMPP Google Wave server for merging into the central Wave, they are at the same time even sent to the other online clients in the Roster of the current conversation just as chat messages, creating the real-time response impression of the Google Wave experience. However, these packages do not contain simple chat but actual machine-data interpreted by special Google Wave clients in e.g. JavaScript (see the Wave Protocol).Google Wave even supports extensions to its functionality, see this blog post which means that a lot of the infrastructure can be used to e.g. support new functionality and data packets.gwaveGoogle Wave setup
Social Computing or Let the bots talk! | Jayway Team Blog - Sharing Experience


What is XMPP?

XMPP is an XML instant messaging protocol that was developed by the Jabber foundation, as a reaction to the closed protocols of ICQ, Microsoft Messenger etc etc. It is based on the concepts of


  • server side contact lists (Roster in XMPP terminology)
  • open XML streams between the XMPP server and any connected client once the connection is established
  • every connected XMPP client gets a unique ID (e.g.
    "neubauer.peter@gmail.com/phone1/xyz") under the common XMPP "bare" ID
    (neubauer.peter@gmail.com) and is uniquely addressable by XMPP packets.
    This can be used in situations where there is no direct IP number
    available or it is changing (e.g. mobile devices), making any
    Internet-connected device addressable as a potential server, with a
    constant address over time and space - an URI.
  • extensible payloads of XML packets as defined by the XMPP Specification, the most important reflecting the 3 paradigms of asynchronous communication, and supported by all major XMPP servers
    • broadcast ("<presence>")
    • one-to-one or one-to-many ("<message>")
    • request/response with acknowledgement ("<iq>"), similar to the HTTP protocol

  • handling of status, presence of resources and routing of messages to the right receivers by the XMPP servers
  • from the beginning built to scale for the Internet with distributed infrastructure, as explained in this blog post
  • large existing XMPP networks to tap into (GoogleTalk, iChat,
    Facebook Connect, holding part of your existing social graph in the
    contact lists) and open XMPP servers to set up your own XMPP network
  • SSL support built into the base specification, distributed
    server-to-server communication even between XMPP networks like
    GoogleTalk and iChat.
Blogged with the Flock Browser

Friday, June 29, 2007

PopUp, Collaborative Projects


Collaborative Project (CP). (v02)

GxNiceWEB / PopUp

OBJETIVOS:

Lograr hacer mas fácil el desarrollo de una interfase amigable y agradable en los desarrollo Web, buscando, seleccionando y construyendo, si fuese necesario, un conjunto de librerías AJAX, que puedan ser usadas fácilmente con GeneXus.

Construyendo “controles” o componentes, el comienzo de un GxAJAX Framework.

· PopUp Windows.

· Menús,

· TABs, dinámicos.

· Grids, mas flexibles y de mejor aspecto.

· Forms, con mejor aspecto y dinamismo.

· Suggest, adecuado. (tipo GMail, en la selección de contactos)

Interactividad SIN Full ReLoad, para ver esto ver en BaseCamp donde tenemos alojado el presente CP

Saturday, April 29, 2006

2nd. Reunion POLO IT GeneXus Rio Cuarto

2da. Reunion POLO IT GeneXus Río Cuarto

Estamos gestando la creación de un POLO IT, en Río Cuarto,
basado en el desarrollo con la Metodología GeneXus, haciendo
uso de la herramienta del mismo nombre.

La idea surge a raíz de que se estan sucediendo demandas de
Software Factory basados en esta herramienta, por parte
de empresas radicadas en otras ciudades, como Córdoba Capital,
La Pampa, Entre Rios, etc. en el pais, e incluso demanda de
desarrollo de sistemas o modulos desde Otros Paises.

En la reunion



Se describira la situacion vista, se podran hacer propuestas
para encontrar un camino para que Rio Cuarto, se desarrolle
rapidamente... .



Friday, April 14, 2006

» Google Calendar? » InsideGoogle » part of the Blog News Channel

» Google Calendar? » InsideGoogle » part of the Blog News Channel: "Blog News Channel InsideGoogle Switch to Society Junto - The Politics Blog Switch to InsideMicrosoft Switch to InsideGoogle Switch to Business Bits
Google Calendar?
By Nathan Weinberg

Dave Jung thinks Google has a special crawler reading calendar data, based on the fact that his ical-based website calendar is getting huge hits from a Googlebot.

I’ve seen serious traffic on my church’s website this month from Googlebots. Last year I added a Calendar to the site using the ical standard, and now the Googlebots are pinging the heck out of the php pages rendering the calendar. We’re talking 90% of the site’s accesses have been from Google this month.

Its an interesting idea. Google does want to organize the world’s information, and calendar information is a unique type of information. Presumably, Google Calendar would be like Google News, crawling calendars in real-time and displaying as updated information as possible, and letting you search it to find things to do in your area at particular times.

I’d love to see lots of little Googles, searching all sorts of data. You’ve got miniature Googles displaying flight info and package tracking data, and the more the merrier. Google’s got many years ahead of them"

Tuesday, February 28, 2006

Nomenclatura GxSoft

 


Nomenclatura GxSoft


(adaptada a GeneXustm )



1.                Introducción.


Antes de comenzar con la “escritura” de un sistema debemos acordar los nombres de las entidades de la realidad, a partir de los cuales se deducirá la denominación. La Nomenclatura presente esta pensada para sistemas de gran porte y para maximizar las posibilidades de trabajo en equipo que brinda GeneXus.



1.1.              DEDUCIR UN NOMBRE



Cuando nos enfrentamos a desarrollos de gran porte, no es fácil conocer o memorizar todos los nombres de los elementos de un sistema. Cuando decimos elementos nos referimos a los Objetos GeneXus a las tablas a las Variables, Funciones, etc..


Puede uno recordar los nombres que ha ido usando a través del desarrollo de una aplicación, pero por cuánto tiempo?.


Es probable entonces que en el corto plazo de una aplicación y mientras estemos “sobre” ... recordemos gran cantidad de nombres y si no fuera así quizá consultando un diccionario de datos, si lo fuimos construyendo,  podamos encontrar la denominación de un elemento dado. Pero qué pasará cuando trabajemos en equipo?, cómo podrá cada integrante del equipo entender lo que otro integrante ha escrito?.



1.2.              ENTENDER LOS NOMBRES:


Para solucionar este problema de  “entender” lo que cada uno escribe, o tener que “recordar” los nombres de los objetos que se irán usando a través de la aplicación hay que “acordar” una nomenclatura en común para cada uno de los elementos que se deban denominar en un desarrollo. La nomenclatura elegida debe indicarnos de que se trata sino además debe ser también “deducible” (que dado un nombre de la “realidad” exista una regla de denominación tal que el nombre del elemento sea único) es decir, partiendo de la denominación de un elemento en la “vida real” se llegue a una única denominación. Estos objetivos no son fáciles de conseguir, pero tampoco son poco importantes como para que no hagamos el esfuerzo necesario para alcanzarlo.



1.3.              MINIMIZAR LA “DISYUNCIÓN”


A diferencia de otras nomenclaturas, la propuesta es más rígida que otras existentes, pero obtenemos como ventaja su “deducibilidad”. Con el objetivo de que el mismo objeto de la realidad se denomine igual en cada “cita” interna en la Knowledge Base.



1.4.              MINIMIZAR LA “COLISIÓN”



Un problema que se puede dar es que la raíz de dos objetos de la realidad sea la misma, en este caso se puede prevenir Nombrando los Objetos de la realidad que participaran en el sistema antes de comenzar a escribir la KB.


El largo total de un nombre es de 10 (diez) caracteres de manera que se respetará este límite. La nomenclatura para la mayor parte de los elementos es de 4 letras a las cuales se le agregarán Sufijos y/o prefijos de 3 letras llegando a 10 caracteres cuando se le agreguen ambos ( un prefijo y un sufijo).


2.                Reglas de Nomenclatura.



Nota:Las preposiciones de, del se Ignoran!.



2.1.         Regla General 1. Los Nombres se truncan a 4 letras.


Todo nombre tiene cuatro caracteres, el mismo deriva de la denominación en la realidad (Cliente, Factura, Artículos, Calles). Este componente de 4 Letras se denominará de aquí en adelante NUCLEO de la nomenclatura.



2.1.1.  Si es de una Palabra.



La palabra se corta sin abreviar a sus cuatro primeros caracteres.



2.1.2.  Si es de dos Palabras.



El nombre resulta de la primera letra de la primera palabra concatenada a las tres primeras letras de la segunda palabra.



2.1.3.  Si es de tres Palabras.



El nombre resultará de la primera letra de la primera palabra concatenada a la primera letra de la segunda palabra y las dos primeras letras de la tercera palabra.



2.1.4.  Si es de cuatro Palabras.



El nombre resultará de concatenar la primera letra de cada una de las cuatro palabras.



2.1.5.  Si hay Colisión de nombres.



Cuando de dos objetos de la realidad a nomenclar y aplicando la REGLA 1 se produzca el mismo resultado, se buscarán sinónimos del elemento en la vida real (p.e. Productos = Artículos, Materiales, Parte, Repuesto, etc.)    y si de todas maneras sigue ocurriendo la colisión se le eliminarán vocales, en el nombre menos importante y si se volviera a colisionar se usará la primera letra de cada silaba. ver anexo 1.



Elemento de la Realidad



Regla 1



Clientes



Clie



Localidades



Loca



Paises



Pais



Proveedores



Prov



Provincias (“colisión”)->>



Prvn



Fecha de Nacimiento



FNac



Fecha de Emisión



FEmi



Elementos de la Realidad



ERea



Numero de Cheque



NChe



Fecha Probable de Parto



FPPa



Forma de Pago



FPag



Certificado Libre Deuda



CLDe



Estado Civil



ECiv



Tipo de Documento



TDoc



Codigo Unico de Identificación Laboral



CUIL




2.2.         Regla General 2. Se derivarán “Nombres” de los de 4 Letras tomando las 3 Primeras para especificar la Pertenencia a o Función del elemento a nomenclar.



Esta regla se aplica en combinaciones para denominar los elementos del sistema ver ejemplos en la Regla General 3 (denominación de Atributos) y Regla General 4 (especificar función y pertenecia).



2.3.         Regla General 3. Nomenclatura de Atributos.



La denominación de Atributos necesita una regla específica que usa las Reglas Generales 1 y 2. El Nombre de los atributos estará conformado por dos partes claramente diferenciables el “Nucleo” o nombre del Atributo propiamente dicho y un prefijo de tres letras que derivará de la transacción a la que pertenezca (Regla General 2). Ejemplos:



Transacción



Atributo



Nomenlatura



Cliente (Clie)



Nombre (Nomb)



CliNomb



Cliente (Clie)



Codigo (Codi)



CliCodi



Insumo (Insu)



Cantidad (Cant)



InsCant



Insumo (Insu)



Precio (Prec)



InsPrec




 



2.4.         Regla General 4. Cuando haya que especificar Pertenencia o Función los nombres de los elementos en el sistema se darán por combinación de las Reglas Generales 1 y 2 . Nombres de Atributos, Subtipos, Indices .



Cuando un Objeto es parte de otro existente, se denominará  usando la Regla General 1, pero se le agregará al nombre un prefijo o sufijo (Regla General 2) correspondientes a las 3 primeras letras del Objeto al cual pertenecen o 3 letras especificando la Función que cumplirá el elemento que se está denominando..



2.4.1.      Pertenencia. Prefijo .



Al nombre de los atributos que pertenecen a una transacción se les agrega un prefijo de tres letras iguales a la 3 primeras letras de la transacción.



2.4.2.      Pertenencia o Función. Atributo-SubType & Grupo



Cuando en un sistema surge la necesidad del uso de SubTipos la denominación del mismo será igual al SuperTipo (3+4) + un sufijo de tres letras. Se distinguen dos casos



 1) USO: SubTipo x Aplicación de un atributo en una misma tabla: el sufijo aclarará el uso que se le da al atributo-SubTipo o bien a la transacción a la cual pertenece el atributo-SubTipo.



2)TRN: SubTipo para diferenciar la pertenecia a una transacción dada:  el sufijo será igual a las tres primeras letras de la transacción a la cual pertenece el atributo-SubTipo.




 



Ejemplos:



Caso de Aplicación



Uso / Transacción



Atributo



Nomenclatura



(1) Guarda Localidad Origen



Origen (uso)



LocCodi



LocNomb



LocCPos



LocCodiOri



LocNombOri



LocCPosOri



(1) Guarda Localidad Destino



Destino (uso)



LocCodi



LocNomb



LocCPos



LocCodiDes



LocNombDes



LocCPosDes



(1) Transferencia Inter Depósito - Guarda Depósito de Salida



Salida (uso)



DepCodi



DepNomb



DepCodiSal



DepNombSal



(1) Transferencia Inter Depósito - Guarda Depósito de Entrada



Entrada (uso)



DepCodi



DepNomb



DepCodiEnt



DepNombSal



(2) Para 



 



 



 




 



2.5.          



 



2.5.1.       



 



2.5.2.      Ejemplos de Nomenclatura como resultado de aplicar la Regla General 2.



Elemento de la Realidad



Regla 1



Nombre del Cliente



CliNomb



Codigo del Cliente



CliCodi



Codigo de Localidades



LocCodi



Nombre de la Localidad



LocNomb



Codigo Postal de Localidad



LocCPos



Fecha de Nacimiento de Asistente



AsiFNac



Fecha de Emisión de Factura



FacFEmi



Nombre del Elemento de la Realidad



EReNomb



Numero de Cheque del Valor



ValNChe



Fecha Probable de Parto de Tabla Embarazos



EmbFPPa



Forma de Pago de Factura



FacFPag



Certificado Libre Deuda del Automotor



AutCLDe



 



 



 



2.6.         Regla Tipográfica.


El usar una nomenclatura para la denominación de todos los objetos tiene un beneficio secundario que es la claridad de la lectura del sistema. Pero no es suficiente, para que este beneficio se logre podemos ayudar con la TipoGrafía que se use. Se propone que, dado un nombre o combinación de ellos se Tipee la primera letra de cada palabra usada para obtener el nombre definitivo en mayúscula y las letras siguientes en minúscula, en los ejemplos arriba citados se ha usado esta TipoGrafía.


2.6.1.  Si es de una Palabra.


La palabra se corta sin abreviar a sus cuatro primeros caracteres.


Si un nombre de cuatro letras esta formado por 1 palabra estará compuesto por 1 Mayúscula y 3 minúsculas


Ejemplos: Clie (Cliente) / Loca (Localidad) /Prov (Proveedor) / Fech(Fecha) /Arti (Articulo)


2.6.2.  Si es de dos Palabras.


El nombre resulta de la primera letra de la primera palabra concatenada a las tres primeras letras de la segunda palabra.


Su nombre de cuatro letras esta formado por 2 palabras tendrá 2 Mayúsculas y 2 minúsculas


Ejemplos: FNac(Fecha de Nacimiento) /CPos(Código Postal) /PPar(Punto de Partida)


2.6.3.  Si es de tres Palabras.


El nombre resultará de la primera letra de la primera palabra concatenada a la primera letra de la segunda palabra y las dos primeras letras de la tercera palabra.


Si un nombre de cuatro letras esta formado por 3 palabras tendrá 3 Mayúsculas y 1 minúscula


Ejemplos: FPPa(Fecha Probable de Parto)


 


2.6.4.  Si es de cuatro Palabras



Si un nombre de cuatro letras esta formado por 4 palabra s estará compuesto por 4 Mayúsculas que serán las cuatro iniciales de la palabras.


2.7.         Nomenclatura de Objetos GeneXus..


Los objetos GeneXus se denominarán usando la Regla General 1. Pero como al mismo objeto de la Realidad se le pueden construir mas de un objeto GeneXus del mismo tipo hay que hacer algunas consideraciones.


2.7.1.      TRANSACCIONES.



En general hay una sola transacción que representa a un objeto de la realidad, entonces se usa la nomenclatura de 4 letras. Si hubiera mas de una transacción para un objeto de la realidad se le agrega un sufijo de 3 letras que definirán el objetivo de dicha variante de la transacción. Puede ocurrir que una transacción sea suficientemente compleja, con gran cantidad de atributos o con muchos SubFiles, y por ello debamos particionarla en distintas transacciones  para acceder a distintas “áreas” de la transacción original. Estas Transacciones “hijas” se diferenciarán con un sufijo que aclare su contenido. También se puede dar el caso que a una transacción se le diseñen diferentes formularios según las vistas de usuarios que se necesiten, en este caso en el sufijo se aclarará la función de la “transacción hija”.


2.7.2.      WORK PANELS.


El caso de los WKPs es diferente que el de las transacciones ya que, por lo general, hay varios WKPs por cada objeto de la realidad. Por ejemplo para la entidad LOCALIDAD tendremos probablemente una transacción denominada.


 


Aconsejamos mirar la comparacion con la Nomenclatura GIK (GeneXus Incremental KnowledgeBase)


(versión incompleta...)  por la version completa comunicarse con Gabriel Medina (gxsoft@gmail.com)