Venezuela en SQL

He publicado la lista que completé de estados, ciudades, municipios y parroquias de Venezuela en formato .SQL. Debido a que alguna vez necesité estos datos y se me hizo difícil conseguirlo en la red, me tomé la tarea de comenzar a recolectar la información poco a poco y publicarla.

Me gustaría añadir más datos; por ejemplo, códigos de área telefónico y códigos postales. Pero será en otro momento.

Pueden obtener el esquema y datos en GitHub: https://github.com/marydn/venezuela-sql


Proyecto: L3p D3sk

Seguramente habrás visto por ahí en Internet la imagen de este escritorio

Pues bien, ahora te dejo las que corresponden a la construcción. Primero que nada, el chico -creador de la idea-, hizo la arquitectura en Google SketchUp; estuvo 9 horas seguidas dibujando sin parar hasta obtener “algo de forma”:

Bastante trabajo a decir verdad, tiene muchos detalles (he intentado muchas veces utilizar el Google SketchUp, pero no le tengo suficiente paciencia). El creador utilizó hardware de su proyecto anterior, incluyendo el sistema de enfriamiento, que se trata de un radiador 1080 ubicado bajo el piso de la casa, justamente en la esquina de la casa donde se ubicará la nueva PC. Algunas fotos del Cooler System:

La construcción de la plataforma esta realizada con láminas de aluminio:





Haciendo el logo y un pequeño ajuste en el escritorio para acomodar las rodillas:




Colocando algunos fan coolers y comenzar el armado de algunas cosas:

Página del proyecto: http://www.l3p.nl/l3p-d3sk/all-pictures/



Crear formularios con relaciones m:n en Symfony 1.4

El cambio de Symfony 1.0 al Symfony 1.4 no fue tan complicado como pensé que sería. Pero supongo que tanto a mi como a otros cuantos, les habrá ocurrido que enfrentarse a entender la construcción de formularios no es fácil. Aunque una vez superado esto, entiendes lo que significa. A pesar de sus bondandes y, en general, las bondades del symfony, no me parece que los formularios sigan del todo un patron MVCW (mi humilde opinión).

Volviendo al tema, una de las cosas que me fue dificil de crear fue un simple formulario que guardara datos en tablas estructuradas con relacion muchos a muchos. Y por la poca documentación que encontré, pongo a disposición un ejemplo que espero le sirva a alguien.

Para el ejemplo vamos a suponer que tenemos un blog. De ese blog cada entrada (article) tiene varias categorias (category) y varias etiquetas (tags). Para que lo obviamente necesitaremos relaciones muchos a muchos (muchas entradas pueden tener muchas categorias, y muchas entradas pueden muchas etiquetas). El schema.yml sería algo como esto:

propel:
article:
id: ~
title: { type: varchar(255), required: true }
slug: { type: varchar(255), required: true }
content: longvarchar
status: varchar(255)
author_id: { type: integer, required: true, foreignTable: author, foreignReference: id, OnDelete: cascade }
category_id: { type: integer, required: false, foreignTable: category, foreignReference: id, onDelete: setnull }
published_at: timestamp
created_at: ~
updated_at: ~
_uniques:
unique_slug: [slug]

author:
id: ~
first_name: varchar(20)
last_name: varchar(20)
email: { type: varchar(255), required: true }
active: boolean

category:
id: ~
name: { type: varchar(255), required: true }

tag:
id: ~
name: { type: varchar(255), required: true }

article_tag:
article_id: { type: integer, foreignTable: article, foreignReference: id, primaryKey: true, onDelete: cascade }
tag_id: { type: integer, foreignTable: tag, foreignReference: id, primaryKey: true, onDelete: cascade }

Uno de los errores frecuentes ocurre por una mala definición de las tablas. Se debe tener en cuenta que las tablas que manejan la relacion m:n debe tener sus dos campos establecidos como una llave primaria para esa tabla, y establecer las llaves foráneas correctamente.

# Creamos el modelo:
./symfony propel:build-model

# Luego creamos los formularios:
./symfony propel:build-forms

# Limpiamos la caché:
./symfony cc

# Se crea el modulo que utiliza el formulario:
./symfony propel:generate-module app nombreModulo nombreClase

Cuando accedemos al formulario veremos que nos mostrará la lista de categorias disponibles y la lista de etiquetas disponibles.

Y ¿si quiero agregar el campo manualmente a un formulario que ya existe?

Pues bien, luego de haber definido correctamente tus tablas, debes re-hacer el model, re-hacer los formularios:

./symfony propel:build-model
./symfony propel:build-forms
./symfony cc

Vas al fomulario, y agregar el campo. Suponiendo que en la tabla m:n (post_category) existen los campos id_post y id_category, donde ambos conforman una clave primaria y ambos son claves foráneas con sus respectivas tablas (post y category). Vamos al formulario principal (que deberís ser post) y agregamos nuestro campo:

$form['post_category_list']->render();

Y listo, tenemos nuestro nuevo campo.

Demás esta decir que symfony se encarga del resto, es decir, de hacer efectivas las relaciones, guarda los datos en sus respectivas tablas. Actualiza, elimina, crea, sin necesidad de alguna configuraciòn extra. No se requiere embeber formularios.

Enlaces de interés:


e-Decálogo

  1. No robarás programas informáticos.
  2. No copiarás, ni usarás programas sin la correspondiente licencia.
  3. No piratearás de Internet música o películas ilegalmente.
  4. No serás un pirata informático, ni violarás la privacidad y la seguridad de los sistemas informáticos.
  5. No enviarás e-mails anónimos o con direcciones y datos falsos a tu prójimo.
  6. No enviarás spam (e-maíls basura) saturando los buzones de tus prójimos.
  7. No crearás, ni difundirás virus informáticos.
  8. No crearás, ni entrarás en sitios pornográficos.
  9. No abusarás del chat, ni darás falsas informaciones sobre ti mismo.
  10. No cometerás adulterio a través de Internet, chats, foros, messenger…

Estos diez mandamientos se encierran en dos:

  • Comprarás el sistema operativo y todas tus aplicaciones a Microsoft.
  • Y a las demás marcas… lo que no puedas comprarle a Microsoft.

Vía: http://chistesinformaticos.wordpress.com/2008/10/13/e-decalogo/