Archivo

Archivo para la categoría ‘Programación’

Opencv: Usando la nueva interfaz de python

Domingo, 15 de agosto de 2010 piponazo 1 comentario

Ya os he hablado en alguna ocasión de la librería OpenCV con las que suelo trabajar. Con C/C++ nunca he tenido problemas para usarla ya que más o menos me manejo con estos lenguajes y el compilador gcc en GNU/Linux, pero al intentar probar la interfaz de programación de las OpenCV con python me encontré con el problema de que python no encontraba el módulo necesario (cv). El error que me aparecía en la consola al intentar importar el módulo era el siguiente: Leer más…

GD Star Rating
loading...
  • Share/Bookmark
Categories: Programación Tags: ,

C++: Mezclando plantillas y herencia

Viernes, 16 de julio de 2010 piponazo Sin comentarios

Tras varios años usando C++ aún sigo sufriendo dolores de cabeza cuando me atasco con alguna cosilla como la que os comento a continuación. Estoy desarrollando una librería en la que estoy usando bastante las plantillas y la herencia para intentar abstraer las cosas lo máximo posible. Pues bien, al intentar crear una clase plantilla derivada que heredaba comportamiento de otra clase plantilla me he encontrado con la sorpresa de que el compilador me decía que la clase derivada no tenía visibilidad sobre los miembros de la clase base. La solución a este problema es muy sencilla y os la comento a continuación.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark

Python: /bin/sh: Syntax error: Bad fd number

Martes, 22 de junio de 2010 piponazo 3 comentarios

Editado/Edited: 25/06/10

Estoy probando unos scripts en Python que me han pasado (y que han sido desarrollados sobre Debian) y he tenido problemas a la hora de ejecutarlos. Cuando intentaba ejecutar estos scripts en mi ordenador me lanzaban el siguiente mensaje de error, entre otros:

/bin/sh: Syntax error: Bad fd number

El problema se encuentra en las llamadas que se hacen en el script a os.system() para ejecutar algunos comandos de consola. Como ya he dicho, los scripts han sido desarrollados sobre una plataforma Debian, pero en mi distribución Ubuntu no han funcionado. Esto se debe a que en ubuntu por defecto los comandos se ejecutan por sh y no por bash.

La solución que he visto ya propuesta en varios sitios es eliminar el comando sh de su sitio y hacer un enlace simbólico desde el comando bash a sh. Es una forma un poco bestia de hacerlo … pero no he visto ninguna otra solución. Si alguien conoce una forma más elegante de hacer esto que lo comente por favor.

sudo mv /bin/sh /bin/sh.bak
sudo ln -s /bin/bash /bin/sh

Visto aquí.

Otra solución mejor

En vez de tener que hacer este enlace simbólico mediante el módulo subprocess podemos especificar que terminar queremos usar mediante la opción executable. A continuación os dejo un método que me he creado para hacer llamadas a programas por la terminal usando /bin/bash en vez de la terminal por defecto (/bin/sh en ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable="/bin/bash")
    if retcode != 0:
      print >> sys.stderr, "Error executing command: %s" % cmd,\
      "(return code: %s)" % retcode
  except OSError, e:
    print >>sys.stderr, "Execution failed: %s" % cmd, e

See this page.

A better solution

Instead of making the symbolic link explained in the above post we can use the subprocess module in python in order to specify the shell executable we want to use. The next method written in python is used to run shell command using /bin/bash instead of the default shell command (/bin/sh in Ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable="/bin/bash")
    if retcode != 0:
      print >> sys.stderr, "Error executing command: %s" % cmd,\
      "(return code: %s)" % retcode
  except OSError, e:
    print >>sys.stderr, "Execution failed: %s" % cmd, e
GD Star Rating
loading...
  • Share/Bookmark

CMake: Definir variables para usarlas en el código

Lunes, 21 de junio de 2010 piponazo 2 comentarios

En CMake la definición de variables auxiliares para después utilizarlas en el código es muy sencilla. En esta entrada os dejo una pequeña guía de como definir vuestras varibles, cambiar el valor de las mismas y usarlas dentro del código.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark

Fusión de ramas en subversion (SVN)

Martes, 11 de mayo de 2010 piponazo 1 comentario

He actualizado la entrada de gestión de repositorios con subversion añadiendo una última sección donde explico el proceso del fusionado de ramas personales con la rama principal de un proyecto. Espero vuestras críticas y comentarios ;).

I’ve updated the post control version system with subversion adding a new section where I explain the process of merging between personal branches and the main one in projects. I expect your comments ;).

GD Star Rating
loading...
  • Share/Bookmark