Taller LaTeX

El viernes pasado con motivo de FLISOL 2012 impartí un taller sobre como escribir textos en LaTeX. Por desgracia, el tiempo se fue corto y bastantes cosas quedaron en el aire así que escribo este mensaje para los que estuvieron en el taller y desean aprender.

Básicamente que dejen un comentario preguntando sus dudas, yo dejo un enlace con un archivo ejemplo para que vean como se hace lo que no pude explicar en el taller, es en realidad el archivo que yo use para experimentar cuando aprendí, por eso los comentarios están en ingles.

Archivo Ejemplo

Además les digo que para convertir una imagen cualquiera a formato EPS pueden usar cualquier software como GIMP o incluso los programas no libres de Adobe. También pueden hacer lo que hago yo que es mucho más rápido, instalan imagemagick (disponible en cualquier distro de GNU/Linux) y en una consola teclean:

$convert imagen_origen.jpg imagen_salida.eps

El archivo origen puede ser tipo JPG o cualquier otro.

Finalmente, al terminar el archivo de ejemplo están anotados unos enlaces con información y ejemplos sobre LaTeX, muy útiles. También indico como hacer tablas mucho más fácil si usan Emacs, también lo anoto aquí:


Tablas de Org-mode a Latex

1. Habilitar orgtbl-mode

2. Escribe esto donde estará la tabla:
% BEGIN RECEIVE ORGTBL thenameofthetable
% END RECEIVE ORGTBL thenameofthetable

3. Creas la tabla
#+ORGTBL: SEND thenameofthetable orgtbl-to-latex
|——+—–+—–|
|    A |   B |   C |
|——+—–+—–|
| 2.34 | 2.7 | 8.9 |
| 3.67 | 4.5 | 8.9 |
|——+—–+—–|

4. Exportas con C-c C-c sobre la tabla

Balanceador de cargas con Haproxy

En el trabajo se tiene un problema, servidores web implementados con websphere que suelen saturarse, ya sea en el número de usuarios o en requerimientos de hardware.

Actualmente se implementa una forma de enrutar a diferentes servidores basado en un round-robin simple sin embargo es complicado implementar un contador de tiempo en este caso por la alta cantidad de usuarios, además resulta innecesario al contar con balanceadores de carga que implementan una serie de algoritmos de forma completa.

Una solución sencilla entonces es tener un balanceador (LB1) que reciba las peticiones de los clientes, el cual opere de la siguiente manera (imagen obtenida de Internet, pero no recuerdo el sitio 😦 ):

  • Si una petición no contiene una cookie de asignación de servidor, será enviado a un servidor válido.
  • Se regresa una cookie llamada SERVERID con el cual es posible organizar la respuesta del servidor y continuar la conexión si este ofrece keepalive (HTTP 1.1).
  • Cuando el cliente haga una nueva petición la cookie SERVERID hará que la sesión del usuario pueda pasar a cualquier servidor de la granja o que permanezca directamente en el primer servidor asignado. La cookie nunca es enviada fuera de LB1 por lo que no existe riesgo de seguridad.
  • Si un servidor es retirado, saturado o simplemente cae de la red, las peticiones serán reasignadas a otro servidor inmediatamente y sin tener que volver a iniciar la sesión.

El software Haproxy da la oportunidad de elegir entre varios métodos de balanceo:

  • Round Robin
  • Número de conexiones
  • Fuente de la petición
  • URI
  • Parámetros en la URL

Además puede ajustar el número máximo y mínimo de conexiones concurrentes a manejar, tiempo de vida de las conexiones con el cliente y el servidor, gestión de colas, emular servidores virtuales, configurar servidores de respaldo y crear granjas de balanceadores, así se afianza la disponibilidad del servicio. Además brinda un monitor de los servidores virtuales y los servidores físicos.

Haproxy funciona en la en la capa 4 del modelo OSI y puede escalar parcialmente a la capa 7, por lo que puede optimizar el protocolo TCP y reconocer opciones de HTTP.

Haproxy actualmente está configurado así:

# El frontend es el servidor virtual

frontend FONDOS 172.16.6.105:7070

# Escucha a otros puertos que corresponden a los servidores reales

bind :9093

bind :9097,:9098

# Lee la URI y decide una acción

acl fondos2_rule url_dir FONDOS2

use_backend FONDOS2 if fondos2_rule

default_backend FONDOS

# El backend es una granja de servidores

backend FONDOS

# Se crea una cookie que mantendrá la asignación del servidor

cookie SERVERID insert nocache indirect

server epmwserv epmwserv.main.unlugar.mx:9093 cookie K check

server hrmsepws hrmsepws.main.unlugar.mx:9093 cookie L check

backend FONDOS2

cookie SERVERID insert nocache indirect

server epmwserv epmwserv.main.unlugar.mx:9098 cookie M check

server hrmsepws hrmsepws.main.unlugar.mx:9097 cookie N check

Ventajas:

  • La IP de Haproxy es 172.16.6.105 y existe un servidor virtual llamado FONDOS que escucha el puerto 7070, esta es la entrada general.
  • El servidor virtual tiene 2 granjas de servidores (FONDOS y FONDOS2).
  • Dependiendo de la URI el servidor virtual eligirá una granja de servidores para responder la petición, la condición es si el servicio está contenido en FONDOS, ejemplo: /psp/FONDOS/?cmd=login&languageCd=ESP o FONDOS2, ejemplo: /psp/FONDOS2/?cmd=login&languageCd=ESP
  • Las conexiones atendidas son cerradas, por lo que se reduce el riesgo de la denegación de servicio.
  • Es posible crear colas y balanceo por pesos si es que se supera el número de conexiones posibles.
  • Permite tener periodos de mantenimiento donde el servidor sea deshabilitado totalmente o solo para nuevas conexiones.

Notas:

  • Si un cliente usa HTTP/1.1 solo la primera respuesta será analizada e ignorará la cookie. Además ocupará permanentemente los recursos de red. La solución es deshabilitar las conexiones permanentes con la opción httpclose.
  • LB1 es un servidor sensible. Todas las conexiones pasan permanentemente por el proxy, si este cae las conexiones establecidas se perderán también. Es recomendable usar un respaldo permanente.
  • El cambio de configuración del proxy llevará a la caida del servicio, esto es evitable si se actualiza la configuración sin que el servidor se detenga:

haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid –sf $(/var/run/haproxy.pid)

Por hacer:

Hacer que FONDOS y FONDOS2 trabajen como una sola aplicación porque de hecho contienen lo mismo, solo de que subcarpeta donde están instalados es diferente.

Recursos:

Archivo de configuración completo de Haproxy

Comando de reinicio de Haproxy

Fuentes:

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

http://www.exceliance.fr/en/ART-2006-making%20applications%20scalable%20with%20LB.pdf

Software Libre: Tecnología para la evolución a la Sociedad de la Información

Descargar el trabajo completo

Este trabajo tiene como objetivo apoyar al lector en las decisiones referentes al desarrollo y uso de software, haciendo ver que el Software Libre es una herramienta tecnológica eficaz y ética para que la sociedad mexicana avance hacia una Sociedad de la Información justa, libre y solidaria.

Sociedad de la Información es un estado de desarrollo social caracterizado por la capacidad de sus miembros (ciudadanos, empresas, organizaciones y Administración Pública) para obtener y compartir cualquier información, instantáneamente, desde cualquier lugar y en la forma que se prefiera. Así la información se convierte en vehículo indispensable para la generación de riqueza (empresas y ciudadanos), satisfacción (Administración Pública, ciudadanos y organizaciones) y cultura (ciudadanos y organizaciones).

México es un país que no ha logrado integrarse a la Sociedad de la Información y una de las causas fundamentales de este problema es la falta de desarrollo tecnológico a nivel nacional. El software es el elemento principal de la tecnología aplicada, por lo tanto México debe tener la capacidad de desarrollar soluciones de software para los problemas comunes y así impulsar al mismo tiempo el desarrollo tecnológico.

Algunos países como Uruguay, han podido elaborar estrategias y aplicarlas en todo su territorio de forma exitosa. Otros han decidido hacer pequeñas estrategias aplicadas solamente a una región lo cual también ha sido exitoso, como es el caso de varias regiones de España.

La situación de México es complicada por la gran diversidad cultural existente en el país, además, comparado con Uruguay que se constituye con una superficie total de 176,215 km2 y 3,415,920 habitantes, México es un país mucho más grande constituido con una superficie de 1,972,550 km2 y 107,550,697 habitantes, lo cual hace difícil pensar en una estrategia nacional homogénea que resuelva la problemática presente en el país y se convierte en una de las razones del fracaso del proyecto e-México.

A pesar de que existen diversos métodos para introducir un país en la Sociedad de la Información, para poder elegir una metodología adecuada se deben tener en cuenta numerosos factores que algunas veces no son visibles por si mismos, por ejemplo, factores económicos (empleo, inversiones, incentivos), intereses de la sociedad civil y el sector privado, diversidad cultural, educación, salud, etc., siempre con el fin de definir estrategias que impulsen considerablemente la inclusión de los ciudadanos a este modelo social.

En México existen numerosas empresas que se benefician de las Tecnologías de la Información y el Conocimiento, sin embargo las PyME no son capaces de percibir todos sus beneficios debido a que el costo del software que utilizan es muy elevado y no es posible cambiarlo debido a la falta de asesoría o bien porque no quieren afectar su operatividad. Estos factores acaban mermando la producción de estas empresas e incluso impide que muchas de ellas prosperen.

Por su parte el usuario particular mexicano ha trabajado toda su vida solo con algunas soluciones de código cerrado y al momento de ofrecerle el uso de otras tecnologías se sienten incómodos, debido a que son entornos similares pero hay cosas nuevas que aprender. Las personas comúnmente se resisten al cambio y el problema en México inicia con el jefe de soporte técnico que no entiende por completo las ventajas de usar otros tipos de software, de esta manera tampoco podrá convencer a los que trabajan con él de usar estas alternativas.

Lo anteriormente señalado nos ayuda a observar que las acciones que México ha tomado hasta ahora no solo han fallado en alcanzar la Sociedad de la Información, también han sido caracterizadas por los siguientes problemas:

  • Interfieren con la soberanía nacional o son agente de creación de monopolios.
  • No mantienen su valor tecnológico y/o monetario a largo plazo.
  • Dificultan la creación y el intercambio de conocimiento para algunos sectores de la población.
  • No son accesibles en precio, diversidad lingüística y libre aprendizaje para toda la población.
  • Es difícil modificar o adaptar las implementaciones para resolver los problemas específicos de ciertas comunidades.
  • No existente interoperatividad entre tecnologías.
  • No generan empleos para los técnicos e ingenieros mexicanos.
  • No incluyen metodologías de desarrollo flexibles y estandarizadas.

El Software Libre es la herramienta técnica ideal para presentar soluciones que sean éticamente correctas para toda la sociedad. Además asegura que no se perjudiquen los sectores más sensibles de la sociedad, imposibilita el crecimiento de la brecha digital, que es de forma somera, resultado del rechazo, la desigualdad y la pobreza.

El uso del Software Libre impulsaría la Sociedad de la Información en México porque contribuye al conocimiento humano, alienta la creación y publicación de conocimiento nuevo, fomenta la confianza de la sociedad civil en los procesos gubernamentales, afianza la soberanía nacional y facilita el control, lo que se traduce en una mayor seguridad y confianza en los servicios prestados por el sector privado, mientras que el software no-libre no puede garantizar todas estas ventajas.

Es de vital importancia para el ingeniero mexicano presentar alternativas para resolver los problemas a los que se enfrenta la sociedad civil debido a que es su tarea desarrollar las Tecnologías de la Información y el Conocimiento para el progreso nacional.

En el caso mexicano, el paradigma de la Sociedad de la Información debe verse de forma medular divido en tres partes:

  • Tecnología: Infraestructura y servicios genéricos, esta es la parte que influye directamente en el desarrollo de las Tecnologías de la Información y el Conocimiento como la regulación de las Telecomunicaciones, el desarrollo de la industria del software así como sus diferentes licencias, entre otros problemas que influyen directamente en el desarrollo tangible de la Sociedad de la Información.
  • Instituciones y organizaciones: Capacidades y conocimiento, es en donde los propios usuarios hacen uso de estas tecnologías para digitalizar diferentes sectores de la sociedad y la economía; esto da lugar a los diferentes sectores, aplicaciones y servicios de la Sociedad de la Información. Es posible digitalizar muchas de las conductas humanas, es decir, las Tecnologías de la Información y el Conocimiento usadas para el desarrollo y modernización de la sociedad; entonces encontramos que las capacidades y conocimiento son el habilitador necesario mas no suficiente para el desarrollo.
  • Políticas Públicas: Regulación e incentivos. Aseguran y aceleran la transición a la Sociedad de la Información. Marcan como es que avanzará la comunidad en el camino a la Sociedad de la Información y los medios que serán utilizados para lograrlo.

Es importante definir como convertir a la tecnología en un habilitador para el desarrollo. En este sentido se debe prestar atención a dos industrias principales. Hardware y Software por ser industrias comecializables. En este caso distinguen la producción orientada a la demanda estandarizada para la exportación (video juegos, sistemas operativos, etc) y servicios conexos para adaptación a requisitos locales, ambas con potencial pero el segundo es crucial para la digitalización de procesos locales. Estas industrias están destinadas a crear empleos y así acercar la Sociedad de la Información, por eso la generación de material humano (principalmente ingenieros) es esencial para lograr el avance tecnológico.

Si se instalan las tecnologías y se genera una masa crítica de empleados, técnicos, ingenieros que permita aprovechar esta tecnología, podremos emplear las Tecnologías de la Información y el Conocimiento para el desarrollo nacional por medio de:

  • Apropiación de la tecnología por parte de los profesionales de todos los sectores, para incorporarla adecuadamente en sus actividades.
  • Digitalización de información. Que incluye las páginas web para interconexión de información y bases de datos hasta la creación de estándares comunes para la interoperatividad.
  • Intercambio de experiencias para el avance de las comunidades y sectores rezagados.

Se vuelven de vital importancia las políticas públicas para lograr estos objetivos, las cuales deben tener las características siguientes para aumentar las posibilidades de éxito:

  • Coordinación de iniciativas dispersas que llevará a mejores resultados. Es decir, dentro de la libertad que da la división política del país se necesita una estrategia nacional que coordine, evalué y de seguimiento a las políticas regionales.
  • La existencia de muchos proyectos que impulsen avances independientemente de la existencia de una estrategia coordinada. Es decir, pequeños proyectos para acciones concretas.

Basado en las experiencias internacionales descritas a detalle en el trabajo, la estrategia nacional que debe adoptar México debe incluir el desarrollo y uso de Software Libre, que por su naturaleza facilita el avance y la superación de los desafíos que trae consigo la evolución a la Sociedad de la Información

Descargar el trabajo completo