La gran cantidad de comentarios sobre Android y la fuerza que se le está dando desde la comunidad GeneXus me hizo investigar si realmente Android tiene fuerza en Uruguay.
Lo que hice fue buscar en google “Android Uruguay” y realmente encontré varios blogs que hacen referencia a Android fuera de la comunidad genexus, pero lo que realmente me llamo la atención y me dio una grata sorpresa fue que encontré un blog y un sitio web dedicados exclusivamente a Android.
Los recursos son los siguientes:
http://www.androiduy.com
http://zona-android-uruguay.blogspot.com
Estos sitios se encargan de difundir Android y tienen varios post interesantes sobre diversos temas de Android.
Lo otro que me llamo la atención en los resultados que me tiro google fue que en buscojobs había un pedido de Desarrollador Android.
No se si estas cosas se pueden tomar como un indicador pero realmente antes de hacer esta búsqueda pensé que en Uruguay se le daba menos bola al tema de Android.
Estas cosas ayudan a motivarnos a decidirnos por Android ya que hasta hace un par de años la única motivación existente es que pertenecía a Google.
La idea es compartir mis experiencias con las diferentes pruebas que realizo sobre Open Source aplicado a GeneXus y otras tantas cosas que me pasan a diario.
domingo, noviembre 21, 2010
viernes, noviembre 19, 2010
Google Apps en cyanogenmod 6
Hace un par de días actualice la versión de mi HTC Magic a Android 2.2 utilizando la rom de cyanogen, el problema estaba en que la rom viene sin las aplicaciones de google por un tema de licenciamiento.
Si no entendí mal google le mando una carta en donde le pedía que no distribuyeran mas dentro de su rom las aplicaciones de google ya que podrían llegar a violar algunas licencias. Por este motivo la gente de cyanogenmod lo que hizo fue crear la rom sin las aplicaciones de google y por otro lado en el sitio deja un zip que contiene todas las aplicaciones de google.
En síntesis si utilizan alguna rom de cyanogenmod superior a la 6.0X deben bajarse las aplicaciones que correspondan, hay que tener cuidado ya que depende del móvil el paquete a instalar.
En mi caso tuve que bajar el archivo gapps-mdpi-tiny-20101020-signed.zip y lo instale en modo recovery desde la opción “Flash zip from sdcard” obviamente que antes había copiado el zip en la sdcard.
La información completa la pueden obtener del siguiente link: http://wiki.cyanogenmod.com/index.php?title=Latest_Version
Si no entendí mal google le mando una carta en donde le pedía que no distribuyeran mas dentro de su rom las aplicaciones de google ya que podrían llegar a violar algunas licencias. Por este motivo la gente de cyanogenmod lo que hizo fue crear la rom sin las aplicaciones de google y por otro lado en el sitio deja un zip que contiene todas las aplicaciones de google.
En síntesis si utilizan alguna rom de cyanogenmod superior a la 6.0X deben bajarse las aplicaciones que correspondan, hay que tener cuidado ya que depende del móvil el paquete a instalar.
En mi caso tuve que bajar el archivo gapps-mdpi-tiny-20101020-signed.zip y lo instale en modo recovery desde la opción “Flash zip from sdcard” obviamente que antes había copiado el zip en la sdcard.
La información completa la pueden obtener del siguiente link: http://wiki.cyanogenmod.com/index.php?title=Latest_Version
viernes, noviembre 12, 2010
¿Que son los archivos .apk?
El formato apk es una variante de los jar de java y se usan para distribuir e instalar componentes empaquetados para Android.
Para abrir un archivo apk se puede utilizar el winrar, o 7 zip o cualquier programa que permita descomprimirlo. Un archivo apk contiene lo siguiente:
Para abrir un archivo apk se puede utilizar el winrar, o 7 zip o cualquier programa que permita descomprimirlo. Un archivo apk contiene lo siguiente:
La fiebre por Android
Desde hace unos días he notado que se ha desatado una fiebre por Android dentro de la comunidad GeneXus que me ha puesto muy contento, lo que más me llama la atención es que la mayoría de las personas que conozco dentro de la comunidad tienen iPhone o BlackBerry y por suerte se están metiendo con Android.
Mi interés por Android se remonta a mediados del 2008 cuando un amigo me menciono que lo que se venía era Android, en su momento me puse a investigar y el día 28/09/08 hice mi primer post en el blog haciendo referencia a Android.
Lamentablemente en su momento por cuestiones de tiempo no pude meterme a fondo con Android y lo único que hice fue un “Hola Mundo”, para esto tuve que bajar el SDK y configurar Eclipse.
En aquel momento se me fueron las ganas de seguir probando ya que al no poseer un terminal en donde probar no quería estar jugando simplemente con un emulador y decidí esperar a que llegaran a uruguay teléfonos con Android ya que si era lo que se venía seguramente no iba a pasar mucho tiempo.
En marzo del 2010 me entere que Movistar estaba trayendo los Samsung Galaxy con Android, al poco tiempo Ancel comenzó a traer los Huawei también con Android pero los dos vienen con contrato y a mí no me sirve cambiar de contrato o de proveedor por lo que busque traer algún teléfono del exterior que fuera libre.
A mediados del 2010 un amigo me consiguió un HTC Magic con Android 1.6, esto me llevo a meterme nuevamente con el desarrollo para Android y la verdad que hice muy poco ya que programar a mano lleva bastante tiempo aparte de que hay que investigar mucho para meterse en una nueva plataforma.
Por suerte hace unos días GeneXus liberó la Evolution 2 Beta 1 que me permite generar aplicaciones para Android y la verdad que ahora renové las ganas de seguir metiéndome con Android para poder sacar el mayor provecho posible a mi teléfono.
De todas formas lo primero que tengo que hacer para poder probar bien es actualizar la versión de mi teléfono ya que tengo Android 1.6 y si no me equivoco las cosas más interesantes se encuentran en la versión 2.1 de Android.
Mi interés por Android se remonta a mediados del 2008 cuando un amigo me menciono que lo que se venía era Android, en su momento me puse a investigar y el día 28/09/08 hice mi primer post en el blog haciendo referencia a Android.
Lamentablemente en su momento por cuestiones de tiempo no pude meterme a fondo con Android y lo único que hice fue un “Hola Mundo”, para esto tuve que bajar el SDK y configurar Eclipse.
En aquel momento se me fueron las ganas de seguir probando ya que al no poseer un terminal en donde probar no quería estar jugando simplemente con un emulador y decidí esperar a que llegaran a uruguay teléfonos con Android ya que si era lo que se venía seguramente no iba a pasar mucho tiempo.
En marzo del 2010 me entere que Movistar estaba trayendo los Samsung Galaxy con Android, al poco tiempo Ancel comenzó a traer los Huawei también con Android pero los dos vienen con contrato y a mí no me sirve cambiar de contrato o de proveedor por lo que busque traer algún teléfono del exterior que fuera libre.
A mediados del 2010 un amigo me consiguió un HTC Magic con Android 1.6, esto me llevo a meterme nuevamente con el desarrollo para Android y la verdad que hice muy poco ya que programar a mano lleva bastante tiempo aparte de que hay que investigar mucho para meterse en una nueva plataforma.
Por suerte hace unos días GeneXus liberó la Evolution 2 Beta 1 que me permite generar aplicaciones para Android y la verdad que ahora renové las ganas de seguir metiéndome con Android para poder sacar el mayor provecho posible a mi teléfono.
De todas formas lo primero que tengo que hacer para poder probar bien es actualizar la versión de mi teléfono ya que tengo Android 1.6 y si no me equivoco las cosas más interesantes se encuentran en la versión 2.1 de Android.
jueves, abril 29, 2010
Google App Engine Parte II
Desde hace unos días me estoy metiendo a investigar el tema de Google App Engine, la verdad que está muy bueno y lo que más me gusta es la facilidad de ejecutar ejemplos. Todos nos hemos topado con miles de ejemplos en internet que seguramente algo no funciona o se complica y realmente me llamo la atención que todo lo que se encuentra en la documentación funciona sin problemas.
Lo que más me gusto es que la confirmación la hacen por sms, realmente cuando estaba haciendo la registración pensé que no iba a funcionar y la verdad que apenas presione el botón me llego el sms con el código de confirmación.
Para registrar una aplicación primero que nada hay que tener una cuenta de gmail y registrarse en el sitio de appengine: appengine.google.com una vez que me registro tengo que crear la aplicación. Una vez que obtenemos una aplicación contamos con un subdominio appspot.com, de todas formas también se puede asociar a un dominio propio.
En mi caso registre http://urulinux.appspot.com/
Los pasos a seguir son muy sencillos, para facilitar la explicación hice una copia de las pantallas y las puse tal cual el orden en que se solicitan:
Una vez que finalizamos el registro de la aplicación ya podemos realizar el deploy en la nube de nuestras aplicaciones, en mi caso lo primero que hice fue bajar el complemento para eclipse y en tres clicks pude probar el típico ejemplo de "Hola Mundo."
http://urulinux.appspot.com/
lunes, abril 26, 2010
Cosas que me vuelven loco en GeneXus Ev. 1
La verdad que GeneXus Ev. 1 tiene mil cosas que nos ayudan muchísimo y nos permite aumentar nuestra producción, de todas formas ahora que lo estoy usando a diario y por mas horas al día tengo que admitir que existen cosas que me están volviendo loco:
En GeneXus 9 teníamos la posibilidad de agregar los parámetros desde una lista de selección, en la imagen se muestra cómo podíamos seleccionar el componente y los parámetros sin problemas:
Esto lo pude observar desde GeneXus X y siguen en la Ev. 1, como muestra la imagen no puedo ingresar los parámetros de una forma amigable como teníamos en GeneXus 9.0.
No es nada grave pero me obliga a crear el Web Component a mano o recordar el nombre de las variables o atributos que quiero pasar por parámetro.
La segunda cosa que me vuelve loco es que no funciona la opción de definir un evento de usuario desde las propiedades, la opción existe pero luego tengo que ir a Eventos y escribirlo ya que no lo crea.
En GeneXus 9 teníamos la posibilidad de agregar los parámetros desde una lista de selección, en la imagen se muestra cómo podíamos seleccionar el componente y los parámetros sin problemas:
Esto lo pude observar desde GeneXus X y siguen en la Ev. 1, como muestra la imagen no puedo ingresar los parámetros de una forma amigable como teníamos en GeneXus 9.0.
No es nada grave pero me obliga a crear el Web Component a mano o recordar el nombre de las variables o atributos que quiero pasar por parámetro.
La segunda cosa que me vuelve loco es que no funciona la opción de definir un evento de usuario desde las propiedades, la opción existe pero luego tengo que ir a Eventos y escribirlo ya que no lo crea.
Google App Engine Parte I
La verdad que hace pocos días me pude dar cuenta o me desayune de la existencia de Google App Engine, en realidad me entere de la existencia de esto leyendo el blog de Enrique Almeida en el cual había realizado un comentario sobre el "CloudCamp Montevideo".
Desde ese momento me metí y descubrí una buena alternativa para introducirnos en el Cloud Computing. La verdad que me gusta mucho lo que pude leer y voy a ver si me da el tiempo para realizar algunas pruebas.
Se puede arrancar con este link: Google App Engine
Desde ese momento me metí y descubrí una buena alternativa para introducirnos en el Cloud Computing. La verdad que me gusta mucho lo que pude leer y voy a ver si me da el tiempo para realizar algunas pruebas.
Se puede arrancar con este link: Google App Engine
domingo, noviembre 08, 2009
Respaldar Bases de datos en MySQL
Existen varias formas de realizar respaldos de bases de datos MySQL por lo que pueden existir mil sitios en donde se pueda encontrar información del estilo.
En lo personal estaba programando un backup y tuve que comenzar a hacer un script para que se encargara de respaldar las bases de datos aparte de mandar un mail en caso de fallo y otras cosas básicas de cualquier respaldo.
Lo que hice fue buscar en internet y encontré un Script llamado AutoMySQLBackup, el script se puede bajar del siguiente sitio: http://sourceforge.net/projects/automysqlbackup/
Algunas de las cosas interesantes:
- Respalda una o todas las bases de datos que se necesiten.
- Reporta por mail el resultado de ejecución del script
- Se pueden disparar otros scripts antes o después de ejecutar el respaldo.
- Ejecuta backups, diarios, semanales, mensuales, etc.
Lo principal es que nos ahorra un montón de trabajo y es muy sencillo de modificar para adaptarlo a nuestras necesidades.
En lo personal estaba programando un backup y tuve que comenzar a hacer un script para que se encargara de respaldar las bases de datos aparte de mandar un mail en caso de fallo y otras cosas básicas de cualquier respaldo.
Lo que hice fue buscar en internet y encontré un Script llamado AutoMySQLBackup, el script se puede bajar del siguiente sitio: http://sourceforge.net/projects/automysqlbackup/
Algunas de las cosas interesantes:
- Respalda una o todas las bases de datos que se necesiten.
- Reporta por mail el resultado de ejecución del script
- Se pueden disparar otros scripts antes o después de ejecutar el respaldo.
- Ejecuta backups, diarios, semanales, mensuales, etc.
Lo principal es que nos ahorra un montón de trabajo y es muy sencillo de modificar para adaptarlo a nuestras necesidades.
martes, octubre 27, 2009
Replicación en MySQL Parte I
Desde hace un tiempo vengo manejando servidores con Replica pero no los había tenido que configurar ya que el cliente tenía un DBA que se encargaba de esas cosas. Hace unos días tuve que configurar mi primer replica con mysql y comencé a meterme en el tema. La verdad que es mucho más sencillo de lo que pensaba, hay que tener en cuenta que esta es un replica sencilla en donde tengo un servidor master y otro slave. La necesidad de tener un servidor de replica se debe a que el cliente quiere tener alta disponibilidad y en caso de fallos una alternativa rápida para seguir operativos. Me toco configurar una réplica sencilla ya que toda transacción que se hace en el master se copia en el slave, esta es la réplica más sencilla que puede existir y nos provee de un servidor alternativo en caso de que falle el master.
A continuación hago un resumen muy pero muy breve de lo que hice para tener un servidor con Replica en MySQL.
Para poder configurar mi servidor de replica tengo que hacer lo siguiente:
Configuración servidor MASTER:
1) Editar el my.cnf
log-bin=/var/lib/mysql/mysql-bin.log
binlog-do-db=test
server-id = 1
2) Bajar y Subier el mysql
3) Entro en el shell de mysql para darle permisos al usuario que voy a utilizar para la réplica.
mysql> GRANT REPLICATION SLAVE ON *.* TO usr_replica@'%' IDENTIFIED BY 'password_replica';
mysql> FLUSH PRIVILEGES;
4) Entro en el shell de mysql para consultar el estado del Master
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | test | |
+------------------+----------+--------------+------------------+
Estos datos son importantes para luego poder configurar el SLAVE.
5) mysqldump -u root -ppassword --opt test>test.sql
Configuración servidor SLAVE:
En el esclavo lo primero que tengo que hacer es copiar la estructura de la base de datos a replicar, existen varias formas de hacerlo pero para el ejemplo preferí hacerlo de la forma más sencilla. En el ejemplo estamos replicando solo la base de datos test por lo que usando un simple dump podemos preparar el servidor esclavo para la réplica.
1) Levanto el test.sql que generamos en el Master en el SLAVE, esto lo hago simplemente con un source o de la forma que se prefiera. Hay que tener en cuenta que la base debe existir o la tenemos que crear, en este ejemplo uso la test que viene con mysql y en el test.sql traigo la estructura que tiene el master que simplemente es una tabla para las pruebas.
2) Tengo que indicarle al servidor que es slave por lo que tengo que editar el my.cnf con los siguientes datos:
server-id=2
master-host=192.168.248.136
master-user=usr_replica
master-password=password_replica
master-connect-retry=106
replicate-do-db=test
Estos datos los saco del master tal cual se muestra arriba. Después de modificar el my.cnf debo hacer un stop y start del servicio mysql.
3) Entro en el shell de mysql y hago lo sigiuente:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.248.136', MASTER_USER='usr_replica', MASTER_PASSWORD='password_replica', MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;
4) Dentro del shell lo que hago es inicializar el esclavo con el siguiente comando:
mysql> START SLAVE;
Con esta configuración todo dato que se modifique en la base de datos test del servidor master se replicara en la base de datos test del slave.
A continuación hago un resumen muy pero muy breve de lo que hice para tener un servidor con Replica en MySQL.
Para poder configurar mi servidor de replica tengo que hacer lo siguiente:
Configuración servidor MASTER:
1) Editar el my.cnf
log-bin=/var/lib/mysql/mysql-bin.log
binlog-do-db=test
server-id = 1
2) Bajar y Subier el mysql
3) Entro en el shell de mysql para darle permisos al usuario que voy a utilizar para la réplica.
mysql> GRANT REPLICATION SLAVE ON *.* TO usr_replica@'%' IDENTIFIED BY 'password_replica';
mysql> FLUSH PRIVILEGES;
4) Entro en el shell de mysql para consultar el estado del Master
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | test | |
+------------------+----------+--------------+------------------+
Estos datos son importantes para luego poder configurar el SLAVE.
5) mysqldump -u root -ppassword --opt test>test.sql
Configuración servidor SLAVE:
En el esclavo lo primero que tengo que hacer es copiar la estructura de la base de datos a replicar, existen varias formas de hacerlo pero para el ejemplo preferí hacerlo de la forma más sencilla. En el ejemplo estamos replicando solo la base de datos test por lo que usando un simple dump podemos preparar el servidor esclavo para la réplica.
1) Levanto el test.sql que generamos en el Master en el SLAVE, esto lo hago simplemente con un source o de la forma que se prefiera. Hay que tener en cuenta que la base debe existir o la tenemos que crear, en este ejemplo uso la test que viene con mysql y en el test.sql traigo la estructura que tiene el master que simplemente es una tabla para las pruebas.
2) Tengo que indicarle al servidor que es slave por lo que tengo que editar el my.cnf con los siguientes datos:
server-id=2
master-host=192.168.248.136
master-user=usr_replica
master-password=password_replica
master-connect-retry=106
replicate-do-db=test
Estos datos los saco del master tal cual se muestra arriba. Después de modificar el my.cnf debo hacer un stop y start del servicio mysql.
3) Entro en el shell de mysql y hago lo sigiuente:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.248.136', MASTER_USER='usr_replica', MASTER_PASSWORD='password_replica', MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;
4) Dentro del shell lo que hago es inicializar el esclavo con el siguiente comando:
mysql> START SLAVE;
Con esta configuración todo dato que se modifique en la base de datos test del servidor master se replicara en la base de datos test del slave.
lunes, septiembre 28, 2009
Collaborative Projects 2.0
En el pasado encuentro se hizo el lanzamiento de los Collaborative Projects 2.0.
La verdad que me puso muy contento el enterarme de este lanzamiento y sin dudas esto es un estimulo para la comunidad de usuarios GeneXus.
Me gusta apoyar estas iniciativas ya que independientemente de los resultados todos los que participan se ven beneficiados de alguna manera.
En lo personal siempre intento participar de todo lo que tenga que ver con la comunidad pues la mayor parte de mi conocimiento sobre GeneXus lo he adquirido del intercambio con la comunidad.
En más de una oportunidad pude aprender muchísimas cosas al tener contacto con KBS que se publicaban en el gxopen, ni hablar del intercambio de conocimiento que se produce al juntar varias personas que usan GeneXus.
En esta oportunidad se ha aprendido de ediciones anteriores y se va a dar un tiempo de un año para poder finalizar los proyectos, calificandolos en tres oportunidades.
Por este y otros motivos voy a participar de esta edición de los CP 2.0 y recomiendo que todos participemos.
Link al wiki de Collaborative Projects 2.0: http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3ACollaborative+Projects+2.0
Link a la Presentación del Lanzamiento de Collaborative Projects 2.0 en el XIX Encuentro Internacional GeneXus: http://www.events.genexus.com/portal/hgxpp001.aspx?16,67,1134,O,S,0,,1826
La verdad que me puso muy contento el enterarme de este lanzamiento y sin dudas esto es un estimulo para la comunidad de usuarios GeneXus.
Me gusta apoyar estas iniciativas ya que independientemente de los resultados todos los que participan se ven beneficiados de alguna manera.
En lo personal siempre intento participar de todo lo que tenga que ver con la comunidad pues la mayor parte de mi conocimiento sobre GeneXus lo he adquirido del intercambio con la comunidad.
En más de una oportunidad pude aprender muchísimas cosas al tener contacto con KBS que se publicaban en el gxopen, ni hablar del intercambio de conocimiento que se produce al juntar varias personas que usan GeneXus.
En esta oportunidad se ha aprendido de ediciones anteriores y se va a dar un tiempo de un año para poder finalizar los proyectos, calificandolos en tres oportunidades.
Por este y otros motivos voy a participar de esta edición de los CP 2.0 y recomiendo que todos participemos.
Link al wiki de Collaborative Projects 2.0: http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3ACollaborative+Projects+2.0
Link a la Presentación del Lanzamiento de Collaborative Projects 2.0 en el XIX Encuentro Internacional GeneXus: http://www.events.genexus.com/portal/hgxpp001.aspx?16,67,1134,O,S,0,,1826
jueves, julio 16, 2009
PROYECTO COMUNIX

COMUNIX es una distribución Linux basada en Knoppix. Nace dentro de la comuna canaria y fue creada por un grupo de funcionarios municipales los cuales tenían como objetivo lograr contar con una distribución Linux que tuviera el mismo aspecto que Windows XP ya que el software que reinaba dentro de la comuna canaria era Windows XP.
La importancia de crear una distribución de estas características no solo es el abaratar costos si no que permite a los usuarios no tener que volver a capacitarse y ni que hablar que logra demostrar que se pueden crear cosas importantes dentro de ambientes públicos.
En lo personal y dada la experiencia que tengo en ambientes municipales tengo que admitir que este proyecto es una pegada de todo punto de vista ya que no solo es funcional si no que esta súper bien pensado.
Sería interesante que el resto de las intendencias tomaran esta distribución como software de escritorio y ni que hablar que si se unieran todas para colaborar esta distribución podría lograr ser un estándar dentro de las intendencias.
El sitio de COMUNIX es el siguiente:
http://www.imcanelones.gub.uy/wps/wcm/connect/Sitio%20IMC/imc/comunix/
En la sección de descargas se pueden bajar la distribución, es muy sencilla de instalar y realmente parece Windows XP, yo la probé y me pareció una muy buena opción para tener Linux en un escritorio aparte de que ya tiene toda la configuración para un usuario estándar.
La verdad que me saco el sombrero ante este proyecto ya que demuestra que con ganas se pueden hacer buenas cosas.
lunes, julio 13, 2009
La Fiebre del SMS
Tengo un cliente que me pidió poder realizar algunas de las tareas que hace habitualmente mediante el envío de SMS.
En realidad al inicio la idea era poder comprar varias PDA para realizar algunas de las tareas que hoy por un tema de costos se quieren hacer por SMS.
Lo primero que se me pidió fue poder consultar la deuda de un Cliente, por lo que la idea es mandar un SMS a un número dado con la palabra DEUDA + IDCliente y que este me devuelva la deuda del Cliente.
El planteo fue realizado y tenía que investigar cómo hacer esto ya que sinceramente ni idea de cómo poder recibir SMS desde mi aplicación, lo que hice fue llamar a las diferentes compañías proveedoras de telefonia celular y me hicieron varias propuestas pero en todas ellas había que programar bastante y a un costo bastante elevado, por lo menos para la prueba inicial y para este cliente en cuestión.
Todo esto me llevo a pensar como hacía Movistar con los modem inalámbricos que distribuye para darnos acceso a internet, estos modem traen un software en donde también se puede enviar y recibir SMS.
Después de investigar encontré que la aplicación llamada Escritorio Movistar almacena la información de los mensajes en una base de datos Access lamada mensajeriadirecta.mdb.
En mi PC los datos se almacenan en el siguiente directorio:
C:\Documents and Settings\Cristhian\Datos de programa\Telefónica Móviles\Escritorio movistar Latam\
Existen varios xml que no tuve tiempo de investigar para que sirven, aparte de los xmls tengo la mdb y dos archivos con extensión .db que para mi sorpresa son base de datos SQLite.
Al abrir el archivo MDB me encuentro con lo siguiente:

La tabla en la que se guarda la información de los mensajes se llama DatosMensaje.
Después de encontrar esto lo que hice fue poner el modem en el servidor y tengo una pequeña aplicación que se encuentra corriendo con un demonio en la cual se encuentra rastrillando la tabla DatosMensaje para saber si ha llegado un nuevo mensaje de texto, cuando llega un mensaje busca las palabras clave y contesta.
Es una aplicación modesta que seguramente se podría hacer de otra manera pero con un simple modem inalámbrico que se puede conseguir a bajo costo tengo una aplicación en la que puedo recibir SMS y contestarlos rápidamente.
Seguramente existen mil formas mas elegantes de hacer esto pero lo hice rápido y a un costo muy bajo.
Comparto esta experiencia por si alguien tiene una situación similar y quiere ahorrarse el tiempo de investigación.
En realidad al inicio la idea era poder comprar varias PDA para realizar algunas de las tareas que hoy por un tema de costos se quieren hacer por SMS.
Lo primero que se me pidió fue poder consultar la deuda de un Cliente, por lo que la idea es mandar un SMS a un número dado con la palabra DEUDA + IDCliente y que este me devuelva la deuda del Cliente.
El planteo fue realizado y tenía que investigar cómo hacer esto ya que sinceramente ni idea de cómo poder recibir SMS desde mi aplicación, lo que hice fue llamar a las diferentes compañías proveedoras de telefonia celular y me hicieron varias propuestas pero en todas ellas había que programar bastante y a un costo bastante elevado, por lo menos para la prueba inicial y para este cliente en cuestión.
Todo esto me llevo a pensar como hacía Movistar con los modem inalámbricos que distribuye para darnos acceso a internet, estos modem traen un software en donde también se puede enviar y recibir SMS.
Después de investigar encontré que la aplicación llamada Escritorio Movistar almacena la información de los mensajes en una base de datos Access lamada mensajeriadirecta.mdb.
En mi PC los datos se almacenan en el siguiente directorio:
C:\Documents and Settings\Cristhian\Datos de programa\Telefónica Móviles\Escritorio movistar Latam\
Existen varios xml que no tuve tiempo de investigar para que sirven, aparte de los xmls tengo la mdb y dos archivos con extensión .db que para mi sorpresa son base de datos SQLite.
Al abrir el archivo MDB me encuentro con lo siguiente:

La tabla en la que se guarda la información de los mensajes se llama DatosMensaje.
Después de encontrar esto lo que hice fue poner el modem en el servidor y tengo una pequeña aplicación que se encuentra corriendo con un demonio en la cual se encuentra rastrillando la tabla DatosMensaje para saber si ha llegado un nuevo mensaje de texto, cuando llega un mensaje busca las palabras clave y contesta.
Es una aplicación modesta que seguramente se podría hacer de otra manera pero con un simple modem inalámbrico que se puede conseguir a bajo costo tengo una aplicación en la que puedo recibir SMS y contestarlos rápidamente.
Seguramente existen mil formas mas elegantes de hacer esto pero lo hice rápido y a un costo muy bajo.
Comparto esta experiencia por si alguien tiene una situación similar y quiere ahorrarse el tiempo de investigación.
domingo, mayo 03, 2009
Google va más rápido de lo que puedo procesar.
Hace más de un mes tuve que empezar a investigar la forma de poder almacenar datos locales desde mis aplicaciones Web.
En el momento lo primero que se me vino a la cabeza fue hacer un applet firmado para tener permisos locales y usaba una base de datos SQLite para poder almacenar la información. Tuve que resolver varias cosas ya que no era un tema sencillo y actualmente todavía sigo ajustando la solución planteada.
Lamentablemente en la actualidad pico mucho código y tengo poco tiempo para investigar, por suerte a diario entro al planeta GeneXus ( http://blog.genexus.com ) el cual cuenta con varios blogs que me ponen al tanto de las cosas interesantes o tendencias a seguir.
El planeta GeneXus para mi es como un compañero que te pasa los apuntes y todavía resumidos, gracias al blog de Enrique Almeida me entere de uno de los proyectos de Google llamado Gears.
Después de investigar un poco Google Gears me di cuenta que Google va más rápido de lo que puedo procesar ya que casi todo lo que necesitamos o podemos llegar a necesitar ya lo tienen resuelto.
Realmente parece mentira pero lo que yo intente hacer hace un mes y me llevo un tiempo considerable la gente de Google te lo da resuelto y ni que hablar que 100 veces mejor de lo que yo puedo hacerlo.
Ahora me encuentro adaptando mi aplicación para que trabaje con uno de los módulos de Gears, la DATABASE API que utiliza SQLite para persistir los datos. Después de esto me di cuenta que voy a tener que estar más pendiente de lo que hace Google ya que esto que me paso es un ejemplo de que Google va mucho más rápido de lo que puedo procesar y seguramente me va a facilitar la vida.
En el momento lo primero que se me vino a la cabeza fue hacer un applet firmado para tener permisos locales y usaba una base de datos SQLite para poder almacenar la información. Tuve que resolver varias cosas ya que no era un tema sencillo y actualmente todavía sigo ajustando la solución planteada.
Lamentablemente en la actualidad pico mucho código y tengo poco tiempo para investigar, por suerte a diario entro al planeta GeneXus ( http://blog.genexus.com ) el cual cuenta con varios blogs que me ponen al tanto de las cosas interesantes o tendencias a seguir.
El planeta GeneXus para mi es como un compañero que te pasa los apuntes y todavía resumidos, gracias al blog de Enrique Almeida me entere de uno de los proyectos de Google llamado Gears.
Después de investigar un poco Google Gears me di cuenta que Google va más rápido de lo que puedo procesar ya que casi todo lo que necesitamos o podemos llegar a necesitar ya lo tienen resuelto.
Realmente parece mentira pero lo que yo intente hacer hace un mes y me llevo un tiempo considerable la gente de Google te lo da resuelto y ni que hablar que 100 veces mejor de lo que yo puedo hacerlo.
Ahora me encuentro adaptando mi aplicación para que trabaje con uno de los módulos de Gears, la DATABASE API que utiliza SQLite para persistir los datos. Después de esto me di cuenta que voy a tener que estar más pendiente de lo que hace Google ya que esto que me paso es un ejemplo de que Google va mucho más rápido de lo que puedo procesar y seguramente me va a facilitar la vida.
miércoles, abril 29, 2009
SQLite Manager

Navegando en internet encontre este complemento de FireFox llamado SQLite Manager. La verdad que me soluciono los problemas que tenía para poder administrar bases de datos SQLite ya que hasta el momento hacía todo por línea de comandos.
viernes, octubre 17, 2008
MySQL InnoDB y Raw Devices
Estamos trabajando en un proyecto bastante grande y uno de los principales temas a tratar son los de performance. Por un lado estamos teniendo mucho cuidado en tratar de que los programas queden óptimos aparte de prestar mucho cuidado a la utilización de índices y todo lo que ayude a que los programas tengan una buena performance.
Del punto de vista de GeneXus tenemos todo bajo control pero en ocasiones los proyectos son tan grandes que también hay que prestar mucha atención al hardware sobre el cual se va a montar la aplicación y también al “tunning” que se le haga al DBMS.
En la mayoría de los casos no tengo la oportunidad de dedicarme al “tunning” del DBMS pero en este caso quise hacerlo ya que vamos a utilizar MySQL y nos entregaron un servidor con la instalación por defecto.
Lo primero que hice fue actualizar la versión de MySQL ya que el servidor tenía MySQL 5.0 por lo que me baje el rpm para RedHat de la 5.1.28. Desinstale la versión 5.0 mediante rpm y levante la versión nueva.
Tenía un disco de 408 GB para el MySQL por lo que decidí utilizar raw devices para montar los innodb, la idea era crear un Tablespace de 408 GB para MySQL. Lamentablemente después de probar varias veces si creaba un solo archivo de 408 GB se me partía y no me levantaba el servicio, por cuestiones de tiempo no pude investigar mucho mas por lo que decidí crear 4 raw devices de 95 GB cada uno y tener 4 innodb.
Tuve que tocar el my.cnf con todos los parámetros que pongo habitualmente para trabajar con innodb solo que cambie la parte de innodb_data_file_path para montar los raw devices.
Actualmente el my.cnf lo tengo así:
innodb_data_file_path = /dev/raw/raw1:95Graw;/dev/raw/raw2:95Graw;/dev/raw/raw3:95Graw;/dev/raw/raw4:95Graw
Lo interesante fue que tuve que particionar el disco y crear los raw devices, a pesar de mi nick no soy experto en linux por lo que tuve que apoyarme en mi amigo “google” para poder cumplir esta tarea.
Las particiones las hice con fdisk y me quedo de la siguiente manera:
Device Boot Start End Blocks Id System
/dev/sdb1 1 12405 99643131 83 Linux
/dev/sdb2 12406 24808 99627097+ 83 Linux
/dev/sdb3 24809 37214 99651195 83 Linux
/dev/sdb4 37215 49605 99530707+ 83 Linux
Para crear los raw devices tuve que hacer lo siguiente:
Editar el /etc/udev/rules.d/60-raw.rules y escribir las siguientes líneas:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
Editar el archivo /etc/udev/rules.d/ 41-local-permissions-rules y agregar las siguientes líneas:
KERNEL=="sdb1" GROUP="mysql"
KERNEL=="sdb2" GROUP="mysql"
KERNEL=="sdb3" GROUP="mysql"
KERNEL=="sdb4" GROUP="mysql"
El problema que tuve es que al re-iniciar el equipo los raw devices quedaban con el owner root por lo que MySQL no tenía permisos para usarlos. Después de unos minutos sin encontrar una solución elegante lo que hice fue emplear una solución desprolija pero que funciono. :-)
Edite el archivo /etc/init.d/mysql en donde agregue las siguientes líneas:
chown mysql /dev/raw/raw1
chown mysql /dev/raw/raw2
chown mysql /dev/raw/raw3
chown mysql /dev/raw/raw4
No se si la solución es la mas elegante pero quedo funcionando y pude seguir adelante.
Una vez que tuve los raw creados y con permisos para mysql lo que hice fue modificar el my.cnf de la siguiente manera:
innodb_data_file_path = /dev/raw/raw1:95Gnewraw;/dev/raw/raw2:95Gnewraw;/dev/raw/raw3:95Gnewraw;/dev/raw/raw4:95Gnewraw
El newraw le indica a mysql que tiene que crear el espacio de tablas por lo que una vez que tenemos el my.cnf configurado alcanza con bajar y subir el servicio mysql para que me cree el espacio de datos en los raw devices que se le indicarón.
Una vez que mysql termino hay que modificar el my.cnf para que quede de la siguiente manera:
innodb_data_file_path = /dev/raw/raw1:95Graw;/dev/raw/raw2:95Graw;/dev/raw/raw3:95Graw;/dev/raw/raw4:95Graw
Un consejo es que cuando mysql esta creando el espacio de tables nos da un Failed pero sigue trabajando por lo que una forma que tenemos de saber si todavía se encuentra trabajando es hacer un ls –l /dev/raw/ esto me tira lo siguiente:
crw------- 1 mysql root 162, 1 Oct 12 18:16 raw1
crw------- 1 mysql root 162, 2 Oct 13 11:12 raw2
crw------- 1 mysql root 162, 3 Oct 13 11:30 raw3
crw------- 1 mysql root 162, 4 Oct 13 11:49 raw4
En mi caso como el tamaño de los innodb era de 95 GB al levantar mysql después de 5 minutos me daba un Failed pero seguía trabajando y la forma que tuve de saber en que iba era haciendo el ls para consultar la hora de modificación. Un experto seguramente tenga otros métodos pero no es mi caso.
Con esto tenemos mysql utilizando particiones crudas como se dice habitualmente.
Del punto de vista de GeneXus tenemos todo bajo control pero en ocasiones los proyectos son tan grandes que también hay que prestar mucha atención al hardware sobre el cual se va a montar la aplicación y también al “tunning” que se le haga al DBMS.
En la mayoría de los casos no tengo la oportunidad de dedicarme al “tunning” del DBMS pero en este caso quise hacerlo ya que vamos a utilizar MySQL y nos entregaron un servidor con la instalación por defecto.
Lo primero que hice fue actualizar la versión de MySQL ya que el servidor tenía MySQL 5.0 por lo que me baje el rpm para RedHat de la 5.1.28. Desinstale la versión 5.0 mediante rpm y levante la versión nueva.
Tenía un disco de 408 GB para el MySQL por lo que decidí utilizar raw devices para montar los innodb, la idea era crear un Tablespace de 408 GB para MySQL. Lamentablemente después de probar varias veces si creaba un solo archivo de 408 GB se me partía y no me levantaba el servicio, por cuestiones de tiempo no pude investigar mucho mas por lo que decidí crear 4 raw devices de 95 GB cada uno y tener 4 innodb.
Tuve que tocar el my.cnf con todos los parámetros que pongo habitualmente para trabajar con innodb solo que cambie la parte de innodb_data_file_path para montar los raw devices.
Actualmente el my.cnf lo tengo así:
innodb_data_file_path = /dev/raw/raw1:95Graw;/dev/raw/raw2:95Graw;/dev/raw/raw3:95Graw;/dev/raw/raw4:95Graw
Lo interesante fue que tuve que particionar el disco y crear los raw devices, a pesar de mi nick no soy experto en linux por lo que tuve que apoyarme en mi amigo “google” para poder cumplir esta tarea.
Las particiones las hice con fdisk y me quedo de la siguiente manera:
Device Boot Start End Blocks Id System
/dev/sdb1 1 12405 99643131 83 Linux
/dev/sdb2 12406 24808 99627097+ 83 Linux
/dev/sdb3 24809 37214 99651195 83 Linux
/dev/sdb4 37215 49605 99530707+ 83 Linux
Para crear los raw devices tuve que hacer lo siguiente:
Editar el /etc/udev/rules.d/60-raw.rules y escribir las siguientes líneas:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
Editar el archivo /etc/udev/rules.d/ 41-local-permissions-rules y agregar las siguientes líneas:
KERNEL=="sdb1" GROUP="mysql"
KERNEL=="sdb2" GROUP="mysql"
KERNEL=="sdb3" GROUP="mysql"
KERNEL=="sdb4" GROUP="mysql"
El problema que tuve es que al re-iniciar el equipo los raw devices quedaban con el owner root por lo que MySQL no tenía permisos para usarlos. Después de unos minutos sin encontrar una solución elegante lo que hice fue emplear una solución desprolija pero que funciono. :-)
Edite el archivo /etc/init.d/mysql en donde agregue las siguientes líneas:
chown mysql /dev/raw/raw1
chown mysql /dev/raw/raw2
chown mysql /dev/raw/raw3
chown mysql /dev/raw/raw4
No se si la solución es la mas elegante pero quedo funcionando y pude seguir adelante.
Una vez que tuve los raw creados y con permisos para mysql lo que hice fue modificar el my.cnf de la siguiente manera:
innodb_data_file_path = /dev/raw/raw1:95Gnewraw;/dev/raw/raw2:95Gnewraw;/dev/raw/raw3:95Gnewraw;/dev/raw/raw4:95Gnewraw
El newraw le indica a mysql que tiene que crear el espacio de tablas por lo que una vez que tenemos el my.cnf configurado alcanza con bajar y subir el servicio mysql para que me cree el espacio de datos en los raw devices que se le indicarón.
Una vez que mysql termino hay que modificar el my.cnf para que quede de la siguiente manera:
innodb_data_file_path = /dev/raw/raw1:95Graw;/dev/raw/raw2:95Graw;/dev/raw/raw3:95Graw;/dev/raw/raw4:95Graw
Un consejo es que cuando mysql esta creando el espacio de tables nos da un Failed pero sigue trabajando por lo que una forma que tenemos de saber si todavía se encuentra trabajando es hacer un ls –l /dev/raw/ esto me tira lo siguiente:
crw------- 1 mysql root 162, 1 Oct 12 18:16 raw1
crw------- 1 mysql root 162, 2 Oct 13 11:12 raw2
crw------- 1 mysql root 162, 3 Oct 13 11:30 raw3
crw------- 1 mysql root 162, 4 Oct 13 11:49 raw4
En mi caso como el tamaño de los innodb era de 95 GB al levantar mysql después de 5 minutos me daba un Failed pero seguía trabajando y la forma que tuve de saber en que iba era haciendo el ls para consultar la hora de modificación. Un experto seguramente tenga otros métodos pero no es mi caso.
Con esto tenemos mysql utilizando particiones crudas como se dice habitualmente.
domingo, septiembre 28, 2008
SDK para teléfonos móviles
Hace unos días se me dio por comenzar a investigar que posibilidades tendría de llegar a desarrollar un programa que me permitiera tomar las direcciones del extendedCRM y exportarlas con algún formato que se pueda levantar en cualquier teléfono móvil.
Esto no es tan sencillo como parece ya que existen 100 SDK distintos dependiendo de las características del móvil. En principio y mirando hacia adelante me puse a investigar como era el tema de desarrollar aplicaciones para el iPhone, navegando en internet encontré la siguiente página:
http://developer.apple.com/iphone/index.action
Esta página contiene todo lo necesario para desarrollar aplicaciones para el iPhone ya que desde ahí me puedo bajar un SDK. El problema es que el SDK del iPhone solo funciona en MAC OS. Esto es una tranca para mi ya que hace mucho pero mucho tiempo que no toco un MAC, de todas maneras me baje el SDK y el MAC OS X lo que me llevo a tener que instalar una Máquina virtual con el MAC OS y aprender un montón de cosas sobre el MAC OS antes de poder tocar el SDK. En sintesis todavía estoy peleando con la instalación del MAC OS y no he podido ni siquiera ver el SDK del iPhone.
En vista de la complejidad que tiene instalar todo lo necesario para poder trabajar con el SDK del iPhone recordé que Google tiene el Android y a pesar de que no e visto todavía ningún teléfono con Android es algo que seguramente no demore en llegar a Uruguay, en realidad es algo que se viene y creo va a ser importante ya que en la página de registro del iPhone dev center pregunta si se ha programado para otra plataforma móvil y en la lista ya figura Android.
Para buscar e instalar el SDK de Android demore algo así como 5 minutos, encontré la página y ya tenía la posibilidad de bajarme el SDK con todo lo necesario para desarrollar una aplicación para Android. El sitio del Android es el siguiente:
http://code.google.com/intl/es/android/
En síntesis 5 minutos después de haber bajado el SDK pude configurar mi Eclipse Europa para trabajar con Android y ejecutar el emulador:

De todas maneras voy a seguir luchando para instalar el SDK del iPhone ya que estaría cool poder intercambiar los contactos entre el iPhone y el extendedCRM.
Esto no es tan sencillo como parece ya que existen 100 SDK distintos dependiendo de las características del móvil. En principio y mirando hacia adelante me puse a investigar como era el tema de desarrollar aplicaciones para el iPhone, navegando en internet encontré la siguiente página:
http://developer.apple.com/iphone/index.action
Esta página contiene todo lo necesario para desarrollar aplicaciones para el iPhone ya que desde ahí me puedo bajar un SDK. El problema es que el SDK del iPhone solo funciona en MAC OS. Esto es una tranca para mi ya que hace mucho pero mucho tiempo que no toco un MAC, de todas maneras me baje el SDK y el MAC OS X lo que me llevo a tener que instalar una Máquina virtual con el MAC OS y aprender un montón de cosas sobre el MAC OS antes de poder tocar el SDK. En sintesis todavía estoy peleando con la instalación del MAC OS y no he podido ni siquiera ver el SDK del iPhone.
En vista de la complejidad que tiene instalar todo lo necesario para poder trabajar con el SDK del iPhone recordé que Google tiene el Android y a pesar de que no e visto todavía ningún teléfono con Android es algo que seguramente no demore en llegar a Uruguay, en realidad es algo que se viene y creo va a ser importante ya que en la página de registro del iPhone dev center pregunta si se ha programado para otra plataforma móvil y en la lista ya figura Android.
Para buscar e instalar el SDK de Android demore algo así como 5 minutos, encontré la página y ya tenía la posibilidad de bajarme el SDK con todo lo necesario para desarrollar una aplicación para Android. El sitio del Android es el siguiente:
http://code.google.com/intl/es/android/
En síntesis 5 minutos después de haber bajado el SDK pude configurar mi Eclipse Europa para trabajar con Android y ejecutar el emulador:

De todas maneras voy a seguir luchando para instalar el SDK del iPhone ya que estaría cool poder intercambiar los contactos entre el iPhone y el extendedCRM.
domingo, septiembre 21, 2008
Bienvenida a los gugs en el Shannon Irish Pub
Nos vamos a encontrar con los gugs que vinierón al encuentro GeneXus, el encuentro es en el Shannon Irish Pub este Domingo alas 19 hrs.
http://www.theshannon.com.uy/
La idea es darle la bienvenida en nombre del GUG Montevideo, esto fue algo improvisado pero que vale la pena. Después vemos si durante el encuentro nos volvemos a encontrar para trasnochar. :-)
Nos vemos en el Shannon
http://www.theshannon.com.uy/
La idea es darle la bienvenida en nombre del GUG Montevideo, esto fue algo improvisado pero que vale la pena. Después vemos si durante el encuentro nos volvemos a encontrar para trasnochar. :-)
Nos vemos en el Shannon
martes, septiembre 02, 2008
Chrome Browser & GeneXus X
Hace un rato me llego un mail por el foro del EAPX en el cual se daban las indicaciones para arreglar unos js de tal manera de que las aplicaciones generadas con GeneXus X se pudieran ver bien con el Google Chrome.
Las instrucciones se encuentran en el siguiente link:
http://blogx.genexus.com/2008/09/google-chrome-and-genexus-sites/
En sintesis hay que bajar un ejecutable que parchea los js que tienen problemas.
Yo seguí las instrucciones y me funciona al pelo.
Esto es una imágen del resultado de haber corrido el ChromePatch.exe:

Después de esto el extendedCRM se puede ver de la siguiente manera:

Hasta el momento lo único que encontré fue un detalle con las pantallas que se ejecutan con el tipo de datos windows pero que es menor y un tema con los tabs pero todo lo que pude ver son temas menores.
La verdad que felicito al equipo de Artech que en menos de 24 horas encontró una solución al tema.
Las instrucciones se encuentran en el siguiente link:
http://blogx.genexus.com/2008/09/google-chrome-and-genexus-sites/
En sintesis hay que bajar un ejecutable que parchea los js que tienen problemas.
Yo seguí las instrucciones y me funciona al pelo.
Esto es una imágen del resultado de haber corrido el ChromePatch.exe:
Después de esto el extendedCRM se puede ver de la siguiente manera:
Hasta el momento lo único que encontré fue un detalle con las pantallas que se ejecutan con el tipo de datos windows pero que es menor y un tema con los tabs pero todo lo que pude ver son temas menores.
La verdad que felicito al equipo de Artech que en menos de 24 horas encontró una solución al tema.
miércoles, agosto 27, 2008
Pantallas extendedCRM
En esta oportunidad no voy a hablar de nada en especial, aprovecho el blog para colgar algúnas pantallas del extendedCRM ya que un amigo quería ver un poco el producto. :-)
Login:

ABM Contactos:

Alta de Contacto:

Ficha Contacto:



Alta de Empresa:

Tablas Básicas:

Por mas información visitar: http://www.urulinux.com
Login:
ABM Contactos:
Alta de Contacto:
Ficha Contacto:
Alta de Empresa:
Tablas Básicas:
Por mas información visitar: http://www.urulinux.com
domingo, agosto 17, 2008
GeneXus X y FCKeditor
FCKeditor es un editor html muy potente que es utilizado en varios CMS. También es utilizado en el GXWiki por lo que nos es familiar a la mayoría de los usuarios genexus que accedemos a diario al wiki de la comunidad genexus.
En versiones anteriores teniamos que hacer varias cosas para poder integrarlo a GeneXus, por suerte contabamos con el ejemplo del gxwiki por lo que la única complejidad se basaba en el tiempo que nos llevaba integrarlo que no era menor.
Por suerte en GeneXus X el FCKeditor es un user control por lo que podemos integrarlo a nuestra aplicación sin meter una línea de código.
El FCKeditor es un user control que se agrega en el ControlType de un atributo o variable, tan solo con hacer ese cambio ya tenemos integrado el FCKeditor. No solo es muy sencillo de integrar si no que el costo de desarrollo es de cero lineas de código.
Usar el FCKeditor es tan sencillo que decidimos agregarlo a nuestro producto extendedCRM, dentro del extendedCRM el usuario puede ingresar Notas. A continuación adjunto una imágen en donde se puede ver como quedaban las Notas antes de usar el FCKeditor.

Lo que hicimos fue modificar el ControlType del atributo en donde guardabamos el contenido de las notas. Solo tuvimos que modificar la propiedad tal cual muestra la imágen:

Lo interesante es que solo cambiando una propiedad de un atributo logre que mi producto tenga un editor html lo cual enriquece mi aplicación y todo esto con cero línea de código.
La siguiente imágen muestra como quedo el ingreso de notas después de agregar el FCKeditor:

Este un pequeño ejemplo de como GeneXus X nos permite aumentar la productividad y tener aplicaciones mas potentes con el mínimo esfuerzo.
En versiones anteriores teniamos que hacer varias cosas para poder integrarlo a GeneXus, por suerte contabamos con el ejemplo del gxwiki por lo que la única complejidad se basaba en el tiempo que nos llevaba integrarlo que no era menor.
Por suerte en GeneXus X el FCKeditor es un user control por lo que podemos integrarlo a nuestra aplicación sin meter una línea de código.
El FCKeditor es un user control que se agrega en el ControlType de un atributo o variable, tan solo con hacer ese cambio ya tenemos integrado el FCKeditor. No solo es muy sencillo de integrar si no que el costo de desarrollo es de cero lineas de código.
Usar el FCKeditor es tan sencillo que decidimos agregarlo a nuestro producto extendedCRM, dentro del extendedCRM el usuario puede ingresar Notas. A continuación adjunto una imágen en donde se puede ver como quedaban las Notas antes de usar el FCKeditor.
Lo que hicimos fue modificar el ControlType del atributo en donde guardabamos el contenido de las notas. Solo tuvimos que modificar la propiedad tal cual muestra la imágen:
Lo interesante es que solo cambiando una propiedad de un atributo logre que mi producto tenga un editor html lo cual enriquece mi aplicación y todo esto con cero línea de código.
La siguiente imágen muestra como quedo el ingreso de notas después de agregar el FCKeditor:
Este un pequeño ejemplo de como GeneXus X nos permite aumentar la productividad y tener aplicaciones mas potentes con el mínimo esfuerzo.
Suscribirse a:
Entradas (Atom)







