danigm's blog

danigm's picture

Últimamente he estado jugando con JQuery y llamadas ajax a servcios json y me he encontrado con un pequeño problema. Cuando intentas acceder a un servicio que te ofrece json plano jquery peta y te devuelve un error como este en la consola de javascript del navegador:


Error: uncaught exception: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "js/jquery-1.3.2.min.js Line: 19"]

Esto ocurre porque el navegador implementa una política de seguridad mediante la cual no permite que se acceda a urls diferentes a la que hace la petición. Osea que no puedes hacer peticiones a un servidor externo de json pelado.

Para realizar este tipo de peticiones existen callbacks y jsonp. La idea es que en la url de la petición jquery debes añadir "http://.../?callback=?" y jquery rellenará el resto. Para cada petición jquery pasará como callback un nombre de función "jsonp1234" donde los números son diferentes por petición y el servidor ha de responder con el código json envuelto en esa función "jsonp1234({...});".

¿Qué haces cuando el servidor no ofrece el servicio jsonp?

Aquí es donde viene el proxy guarrón que me he implementado. La idea es pillar todas las peticiones al servidor, pillar el json plano y modificarlo para que sea jsonp.

Para ello lo primero que desarrollé fué un proxy http plano y feo:

  1. # python proxy.py twitter.com 80
  2. import sys
  3. import socket
  4.  
  5. s = socket.socket()
  6. mserver = 'localhost'
  7. mport = 8080
  8. s.bind((mserver, mport))
  9. s.listen(10)
  10.  
  11. server = sys.argv[1]
  12. port = int(sys.argv[2])
  13.  
  14. while True:
  15. try:
  16. print "waiting for requests at %s:%s" % (mserver, mport)
  17. s1 = s.accept()
  18. except KeyboardInterrupt:
  19. s.close()
  20. print "bye"
  21. break
  22. s2 = socket.socket()
  23. s2.connect((server, port))
  24.  
  25. s1 = s1[0]
  26. v = ''
  27. r = 0
  28. while not r or len(r) == 1024:
  29. r = s1.recv(1024)
  30. v += r
  31.  
  32. v = v.replace('Host: %s:%s' %(mserver, mport), 'Host: %s:%s' % (server, port))
  33. print v
  34. s2.send(v)
  35.  
  36. v2 = ''
  37. r = 0
  38. while True:
  39. s2.settimeout(0.3)
  40. try:
  41. r = s2.recv(1024)
  42. except:
  43. break
  44. v2 += r
  45.  
  46. s1.send(v2)
  47. s2.close()
  48. s1.close()

¿Qué hace? pues monta un servidor en el puerto 8080 y cada petición a este servidor la hace directamente al servidor remoto y la respuesta de este es lo que devuelve. Simple ¿verdad?.

Pero yo quiero modificar lo que me devuelve, así que hay que tratar la respuesta del servidor remoto:

  1. #!/usr/bin/python
  2.  
  3. # proxy.py twitter.com 8080
  4.  
  5. import sys
  6. import socket
  7. import gzip
  8. import StringIO
  9. import re
  10.  
  11. pet = re.compile('(GET) (?P<url>.*)\?(?P<args>.*) (HTTP/1.1)')
  12. js = re.compile('(\{.*\})')
  13.  
  14. def html(out):
  15. ret = ''
  16. ret += "Content-type: text/html\r\n"
  17. ret += 'Content-Encoding: gzip\r\n'
  18. ret += 'Content-Length: %s\r\n' % len(out)
  19. ret += '\r\n'
  20. ret += out
  21. return ret
  22.  
  23. def compressBuf(buf):
  24. zbuf = StringIO.StringIO()
  25. zfile = gzip.GzipFile(mode = 'wb', fileobj = zbuf, compresslevel = 9)
  26. zfile.write(buf)
  27. zfile.close()
  28. return html(zbuf.getvalue())
  29.  
  30. def json(cad, callback="json"):
  31. if not callback:
  32. return cad
  33. else:
  34. return "%s(%s);" % (callback, cad)
  35.  
  36. s = socket.socket()
  37. mserver = 'localhost'
  38. mport = 8080
  39. s.bind((mserver, mport))
  40. s.listen(10)
  41.  
  42. server = sys.argv[1]
  43. port = int(sys.argv[2])
  44.  
  45. while True:
  46. try:
  47. print "waiting for requests at %s:%s" % (mserver, mport)
  48. s1 = s.accept()
  49. except KeyboardInterrupt:
  50. s.close()
  51. print "bye"
  52. break
  53. s2 = socket.socket()
  54. s2.connect((server, port))
  55.  
  56. s1 = s1[0]
  57. v = ''
  58. r = 0
  59. while not r or len(r) == 1024:
  60. r = s1.recv(1024)
  61. v += r
  62.  
  63. v = v.replace('Host: %s:%s' %(mserver, mport), 'Host: %s:%s' % (server, port))
  64. callback=''
  65. args = pet.search(v)
  66. if args:
  67. args = args.group('args').split('&')
  68. for a in args:
  69. c,val = a.split('=')
  70. if c == 'callback':
  71. callback = val
  72. break
  73. v = pet.sub(r'\1 \2 \4', v)
  74. print v
  75. s2.send(v)
  76.  
  77. v2 = ''
  78. r = True
  79. while r:
  80. s2.settimeout(1)
  81. try:
  82. r = s2.recv(1024)
  83. except:
  84. break
  85. v2 += r
  86.  
  87. v3 = v2.split('\r\n')
  88. print v3
  89. encoding = ''
  90. for i in v3:
  91. if i.startswith('Content-Encoding: '):
  92. encoding = i[len('Content-Encoding: '):]
  93. if encoding == 'gzip':
  94. st = StringIO.StringIO(v3[-1])
  95. content = gzip.GzipFile(fileobj=st).read()
  96. else:
  97. try:
  98. content = js.search(v2).groups()[0]
  99. except:
  100. content = ''
  101.  
  102. print content
  103.  
  104. s1.send(json(content, callback))
  105. s2.close()
  106. s1.close()

Puedes probar con twitter por ejemplo, lanzando el proxy "python proxy.py twitter.com 80" y haciendo la petición desde el navegador "http://localhost:8080/status/user_timeline/danigm.json?callback=jsonp123" o "http://localhost:8080/status/user_timeline/danigm.json?callback=holaaaaa".

Y jugando con esto puedes hacer un proxy que modifique toda respuesta, por lo que te puedes divertir mucho.

Por supuesto habrá muchos proxys http hechos en python, pero este lo he hecho yo, a bajo nivel y de mala manera :P

danigm's picture

El teclado tradicional que se usa en españa el archiconocido qwerty. Como bien indican en la wikipedia este mapa de teclado no es optimo para la escritura ya que distribuye las teclas mas usadas por todo el teclado haciendo que al escribir nuestros dedos bailen a lo largo del teclado.

Sin embargo existen otras distribuciones de teclado que hacen la escritura mas fluida. Por ejemplo el teclado dvorak está diseñado para que las manos se muevan mucho menos.

dvorak

Hay mucha gente que opina que es una perdida de tiempo el aprender una distribución nueva de teclado, puesto que QWERTY es un estándar y ya que conozco una forma de escribir no voy a aprender otra. Esto puede ser cierto, pero si hay una distribución de teclado mejor al menos debería intentarlo, y más aún una persona como yo que se pasa casi todo el día escribiendo.

El comienzo

Como todo en esta vida al principio es difícil, y ahora mismo estoy en esa etapa, escribiendo una entrada a velocidad de tortuga.

Es muy complicado porque en primer lugar ya conoces una manera de escribir que se ha convertido en casi instintiva y tienes que esforzarte a cada pulsación para no dejarte llevar por tus instintos y pulsar la tecla adecuada. Y en segundo lugar si cometes el error de mirar el teclado estás perdido porque seguramente tendrás un qwerty y te perderás completamente.

Pues nada más, seguiré informando.

danigm's picture

Desde hace ya algún tiempo estoy haciendo cosillas con el mini-framework webpy y hace poco se me ocurrió que estaría muy bien tener un gestor de contenidos (CMS) modular al estilo de drupal pero usando webpy para que hacer un módulo sea tan simple como definir una función.

Así está la cosa que desde hace un par de días estoy diseñando/implementado un CMS bueno, bonito y barato con python.

De momento tengo implementado el sistema básico de módulos, todavía sin acceso a base de datos, pero cada vez tengo más clara la forma de hacer que quede bien, usable y ampliable.

KISSpi

Para este proyecto me he montado un trac en el que voy a ir añadiendo documentación y tareas y desde donde voy a gestionar todo el proyecto, basta ya de usar forjas de terceros.

Edito: He movido el proyecto a la forja de sugus

Qué tengo ya y qué tengo pensado por el momento

Hoy he terminado la resolución de rutas hacia módulos. Un módulo define una serie de rutas con expresiones regulares 'ruta/(.*)' y cuando tú accedes a '/nombremodulo/ruta/parametro' se llama a la función del módulo determinada pasandole como argumentos los parametros que se definan en la ruta entre parentesis, al estilo de las urls con webpy.

Lo siguiente que tengo planeado es hacer la disposición y plantillas principales, pudiendo así definir zonas como cabecera, panel lateral, zona principal, etc dónde poder definir diferentes módulos a mostrar.

Un poquito más alejado en el tiempo queda la página de administración de módulos, el acceso a la base de datos, el módulo de autenticación, el módulo página/wiki, temas, etc. etc.

danigm's picture

- Hola, quiero ser pintor.
- Ah, muy bien, aquí tenemos muchos pintores y muchas pinturas. Hay mucho que pintar.
- Genial entonces.

- Oiga, ¿aquí solo se pintan paredes?
- Bueno no, también pintamos muros y de vez en cuando pintamos algún grafiti o mural.
- Pero es que lo que yo quiero hacer en la vida es pintar de verdad, no pintar paredes, que está muy bien, pero no es lo que yo quiero hacer.
- Pero hombre, si lo haces muy bien, eres de los que mejor pinta. Además hay muy pocos lienzos y muchos muros, no se puede tener a todo el mundo pintando en lienzo. Ya me gustaría a mi que todos pudieramos pintar lienzos. También tienes que tener en cuenta que en un futuro tendremos más lienzos, pero ahora vas a tener que pintar paredes.

- Pues me encuentro en una tesitura. Puedo perseguir mi objetivo en la vida de ser pintor aunque tenga que pintar con un boli sobre servilletas. O por otra parte puedo continuar pintando paredes durante mis años de mayor creatividad con la esperanza de que en un futuro pueda acceder a pintar lienzos de verdad.

El tiempo corre y cada decisión abre un abanico de infinitas ramas temorales, pero sólo vivirás una, así que decide correctamente y no pierdas el tiempo mirando las ramas que no elegiste.

danigm's picture

Esta semana se han celebrado las "Jornadas sobre conocimiento Libre" en la escuela de informática de la Universidad de Sevilla. Estas jornadas han consistido en dos días, jueves 2 y viernes 3 en los cuales llenos de conferencias sobre conocimiento libre y software libre tratando de exponer todos los puntos de vista posibles para volver a reiterar que el conocimiento nació libre y debería volver a ser libre y sobre todo para aclarar que todo el sistema en el que vivimos de conocimiento privativo y "propiedad intelectual" es algo totalmente inventado.

La importancia de los eventos, charlas y congresos dentro de la universidad

A mí personalmente cada vez me gustan más este tipo de eventos, en los cuales te vuelves a reencontrar con gente conocida, conoces personalmente a gente que sólo conocías de manera virtual, y se comparte conocimiento de manera continua y desinteresada. Yo me he pedido dos días de vacaciones para no perderme nada, ni de la parte organizativa ni tampoco estando como simple asistente.

Para un estudiante centrado en sus estudios este tipo de eventos puede parecerle una perdida de tiempo, sobretodo si tiene alguna entrega de prácticas o quizás un examen, pero en este tipo de eventos se aprende muchísimo más que en cualquier clase, además se hacen amigos que en un futuro te recordarán y te posiblemente te abran el mercado laboral. Así pues, aunque recomiendo siempre asistir a las clases (aunque el profesor sea malo) este tipo de eventos son una gran excepción y considero que no debería haber nada más importante que el tratar de aprender lo máximo posible de de los diferentes ponentes y de toda la gente que se mueve por estos temas.

La mayoría de los ponentes invitados a todos los eventos de esta índole son reconocidos en algún campo y puedes estar seguro de que aprenderás muchísimo tan solo estando al lado de estas personas.

¿Quién monta todo este sarao, quién pone el dinero?

Habrá quien se pregunte de dónde sale el dinero y el esfuerzo necesario para montar este tipo de eventos, y si no te lo has preguntado y no lo sabes, deberías hacerlo.

Hasta donde yo sé y en lo que yo he participado, los organismos que ponen el dinero suelen ser las universidades y organismos universitarios en forma de promoción, infraestructuras y demás. Pero detrás de estos eventos lo de menos es el poco dinero que pueda haber detrás (pago de hoteles para ponentes, viajes, etc), el trabajo realmente duro lo realizan los organizadores y puedo asegurar que no obtienen ningún beneficio económico de este tipo de eventos. La mayoría de los eventos están organizados por asociaciones de estudiantes, profesores universitarios y gente pro-activa en general. Y aunque no lo parezca, aunque no se vea, es un trabajo realmente duro y poco reconocido. Así pues quiero agradecer a toda la gente que hace posible todo este tipo de eventos, tanto las jornadas de conocimiento libre como el mes que viene la fase final del CUSL.

Temática de las Jornadas

El propio nombre dice bastante, estas jornadas se han centrado en el conocimiento y en las formas de distribución del conocimiento, tomando como conocimiento tanto el conocimiento científico como cultural, música, libros, arquitectura, software, etc.

Cabe destacar la gran presentación de Jorge Cortell que nos mostró a todos los presentes de una forma clara que la propiedad intelectual es un invento, que no tiene sentido y que sin embargo está regulada y hay leyes que protegen una cosa que no existe. Por lo tanto es importante pensar en ello y empezar a cuestionarnos esa idea que intentan vendernos, y que mucha gente toma como ley natural de que las ideas tienen un propietario.

Una idea es tuya mientras esté en tú cabeza, una vez que la has comunicado deja de ser tuya para ser de dos o más personas. Tú no pierdes nada, la otra persona gana mucho.

Las ideas, y cuando hablo de ideas hablo de música, pinturas, libros, escritos, etc. no son cuantificables, no se pueden delimitar, no puedes decir esta idea la tengo yo y es mía, si la compartes no puedes obligar a la otra persona a que te devuelva tú idea.

Por supuesto eso no quita que tú sigas siendo el autor de tu idea, eso no se puede quitar por mucho que se comparta o replique una idea. Siempre serás el autor de tus ideas, pero no tienes derecho ninguno para prohibir a otra persona que utilice tu idea.

Hay muchas personas que confunden o quieren confundir cultura con mercado, y la cultura no es un producto, no se puede vender, aunque se hace.

Una vez leí en alguna parte "Cuando oigo a alguien hablar de cultura echo mano a mi cartera". Y esto es así, pero tenemos la oportunidad de cambiarlo con todo esto de internet, y de hecho lo estamos haciendo.

Como conclusión se podría decir que el copyright es un artefacto de monopolio y censura que se inventó a partir de la imprenta y que se ha ido reformando según han ido apareciendo tecnologías nuevas de difusión de cultura, pero no deja de ser un artificio, no deja de intentar poner puertas al campo, porque yo no debería tener la propiedad de ninguna idea desde el mismo momento en el que la comparto con otra persona o simio medio inteligente.

Premios del concurso local de la Universidad de Sevilla del CUSL3

Al final de estas jornadas se han entregado los premios a los proyectos participantes de la Universidad de Sevilla en el CUSL3. Hemos expuesto cuatro proyectos y todos hemos recibido un premio.

Proyecto más educativo: pyrubik
Proyecto más innovador: meshias
Segundo mejor proyecto: unimail
Mejor proyecto: geco

Por parte de la Universidad de Sevilla se inscribieron inicialmente alrededor de 30 proyectos, pero como suele pasar en estos casos al final solo llegan los que realmente tienen un objetivo. Muchas ideas se habrán quedado en el camino y espero que se motiven para futuras ediciones porque es una oportunidad genial para tener una motivación extra a la hora de comenzar o participar en un desarrollo.

Lo más importante del Concurso no es llevarse un premio, sino el camino, lo que se aprende, la gente que conoces, la de errores que cometes durante el desarrollo y de los que aprendes muchísimo, es toda una experiencia que hay que vivir.

Hay que hacer las cosas bien, sino se puede, hay que intentar hacer las cosas bien, si tampoco se puede, hay que hacer las cosas mal, si tampoco pues haces las cosas fatal, pero lo que JAMÁS se debe hacer es no hacer nada, porque en ese momento estas cerrando todos los posibles caminos que llevan al éxito. Es mucho mejor fracasar mil veces que ni siquiera intentarlo, así que valor y al teclado.

Estoy deseando que llegue la fase final del CUSL porque tengo muchísimas ganas de volver a encontrarme con gente que desarrolla porque le gusta, tengo ganas de volver a hablar con gente que sabe muchísimo más que yo para aprender y también con gente que está empezando para poder enseñar. El flujo de conocimiento es el clímax de las relaciones sociales, produce los avances y es lo que nos diferencia como especie de todas las demás. No pongamos barreras al conocimiento, no dejemos morir nuestras ideas.

Hay algo en lo que he pensado en varias ocasiones, y es que a todo el mundo se le ocurren geniales ideas, y ¿a dónde van las ideas que no se cuentan y caen en el olvido? No podemos permitir que ninguna idea se pierda, quizás creas que no tienes tiempo, pero no puedes esperar que el tiempo venga a ti, búscalo y comparte.

Crea, comparte, copia, modifica y distribuye.

danigm's picture

Esta mañana me he levantado con una idea en la cabeza, sería genial: poder importar módulos de una ruta...

Pues bien después de haber pensado en la implementación y todo me ha dado por buscar en la web y da la casualidad de que no soy demasiado original y ya alguien tenía alguna que otra implementación.

He encotrado el módulo urlimport:

http://urlimport.codeshift.net/

Ejemplo de código:

  1. import urlimport
  2. import sys
  3. sys.path += ['http://www.crummy.com/software/BeautifulSoup/download/']
  4.  
  5. import BeautifulSoup
  6. BeautifulSoup
  7. <module 'BeautifulSoup' from 'http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.py'>

Con esto se podrían ejecutar aplicaciones gtk por ejemplo de manera que el código esté en remoto y nos lo bajemos sólo para ejecutarlo. Así tenemos aplicaciones de escritorio remotas, es lo mismo que pasa con el javascript pero a nivel de python y sin navegador. Y con esto si por ejemplo cambiamos nuestro código no tenemos que ir instalando la nueva versión en cada cliente, sólo en el servidor, sino que la próxima vez que se ejecuten estarán actualizados.

Esto tiene un pequeño fallo de seguridad, y es que si alguien consigue mandarte una respuesta con codigo malicioso podría ejecutar casi cualquier cosa en tu propia máquina.

Por eso me he puesto a modificar un poco el código y le he añadido firma con RSA. Para esto he utilizado un módulo python puro http://stuvel.eu/rsa.

El servidor en el cual está el código tiene una clave pública y otra privada, con la clave privada se cifra el sha256 del código y se incluye tanto el código como el hash firmado en un zip. Por otra parte el cliente se descarga el fichero zip y teniendo la clave pública verifica que el hash que va incluido en el zip es el que se corresponde con el código y además está firmado por el servidor.

Para crear el fichero .zip he utilizado el módulo zipfile y hashlib para generar el hash.

Cosas por hacer

Aún me quedan un par de mejoras que quiero añadirle, además de código python quiero poder ponerle dependencias a los módulos .zip de otros "módulos" pero de datos para por ejemplo poder añadir las imágenes de una aplicación o los ficheros .glade, etc. También quiero estudiar la posibilidad de que los datos como imágenes y los ficheros .glade se los pueda descargar por petición, es decir que se los descargue si intenta cargar un fichero y falla, aunque no tengo mucha confianza en la viabilidad de esta solución.

El código lo estoy versionando en mi repositorio: http://bzr.danigm.net/urlimport/. Quiero hacer que sweetgtk se ejecute así.

danigm's picture

Desde su comienzo, la idea de los ultraportátiles me ha parecido de los más atractiva, porque siempre he considerado que un portátil debe poderse llevar encima y hasta hace relativamente poco parecía que la tendencia era totalmente opuesta, con portátiles de 17 pulgadas y cosas similares.

Yo ya tenía un portátil pequeño, un dell xps 1210, de 12 pulgadas y dos kilos de peso que llevaba siempre en la mochila, por esta razón un ultraportátil al precio de 300 o 400 euros no me parecía necesario.

Sin embargo la semana pasada vi la oferta del asus eee 901 por 200 euros. Es el portátil más pequeño que se puede llegar a tener sin que inusable. Así pues me decidí y me lo compré.

eee

Este portátil viene por defecto con Xandros, una distribución basada en debian. Y por defecto viene con un tema de gtk parecido al estilo de xp silver y un escritorio para netbook. Como no me gusta nada ese sistema en cuanto pillé el cacharro le metí una Archlinux.

No fue difícil puesto que hay una página en el wiki de Arch donde está todo detallado y funciona todo a la perfección.

Para los netbook se han ideado diferentes escritorios, como el ubuntu netbook remix, pero para mí es más usable un escritorio estándar.

Así pues me he instalado un xfce4, con compiz, y como gestor de aplicaciones y lanzador utilizo gnome-do con el tema docky.

Estoy bastante contento con el rendimiento de esta máquina, ya que la batería le dura lo más grande (4.5 o 5 horas), es tan rápido como cualquier otro portátil y además para lo que yo uso un ordenador es completamente funcional.

Simplemente me he encontrado con problemas a la hora de diseñar con inkscape, puesto que la pantalla es demasiado pequeña y ni siquiera me cabe el programa, aunque con un poco de esfuerzo se consigue hacer cualquier cosa.

El teclado puede parecer incomodo, pero por lo menos yo me he acostumbrado a su tamaño y soy capaz de escribir de igual manera que en un teclado tradicional.

Otra funcionalidad para la cual es genial este aparatito es para leer libros en formato pdf, ya que los puedo abrir en el evince, ponerlos en horizontal y tumbarme en la cama como si fuera un libro y leer.

Y por último y no menos importante este es el primer portátil que consigo comprarme sin tener que pagar la licencia del windows de turno y por supuesto el teclado viene sin la tecla propaganda del maligno.

Hay una frase muy conocida; "Este es el año de linux en el escritorio", y yo creo que esto ya pasó hace muchos años. Por lo menos yo llevo muchos años usando linux en mi escritorio y esperando que no me obliguen a comprar un software que no quiero porque el hardware no se vende libre. Y por fin parece que es posible conseguir eso, parece que cada vez es más fácil conseguir un ordenador sin que venga con la pegatina de windows.

danigm's picture

Desde pequeño yo siempre he tenido, digamoslo así, habilidad con los lápices. No es que fuera, ni sea, un gran dibujante/pintor/artista, pero hay que reconocer que algo hay.

Recuerdo que cuando iba a parvulitos yo era bastante competitivo y siempre quería acabar antes que los demás las actividades, cuando los demás iban por la letra c en la cartilla micho yo iba por la m, y no toleraba que me pusieran al nivel de los demás.

Siguiendo este afán cuando tocaba colorear, yo era siempre el primero en acabar, por supuesto consiguiendo una estupenda obra de arte pero sin respetar para nada las líneas que en teoría delimitaban el dibujo. Así era yo, cualquier gafapasta diría que era un rebelde creativo, pero mas bien era un chaval que no sabía colorear.

Por aquellos tiempos en los que yo era joven, joven de verdad, era un seguidor acérrimo de Bola de Dragón, como cualquier chaval de la época. Y por otra parte yo era de los chicos a los que les flipaba jugar con muñecos de plástico. Yo quería tener muñequitos de Goku, Picolo, etc. Pero por aquellos tiempos mi poder adquisitivo se limitaba a unos 20 duros (100 pesetas) los domingos, y eso era para jugar a las recreativas, así que había que buscar otra solución.

Así pues los primeros dibujos medio en condiciones que recuerdo eran personajes de bola de dragón. Los dibujaba, los coloreaba y los recortaba, y tachán! ya tenía un par de muñecos con los que recrear las emocionantes peleas de la serie.

Como todo buen estudiante, tenía la última página de todos mis cuadernos llena de dibujos y tonterías, pero aún no tenía un estilo propio.

Mi vida como dibujante dio un giro gracias a una excursión escolar a Sevilla. Sí, se trajeron a un colegio de un pequeño pueblo de Córdoba a Sevilla, y acabamos llegando a la plaza de España. Allí había un dibujante de caricaturas, que dibujó a un par de amigos míos. Y ese dibujante fue sin quererlo un gran maestro para mí.

Observé maravillado cómo ese hombre dibujaba unos personajes sobre papel y teniendo ya un bagaje artístico considerable aprendí unos cuantos trucos y desarrollé casi sin quererlo un estilo propio, mezcla de lo que pude recordar de aquel día y lo que ya tenía.

A partir de ahí comencé a dibujar mucho más y a creerme capacitado para hacer lo que quisiera. He ido desarrollando mi estilo personal hasta llegar a crear personajes con un toque especial.

Nunca he necesitado de un lápiz para dibujar, nunca me han gustado las gomas de borrar, he sido cliente fiel de los bolis bic de toda la vida, y además simpre me ha gustado el boli negro, no sé por qué.

Y un día llegó a mis manos un ordenador. Y en el ordenador había herramientas con las que se podía dibujar. Incluso hice mis pinitos con la animación en flash (4º de ESO) cuando aún no era usuario fiel de linux.

Poco más tarde me hice usuario de linux y ahí encontré más herramientas para dibujar. Al principio con gimp, escaneando dibujos, coloreando, incluso llegué a tener una tableta digitalizadora.

Y finalmente, no recuerdo cuánto tiempo hace, pero no más de 6 años, descubrí lo que era el dibujo vectorial gracias a inkscape, y desapareció la necesidad de escanear dibujos y desapareció la necesidad de usar un lápiz digital, ya podía dibujar con el ratón y de una manera más simple, e incluso más potente.

Y así llegamos hasta el día de hoy, lo mío es el dibujo de personajes no realistas, pero también le he dado a todos los palos del diseño, haciendo carteles, logos, personajes para videojuegos.

Algunos trabajos que yo recuerdo que he hecho, como por ejemplo:

Si necesitas que te diseñen un logo o que te hagan algo de "artwork" no dudes en ponerte conmigo, si el proposito de tu diseño es altruista, como software libre, una web personal o que se yo, lo haré encantado y sin pedir nada a cambio. Si lo necesitas para un negocio o una cosa comercial no dudaré en hacerte un presupuesto.

danigm's picture

El otro día hice un dibujo a mano, estaba aburrido de mi antiguo avatar y quería dibujar uno nuevo:



wq.jpg

Y dige: "voy a pasarlo a vectorial". Le saqué una foto, lo abrí con el inkscape y me puse a dibujar sobre él hasta que hice esto:



wq.png

Por cierto me he dado cuenta de que se me han olvidado las cejas :P

danigm's picture

Porque mercadear con la cultura y el arte, que son el fundamento, el sostén y la fuerza motriz del espíritu humano, equivale a mercadear con el propio espíritu humano y, por consiguiente, a convertir el género humano en una triste raza de esclavos.