Archive for August, 2006

Client does not support authentication protocol

Luego de agregar un nuevo usuario MySQL he tenido el siguiente problema al intentar conectarme a la DB usando PHP4:

Client does not support authentication protocol requested by server;
consider upgrading MySQL client

Buscando llego a: http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html

El problema

The password hashing mechanism was updated in MySQL 4.1 to provide better security and to reduce the risk of passwords being intercepted. However, this new mechanism is understood only by MySQL 4.1 (and newer) servers and clients, which can result in some compatibility problems.

Hace un tiempo pasé de la versión 4 a la 4.1. Resulta que ahora el hash correspondiente a las passwords se realiza utilizando un nuevo algoritmo que genera un hash de 41 bytes frente al viejo de 16 bytes.

Antes de la versión 4.1 la función

PASSWORD()

devolvía un hash de 16 bytes:

mysql> SELECT PASSWORD('mypass');
+--------------------+
| PASSWORD('mypass') |
+--------------------+
| 6f8c114b58f2ce9e   |
+--------------------+

A partir de la versión 4.1 la función

PASSWORD()

devuelve un hash de 41 bytes:

mysql> SELECT PASSWORD('mypass');
+-------------------------------------------+
| PASSWORD('mypass')                        |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+

Solución

Según: Common Problems with MySQL and PHP.

Error: Client does not support authentication protocol: This is most often encountered when trying to use the older mysql extension with MySQL 4.1.1 and later. Possible solutions are: downgrade to MySQL 4.0; switch to PHP 5 and the newer mysqli extension; or configure the MySQL server with –old-passwords. (See Section A.2.3, “Client does not support authentication protocol”, for more information.)

Otra solución

La función

OLD_PASSWORD

devuelve el viejo hash de 16 bytes:

mysql> SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

Tags: ,

Make me a sandwich

From xkcd

sandwich

Tags: ,

Breve historia de UNIX

Los origenes del sistema UNIX se remontan al desarrollo de un proyecto iniciado en 1968. Este proyecto fue realizado por General Electric, AT&T, Bell y el Instituto Tecnológico de Massachusetts, quienes llevaron a cabo el desarrollo de un sistema operativo con nuevos conceptos como la multitarea, la gestión de archivos o la interacción con el usuario. El resultado de estas investigaciones se bautizó como MULTICS. El proyecto resultó ser demasiado ambicioso, por lo que no llegó a buen fin y terminó abandonándose.

Posteriormente la idea de este proyecto se vuelve a retomar de la mano de Ken Thompson y Dennis Ritchie quienes lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea en sí. A lo anterior, agregaron un intérprete de órdenes (o intérprete de comandos) y un pequeño conjunto de programas. El proyecto fue bautizado UNICS, como acrónimo Uniplexed Information and Computing System, pues sólo prestaba servicios a dos usuarios (de acuerdo a Andrew Tanenbaum, era sólo a un usuario). La autoría de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de MULTICS. Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS castrado (pues eunuchs, en inglés, es un homófono de UNICS), se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.

El código de UNIX estaba inicialmente escrito en lenguaje ensamblador, pero en 1973, Dennis Ritchie llevó a cabo un proyecto para reescribir el código de UNIX en lenguaje C. UNIX se convirtió así en el primer sistema operativo escrito en lenguaje de alto nivel. Con este nuevo enfoque fue posible portar al sistema operativo a otras máquinas sin muchos cambios, solamente efectuando una nueva compilación en la máquina de destino. Gracias a esto la popularidad de UNIX creció y permitió asentar la “filosofía UNIX”.

Inicialmente UNIX fue considerado como un proyecto de investigación, hasta el punto de distribuirse de forma gratuita en algunas universidades, pero después la demanda del producto hizo que los laboratorios Bell iniciaran su distribución oficial.

Las dos variantes fundamentales: Sistema V y BSD

La Universidad de California en Berkeley comenzó sus desarrollos en el campo UNIX, añadiendo nuevas características y haciendo modificaciones. Así, en 1975 Ken Thompson promovió el desarrollo y sacó a la luz su propia versión de UNIX, conocida como BSD. Desde entonces BSD pasó a convertirse en la gran competidora de los laboratorios Bell. En esta versión contribuyeron Bill Joy y Chuck Haley, sus contribuciones son numerosas pero entre ellas destacan un compilador de Pascal, el editor vi, el editor ex y el Shell C.

Más tarde, a principios de los 80, se produjo el lanzamiento de Sistema III, la primera versión comercial del sistema operativo UNIX. En 1983 AT&T introdujo el UNIX Sistema V versión 1.

EN 1983 Berkeley lanza una poderosa versión UNIX conocida como BSD versión 4.2 Entre sus características principales se encuentran la gestión de archivos muy sofisticada así como la posibilidad de trabajo en redes basadas en los protocolos TCP/IP ( los mismos que hoy en día se utilizan en internet ). Esta versión de UNIX la adoptaron varios fabricantes, entre ellos Sun Microsystems, lo que dió lugar al conocido sitema SunOS.

En aquellos momentos las diferencias entre versiones de UNIX eran muy grandes, lo que provocaba verdaderos quebraderos dde cabezas para los programadores.

Familias de UNIX

AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la familia UNIX “pura” y original. Sus sistemas operativos más significativos son UNIX System III y UNIX System V.

BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD incorpora propiedad intelectual no originaria de AT&T, la primera implementación de los protocolos TCP/IP que dieron origen a Internet.

Solaris: de Sun Microsystems. Uno de los sistemas operativos Unix más difundido en el entorno empresarial y conocido por su gran estabilidad. Originalmente se llamó SunOS, pero posteriormente, debido a la presentación de UNIX Sistema V se desarrolló una nueva versión a la que se le llamó Solaris. Existen versiones de Solaris para Power PC, Intel y Sparc. Parte del código fuente de Solaris se ha liberado con licencia de fuentes abiertas (OpenSolaris).

AIX: de IBM. El UNIX “propietario” de IBM ha cumplido 20 años de vida en el 2006 y continúa en pleno desarrollo, con una perceptible herencia del mainframe en campos como la virtualización o la RAS de los servidores, heredada de sus “hermanos mayores”.

HP-UX: de Hewlett-Packard. Este sistema operativo también nació ligado a las computadoras departamentales de este fabricante. También es un sistema operativo estable que continua en desarrollo.

A/UX: Implementación de UNIX de Apple

IRIX: Versión de UNIX desarrollada por Silicon Graphics para sus estaciones basada en UNIX Sistema V version 4.

Xenix: familia derivada de la adquisición de los derechos originales de AT&T primero por parte de Microsoft y de esta los vendió a SCO.

SCO UNIX: Es la versión de Santa Cruz Operation (SCO), versión de UNIX Sistema V diseñada para plataformas Intel.

GNU/Linux: En 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido libremente. El software desarrollado por este proyecto -por ejemplo, GNU Emacs y GCC – también han sido parte fundamental de otros sistemas UNIX. En 1991, cuando Linus Torvalds empezó a proponer el kernel Linux y a reunir colaboradores, las herramientas GNU eran la elección perfecta. Al combinarse ambos elementos, conformaron la base del sistema operativo (basado en POSIX) que hoy conocemos como GNU/Linux o simplemente Linux. Las distribuciones basadas en el kernel, el software GNU y otros agregados entre las que podemos mencionar a Red Hat Linux y Debian GNU/Linux se han hecho populares tanto entre los aficionados a la computación como en el mundo empresarial. Obsérvese que GNU/Linux tiene un origen independiente, por lo que se considera un ‘clónico’ de UNIX y no un UNIX en el sentido histórico.

Arbol de familia de sistemas UNIX

Arbol de familia de sistemas UNIX

Unix History

http://www.levenez.com/unix/

Tags: ,

Función capitalize

Función capitalize en JavaScript, creada por Jonas Raoni Soares Silva. He cambiado la regex original/\w+/gpor/\S+/gpara que funcione con acentos.

1
2
3
4
5
6
7
8
9
myText = "hElLo wORlD";

String.prototype.capitalize = function() {
    return this.replace(/\S+/g, function(a) {
        return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
    });
};

document.write( myText.capitalize() );

Tags: , ,

Caracteres de salto de línea

Mix entre un artículo de Xavier Noria sobre el famoso\ny datos de Wikipedia.

¿Qué es \n?

Por razones históricas no existe un único código para representar inequívocamente una nueva línea. El código ASCII 10 (0×0A) se conoce técnicamente como “new line”, pero la actual representación de newlines depende del sistema operativo o de la aplicación corriendo sobre éste.

Los códigos usados para representar newlines en sistemas basados en ASCII son:

  • LF: Line Feed,"\cJ", Unicode000A, ASCII0x0A,012,10.
  • CR: Carriage Return,"\cM", Unicode000D, ASCII0x0D,015,13.
  • CRLF: Ambos códigos juntos y en este orden.

Entonces, tenemos que existen tres tipos distintos de newlines, dependiendo del SO que se trate:

  • LF: Unix y sistemas tipo Unix como Linux, Mac OS X, AIX, Xenix, BeOS, Amiga, RISC OS y otros.
  • CR: Familia Apple II y Mac OS hasta la versión 9.
  • CRLF: Microsoft Windows, WinCE, DOS, OS/2, CP/M, MP/M, y otros.

Si abrimos un editor de texto, en tres computadoras distintas corriendo un SO de cada una de estas tres familias, y escribimos “x + Return + y"en cada una y guardamos el archivo, el resultado en disco es distinto. De acuerdo con la nomenclatura explicada arriba, veríamos estos bytes:

  • Ubuntu GNU/Linux:120.10.121
  • Mac OS 9:120.13.121
  • Windows NT:120.13.10.121


Read more »

Tags: ,

El secretario inteligente

Leo en el blog de Javier Smaldone la siguiente nota:

Aquí va otro problema lógico. Lo encontré hace mucho tiempo en un libro y la solución no estaba en él (yo encontré una, pero no se si será la única).

Una persona debe contratar un secretario y se presentan tres postulantes para el puesto. Reúne a las tres personas y les dice lo siguiente:

Voy a realizar una prueba para ver quién de ustedes es más inteligente. Los sentaré en una mesa redonda, enfrentados y les vendaré los ojos. Luego, a cada uno le haré una marca en la frente que será de color rojo o de color negro.

Cuando yo se los indique, se quitarán la venda y quien vea una marca negra en la frente de alguno de los otros dos, dará un golpe en la mesa. El primero que descubra de qué color es la marca que lleva en su frente, y pueda explicarme cómo lo hizo, obtendrá el puesto.

Acto seguido, procede a vendarles los ojos a los tres y les hace a todos una marca negra en la frente. Al recibir la orden de quitarse las vendas, todos ven al menos una marca negra (de hecho, ven dos) y los tres golpean la mesa.

Al cabo de unos instantes, uno de ellos dice tener una marca negra en la frente, explica por qué se dió cuenta y obtiene el puesto.

La pregunta es: ¿cómo lo hizo?

La respuesta:


Read more »

Tags:

Escalas del Sistema Solar

Vía Microsiervos

Estas son imágenes creadas en 3DMax que muestran el tamaño relativo del Sol con respecto al resto de los planetas del sistema solar y nuestro satélite, La Luna.

Tierra, Venus, Marte, Mercurio y nuestra Luna

La Tierra, Venus, Marte, Mercurio y La Luna.

Júpiter, Saturno, Urano y Neptuno acompañados de La Tierra, Venus, Marte, Mercurio y La Luna

Los gigantes gaseosos Júpiter y Saturno (sin sus anillos). Urano y Neptuno en el medio.
En primera fila: La Tierra, Venus, Marte, Mercurio y La Luna

El Sol, acompañado del resto de los planetas del Sistema Solar

Podemos ver lo enorme que es Júpiter, al que acompañan, en tamaño decreciente, Saturno (irreconocible sin maquillaje ni anillos), Urano y Neptuno. Los cinco de la primera foto [la Tierra, Venus, Marte (con casquete de dióxido de carbono en el polo norte), Mercurio y nuestra Luna] son las pequeñas canicas que vemos tiradas en el suelo. Plutón, por cierto, no aparece en esta comparativa.

Tags: