Sucumbiendo…

Mayo 1, 2008 por mescobal

Sucumbí (como era de esperar) a la seducción de la tecnología. Una Asus Eee está en mi poder.

Mi tesssssoro, Gollum! Gollum!

Sumamente recomendable. Puedo trabajar mientras viajo mis (al menos) 15 horas semanales en ómnibus y al llegar a casa, además de mantener la movilidad adentro, puedo conectarle (en forma totalmente transaparente y sin configuraciones extra) un monitor externo, teclado y mouse, con lo que tengo una de escritorio. El inalámbrico funciona perfecto. El teclado en español no se extraña (de hecho aquí van varias eñes) si se configura como US/internacional y se usa alt-tecla para tildes y eñes. Sumamente potente, su linux me permite abrir una terminal (CTRL+ALT+T) y liberar al SO que está debajo. La batería tiene una duración mayor que el promedio de portátiles y la pantalla, si bien podría ser más grande, no sacrificara tamaño por movilidad. Música, webcam y todo el harware funciona sumamente integrado al SO. El Xandros Linux que viene con la máquina es limitado para los estándares Linux a los que estoy acostumbrado (no es un Debian, no es un Ubuntu). Y si bien probé instalarle un Ubuntu 8.04 siguiendo instrucciones del sitio, no anduvo con la misma integración que el Xandros original. Habrá que esperar. Mientras tanto le agregué repositorios extras con lo que pude instalar varias cosas (Stellarium, gPhpEdit, Geany, librerías TclTk para Ruby, Gizmo y varias cosas más). Es fácil tunear la interfase ya que la comunidad ya desarrolló herramientas. Un 9,5 en 10 (por lo limitado de la versión de Xandros en cuanto a programas en su repositorio, nada más).

HTML y texto de ancho fijo

Enero 29, 2008 por mescobal

Problema: Necesitaba imprimir un texto con tipografía de ancho fijo, pero cada vez que lo intentaba, los lugares que contenían espacios se compactaban y se rompía todo el diseño del texto.

Intento 1: creé un CSS que especifica la familia de fuente “monospace”. Siguió igual.

Solución: hay que poner el texto entre etiquetas “<pre> </pre>”

PHP y unicode

Enero 21, 2008 por mescobal

Problema:
Hay un molesto error en php (aparece al inicio de la página un texto que dice:
Warning: Cannot modify header information – headers already sent by (output started at xxx:n) in xxx on line n
Intentos:
Por la red encontré diversas maneras de eliminar ese error. Pero en uno de los archivos,seguía apareciendo.
Solución:
Usando el editor Geany, encontré que la diferencia entre ese archivo y los demás es que tenía activada una opción “Documento -> Escribir BOM unicode”.
El problema es que en el archivo, estaba incluido el famoso BOM unicode. Al quitar esa opción todo funcionó OK.

Python y MySQL desde PHP

Enero 14, 2008 por mescobal

Estaba reconvirtiendo un programita hecho en PHP a Python.
Estaba acostumbrado a hacer:

function datos($tabla,$campo,$clave){
$sql_det = 'SELECT * FROM '.$tabla.' WHERE '.$campo.'="'.$clave.'"';
$res_det = mysql_query($sql_det);
return mysql_fetch_array($res_det);

Sin embargo, al intentar hacer lo mismo en Python

def consulta(sql):
db = MySQLdb.connect(host="localhost",user="xxxl",passwd="xxx",db="xxxx")
cur = db.cursor(MySQLdb.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchall()
return res

Me devuelve un array que requere de un índice entero para referirse a él. Yo estaba acostumbrado a referirme a los campos por su nombre.
Buscando por ahí, encontré la solución que espero sea útil para quien tenga similares problemas:

def consulta(sql):
db = MySQLdb.connect(host="localhost",user="xxxl",passwd="xxx",db="xxx")
cur = db.cursor(MySQLdb.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchall()
return res

El original fue encontrado en “Will code for food“.

Modificaciones al script

Enero 12, 2008 por mescobal

Hice algunas modificaciones al código del script mencionado anteriormente:

 result = re.findall('www\.youtube\.com/v/([A-Za-z0-9_\-]+)', data)
  done_files = []
  # BEGIN proposed changes
  # check if saved directory exists
  line=""
  if os.path.exists('defaultdir.txt'):
    # if file exists load its content
    f = open('defaultdir.txt','r+')
    line = f.readline()
    if line=="":
        # if the file is empty, then default is home directory
        line="~"
    f.close()
  rootdir_pipe = os.popen('kdialog --title "Save file(s) in..." --getexistingdirectory '+ line)
  root_dir = rootdir_pipe.read().strip()
  print root_dir
  f = open('defaultdir.txt','w')
  # save selected path
  f.write(root_dir)
  f.close()
  # END of proposed changes
  for video_id in result:
    if video_id not in done_files:

Se lo voy a mandar al autor, a ver si le gusta.
La idea es permitir tener un directorio por defecto.

Bajar videos de Youtube con Konqueror

Enero 12, 2008 por mescobal

Encontré este add-in para Konqueror para bajar Y codificar videos de you tube. El programa está hecho en python y es un lindo ejemplo de add-in para Konqueror. Por el momento no logra codificar bien desde FLV a MPG, pero sospecho que es un bug del encoder no del script.

Hello world! / Hola mundo!

Enero 11, 2008 por mescobal

Cuando no estoy posteando en “El Ñudo“, estoy programando cosas de forma totalmente amateur. Está claro que al no ser profesional, todos mis programas parecen código atado con alambre. Sin embargo las cosas casi siempre funcionan. La idea es poner problemas y soluciones encontradas que puedan servir de guía a otros “atadores de código con alambre”.