Dile no a la matriculación obligatoria en informática

planet LUGMen

July 03, 2008

coronel

And the winner is…. Ruby on rails

Jeje.. que linda vuelta que di. Hace mas de 5 meses que vengo probando distintos lenguajes de programacíon y algunos de sus respectivos frameworks. Finalmente y un poco por la fuerza, me quedo por el momento con Ruby on rails.

Desde hace un mes en mi trabajo estamos programando en Ruby on rails, la decisión no fue una imposición en si, pero si una “fuerte” sugerencia por parte de nuestro cliente! :) Y la verdad que siempre esta bueno que te paguen por aprender cosas nuevas asi que, todos aceptamos el desafío con optimismo.
Luego de llevar un poco mas de un mes usándolo, puedo asegurar que el cambio fue 100% positivo. Rails es una herramienta extremadamente productiva pese a que el aprendizaje del lenguaje Ruby puede ser un poco duro al principio.

Hoy sin ser un experto, (ni mucho menos jeje) puedo asegurar que rails me ha provisto toda una serie de buenas practicas de programación que antes no tenía. Entre ellas, el testing por mencionarles solo una.

Bueno, cuando tenga mas ganas de escribir voy a comentar mas cositas al respecto. :)

by coronel at July 03, 2008 02:30 PM

cerealbars

Una ordnariez =(

Hoy en la mañana, mientras estaba en irc, salió el tema del Twitter. @kastor envió una url y una linea que permite enviar los updates usando curl, y yo hice la siguente picanteria: #!/bin/bash USER=cereal_bars PASSWD=****** read -p “wtf r u doing? ” TWITT curl -u $USER:$PASSWD -d status=”$TWITT” http://twitter.com/statuses/update.xml Metes eso en un archivo, le das chmod +x y lo [...]

by Boris at July 03, 2008 02:13 PM

July 02, 2008

coronel

Ollie1 renovado!

Uff.. al fin luego de varios años de no inversión atinamos a actualizar el hardware de ollie1, nuestro server hogareño donde corre este blog entre otras cosas.

El flamante hardware es un Procesador AMD Sempron de 2.1Ghz sobre un motherboard Asus y 512MB de ram. Creo que va a aguantar un par de añitos mas! :)

by coronel at July 02, 2008 01:14 AM

July 01, 2008

marteen

Recursueño()

Me senté en la cama, me saqué las medias y me acosté.
Leí un rato, apagué la Zaurus y me dormí.
{
     Soñé que me acostaba en una cama parecida a la mía en una casa parecida a la mía.
     Me dormí (de nuevo).
     {
          Soñé poco y difuso. Una lástima.
          Me despertó alguien que golpeaba las persianas desde afuera.
     }
     Me volví a sentar en la cama y busqué las medias.
     Estaban sucias, llenas de pelusa. (?)
     A duras penas terminé de ponérmelas.
     Me desperté por el ruido que siempre hace el vecino cuando sale al balcón.
}
Me puse mis medias limpias.
Recién me levanto de la siesta.

Espero que no se repita esta noche, porque cuando me desperté por primera vez, me sentí extrañamente atrapado y no sabía por qué.

by nospam@example.com (Marteen) at July 01, 2008 07:30 PM

June 30, 2008

kastor

In Treatment

Despues de que todas las series que veo (que son varias) terminaron sus respectivas temporadas, la escasez hizo estragos en mi.. y justo me pasaron aprox 32 capitulos de esta nueva serie producida por HBO: In Treatment (que ademas estaba en mi ToDo list para ver). La serie se trata de las “sesiones” de algunos pacientes de un psicoanalista  quien a su vez, por sus propios problemas, debe volver nuevamente a la consulta de su antigua supervisora y terapeuta. Cada capitulo es una sesion con una persona diferente (de lunes a viernes). La serie la dan por HBO. Totalmente recomendada. Agiten sus leechers de torrents :)

by kastor at June 30, 2008 05:48 PM

June 27, 2008

marteen

Suscribirse a comentarios

Tal vez esto es una estupidez de la cual sólo yo no me había dado cuenta aún, pero igual lo comento. Por ahí no soy el único.

En los sistemas de blogueo más populares (Blogspot y Wordpress), se pueden suscribir a todos los comentarios de todos los posts de todo el blog. Sí, no sólo a los de algún post en particular, sino a todos a la vez.

¿Cómo?

A la dirección de un blog de Blogspot, le agregan /feeds/comments/default y se suscriben a eso. Y en el caso de Wordpress, le agregan /comments/feed y se suscriben a eso. No importa que las direcciones correspondientes no digan explícitamente algo.blogspot.com o algo.wordpress.com. Pueden ser .com.ar o .com.ar/algo o lo que sea, siempre y cuando usen la infraestructura bloguerística de los mencionados BSPs.

De esa forma ya no van a tener que estar entrando una y otra vez a los distintos posts de los distintos blogs que sigan para ver si les respondieron sus comentarios o si alguien comentó algo nuevo (incluso si ustedes no han comentado nada antes).

Espero le sirva a alguien.

by nospam@example.com (Marteen) at June 27, 2008 06:01 PM

June 25, 2008

kastor

Archlinux 2008.06 - “Overlord”

Ya salio la nueva imagen iso para que todos quemen y prueben esta distro fantastica :) los anuncios incluyen las siguientes novedades:

- ‘base’ category is always installed
- Use of UUIDs for persistent device naming
- Availability of USB disk images alongside traditional ISOs
- True live Arch installation environment
- Inclusion of the beginner’s guide from the wiki
- Documentation updates
- Includes the current stable kernel, 2.6.25.6

by kastor at June 25, 2008 01:28 PM

June 24, 2008

pabluk

La mierda de la inseguridad

Seguramente no es novedad para nadie escuchar a alguien quejarse de la inseguridad, pero ahora me toco a mí, ayer entraron al departamento donde vivo para robarme entre otras cosas mi laptop, una HP Pavilion 2422. Viviendo en un lugar que cualquiera consideraría seguro, parece que de todas formas no es suficiente. Así que supongo que por un buen tiempo no posteare nada. Bye!

PD: muchas gracias a todos los hijos de re mil puta que compran cosas robadas por 2 mangos y se creen que son unos vivos bárbaros por comprar más barato.

by PaBluK (noreply@blogger.com) at June 24, 2008 10:49 PM

kastor

MDZBlogs ya esta en la prensa local :)

MDZ Blogs salio en el diario MDZ Online comentando toda la movida de los bloggers mendocinos..

Gracias Yamila Marañón por la nota :)

by kastor at June 24, 2008 05:53 PM

June 23, 2008

marteen

Buena combinación

No soy de postear videos (de hecho éste es el primero), pero me pareció muy bueno como para dejarlo pasar.



Qué buenos recuerdos... :-)

Saludos.

by nospam@example.com (Marteen) at June 23, 2008 07:28 PM

June 22, 2008

facundo

Mimi Maura en Cacano



Haciendo covers: "Siguiendo la Luna" + "Kaya" (calidad de video y sonido mala)

---------------------------------------------------

by Facundo (noreply@blogger.com) at June 22, 2008 06:58 PM

June 21, 2008

pabluk

mv /home/pabluk

Hace unos días que terminé de mudarme por décima vez en Mendoza!! Desde que estoy hace un par de años estos fueron los lugares por los que estuve
  1. Compartiendo departamento con Charly sin palabras :|
  2. El tio Resi y su residencia de Sgto. Cabral, buenísimo! Conocí gente copada que todavía veo, Gabi, Dani, Nadia, Leandro y a otros a los que no veo tan seguido
  3. En la casa del Sr. viejito de Agustí Alvarez, ahí estuve viviendo con Marina en una parte de la casa que nos alquilaba. Después de un mes se puso insoportable el viejito
  4. En la residencia cerca de la UNC very dangerous! quedaba en un barrio copado lejos de todo pero cerca de un par de villas, por suerte solo estuve un mes ahí
  5. El dpto de Paso de los Andes donde estuve 2 años, al principio viviamos con Marina y después se sumó Amancay! que recuerdos
  6. La residencia Olascoaga the best! era como estar en un hostel y a la vez en la casa de Gran Hermano, solo faltaban las cámaras. Viviendo con 15 personas de todos lados, de España, Inglaterra, Chile, Bolivia, Francia, México, Ecuador, Alemanía, etc. Conocí mucha gente copada, loca, interesante, divertida e importante. Definitivamente las mejores fiestas estuvieron ahí
  7. El depa de Leandro buenísimo a unas cuadras de la facu
  8. Viviendo en un garage pude saber como se sentía Alf. Vivir un garage no es tan feo como suena
  9. La casa de Granaderos a metros de la pileta de natación del gimnasio municipal nro. 1, excelente para ir de 23:00 a 24:00
  10. El departemento de Gral. Paz con el Tute y familia
  11. Ahora viviendo en Lamadrid de vuelta a la quinta, solo (al menos hasta que llegue Méli), cerca de la facu y de la Parra donde venden los mejores brownies.
¿En que lugar de Mendoza será mi próxima mudanza?... quién sabe, pero espero que no sean muchas más! Después de tantas mudanzas puedo decir que todo lo que uno necesita para vivir puede entrar en una mochila normal y otra de 60 litros ;)

by PaBluK (noreply@blogger.com) at June 21, 2008 11:50 PM

June 19, 2008

kastor

Mendoza Blogs a.k.a Planet MDZ

Despues de la ultima juntada con bloggers mendocinos, surgio de la charla hacer un blogroll o mas conocido como planet.. bueno aca lo estamos presentando en sociedad, con la colaboracion y diseno de fran

http://www.mdzblogs.com.ar/

by kastor at June 19, 2008 04:15 PM

June 18, 2008

marteen

Más de ocho millones...

... de descargas de Firefox3 en 24 horas.

Si todavía no lo usás, por favor empezá a usarlo. Por el bien de La Internet.

Gracias. :-)

by nospam@example.com (Marteen) at June 18, 2008 06:50 PM

June 15, 2008

marteen

Juntada por el "Día del Comentarista de Blogs" en Mendoza

A pesar de que no soy un comentarista ni bloguero frecuente, anoche fuimos con Fragaria Vesca a una juntada organizada por erian.

La verdad, me dieron ganas de empezar a postear y comentar más seguido. Espero poder cumplir.

Estuvo muy bueno, y ojalá que se repita. :-)

by nospam@example.com (Marteen) at June 15, 2008 12:55 AM

June 14, 2008

kastor

Juntada de Comentaristas y Bloggers

Fran organizo una juntada por el Dia de los comentaristas de blogs.  Hubo bastante concurrencia, gente de diferentes palos, pero todas buena onda.. para mi sorpresa me encontre con marteen y debora, tambien asistieron anahi y cabeza. Algunas de las fotos de la juntada pueden verla en flickr y la lista de los blogs que se recopilo en la juntada en el blog de graciela

UPDATE:  mas fotos de anahi

by kastor at June 14, 2008 04:10 PM

June 13, 2008

pabluk

Another Twitter command-line client

No sé hasta cuando me va a durar, pero por ahora sigo usando Twitter. El tema o la excusa para escribir este script, es que es un embole tener un browser corriendo solo para ver los updates. Y aprovechando que la API esta por todos lados y no es nada complicado hacerse un cliente en cualquier lenguaje. En este caso lo hice con PHP, si si ya sé que podría haber usado hasta bash y tidy para esto. Pero esto fue lo más rápido que encontré para hacerlo, solo necesitaba PHP para parsear JSON y un poco de PEAR. Twitter también soporta XML, RSS y ATOM.
<?php
include ("HTTP/Request.php");

$user = "pabluk";
$pass = "pass";

$timeline = new HTTP_Request("http://twitter.com/statuses/friends_timeline/" . 
                             $user . ".json");
$timeline->setBasicAuth($user, $pass);
$timeline->sendRequest();

$updates = array_reverse(json_decode($timeline->getResponseBody(), TRUE));

foreach ($updates as $update) {
    if ($update['user']['screen_name'] == $user) {
        echo "\033[32m" . $update['user']['screen_name'] . ":\33[37m " .
             $update['text'] . "\n";
    } else {
        echo "\033[33m" . $update['user']['screen_name'] . ":\33[37m " .
             $update['text'] . "\n";
    }
}

?>
Bastante sencillo, muestra el username en color y uso array_reverse() para ordenar los updates en la terminal, así aparecen los más recientes al final. Lo ejecuto con
pabluk@amidala:~$ php twitter-status.php
Para tenerlo cada tanto actualizado se puede correr con
pabluk@amidala:~$ while : ; do clear ; php twitter-status.php ; sleep 120 ; done
Y por supuesto que también se pueden enviar updates, usando curl
#!/bin/bash

curl -u "pabluk:pass" -d status="$@" \
        "http://twitter.com/statuses/update.json" &> /dev/null
y haciendo
pabluk@amidala:~$ twitter-update.sh "fin del post..."

by PaBluK (noreply@blogger.com) at June 13, 2008 09:54 PM

kastor

Que miedito…

Que miedito que me dan los personajes de esta foto..  fue como concentrar la gente mas nefasta en un mismo cuadro..  no estaran demasiado “preocupados” por lo que pasa en el mundo?

foto: la nacion

by kastor at June 13, 2008 01:01 PM

sergio

Acceso a MSSQL desde Python / PHP


Sistemas operativos: Linux y Windows

Notas y posible apunte de alumnos

Comic: http://the-geek.org/xkcd-es/strips/python/



Comprobado en MSSQL 2000 Enterprise en ingles, con SP2 (en inglés también). La versión en español presentaba problemas aleatorios de acceso al puerto 1433, y no traía la simpática base Northwind.

Notas importantes

Importación de base anterior, en MySQL:
  • http://www.microsoft.com/technet/prodtechnol/sql/2000/deploy/mysql.mspx

Codificación

El primer cabezazo serio trabajando con Python/PHP y contra MSSQL, sobre Windows / Linux / BSD, seguramente serán las codificaciones. En términos generales:

(Fixme):
  • Las ventanas trabajan en UTF-8
  • Las consolas Linux (actuales), en UTF-8
  • Las consolas BSD, en ISO8859
  • MSDOS, en ASCII
  • Las bases de datos, en ISOnnnnn o tambien, latin1

He dejado varios vínculos útiles en http://del.icio.us/karancho/utf-8

#Ejemplo con datos de MSSQL, base Northwind
print unicode(oRS.Fields.Item("ShipAddress"))

#Ejemplo decodeando un valor dentro de un array, procedente de MySQL, via ADODB, en
#latin1 (ISO8859-15, creo), y repleto de acentos y caracteres raros
print arreglo['curso'].decode('latin1')

#Ejemplo para cargar un wx.grid, en una posición determinada
nombre = arr['nombre'].decode('latin1')
grid.SetCellValue(i, 2, nombre)

Mapa

MSSQL Desde Linux
Dentro de Windows
Python
Ejemplo 2
Ejemplo 3
PHP
Ejemplo 1
Idem Ejemplo 1



Ejemplo 1: Cliente: Linux
+ PHP
-> Destino: Windows con MSSQL


  • Paquetes necesarios en Ubuntu: php5-adodb y php5-sybase
  • En Windows, con los componentes ADODB que trae XAMPP es suficiente.
  • ¡No copiar código desde aquí!, hacerlo desde http://pastebin.lugmen.org.ar/4164


<?php
print "
<HEAD>
<!-- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> -->

<!-- Codificaciones debido a los acentos procedentes de SQL Server -->
<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'/>
<!-- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/> -->

</HEAD>
";


$resource=mssql_connect("192.168.1.151","sa","coso");
mssql_select_db("Northwind",$resource);

$sql="SELECT * FROM Orders";

$respuesta=mssql_query($sql,$resource);

while ($fila = mssql_fetch_object($respuesta) ) echo "<p>".$fila->ShipCity;

?>


Ejemplo 2: Cliente: Linux + Python-> Destino: Windows con MSSQL


Ejemplo y configuración:

  • http://pymssql.sourceforge.net/example_pymssql.html

Editores: SPE, Geany, Gvim

Ejemplo de Código

import pymssql

con = pymssql.connect(host='192.168.1.151',user='sa',
password='coso',database='Northwind')

cur = con.cursor()

query="select * from Orders;"
for x in range(10):
cur.execute(query)

while 1:
print "n"
print cur.fetchall()
if 0 == cur.nextset():
break


Ejemplo 3: Computadora corriendo Windows + Python + MSSQL
(con ADO)



  • Python for Windows Extensions: http://starship.python.net/crew/mhammond/
  • Aunque yo usé: http://sourceforge.net/projects/pywin32/
  • Estas pruebas las he realizado con MSSQL 2000. Con MSSQL 2005, al poderse usar ODBC sobre SQL server, hay una manera mas simple, documentada en http://www.time-travellers.org/shane/howtos/MS-SQL-Express-Python-HOWTO.html
  • Ejemplo y configuración: http://www.mayukhbose.com/python/ado/ado-python.php

Ejemplo de Código

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# First import two useful modules
from win32com.client import Dispatch
from adoconstants import *

# Create the ADO Connection object via COM.
oConn = Dispatch('ADODB.Connection')

# Now set the connection properties via the ConnectionString
# We're connecting to a SQL Server on 192.168.1.100 using OLEDB.
oConn.ConnectionString = "Provider=SQLOLEDB.1;Data Source=OREGANOOREGANO;" + "uid=sa;pwd=coso;database=Northwind"

oConn.Open()

# Now create a RecordSet object and open a table
oRS = Dispatch('ADODB.RecordSet')
oRS.ActiveConnection = oConn # Set the recordset to connect thru oConn
oRS.Open("Orders")

#print oRS.Fields.Item(0), oRS.Fields(1)

while not oRS.EOF:
#El siguiente print requiere de convertir los datos procedentes de SQL, en ISO, hacia unicode
#Se agradece el comentario de :
http://sebsauvage.net/python/snyppets/#unicode
print unicode(oRS.Fields.Item("ShipAddress"))
oRS.MoveNext()


Espero que sirva :)


by Bunker Blog (noreply@blogger.com) at June 13, 2008 06:11 AM

kastor

pabluk

Keysigning Party @LUGMen

Como algunos sabrán y para los que no también, en la reunión pasada de LUGMen se hizo una keysigning party, hace casi una semana, pero por los efectos del alcohol olvidé mi cámara con las fotos de la reunión en la casa de unos amigos :P Pero acá están. Solo faltaron 2 de los 15 que confirmaron su presencia. Se habló sobre criptografía, nos reímos de los nombres reales y las fotos de los documentos de cada uno, y como siempre hubo tortitas y Coca-Cola®.
Así quedo actualmente mi anillo de confianza
pabluk@amidala:~$ gpg --check-trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:  12  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:  12  signed:   7  trust: 0-, 0q, 0n, 0m, 12f, 0u
gpg: depth: 2  valid:   1  signed:   1  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2010-06-05
Aunque parece que todavía hay algunos que no firmaron y subieron sus claves al keyserver, de todas formas valió la pena.

by PaBluK (noreply@blogger.com) at June 13, 2008 12:21 AM

June 09, 2008

pabluk

Hay cosas que el dinero no puede comprar....

Este parece ser el caso de Twitter. Después de leer este post en el blog de Kastor, decidí probar Twitter. Bajo el lema
"What are you doing?"
uno puedo postear en 140 caracteres lo que esta haciendo, pensando etc. y otros pueden verlo casi instantáneamente.
Parece ser que la idea de los creadores de Twitter fue un éxito y ahora están pagando su precio, porque aparentemente tienen grandes problemas de escalabilidad, las imágenes hablan por si solas, el link de help no lleva a ninguna parte, borrar un mensaje es imposible, lo intente durante 4 minutos y aunque parece procesar mi request no hace nada, también existe la posibilidad de enviar updates vía Jabber pero tampoco me funciono. Y llevo menos de 2 semanas probándolo.
Leyendo estos links (Twitter: Service vs. Platform, Twitter Said To Be Abandoning... y Twitter's problems are the result of architecture, XMPP may be the answer), que me paso Marteen por irc, me entero del problema: el sitio recibe 11000 request por segundo! lo que no es poca cosa!
Esperemos que lo solucionen y follow me on Twitter.

by PaBluK (noreply@blogger.com) at June 09, 2008 08:15 PM

June 07, 2008

kastor

Porque no te dedicas a otra cosa?

Del Diario Critica Digital el Blooper de la “Presidenta” inaugurando las oficinas de Google Argentina en Puerto Madero:

“Por primera vez, a fines del siglo XX, un hombre es el más rico del mundo porque tuvo más inteligencia y más conocimiento, como es el caso de Bill Gates”

Porque no te dedicas a resolver el problema de desabastecimiento, falta de cosas en las escuelas, de darle de comer a los que no tienen, dejarte de joder con los pequeños productores (ojo.. no el “campo¨ osea los grandes productores que se la estan llevando con pala) a ver si haces algo util y frenas la inflacion.. ah?

by kastor at June 07, 2008 01:32 AM

June 04, 2008

kastor

La Nacion de hace eco del bug de Debian en openssl

El diario La Nacion en su version online titula la nota: El Desastre Debian nos afectará por años

Para resumir el incidente, los sistemas que usan la distribución de Linux llamada Debian estuvieron un año y ocho meses creando contraseñas públicas totalmente inseguras. Y esto ocurrió porque dos líneas de código fueron eliminadas de una aplicación conocida como OpenSSL . El Desastre Debian no afecta solo a Linux, sino que alcanza a cualquier sistema que tenga alguna relación con la seguridad en Internet.

Esto es un claro panorama de que linux esta en la mente tambien de los mortales y tambien una clara fotografia de Debian. Please.. dejen de recortar codigo..  si un paquete viola sus DFSG, no lo incluyan y no metan un parche para recortar el codigo que creen que no es libre, aunque esto no tenga demasiada relacion con lo sucedido es un pedido personal :D

by kastor at June 04, 2008 03:03 PM

June 03, 2008

crux

Yo NO apoyo al campo!

Tampoco apoyo al gobierno!

En general no apoyo a nadie con poder que tenga pretenciones de salvador. Ya sea la de repente bondadosa oligarquía dueña de los intereses del campo ni tampoco el de repente justo gobierno populista. Disculpen pero soy desconfiado por aprendizaje. ¿Será que no soy suficientemente argentino?

No me la agarro contra el gobierno “por costumbre”. No me la agarro contra el campo “por defender al gobierno”.

Quiero dejar en claro ésto porque últimamente lo único que escucho es un montón de gente puteando contra el gobierno y eligiendo lados como si se tratara de un River-Boca. Los medios contentos. Al que formó su juicio crítico con información lo felicito y lo invito a que disentamos. Así se crece. NO podemos estar TODOS de acuerdo SIEMPRE.

He dicho :!:

PD: Disculpas por la queja pero necesitaba decirlo :neutral:

by CruX at June 03, 2008 08:51 PM

pabluk

Webcam shots and the Picasa Web Data API

Hace unos días estuve probando darle algún otro uso a la webcam de mi latop. Y terminé probando esto.
Capturar imágenes con la webcam y enviarlas a un webserver, en este caso como no tengo un hosting ni tengo forma de llegar al puerto 80 de mi router desde internet, se me ocurrió usar la API de Picasa Web para subir las fotos a un álbum desde un script.
Para capturar las imágenes probé varios programas que están en los repos de Ubuntu, pero termine usando fswebcam que no está en los repos, más que nada porque soporta v4l2, que es el driver con el que funciona mi webcam. Con fswebcam tomo la foto, le seteo el tamaño, un titulo, etc. Y usando curl subo la imagen a un álbum público de Picasa Web. La API de Picasa Web está bastante documentada así que no hubo muchos problemas para hacerlo.
Acá están los scripts para capturar la imagen y para subirla a Picasa Web.
#!/bin/sh

fswebcam  --resolution 640x480 --timestamp "%d.%m.%Y %H:%M GMT-03:00" \
          --banner-colour "#AA000000" --line-colour "#ff000000" --skip 50 \
          --loop 30 --title "PaBLuK" \
          --font "/usr/share/fonts/truetype/freefont/FreeSans.ttf:10" \
          --exec subirFotoPicasa.sh ~/webcamshots/habitacion.jpg
Con la opción --exec ejecuta el script que sube la imagen después de capturada.
#!/bin/bash

FOTO="/home/pabluk/webcamshots/habitacion.jpg"

AUTHKEY="$(curl --silent https://www.google.com/accounts/ClientLogin \
                --data Email=pabluk@gmail.com --data Passwd=eltuyo \
                --data accountType=GOOGLE --data source=Google-cURL-Example \
                --data service=lh2 | grep Auth)"

FOTOID="$(curl --silent --header "Authorization: GoogleLogin $AUTHKEY" \
      "http://picasaweb.google.com/data/feed/api/user/pabluk/album/Webcam?kind=photo" \
      | tidy -quiet -xml|grep -A 1 edit-media|grep href| cut -d "'" -f 2)"

curl --silent --request PUT --data-binary "@$FOTO" --header "Content-Type: image/jpg" \
     --header "Authorization: GoogleLogin $AUTHKEY" "$FOTOID" | tidy -quiet -xml
En estas líneas se autentifica, toma el id de la imagen dentro del albúm, en mi caso el álbum se llama Webcam, y con la última línea sube y reemplaza la imagen.

Lo bueno:
  • No se necesita tener un hosting.
  • No me preocupo por el BW consumido, que no es poco.

Lo malo:
  • No se puede agregar Javascript o algo para recargar la página de la foto automáticamente desde Picasa Web.


by PaBluK (noreply@blogger.com) at June 03, 2008 10:20 AM

jjo

cmdline, online google shell :)

Nowadays, few times you find yourself staring at a site with a big "woooOOOWWW!!"

Just extremely cool (-:
http://www.goosh.org/

by JuanJo (noreply@blogger.com) at June 03, 2008 07:01 AM

June 02, 2008

crux

Migrating LVM volumes using AoE

It’s been a little over two months since I accomplished this and wanted to share it as I hadn’t found it anywhere over the net. It took me a while but finally it’s here! Enjoy! :cool:

To get everyone in context I’ll say that I had some Xen VMs which used LVM volumes as disk images living in one machine and I suddenly needed them on another one. After searching for some tried and tested solution I found none. So the only option I could see was to do some kind of dump (probably dd involved with bzip2) and bring them over to the other machine. Be it by network, DVD or external disk. Haven’t done it before, and it sure would have taken some effort on my part. Downsides: dangerous precise movements required and nothing new learned. This was a no-op :wink:

Luckily an alternative came to my mind. I could use AoE [1] (ATA over Ethernet not Axis of Evil nor Age of Empires!!!) and some LVM wizardry. Upsides: dangerous precise movements required and cool stuff learned. This was the way to go! :grin:

Just for the sake of clarity some definitions and requirements first. All the stuff below was done on two Debian Etch 4.0 boxes. Both of them having Xen for virtualization and LVM2 for storage administration. You’ll need an AoE enabled kernel (Debian’s kernels are from 2.6.11+). You’ll also need the aoetools package in the destination machine at least. Let’s call ORIG and DEST the machines and VG = Volume Group, PV = Physical Volume and lv = Logical Volume. If that’s mumbojumbo to you then keep away from the next commands!

Now to the recipe:

Enable AoE server on ORIG

root@orig-host# vbladed 0 0 eth1 /dev/md1

That should export any block device you want over eth. In my case a whole RAID device (md1) was exported through eth1 with major 0 and minor 0. Consider that Ethernet protocol is layer 2 and is non-routable. Another thing is that AoE provides no security inherently, so I enabled it manually for this and disabled it afterwards. If you are going to use it otherwise make sure you design a security scheme to go with it.

Enable AoE support on DEST

root@dest-host# modprobe aoe

Then search for AoE devices and make sure it found some

root@dest-host# aoe-discover
root@dest-host# aoe-stat

That should output something like “e0.0 250.000GB eth0 up”. At this point you should have a new block device available on the client box named /dev/etherd/e0.0. You can do anything to that block device as if it was a locally attached device. Cool!

Now we have to disable the ORIG-VG and make it unknown to the ORIG LVM system

root@orig-host# vgchange -an ORIG-VG
root@orig-host# vgexport ORIG-VG

Tip from experience: it’s better to have a dedicated VG for storing VMs images so we don’t have any downtime in the real box. I had the root filesystem on the same VG and had to switch to runlevel 1 just in case :???:

Search for new PVs on DEST and add them to LVM

root@dest-host# pvscan

Merge the two volume groups into one

root@dest-host# vgmerge DEST-VG ORIG-VG

Move LVs from ORIG-PV to DEST-PV. This is the step that’s gonna take forever or not depending on your network speed and the amount of data to move. I don’t have my exact figures but I recall it taking a couple of hours.

root@dest-host# pvmove -n some-lv /dev/etherd/e0.0 /dev/md1

Note this time /dev/md1 is the destination RAID device which belongs to DEST-VG, not the one on ORIG box stated before.

Once it finishes we want to make things go back to normal. So we disable the VG so we can do the split (James Brown style baby!) Then we re-enable the VG

root@dest-host# vgchange -an DEST-VG
root@dest-host# vgsplit DEST-VG ORIG-VG /dev/etherd/e0.0
root@dest-host# vgchange -ay DEST-VG

Now we have to disable the ORIG-VG and make it unknown to the DEST LVM system

root@dest-host# vgexport ORIG-VG

Back to the ORIG box we re-add the “lost” VG and re-activate the VG

root@orig-host# vgimport ORIG-VG
root@orig-host# vgchange -ay ORIG-VG

And that should be it! I’ll stop writing now since it’s a long post already. Hope somebody finds this useful and/or inspiring. Good luck!

[1] http://www.howtoforge.com/ata_over_ethernet_debian_etch

by CruX at June 02, 2008 02:37 PM

June 01, 2008

pabluk

Se vienen las JRSL 2008

Hace unos días que la gente de CaFeLUG comenzó con la difusión de las Jornadas Regionales de Software Libre 2008 que se realizan el 20, 21, 22 de agosto en Buenos Aires.
La lista de invitados parece interesante y ya hay varios confirmados, pero más allá de los invitados también esta bueno el ambiente que se genera en estos eventos, incluido el viaje y las salidas post-evento ;)
Espero poder ir, aunque para esas fechas se me puede complicar, además cae entre semana Ouch!. Veremos que pasa.
Más info sobre las JRSL acá.

by PaBluK (noreply@blogger.com) at June 01, 2008 10:34 AM

May 28, 2008

pabluk

Usando nautilus-scripts

Me sucedió varias veces que necesito enviar por mail alguna foto que estoy viendo con Nautilus, y la mayoría de las veces son fotos de 2560x1920 píxeles, y es un perno tener que estar cambiandoles el tamaño, sobre todo si son muchas fotos.
Así que arme este script pedorro para Nautilus, con el que selecciono los archivos desde Nautilus, me los convierte y me los copia al desktop.
#!/bin/bash

TO="$HOME/Escritorio"

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read FILE ; do
    if [ -n "$FILE" ]; then
            if [ `file -b "$FILE" | cut -b -4` = "JPEG" ]; then
                FILENAME=`basename "$FILE"`
                if [ ! -f "$TO/$FILENAME" ]; then
                    convert -resize 800x600 "$FILE" "$TO/$FILENAME"
                fi
            fi
        fi
done
Hay que grabarlo, por ejemplo, como Img2Desktop, darle permisos de ejecución y copiarlo en .gnome2/nautilus-scripts/ para usarlo hay que seleccionar una o varias imágenes desde Nautilus, click derecho y dentro del menú scripts seleccionar Img2Desktop.
Hay que tener en cuenta que para la conversión de las imágenes usa convert incluido en el paquete imagemagick.
También se le puede agregar con Zenity una barra de progreso durante la conversión o que después de que termine avise en el área de notificación de Gnome, pero eso quedará para un futuro muuuy lejano.

by PaBluK (noreply@blogger.com) at May 28, 2008 11:43 PM

May 27, 2008

kastor

Network Manager, hostname y dhclient

Tal vez esto es una ñoñez, pero siempre me molesto que NetworkManager no le mandar el hostname al server dhcp. NetworkManager tiene como dependencia y lo usa a dhcdbd, que es el cliente dhcp de dbus, que a su vez usa un cliente dhcp comun y silvestre, en mi caso y seguro en el de muchos dhclient.

En Archlinux el archivo de configuracion es el /etc/dhclient.conf (ver en otras distros)

send host-name “TU_HOSTNAME”;
supersede host-name “TU_HOSTNAME”;

poniendo esas lineas magicas el cliente dhcp envia al dhcp-server y este al dns el nombre del host para agregarle una entrada automatica al dns. Lo unico q me esta quedando en el tintero es si se puede poner alguna variable de entorno en vez de hardcodear al hostname, si alguien lo averigua agredecido! :)

by kastor at May 27, 2008 10:52 PM