¡Llegó Firefox 29 con Australis!

Más de dos años de trabajo han rendido frutos, ¡hoy se libera al mundo la interfaz Australis en la versión estable de Firefox 29!

Firefox 29 con Australis

Para quienes no conozcan las bondades de Australis, cuando ejecuten por primera vez Firefox 29 se les presentará un recorrido interactivo de cuatro pasos, para un vistazo general de las principales novedades en la interfaz.

Recorrido por Australis 01

Recorrido por Australis 02

La personalización de Australis es uno de sus puntos fuertes, ¡y es muy sencillo!

Personalizando Australis 01

Por ejemplo, si no deseamos la caja de búsqueda en la barra de herramientas, podemos moverla al menú principal de Australis:

Personalizando Australis 02

Pero Australis no es la única novedad importante en Firefox 29, también ahora podremos sincronizar más fácilmente nuestras pestañas, marcadores, contraseñas, historial, complementos y preferencias, gracias al renovado Firefox Sync.

Firefox Sync

Otras novedades son:

  • Gamepad API habilitada de manera predeterminada.
  • Nueva localización: Malay [ma].
  • navigator.plugins ya no es enumerable, por privacidad del usuario.
  • Ahora al hacer clic en las notificaciones web, se cambiará a la pestaña que originó la notificación.
  • box-sizing (ahora sin el prefijo -moz) ha sido implementado.
  • El objeto Console ahora está disponible en Web Workers.
  • Promises habilitado de manera predeterminada.
  • SharedWorker habilitado de manera predeterminada.
  • <input type="number"> implementado y habilitado.
  • <input type="color"> implementado y habilitado.
  • Habilitado el ECMAScript Internationalization API.
  • La barra de complementos ha sido removida (ahora su contenido se encuentra disponible en la barra de navegación, y obviamente puede cambiarse fácilmente la ubicación de cada icono de complemento).

Como siempre, les exhorto a verificar la lista completa de novedades

Descargas Directas de Firefox 29 en Español

Firefox 29 en Español para Windows:

Firefox 29 en Español para MacOS X:

Firefox 29 en Español para Linux (32 bits):

Firefox 29 en Español para Linux (64 bits):

También pueden visitar la página oficial de descargas cuando el anuncio de liberación de Firefox 29 sea oficial ¡Ya tenemos anuncio oficial!.

Share

Se renuevan las Preferencias “In-Content” en Firefox 31

Luego de casi dos años (¡si, dos años!) de que los chicos de Mozilla empezaran a jugar con las opciones de Preferencias “In-Content”, por fin le hacen un lavado de cara (en la última build de Firefox 31 en su canal Nightly), y ahora tiene un aspecto mucho más agradable.

Se renuevan las Preferencias In-Content en Firefox 31

Aún no está habilitado de manera predeterminada. Hay dos formas de acceder:

  • Entrar directamente con about:preferences
  • Entrar a about:config y establecer browser.preferences.inContent a true

Recomiendo la segunda opción, pues de esa forma ya podemos acceder a las nuevas Preferencias “In-Content” desde el menú principal de Firefox.

Recuerden que lo anterior es sólo válido para la versión Nightly de Firefox. Si ya la están usando, ¡actualicen!… si no, pueden descargarla en el idioma y sistema operativo de su elección.

Share

La Contraseña Perfecta

¿Preocupado por Heartbleed, el bug de OpenSSL? La mayoría de los principales servicios web ya han reportado que han parchado sus servicios, pero la sugerencia generalizada es cambiar de inmediato la contraseña de todas tus cuentas. Si lo haces, es una buena oportunidad de usar contraseñas más seguras, y aquí tienen algunas sugerencias que les serán de mucha utilidad.

How-to-Create-the-Perfect-Password

Fuente

Share

La Web: Un Cuarto de Siglo de Éxito

La Web: Un Cuarto de Siglo de Éxito

¿Qué hacías hace 25 años? Yo aún cursaba mi último año de educación secundaria (tenía 14 años), ya sabía programar en BASIC en mi vieja Commodore 16, y ya tenía muy claro que mi futuro profesional lo dedicaría a la computación. Cómo podría imaginarme que en ese preciso momento un científico británico, Tim Berners-Lee, estaba plasmando la propuesta de lo que eventualmente sería la World Wide Web.

La Web ha evolucionado enormemente en un cuarto de siglo de existencia, y aunque no pretendo ser demasiado técnico en el presente post, si me gustaría hacer una breve cronología, una línea de tiempo de los eventos más significativos para la también llamada WWW.

  • 1989: Tim Berners-Lee y un equipo de colegas del CERN inventaron la World Wide Web.

  • 1990: Una computadora NeXT es usada como el primer servidor web (web server) del mundo. En ella, también fué creado el primer navegador web (web browser), denominado WorldWideWeb (así, sin espacios).

  • 1991: Se puso online el primer sitio web (website). Es una pena que ya no pueda visitarse, aunque se dice que un computólogo de nombre Paul Jones tiene guardada una copia de dicho sitio web en su propia NeXT, copia que el propio Berners-Lee le proporcionó en este mismo año. Por cierto, a finales de este año se publicó el primer documento descriptivo de HTML.

  • 1992: Se sube a la Web la primera foto, por el propio Tim Berners-Lee. Así mismo, Jean Armour Polly empieza a poner de moda la frase surfing the internet.

  • 1993: Se libera el primer navegador web gráfico: Mosaic. Este evento se considera un verdadero parteaguas, pues la Web empieza a perfilarse como el protocolo de Internet más popular, por encima de los predominantes de la época, como Gopher y WAIS. Hoy en día, “Web” es básicamente un sinónimo de “Internet“.

  • 1994: Se funda el World Wide Web Consortium (W3C) por… adivinen… ¡en efecto!, por Tim Berners-Lee. Ese mismo año Yahoo! fué lanzado, convirtiéndose en el primer directorio web. A finales de este año, es liberada la primera versión estable de Netscape Navigator (basado a su vez en Mosaic), el legendario navegador web de los años 90’s.

  • 1995: ¡Empieza la guerra de los navegadores web! Salen a la luz las primeras versiones de Opera e Internet Explorer (IE). Este mismo año nace JavaScript de la mano de Netscape Navigator 2.0. Otro lenguaje que hace su aparición este mismo año: PHP. Y no puedo dejar de mencionar que también nace el que hoy es el servidor web HTTP más utilizado del mundo: Apache.

  • 1996: Nace Hotmail. A finales de este año se publica la primera versión de CSS (CSS level 1 Recommendation). Por su parte, Microsoft incorpora el soporte para JavaScript en Internet Explorer 3.0.

  • 1997: Microsoft adquiere Hotmail. A principios de este año, es publicada la especificación para HTML 3.2, la primera versión desarrollada y estandarizada exclusivamente por la W3C. Por si fuera poco, a finales de este año, se publica HTML 4.0, con sus variantes Strict, Transitional y Frameset. Cabe mencionar que este mismo año, JavaScript se vuelve un estándar bajo el nombre ECMAScript.

  • 1998: Hace su aparición el buscador web Google. Al mismo tiempo, es fundada la Mozilla Organization para hacerse cargo del desarrollo de Mozilla Suite (basado en Netscape Communicator), el cual posteriormente evolucionó al que hoy conocemos como SeaMonkey.

  • 1999: Se lanza Napster, cambiando la manera en la que el mundo empezaría a buscar y escuchar música en línea. Este año empiezan a publicarse los primeros borradores de la especificación CSS3.

  • 2000: En este punto, ya existían más de 20 millones de sitios web activos. Este año se publica la especificación XHTML 1.0.

  • 2001: Se publica el primer artículo de la Wikipedia. ¿Recuerdan cuando antes teníamos que recurrir a la enciclopedia Encarta de Microsoft?

  • 2002: Nace la considerada primera red social: Friendster. Este mismo año, empiezan a salir a la luz las primeras versiones de prueba del navegador web Phoenix (nombre original de Firefox). Así mismo, hace su aparición el servidor web Nginx.

  • 2003: Nace Skype (adquirida hace no mucho por Microsoft). En este mismo año se crea la Mozilla Foundation con el apoyo de AOL, para asegurarse de que Mozilla pudiese sobrevivir sin la existencia de Netscape. Por otro lado, se libera la primera versión del navegador web Safari.

  • 2004: Nace Facebook, hoy considerada la red social más popular del mundo. Así mismo, es liberada la primera versión estable de Mozilla Firefox. Este mismo año, hace su aparición Gmail, pionero y enorme impulsor de la tecnología AJAX, poniendo a JavaScript nuevamente sobre la mesa de los desarrolladores web.

  • 2005: Se sube el primer video a YouTube.

  • 2006: Nace Twitter (su nombre original era Twttr); hoy es considerada la red de información más importante del mundo.

  • 2007: Apple lanza el iPhone; la revolución hacia la navegación web móvil había empezado.

  • 2008: Se lanza Dropbox. Este año, se publica el primer borrador de la especificación HTML5. A finales de este año, en una acción sorpresiva, Google lanza su propio navegador web: Chrome.

  • 2009: Se lanza WhatsApp, hoy propiedad de Facebook.

  • 2010: Se lanza Instagram, hoy propiedad también de Facebook.

  • 2011: Google en un intento desesperado para subirse al camión de las redes sociales, lanza Google+. Este año la especificación CSS 2.1 alcanza el nivel Recommendation por la W3C.

  • 2012: Más de 115,000 sitios web participaron en la más grande protesta en línea de la historia, contra la censura en Internet por SOPA y PIPA.

  • 2013: Microsoft reemplaza definitivamente el servicio de Hotmail por el de Outlook.

  • 2014: ¡La Web cumple 25 años! Además, es justo mencionar que la especificación CSS3 hace apenas unos días acaba de llegar al nivel de Candidate Recommendation por la W3C. Por cierto, a finales del presente año se espera que la especificación HTML5 alcance el nivel Recommendation, con lo cual ¡por fin! sería considerada estable.

Y dije que iba a ser una breve cronología, ¡quedó bastante extensa! Aún así, creo que se me están escapando muchos eventos, así que si sabes de alguno, ¡menciónalo abajo en los comentarios!, para agregarlo a la lista.

Definitivamente la Web ha cambiado nuestras vidas, forma parte de muchas de nuestras actividades diarias. En la Web puedes consultar tus emails, leer noticias que te interesen, platicar con amigos y familiares, hacer tus compras en línea, desde un café, una computadora o un automóvil, o por otra parte, vende tu portatil acá o lo que te puedas imaginar.

Hoy en día, la Web forma parte de mi vida personal y laboral, desarrollo sistemas basados en tecnologías Web, escribo en la Web en este humilde blog, y todavía tengo muchos otros proyectos en el tintero, que espero muy pronto volver a retomarlos. La Web es un enorme abanico de oportunidades.

Y tú, ¿qué hacías hace 25 años? :-)

Share

Solucionar problemas al actualizar a Apache 2.4 en ArchLinux

¡Ha llegado Apache 2.4 a ArchLinux! Es un cambio importante y requiere nuestra intervención manual para hacer que nuestro servidor LAMP vuelva a funcionar sin problemas.

Con la actualización, tenemos nuevos archivos httpd.conf, php.ini y magic, por lo que primero debemos hacer un respaldo de nuestros viejos archivos:

sudo mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.old
sudo mv /etc/httpd/conf/magic /etc/httpd/conf/magic.old
sudo mv /etc/php/php.ini /etc/php/php.ini.old

Entonces, renombramos los nuevos archivos:

sudo mv /etc/httpd/conf/httpd.conf.pacnew /etc/httpd/conf/httpd.conf
sudo mv /etc/httpd/conf/magic.pacnew /etc/httpd/conf/magic
sudo mv /etc/php/php.ini.pacnew /etc/php/php.ini

Apache viene con una serie de Módulos de MultiProcesamiento (Multi-Processing Modules o MPMs) que son responsables de conectar con los puertos de red de la máquina, acceptar las peticiones, y generar los procesos hijo que se encargan de servirlas. En el “nuevo” Apache 2.4 se usa el event MPM (previamente se usaba el prefork, que era más lento y consumía más memoria), que proporciona escalabilidad y buen soporte para alto tráfico de sitios web.

Por lo anterior, hay dos posibles soluciones: Volver a habilitar el prefork, o hacer los cambios necesarios para que el event MPM funcione adecuadamente.

Solución 1: Regresar a mod_mpm_prefork

Si no quieres romperte la cabeza con la migración a las novedades de Apache 2.4, lo que necesitas es volver a habilitar mod_mpm_prefork. Para ello, vamos a abrir el archivo /etc/httpd/conf/httpd.conf

sudo vim /etc/httpd/conf/httpd.conf

… y ahí, reemplazaremos la línea

LoadModule mpm_event_module modules/mod_mpm_event.so

con

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Además, debemos incluir dos líneas adicionales, muy conocidas por nosotros. La primera debemos colocarla en la lista de carga de módulos (LoadModule list) después de LoadModule dir_module modules/mod_dir.so:

LoadModule php5_module modules/libphp5.so

La segunda, al final de la lista de configuraciones adicionales (Include list):

Include conf/extra/php5_module.conf

Y reiniciamos Apache para reflejar los cambios:

sudo systemctl restart httpd.service

Solución 2: Usar el nuevo mod_mpm_event

Si queremos aprovechar todas las bondades y novedades de Apache 2.4, ésta es la solución que debemos seguir.

Como primer paso, vamos a instalar php-fpm desde los repos oficiales:

sudo pacman -S php-fpm

Adicionalmente, instalaremos mod_proxy_handler desde AUR (esperemos que pronto lo agreguen a los repos oficiales):

yaourt -S mod_proxy_handler

En el archivo /etc/php/php-fpm.conf, descomentar la línea (quitar ; del principio):

listen = 127.0.0.1:9000

y comentar la línea (agregar ; al principio):

listen = /run/php-fpm/php-fpm.sock

En el mismo archivo, también debemos descomentar la línea:

listen.allowed_clients = 127.0.0.1

En el archivo /etc/httpd/conf/httpd.conf, agregar al final:

LoadModule proxy_handler_module modules/mod_proxy_handler.so
<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000/"
</FilesMatch>
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Finalmente, en el archivo /etc/php/php.ini debemos asegurarnos de que la siguiente línea está habilitada (descomentada):

cgi.fix_pathinfo=1

Reiniciar los daemons involucrados:

sudo systemctl restart php-fpm.service
sudo systemctl restart httpd.service

¿Y MySQL / MariaDB? Al usar el nuevo archivo php.ini, debemos volver a decirle a PHP de la existencia del servidor de base de datos. Vamos a abrir el archivo /etc/php/php.ini con tu editor favorito …

sudo vim /etc/php/php.ini

… y descomentar (eliminar el ; al inicio) las siguientes líneas:

extension=mysqli.so
extension=mysql.so
extension=pdo_mysql.so

Finalmente, reiniciemos Apache y MariaDB para aplicar los cambios realizados.

sudo systemctl restart httpd.service
sudo systemctl restart mysqld.service

Fuentes: 1, 2, 3.

Share

Optimizando el arreglo $_FILES de PHP

En PHP, cuando usamos un formulario para cargar varios archivos al mismo tiempo con …

<input type="file" name="array_of_files[]" multiple>

… el encargado de recibir los archivos es el arreglo $_FILES, que tiene la nada usable sintaxis $_FILES['field']['key']['index'], que no ayuda en nada para recorrer el arreglo en un loop.

Por suerte, podemos optimizar el arreglo $_FILES para que su sintaxis sea $_FILES['field']['index']['key'], usando lo siguiente:

<?php
function fixFilesArray(&$files)
{
    $names = array( 'name' => 1, 'type' => 1, 'tmp_name' => 1, 'error' => 1, 'size' => 1);
 
    foreach ($files as $key => $part) {
        $key = (string) $key;
        if (isset($names[$key]) && is_array($part)) {
            foreach ($part as $position => $value) {
                $files[$position][$key] = $value;
            }
            unset($files[$key]);
        }
    }
}
?>

Ahora, ya podemos recorrer el arreglo cómodamente:

<?php
fixFilesArray($_FILES['array_of_files']);
 
foreach ($_FILES['array_of_files'] as $position => $file) {
    var_dump($file);
}
?>

De esas joyas que uno encuentra en los comentarios de la documentación de PHP.

Share