Google’s “go” simple & stupid benchmark (1st round: I/O)
Systems programming language? They gotta be kiddin…
$ cat hello.cpp && g++ hello.cpp && > time for i in $(seq 100); do ./a.out >/dev/null; done #include <stdio.h> int main (int argc, char** argv) { for (int i=10000;i--;) { printf("hello, world\n"); } } real 0m0.427s user 0m0.220s sys 0m0.164s
$ cat hello.py && > time for i in $(seq 100); do python hello.py >/dev/null; done for i in range(1,10001): print "hello, world" real 0m3.809s user 0m2.800s sys 0m0.724s
$ cat hello.go && 8g hello.go && 8l hello.8 && > time for i in $(seq 100); do ./8.out >/dev/null; done package main import "fmt" func main() { for i:=10000;i>0;i-- { fmt.Printf("hello, world\n") } } real 0m7.528s user 0m6.388s sys 0m0.664s
Continued in Round 2: memspeed
Puls, 256 bytes intro by Arriola
This post is twice the size of Puls 😯
09.2.09hoygan, no puedo resizear las afotos, cómo ago!
Hay momentos en la vida en que pringar puede ser divertido. Por supuesto, se trata de cuando alguien te ruegadeja migrar su apestoso Microsoft Windows Whatever (TM) a Linux.
En su primeras horas de contacto con una Ubuntu 9.04 recién instalada, mi querida aikurushii se me queja en formato hoygan (que en mala hora se me ocurrió enseñarle) de que en Windows podía redimensionar imágenes con solo hacer click derecho, y ahora en Linux no, y que Linux apesta.
Como acto reflejo, me calzo un ssh a su ordenador, y esgrimiendo vim a dos manos le esbozo un bash en 5 minutos:
#!/bin/bash size=$(echo "$0" |sed "s/.*\.\(.*\)\.sh/\1/g") for i in "$@" do newname="$(echo "$i" |sed "s/\.\(...\)$/.$size.\1/g")" cp "$i" "$newname" mogrify -resize $size "$newname" done text="Resized to $size px wide." #some optional user interface candy, uncomment at will: #zenity --info --text "$text" #echo $text
El script en cuestión se guarda en, por ejemplo, /usr/local/bin/resizer.640.sh, o resizer.1024.sh, o la resolución a la que se quiera redimensionar las imágenes (también se puede symlinkear el script con varios nombres, por supuesto, y cada uno resizeará a un tamaño diferente).
Y por fin, desde el navegador de ficheros de turno, se le dice que abra las imágenes en cuestion con el susodicho script, et voilà, Linux doesn’t suck any more!
Bueno, y entonces es cuando se me ocurre googlear un poco 😀 y encuentro esta cosa llamada NIS… si el caso es reinventar la rueda 😀 😀 😀
06.5.09Frikuriosidades estadisticas en bash
Tras descubrir el excelente sitio CommandLineFu, no he podido resistirme a probar uno de sus fus con los cuatro usuarios que utilizo mas a menudo.
El comando en cuestion muestra un Top 10 de comandos usados en bash:
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Los resultados obtenidos son:
stenyak@home root@home stenyak@work root@work 3195 ls 1098 ls 1481 ls 182 pacman 2240 cd 639 cd 1310 svn 146 ls 1147 hg 356 vi 1045 cd 80 rm 1077 vi 303 emerge 1017 vi 74 vi 393 rm 233 eix 979 make 58 cd 381 su 144 rm 386 rm 36 for 357 find 93 grep 373 grep 23 ping 333 man 87 mount 269 ssh 19 umount 293 mplayer 82 man 266 svndiff.sh 19 grep 275 mv 81 smartctl 161 hg 15 su
Por supuesto, las estadisticas son todo mentiras. Cabe destacar el buen trabajo que hacen muchas distribuciones en conseguir que bash autodestruya sus historiales. No me he molestado en comprobarlo en las Gentoo y ArchLinux que utilizo, pero si usais Ubuntu, que sepais que os ocurre by default.
Pero weno, que he hecho esto porque me aburria, asi que la rigurosidad de la prueba nos la pela un poco, no? xD
He probao el script en la RedHat de mi server offsite, pero parece no funcionar; si alguno hoygais un fix, ruego compartais el conocimiento.
(tenia pensao meter una grafica de gnumeric o gnuplot por aki, que los posts siempre quedan mejor con dibujines para que la gente no tenga que leer, pero sorry, no me aburro tanto esta vez 😀 . Weno, vamos a intentar hacer el blog un poco mas interactivo, a ver que tal sale…)
¿Cual es tu Top 10 como luser y como root?
Bash 4.0 on the loose!
Parece que hay una nueva version del omnipresente y monopólico shell default en casi cualquier distribución GNU/Linux:
El changelog de la nueva 4.0 no parece sugerir grandes cambios a primera vista, sino más bien pequeños tweaks por aki y por allá, pero son bienvenidos de todas formas. Al fin y al cabo, existen mil y una shells alternativas en caso de que no nos mole mucho la forma a veces warra de implementar funcionalidades en bash 😉
Happy bashacking!
01.20.09Consistent Desktop UI proposal
I’ve always been a bit particular with my desktop preferences. After using WindowMaker, Gnome+Sawfish, Ion2, WMII, Kde+Kwin, Gnome+Metacity, Compiz Fusion+AWN and testing out some more, I’ve yet to see one that fully addresses my needs.
One of my main complaints is the waste of screen real estate. Both window managers and applications themselves are at fault for this. The influence of Windows UI style in panels and windows has prevented most designers from getting the most out of the users’ screens. Ion2 is the window manager i’m currently most happy with, but it’s still not perfect if applications don’t properly cooperate, which is only possible if they follow some sort of guidelines (such as those discussed and published by the FreeDesktop project).
This blog post shows a suggestion that could, IMHO, improve the desktop experience, although maybe at the cost of reduced usability for computer illiterates.
As an introduction, here’s a quickly gimped draft of the idea I had some months ago:
The increase in usable space is obvious (well, at least to power users). The famous and ancient “title bar” is gone. We already have the window title in the so-called task bar, so why repeat it again using a whole horizontal bar for it? And what’s with the habit of dedicating another whole bar for 5 tiny application menues? Furthermore, the old status bar can be set to automatically hide for additional real estate (with a behaviour similar to that of Google browser Chrome).
Most interactive widgets have been moved to the top of screen (but they might as well have been placed on the bottom or aside). Personally, I see no reason for spreading buttons all over the screen, other than following the current desktop environment trends. Having them all close together greatly reduces the need to move the mouse.
Keep in mind that the tabs depicted in that draft are not supposed to be fullscreen-only, but have a mixed TDI & MDI behaviour (similar to Opera but, instead, leaving the management of those document windows to… well, the window manager 🙄 ).
But it doesn’t stop there. While we’re at it, why not merge the ideas behind desktops and apps? Here’s the natural evolution of the original idea:
There, the concept of virtual desktops is applied as a way to organize tabs (instead of using yet more windows for the same application instance).
The key is what I’ve just decided to name generic-bar. This bar contains an “app” icon (gnome icon, firefox icon, favicon…), abstracted pager, “tabs” and applets (menues, buttons, traditional applets…) in any desired number and order. For example, in the last draft there are two generic bars: the first one contains “applications”, while the second one contains what we currently know as “tabs”. In essence, both applications and tabs would be handled the same way by the proposed desktop environment. Furthermore, this hypothetical desktop environment could handle generic-bar nesting of any depth.
The good thing is that this desktop proposal does not remove any functionality currently found on most desktop environment UIs, but actually adds more while freeing up even more space for your valuable applications to use.
11.13.08Looking beyond Pandora’s box
Many of you may remember the awesome Pandora music service. If you’re north american, you can actually still enjoy it, while the rest of the world suffers a massive IP address ban.
Luckily, there are several alternatives to Pandora’s boombox, the most known of which is Last FM: Imeem, Youtube music playlists, Anywhere FM… But recently I got pointed in the direction of a very interesting one: Jamendo.
Jamendo hosts a heck of a lot of music without shitty restrictive licenses. Not only is most of the music very high quality, but it’s also free for download. That’s right, at no cost. You can burn whole albums onto discs, copy them to thumbdrives, share with friends, share with strangers (via P2P)… almost anything you want to do, you can, in virtue of their Creative Commons licenses.
You can also, of course, donate some money to the artists you like. 😉
We can’t thank you enough, Lessig!
11.5.08Cómo “arreglar” Gnome (X11 y SSH mediante)
Hago un minipost para añadir una pequeña correción al rant de la semana pasada sobre cómo “arreglar” Ubuntu. En concreto sobre el tema de edición del registro de gnome, donde hacía alusión a lo divertido que puede ser retocar la configuración de Gnome en remoto.
Al grano: existe una nueva opción e), con la que podemos evitar tanto el hospital como el manicomio. Como veis, son todo ventajas!
Consiste en conectar via SSH con X forwarding al host contaminado con gnome en cuestión, tal que asín:
ssh -XC <host con gnome>
Una vez hecho eso, tenemos un prompt normal y corriente, en el que al lanzar cualquier proceso que intente acceder a las X, hará uso del server X11 de nuestro ordenador local 😀 . Mediante la opción -C, además, comprimimos mediante gzip las cosas, bastante util si no estamos en una LAN rápida.
Por ejemplo, si escribimos esto en nuestra shell…
gconf-editor
…se lanzaría una horrorosa ventana GTK en nuestra propia pantalla. Algunos programas dicen chorradas sobre dbus al intentar ejecutarlos, se arregla mediante dbus-launch:
dbus-launch <programa quejica>
Para desafiar aún más nuestra salud mental, podemos probar a hacer gamberradas como lanzar el panel de gnome localmente, con resultados exhilarantes:
- Borde superior: tenemos el panel de Gnome remoto, seguido del panel de KDE local.
- Lado izquierdo: un GIMP remoto (el título <@blackube> denota el hostname remoto).
- Lado derecho: un GIMP local.
- Borde inferior: otro cacho de gnome-panel remoto.
- Fondo de pantalla: el del KDE local.
- Al parecer no se comparten los portapapeles, asi que no se puede copiar-pegar de un gimp a otro. Imagino que será mi culpa de algún modo.
- Ambos GIMPs se muestran con mi configuración local de 120 DPI (y no a los 120 y 90 DPIs respectivos de cada host).
Cómo “arreglar” Ubuntu
Soy de los que opinan que Ubuntu por defecto apesta un buen rato (y cuando digo Ubuntu, también quiero decir Kubuntu, Xubuntu, Edubuntu…). Le salva que es facilísima de instalar. Con este minitutorial espero conseguir que Ubuntu sea usable para alguien más que Joe Sixpack.
Supongo que la mayoría de pegas que tengo son respecto a la filosofía de Ubuntu, pero como es mucho más facil quejarse y escribir en blogs que hacer mi propio fork de Ubuntu, prosigo con mis pataleos. 😀
Lo primero, no sé para qué diablos deshabilitan la cuenta de root, si cualquiera puede hacer un sudo -s o un sudo bash. Por tanto, vamos a ahorrarnos teclear chorradas redundantes, que con el su de toda la vida vale y sobra:
sudo passwd
Por supuesto, nos metemos como root para los siguientes pasos. Hay dos formas:
su #para la gente normal
su -c bash #para la gente acostumbrada a sudo
Lo siguiente, no sé a quién se le ocurrió que para tener permisos de administrador, vale con saberte tu propia clave. Así que vamos a evitar que cualquier luser con una cuenta en el sistema pueda ganar permisos de root:
perl -pi -e ‘s/env_reset/env_reset, rootpw/g’ /etc/sudoers
Otra tema que me enerva bastante es ese asqueroso feto de engendro abortado llamado vim-tiny. No podían poner vi, qué va. Tenian que coger vim, partirle las piernas, extirparle el lóbulo frontal, y ponerle de nombre vim-tiny. Y al vim normal, ya puestos a liarla, le renombramos como vim-full, qué leches…
Después diran que la gestión de paquetes de Gentoo y de BSD son un coñazo, pero por lo menos no necesitamos recurrir a semejantes warrohacks para bastardizar un simple paquete!
apt-get remove vim-tiny
apt-get install vim-full
perl -pi -e ‘s/”syntax on/syntax on/g’ /etc/vim/vimrc #démosle un poco de color a las tareas de sysadmin, en honor al difunto Tiny
apt-get install ssh
usuarios=”root hombreman lusuario”
addgroup sshlogin
for i in $usuarios; do adduser “$i” sshlogin; done
echo “AllowGroups sshlogin” >> /etc/ssh/sshd_config
Lógicamente, esta gentucilla debería tener una política de contraseñas mínimamente digna:
for i in $usuarios; do chage -m 50 -M 60 -W 10 “$i”; done
También queda el tema de que cualquier usuario puede apagar el ordenador cuando quiera, incluso si otro luser tiene abierto un openoffice sin guardar en su sesión.
El equipo donde he metido Ubuntu ha quedado un poco más severo, pudiendo solamente el usuario root reiniciar/apagar/hibernar/suspender el equipo. Por desgracia, debido a las sabias decisiones del equipo de Gnome, uno se ve obligado a elegir entre:
a) Hacer clicks en noséqué clon de regedit.exe.
b) Editar archivos XML a pelo.
c) Dar palos de ciego con gconf-tool desde consola.
Por supuesto, si estais en remoto (como yo), existe otra opción igualmente agradable:
d) Averiguar uno mismo si es solamente una leyenda urbana, o si realmente el ser humano es capaz de meterse su propia cabeza por el weeeeno, como ibamos diciendo, que se puede configurar con algo de paciencia.
Nuestra Ubuntu ya pinta un poco mejor, no os parece?
P.S.: Antes de que se enciendan las llamas, comentar unos pares de cosas:
– Respeto la libertad de cada uno de tener su propia opinión sobre el software mencionado.
– De hecho, estoy seguro de que a alguien le puede gustar semejantes fustañas como Gnome y Gconf.
– Odio casi por igual a Gnome y a KDE.
– La mayor parte de este post la he escrito de coña, incluído este comentario, pero podéis flamearme igualmente 😉
El método de la nevera
¡Hola frikomaníacos!
Bienvenidos otra vez a Frikomanía, el programa para los que a veces se aburren! En la edición de hoy vamos a hablar sobre discos duros y neveras.
Como todos sabemos, solo los blandos hacen backups de sus discos duros, y nosotros no somos blandos. La experiencia nos indica que es mejor esperar a que el disco duro pete. Sólo cuando éste eche humo procederemos a hacer una copia de sus datos.
Así pues, en el frikonsejo de hoy vamos a ver cómo recuperar datos de un disco duro muerto mediante una nevera. Para ello necesitaremos las siguientes herramientas:
- Una bolsa de congelante. Sí, una de esas típicas azules o verdes.
- Una bolsa de aire hermética.
- Un ventilador de Bilbao (aunque con uno de 30cm también debería valer).
- Un trapo que absorba bien la humedad (por ejemplo una toalla o un trapo de cocina limpio).
- Si nuestro ordenador es un sobremesa vertical, un soporte de unos 15cm (una caja, una pila de discos duros, etc.).
- Una nevera que funcione correctamente a temperaturas bajo cero.
- Por último, un disco duro muerto con datos absolutamente críticos. Preferiblemente suena a carraca y al agitarlo se oyen piezas sueltas en su interior.
Una vez dispongamos de todos estos elementos, podemos empezar con las labores de rescate.
Antes de nada, es necesario aclarar que, al contrario de lo que reza la sabiduria popular, los discos duros de hoy en día no están cerrados a cal y canto. Suelen tener alguna pequeña apertura de ventilación, con filtros finos para evitar que entre mierda. Por tanto, el primer paso que vamos a dar es:
Introducimos el disco duro en la bolsa vacía, y la cerramos bien.
En nuestro caso, el objetivo es evitar en la medida de lo posible la condensación de agua en el interior y exterior del disco duro, puesto que el segundo paso es:
Metemos la bolsa con el disco duro en el congelador, y lo dejamos reposar hasta que esté tan frío que duela.
Mientras se enfría, intentaremos aclarar por qué acabamos de dejar un disco duro junto a dos piezas de atún congelado.
La idea básica es contraer el material previamente expandido debido al calor. Tanto los servos como los rodamientos y los circuitos en funcionamiento generan calor. Con la edad, el calor dilata demasiado los componentes, reduciendo la conductividad de las soldaduras. Además de los efectos eléctricos, dicha dilatación puede provocar la desalineación de las cabezas de lectura de los discos. Al congelar el disco duro se revierten y demoran estos efectos, permitiendo leer del disco mientras permanece frío.
Disclaimer: el proceso de congelación y posterior uso del disco duro puede dañarlo hasta dejarlo completamente inútil. Si has sido un blando no debería importarte, porque ya tendrás los datos importantes a salvo. Si en cambio eres un macho de verdad, tienes dos opciones: a) Seguir adelante con este tutorial. b) Irte al rincón de los blandos y pagar grandes sumas de dinero por una recuperacion profesional, en vez de seguir peligrosos frikonsejos en blogs desconocidos. En cualquier caso, la culpa de lo que pase será tuya, y solo tuya.
while (disk.temperature > 0) goto Disclaimer;
Bueno, nuestro disco duro debería estar ya en su punto. Vamos a preparar el entorno de recuperación.
Sacamos un cable de datos y la alimentación para el disco duro, ya sea SATA, IDE, eSATA o una caja conversora USB.
Si hace falta, utilizamos el soporte para no dejar el disco duro colgando. A continuación preparamos la refrigeración adicional:
Colocamos el ventilador bilbaíno apuntando al final del cableado, donde irá colocado nuestro disco duro.
Preparamos la bolsa de hielo rodeándola con el trapo, para evitar humedad.
Ahora llega lo interesante:
Sacamos el disco duro, lo enchufamos al ordenador, y ponemos la bolsa de hielo por encima.
La cosa podría quedar tal que asín (click para ampliar, y perdonad la pésima calidad de la foto):
En mi caso, utilicé una caja USB tanto para el disco fumao como para el backup, de forma que no necesitaba apagar el ordenador, teniendo listo un comando mount + rsync en consola para el siguiente paso:
Copiamos los datos críticos a otro soporte de almacenamiento muy rapidico, antes de que se caliente el bicho de nuevo.
Gracias a toda la ventilación que le hemos metido, el disco debería aguantar alrededor de media hora, tal vez más, suficiente para copiar los datos críticos. Así que con un poco de suerte, terminaremos el día con los datos a salvo y un posapapeles de última generación!
Bueno frikomaníacos, esto ha sido todo por hoy. En el siguiente programa aprenderemos cómo jakear el equispé de nuestros amigos con un bate de baseball, un pañuelo y un frasco de cloroformo.
Hasta la próxima semana! 😀