attakatara

El sitio del código de todos python, sql, xml …

Archivar para el mes “octubre, 2015”

¿Usuario O role?

Basta leer un tutorial de instalación y configuración de PostgreSQL y tal cual como recetas nos indican paso a paso un sencillo procedimiento para tener todo a tono en nuestros sistemas basados en UNIX, uno de mis favoritos y el cual recomiendo es el de Caballero [1].

Una de las confusiones que siempre me han embargado es que al instalar el sistema automáticamente se crea un usuario de entorno Unix llamado postgres el cual por cuestiones de seguridad se nos pide que se le cambie su password de forma inmediata. Y luego se nos pide que logueados como este entremos a la cli de psql para crear un role postgres con la orden sql ALTER ROLE. Si lo tomo como receta o píldora puede ser que no tenga problemas de funcionamiento alguno, ahora bien si no lo entiendo como creo que a la mayoría nos pasa (por novatada o newbie), puede ser que crea luego necesitar crear un role para otro usuario y que por simetría crea necesario también crear su respectivo usuario de entorno UNIX, esto ultimo puede traer consecuencias considerables de seguridad al sistema entre otras cosas y de eso quiero que vaya este post.

Empecemos por definir cada uno de ellos y luego vemos si podemos relacionarles. Según [2]:

El sistema Unix es un sistema operativo multiusuario. Linux está basado en el sistema Unix. Para que múltiples usuarios puedan hacer uso del sistema de una forma segura y ordenada, es necesario que el sistema disponga de mecanismos de administración y seguridad para proteger los datos de cada usuario, así como para proteger y asegurar el correcto funcionamiento del sistema.

Siendo así podemos dilucidar que postgres necesita un usuario Unix ya que ejecutara una serie de funciones sobre el entorno para crear y mantener la disponibilidad de los clusters de datos (almacenes de datos, colección de bases de datos), esto es sencillo verlo si ejecutamos comandos desde psql y en una consola aparte con top podemos ver en la imagen que se ejecutan procesos con PID especifico en este caso el 13774 y que a su vez se relacionan con el usuario postgres. Hasta este punto todo bien sin ir a las entrañas técnicas del funcionamiento ya develamos el uso del usuario cada vez que accedemos al cluster de datos sea bien a través de sql directamente o de forma indirecta con alguna aplicación que realice un socket (conexión entre uns app y la bd), a este.

uOr1

Esta bien, ¿Y el role?, este último puede ser pensado como un usuario o un grupo de estos, no están relacionados directamente a una base de datos sino a todo el cluster (puedes imaginar el cluster como un apilamiento de base de datos), los roles son guardados en una tabla de catálogo denominada pg_roles, haciendo una consulta sobre ella con SELECT podemos ver los roles existentes en el cluster especifico o con los comandos: \dg o \du, en la imagen podemos constatar que la salida de ambos nos suministra la información sobre los roles en el sistema.

uOr2

Para finalizar podemos concluir que el usuario tiene una pertinencia operativa sobre el sistema Unix mientras que dicha capacidad para el role se reduce al cluster de datos, podemos tomar en cuenta otras consideraciones respecto a la seguridad o a que debe hacer un role especifico o que no debe hacer, lo cual es un criterio nada subjetivo y que dependerá del uso de cada sistema en particular, pueden existir ciertos consejos pero exceden el alcance de este post, los mismos espero tratarlos en próximas publicaciones.

Agradecido con la conversa constructiva con el amigo Javier León @jelitox.

[1] https://lcaballero.wordpress.com/2013/03/01/instalacion-de-postgresql-en-debian-gnulinux-wheezy/

[2] http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/usuarios_y_grupos_de_usuarios_en_linux.html

¿Cómo se come XML?

     En la actualidad, donde lo cotidiano son los Sistemas Operativos basados en Interfaz gráfica, es muy común utilizar sistemas que manejan representaciones del documento iguales a su resultado final conocidos como WYSIWYG (What you see is What you Get), pero siempre no fue así. Anteriormente los documentos se editaban con marcado de formato.

     El sistema de marcado de formato se basa en <<marcar>> el texto con instrucciones precisas que describen cada una de las condiciones que se desea aplicar a las partes del texto, tales como el tipo de letra y el estilo. A estas marcas se le denomina etiquetas (tags), códigos o marcas.

     Los lenguajes de marcas son muy antiguos, habiendo sido utilizados en la descripción de documentos a través de medios informáticos desde que se utilizan los sistemas de tratamiento de textos. A finales de los 70 IBM encargo a Charles F. Goldfarb que diseñara un sistema estándar para la gestión y edición de documentos, auxiliado por Ed Mosher y Ray Lorie, creó un lenguaje único de marcado, a este desarrollo se le denominó marcado generalizado, y se acuño el termino lenguaje de marcas. A este lenguaje se le bautizó como GML (General Markup Language), siglas que curiosamente coinciden con las iniciales de sus autores (Goldfarb, Mosher, Lorie).

     Hasta 1974 se continuo con el desarrollo de GML, más tarde entre 1978 y 1986 cambiaria según la norma ISO 8879 a SGML (Standard General Markup Language).

     Llegado el punto en que HTML dejo de servir para su función inicial (por motivos que exceden el contenido de este post), el consorcio World Wide Web (W3C), acomete el diseño de un nuevo sub conjunto del SGML que sirva para describir contenidos de documentos, al que sea denominado XML (Extensible Markup Language), publicando sus especificaciones de la versión 1.0 en el año 1998.

     En la actualidad HTML es una aplicación de XML especializada en la representación de documentos Web, mientras que XML es un subconjunto de SGML más fácil de tratar y especializado en al gestión de todo tipo de información para la Web.

     XML al igual que SGML es lo que se conoce como un metalenguaje, es decir un lenguaje de marcas capaz de generar otros lenguajes. Este motivo es el que lo hace ser el padre de XHTML, WML o VML.

    En fin es un metalenguaje de vital interés sobre todo por framewoks modernos para la realización de sockets de comunicación entre aplicaciones y webservices, lo que lo convierte en un estandard para la inteoperatividad entre aplicaciones, de allí su importancia. Un ejemplo de ello lo es OpenERP y Odoo quien utiliza archivos .xml para determinar las vistas de sus aplicativos. XML ha sido diseñado entonces para facilitar la implementación e interoperatividad entre SGML y HTML.

     Finalizando podemos entonces decir que XML es un lenguaje de marcas, basado en SGML, capaz de describir cualquier tipo de información en forma personalizada, aunque también es un metalenguaje de mercado capaz de describir lenguajes de marca adecuadas para aplicaciones concretas.

Golpe de timón tecnológico.

Golpe de timón tecnológico.

       Definitivamente el rumbo que están tomando las tecnologías libres en Venezuela, pareciera estar dando paso a una élite de académicos, sujetos institucionales y tecnócratas, quienes desde sus previos en el Olimpo de la claridad y la sapiencia decidirán una vez más sobre los destinos de la gesta emancipadora que alguna vez soñara el mismísimo Comandante Chavez. Que promovió desde la consecuencia de los hechos políticos del paro petrolero, aupado desde un estado agredido (al igual que enquistado y corrupto), quienes en revancha por los cambios estructurales decidieron parar la principal industria nacional con las consecuencias por todos consabidas; una de ellas el crucial pero también poco respetado Decreto 3390 del 23 de Diciembre de 2004 [1], y las claras alusiones del presidente sobre el uso del Software Libre como medio para la libertad tecnológica de la patria [2], incluso decía que donde hubiese resistencia al SL el mismo apuntaría sus cañones.

        Ludovico Silva: “Un sistema de valores, representaciones y creencias que se da en todas las sociedades donde existe la explotación del hombre por el hombre y que está destinada a preservar, ocultar y justificar idealmente la desigualdad existente entre la estructura material de la sociedad” Pensamiento crítico y poesía. Pag (17)

      Es increíble ver como las instituciones se encargan de absorber, aislar, separar, alienar y a la final robarnos a nuestros cuadros, este fenómeno se repite en todas las instancias organizativas sociales, las comunidades que apoyamos el uso de tecnologías libres no escapamos de este hecho.

     A los eventos organizados desde la comunidad con la visión de unos pocos entusiastas, se fue sumando una orgánica, valiosa, con ganas y deseos pero con una carencia de formación política estratégica que les consolidara en un proyecto común.

     Las variables del cambio estaban dadas solo faltaba organización, esta ultima se fue cocinando desde los proyectos subjetivos en áreas del conocimiento especifico, que se fueron sumando a otras iniciativas en todo el territorio lo que hizo de los encuentros y la juntura una forma de vencer los separatismos propios de una academia y un proceso formativo ideologizante y alienante.

     Hoy día necesaria es la reflexión ya que desde la inocencia y la ilusión nos abocamos a la transformación de las instituciones desde el conocimiento, como quien dice nos adentramos en las entrañas del monstruo, y este ultimo engullo nuestros talentos, nuestros cuadros para alejarlos de sus iguales en un empeño de sobreponer la importancia del trabajo sobre los preceptos éticos emanados y construidos desde una ética hacker, desde una convicción política y desde un roce humano real.

     Hace pocos días cumplió su tercer año el famoso encuentro de golpe de timón [3], creemos que es necesario un reencuentro de las fuerzas sociales reales de las tecnologías en Venezuela, una reorientación ética de nuestras acciones, un re-pensarnos políticamente un contarnos y ubicarnos, crear las condiciones sinérgicas necesarias para la construcción de ese tejido social que no es otro que nuestro musculo político y desde la reflexión no permitir que el ente estatal nos robe más cuadros, nos divida y en esa estrategia diluya nuestros sueños, necesario pues es el Golpe de timón de los colectivos tecnológicos y revolucionarios.

     Esta ultima convocatoria para ser legítima y real no puede ser dada desde una institución, desde el estado, desde un gremio, en fin desde ninguna organización mellada de la super estructura estatal, para ser real, ética y política debe venir desde la gente que hace vida en las comunidades desde el poder popular mismo transformado en colonias de hackers y desde cada punto del territorio nacional, ya que las practicas mismas del centralismo también deslegitiman, los planes, los papeles y reglamentos concebidos desde la consultoría siempre sapiente de unos pocos en la capital.

      Un compañero alzaba su grito desde un grupo en telegram [4], ¿Desde cuando son las instituciones que convocan? ¿Desde cuando son ellas las que nos imponen una agenda de trabajo? Y a estas le sumamos ¿Desde cuando nos han dividido socialmente? ¿Desde cuando y por especialísimas condiciones nos sientan en mesas separadas? Y todo esto con la finalidad de hacer bulto, de generar papeles de trabajo sobre los que no decidirá la comunidad sino su pool de consultores, tecnocrátas y siempre sapientes equipos de trabajo, los cuales por supuesto siempre son los mismos que preferirán las comisiones aunque ello les resulte en risibles multas.

      Hoy más que nunca está demostrado que el camino no es el institucional, no es engrasar las maquinarias propias de un estado dominante, dominador y enajenante, por lo tanto no es sentarnos diez (10), horas diarias a generar código que solo optimizará los procesos enrarecidos y viciados de unas estructuras que nos encierran entre las cuatro (04), paredes de la irrealidad social para anular nuestros actos conscientes de liberación del conocimiento y la conformación de reflexiones que atentan contra su comodidad burguesa.

     Sergio Bacchi: “La idea de Estado nació cuando los dueños de los esclavos tuvieron que asociarse para defender su propiedad, o sea asegurar la posesión de sus esclavos. Ese estado ha venido evolucionando y tomando diversas formas hasta los días actuales. Aquí está el carácter represivo del Estado en su esencia”. Pensamiento crítico y poesía. Pag (17).

      A la final todo el valioso esfuerzo generado desde las voluntades y canalizado desde la postura de un ente cualquiera será desechado toda vez que atente contra las gestiones de unos pocos ubicados en puestos estratégicos de decisión por encima de los argumentos y el accionar técnico pero también desde el separatismo propiciado desde estas instancias.

     Necesario es entonces golpear este timón, desde la juntura y el encuentro, desde la sistematización de las experiencias, necesario es permear lo aprendido para generar saldos documentales y críticos, repensarnos, copiar modelos de éxito de gobierno abierto, y hackearnos la sociedad misma, transpolar las prácticas del trabajo colaborativo y el conocimiento libre pero sin dejarnos absorber por los de siempre.

     “Todos los hackers son realmente crackers: porque intentan romper el cerrojo de la jaula de aceroPekka Himanen, La ética del Hacker. Pag (19).

     Ludovico Silva: “La ideología, como instrumento de dominación de clases y la conciencia de clase, como pensamiento que erradica la inconveniencia ideológica”. Pensamiento crítico y poesía. Pag (22).

[1] http://ojedareinaldo.blogspot.com/2008/01/decreto-3390-en-la-repblica-bolivariana.html

[2] https://www.youtube.com/watch?v=sRbl7X9aSjY

[3] http://www.cvg.com/sites/default/files/files/GOLPE-DE-TIMON-23-10-12-Web.pdf

[4] https://es.wikipedia.org/wiki/Telegram_Messenger

Trabajo colaborativo con GIT

Git tiene tres estados principales en la que se pueden encontrar los archivos: Confirmado (commited), Modificado (modified) y preparado (satged).

Confirmado: Los datos están almacenados de manera segura en tu Base de datos local.

Modificado: has modificado el archivo pero todavía no lo has confirmado a tu Base De Datos.

Preparado: has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación o Commit.

El Directorio Git, es donde se almacena los metadatos y la base de datos de objetos para tu proyecto. Es la parte más importante de Git, y es lo que se copia cuando clonas un repositorio desde otro ordenador. El Directorio de trabajo, es una copia de la versión del proyecto. Estos archivos se sacan de la base de datos comprimida en eldirectorio Git., y se colocan en el disco para que los puedas usar y/o modificar. El área de Preparación, es un sencillo archivo, generalmente contenido en tu directorio Git, que almacena la información de lo que va a ir en tu próxima confirmación. Se le conoce como Indice.

Instalación y Configuración en sistemas debian o derivados.

#aptitude install git
#git config –global user.name “username”
#git config –global user.mail mail@dominio.com
#git config –global core.editor [editor de su preferencia:vim, nano]

para listar las opciones ya configuradas puedes hacer: $git config –list

Obteniendo un Repositorio de Trabajo Git

Existen dos maneras de hacerlo.

  1. tomar un proyecto o directorio existente de manera local e importarlo a Git. Aquí es importante diferenciar entre Git y repositorios remotos, Git es el conjunto de programas que permite tener una estructura de datos sincronizados entre si a través de una BD local la cual se puede importar a un repositorio remoto (otro equipo en la red, lan o wan). Un repositorio remoto en la internet es un servicio de hosting Git en la red allí encontramos por ejemplo a github [1], o MEAT [2].  $git init   ————->  crea un nuevo subdirectorio .git que contiene todos los archivos necesarios del repositorio el equeleto git.
  2. Clonar un repositorio existente desde otro servidor: $git clone <url>

Guardando Cambios en el repo

Necesitas hacer algunos cambios, y confirmar instantáneas cada vez que el proyecto alcance un estado que desees grabar. Cada archivo del directorio de trabajo puede estar bajo seguimiento (tracked) o sin seguimiento (untracked).

A medida que editas archivos, Git lo ve como: modificados, por que los has cambiado desde la última confirmación. Preparas todos esos archivos modificados y luego confirmas todos los cambios que hayas preparado, y el ciclo se repite.

Para saber cual es el estatus de tus archivos en el repositorio local: $git satatus

Para empezar el seguimiento de un nuevo archivo: $git add nomarch

Confirmando cambios (commit): $ git commit

Eliminando archivos: $git rm nomarch ——-> la próxima vez que confirmes el archivo desaparecerá y dejará de estar bajo seguimiento. Si ya habias modificado el archivo y lo tenías en el área de preparación, deberás forzar su eliminación con la opción -f. Si lo que deseas es eliminar el archivo de tu área de preparación pero a la vez mantenerlo en el directorio de trabajo: $git rm –cached nomarch

Renombrando archivos: $git mv file_from file_to

En este post tratamos el uso local del sistema de control de versiones de manera local en una proxima entrega trataremos el uso de repositorios remotos, recomendamos la lectura de PRO-GIT [3]

ENLACES DE INTERÉS:

[1] GITHUB https://github.com

[2] MEAT https://getmeat.io/

[3] PRO-GIT http://git-scm.com/book/es/v1

Navegador de artículos