

Una lectora nos hizo, días atrás, una consulta para un negocio de venta, por internet, de productos dietéticos. La principal duda era en cuestiones legales sobre licencias, permisos y requisitos que se deben cumplir para poder poner en marcha un negocio de este tipo.
En el caso de una actividad como esta debemos de tener en cuenta, principalmente la legislación en tres aspectos fundamentales, la regulación en materia de riesgos alimentario, la referente al comercio minorista y, finalmente, los aspectos concernientes a la sociedad de la información y el comercio electrónico.
La Reglamentación Técnico-Sanitaria para la elaboración, circulación y comercio de preparados alimenticios para regímenes dietéticos y/o especiales, aprobada por el Real Decreto 2685/1976, de 16 de octubre, modificada, en lo que al tema de la distribución y venta se refiere, por el Real Decreto 1426/1988, de 25 de noviembre, ampara la posibilidad de la venta y distribución de este tipo de productos a distancia, lo que nos permitiría hacerlo a través de internet
La Ley 7/1996, de 25 de enero, de Ordenación del comercio minorista (modificada por la Ley 47/2002, de 19 de diciembre), establece en el Titulo II del Capítulo III, los requisitos que han de respetarse en la venta a distancia, sin que en el mismo se excluyan a los alimentos en general y por tanto a los destinados a una alimentación especial.
La Ley 34/2002, de 11 de julio, de servicios de la sociedad de la información y de comercio electrónico, tiene por objeto la regulación de dichos servicios en lo referente a las obligaciones de los prestadores, incluyendo los que actúan como intermediarios en la transmisión de contenidos por las redes de comunicaciones, las comunicaciones comerciales por vía electrónica, la información previa y posterior a la celebración de contratos electrónicos, las condiciones relativas a su validez y eficacia y el régimen sancionador. A los efectos de la Ley se entiende por “Servicios de la sociedad de la información”, todo servicio prestado normalmente a título oneroso, a distancia, por vía electrónica y a petición individual del destinatario.
Asimismo, de la redacción del articulo 2 de la Ley, se desprende que es condición necesaria para ejercer la actividad de prestador de servicios de la sociedad de la información, la adquisición de personalidad jurídica con el apunte en un registro Mercantil o en cualquier otro registro público en el que fuera necesaria su inscripción. Asimismo, en el artículo 9 se establecen las obligaciones, incluido el plazo, para realizar la constancia registral del nombre del dominio. Se indica que la actividad económica realizada por particulares utilizando los sistemas de la sociedad de la información y el comercio electrónico, podría ser comparada con cualquier otra actividad de venta ilícita.
De todo esto se concluye que es perfectamente lícita la venta a través de internet de productos dietéticos pero teniendo en cuenta el último párrafo, es necesario que quien preste estos servicios sea una Sociedad Mercantil. No se establece, a la vista de esta legislación la necesidad de solicitudes de licencias especiales ni de permisos específicos para esta actividad distintos de los que necesitaria este mismo tipo de comercio en su forma convencional, exceptuando las condiciones que nos marcar la Ley de servicios de la sociedad de la información.
Resulta obvio que, en este caso, sí se debe de tener en cuenta que los productos que se pongan a la venta tengan la autorización del Ministerio de Sanidad y Consumo y tengan su registro sanitario correspondiente.
Imagen | Jorge Franganillo
En Pymes y Autónomos | El libro blanco del comercio electrónico gratis para todos
¿Es un meme? ¿Es un manifiesto contra la SGAE? ¿Es un nuevo producto de Apple? ¡No! ¡Es una lista de las nuevas cosas que incorpora la version 2.6.33 del kernel Linux! Que acaba de ser anunciada. Resumen: Nouveau (driver para tarjetas gráficas Nvidia) y otras mejoras del subsistema gráfico, soporte de Nintendo Wii y Gamecube, DRDB (dispositivo de bloque virtual distribuido en red), mejoras en perf, llamada al sistema rcvmmsg(), una extensión de seguridad a TCP apodada "Cookie Transactions", compcache (compresión de parte del cache mediante swap), drivers para hardware virtual VMWare y otras mejoras. La lista completa en inglés aquí.
Y, para que vean que me modernizo, esto post ha sido escrito con Blogilo, la aplicación de KDE 4.4 (una auténtica maravilla de versión, por cierto) para escribir blogs.
· Nouveau: Que es un driver para tarjetas gráficas Nvidia, las únicas que quedaban sin drivers libres en Linux. Nvidia no ha contribuido a este driver, sino que ha sido desarrollado mediante ingeniería inversa (y, según se rumorea, documentos supuestamente confidenciales encontrados en oscuros rincons de servidores rusos). Tiene 26.000 líneas de código y ha sido desarrollado desde el 2006. Las tarjetas gráficas son uno de los componentes de hardware más complejos que se pueden encontrar hoy en día, y es muy dificil escribir drivers para ellas incluso teniendo toda la documentación necesaria, con lo que este driver representa, en verdad, un esfuerzo hercúleo que debe ser aplaudido.
¿Por qué usar Nouveau en vez de los drivers oficiales de Nvidia? La nueva y potente tarjeta que has comprado hoy dejará de ser soportada en unos pocos años. Esto no ocurre con los drivers libres. Nouveau (y el driver libre de ATI) soporta más dispositivos que los drivers oficiales. Nouveau no solo soporta chips modernos, tambien soporta otros como Riva TNT y Geforce 2/4MX/4Ti/FX. Las características soportadas, sin embargo, no son comparables, pero Nouveau ya tiene un buen montón de soporte de cosas básicas: modesetting (KMS), suspensión/resumen, Dual Head, y operaciones 2D (EXA, Xrender, vídeo Xv). El 3D está en desarrollo pero está progresando poco a poco. Es de notar que el problema de los famosos "ctxprogs" ha sido resulta, ya que pueden ser autogenerados.
· DRDB: DRDB ("Distributed Replicated Block Device") es un dispositivo de bloques replicado en varios clusters desarrollado por [http://www.linbit.com/ LINBIT]. Su propósito es servir de base para crear clusters de alta disponibilidad (HA). DRDB puede ser entendido como un RAID-1 sobre la red. Para la gestión del cluster se necesita un gestor de cluster (por ejemplo, heartbeat). Ver http://www.drbd.org/, http://www.linux-ha.org
· Mejoras de perf: perf probe, perf kmem, perf bench, perf diff, scrips perl para perf y filtros: Esta versión añade muchas mejoras a la infraestructura de traceado y a la herramienta perf (tools/perf)
perf probe: perf probe es un subcomando que permite crear probes (sondas) de kprobes. Kprobes es un systema que permite insertar puntos de depuración en cualquier parte del kernel para recolectar información, dinámicamente y sin afectar al funcionamiento del sistema. Es el sistema utilizado por Systemtap. Perf probe permite definir sondas utilizando expresiones en C (números de línea, nombres de función, variables). Por ejemplo
Paso 1: Añadir una nueva sonda en una línea de código C: "perf probe -P 'p:misonda @fs/read_write.c:285 file buf count'" (crea una nueva sonda, llamado "misonda", que inspeccionará las variables file, buf y count ). De manera alternativa, puedes tambien usar comandos más simples, como "perf probe sys_open", que añade una sonda al símbolo sys_open symbol (la llamada al sistema open())
Paso 2: Añade una sonda kretprobe en el retorno de una función "perf probe -P 'r:myretprobe vfs_read $rv'"
Paso 3: Si ejecutas "perf list", verás una sección nombrada "kprobes" que lista las sondas que acabas de crear.
Paso 4: Inicia una captura de eventos: "perf record -f -e kprobes:myprobe:record -F 1 -a ls" y tracéalo con "perf trace"
perf bench: perf bench es una pequeña suite de microbenchmarks. En esta versión, solamente hay tres benchmarks: perf bench sched messaging (para medir el gestor de procesos y el IPC), perf bench sched pipe (mide el rendimiento de pipe()) y perf bench mem memcpy (mide el ancho de banda de la memoria). El comando perf bench all ejecutará todos los benchmarks.
perf kmem: Esta herramienta es en gran medida una versión de perf de la herramienta kmemtrace-user. Muestra información varia sobre SLAB.
perf diff: perf diff muestra diferencias de rendimiento entre varias capturas.
scripts perl de perf: Se trata de un motor de scripting para programar scripts de perf trace. Ver perf trace -g/--gen-script y perf trace -s/--script.
filtros perf: Esta característica añade soporte de filtros a la infraestructura de tracepoints, para ser utilizado con la opción "--filter expresión". Por ejemplo, para tracear solo las interrupciones del temporizador: "perf record -e irq:irq_handler_entry --filter='irq==0' -R -f -a sleep 10". O para capturar solamente la IRA 19 cuando se alcanza 'achi': "perf record -e irq:irq_handler_entry --filter='irq==19 && name==ahci' -R -f -a sleep 10"
· recvmmsg(): Se trata de una llamada al sistema que permite llamar de una sola vez varias llamadas de recvmsg(). Para aplicaciones de mucho ancho de banda y paquetes pequeños, el rendimiento y la latencia mejoran enormemente.
· TCP Cookie Transactions: Esta extensión a TCP, llamada [http://en.wikipedia.org/wiki/TCP_Cookie_Transactions Cookie Transactions] (TCPCT), tiene como intención proteger contra ataques DoS como floods SYN y terminación maliciosa de conexiones. A diferencia de las antiguas protecciones SYN, TCPTC no causa conflictos con otras extensiones TCP, pero requiere soporte de TCPCT en las pilas TCP del cliente y el servidor. La razón más inmediata para el uso de TCPCT es el desarrollo del protocolo DNSSEC.
· Controlador del E/S de dispositivos de bloques: Los grupos de control son contenedores virtuales que son creados como directorios dentro de un sistema de archivos especial (generalmente, con la ayuda de herramientas especiales),y se pueden añadir conjuntos de procesos arbitrarios a ese grupo, que puede ser configurado para que tenga un conjunto determinado de propiedades de gestor de CPUs o límites de memoria.
Esta versión añade el controlador del E/S de los dispositivos de bloque. A día de hoy, el gestor de IO CFQ lo usa para reconocer grupos de tareas y controlar el ancho de banda de disco concedido a esos grupos (algo del estilo de las prioridades de CFQ, pero implementado de otra forma).
· Compcache: compresión de swap en memoria: Compcache es un proyecto (en desarrollo, solamente disponible en Staging) que crea dispositivos de bloques en la memoria RAM (/dev/ramzswapX) que son usados como discos swap. Las páginas de swap que se escriben a este dispositivo son comprimidas. Parte de tu RAM se usa como siempre, la otra parte (el tamaño es configurable) se usa para guardar páginas comprimidas, esto incrementa la cantidad de RAM que puedes usar en la práctica.
Esta característica puede ser útil en muchos casos: Netbooks, smartphones y otros dispositivos embebidos, instaladores de distribuciones, clientes tontos sin disco, virtualización, o viejas máquinas sin suficiente RAM para ejecutar software moderno. Las mediciones han demostrado que esta es característica efectiva.
· Mejoras gráficas: Además de la inclusión de Nouveau, está la ronda de mejoras habituales al subsistema gráfico que se han vuelto tan comunes tras la inclusión de GEM y KMS
"Page flipping": Esta característica es necesaria para implementar un escritorio "tearing free" (defecto gráfico por el cual dos frames pueden mostrarse mezclados al mismo tiempo). Se ha añadido una ioctl para el soporte en la API KMS.
Soporte de HDMI para la Radeon R600.
Soporte de overlay de vídeo en el driver i915.
· Soporte de Wii y Gamecube: El proyecto gc-linux.sourceforge.net ha estado trabajando en el soporte de Linux de las consolas de Nintendo, basadas en PPC: Nintendo Wii y Nintendo Gamecube.
· Drivers VMWare: VMware ha contribuido con dos drivers para la GPU virtual y la tarjeta de red virtual vmxnet3 de sus hypervisors. Gracias a udev, esto significa que los invitados Linux ejecutándose en un huésped VMware tendrá un rendimiento gráfico y de red óptimo.
· DesBKLificación de reiserfs: Una de las principales desventajas de reiserfs (y una de las razones por las que la mayoría de las distros usa Ext en su lugar) es que su código gestiona la concurrencia de procesos utilizando un gran bloqueo, el llamado BKL (Big Kernel Lock). Esto sifgnifica que su escalabilidad SPM es muy pobre. Esta versión no soluciona ese problema, pero reemplaza el BKL con un bloqueo específico de reiserfs. En esta versión, ya no hay más trazas del BKL en su código. Ha sido convertido en un mutex recursivo. Esto puede sonar "sucio", pero usar un bloqueo tradicional en reiserfs requeriría una reescritura más profunda ya que la arquitectura existente depende íntimamente en las reglas del BKL. Debido a las semánticas sutiles de los cambios relacionados con bloqueos, algunas cargas podrían tener algunas regresiones y otras pequeñas ganancias.
· Android, fuera del kernel: Los drivers de Android han sido eliminados del directorio Staging. Desgraciadamente, desde el día de su inclusión en ese lugar Google no ha mostrado absolutamente ningún interés en mejorarles para tener unas mínimas condiciones de calidad y poder ser incluidos en la rama principal. Ante las peticiones de mejora, Google ha contestado que si no lo quieren aceptar tal y como está, que mejor cada uno por su lado. Por supuesto, eso es totalmente legal, pero es triste que un proyecto que ha hecho tanto por llevar el software libre a las masas se haya convertido en un ejemplo de libro de como no interactuar con una comunidad de software libre.
Hace unos meses comentábamos por aquí cómo utilizar fotografías tomadas con un móvil con GPS para geoposicionar fotografías tomadas con la cámara “de verdad”, que normalmente carece de GPS.
La idea es básicamente tomar un foto de referencia con el teléfono –con el GPS activado para que se graben las coordenadas en el archivo de la fotografía- y luego trasladar esos datos EXIF al resto de tomas capturadas en el mismo lugar.
Aperture 3 hace suyo este truco incorporando una opción específica denominada “Import GPS from iPhone Photos” (Aperture sólo está en inglés) que aparece cuando se accede al módulo de mapas.

Esta función únicamente sirve para extraer los datos correspondientes a las coordenadas GPS de una foto tomada con el iPhone. Lo que aparece en la foto da igual porque se utiliza sólo para tener este dato. Esta función no importa la fotografía en la biblioteca de Aperture.
Obviamente, cuanto más se parezca la foto de referencia a otras fotos de la sesión más fácil será relacionarlas visualmente.
Por tanto,
También se puede generar una ruta de puntos GPS (waypoints) seleccionando varias fotografías de referencia.

Trasladar las coordenadas GPS de una foto a otra también se puede hacer con la opción “Lift & Stamp” para primero extraer el campo GPS de los metadatos de una foto y luego escribirlos en otra fotografía que no los tenga o los tenga incorrectos.

Anotaciones relacionadas:
Desconozco si lograré entretener a algún lector con este experimento, sólo he de consignar aquí que me he divertido ideando esta ficción, destinada para la Cuarta Edición del Carnaval de Física. Por supuesto, el objetivo bajo todo este largo escrito es mostrar lo que siempre he deseado en TecOb, a saber, que bajo conceptos complejos, la “aburrida” ciencia se basa en el trabajo y la pasión de seres humanos cuyas vidas son apasionantes.
Un viejo Mercedes Benz, de majestuoso porte y negra silueta, tomaba una empinada curva camino del taller más cercano. En su viaje, un molesto crujido aparecía y cada pocos segundos, claro síntoma de que algo no marchaba bien en las entrañas del vetusto cacharro.
El sufrido vehículo pasó el resto de la tarde en lo alto de un elevador hidráulico, siendo atendido por un alegre mecánico que no dejaba de tararear las canciones que sonaban de fondo, surgiendo de la acatarradas membranas de los altavoces de una radio cuyo plateado brillo de calamina hacía ya mucho tiempo que se había convertido en triste color merengue.
— ¡Esto es un coñazo!
La frase sonó fuerte, seca y, además, por duplicado. El eco producido por el techo de teja de fibrocemento de la nave se encargó de que la queja sonara como debía, a medio camino entre el tedio y un incipiente cabreo. Y todo el mundo se giró, no era para menos. En el centro del taller, en medio de una abigarrada familia de elevadores, entre viejos automóviles dolientes, un chaval con aspecto de haberse mordido la lengua resoplaba sin cesar. El mecánico no dedicó al exabrupto más que unas décimas de segundo. Lo mismo hicieron otros compañeros suyos, cada uno ocupado en sus propios asuntos, ya fuere cambiar el filtro de aceite en un ajado Seat Toledo o instalar una flamante radio digital con lector de discos compactos en un Twingo de tercera mano.
Sí, de acuerdo, el paisaje no era agradable, sobre todo para un adolescente que se acababa de quedar sin batería en el móvil y sin tener a mano nada con lo que pasar el rato. Un tiempo que se estiraba como el chicle y que, para colmo, se convertía en dañina metralla, segundo a segundo, capaz de hacer enloquecer al chico con la pesada música de la radio, que se empeñaba en vomitar canciones que a él le parecían más rancias que los cánticos que hubieran sido del gusto de los cavernícolas.
La estampa pintaba mal, por lo que el profesor decidió acudir a su arma favorita: la imaginación.
—Sí, una lata, pero al menos nos queda una hora aquí, así que habrá que pasarlo bien, ¿no te parece? —el profesor, cuyo Mercedes enfermo era el culpable de aquella incómoda situación, empezó a construir en su cabeza una historia con la que entretener al chaval.
—¿Y cómo vamos a hacerlo si todo aquí es un muermo? —no le faltaba razón al joven, que se dolía cada minuto más y más, pensando que hacía ya bastante rato que su tío y él debían haber llegado a casa.
—Con eso… —y dejando la frase en suspenso, tío y sobrino, que por lo general se comportaban como dos desconocidos que se cruzan furtivamente en la calle, sin sentir tener nada en común entre ellos en las escasas ocasiones que pasaban tiempo juntos, miraron al unísono hacia lo alto, siguiendo la ruta marcada por un dedo en alto.
Como profesor de física e irredento ratón de biblioteca, el propietario del Mercedes comenzó a desplegar su estrategia de entretenimiento, precisamente con ese primer movimiento, levantando el brazo y apuntando firmemente con el dedo hacia arriba. Sabía que, a pesar de su aparente hostilidad, a su sobrino le gustaba escuchar sus historias.
—¿Y eso qué es? —preguntó el chico con tono cansado.
—Eso es, ni más ni menos, la causa por la que estamos aquí.
—Ah, vale, es la pieza que ha cascado…
—¡Sí! —interrumpió el profesor con vehemencia, calentando ya sus armas.
—¿Y eso tiene algo de divertido?
—No lo sé, eso depende de si te gustan las historias de sexo, sangre e intriga.
Ante este desafío, sobre todo en cuanto escuchó la palabra sexo, los ojos del chico se abrieron de golpe, como si despertara de un pesado sueño que le hubiera mantenido toda la tarde atontado. No esperó el profesor a que la reacción de su público fuera más allá, sobre todo sabiendo que había empleado la palabra mágica de forma exagerada, y pasó a la acción. Además de su sobrino, el mecánico a su vera también afinó uno de sus sentidos, en este caso el oído, al llegar a su cerebro precisamente la misma palabra que despertó de golpe al destinatario de la historia.
Bajo la oscura panza del Mercedes, el joven y el mecánico comenzaron a atender sin rechistar. El mecánico no abrió la boca, pero el cambio de gesto le delató, dividiendo desde ese momento su atención entre su labor arreglando el viejo vehículo y la prometida sórdida narración que esperaba escuchar.
—Verás, cada máquina tiene mucha historia detrás.
—¡No fastidies! ¿No irás a contarme una chorrada de ciencia o algo así? —cortó secamente el chico, aunque sin mucho ánimo, pues en el fondo deseaba oír algo que le alegrara la tarde y sabía que su tío era capaz de contar historias sorprendentes, aunque no por ello iba a ceder y mostrarse conforme relajando su aspecto rebelde.
—Sí, de ciencia, matemáticas y… —la audiencia se enfriaba por momentos— …pendencieros jugadores y mujeres de mala vida.
—¡Mola!
—Mira esa pieza, la que nos ha fastidiado el viaje.
El profesor volvió a señalar a las entrañas del Mercedes. Allí, justamente donde estaba el mecánico trasteando, aparecía una doble pieza de metal, un juego con dos horquillas de feo aspecto embadurnado en grasa. El coche, de tracción trasera, había comenzado a hacer un extraño ruido intermitente unos días atrás pero no había sido hasta esa tarde cuando el molesto soniquete se había convertido en algo problemático.
—Eso es la junta cardánica, o cardán para los amigos. Es importante para que el choche se mueva, hace que dos ejes que giran en ángulo uno con respecto al otro se mantengan unidos y el movimiento pueda transmitirse sin problemas.
—¿Y dónde está lo divertido de eso?
—La gracia de esa pieza está en su nombre.
—¿Cardán? ¿Y eso qué significa?
—Es el apellido de un tipo singular, un aventurero que, entre otras cosas, ideó este mecanismo. Los coches de hoy en día, en su mayoría, ya no necesitan cardán, pues suelen ser de tracción delantera y no llevan árbol de transmisión que necesite articularse, pero hace años prácticamente todos los automóviles llevaban cardán, como todavía podrás ver en los camiones.
—Y el tipo ese, ¿se llamaba Cardán? ¡Vaya nombre!
—Sí, aunque más bien era su apellido. Se trataba del Girolamo Cardano…
—¡Es peor el nombre que el apellido!
—Nos parece un nombre singular, claro, ten en cuenta que era italiano.
—¿Y cuándo aparecen las italianas en esta historia? —inquirió el chaval con voz burlona.
—Ten paciencia, que todavía queda un rato largo hasta que el mecánico limpie la junta. Suerte hemos tenido, no está rota, sólo es un problema con el lubricante y la suciedad.
—¡Podríamos llamar al Cardano ese para que nos lo arregle más rápido!
El mecánico miró al chico con desdén, pensado en su madre de forma indecorosa, pero no dijo palabra y siguió a lo suyo.
—No molestes al mecánico, un poco de paciencia y, además, no creo que podamos llamar al viajo Cardán.
—¿Ha muerto? —la pregunta nació de la más profundo de la ingenuidad juvenil.
—Sí, hace más de cuatrocientos años.
—¡Ostras!, pero… ¿había coches entonces?
—No, claro que no, los automóviles apenas tienen un siglo, pero en su interior hay piezas ideadas por gentes de muchas épocas, como Cardano.
El ambiente era propicio, con el mecánico removiendo la carbonilla, tratando de sellar la grieta que presentaba el protector de la junta cardán del Mercedes, el profesor calculó que tendría al menos veinte minutos a su disposición para desplegar sus armas preferidas: la historia y la ciencia, justo hasta que pudieran volver a ponerse en camino. Llegó el momento de ponerse en acción.
—Cardano nació en Milán en el año 1501. No me preguntes la fecha porque mi memoria no llega para tanto…
—¿No eras tú el que lo sabía todo… sabiondo? —replicó el pequeño burlón.
—No incordies, anda —sonrió el profesor.— La verdad es que, de pequeño, Cardano lo tuvo muy difícil. Para empezar, era hijo ilegítimo de un abogado milanés, aunque con el paso de los años sus padres terminaron casándose.
—Parece un culebrón… —el profesor decidió ignorar a partir de ese momento las anotaciones al margen de la conversación que realizara su sobrino, decidido a no perder el hilo sobre el que elaboraba la narración.
—Era una época peligrosa, varios de sus hermanos murieron por culpa de epidemias de peste y, además, la salud de Girolamo no era nada buena. Su padre, el abogado, era además un matemático muy bueno, tanto que a veces era consultado por el mismísimo Leonardo da Vinci, ¿te suena el nombre?
—¡Claro! ¿No era el de esos helicópteros de madera del museo?
—Vale, veo que algo te suena. Cardano aprendió matemáticas y leyes de su padre, quien pensó en su hijo como ayudante para su trabajo, pero cuando nuestro pequeño inventor de piezas de automóvil —dijo esto con graciosa entonación— no pudo aprender más de su padre, decidió abandonar el hogar.
—¿Se fugó de casa?
—Posiblemente lo pensó, pero el verdadero problema era que su padre tenía pensado enviar a Girolamo a estudiar derecho y eso no le hacía gracia al mozalbete, porque deseaba aprender más matemáticas y, sobre todo, ciencias. Se lió parda, el padre y el hijo tuvieron una bronca de las que hacen historia, pero finalmente Cardano se salió con la suya y marchó a la Universidad de Pavía, a estudiar medicina.
—Pero, ¿no quería estudiar ciencias o matemáticas?
—Sí, claro que sí, estudiando medicina podría aprender de ciencia, o filosofía natural como se decía entonces, en esa época era el camino más seguro para hacer algo parecido a lo que ahora conocemos como ciencia. Lo malo es que no le fue muy bien.
—¿Le suspendieron?
—No, tuvo otros problemas mucho más graves que esa minucia. Su universidad se hallaba en medio de un territorio que entró en guerra con sus vecinos y a punto estuvo de convertirse en una víctima más de la barbarie. La universidad cerró sus puertas y Cardano debió marchar a Padua para terminar sus estudios. Además, al poco murió su padre y, para su desgracia, empezó a meterse en turbios asuntos políticos. Decidió convertirse en rector de su universidad, cosa que logró, pero sólo a costa de ganarse muchos enemigos, sobre todo por su afilada lengua.
—¿Decía muchos tacos?
—Ojalá hubiera sido eso. Digamos que, siendo suaves, siempre decía lo que no debía donde no era necesario. Echaba en cara a todo el mundo sus faltas, o lo que a él le parecía malas conductas, no era nada diplomático. Si creía que eras un ladrón, te lo llamaba a la cara en público. Cuando se enteraba de algún lío, poco le faltaba para gritarlo a los cuatro vientos, era un auténtico bocazas.
—¡Vaya! Me gusta el tio este. ¿Y las chicas cuándo aparecen?
—Paso a paso mi pequeño aprendiz —el joven mostró su extrañeza, pues no había captado la sutil referencia cinematográfica, a lo que ágilmente el profesor continuó su narración.— Es más, tiraba el dinero por la ventana. Su padre, había conseguido una pequeña fortuna con sus tratos como famoso abogado, pero eso no fue suficiente para que Cardano viviera holgadamente. En pocos años no le quedaba ya ni una moneda del tesoro de su padre así que, con un sueldo decente pero acuciado por las deudas de su alocada vida, pensó en alguna solución.
—Gastar menos.
—¡Nada de eso! Él deseaba incrementar los ingresos pero no disminuir los gastos así que se dedicó a apostar, el juego fue su objetivo.
—¿Juego? ¿Como en un casino?
—Algo así, juegos de cartas, ajedrez y otros juegos con apuestas, dados y similares. Sabía que debía haber algún método para ganar dinero con el juego, que a todo el mundo parecía algo caótico y sin ningún orden. Cardano apostó y ganó, porque aplicó las matemáticas al juego. Sus conocimientos sobre probabilidades hacían que, por lo general, ganara más dinero del que perdía pero, con el tiempo, se fue convirtiendo en un auténtico adicto, no podía parar, se metía en todo tipo de negocios oscuros y frecuentaba malas compañías con tal de apostar más y más.
La radio del taller emitió su último estertor, como si se tratara de un moribundo, tornando muda cuando un hilillo de humo abandonó sus entrañas, signo inequívoco de que uno de sus circuitos había decidido dejar de sufrir su diaria tortura. Nadie pareció darse cuenta de la falta del musical ruido de fondo, pues los oídos del taller estaban prestando atención a la narración del profesor.
—Mientras jugaba siguió estudiando y, con el tiempo, logró el doctorado con el que se convirtió en médico milanés. Decidió entonces vivir tranquilamente en esa ciudad, con su madre, pero claro, su reputación era tan mala que el colegio de médicos no le quería ver por allí. No sabían cómo deshacerse de él, porque reconocían que como médico era de los buenos, pero nadie aguantaba sus conversaciones y su tono, sus líos con el juego y sus peligrosos amigos.
—Y lo asesinaron…
—¡Quieto! No dudo que lo pensaran, aunque fuera en broma, pero la burocracia tiene otras formas de librarse de la gente. Cuando descubrieron que era hijo ilegítimo, cosa grave por entonces, le mandaron a paseo.
—Bah, qué tontería, ¿y no se vengó?
—Nos parece una bobada a nosotros, pero por desgracia para Cardano el ser un bastardo le persiguió toda la vida, era algo que debía ocultar. Por eso, se fue a un pueblo cercano a trabajar como médico, apartado de sus colegas de la ciudad. Allí conoció a una chica llamada Lucía, con la que se casó, pero como no ganaba apenas dinero y el colegio de médicos no aceptaba sus nuevas solicitudes de ingreso, tuvo que seguir a lo suyo…
—¡El juego!
—En efecto, y de esa forma pensó en lograr fortuna, anteriormente no le había ido tan mal. Lástima, fue una mala elección, lo perdió todo, se empeñó y hasta tuvo que vivir de la caridad hasta que, finalmente, tuvo un golpe de suerte. Resulta que, siendo un genio matemático, no le costó obtener un puesto que su padre anteriormente ocupó como profesor de matemáticas. No es que ganara mucho, pero al menos pudo mantener a su mujer sin problemas y, mientras tanto, ejerció la medicina a escondidas, sin que los del colegio de médicos lo supieran.
—¿Y le pillaron? —preguntó el sobrino que iba mostrando cada minuto que pasaba más interés.
—¡Como para no hacerlo! Cardano era tan bueno diagnosticando males y curándolos como lo era con los números, así que su fama creció hasta tal punto que incluso los miembros del colegio de médicos se convirtieron en sus pacientes. No iban a olvidar que era un bocazas, un jugador y un bastardo, pero al menos limaron alguna diferencia. Con su fama recién adquirida también consiguió que mucha gente le fiara dinero, porque no dejaba de jugar. Llegó hasta tal punto su celebridad que el colegio debió modificar a los pocos años la norma que impedía la admisión de hijos ilegítimos, ¡y eso que Cardano no se había callado y acababa de publicar un libro en el que ponía de pelo de conejo a los médicos del colegio!
—Un poco bestia, ¿no?
—Eso no es nada, su carrera estaba a punto de empezar de verdad, en todos los sentidos. Mientras iba publicando libros sobre matemáticas, astronomía y hasta teología, todos ellos muy famosos entre sus contemporáneos, su fama iba creciendo, al igual que el número de sus enemigos. Fue entonces cuando se hizo amigo de otro matemático, Tartaglia, ¿lo conoces?
—Me suena a un triángulo… —dudó el chaval.
—En efecto, el tartamudo Niccolo Fontana, que se encontró cierto día con Cardano, saliendo malparado al cabo de un tiempo, claro que, por una vez, no fue la rudeza de Girolamo la culpable. Tartaglia había participado en una especie de duelo matemático en el que, para ganarlo, había creado una fórmula general con la que resolver ecuaciones de tercer grado. De esa forma, era capaz de resolver todas las ecuaciones que su competidor le planteaba, pero éste no podía resolver ninguna de las que Tartaglia planteaba. Ese duelo le hizo tan famoso que Cardano deseó conocer a tan genial matemático. No tengo ni idea de cómo lo logró, pero Girolamo pudo hacerse con el método que Tartaglia empleaba, que era secreto, con la condición de que no lo diera a conocer. Ahí es donde se líó todo…
—¡Lo hizo!
—Sí, pero de forma legal. De acuerdo, había jurado ante dios y los santos que no daría a conocer el secreto antes que Tartaglia pero como pasaba mucho tiempo y éste no abría la boca, decidió pasar a la acción.
—¡Tóma ya! ¿Y no se cabreó Tartaglia?
—Imagina, le llamó de todo, y eso que Cardano avirtió en el libro donde publicó el secreto, Ars Magna, que el mérito era de Tartaglia, aunque también avisa que había visto en autores anteriores ideas muy similares, sino iguales, lo que le liberaba del juramento. Para más fastidio, el propio Cardano había hallado algunos errores en el método y, aunque había puesto sobre aviso a Tartaglia, éste lo ignoró. Cardano entonces, pensando que hacía lo mejor, y seguramente imaginando ganar más fama y más amigos con dinero, publicó el secreto, con correcciones y todo.
—Vaya forma de ganarse amigos…
—Cierto, pero ya estaba acostumbrado y, realmente, la tozudez de Tartaglia guardando su secreto era tan estúpida que realmente pienso que Cardano hizo lo mejor. Eso sí, la racha de buenas acciones acabó ahí, porque a partir de entonces pasó varios años jugando, y nada más, se pasaba el día y la noche rodeado de malas gentes apostando. Poco pareció importarle que Lucía muriera, sólo deseaba acrecentar su fama, vender más libros y jugar, a la vez de atender como médico a algún potentado europeo. Luego llegaron los nombramientos, los honores como médico milagroso, la fortuna…
—No parece un mal final.
—Tienes razón, porque no acabó así. Posiblemente hubiera sido feliz entre sus amigos jugadores gastando dinero por doquier, pero la suerte no estuvo de su lado en otros aspectos de la vida. Su hijo mayor, que también era médico, se había casado en secreto con una mujer de mala vida y sin ningún principio. Además de acostarse con quien lo deseara, disfrutaba gastando el dinero que Cardano enviaba a su hijo que, por cierto, parecía vivir ignorando los manejos de su esposa hasta que un día se cansó. Por mucho que escondiera la cabeza, no podía dejar de escuchar lo que sus vecinos le comentaban sobre los amantes de su mujer, le decían que no era el verdadero padre de sus hijos, cosa que al parecer era cierta y que, además, ella le estaba robando…
—Vaya putón, ¿y qué hizo el hijo de Cardano?
—Creo que ya lo imaginas —susurró el profesor mirando a su alrededor como si quisiera guardar un sórdido secreto.
—¡Tóma! ¿Se la cargó?
—Sí, la envenenó. Tras se detenido confesó su crimen y las cosas se pusieron muy feas. Aunque el gran Cardano quiso salvar a su hijo, pagó a los mejores abogados y hasta recurrió a sus influencias políticas, no pudo pagar lo que la familia de la asesinada, quienes debían ser tan pendencieros como ella, pedían en concepto de indemnización, Al final, el acusado fue ejecutado, tras pasar bastante tiempo en prisión siendo torturado.
—¡Qué mal rollo!
—Para, que esto no acaba así.
—¿Pero todavía podía ponerse pero? Esto parece una peli de terror.
—Sí, mucho peor. Cardano marchó a Bolonia, donde ejerció como profesor de medicina, aunque más que marchar lo que hizo fue huir porque la gente le odiaba después del caso de su hijo. En Bolonia tampoco supo contener su lengua, y todos sus colegas hicieron lo posible para que lo echaran. Además, su otro hijo siguió sus pasos, era un jugador empedernido, gastaba sin límite y siempre estaba rodeado de delincuentes y prostitutas. Cardano aguantó este comportamiento hasta que, un día, su hijo le robó. Prácticamente desvalijó la casa de su padre y se jugó todo, perdiéndolo sin remedio. Tras la denuncia de Cardano, su propio hijo tuvo que poner tierra de por medio.
—¿No hay final feliz? —preguntó el sobrino pensando inocentemente que, como en las películas, al llegar el último momento todo se arreglaría.
—Ni de lejos, incluso después de perder su reputación, su dinero y a sus hijos, tuvo que padecer más desgracias. Fue su carácter, una vez más, lo que le llevó a meterse en un lío. Tuvo la osadía de publicar un librillo en el que hacía una especie de burla de Jesucristo. Era un horóscopo de Jesús, acompañado de escritos que ensalzaban a quienes enviaban a la muerte a los cristianos en la antigua Roma. La verdad, no tengo ni idea de por qué lo hizo, aunque se supone que su único fin era ganar fama nuevamente. Lo logró, pero a la inversa, si pensó en ser conocido como escritor de obras polémicas no iba por buen camino y a pesar de que siempre había apoyado a la Iglesia, ésta le dio la espalda. La inquisición le condenó por hereje, no captaron la supuesta ironía de su texto. No es que le condenaran a una gran pena, pues al poco era libre, pero le prohibieron volver a enseñar y a publicar nada, cosa que no me extraña conociendo sus antecedentes y cómo se las gastaban las autoridades eclesiásticas. Y, como final paradójico, Cardano terminó en Roma, donde incluso el Papa le tuvo aprecio, porque seguía siendo un médico excepcional.
—No acabó tan mal, yo pensaba que se lo iban a cargar…
—¿Pero qué más quieres? Perdió a sus hijos, su dinero, su fama, vivió rodeado de maleantes y además le prohibieron publicar. Sí, en voz baja todo el mundo ensalzaba sus obras, pero en público era insultado. Lo más sorprendente es que, incluso a pesar de todas estas penalidades, tuvo tiempo para revolucionar la matemática y la ciencia de su tiempo con aportaciones que abarcan desde la física hasta la mecánica y, como ves aquí —señaló entonces nuevamente el profesor a la junta cardán del viejo Mercedes, ya prácticamente reparada— hasta inventó algo que sería empleado siglos más tarde en los coches.
En ese momento, el silbido agudo del elevador marcó el fin de la tarde. El coche estaba reparado, había llegado el momento de ponerse nuevamente en marcha, sólo quedaba un detalle por añadir para cerrar la historia.
—Por cierto… dicen que Cardano fue capaz de predecir con exactitud la fecha de su muerte —susurró el profesor misteriosamente a la vez que giraba la llave de contacto para animar nuevamente al coche recién reparado.
—¿Era también un adivino? Es broma, ¿no? —respondió su sobrino con incredulidad.
—Sólo es algo que se comenta, aunque… —el profesor se acercó lentamente al chaval para terminar la narración con pesado aire de intriga— …no le fue difícil acertar del pleno porque, según el rumor transmitido a lo largo de los siglos, se suicidó.
Imagen: Wikimedia Commons / Junta Cardán.

Así quedaría el Mediterráneo. Foto original (y más grande)
Y así, África. Foto original Strange Maps
2.- Controla todo lo que compartes, desde el Panel de Control: tú tienes la posibilidad de ver y modificar lo que esté asociado a tu cuenta de Google. Aquí, te enseñamos cómo acceder facilmente al Panel de Control desde Gmail: haz clic en Configuración (arriba, a la derecha). Luego, entra en la pestaña Cuentas e Importación y una vez allí, verás la última opción al fondo que dice Configurar la Cuenta de Google. Al hacer clic en ese enlace, Google te llevará al sumario de tu cuenta, es decir, Configuración Personal.
Al lado de Panel de Control, haz clic en el enlace Ver Datos almacenados de esta Cuenta. En la vista que aparece podrás ver, producto a producto, todo lo que tienes asociado con tu cuenta de Google. Ahora, hay una sección dedicada exclusiva y específicamente a Google Buzz. Allí, podrás ver el número de seguidores y personas a quienes sigues, los sitios que tienes conectados, el conteo de comentarios y publicaciones que haz hecho hasta el momento, entre otras cosas. A la derecha de este resumen, hay varios enlaces a través de los cuales puedes cambiar diferentes cosas de tu perfil de Buzz.
3.- Puesdes usar el símbolo @ junto al nombre de una persona, para enviarle un Buzz a él o ella especialmente, pues Buzz te permite escoger de una lista de contactos. Por ejemplo: yo le quiero enviar un mensaje directo a mi amiga Karla, así que pondré @ junto a la "K" de Karla y me aparecerá la lista de personas que están en mis contactos cuyos nombres contengan la letra "K".
4.- Los atajos no son una utilidad exclusiva de Gmail como correo electrónico. Podemos usar los atajos también en Buzz, como por ejemplo la "n" para desplazanos hacia abajo en la vista de Buzz o "p" para hacerlo hacia arriba. La "r", usada para "responder" en Gmail, en Buzz se usa para Comentar. Activar los atajos es muy fácil: ve a Configuración, en la vista de Gmail y en la pestaña General, selecciona Activar combinaciones de teclas, dentro de la sección Combinaciones de teclas.
5.- Puedes enmudecer cada entrada en Buzz de forma individual: hay entradas que se hacen vivaces y captan tanto el interés de las personas que todos siguen comentando una y otra vez. Cada vez que esto pasa, Buzz envía una notificación a tus Recibidos pero tú tienes la posibilidad de evitarlo, al enmudecer cada entrada. Sólo debes hacer clic en la flechita que ves a la derecha de tu Buzz y el menú desplegará varias opciones para ti, como lo ves en la imagen más abajo. También, si no quieres recibir más notificaciones por parte de Buzz, puedes crear un Filtro con los siguientes parámetros: en la sección Contiene las Palabras, escribe "label:buzz" y al dar Paso Siguiente, puedes decidir si deseas, por ejemplo, marcar todas las notificaciones como leídas, entre otras cosas.
Como lo prometido es deuda ya ves que gracias a tus aportes en el Foro de Gmail hemos seguido ir mejorando tu experiencia con Buzz. Recuerda que puedes seguirnos a través de Google Reader (aquí a la derecha, donde dice Site Feed) para que estés siempre al tanto de cada publicación que hacemos y de todas las novedades que El Equipo de Google tiene para ofrecerte. Investigadores del MIT están desarrollando una tecnología realmente brillante que se basa en un enjambre de helicópteros que estarían equipados con LEDs y que podrían organizarse para crear una pantalla voladora.
El proyecto se llama Flyfire y la idea original, que se puede ver perfectamente en el video, es que cada uno de los pequeños helicópteros funcione como si se tratara de un píxel que podría ser modificado de una forma dinámica para poder tener una pantalla que mute cuando sea necesario.
Los creadores comentan que el movimiento de los píxeles tiene una tecnología tan precisa que permiten su adaptación en tiempo real y hace que se puedan transformar a sí mismos convirtiéndose en formas completamente diferentes.
SANS Institute i CWE (Common Weakness Enumeration) han publicat un document que enumera els vint-i-cinc errors de programació considerats com a més perilloses per les vulnerabilitats de seguretat que poden provocar.
És el "2010 CWE/SANS Top 25 Most Dangerous Programming Errors":
| Rank | Score | ID | Name |
|---|---|---|---|
| [1] | 346 | CWE-79 | Failure to Preserve Web Page Structure ('Cross-site Scripting') |
| [2] | 330 | CWE-89 | Improper Sanitization of Special Elements used in an SQL Command ('SQL Injection') |
| [3] | 273 | CWE-120 | Buffer Copy without Checking Size of Input ('Classic Buffer Overflow') |
| [4] | 261 | CWE-352 | Cross-Site Request Forgery (CSRF) |
| [5] | 219 | CWE-285 | Improper Access Control (Authorization) |
| [6] | 202 | CWE-807 | Reliance on Untrusted Inputs in a Security Decision |
| [7] | 197 | CWE-22 | Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') |
| [8] | 194 | CWE-434 | Unrestricted Upload of File with Dangerous Type |
| [9] | 188 | CWE-78 | Improper Sanitization of Special Elements used in an OS Command ('OS Command Injection') |
| [10] | 188 | CWE-311 | Missing Encryption of Sensitive Data |
| [11] | 176 | CWE-798 | Use of Hard-coded Credentials |
| [12] | 158 | CWE-805 | Buffer Access with Incorrect Length Value |
| [13] | 157 | CWE-98 | Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion') |
| [14] | 156 | CWE-129 | Improper Validation of Array Index |
| [15] | 155 | CWE-754 | Improper Check for Unusual or Exceptional Conditions |
| [16] | 154 | CWE-209 | Information Exposure Through an Error Message |
| [17] | 154 | CWE-190 | Integer Overflow or Wraparound |
| [18] | 153 | CWE-131 | Incorrect Calculation of Buffer Size |
| [19] | 147 | CWE-306 | Missing Authentication for Critical Function |
| [20] | 146 | CWE-494 | Download of Code Without Integrity Check |
| [21] | 145 | CWE-732 | Incorrect Permission Assignment for Critical Resource |
| [22] | 145 | CWE-770 | Allocation of Resources Without Limits or Throttling |
| [23] | 142 | CWE-601 | URL Redirection to Untrusted Site ('Open Redirect') |
| [24] | 141 | CWE-327 | Use of a Broken or Risky Cryptographic Algorithm |
| [25] | 138 | CWE-362 | Race Condition |
jQuery 1.4.2 is now out! This is the second minor release on top of jQuery 1.4, fixing some outstanding bugs from the 1.4 release and landing some nice improvements.
I would like to thank the following people that provided patches for this release: Ben Alman, Justin Meyer, Neeraj Singh, and Noah Sloan.
As usual, we provide two copies of jQuery, one minified (we now use the Google Closure Compiler as the default minifier) and one uncompressed (for debugging or reading).
You can feel free to include the above URLs directly into your site and you will get the full performance benefits of a quickly-loading jQuery.
Additionally you can also load the URLs directly from either Google or Microsoft’s CDNs:
A full list of the API changes can be found in the 1.4.2 category on the jQuery API site.
In this release we’ve added two new methods: .delegate() and .undelegate(). These methods serve as complements to the existing .live() and .die() methods in jQuery. They simplify the process of watching for specific events from a certain root within the document.
For example:
$("table").delegate("td", "hover", function(){
$(this).toggleClass("hover");
});
This is equivalent to the following code written using .live():
$("table").each(function(){
$("td", this).live("hover", function(){
$(this).toggleClass("hover");
});
});
Additionally, .live() is roughly equivalent to the following .delegate() code.
$(document).delegate("td", "hover", function(){
$(this).toggleClass("hover");
});
There has been some large code rewrites within this release, both for performance and for fixing long-standing issues.
As is the case with virtually every release of jQuery: We’ve worked hard to continue to improve the performance of the code base, making sure that you’re provided with the best performing JavaScript code possible.
According to the numbers presented by the Taskspeed benchmark we’ve improved the performance of jQuery about 2x compared to jQuery 1.4.1 and about 3x compared to jQuery 1.3.2.

Specifically we’ve improved the performance of 4 areas within jQuery:
$("body"). (Commit)While comprehensive benchmarks like Taskspeed can be interesting if deconstructed into individual sub-tests for further study, as a project we tend to stay away from using them as an accurate measure of true, overall, library performance. Considering how many aspects make up a library, not to mention the different techniques that they offer, cumulative results rarely reflect how an actual user may use a library.
For example, we saw significant overall performance speed-ups in Taskspeed simply by optimizing the $("body") selector because it’s called hundreds of times within the tests. Additionally we saw large gains by optimizing .bind() and .unbind() by a fraction of a millisecond – an inconsequential amount – especially considering that any cases where you would bind hundreds of events you would likely want to use .live() or .delegate() instead.
We’ve collected some results from the other major libraries as well but are less interested in those results and far more interested in the performance improvements that we’ve made relative to older versions of jQuery itself.
We will continue to work on optimizing the jQuery code base – indefinitely. It’s always a major concern for us to try and provide the fastest JavaScript/DOM-development experience possible. And yes, there will likely always be ways to gain additional performance – either through internal optimizations or by pushing critical functionality off into browser-land for standardization.
The largest internal changes have come through a much-needed structural rewrite of the events module. Many quirky issues related to event binding have been resolved with these fixes.
Namely event handlers are no longer stored as object properties in jQuery’s internal object store (with metadata attached to the handlers). Instead they’re now stored within an internal array of objects.
If you’ve ever had the opportunity to play around with .data("events") on a jQuery element you would find that it returns an object with all the event types currently bound, within it.
To enumerate some of the changes that have occurred during this rewrite:
As a side-effect of these changes we had to change the newly-exposed special add/special remove APIs in order to accommodate the new event data objects. Ben Alman is in the process of writing up a large tutorial on jQuery’s special event system and we will be making additional announcements when that occurs.
There were a total of 40 tickets closed in this minor release. Some relating to differences between jQuery 1.3.2 and jQuery 1.4.x, some fixing long-standing issues (like in the case of the event module rewrite).
Raw Data
This is the raw data that we collected to generate the aforementioned charts.
jQuery 1.3.2 jQuery 1.4.1 jQuery 1.4.2 Prototype 1.6.1 MooTools 1.2.4 Dojo 1.4.1 YUI 3.0.0 FF 3.5 2182 806 565 2156 1073 575 1885 FF 3.6 1352 677 519 2067 857 750 1494 Opera 983 697 222 793 678 218 1201 Safari 610 435 252 315 235 238 612 Chrome 1591 703 293 271 312 222 745 IE 8 2470 1937 1141 3045 4749 1420 2922 IE 7 4468 3470 1705 9863 10034 1737 5830 IE 6 6517 4468 2110 13499 11453 2202 7295