Texto coherente

Este artículo fue sugerido en meneame(perdi el vinculo), y me sorprendió mucho, pues como dice su título es una especulación sobre lo que podría pasar en Cuba si desapareciera Fidel. Pues bien, no sé si este señor tendrá razón o no, pero todo lo que dice me parece muy coherente, y sobre todo, muy imparcial(aunque se le nota simpatía por Cuba y su régimen).
No sé de donde sacará la información, no sé si vive en Cuba o tiene amigos acá, lo que si es cierto es que su opinión sobre Raúl se acerca mucho a lo que en Cuba creemos que es la verdad, es decir, que Raul se acerca más al debate y a la libertad, que las empresas de las FAR son las más eficientes y las que mejor tratan al trabajador(hablo de trabajadores civiles). Así que si bien es cierto que la idea de una dinastía Castro suena medio rara, también es verdad que, al menos yo lo creo así, Raul Castro nos puede llevar al siglo XXI.
Lo demás del artículo no vale la pena comentarlo, son especulaciones, coherentes, pero que solo el futuro confirmará o desmentirá.

Procedimiento para la creación de un proyecto con Trac© con Apache2

Introducción

Trac© (http://trac.edgewall.org/) es un gestor de proyectos de software, que aunque es un poco limitado, en ciertos ambitos puede ser muy eficiente. Su característica principal es la de tratar un proyecto como una serie de metas (milestones), las que están descritas por una serie de tareas(tickets) a cumplir, son el cumplimiento de estos tickets lo que mide el porciento de cumplimiento de la meta. Existen tres tipos de tickets: tarea, defecto y mejora. Obviamente se le puede añadir un nuevo ticket a un milestone en cualquier momento.
Cada cambio a un ticket queda registrado, de manera que es incluso posible, y de hecho así lo hacen en su propio sitio, usar este historial a manera de forum, en donde los usuarios o testers dan sus opiniones sobre un defecto o tarea y el desarrollador va dando parte de los avances. Por otra parte cualquier cambio, ya sea en los tickets, o en la wiki (hay una wiki) queda registrado.
Como ya se dice arriba, Trac© cuenta con una wiki, de manera que es posible ir añadiendo contenido, de manera que el sitio del proyecto albergue gran cantidad de información sobre el mismo, lo cual puede ser muy conveniente para los usuarios.
Además Trac© está integrado con subversion, de manera que es posible hacer consultas al repositorio y ver el historial de cambios al mismo.


Instalar Trac©

Como servidor se utilizará una maquina con Debian GNU/Linux v4.0r0.
Es necesario tener instalado:

  • Apache2
  • libapache2-mod-python 3.3.1
  • postgresql 8.1
  • python-psycopg2
  • subversion
  • python-subversion
  • python 2.4.4
  • python-clearsilver
  • subversion-tools
  • trac-0.10.4
Luego de descomprimir trac se debe ejecutar:
#./setup.py install


Creación de un proyecto

Antes de crear el proyecto es necesario crear la base de datos en postgresql, así como un usuario que será el encargado de acceder a la base de datos, es posible usar un usuario para todos los proyectos o uno distinto cada vez, para este caso:
usuario:trac
contraseña:trac
base de datos: ejemplo_trac
Además es necesario tener ya creado el repositorio SVN, en este caso estará en /var/svn
Crearemos el sitio en la carpeta: /var/www/trac
#trac-admin /var/www/trac/ejemplo initenv
Ahora empieza una sesion interactiva en la que Trac© nos hace una serie de preguntas:
Project Name [My Project]> ejemplo
Database connection string [sqlite:db/trac.db]> postgres://trac:trac@localhost/ejemplo_trac
La url de la base de datos está conformada de la siguiente forma:
postgres://usuario:contraseña@url.servidor/base de datos
Repository type [svn]>
Este lo dejamos en blanco
Path to repository [/path/to/repos]> /var/svn
Este es el camino al repositorio svn que será usado.
Templates directory [/usr/share/trac/templates]>
También se deja en blanco
Si todo ha salido bien ya estará creado el proyecto y la base de datos está poblada.


Habilitar el sitio en Apache

Para que el sitio esté completamente funcional es necesario agregarle lo siguiente al fichero /etc/apache2/httpd.conf:


SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/trac/ejemplo
PythonOption TracUriRoot /trac/ejemplo
PythonDebug on


Luego de reiniciar el apache:
#/etc/init.d/apache2 restart

El sitio ya estará en funciones.
NOTA: El usuario www debe tener permisos de lectura y escritura en /var/www.


Creación de usuarios

Se utilizará la utenticacion de apache, para lo cual se creará la carpeta /var/www/passwds/
Luego se hará la siguiente operación:
# htpasswd -c /var/www/passwds/pass usuario_ejemplo
New password:
Re-type new password:
Adding password for user usuario_ejemplo
La opción c de htpaswd solo es necesaria para crear el fichero con las contraseñas, luego no hace falta.
Ya el usuario está creado, ahora hay que habilitar el login para el sitio, para lo cual se le añadirá lo siguiente a /etc/apache2/httpd.conf:


AuthType Basic
AuthName "ejemplo"
AuthUserFile /var/www/passwds/pass
Require valid-user

Se reinicia el apache nuevamente y listo.

NOTA: El fichero de contraseñas se hizo general en /ww/passwds/pass, pero es posible, e incluso aconsejable, crear un fichero de contraseñas para cada proyecto, solo basta con crearlo en la carpeta del sitio y poner el camino en httpd.conf.
Otorgar permisos
El nuevo usuario hereda los permisos del usuario anonymous, el cual solo puede ver todas las secciones y solo puede crear tickets, como se muestra más abajo.
Para otorgarle permisos más específicos es necesario usar trac-admin:
# trac-admin /var/www/trac/ejemplo/
Welcome to trac-admin 0.10.4
Interactive Trac administration console.
Copyright (c) 2003-2006 Edgewall Software

Type: '?' or 'help' for help on commands.

Trac [/var/www/trac/ejemplo]>permission list

User Action
--------------------------
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_CREATE
anonymous TICKET_MODIFY
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_CREATE
anonymous WIKI_MODIFY
anonymous WIKI_VIEW


Available actions:
BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW

Aqui se ven los permisos de anonymous, y todos los permisos posibles, si se desea, por ejemplo, que el usuario pueda editar la información de los milestones, se hace lo siguiente:
Trac [/var/www/trac/ejemplo]>permission add usuario_ejemplo MILESTONE_MODIFY


Notificación por e-mail

Trac© incorpora la posibilidad de notificar por correo electronico al desarrollador implicado en un ticket, para lo cual es necesario habilitar el SMPT al sitio del proyecto, para esto es necesario modificar el fichero /var/www/trac/ejemplo/conf/trac.ini para el ejemplo.
Dentro del fichero se encuentran las siguientes lineas:
[notification]
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain =
smtp_enabled = true
smtp_from = correo@dominio
smtp_password = pass
smtp_port = 25
smtp_replyto =
smtp_server = servidor.de.correo
smtp_subject_prefix = __default__
smtp_user = usuario_correo
use_public_cc = false
use_short_addr = false
use_tls = false

Las lineas modificadas para el ejemplo están en negritas, luego de estos cambios, solo basta crear un ticket, y en la caja de texto CC poner la dirección de correo del destinatario.
El correo que recibe el desarrollador es como el siguiente:
#1: mensaje
------------------------+---------------------------------------------------
Reporter: jefe | Owner: miguel
Type: defect | Status: new
Priority: major | Milestone: milestone1
Component: component1 | Version: 1.0
Keywords: |
------------------------+---------------------------------------------------


--
Ticket URL:
ejemplo
My example project


Conclusiones

Esto es solo un breve tutorial para la puesta en marcha de un sitio de proyecto utilizando Trac©, el cual, aunque limitado, tiene aun más posibilidades.

Cuba y el Software libre

La mayor parte de este artículo es un correo que envié a la lista linux-l de Cuba, cuando se discutía el hecho de si valía la pena que empresas cubanas se dedicaran a crear ERPs desde cero, cuando en el país existe la orientación de migrar a software libre.

La cuestión es que aunque hace tiempo se viene hablando en nuestro país de migrar al software libre, parece ser que ahora, gracias a Venezuela, se cogerá esto en serio, no obstante, además de las usuales dificultades, usuarios con desconocimiento, una gran cantidad de software escrito para Windows, todavía falta bastante para que incluso los mismos que impulsan el software libre en la isla logren desprenderse del modelo del software propietario.
El problema es que no basta usar linux, ni software libre en general, estoy seguro que aunque se haga obligatorio usar software libre en las empresas (lo cual creo que es incorrecto, mas bien se debería exigir que las empresas usen solo software legalizado, pero eso es para otro artículo) todavía faltaría la mentalidad de colocar cada desarrollo en un repositorio, ya sea nacional, internacional, o de la misma empresa, para así lograr retro-alimentación de la comunidad, no solo cubana; pero es muy probable que a la mayoría de los directivos eso de dar el código fuente, con la licencia que sea, les resultará muy difícil de aceptar. Quizás el camino más corto, o mejor, un camino más, sea crear empresas que desde sus inicios usen software libre, el problema estaría que hasta donde sé, crear una empresa nueva es bastante difícil en nuestro país, obviamente hablo de siempre de empresas estatales (recuerden que en Cuba no existen empresas privadas lo cual veo muy equivocado, pero también es para otro artículo).
La cosa es que si el gobierno definitivamente apoya al software libre, entonces automáticamente aparecerán nuevas oportunidades de negocio, y no creo que haya muchas empresas capaces de aprovechar rápidamente esta coyuntura. Y aquí entra algo como un ERP, es de mentalidad de software propietario empezar las cosas desde cero, pero una empresa nueva, fresca, suyos integrantes apuesten fuertemente por el software libre, porque lo conocen, a la hora de comenzar un proyecto, no solo un ERP, siempre buscarían lo que está hecho, y trabajarían sobre ello. Por eso pienso que además de los movimientos gubernamentales por hacer que las empresas que existen migren, tendría que existir una política de "incubación" de empresas, o pronto nos veremos inundados de empresas europeas y latinoamericanas dando soporte,cuando en nuestro país alcanza el talento.

El arte y la programación

Hace un tiempo comparé la programación con la literatura , ahora seré algo más general.

Gracias a un amigo conocí la definición de arte de Umberto Eco, que no recuerdo literalmente, y que además está expresada en un lenguaje sumamente técnico, pero que en definitiva es algo como esto: Algo artístico es aquello donde el contenido trasciende al significado… bueno no exactamente, aquí habría que cambiar “algo” por mensaje, contenido por denotación y significado por connotación. En general esto es que un cuadro, un relato, una pieza musical llegan a ser arte cuando de alguna manera se bastan así mismas para existir…, para generar significados según por quien sean apreciados.

Como estamos en el siglo XXI usemos las definiciones de Internet:

El término arte procede del término latino ars. En la Antigüedad se consideró el arte como la pericia y habilidad en la producción de algo. Es solo a partir de finales del siglo XV, durante el renacimiento Italiano, cuando, por primera vez se hace la distinción entre el artesano y el artista (artesanía y bellas artes) y equivalentemente entre artesano, productor de obras múltiples y artista, productor de obras únicas. ...
http://es.wikipedia.org/wiki/Arte



La mezcla de estas dos definiciones pueden ayudar a descubrir hasta que punto la programación puede ser artística (quede claro que hablamos de la programación en sí, de la escritura de código, no del resultado final, algo así como lo que menciona Thomas Mann su Doctor Faustus cuando dice que muchas obras musicales tienen dos formas de ser apreciadas, con los oídos y con la vista, está ultima se refiere a la partitura y solo está destinada a los conocedores o iniciados).

Entonces, que es programar? Básicamente escribir código, pero en realidad es mucho más que eso, hacer un buen programa recuerda mucho a la anécdota china del emperador, el pintor y el cangrejo:

“Un día el Emperador quiso tener el dibujo más perfecto posible de un cangrejo, así que mandó a llamar al mejor dibujante del imperio y le dijo:

- Te doy una casa, sirvientes, una pensión y todas las comodidades que necesites, para que me pintes el cangrejo más perfecto que se haya dibujado jamás.

El dibujante, feliz, aceptó y se fue a su nueva casa.

Se sucedieron los días, los meses, los años, se fueron 30 años y el Emperador no tuvo noticias del pintor, cansado de esperar hizo que lo trajeran a su presencia.

- 30 años pasaron desde que te pedí el dibujo del cangrejo, mi paciencia se ha agotado y te exijo que me muestres tu trabajo.

El pintor asintió y pidió que le trajeran tinta, un pincel y papel, y en presencia del Emperador, en apenas unos instantes dibujó un cangrejo perfecto”

Claro que ya quisiéramos los programadores estas condiciones, pero en general para crear un programa de calidad debemos irnos a un rincón y rumiar los requerimientos del sistema y encontrar el mejor diseño posible, para luego, poco a poco, a veces a base de prueba y error (creo que a esto último le llaman programación evolutiva), lograr que nuestro sistema se apegue lo más posible a la realidad idealizada del cangrejo.

Pero este chino era un artista?

O un artesano?

Si luego de los tantos siglos que pudieran haber pasado, alguno de nosotros se encuentra con el dibujo perfecto de un cangrejo, seguramente lo admiraríamos, seguramente quisiéramos colgarlo en una pared de nuestra casa, pero… es arte?

Según Oscar Wilde lo artístico debe ser inútil y bello, el dibujo del cangrejo sería el caso.

Regresemos a Eco, a la parte de la connotación, como interpretar esto? Yo pienso que esta connotación personalizada solo puede lograrse mediante el reconocimiento de uno mismo en la pieza artística que se contempla(o que se oye o que se ve), por ejemplo, cuando me leí “El Extranjero”, de Camus, el cinismo y la apatía del protagonista, calaron profundamente en mí, no es que quisiera ser así, ni que lo sea, pero de alguna manera me vi reflejado en este libro, no como un todo, no hablo del retrato, hablo de ver ese pedazo de vida transcurrir frente a mí, mostrándome una realidad existente y falsa al mismo tiempo, yo la hacia existir y sin embargo era falsa. Yo fui parte del relato, no porque lo leí, sino porque conjugando la lectura con mis pensamientos, con mi propia vida, le encontré un significado a la novela que la hace única para mí, y que la haría única para otra persona que la lea.

Entonces es esto, aventurémonos a soltar una definición: Arte es aquello que es capaz de conjugarse con su público para alcanzar una nueva dimensión única, y tantas como público exista.

Que les parece, y la programación?

Desafortunadamente un programa es siempre el mismo programa, quizás las condiciones en que fue creado, las condiciones en que es distribuido pueden generar sentimientos distintos y únicos, pero jamás el código mismo, el código es solamente una pieza de artesanía, nada más.

PD: No se han fijado que en todas las revistas, programas, o lo que sea siempre se dice: "Arte y Literatura"? Nunca se han preguntado por qué? Eso lo dejamos para el próximo artículo.

Escogiendo una distribución

Ayer me tropecé con esto [zegeniestudios.net] es un sitio donde tras algunas preguntas sencillas te dan varias opciones de distribuciones.

Inicialmente me pareció una tontería, pero igual decidí darle una opertunidad, despues de todo siempre nos gusta hablar de nosotros mismos (de donde sino salen las guerras de software).

Estas son las distribuciones a escojer:

  • Fedora Core
  • Mandriva
  • OpenSuSE
  • Debian
  • MEPIS
  • Ubuntu
  • Kubuntu
  • Linspire
  • Xandros
  • PCLinuxOS
  • Yellowdog Linux
  • Gentoo
  • Slackware
  • Ark Linux
  • Knoppix
  • Arch Linux


Estas fueron las condiciones que puse:
Do you know what a "Linux distribution" is? Si claro
Have you successfully installed an operating system before? También
Do you know how to "partition" a hard drive? También
Which kind of installer do you prefer? Me da igual
Are you using any wireless devices? No
How would you rate your technical skills? Esta es la variable
What kind of computer are you installing on? PC de escritorio
What is the primary use of this computer? Para trabajar
Do you have a 64-bit processor? Si
How old is the computer you are installing Linux on? P IV 3 GHz, 512 Mb, hyperthreading, dual chanel
How would you rate your knowledge of linux? Esta opcion es un poco rara, teniendo en cuenta la de más arriba, pero dejemosla en que "I've used linux for a while now"
What desktop environment do you prefer? KDE
Do you need easy access to a lot of ready-to-run software? Si por dios que mi internet es una basura (sobre todo por el ISA Server)
Will you be installing the distribuion on a PC or a Mac? PC
Aqui preguntan que grado de atrevimiento quieres en tu distro: lo último
Does the Linux distro have to be free (gratis)? Yep
Do you want to include Live CDs in the results? No hay problemas


Estos fueron los resultados
  1. Principiante->PCLinux y Mandrivia
  2. Intermedio->Mandrivia, Kubuntu y Debian
  3. Avanzado->Debian, Kubuntu y Mandrivia
  4. Experto->Kubuntu, Mandrivia y Debian
Obviamente el orden en que estan puestas las distribuciones es el orden de prioridad.

Analicemos esto un poco:

El primero lo veo bastante lógico, nunca he visto el PCLinux, pero sí el Mandrivia, y nada, no hay mucho que decir. Sin embargo los demás están un poco extraños, si se fijan son siempre las mismas distribuciones, solo cambia el orden, para el intermedio, primero Mandrivia, luego Kubuntu (un Debian) y al final Debian en strike, pero que no había puesto yo que quería tener lo ultimo de lo ultimo? será que este señor esta pensando en el Debian 4.0, o priorizó la cantidad de software disponible. Luego el Avanzado, primero Debian!!, vaya, está bien, de hecho este podría entenderse mejor, la persona que busca distribución está escapá (o es un crack, como creo le dicen en españa) y querrá un Debian puro, quizás luego podría transigir en usar Kubuntu y con mucho amor se "rebajaría" a usar Mandrivia (pues se sabe que los hombres de pelo en pecho no usan nada que salga de una empresa). Pero el que me dejó loco es el último, que simplemente debería ser el anterior.

Bueno nada, creo esta es una buena iniciativa, pero habría que revisar las prioridades, o mejor, que antes de comenzar el test el usuario escoja sus prioridades, y en base a esto podría tener un resultado más "fiable". Pues de hecho con la cantidad de aplicaciones que trae el Knoppix y su eficiencia, además de que es una distribución "al límite", a mi me basta y me sobra, pues justamente es esta la que uso, y por nada del mundo lo cambio por ninguna de esas tres. Quizas por Debian 4, o por cualquier otra, pero no por el actual Kubuntu (que he probado) ni por Mandrivia (que no he probado).



frikis cubanos - frikis españoles

Desde que ando por acá en internet, y visitando sitios como barrapunto y meneame me he dado cuenta de unas de las tantas diferencias entre Cuba y España... los frikis.

Por lo que he entendido en España un friki es aquel que está renuente a abandonar su infancia, y aun se apasiona con peliculas de ciencia ficción, de fantasía, con manga, anime, con juegos de rol, etc. Bueno, yo hago todo eso y me dicen friki, pero no por hacer esas cosas, sino porque tengo pelo largo y oigo blackmetal. Pues sí, un friki cubano es un tipo pelú, vestido de negro, con cara de malo y que queda vez que habla lo hace sobre bandas de rock, mientras más fuertes y undergrounds mejor.

Si bien he notado que como regla general a un friki español se le puede mirar con candidez, a los de acá no, estos son unos atravesados, que sienten que tienen una mision en la vida, ser oscuros, ser unos pesados, no reirse (en precencia de publico no friki), ser personajes de algun video clip, es todo.

En realidad prefiero a los de España, durante mucho tiempo fui un friki militante, pues esa comunidad (antes lo era) me resultaba algo mágica y mi cerebro adolecente se enamoró del radicalismo musical (que de musical tenía poco), pero desafortunadamente fui econtrando que no eran originales, que eran los mismos que otros que andan por la calle, pero con ropas distintas.