Por mí puedes coger tu 5% y…

Es que le dan ganas a uno de bajarse del mundo en marcha. Es algo cotidiano, pero hasta ayer no reflexioné sobre ello con la calma suficiente. Andaba yo buscando el que considero el mejor libro sobre Java («Piensa en Java», de Bruce Eckel) de librería en librería… Ya no soporto hacer más fotocopias y como se trata de un manual bastante bueno, pensé que sería buena idea comprarlo.

Hacer que los libreros buscaran el ejemplar ya fue una aventura. De hecho, comprar un libro de informática siempre es una experiencia única, aunque la mejor fue cuando intenté comprar «El Proceso Unificado de desarrollo de software»… lo recuerdo porque terminé escribiendo el título en un papel y decía simplemente «quiero ésto». Por cierto, que al final no lo compré. Pirata y estafador que es uno.

Me encontraba, como digo, en la librería. Tenía entre mis manos el ejemplar en cuestión. Unas novecientas páginas de diversión. Y cincuenta y seis euros. Tela. Pero tranquilo, me digo, pregunta al librero, seguro que hay descuento. Así que me acerco cruzando los dedos al mostrador, y pregunto con educación si lo de ser universitario se nota en el precio. Claro, responde el de gafas sonriendo, en plan generoso abuelete. Te hacemos el 5% por ser estudiante.

forges-rector.jpg

Un cálculo rápido me confirma lo peor. Mi mente trabaja (tampoco mucho, no crean) y arroja el resultado 56 x 0,05 = 3 mas o menos. O sea, 53 con el descuento, oh cielos. Entonces empecé a pensar qué narices significa ese descuento por ser estudiante… Así que allí estaba yo, de piedra, en la librería, pensando en qué iba a invertir los casi tres euros (¡uf!) que la Providencia me regalaba por ser estudiante. Pronto comprendí que en nada. Había otro manual que me interesaba. Setenta y cinco de los nuevos euros. Eso sí, con descuento.Claro, luego somos nosotros los niñatosmalcriados que fotocopiamos libros sin piedad, pasándonos por el forro los derechos de autor (y de los que no son autores de nada pero trincan de lo lindo). ¿Para qué quiero ahorrarme ni 3€ una vez que me estoy gastando 56€? Al fin y al cabo son libros, ¿no hay dinero para que podamos comprar bibliografía?

Al final me compré el libro de marras. Con el 5%. Eso son descuentos para la comunidad universitaria y lo demás es tocarse las narices… Tenía que escribirlo. Cinco. Por el…

Vivo

Por fín he regresado de mi periplo aventurero por los montes de Silió, tal y como desveló Misslucifer en los comentarios. No se imaginan lo que me cuesta teclear después de estos cuatro días, incluso me resulta extraño hablar por teléfono… Me voy a ahorrar los detalles de la supervivencia en sí, aunque quiero destacar la belleza embriagadora del lugar y la dureza de la prueba a que nos hemos sometido.

¿Mi estado actual? Físicamente estoy un poco acabado… Mis piernas están cubiertas de cicatrices y rozaduras, mis pies un poco deteriorados (lo justo, suelo cuidarlos con mucho esmero…), alguna ampolla en la mano por el manejo continuado del hacha y del pico, picaduras (arañas y demás familia), y cierto dolor sin importancia en las piernas, hartas de trepar entre piedras. No es mucho, pero sumado a la falta de sueño, provoca que mientras escribo me vaya quedando progresivamente dormido… como contrapartida, me siento mucho más fuerte y he quitado algún kilo del cuerpo… En el plano psicológico me siento seguro y alegre al recordar los detalles más bonitos de éstos días maravillosos.

Lo que en verdad amo de la aventura de aire libre es que nos permite redescubrir el lujo. Saber qué hora es, beber una cerveza fría, dormir en un colchón bajo un techo, comer lo que nos apetezca aunque no tengamos hambre… el placer de beber un vaso de agua se descubre tras haber caminado durante horas sufriendo la sed… A pesar de todo, no quiero aburrirles ahora con las reflexiones que ésta experiencia ha despertado en mí, simplemente anunciarles que en cuanto me recupere volveremos a la carga. Que pasen unas felices vacaciones ;-)

Vacaciones hexagonales

El tercer año de carrera se aproxima a su conclusión, y el número de horas diarias frente al ordenador no ha hecho más que crecer. Ahora lo enciendo nada más levantarme, y creo que lo último que hago por las noches es apagarlo. No es adicción ni vicio, simplemente necesidad… con lo cual es normal que cuando llegan las vacaciones lo último que me apetezca sea pasarme el día delante de la pantalla.

Les cuento ésto porque voy a invertir una parte importante de mis vacaciones en pasar unos días de supervivencia en una bella zona de Cantabria, acompañado de un grupo de amigos. La única obligación que nos imponemos es no llevar teléfono, reloj, ni nada medianamente tecnológico. Evidentemente, tampoco puedo cargar con el portátil. El único artefacto que portaremos será una brújula, porque es imprescindible, y para terminar teniendo que fabricarnos una (cuenco con agua, corcho, aguja imanada) preferimos llevarla hecha de casa…

Va a ser duro, pero me gusta la idea de ponerme a prueba y de romper mis ataduras tecnológicas por unos días. El domingo, si vuelvo con vida (lo cual parece improbable, pero no imposible) intentaré escribir algo coherente, si para entonces no se me ha olvidado la poca informática que sé…

Como me da pena dejarles solos y desvalidos, les voy a enseñar un juego muy sencillo y muy adictivo, por si no saben qué hacer en su tiempo libre. Se trata de algo más del estilo de CPI, pero conociéndoles, sólo es cuestión de tiempo que lo descubran… así que voy a tomarles la delantera.

El juego se llama Hex, y se juega en un tablero de casillas hexagonales (de ahí el nombre). Consiste en que dos jugadores, por turnos, van situando una ficha de su color en una casilla cualquiera del tablero. Gana quien consigue unir antes los bordes pintados con su color. Es muy sencillo, aprenderán a jugar en un minuto. Sin embargo, tiene una profundidad conceptual impresionante, y se asombrarán cuando descubran lo adictivo que es y la cantidad ingente de posibilidades tácticas…

Tablero de hex

Si quieren aprender a jugar, lo cual recomiendo, el artículo de la Wikipedia que les enlazo más arriba es muy explicativo. También en la web de la Ludoteka (donde se puede jugar contra otras personas) hay un artículo sobre el juego muy muy completo. Si le apetece jugar contra su ordenador, uno de los mejores programas es Hexy.

No se trata de un juego muy conocido, pero su belleza es tan sencilla como alucinante… Espero que lo disfrute, yo me entretendré durmiendo bajo las estrellas (o la lluvia, según…). Sean muy prudentes en la carretera, por favor, tenemos que estar todos a la vuelta para seguir pasándolo tan bien :-)

Imagen | Wikipedia

¡Me gusta sufrir!

Como escribió una vez mi admirado Arturo Pérez Reverte, hay días que te dan el artículo escrito. Se sienta uno delante del ordenador con la gota se sangre resbalando por el colmillo… y es que entre unos y otros te dejan frito. Pero les cuento:

Estaba yo navegando, saltando de sitio en sitio con mil pestañitas en el Firefox. Me divertía leyendo estupefacto este artículo, mientras rumiaba la idea de proponerlo para un futuro II Premio Pantallazo Azul, por frases llenas de conspironopio judeo-masónica como la que les regalo:

Así, la LOE se convierte no sólo en adoctrinamiento laicista mediante la «educación para la ciudadanía», sino también en propaganda gay para los niños pagado con dinero de los padres, enseñando opciones que no son las deseadas por los padres.

Al tiempo, me encontraba revisando las estadísticas con un poco de desgana. Ahí estaba… había cambiado de página, pero creí ver algo extraño y retrocedí. Y sí, ahí te tenía… un escalofrío recorrió mi cuerpo cuando ví:

Me quedé alucinado… pensarán ustedes que no algo tan raro, pero es que cuando fui a cotillear a la pagína desde la que había llegado éste visitante me encuentro:

La cita en cuestión es de Treiral_ haciendo la broma sobre sus búsquedas en los comentarios de ésta entrada… vale que pone «fotos de cuerpos exhuberantes», pero es que también pone en el título (bien grande) «búsquedas irreales», y más abajo «dibujos de chicos distraídos por moscas»… yo creo que quien buscaba ésto, cegado por la búsqueda de ese cuerto extraordinario vió lo de las moscas y pensó «vaya, igual descubro nuevos placeres», y picó como un loco sobre mi humilde blog.

Por cierto, se me ocurre que los nuevos ratones deberían incorporar un medidor de presión para que se pudiera analizar la desesperación del usuario en búsqueda de ese tesoro exuberante… con una nueva referencia al término apareceré más arriba en Google, así que creo que éste artículo va a ser contraproducente… pero bueno, en el fondo me divierto tanto que vale la pena :-P

¿Es Internet una base de datos?

¿Se puede considerar Internet como la mayor base de datos que existe en la actualidad? Es una pregunta complicada, pero vamos a contestarla. Vayamos por partes… La primera cuestión es si consideramos o no Internet como una base de datos. Si efectivamente lo hacemos, es sin duda la mayor base de datos que existe en el mundo…

¿Qué es una base de datos? Sin más, es una colección de datos almacenados de forma sistemática. Actualmente, la aplastante mayoría de las bases de datos son electrónicas, debido fundamentalmente a las facilidades que proporciona la informática en el tratamiento de datos (tenemos que recordar que el primer computador de la era moderna fue desarrollado para realizar el censo de los EEUU).

globo.jpg

A la hora de incorporar datos a una recopilación, ésto puede hacerse de muchas maneras. Es decir, para almacenar información necesitamos un «esqueleto», un método que nos diga cómo organizarlo todo. Siendo técnicos, a ésto lo llamamos «modelo de datos».

Hay bases de datos que siguen una organización jerárquica, como formando un árbol. Otras tienen una estructura más dinámica y caótica, y se organizan en forma de red. El modelo que usan la mayoría de las bases de datos es el modelo relacional. De ahí que tal vez le suene haber leído «base de datos relacional». Hay, como digo, muchos tipos de organizaciones, y con probabilidad, irán apareciendo nuevos «paradigmas» con el paso del tiempo. Éstas organizaciones son formas que tenemos de hacer la información clasificable y relacionable automáticamente, no tienen otra utilidad que esa.

Sin embargo, Internet no parece seguir una estructura definida, es más bien una gigantesca maraña desorganizada de información. Según eso, y aceptando la definición de base de datos como recopilación de información estructurada, no se puede decir que Internet sea una base de datos. No obstante, tenemos que abrir un poco la mente y para pensar que no todo lo que no obedece unas normas debe ser sistemáticamente menospreciado: los formalismos están bien para ciertas cosas, pero tarde o temprano se nos terminan quedando pequeños.

Así, cuando se definió el modelo entidad-relación (MER) se pensaba que era la tecnología definitiva. Tuvo que llegar Codd y proponer un modelo relacional (MR) muy consistente para que el MER cayera en desuso… y de igual modo, el paradigma de bases de datos orientadas a objetos (OODB o BDOO) amenaza con destruir el MR… Cómo nos gustan las siglas a los informáticos ¿eh?

Desde mi punto de vista, el concepto base de datos es útil en cuanto hace referencia a una recopilación de datos que permite su manipulación, y no en cuanto expresa un conjunto de datos expresados de acuerdo a ciertos formalismos. Con la popularización de la web, y la generalización del uso de los buscadores queda evidenciado que podemos acceder a datos sin que éstos presenten una estructura formalizada, es decir, un «modelo».

Según un estudio de hace unos años, se calcula que el 80% de los datos que las compañías almacenan se encuentran en forma no estructurada (por ejemplo, en vez de estar en la base de datos se encuentran escritos en un fichero de texto). Lo mismo pasa en la web, donde la estructura brilla por su ausencia. Sin embargo, conocemos herramientas que permiten recuperar información de fuentes no estructuradas basándose en palabras clave y otras técnicas. Y cualquier buscador nos permite obtener información sobre millones de fuentes en pocos segundos, mientras que una consulta a una base de datos relacional de tamaño medio puede llevar cierto tiempo si han de cruzarse datos de tablas.

Ésto no quiere decir que deban dejar de utilizarse las bases de datos convencionales, pero hay que tener en cuenta que muchas formas de almacenar la información sin estructura y recuperarla, eran irreales hace unos años y hoy día son completamente viables. Google Desktop Search nos permite indizar (o «indexar», depende de gustos) archivos de nuestro ordenador y hacer búsquedas casi instantáneas, al igual que en la web. ¿Para qué necesitaría entonces formalizar mis datos en una base relacional?

Podemos ver a una base de datos como una «caja» a la que introducimos una consulta y nos devuelve un resultado. Lo mismo podemos hacer en Internet, aunque eso sí, con mecanismos un tanto diferentes. Pero al final el resultado es muy similar: las dos cajas negras nos devuelven la información que queremos.

Si somos estrictos, Internet no puede considerarse una base de datos. Sin embargo, podemos recuperar información relevante de la red en muy poco tiempo y sin demasiado esfuerzo, que es el objetivo que persiguieron los primeros formalismos para bases de datos. Si la web permite almacenar datos y recuperarlos con ciertos mecanismos fiables, ¿por qué no se le puede considerar una base de datos? ¿qué buscamos con una base de datos que nos proporcione Internet?

Desde mi óptica, podemos entender Internet como una enorme entidad capaz de almacenar un conocimiento incuantificable. Si nos vemos desde fuera, esa enorme maraña de cables y equipos es una verdadera red de neuronas que mantiene milagrosamente vivo un conocimiento inabarcable. No nos preguntemos ¿qué es una base de datos? sino ¿para qué nos sirve a los humanos una base de datos? y veremos que no existen motivos que nos impidan otorgar ésta consideración al invento más influyente de los últimos tiempos.

SFSF (Salón de la Fama Segmentation Fault)

homer.jpg

Bueno, como lo prometido es deuda, aquí tenemos nuestro particular Salón de la Fama. Merecen una mención especial, por su «sobresaliente labor en el campo de la excelencia»:

Misslucifer
Por ser la primera en comprender las complejidades místicas del ISF en el I Reto SF.Treiral_
y
Vicksom
Por ser primero y segundo, respectivamente, en enviar el crackme modificado, tal como fue propuesto en el II Reto SF.

¡Muchas gracias a todos por participar! Éste post se irá actualizando con quienes vayan resolviendo los retos SF, sólo aptos para los verdaderamente atrevidos :-P (Estoy viendo la foto de Homer y no puedo dejar de reir, no sé si será grave… es que tiene una expresión muy cómica)

Referencia cruzada

Una referencia cruzada es una forma de presentar los resultados cuando consultamos varias tablas de una base de datos. Pero no quiero hablar sobre ésto sino sobre el post de Misslucifer:

Windows monarca de España, Borbón sistema operativo

Que me ha impresionado muchísimo por el curiosísimo paralelismo que explica, y que fue introducido en los comentarios de Un poco de Windows, artículo publicado en esta casa en el día de ayer.

Espero que lo disfruten, yo me lo he pasado en grande leyéndolo :-)

El bug de los conguitos

El título ya es impactante… ¿Qué es un «bug»? Pues es un fallo más o menos importante que se cuela en un programa (ya ven, los informáticos somos así de inútiles…). Cuando una aplicación hace cosas raras (falla, termina repentinamente o se bloquea) suele ser debido a los bugs. Aunque la mayoría no supone un problema grave, otras veces son causa de vulnerabilidades que pueden ser explotadas para perjudicar a un usuario.

Por ejemplo, en los antiguos servidores de páginas web (por antiguos digo de hace unos cuatro o cinco años…) cuando se pasaban muchos datos a una web dinámica el ordenador en que estuviera alojada fallaba (los más expertos sabrán que estoy hablando del famoso atauque por desbordamiento de búfer, o buffer overflow). Ésta vulnerabilidad permitía, por ejemplo, ejecutar código remotamente en un servidor público, con los problemas de seguridad que produjo en su momento.

La palabra «bug» viene del inglés «insecto», y se usa en éste contexto porque en los primeros ordenadores, aquellos vetustos gigantes, los fallos eran causados no por mala programación sino por insectos que se introducían en las válvulas y en los componentes electromecánicos y provocaban que funcionaran mal… las cosas que aprende uno… Por cierto, que en la última entrega sobre Cracking usamos un debugger, ¿se acuerda? Éste tipo de programas nos ayuda a eliminar éstos incómodos bichitos de nuestras aplicaciones :-)

conguitos.jpgPero quiero presentarles un bug muy divertido e interesante, que puede utilizarse para colgar cualquier sistema Windows 9x (las versiones 95, 98 y Me) y que impide hacer ciertas cosas en los sistemas Windows NT (la gama 2000 y el XP). Supongo que apenas nadie usa Windows 98 ya, pero si algún día tienen la oportunidad, tecleen en el explorador de Windows la ruta «C:\con\con». El sistema mostrará una pantalla azul y morderá el polvo miserablemente. Si se pierde con tanta versión y tanto Windows, puede leer éste artículo publicado ayer.

Éste error podía ser explotado con un fichero html que intentara abrir esa carpeta. De hecho hubo quien lo creo, y lo puso como página de inicio en Internet Explorer, en dos o tres equipos de un ciber. Cada vez que alguien arrancaba el navegador, el equipo se colgaba. Fantástico, ¿eh?

Si usa Windows XP, en principio está a salvo… pero éste bug dejó sus secuelas, no crea… Vaya a cualquier carpeta de su disco. Ahora intente crear un archivo o una carpeta con el nombre «con». ¿Lo consigue? No sólo pasa con «con», también puede probar con «lpt1». No parece muy posible.

Éstos son problemas clásicos de Windows que han sido explotados amplia y vilmente. ¿A qué se debe? El antiguo MS-DOS, y por tanto los primeros Windows, usan nombres internamente para identificar los dispositivos, salvando las distancias, son como los «dev» de Linux. Por ejemplo el «con» denota la consola, el «lpt1» el puerto paralelo… Cuando se teclea c:\con\con, el sistema trata de buscar un archivo «con» utilizando la consola… simplificando una historia complicada (y además de verdad), se forma un enorme lío porque nada tiene sentido para Windows y entonces aparece la pantalla azul diciendo que nos va a poner dos velas negras…

Los Windows 9x estaban construidos sobre el MS-DOS, razón por la cual el fallo se hizo presente en éstas versiones. Hay un montón de nombres que, al igual que «con», provocan fallos en éstos sistemas, de modo que cuando se construyó Windows NT se corrigió. Los Windows de ésta familia (2000, XP…) no están diseñados sobre el DOS, pero sí que es necesario guardar la compatibilidad hacia atrás. Quien escribe ésto supone que para evitarse problemas decidieron «cortar por lo sano» y no permitir crear éstos ficheros con nombres especiales, ya que si ejecutáramos un programa en modo compatibilidad con Windows 95, podría fallar al confundir el teclado con una carpeta. También, podríamos crear un archivo con ese nombre reservado, que provocaría fallos al abrirlo con el MS-DOS o al portarlo a Windows anteriores… (Por cierto, ¿y si lo creamos con Linux y lo intentamos abrir?)

Lo más grave de éste fallo, conocido popularme como «el bug de los conguitos» es que cuando se descubrió, podría ejecutarse sobre algunos servidores basados en Windows y desactualizados (en realidad la mayoría de servidores usan Unix, así que eran muy pocos). Uno tecleaba por ejemplo «www.peich.com/con/con» ¡y el servidor caía! Imaginen los ratos de irrepetible diversión a los mandos del invento :-P

Hay infinidad de bugs: unos se conocen y se arreglan con facilidad. Otros, como éste problema con el «con» y los dispositivos perduran a través de los siglos como muestra de lo que sucede cuando se es medianamente chapucero o hay prisa por entregar el sistema… Otros no llegan a ésta categoría y son simples fallos de diseño, cosas que los programadores no pudieron prever y que se manifiestan en forma de problemas en ciertos contextos… Y ésto me recuerda un fallo muy antiguo sin solucionar de Internet Explorer que veremos más adelante, con el que van ustedes a hacerse algunas preguntas…

Un poco de Windows ;-)

Les voy a contar una historia que explica muchas cosas. Hace un montón de años (en 1981), una empresa llamada Microsoft desarrolló su primer sistema operativo: el MS-DOS, que fue encargado por IBM para usarse en sus ordenadores personales. Después de unos años y ciertas tretas sucias por parte de Microsoft (ya apuntaban maneras, los muchachos), ésta compañía se convertía en el centro de atención al lanzar el Windows 3.1 (antes hubo otros Windows, pero eran verdaderamente lamentables). Era sólo un entorno gráfico para el MS-DOS, como una máscara bonita para utilizarlo sin volverse loco. Por cierto, que se parecía tanto a los sistemas que incorporaban entonces los ordenadores de Apple, que éstos interpusieron una demanda a Microsoft que fue desestimada.

Yo llegué a utilizar Windows 1.0 porque en mi colegio había un equipo viejo con el invento, y tenía ésta pinta:

windows1.jpg

Años más tarde la empresa de Bill Gates lanzaba Windows 95. En la presentación se colgaba. Para mí ese momento es el símbolo de una década y de una forma de entender la informática que comienza a resquebrajarse. A Windows 95 (ya con 32 bits) lo comercializaron como Sistema Operativo, pero en realidad se sigue considerando un entorno gráfico (recuerden cómo se cargaba primero el MS-DOS y después Windows). Windows 98 fue un lavado de cara, aunque mejoró la estabilidad. Por cierto, no sé si saben que todos los Windows 95 y 98 se cuelgan irremediablemente a los 50 días de estar activos :-PSigamos. Windows Milennium Edition (Me) fue más de lo mismo. En realidad, había que llenar el hueco entre el 98 y el XP, y se inventaron éste. Aunque añadía funciones básicas como iconos más bonitos de 32 x 32 píxeles, lo cual siempre está bien. Los sistemas personales no evolucionaban gran cosa, y la informática personal Windows estaba en declive…

Pero desde 1993, Microsoft se encontraba desarrollando el Windows NT, dirigido a las empresas. Windows NT era un sistema construido desde cero, que era verdaderamente estable. Tan estable y tan bueno que su rendimiento era bajísimo, por lo que tuvieron que quitar algunas características y hacer que fuera un poco más malo aunque más rápido… qué cosas…

De Windows NT saldría el Windows 2000, más o menos al tiempo que el Me. El Windows 2000 funciona de maravilla, por cierto. De ésta familia, salió el Windows XP y saldrá el Windows Vista si los astros lo permiten.

Así que, resumiendo, hay dos familias de Windows: una, la llamada W9X (Windows 95, 98 y Me), formada por los sistemas de orientación más doméstica, que realmente nunca han sido considerados como Sistemas Operativos en el pleno sentido del término. La otra es llamada WNT (Windows NT, 2000 y XP), que surgió de la vertiente empresarial y técnica, y que es la rama más estable. Éstas ramas se unen en Windows XP, aunque empezaron a acercarse con el Me.

¿Y por qué les he contado todo ésto? Simplemente porque lo van a necesitar para entender bien el siguiente artículo :-)

Imagen | Wikipedia