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.

lunes, 4 de julio de 2011

¡Vámonos a Juárez!

Como todos los mexicanos sabemos, Ciudad Juárez es una de los lugares con más violencia e impunidad de nuestro páis. Diariamente se reportan robos, asesinatos y narcotráfico sin que alguien haga algo significativo para solucionarlo. Sin embargo desde hace un par de meses la idea de visitar esta ciudad me pareció bastante interesante, se preguntarán ¿Acaso está loco? Y tal vez así sea.
El pasado 26 de abril de 2011 se inaguró la Universiada Nacional 2011 y tuvo como sede a la Universidad Autónoma del Estado de México. Como buen universitario no me podía perder las competencias, principalmente aquellas donde las hermosas atletas dominaban el paisaje. Y donde esto se hizo notar más fue en el voleybol femenil.
Primero fue el voleybol de sala, partidos en los que sorprendía la encantadora mezcla de agilidad y belleza de las competidoras. En el primer partido que me tocó observar estaba Ciudad Juárez contra alguien que no recuerdo (no es por mala onda), y desde los primeros minutos mi mirada se centró en la número 19. No sabía su nombre ni su edad ni sus gustos, pero estaba decidido a buscarla en Facebook a la primera oportunidad. Luego de un par de sets, mis amigos y yo no hablábamos de otra cosa que no fuera de lo lindas que eran las chavas de Cd. Juárez, cada uno hipnotizado por una jugadora distinta,. Yo por la número 19.
La final de voleybol de sala se disputó entre Juárez vs. Nuevo León, en donde ganaron las segundas, pero lamentablemente no pude acudir a verlo. No obstante, me enteré de que la número 19 (en este momento ya sabía que su apellido era Rivera) participaría también en voleybol de playa y supe que iría a todos sus partidos sin importar mis clases. Siempre he tenido mis prioridades bien definidas. En dichos partidos llegué bastante temprano y puedo presumir que acudí a todos donde partició Ciudad Juárez, obviamente echando porras con el inolvidable grito entre cada saque: "Heeeeeeeeeeeeeeermosa!". Para este momento ya había averiguado su nombre: Grecia Rivera, incluso ya le había enviado una solicitud en Facebook pero no había sido contestada.
Al terminar cada partido iba a felicitarla (afortunadamente ganó todos por lo que la felicité muchas veces :D) y me tomaba fotos con ella. En un principio me imaginé que era sangrona, fresa y tal vez un poco odiosa; pero desde el primer saludo me di cuenta que estaba equivocado. Tenía una hermosa sonrisa, una voz gruesa pero muy acorde con su linda personalidad y lo mejor de todo, ¡era bien chida y contestaba de una manera tranquila y alegre a la vez! (todo lo contrario a una chava de Toluca). La buena noticia es que finalmente ganaron el oro en esa categoría y la mala noticia es que regresaron a Cd. Juárez ese mismo día.
Afortunadamente sí me aceptó en Facebook y pude ver (sin hartarme) todas sus fotos. Subí las que tenía de ella y me alegraba cuando les ponia 'Me gusta'.



Les dejo las fotos que tomé:


Después decidí buscar más información de ella y además de lindas fotos y demás tipos traumados con ella (como yo) me econtré esto en YouTube:



Así que ya saben, apoyemos al voleybol nacional, especialmente a las competidoras de Ciudad Juárez. Ella es una de las representantes de la selección nacional. A mi parecer, un lugar muy merecido. Bueno, y para concluir ¿Me voy o no me voy a Juárez?

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.

viernes, 10 de junio de 2011

Solicitando la visa para EEUU

Esta vez publicaré algo diferente, una experiencia que tuve hace unos 4 meses (febrero 2011) con el fin de que quien esté interesado en solicitar una Visa a EEUU no se sienta tan perdido al ir al consulado como lo estaba yo (sin idea de qué onda en ese lugar).

(sólo aplica para el consulado en el DF)

*Bueno, pues solo como nota, si van a hacer su trámite en el consulado del DF, la fila NO ESTÁ SOBRE REFORMA, sino dando vuelta a la cuadra frente al hotel Sheraton.

*Créanme que no exagero cuando digo que lleguen con una hora de anticipación, pero si por algún motivo se les hizo tarde no se quieran matar, no pasa nada (me consta).

*El trámite en el consulado no es tan rápido como en el CAS, así que destinen unas 4 o 5 horas para todo el proceso.

*Primero llegan y se agregan a una de las varias filas que se van formando. Éstas van avanzando muy (muuuuy) lentamente; conforme se van acercando a la entrada una persona del consulado les va sellando los papeles. Éstos deben ser:
– El código de barras (sí, el mismo que les sellaron en el CAS)
– Pasaporte
– Comprobante bancario

*Tambien es necesario mencionar que de preferencia no lleguen con ningún dispositivo electrónico (celulares, memorias USB, llaves de auto con control, cualquier tipo de cable), maquillajes, comida, etc. ya que éstos los depositan en la entrada. Y no quedrán depositar su blackberry nueva en una bolsita ziploc bien fea y gastada y que además no les den ninguna seguridad de que al salir ésta seguirá dentro de la bolsita. Evitar cinturones grandes, chamarras muy abultadas, abrigos, ya que en la entrada se deben despojar de estos para la revisión.

(En este punto ya están entrando al edificio)

*En la entrada hay personas que les vuelven a pedir los mismos 3 documentos para engraparlos y agregarles el número de la ficha.

*Depositan sus pertenencias en una charola para checarlas por rayos X (supongo).

*Pasan a la SALA 1, hay unas “pantallas” en frente que muestran el número de ficha actual y en qué número de escritorio deben pasar. Sean pacientes ya que pueden estar aquí alrededor de uan hora. Oh, sorpresa en este lugar YA HAY BAÑOS (afuera, en la fila, no) y hasta una tiendita donde pueden comprar botanas, refrescos y demás chatarra; obviamente pagando 10 veces su valor original.

*Si ven que su número está próximo, aún no se martiricen ya que en ese lugar aún no es la entrevista, sino un proceso que la neta no entendí: cuando llegó a mi número me pasaron al escritorio y el tipo sólo me preguntó que si yo era “Paquito Buendía Alegría”, tecleó algunas cosas en su computadora y me dijo que pasara a la fila de al lado a tomarme las huellas (Sí, otra vez las huellas)

*Pasan a la fila indicada, esperan unos 10 mins a que llegue su turno y toman las huellas de los “dedos gordos” (es que no recuerdo su nombre en este momento jaja)

*Después de esto, el tipo que tomas sus huellas hace unas anotaciones en su hoja del código de barras y los manda a la SALA 2

*Aquí toman asiento nuevamente y esperan alrededor de una hora a que llegue su turno nuevamente. Otra vez hay unas “pantallas” enfrente que muestra el número de ficha y la ventanilla para pasar (Así es, en esta ventanilla ahora sí es la entrevista)

*Estén atentos cuando se vaya acercando su turno, ya que (por alguna desconocida razón) no siempre van en orden, sino que se pueden saltar de la 428 a la 433 y luego a la 430 y después a la 435. OTRA VIVENCIA PROPIA: no se espanten si su turno pasa sin darse cuenta, sólo es cuestión de avisarle al tipo que les tomó las huellas de los “dedos gordos” que su turno ya pasó y éste les dará un nuevo número de ficha para que vuelvan a pasar su número en la pantalla.

(en este momento llegan los nervios y sienten que la presión se eleva un poco y están analizando qué les van a preguntar y qué van a contestar)

*Ya que llega su turno pasan a ventanilla, el cónsul les pide sus documentos (si, otra vez los mismos 3).

EN ESTE PUNTO ES DONDE SEGURAMENTE VA A VARIAR DEPENDIENDO DE VARIOS FACTORES ASÍ QUE SÓLO LES DIRÉ QUÉ ME DIJERON A MÍ EN PARTICULAR.

Cuál es su nombre completo?
cuál es el motivo de su viaje?
cuál es la duración de su viaje?
Tiene herman@s, padres que vivan en EEUU?
usted estudia, verdad?
Qué nivel de estudios son?
En qué escuela estudia?
En qué nivel de su carrera está?
Traé consigo una credencial de estudiante?
Vive con sus padres?
A qué se dedican sus padres?
Cuánto gana su papá?
Qué materias lleva en este semestre? (ES ENSERIO EHHHH)
En cuánto tiempo tiene planeado terminar su carrera?
Viajará sólo?
Ok, su visa ha sido aprovada, le llegará de 7 a 10 días hábiles a la oficina de DHL que haya elegido. Puede retirarse. (si te la aprueban se quedan con tu pasaporte)

… Sé que parecen muchas preguntas pero créanme que no tardó más de 4 mins. Y saben qué?? que no me pidió algún documento extra más que mi credencia de la escuela (ni constancias, ni cuentas bancarias, ni cosas de propiedades, etc; CON ESTO NO DIGO QUE NO LOS LLEVEN CONSIGO). No se pongan nerviosos, o al menos no lo muestren. TODO ES EN "ESPAÑOL"

POR ÚLTIMO QUIERO AGRADECER A ESTE BLOG POR LOS CONSEJOS QUE ME DIÓ, ENSERIO ME SIRVIÓ LO DE CÓMO IR VESTIDO. YA QUE SÍ HAY GENTE QUE EXAGERA CON SU ATUENDO, LLEVAN UN ANILLO EN CADA DEDO, 20 COLLARES, 5 ARETES EN CADA OREJA, ETC. Así que repito el consejo que dieron en esa página, si no te vistes diariamente de traje, no lo uses ese día ya que inmediatamente se nota.

Espero les sirva mi reseña para no llegar tan perdidos allí. Un saludo y que Dios los bendiga a todos.