Temas Light para Chrome/Chromium en Ubuntu 10.10

0

Seguro que han oído hablar de los temas “Light” del nuevo Ubuntu 10.10, estos renovarán su aspecto con mejoras en su interfaz visual que permitirán disponer de temas por defecto más elegante. Los famosos Ambiance y Radiance se han estilizado, pero no todas las aplicaciones siguen esas líneas de diseño.

Chrome/Chromium tema Light

Una de las más conocidas y extendidas es Chromium/Chrome, el navegador web de Google que sigue mejorando en el tema de la interfaz de usuario y que no obstante podremos customizar para dejarlo con un tema que se ajuste al que usemos en Ubuntu 10.10.

En OMG! Ubuntu! nos hablan de dos pequeñas descargas que precisamente permiten ajustar el aspecto de las ventanas de Chrome y Chromium para que sean “coherentes” con el resto de elementos de los nuevos temas Light de Ubuntu 10.10 Maverick Meerkat, así que acá tienen esos dos temas.

Tema Ambiance para Chrome/Chromium en Ubuntu 10.10 Maverick Meerkat

Tema Ambiance para Chrome/Chromium en Ubuntu 10.10 Maverick Meerkat

Tema Radiance para Chrome/Chromium en Ubuntu 10.10

Tema Radiance para Chrome/Chromium en Ubuntu 10.10

El segundo tema, Radiance, está precisamente desarrollado por los responsables de Soft-Libre, así que nuestra bienvenida a los chicos de SL por este esfuerzo, que seguro que deja nuestros escritorios Ubuntu 10.10 Maverick Meerkat más coherentes con su nuevo look and feel :) .

iPhone: iOS 4 para iPhone 2G – Custom Firmware Mod

7

iOS 4 es el primer firmware de Apple que no tendrá soporte para el iPhone 2G (EDGE) y iPod touch primera generación. Esta decisión está justificada por la baja RAM que tienen esta primera generación de dispositivos que fueron lanzados en el 2007. Pero no todo está perdido, la comunidad de iPhone jailbreak ahora llega con un mod, que contiene el look and feel de iOS 4 (formalmente iPhone OS 4) para iPhone 2G. Este mod está basado en el iPhone OS 3.1.3.

Para replicar la experiencia de iOS 4 en iPhone 2G (EDGE), este custom firmware incluye: los 27 nuevos wallpapers de iOS 4, dock y backgrounds semi transparente al estilo iPad, todos los nuevos iconos de iOS 4, Voice Control, y mucho más. Una lista completa de features a continuación.

- Jailbreak
- Hacktivation
- native MMS enabled
- native USB Tethering enabled
- native Bluetooth Tethering enabled
- native Battery Percentage enabled
- 3GS’s Tap To Focus enabled (fake)
- emojii enabled everywhere
- Voice Control Vocalia
- Voice Control Home Button Double Click
- fake Compass to fast-respring
- 4.0 System Version
- 27 Wallpapers from iOS4
- semi-trasparentdock form iOS4
- icons from iOS4
- reflective dock toggle
- springboard backgorund
- sms background
- no Winterboard or BossPaper

Gwibber: Ubuntu y las Redes Sociales

1

Siempre dije que no entendía cual era “la cosa” con esto de las redes sociales, con el Facebook, Twitter y cuanta red social apareciera, aunque la verdad sea dicha, tengo mi cuenta en varias redes sociales, dígase HI5, Facebook, Twitter, Linked In, Menéame… en la única que tenía actividad constante era en Menéame, pero luego cada vez más el contenido de esta se empezo a enfocar en una región (España o Europa) y bueno, aquí lo interesante era intercambiar opiniones y votar noticias, pero, que iba a comentar y a votar si por un lado no entendía las noticias y por otro tampoco me importaban? así que terminé abandonando la única red social que alguna vez me interesó.

Con el resto de redes sociales, nunca terminaron de atraerme por completo y nunca me concentré en ninguna de ellas, de vez en cuando miraba mi twitter y llegaba tarde a los mensajes que alguna vez me enviaron, asi que si vos sos uno de los que alguna vez me escribió, perdón hermano. Lo mismo pasó con mi cuenta de Facebook, y no digamos el HI5, a este último ni asunto le puse, abrí mi cuenta solo porque alguien me envió una invitación y queria ver algunas fotos pero de allí nunca subi nada.

Con el cambio de versión de Ubuntu se anunciaba que esta versión introduciría aplicaciones para redes sociales, y que muchas de sus funciones estaban orientadas a hacer fácil el manejo de tus cuentas, específicamente había una aplicación que me llamaba la atención y tenía curiosidad de explorar, se trataba de Gwibber.

Gwibber es un intento por centralizar en un solo lugar la interacción con las redes sociales, esto para mi tiene mucho sentido pues el principal problema que tengo es que no me gusta estar yendo de red en red para ver si hay nuevos mensajes o actualizaciones de mis amigos, con Gwibber en un solo lugar se tiene acceso a Facebook, Twitter, FriendFeed, Digg y algunas otras.

Estoy usando Gwibber desde hace un mes y la experiencia ha sido buena, hay cosas que podrían mejorar pero aún asi me parece una buena alternativa, ya que me evita el tener que ir a cada sitio. Ahora le doy seguimiento a los que escriben mis amig@s y llego a tiempo para responder los mensajes :D , lo cual ha mejorado mucho mi percepción de las redes sociales, más ahora que he encontrado en Facebook amigos que no veo desde hace años.

(más…)

Node.js – Express vs Sinatra Benchmarks

2

Siguiendo con una serie de post referidos a Node.js, vamos a ver a continuación una serie frameworks para Node.js y su performance respecto a sus contrapartes para Ruby.

Comenzamos realizando un benchmark para Express, con resultados realmente sorprendentes! Los números indicados deben tomarse a la ligera, sin embargo, coinciden en afirmar que Express es bastante rápido.

Si estás interesado en realizar un benchmark de tus propias aplicaciones web puedes leer el artículo ApacheBench Gnuplot Graphing Benchmarks.

Todos los benchmark que verás a continuación fueron realizado con ApacheBench, una concurrencia de 50 y realizando 2000 requests. Tené en cuenta que se utilizó Thin para servir Sinatra requests.

Express vs Sinatra

Para los que no conocen Express, es un NodeJS framework inspirado en Sinatra para Ruby. Debajo pueden encontrar los resultados de un benchmark para un típico “Hello World” response, que incluye NodeJS benchmarks sin el overhead de las características provistas por Express:

Express vs Sinatra Benchmark

Express vs Sinatra
(más…)

Node.js – Server-Side JavaScript

5

Si, ya no solamente para los navegadores web. Aunque existan varias implementaciones de javascript, entre ellas Rhino, Flusspferd, Narwhal (el equivalente de JRuby, IronRuby, MRI, etc) la que está tomando mayor tracción es Node.js.

Node.js es un framework en javascript para el desarrollo de aplicaciones web en el lado del servidor. A partir de todas las implementaciones mencionadas, en enero del 2009 Kevin Dangoor se creo el proyecto de CommonJS, con el fin de crear una especificación que cada implementación pueda cumplir y así tener un API I/O en común.

Node.js es un tanto diferente de otras soluciones, porque está orientado al evento en lugar de ser basado en threads. Web servers como Apache están diseñados en base al modelos de thread, porque utilizan un thread/process para cada request entrante. Mientras esto funciona correctamente para muchas aplicaciones, el módelo de threads no escala muy bien con demasiadas conexiones, como las que se necesitan para servir aplicaciones de tiempo real como Friendfeed o Google Wave.

Node.js, usa un modelo de event loop en lugar de threads, de esta forma puede escalar para manejar ciento de miles de conexiones concurrentes. Node.js toma ventaja del hecho de que los servidores pasan la mayoría del tiempo esperando por operaciones de I/O, como leer un file desde el disco, acceder a servicios web externos o esperar para que el upload de un file termine, porque estas operaciones son mucho más lentas que las realizadas en memoria. Todas las operaciones de I/O en Node.js son asincrónicas, de esta forma el server puede continuar procesando request entrantes mientras espera que las operaciones de I/O finalicen. JavaScript esta muy bien preparado para la programación orientada a eventos, porque tiene funciones anónimas y closures que permiten definir callbacks inline, además que los desarrolladores en JavaScript ya conocen como programar de esta forma. Este modelo event-based hace de Node.js muy rápido, y hace que escalar aplicaciones de tiempo real sea muy sencillo.

Paso 1. Instalación
Node.js corre en sistemas tipo Unix, como Mac OS X, Linux, y FreeBSD. Desafortunadamente o no ;) , Windows no está soportado. Vas a necesitar utilizar la terminal para instalar y correr Node.js.

Abre una terminal y corre los siguientes comandos.

$ wget http://github.com/ry/node/tarball/v0.1.99
$ tar -zxvf ry-node-v0.1.99-0-ga620b72.tar.gzls
$ cd ry-node-87230e6
$ ./configure
$ make

(más…)

La pantalla de inicio se ve mal – Ubuntu 10.04 Lucid Lynx

11


Y aquí viene otra de las sorpresas desagradable. Plymouth es el nuevo sistema, heredado de Fedora, que sustituye a XSplash, que a su vez sustituía a USplash (que es similar a Plymouth :( ) para acompañarnos en el arranque del equipo. Si bien el arranque no es tan rápido como cabría esperar después de todo lo que se ha hablado (la búsqueda del arranque en 10 segundos), lo cierto es que es sensiblemente más rápido que las ediciones anteriores y que otros sistemas operativos. Sin embargo, no son pocos los equipos que tienen estos problemas de video que comentan. En su caso, el Splash screen se mostrará con una resolución limitada, generalmente de 640×480 pixels y 4 bits de profundidad de color, por lo que se verá “dentado” o “pixelado”, con unos escasos 16 colores en total.

Les indicaré una solución que he probado con un equipo Acer Aspire 5542 munido de video ATI 4200, y que además emplea el controlador privativo ATI Catalyst 10.4 en Ubuntu Karmic 64 de bitios.

(más…)

Ubuntu Lucid Lynx se queda sin sonido

2

Ya vimos, al descubrir Ubuntu Lucid Lynx, que podemos tener problemas con el sonido. A mí me sucedió cuando actualicé de Karmic Koala y hace un par de días me preguntaban por este problema (que al menos para mí se ha convertido casi en una tarea rutinaria), así que creo que es interesante volver a tocar el tema.

Lo primero que tenemos que comprobar es si tenemos volúmen. Lo más fácil será hacerlo desde el icono de la bandeja de sistema, pero desde consola también es posible lanzando alsamixer.

Si todo está OK, procedemos a borrar la carpeta de configuración, en nuestra carperta personal:

sudo rm -R /home/usuario/.pulse

Donde usuario es tu nombre de usuario en el sistema.

NetworkManager disabled en Kubuntu 10.04 Lucid Lynx

7

Después de instalar las últimas actualizaciones en Kubuntu 10.04 LTS ya no me pude conectar a ninguna red usando el applet NetworkManager, incluso el icono muestra el estado de desactivado, al dar clic derecho aparece el mensaje de “Network management is disabled” y no da la opción de activarlo.
Después de unos segundos de buscar en google información de “lucid network management is disabled” encontre el bug 555571 en el cual explican el problema tal cual como me paso y la resolución, aquí les dejo mi versión para resolver el problema.
Veamos el archivo del estado de NetworkManager:

$ cat /var/lib/NetworkManager/NetworkManager.state
[main]
NetworkingEnabled=false
WirelessEnabled=false
WWANEnabled=true

Como podemos ver el soprte de red cableado (NetworkEnabled) y la inalambrica (WirelessEnabled) están desactivados.

Cambiamos los valores de false a true:

$ sudo sed -i s/false/true/ /var/lib/NetworkManager/NetworkManager.state

Y reinicie el servicio de NetworkManager:

$ sudo restart network-manager

Y listo Network Manager vuelve a estar activo y ya me pude conectar a la red inalambríca.
Para más información puede ver el Ubuntu Bug #555571.

Ejecutando procesos en paralelo con Javascript

0

El sistema usado en el ejemplo que croczilla.com publica, está desarrollado usando Stratified Javascript (SJS), una implemenetación de Javascript con Javascript O.o. Se trata de una librería multinavegador que nos permite añadir concurrencia a Javascript fácilmente.
La clave está en el uso de tags <script/> de un tipo diferente al que conocemos como text/javascript, usando uno propio se encarga de evaluar el código contenido en él añadiendo una serie de funcionalidades como hold(),resume(), suspend() y la posibilidad de usar concurrencia en Javascript.

Ejemplo

<script type="text/javascript" src="sjs-loader.js"></script>
<script type="text/sjs">
….
function animate(elemname, duration_ms, step_ms) {
 var elem = document.getElementById(elemname);
 var start_time = new Date();
 var x = 0;
 do {
 elem.style.left = x;
 x = (x + 10) % 200;
 hold(step_ms); // Parando la ejecución
 } while (duration_ms > new Date() - start_time);
 }

 function par(a, b) {
 alert("all done");
 }
 // Procesos paralelos
 par(animate("animated_element_1", 10000, 100),
 animate("animated_element_2", 7000, 80));
…
</script>

Como podemos ver, en esta porción de código sacada de una demo de crockzilla.com, usamos hold() para detender la ejecución y usamos el paso de parámetros para comenzar la concurrencia de procesos.
Con los Web Workers a la vuelta de la esquina, estas técnicas nos puedes empezar a mostrar el camino a seguir en unos meses (años). Por el momento, recomendaría usarla con precaución ya que no debemos olvidar que la librería basa su funcionamiento en la evaluación del código, con el coste que esta operación conlleva.

Remote Tail sobre HTTP con Shell Script

1

Surgió un problemática en el trabajo, debíamos debuguear lo que estaba sucediendo en unos Solr que se encontraban en el datacenter y la única via de acceso a los logs era por medio de un webserver.

Seguramente alguien desarrollo alguna herramienta para hacer los mismo que hacemos con nuestro querido tail, pero con files que se encontraban accesible via HTTP. Pero lamentablemente o no, yo no encontre ninguna, y lo primero que se me vino a la mente es el resume, que tienen algunas utilidades de download.

Así que hechando mano a algunas herramientas disponible en la mayoría de los UNIX (bash, curl, awk, wc, cat), y después de un rato de darle vuelta salió este engendro, que si bien no tiene mucho diseño, ni patrones, ni nada por el estilo, increiblemente funciona :) . Por si alguno tiene la misma problemática acá les dejo esta pequeña porción de código, espero les sirva

URL='http://example.com/access.log'; \
SIZE=$(curl -I "$URL" 2> /dev/null | awk '/Content-Length:/ {printf("%d", $2)}'); \
while [ 1 ]; do \
curl -r$SIZE- "$URL" > /dev/null > out; cat out; \
LEN=$(cat out | wc -c); \
SIZE=$(expr $SIZE + $LEN ); \
sleep 1; \
done

La salida se puede combinar con otro comando (siguiendo la filosofía UNIX)

URL='http://example.com/access.log'; \
SIZE=$(curl -I "$URL" 2> /dev/null | awk '/Content-Length:/ {printf("%d", $2)}'); \
while [ 1 ]; do \
curl -r$SIZE- "$URL" 2> /dev/null > out; \
cat out; \
LEN=$(cat out | wc -c); \
SIZE=$(expr $SIZE + $LEN ); \
sleep 1; \
done | grep foo
Go to Top