Archive for the ‘programación’ Category

Sitio GESEI

agosto 3, 2007

Con el nacimiento de la Empresa de Gestión de Servicios Informáticos, GESEI, ya su grupo de programadores se dió a la tarea de inicial la creación de su sitio web. Para ello emplea las propuestas de Software Libre que se adaptan a sus necesidades y ambiciones. Entre ellos Quanta Plus, como editor de páginas webs; HTML y PHP, como lenguajes de programación. Quizás llegue a mezclarse algunas funciones de Javascript. El sitio será hospedado en un servidor Apache. Resulta todo un ejercicio para calentar los motores en la creación de sitios webs, servicio que estará incluido en la empresa.

Desde el comienzo se está cuidando el diseño. Se apuesta por la simplicidad y efectividad. Resulta complejo lograr mostrar todo cuanto se quiere sin convertir las páginas en un amacijo de banners y links de tediosa navegación. Aspiramos a convertirlo en la carta de presentación de la entidad y en un enlace con cada uno de sus clientes. Servicios, Soluciones y Ofertas, son los primeros contenidos a incluir. Sobre la marcha estaremos desarrollando esta propuesta. De momento pueden comenzar por vesistar la página de inicio y seguir de cerca como va creciendo. Aquí está el enlace del sitio GESEI.

Quanta Plus (Quanta+)

julio 30, 2007

Para la creacion de una Intranet hemos seleccionado Quanta+. Todos conocen las posibilidades de Dreamweaver pero como queremos hacer un proyecto empleando herramientas de software libre hemos apostado por ella. Reune las principales opciones de los editores de paginas web. Es sencillo y flexible. Es un programa de uso intuitivo y claro esta, gratuito. Se puede descargar desde Internet con toda facilidad.
Quanta Plus (Quanta+) es una herramienta libre de desarrollo de páginas web diseñado para el proyecto KDE. Su versión actual es la 3.5. Cuenta con varios asistentes para creación de tablas, enlaces y páginas en blanco. Esta creado para trabajar sobre Linux.
Cuenta también con el resaltado de sintaxis de HTML, JavaScript, CSS y varios más, además de un analizador que informa acerca de la correcta creación de las páginas.
Sin dudas sera una buen experimento.

Tidal nace en Software Libre

mayo 30, 2007

El Proyecto Tidal es una propuesta del Licenciado Ernesto Freyre. Siguiendo el concepto de Larga Cola (Long Tail) instrumentará un repositorio de documentos que será beneficioso para todo proyecto de gestión. Además de lo clásico: subir documento y bajar documento, se incluirá el control de versiones del documento, las revisiones que ha tenido el documento, clasificaciones usando etiquetas, copias del documento, mezclas de documentos, nuevos documentos, etc.

Es un proyecto instrumentado en el framework Django. Se puede descargar el proyecto empleando cualquier cliente de Subversión. Pueden poner en práctica el uso del TortoiseSVN. De hecho es lo que utilizo, su manejo es muy simple.

Sin lugar a dudas se te ocurrirán miles de usos para esta herramienta. La mejor explicación sobre el proyecto la da la wiki del mismo.

Proyecto de Sistema en Software Libre

abril 23, 2007

En el Segundo Forum de Ciencia y Técnica de la Rama del Comercio Exterior presenté este trabajo que mereció una mensión. Aquí les muestro el resumen del trabajo

La actividad de nuestras empresas requiere de la automatización de la gestión de los Recursos Humanos para lograr ser eficientes y dar respuestas a las necesidades operativas en general. Actualmente se cuenta con sistemas que lo implementan de forma insuficiente. Se propone un proyecto que da respuesta a la creación de un sistema que responde a esta necesidad y que será el punto de partida para la creación de otras aplicaciones que respondan a las necesidades y requerimientos de las entidades. Se presenta un análisis de la situación actual para enfrentar este proyecto.

Autores: Lourdes Odilia Moya Campos, Ernesto Freyre González y Alexander Cordero Pérez

Proximamente el trabajo será publicado integramente junto a los demas expuestos. Les haré llegar un enlace a los mismos.

Sistema de Control de Versiones

abril 4, 2007

Sistemas de Control de Versiones

Conferencia de Software Libre
Por Alfonso Alí
27 de marzo del 2007

En esta conferencia se abordó los sistemas de control de versiones Subversión y CVS

Trabajo colaborativo de manera coordinada:
1. Subversión
2. Proyecto de aplicación
3. Aplicaciones.

Se comentó sobre la forma de controlar las versiones de una aplicación durante su gestación. Esta es una actividad fundamental durante el desarrollo de cualquier proyecto. Usualmente se hace almacenando copias del sistema junto a comentarios de los cambios hechos. Esto es ineficiente y se puede cometer errores como sobrescribir el trabajo de otros. Este método fue calificado como primitivo.

Los sistemas de control de versiones permiten el seguimiento, mantenimiento y almacenamiento de la historia de cambios en los códigos fuentes de un proyecto. Proporciona facilidades de combinar cambios de múltiples personas.

Beneficios:
• Integridad de datos
• Productividad
• Identificabilidad
• Desarrollo colateral
• Distribución del trabajo

Elementos:
• Repositorio: Contiene todo el proyecto
• Directorios de trabajo: Copia sobre la cual trabaja la persona.
• Revisiones: Cambios realizados en el proyecto en un momento determinado.
• Logs: Documentación de los cambios y detalles extras.
• Marcas (Tags): Nombre de una etapa de proyecto.
• Ramas (Branches): Vida paralela. Versiones de un proyecto que se llevan paralelos.

Ejemplos:
Centralizados: RCS, CVS
Distribuidos: SVK, Arch, Darc, Git, Monotone

Subversion:
• Similar a CVS
• Superior al CVS, mejorado.
• Commits atómicos, o sea al realizar actualizaciones en el proyecto estas se guardan completamente o no se guardan en caso de ocurrir alguna interrupción.
• Usa http como vía de acceso.
• Scripts de acciones
• API

Tareas básicas:
• Crear repositorio (svnadmin create)
• Crear proyecto (svn import)
• Obtener ficheros (svn co)
• Determinar que ha cambiado (svn status, svn diff)
• Actualizar copia de trabajo (svn update)
• Actualizar repositorio (svn commit)
• Resolver conflictos (svn resolve)
• Añadir fichero (svn add)
• Borrar fichero (svn del)

Carpetas del repositorio:
Trunk: Línea principal o tronco del proyecto
Tags: Puntos en la historia del proyecto
Branche: Rama del proyecto

Sistema de control de versiones SVK
Es más efectivo que otros sistemas si no contamos con una buena conexión permanente. Es un sistema distribuido. Hace sincronización cuando hay conexión. Este será el sistema que se empleará en el curso. La combinación entre ramas es muy fácil.

Comandos:
Como comandos básicos tiene los mismos del Subversión. Además,
Iniciar depósito: svk depotmat –init
Hacer el mirror: svk mirror http://repo//repo
Sincronizar mirror: svk sync//repo
Crear una rama local: svk cp//repo// local//repo
Incorporar cambios a la rama local: svk smerge –l //repo //local/repo
Incorporar cambios al repo: svk smerge –l //local/repo //repo
-l esta opción incorpora automáticamente los mensajes echos.

Manejo de patch
Se crean igual pero con –p
Crear un patch: svk smerge –p mipatch //local/repo //repo
Ver match creados: svk match –list
Obtener un patch determinado: svk patch –view mipatch
Actualizar patch: svk patch –update mipatch
Recrear un patch: svk –regen mipatch

Leer más sobre este tema:
Control de versiones

Introducción a los sistemas de control de versiones

Control de Versiones con Subversion

Se hizo un aparte recomendando la lectura de la “La catedral y el Bazar” de Eric S. Raymond. Un ensayo a favor del software libre. Este es un espaldarazo a la necesidad del empleo de este tipo de sistemas de control de versiones.

Y otro artículo sobre este con una crítica al ensayo. (Ver artículo)

Se introdujo el futuro proyecto que será desarrollado en el curso como ejercicio práctico. Este será argumentado más adelante.

Manual de Python

abril 2, 2007

Para los interesados en el curso se dió esta dirección de un manual de Python para ser estudiado por todos. Aquellos que se interesen en la programación y especialmente en hacerlo con Python aquí tienen una buena documentación.
Manual de Python

Descubrí los Sistemas de Control de Versiones

marzo 29, 2007

Nuestro equipo de desarrollo DIGI trabajó durante varios años en el desarrollo de software a la medida. Era un equipo pequeño pero llegamos a emprender varios proyectos. En una ocasión comenté sobre el ORFI pero realmente el sistema más importante fue el R2E, Sistema de bases de datos para el control y la gestión de los Recursos Humanos. Era común que trabajáramos a la vez en una versión para alguna de las entidades que atendíamos y cometiéramos errores de sobrescribir el trabajo de otro de los miembros del equipo. La opción más fácil comenzar a trabajar independientemente en los módulos evitando sobrescribir el trabajo ajeno. Procurábamos guardar versiones de los cambios y documentar los cambios para tener una guía. Aún así seguía siendo engorroso y poco eficiente dada la premura con que debíamos hacer las entregas. Era todo un trabajo artesanal el de controlar el estado del sistema, los cambios, quién y porqué lo hizo. Éramos un equipo cohesionado y aún así incapaces de aprovechar las posibilidades como programadores y diseñadores de sistemas informativos automatizados.

Actualmente existen herramientas, reconozco que las acabo de descubrir, capaces de implementar todo el control de versiones. Inclusive para proyectos elaborados por una sola persona son muy útiles. En el Curso de Software Libre del Palacio de Computación, el Lic. Alfonso Alí presentó los sistemas para control de versiones. Resulta sorprendente las posibilidades que brindan los mismos para grupos de desarrollo colaborativo. Son el resultado de la aplicación del software libre en entornos de desarrollo de este tipo. Se impone la utilización de los mismos por su flexibilidad.

Para los interesados en conocer más sobre los sistemas de control de versiones:
Quarkblog
CLS

Nada de Machacar

febrero 16, 2007

Nada de machacar

Continuamos con el curso de Software Libre que se desarrolla en el Palacio de Computación, La Habana, Cuba. La segunda conferencia impartida por Medardo Rodríguez escudriñó en el concepto de programación que cada uno de nosotros se ha inventado o asumido como cierto. Pregunta tras pregunta llegó a demostrar que pese al auditorio conformado por estudiantes y especialistas de la rama, ninguno era capaz de responder exactamente ¿Qué es programar bien?

A cada respuesta del auditorio el conferencista respondía con otra pregunta cuestionando la respuesta y su validez. Llegó el momento que un asistente propuso buscar una wikipedia para poder responder a todo. Confieso que me sentí aplastado pese a mis 10 años de graduado de Ciencias de la Computación. Era incapaz de acertar en las interrogantes más inocentes o triviales para la actividad. Inclusive aquellas que constituyen la base de la misma. Pero el propio Medardo aclaró que no era su interés maltratar sino demostrar que no sabemos nada. Su pretención era trazar metas profundas en qué es programar y hacernos comprender “que por mucho que estudie más conocimiento tendré que aprender”.

Desde el comienzo Medardo guió al auditorio hacia su esquema de que era Programación:
Programación
=>Ingeniería
=>Ciencia
=>Arte
=>? (¿algo más?)
Y fue argumentando cada concepto con la ayuda de los propios asistentes que aportaron sus conceptos y definiciones exactas o intuitivas. Se fue armando entonces el rompecabezas.

Asumí en el acto la definición de programación como Ingeniería, reconozco que es lo que he hecho hasta este momento en la especialidad. Asumí el lado de ciencia sin saber explicar exactamente por qué. Pero el lado del arte estaba totalmente alejado de imaginarlo. ¿Por qué la programación es un arte? ¿El Software Libre como arte? Realmente fue el puntillazo para reconocer mi ignorancia. No sólo por la pregunta sino por la propia definición de arte.

Sigue manteniéndose el interés en el curso y la expectativa en las próximas conferencias crece exponencialmente entre los asistentes.

Alexander Cordero Pérez