[Tip] Si se cae tu servidor DNS

DNS

DNS

Seguramente más de una vez has tecleado alguna página web y no ha entrado. Sin embargo, programas como el Messenger siguen funcionando.
¿qué está pasando? Muy posiblemente tu servidor DNS se ha caído.

No voy a entrar en detalles sobre los servidores DNS, simplemente voy a decir que son como una guía de teléfonos, resuelven nombres a direcciones IPs.

La manera más fácil de comprobar si tu servidor DNS sigue en pie es hacerle un ping, y ver si responde. Si sale un error tipo timeout o host/net unreacheable, efectivamente, está caído.

La solución más sencilla para volver a tener “Internet” (Internet sigue habiendo pero sin “agenda”), es especificar un nuevo servidor DNS mientras el nuestro se recupera (o recuperan). No hace más de unos cuantos meses era necesario memorizar algún DNS público, como el de Telefónica, Orange, ya.com, etc o utilizar otro equipo con Internet para buscar otra dirección DNS (o la propia del equipo).

Un día los chicos de Google pensaron que tener una dirección IP fácil de recordar, podría ayudar y mucho. Crearon el servidor DNS 8.8.8.8. Bastante sencillo de recordar, ¿no? (también disponen del 8.8.4.4).

Ahora sólo nos basta cambiar la dirección IP del servidor DNS caído por el de Google (u otro). En GNU/Linux (independientemente de nuestra distribución favorita), para la resolución de nombres públicos se usa el fichero /etc/resolv.conf. Normalmente este fichero es generado en el arranque por los scripts de red, luego podemos sobreescribirlo sin problema (si no es tu caso, ya sabes, backup). Con la siguiente linea (en Ubuntu) ya tendríamos nuestro servidor DNS de emergencia.

 sudo echo  "nameserver 8.8.8.8" > /etc/resolv.conf

Bueno espero que os sirva y no os quedéis sin “Internet”.

Translate to:English
MenefanteMenéame TwitterTwitter

Anuncios

Exportar e importar firmas digitales en GNU/Linux

Firma digital

Firma digital

Ando liado con trámites tributarios.

La firma digital es una de esas cosas de la tecnología que te hace preguntar: ¿cómo hemos podido vivir sin esto? Puede parecer una exageración, pero el hecho de poder hacer trámites de la Agencia Tributaria o de asuntos relacionados con tu ayuntamiento desde el PC de tu casa, no tiene precio. No tienes que pedir horas en tu trabajo, no haces colas, es muy rápido e indoloro. La pega que tiene es el soporte técnico. Tiene un soporte horrible. A pesar de haber cursado asignaturas en la carrera donde se ven los certificados, firmas y demás engendros digitales, tengo que reconocer que me cuesta un poco tanto “palabroto” técnico (X.509, PKCS12, PEM, etc). No quiero imaginar a mi madre haciendo esto.

El asunto es que ayer probé a usar mi firma digital y comprobé que estaba caducada (tenia que haberla renovado por la propia web meses antes de que caducara). Era necesario volver a solicitar una nueva. El proceso es sencillo:

  1. Entras en la web de CERES y solicitas un certificado de usuario (no sé como irá el tema de los DNIe)
  2. Te piden el NIF y te generan un código que tienes que guardar.
  3. Es necesario que te presentes con el DNI en la oficina más cercana que expida firmas digitales (hay un buscador que calcula la más cercana a tu dirección).
  4. Te presentas en la oficina, enseñas el código, el DNI y firmas el contrato de adhesión.
  5. Vuelves a tu casa, te conectas a la web de CERES y especificando tu DNI y el código previamente asignado, ¡voila! el certificado se instala en tu equipo.

El proceso anterior es la teoría. En la práctica hay una letra pequeña que cuando se lee ya es tarde. Cuando vuelves de firmar el contrato y pinchas en la opción de descarga, aparece un párrafo que dice: “El certificado se descargará en el navegador y PC con el que solicitó el certificado“. El gráfico “Uppss” aparece en mi cabeza: “PC el de siempre…, navegador web… Google Chrome Beta para GNU/Linux“. Por supuesto, Chrome todavía no está preparado para gestionar este tipo de certificados personales. La cuestión es que, aún sabiendas de que posiblemente no iba a funcionar, pulsé en “Descargar“. Ni el puntero del ratón se movió. Indagando un poco en cómo gestiona Chrome los certificados, me doy con una utilidad muy potente, certutil.

Resulta que Chrome guarda los certificados bajo la ruta ~/.pki/nssdb/ en varios ficheros que suelen ser bases de datos SQLite3.

Uno de los cometidos de certutil es mostrar los certificados que existen en esa base de datos. Para ser exacto, esta línea me mostró todos los certificados

certutil -L -d sql:~/.pki/nssdb 

Qué sorpresa me lleve cuando comprobé que la última línea correspondía con mi certificado personal. Resultó que cuando le di a descargar el certificado, Chrome lo guardo ahí.

Genial. Si el certificado está ahí, seguro que puedo exportarlo e importarlo en Firefox (que sí esta soportado). ¿Cómo?

Después de buscar un poco, encontré una opción para exportar certificados para LDAP que usaba la utilidad pk12util.

El nombre de esta utilidad viene del formato de documento, PKCS12, se trata simplemente de una forma de codificar un certificado digital que contiene tu clave pública y privada mediante una contraseña para que nadie te pueda usurpar. Era necesario por tanto establecer una contraseña y guardarla en un archivo (por ejemplo, /tmp/clave”). La sintaxis que usé para exportar mi certificado fue:

 pk12util -d sql:~/.pki/nssdb -n "<nombre-certificado-mostrado-por-certutil>" -o <nombre-fichero-salida>.p12  -w /tmp/clave -k /tmp/clave 

El mensaje de salida fue: pk12util: PKCS12 EXPORT SUCCESSFUL

Faltaba la prueba de fuego: ¿funcionará en Firefox?¿cargará por fin la Oficina Virtual?

Podéis imaginar que sí 🙂

Firefox, después de solicitarme la clave que especifiqué en “/tmp/clave”, importó sin problemas el certificado y la oficina virtual por fin entró.

No sé si este post servirá para alguien o no. Por lo menos dejó registró en la web por si algún día necesito recurrir a estos comandos (ya sabéis eso de volver a tropezar con la misma piedra).

He obviado algunos detalles sobre la importación y solicitud de firma digital. En la Web hay bastante información al respecto. No obstante, si teneis dudas, preguntad 🙂

ACTUALIZACIÓN:

La versión 10.0.648 (y posterior) de Chrome soporta ya la gestión de  certificados.

Translate to:English
MenefanteMenéame TwitterTwitter

Café con Buzz

Café con buzz

Café con buzz

No se habla de otra cosa en los cafés.

Google Buzz ha llegado de repente y (para muchos) sin avisar. Hoy en los desayunos de muchas empresas, sólo se hablaba de Buzz. La gente comenta que tienen seguidores que apenas conocen, que vuelven a hablar con antiguos compañeros de facultad, que pueden conectar su Twitter y su blog (de Blogger claro). Hay opiniones para todos gustos y clases.

Voy a enumerar mis impresiones.

  • Buzz es competencia directa (y dura) a Twitter. Este punto es de los más debatidos en la Red. Para mí es competencia porque implementa el concepto de “seguidor y seguidos“, que si no estoy equivocado, es concepto exclusivo de Twitter. Además da pié al microblogging sin límite, no sólo 160 caracteres (¿qué es mejor?). Para colmo, al integrarlo en GMail está captando muchos usuarios que no son de Twitter, es decir, está quitando nicho potencial a Twitter. El último (por ahora) indicador de competencia que veo es la movilidad. Buzz va a estar integrado en el anillo de aplicaciones de Google (Google Maps, Place Page) que corren en el PC desktop y en el móvil, dándole valor añadido a su Android. Aporta valor añadido respecto a Twitter: ¡es posible postear el estado mediante voz! Creo que ahora mismo el Consejo de Twitter estará reunido de urgencia preparando su declaración de guerra.
  • Entre GMail y Wave. Para muchos Google Wave ha sido el EPIC FAIL del año pasado. Demasiado consumo de red (puede que por eso este empezando a ser un ISP) y que el hype de la beta por invitación tampoco fué como esperaban pueden ser los motivos del fracaso. ¿Qué sentido tiene un sistema colaborador si no hay nadie con quien colaborar? Parece que han aprendido la lección y ya lo usuarios de Buzz tienen seguidores desde el primer uso (yo era seguidor de 14).  Es posible que si Buzz se asienta, pueda ser luego el nexo necesario para empezar a usar Wave (cuando el contexto lo permita). Buzz es tiempo real pero no vemos los keystrokes de nuestros seguidores (gracias a Dios) como ocurria en Wave (que desperdicio de ancho de banda).
  • Potencial monopolio. Esto no es nuevo, pero la llegada de Buzz y la integración de todos los servicios de Google como orígenes de datos: Blogger, GTalk, Picasa, YoutubeReader puede verse como monopolio. También cuenta con Flickr y Twitter, pero claro, Flickr es un buen origen de fotos y Twitter es la miel del tráfico de la red. Android está muy integrado con los servicios de Google, pero ¿qué pasa con el resto? Rápidamente me viene a la cabeza el jucio antimonopolio que se montó cuando Windows venia con Internet Explorer de serie y Netscape se fué al traste. Google debé de tener muy buenos amigos políticos porque pocas acusaciones legales sobre practicas de monopolio he escuchado.
  • Facebook. Ni rastro sobre la red social más grande del mundo. Integra Twitter y Facebook no. ¿será Buzz un Facebook a base de añadirle servicios poco a poco? Ahora mismo sería relativamente trivial añadir pequeños juegos (como un ajedrez) a Buzz (copy/paste/refactor desde el código de Wave). Es más, ¿qué pasaria si Google añade/compra Farm Ville y lo integra en Buzz?¿cuánta gente entra en Facebook sólo por eso? Ojo ojito.
  • Botón “Me gusta”. Me gusta el botón “me gusta”. Si os habéis fijado, en cada cuadro de mensaje de Buzz, aparece la opción “Me gusta”. ¡Vaya forma de segmentar el tráfico! Acaban de ahorrar bastantes watios en los servidores que hacen data mining a la vez que separan el grano de la paja. Tonta pero buenísima idea.
  • No me gusta. No me gusta que envie un mail cada vez que una mariposa aletea ni que por defecto decida por mí a quién o no sigo.

Bueno, esto es lo que pienso sobre Buzz, con sólo unas horas de uso. ¿lo seguiré usando dentro de 6 meses? En Wave hace ya semanas que ni entro 🙂

Ahh, se me olvidaba, como todo producto “Made-in-Google” y ubicuo, ya tenemos disponibles las APIs (ya hay hasta un plugin de Buzz para WordPress).

Translate to:English
MenefanteMenéame TwitterTwitter

PlayLab ’10

PlayLab

PlayLab

El pasado domingo 7 de Febrero asistí a la clausura y presentación de proyectos del PlayLab.

PlayLab es un taller de videojuegos experimentales o conceptuales con mucho arte de por medio.

Ha sido posible gracias al esfuerzo de Flavio Escribano, los colaboradores y la financiación de PlayStation.

El desarrollo de los proyectos se ha realizado en MediaLab Prado (al lado del Caixa Forum Madrid).

De los ocho proyectos seleccionados me han gustado como profesional y usuario:

  1. The Pingus Plasticiline Experience
    La experiencia se basa en el clon GPL del clásico título “Lemmings“, Pingus. El gameplay es sencillo. Primero se diseña un mapa sobre una cartulina usando unos patrones que especifica el tipo de material (pared, suelo, agua, etc). Luego empieza la partida. Usando plastilina de colores se definen las diferente acciones a realizar por nuestros pingus. Así por ejemplo se use puede usar un círculo rojo para indicar a los pingus que escalen una pared.
    Desde el punto de vista técnico, se requiere de un proyector, un PC y un pequeño software de reconocimiento (intuyo que basado en color segmentation).
    Creo que este proyecto puede tener una buena acogida por los
    centros de día, colegios e institutos
    , dada su alta interacción y la necesidad de resolver puzzles (grandes estimuladores del cerebro).
  2. Homeward Journeys
    A este proyecto lo llamaría: Teatro 2.0.
    ¿os acordáis del Monkey Island, Maniac Mansion o algún Indiana Jones? Pues eso en carne y hueso. La idea es hacer un teatro donde se le da opción al espectador de guiar al personaje seleccionando diferentes acciones a realizar. Una correcta escenografía ayuda al espectador mostrando la información relevante sobre fondo (como si de un OSD se tratase).
    Sin duda este proyecto puede atraer a los más jóvenes a las butacas de los viejos teatros.
  3. Audiogames
    ¿alguna vez has intentado salir de un laberinto sin poder ver? Este es el objetivo de Audiogames. El jugador sólo se orienta en el laberinto por medio de sonidos que provienen de unos altavoces distribuidos estratégicamente. El prototipo está desarrollado usando OpenCV para PureData y el Blender Engine.
    Este proyecto tiene un gran potencial social, desde la
    concienciación de los videntes, a la guía por espacios públicos para invidentes.
  4. The Mexican Standoff
    Sin duda el proyecto más heavy. Se trata del típico duelo de los westerns donde el ganador (o el que sobrevive) es aquel que primero dispara usando su mente. Para ello se usa un dispositivo capaz de medir la actividad cerebral. El primer jugador que se “relaja” lo suficiente, gana. No me gustaría competir contra una profesor de Yoga. El escenario virtual es una escena específicamente diseñada del Counter Strike Source.
    Creo que este juego causaría furor entre los colegas de veinte/treinta años. Tiene pinta de ser superadictivo.

Espero que estos proyectos que acaban de germinar tengan un largo recorrido y alcancen sus propósitos.
Hay que agradecer el esfuerzo de todos los responsables: ArsGames, MediaLab-Prado y PlayStation por hacer posible esta gran oportunidad.

Espero impaciente la nueva edición del PlayLab 🙂

Actualización: ya se encuentran disponibles los vídeos de las presentaciones de los proyectos. Merece la pena dedicarle un vistazo.

Translate to:English
MenefanteMenéame TwitterTwitter

Android 101

Android logo

Android Logo

Desarrollando para Android ando.

He empezado a desarrollar para Android por pura necesidad. El origen de dicha necesidad se encuentra en el browser de Android. Os lo explico.

Resulta que haces una semanas empecé el desarrollo web para Android. Estaba haciendo un formulario de registro y es necesario que el usuario pueda subir una fotografía. Qué sorpresa me llevé cuando al previsualizar el formulario, el campo destinado para seleccionar el fichero mostraba: “Uploads disabled“.

¡Qué chasco! Sabía que el Mobile Safari de iPhone/iPod no lo permitía… pero ¿tú?¿Android?

En fin, después de buscar en opciones de seguridad sin éxito y ver los cientos de “WTF!” que circulan por los foros del androide, comprobé que iba a necesitar a empezar a desarollar con el Android SDK. Android me ha obligado ha usar su SDK, desarrollar una aplicación y subirla a su Android Market. Me cuestiono el porqué de la deshabilitacion de los uploads. ¿sera por cuestiones de capacidad? ¿O más bien cuestiones de marketing?

Lo primero que hice fue entrar en la web de Android, bajarme su SDK, bajarme el Eclipse, preparar el entorno, hacer un proyecto “hello world” y ejecutarlo en el emulador.

Para hacer estos pasos no me llevo más de 2 horas y media contando con la descarga. El tamaño aproximado de mi directorio de trabajo ronda el giga (Java+Eclipse+Android).

Para estar más tranquilo psicológicamente, queria comprobar que el hello world se ejecutaba sin problemas en mi HTC Magic. Cogí un cable comercial USB-micro, lo conecté, le dí a “Ejecutar” y de repente apareció un dialogo con el número de serie mi smartphone. Se ejecutó sin problemas.

Antes de empezar a codificar ni una línea si quiera, tenía muchas dudas sobre el proceso de subida y aprobación de aplicaciones al Android Market. Resulta que el proceso no es tan complejo ni largo como el análogo para el App Store. Eso sí, el pagar no te lo quita nadie. Unos $25 USD  (aprox. 17€). La primera vez que pago algo a Google en 10 años. La verdad es que no me parece caro, menos si lo comparramos con los $299 del App Store de Apple.

Iba siendo hora de teclear algo.

Hay una cosa que tengo clara en todos los desarrollos (libres) que hago: no reinventar la rueda.

El propósito de mi aplicación es bien sencillo: formulario de registro de usuario con subida de fotos, pantalla de login y ejecución del navegador web con una redirección.

Decidí que la mejor forma de desarrollar la aplicación a la vez de ir aprendiendo Android, era hacer un desarrollo por milestones que se pueden resolver en sesiones de una hora.

Estos fueron los hitos fijados:

  1. Modelo de programación.
  2. Botón con manjeador.
  3. Hacer un Http Post.
  4. Hacer un Http Post multipart/form-data.
  5. Acceso a la galeria de fotos.
  6. Layout de aplicacion.
  7. Creación de sub-actividades.
  8. Lanzar el browser.
  9. Depuración.
  10. Subida al Android Market.

Hoy voy a tratar sólo el primer hito. Considero que es el más importante.Lo primero que hace el gestor de aplicaciones es examinar el AndroidManifest.xml.  Como indica la extensión, se trata de una “Declaración de Intenciones” escrito en XML.

Dos conceptos aparecen en el párrafo anterior:

Activity: es la clase asociada a una pantalla de la aplicación. Al menos es necesaria una clase Activity. Al ejecutar la aplicación, Android se encargará de instanciar una clase de la activity raiz. Android sigue el modelo MVC, modelo-vista-controlador. Respecto a la Activity, tenemos por un lado un fichero XML donde se especifica la UI (vista) y un fichero Java donde se encuentra la clase de nuestra Activity que hereda de Java. El modelo de desarrollo ideal, consiste en crear un layout con todos los elementos de interfaz que usemos y gestionar su callback en la clase asociada.

Intent: para mi es la clase estrella, la clase “no reinventar la rueda”. Lo entiendo como un modelo “ONG”. Una aplicación declara una serie de habilidades que puede hacer en favor de otra aplicaciones mediante Intents. Se entiende mejor con un ejemplo. Si mi aplicación necesita obtener la ruta de un imagen dentro de la Galeria, basta con lanzar un Intent, especificando nuestro anhelo “Eh,alguien puede sacar el diálogo de la galeria y devolverme la ruta del fichero que el usuario ha clickeado” (es casi algo así).

Hay otros tipos de clases, como servicios en background, pero creo que estas son las más usadas.
Os dejo el enlace de un ejemplo donde se usan.

En la siguiente entrega, empezaremos a darle forma a la aplicación: “Hello, uploads“.

Translate to:English
MenefanteMenéame TwitterTwitter

[Tip] Direcciones IPs virtuales

Direcciones IP virtuales

Direcciones IP virtuales

Seguramente sabréis que la dirección IP es una entidad lógica y que la dirección MAC es un identificador hardware único asociado a un dispositivo.

Esto quiere decir que, si tenéis una tarjeta de red, ésta tendrá una dirección MAC puesta por el fabricante (tipo: XX-XX-XX-YY-YY-YY) y una dirección IP asignada a mano o mediante DHCP.

En GNU/Linux es posible asociar múltiples direcciones IPs a una única interfaz de red. A esto se le conoce como interfaces virtuales. Se usa principalmente para poder acceder a diferentes redes IP simultáneamente.

El procedimiento es sencillo, supongamos que actualmente nuestra NIC eth0 tiene la dirección 192.168.1.10/24 y queremos poder comunicarnos con la red 10.10.10.x/24 usando la dirección IP 10.10.10.10. Basta con la siguiente línea:

 sudo ifconfig eth0:1 10.10.10.10 

Podemos añadir más interfaces virtuales sólo modificando el ethX:Y, donde X es la interfaz e Y el numero de dirección virtual.

Espero que si os encontrais en esta situación, os sirva este tip 🙂

P.D. Sé que en Windows es posible tener interfaces virtuales, pero nunca se ha presentado la necesidad.

Translate to:English
MenefanteMenéame TwitterTwitter