Workflow básico de documentación

Recurrentemente se establecen formas de trabajar con la documentación debido a que tiene que pasar por una serie de aprobaciones antes de ver la luz. Para un grupo más bien pequeño, sin pensar en editores y editores de editores un workflow básico de documentación sería como el siguiente.

Workflow Básico

En el método de trabajo que tengo un cliente esta especificado con un acronimo de al menos tres letras (caracterizado aqui por CCC) al igual que un proyecto (aqui como PPP). Entonces un cliente tendría un documento con Titulo, más una version X, que es la que irá incrementando. Si es la primara version Y sería cero(0) por lo que no la establezco a menos que haya una modificación a posteriori.

El incremento de X es cuando existe la necesidad de generar otra versión debido a modificaciones o grandes adiciones que incrementen el documento, si solo son correcciones a lo ya existente entonces se incrementa sólo Y.

Publicado en Desarrollo, MTR

Transacciones ACID

En el contexto de transacciones de bases de datos, ACID es un acrónimo de Atomico (Atomic), Consistente (Consistent), Aislado (Isolation) y Durabilidad(Durable). Las transacciones proporcionan un modelo sencillo de éxito o fracaso una o un conjunto de operaciones en la base de datos. Una transacción se compromete (es decir, todas sus acciones se ejecutaron de forma correcta), o se anula (es decir, si una accion fallo, entonces todas sus acciones hechas hasta ese momento se deshacen). Los atributos de una transacción ACID son las siguientes:

Atomicidad

Una transacción permite la agrupación de uno o más cambios en las tablas y filas en la base de datos para formar una operación atómica e indivisible. Es decir, o bien se producen todos los cambios o ninguno de ellos. Si por alguna razón la transacción no puede completarse, la operación debe restablecer el estado de la base de datos al momento en que estaba antes del inicio de la transacción a través de una operación de reversa (rollback).

Consistencia

Las transacciones siempre operan en una visión coherente de los datos y cuando terminan deben también dejar los datos en un estado coherente. Mientras que una transacción se ejecuta se generan inconsistencias momentaneas dentro de la base de datos, pero la transaccion no puede dejar ver estas inconsistencias; al finalizar, debido a que en la finalización todas las inconsistencias deben son eliminadas, la transaccion libera los datos para que puedan ser leídos/escritos nuevamente.

Aislamiento

Para una operación determinada, debería ser como si ésta se estuviese ejecutando sola en la base de datos. Los efectos de la ejecución simultánea de las transacciones son invisibles para esta transacción, y los efectos de esta transacción son invisibles para los demás hasta que la transacción ha comprometido su trabajo.

Durabilidad

Una vez que se confirma una transacción y sus efectos, se garantiza que persista incluso en el caso de fallos posteriores del sistema. Hasta antes de que se confirme la transacción, los cambios realizados por esa transacción no son durables, y no persisten en la cara de un fallo del sistema, al recuperarse de un fallo se deshacen las inconsistencias provocas por la ejecución no terminada de la transaccion.

La simplicidad de las transacciones ACID es especialmente importante en un entorno de base de datos distribuida, donde las transacciones se realizan de forma simultánea.

Publicado en Base de Datos, Capacitacion, Desarrollo, MySQL, Oracle, PostgreSQL

Desinstalar OTRS

Uno de los sistemas de ticket que cumple mejor con las tareas relacionadas a un servicio de ticket es OTRS, uno de los pocos (open source) que ademas cuenta con SLA (Service Level Agreement). Pero luego de la evaluación positiva de nuestra parte hubo que proceder a la desintalación y re instalación del software. No solo basta con borrar la base de datos sino que se siguieron los pasos inscritos en la lista de correos.

1. Se elimina la configuracion de OTRS del servidor web, en nuestro caso instalado en CEntOS se elimino el archivo /etc/httpd/conf.d/zzz_otrs.conf, luego de lo cual se reinicio el servicio, y ya quedo inhabilitado.
2. Se elimino la base de datos creada, en nuestro caso otrs
3. Eliminar el directorio $OTRS_HOME, en nuestro caso no había ninguno, pero se eliminó /opt/otrs
4. Eliminar el usuario otrs (userdel otrs) y el grupo (este ultimo no estaba creado)
5. Eliminar cualquier mail de la MTA, rm -rf /var/mail/otrs

Con eso se pudo reinstalar OTRS (forzandolo)

rpm -ivh –force otrs-3.1.4-01.noarch.rpm

Publicado en CEntOS, Desarrollo, Linux, Web

Oracle 11g no exporta algunas tablas

En la versión Enterprise de Oracle 11g se añadió la funcionalidad de no exportar tablas con una cantidad de cero(0) registros. Esto yo asumo que lo hizo para la economización de espacio, CPU o cualquier otra razón. Pero para los que ocupamos esta utilidad para mover bases de datos enteras y trasaladarlas de un lado a otro, creo que nos dejo de ser muy util.

El tema se registra en que un tabla con creo registros no tiene ubicado espacio, por lo que no se exportará. Por lo mismo debemos saber que tablas son las que poseen cero registro y aplicar

ALTER TABLE nombre_tabla ALLOCATE EXTENT; 

Con esto la tabla ya va a ser exportada aun cuando no posea registros.
Para ello es ulti la consulta.
Con ella generamos la siguiente

 SELECT 'ALTER TABLE ' || table_name || ' ALLOCATE EXTENT; '
 FROM all_Tables
 WHERE owner = '&usuario' and num_rows=0;

La salida de esta script la ejecutas luego y estarás listo para exportar.

Publicado en Base de Datos, Desarrollo, Oracle

Extraer la cantidad de registros de una tabla en Oracle

Para extraer la información de que cantidad de registros tiene una tabla en la base de datos Oracle se debe utilizar la siguiente consulta:

SELECT table_name
FROM all_Tables
WHERE owner = '&usuario' and num_rows=0;

Esta retornará todas las tablas con cero(0) registros

Publicado en Base de Datos, Desarrollo, Oracle

Recomendación para organizar carpetas de proyectos

En la suerte de método de trabajo que tengo, debo organizar los distintos proyectos que manejo, con las distintas empresas que existen dentro de mi ambiente, por lo cual decidí en un momento tener la carpetas “proyectos”… Suena inteligente ¿no?

Luego de crear la carpeta de proyectos, que es sólo para que no interfiera con las otras carpetas existentes dentro de windows (y linux) establesco el cliente, entiendase como a la empresa que estoy atendiendo, luego de lo cual establezco el nombre que internamente le ha dado la empresa al proyecto, que si no tiene, yo le asigno uno.

Entenderan que yo to lo veo como un proyecto, debido a lo cual cualquier cosa que se hace es en sí un proyecto en potencia… incluso licitaciones que nunca llegan a un destino optimo para mi reciben la distincion como proyecto.

Luego de que tengo creada una carpeta por cliente (o por amigo) con el cual estoy haciendo algo entonces me dedico a rescatar los proyectos, o sea, enumero con nombre cada proyecto con el cual trabajo para ese cliente… el ejemplo mas claro es donde estoy actualmente en donde existen un par de proyectos internos…

Ejemplo Carpeta Proyectos

Para mí existen la carpeta doc, donde dejo documentacion generada por mi, o que se me entrego para trabajar, en la carpeta infoIn dejo toda esa información que llega por correo y aqui estan los documentos originales, cuando me llegan para ser trabajados. Esta la carpeta modelo, con subcarpeta datos y uml, en general dejo los modelos proveídos por la herramientas que se usen para el proyecto. En la carpeta release, igualmente que por fecha (en formato AAAMMDD) guardo los release de desarrollo (dev) quality assurance (QA) y productivo (prod). y Finalmente mi carpeta de trabajo wks, con las subcarpetas de desarrollo wksDev, de QA wksQA y producción wksProd. En ellas trabajo los códigos y demás cosas relacionadas con el codigo fuente del proyecto.

Con esto a grandes rasgos, ordeno las carpetas y mis días. Este articulo es para que reflexiones que tu cabeza trabaja de una forma, de esa forma es la que debes buscar plasmar, porque en momentos complicados el preguntarse ¿donde deje el archivo? es super importante.

Publicado en Desarrollo, MTR