sábado, 13 de abril de 2013

Consulta de Código Postal [Tutorial Parte 1 - Importación a BD]

La intención de este post es crear un pequeño tutorial de varios temas en su manera más básica pero asegurándose que sean útiles. En resumen se creará un servicio web que se encargará de devolver el código postal del algún lugar de méxico, o viceversa. Para mostrarlo utilizaremos PrimeFaces, en el lado de la Base de Datos usaremos PostgreSQL y Hibernate para realizar los mapeos.
Lo primero que necesitamos es tener la información, así que iremos directamente a la página de SEPOMEX (Servicio Postal Mexicano) en el apartado de Descarga Códigos Postales
Esto nos llevará a una página donde nos da la posibilidad de elegir el formato en que se realizará la descarga, para facilitar la importación a la Base de Datos seleccionaremos en tipo TXT.
Ya que tenemos el archivo de texto descomprimido, eliminamos las 2 primeras líneas de éste (ya que sólo contiene una leyenda informativa de la SEPOMEX y si no la eliminamos nos causará Warnings en el momento de importar el archivo a la Base de Datos) y lo guardamos en algún lugar con acceso público de nuestro file system, por ejemplo en C:\Users\Public\Documents.
(Nota: En caso de que tener algún problema para descargar el archivo pueden hacerlo directamente desde este link, aunque tengan en cuenta que la información que en él se encuentre no estará actualizada)
Ahora se requiere crear la Base de Datos en donde se guardará esta información, esto lo hacemos desde el pgAdmin y la llamaremos sepomex:

 
Ahora que tenemos creada nuestra Base de Datos, crearemos una tabla para la información los códigos postales, a la cual llamaremos codigo_postal, pero como serán varias columnas lo haremos desde el editor SQL para facilitar el proceso. En este ejemplo respetaremos los nombres de las columnas de acuerdo al archivo de texto descargado:

CREATE TABLE codigo_postal
(
d_codigo character varying, -- Código Postal asentamiento
d_asenta character varying, -- Nombre asentamiento
d_tipo_asenta character varying, -- Tipo de asentamiento (Catálogo SEPOMEX)
d_mnpio character varying, -- Nombre Municipio (INEGI, Octubre 2012)
d_estado character varying, -- Nombre Entidad (INEGI, Octubre 2012)
d_ciudad character varying, -- Nombre Ciudad (Catálogo SEPOMEX)
d_cp character varying, -- Código Postal de la Administración Postal que reparte al asentamiento
c_estado character varying, -- Clave Entidad (INEGI, Octubre 2012)
c_oficina character varying, -- Clavel del Código Postal de la Administración Postal que reparte al asentamiento
c_cp character varying, -- Campo vacío
c_tipo_asenta character varying, -- Clave Tipo de asentamiento (Catálogo SEPOMEX)
c_mnpio character varying, -- Clave Municipio (INEGI, Octubre 2012)
id_asenta_cpcons character varying, -- Identificador único del asentamiento (nivel estatal)
d_zona character varying, -- Zona en la que se ubica el asentamiento (Urbano/Rural)
c_cve_ciudad character varying -- Clave Ciudad (Catálogo SEPOMEX)
)
WITH (
OIDS=FALSE
);
ALTER TABLE codigo_postal
OWNER TO postgres;
COMMENT ON COLUMN codigo_postal.d_codigo IS 'Código Postal asentamiento';
COMMENT ON COLUMN codigo_postal.d_asenta IS 'Nombre asentamiento';
COMMENT ON COLUMN codigo_postal.d_tipo_asenta IS 'Tipo de asentamiento (Catálogo SEPOMEX)';
COMMENT ON COLUMN codigo_postal.d_mnpio IS 'Nombre Municipio (INEGI, Octubre 2012)';
COMMENT ON COLUMN codigo_postal.d_estado IS 'Nombre Entidad (INEGI, Octubre 2012)';
COMMENT ON COLUMN codigo_postal.d_ciudad IS 'Nombre Ciudad (Catálogo SEPOMEX) ';
COMMENT ON COLUMN codigo_postal.d_cp IS 'Código Postal de la Administración Postal que reparte al asentamiento';
COMMENT ON COLUMN codigo_postal.c_estado IS 'Clave Entidad (INEGI, Octubre 2012)';
COMMENT ON COLUMN codigo_postal.c_oficina IS 'Clavel del Código Postal de la Administración Postal que reparte al asentamiento';
COMMENT ON COLUMN codigo_postal.c_cp IS 'Campo vacío';
COMMENT ON COLUMN codigo_postal.c_tipo_asenta IS 'Clave Tipo de asentamiento (Catálogo SEPOMEX)';
COMMENT ON COLUMN codigo_postal.c_mnpio IS 'Clave Municipio (INEGI, Octubre 2012)';
COMMENT ON COLUMN codigo_postal.id_asenta_cpcons IS 'Identificador único del asentamiento (nivel estatal)';
COMMENT ON COLUMN codigo_postal.d_zona IS 'Zona en la que se ubica el asentamiento (Urbano/Rural) ';
COMMENT ON COLUMN codigo_postal.c_cve_ciudad IS 'Clave Ciudad (Catálogo SEPOMEX)';
Copiamos estas instrucciones y las ejecutamos en el Editor SQL:
Si todo esto se ejecutó de manera correcta importaremos la información de nuestro archivo de texto a la tabla recién creada. Para esto abriremos el SQL Shell
Entraremos a la Base de Datos sepomex y ejecutaremos la siguiente instrucción (suponiendo que nuestro archivo se llama CPdescarga.txt y se encuentra en C:\Users\Public\Documents):

COPY codigo_postal FROM 'C:\Users\Public\Documents\CPdescarga.txt' DELIMITERS '|' CSV;
(Nota: Esto lo hacemos desde el shell y no desde el editor SQL debido a que el archivo de texto que descargamos se encuentra codificado en ANSI, mientras que el editor SQL ejecuta las sentencias en UTF8)
Y listo! Tenemos nuestra tabla con los Códigos Postales de todo el país.
El siguiente paso es realizar el mapeo a la Base de Datos usando Hibernate.




jueves, 4 de agosto de 2011

Personalizar tono de mensaje de Texto en Android

Si tienes un celular con Android, has podido notar que al querer personalizar un tono de mensaje de texto (sms) solo nos aparece una lista con tonos precargados y no hay algún botón que nos permita establecer un tono nuestro (por ejemplo alguna canción en formato mp3).



Para poder hacerlo nos dirijimos a la tarjeta de memoria SD de nuestro celular y allí en /media/audio/notifications (en sistemas basados en Unix) o X:\media\audio\notifications (en sistemas Windows, donde X es el nombre de la unidad de memoria) agregamos las canciones que pretendemos establecer como tonos de sms.
Y Listo, ahora volvemos a intentar y en la lista de tonos precargados aparecerán la canción o canciones que hayamos agregado.

Nota 1: Si no existe la ruta, la creamos.
Nota 2: Si después de realizar estos pasos no aparece la canción en la lista de tonos, reinicia tu telefono y verifica nuevamente.

sábado, 30 de julio de 2011

Factory Reset a HTC Evo 4G

Nota: La siguiente información es válida para el HTC Evo 4G, pueden variar los botones de acuerdo al modelo de tu celular.


Es muy común que teniendo un teléfono celular éste llegue a bloquearse, ya sea porque olvidamos la contraseña o porque alguien estaba curioseando e ingresó el código incorrecto demasiadas veces.
El sistema operativo Android se caracteriza por su Unlock Pattern, el cual consiste en trazar un patrón predefinido siguiento una secuencia de puntos para poder hacer uso de nuestro teléfono.

Si ingresas varias veces un patrón incorrecto (no estoy seguro de cuántas sean ya que no fui yo quien lo bloqueó), tu celular se bloquea y aparecer el mensaje "Se han realizado demasiados intentos incorrectos de creación del patrón” y te pide autenticarte con una cuenta de Google asociada con el teléfono. Si, como es mi caso, no tienes idea de cuál es la cuenta asociada a tu HTC Evo 4G, puedes reestablecer tu teléfono a la configuración de fábrica. Teniendo siempre en mente que al hacer esto se borrará todo lo que tenías almacenado en la memoria interna de tu smartphone (fotos, configuraciones, contactos, aplicaciones, etc).

  1. Lo primero es apagar por completo el teléfono, quitarle la batería y volverla a insertar.
  2. Mantener presionado el botón Volume Down, al tiempo que se presiona y se suelta el botón Power.
  3. Se mostrará un menú con las opciones Fastbook, Recovery, Clear Storage y Simlock.
  4. Usando el botón Volume Down, nos posicionamos en Clear Storage y para seleccionarlo presionamos el botón Power.
  5. Ahora nos pedirá una confirmación: el botón Volume Up para YES y el botón Volume Down para NO.
Si seleccionaste un YES en el paso final, tu telefono reiniciará con las configuraciones por defecto y tendrás que volver a configurarlo de acuerdo a tus gustos y necesidades. Yo recomiendo tener siempre los contactos sincronizados con tu cuenta de Gmail, con lo cual aunque hagas un Factory Reset o cambies de teléfono, tus contactos no se perderán. Espero que les sirva esta información.

miércoles, 29 de junio de 2011

¿Cuánto cuesta cambiar al mundo?

"20 smartphones… 5 mil dólares
Casos legales…. 1 millón de dólares
Servidores en 40 países… 200 mil dólares
Donaciones perdidas… 15 millones de dólares
Arresto domiciliario… 500 mil dólares
Cambiar el mundo como resultado de tu trabajo… no tiene precio"

What Does it Cost to Change the World? from WikiLeaks on Vimeo.



jueves, 23 de junio de 2011

Montar BD Oracle en Solaris 10

Notas:
  • Los nombres de los discos (c1t1d0, c1t2d0) son de referencia, pueden no ser los mismos al crearlos en la máquina virtual.
  • Esta práctica se hizo sobre VMWare Work Station
  • Se necesita tener el usuario 'oracle', además de los grupos oracle, oinstall
  • Tener listo el GRID y la herramienta ASM


Lo primero que necesitamos para esta práctica es, estando apagada la máquina virtual, agregar 2 discos (SCSI recomendado), para no gastar tanto espacio configura cada uno con 5GB:
-Clic derecho a la máquina virtual -> Settings -> pestaña Hardware -> botón Add... -> (Aquí creamos un disco SCSI de 5GB). Esto mismo lo repetimos para el agregar el segundo disco duro.

-Ahora encendemos Solaris, nos loggeamos como root. Para checar que ya reconoció los discos recién agregados, abrimos una terminal y con el comando 'format' nos debe mostrar los nuevos discos, así como sus nombres de dispositivos: c1t1d0 y c1t2d0 (Ctr + C para salir de la utilería format).

-En caso de que no nos detecte los discos en este punto, podemos usar el comando 'devfsadm'. Luego volvemos a checar si ya nos lo detectó usando el comando 'format.'

-Crear los zpool:
# zpool create DISK1 c1t1d0
# zpool create DISK2 c1t2d0

-Crear los zfs:
# zfs create -V 4GB -b 8K DISK1/DATA
# zfs create -V 4GB -b 8K DISK2/FRA

-Crear las ligas simbólicas:
# ln -s /dev/zvol/rdsk/DISK1/DATA /dev/rdsk/DATA
# ln -s /dev/zvol/rdsk/DISK2/FRA /dev/rdsk/FRA

-Asignar los permisos necesarios
# chmod 775 /dev/rdsk/DATA
# chown oracle:oinstall /dev/rdsk/DATA

# chmod 775 /dev/rdsk/DATA
# chown oracle:oinstall /dev/rdsk/FRA

-Agregar un projecto, según la cantidad de memoria asignada a la máquina virtual. Por ejemplo, asignaste 3GB para tu máquina virtual, crear un projecto con 2GB.
# projadd -U oracle user.oracle
# projmod -s -K "project.max-shm-memory=(priv,2GB,deny)" user.oracle

-Ahora dejamos a root y nos loggeamos como oracle (desde la interfaz gráfica, NO SOLO DESDE LA TERMINAL). Abrimos una terminal y corremos la herramienta ASM, es necesario tener configuradas las variables de ambiente:
$ export ORACLE_SID=+ASM
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid
$ export PATH=$ORACLE_HOME/bin:$PATH
$ asmca

-Esto nos abrirá el asistente de ASM, aquí crearemos los grupos. Basta con dar clic en el botón Create. Llamaremos al nuevo grupo ZDATA, seleccionamos External, elegimos nuestro zfs que creamos (DATA de 4GB) y clic en OK.
Volvemos a dar en Create, ahora se llamará ZFRA. Será External y elegimos el zfs de FRA (4GB).

-El siguiente paso será crear la BD sobre los zfs. Configuramos las variable de ambiente necesarios y ejecutamos el asistente DBCA.
$ export ORACLE_SID=orcl2
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ dbca

-Nos aparecerá el asistente, ya solo elegimos los valores que nos convengan y listo. El nombre de la instancia será orcl2, tal como se llamó la variable ORACLE_SID. Seleccionaremos ZDATA y ZFRA.



Basado en los apuntes de:
*Hernando Cruz C.
*Edgar Armando Díaz C.
*Karito Medina V.
*Gezzer García S.

jueves, 12 de mayo de 2011

Bunbury: Temas inéditos en Facebook [MF]



Bunbury ofrece un tema exclusivo cada 15 días a sus seguidores de Facebook, pero si no bajaste o no escuchaste las canciones en los días que se publicaron desde aquí las puedes descargar.
Este post se irá actualizando conforme vayan saliendo más canciones en su página de Facebook.

Las ligas están en Mediafire, acaso hay otro???





4. El porqué de tus silencios: http://www.mediafire.com/?wy1r4biahszjuz3

jueves, 7 de abril de 2011

FCE Result [Libros y audio]


Este es el pack de FCE Result [Editorial Oxford], para aquellos que ya tienen un nivel de inglés intermedio y quieren prepararse para presentar el FCE. Los libros están en pdf y el audio en MPEG-4, por lo que la calidad del audio es excelente.

Vienen las respuestas a todos los ejercicios (Workbook, Studentbook, Tests) ya saben solo para corroborar !!


LINKS: