jueves, 28 de octubre de 2010

GAE: webapp.WSGIApplication

  • Se creará una instancia de webapp.WSGIApplication para manejar las peticiones
  • Una instancia de WSGIApplication podrá manejar múltiples URLs, dirigiendo la petición (request) a diferentes clases de RequestHandler según su patrón URL
  • La instancia será inicializada mediante una lista que mapea URLs a controladores (RequestHandler)
  • El parámetro debug solicita a la aplicación que muestre mensajes de error en la ventana del navegador cuando el controlador (RequestHandler) lance una excepción
  • El parámetro debug se tiene en cuenta únicamente en desarrollo (cuando se está ejecutando mediante el servidor de desarrollo). Cuando la aplicación está online, no se mostrarán los mensajes de error en el navegador, aunque el parámetro de debug sea True
  • Tanto el fichero de configuración (app.yaml) como la aplicación (WSGIApplication), pueden mapear direcciones URLs para manejar la petición, por lo que dependerá de cómo el programador quiera organizar su código


Fuentes:
  • Programming Google App Engine (Dan Sanderson)
  • Developing with Google App Engine (Eugene Ciurana)

GAE: Tutorial: Clock (2)

Aprendiendo: Google App Engine
Fuente: Programming Google App Engine (Dan Sanderson)



Screenshot:




Paso a Paso:

1. Creación del directorio del proyecto clock

2. Creación del fichero clock/main.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import datetime

class MainPage(webapp.RequestHandler):
  def get(self):
    time = datetime.datetime.now()

    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write('The time is: %s' % str(time))

application = webapp.WSGIApplication([('/', MainPage)], debug=True)

def main():
  run_wsgi_app(application)

if __name__ == '__main__':
  main()


3. Creación del fichero clock/app.yaml

application: clock
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: main.py


4. Ejecutar la aplicación del servidor

dev_appserver.py clock


5. Visitar la url http://localhost:8080




Apuntes:
  • Mejora del Tutorial: Clock haciendo uso del framework webapp
  • Se crea una aplicación (application) para la gestión de peticiones. Instancia de la clase webapp.WSGIApplication
  • La aplicación es inicializada mediante una lista que mapea URLs a controladores
  • Uso de la class RequestHandler (MainPage) para la gestión de una petición del usuario
  • Uso del método RequestHandler.get para devolver una página HTTP (self.response)

GAE: WebApp

  • Google App Engine incluye un framework web simple, llamado webapp
  • Bastante bueno para los proyectos pequeños
  • Carece de las características de los frameworks más establecidos (Django, web2Py, Pylons...)


  • Programming Google App Engine (Dan Sanderson)
  • Developing with Google App Engine (Eugene Ciurana)

GAE: Servidor web local del SDK

  • El SDK del Google App Engine viene con un servidor web local, que se lanza mediante dev_appserver.py
  • El servidor es bastante inteligente para detectar los cambios en los ficheros sobre los que estamos trabajando y los recargará automáticamente cuando los necesite, por lo que puede permanecer ejecutándose mientras se desarrolla la aplicación


Fuentes:
  • Programming Google App Engine (Dan Sanderson)
  • Developing with Google App Engine (Eugene Ciurana)

GAE: Configuración mediante YAML

  • Google App Engine usa el formato YAML para la configuración de una aplicación
  • El nombre del fichero, por convención, será app.yaml, debido a que el servidor busca ese fichero cuando lanza una aplicación. Si se usa otro nombre de fichero la aplicación reportará el error AppConfigNotFoundError
  • Hace uso de un array asociativo para proporcionar el nombre de la aplicación (application), la versión de la aplicación (version), qué entorno de ejecución se está usando (runtime), la versión del api (api_version), así como los scripts que controlarán las distintas peticiones del usuario (handlers)


Fuentes:
  • Programming Google App Engine (Dan Sanderson)
  • Developing with Google App Engine (Eugene Ciurana)

GAE: YAML

  • Formato de serialización de datos.
  • Acrónimo recursivo: YAML Ain't Another Markup Language (en castellano, "YAML no es otro lenguaje de marcado")
  • Sintaxis relativamente sencilla, teniendo en cuenta que fuera muy legible.
  • La estructura se establece mediante la indentación con espacios en blanco (no usar la tabulación para indentar)
  • Comentarios de línea mediante almohadilla (#)


Fuente:

miércoles, 27 de octubre de 2010

GAE: Tutorial: Clock

Aprendiendo: Google App Engine
Fuente: Programming Google App Engine (Dan Sanderson)



Screenshot:




Paso a Paso:

1. Creación del directorio del proyecto clock

2. Creación del fichero clock/main.py

import datetime

print 'Content-Type: text/html'
print ''
print 'The time is: %s' % str(datetime.datetime.now())


3. Creación del fichero clock/app.yaml

application: clock
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: main.py


4. Ejecutar la aplicación del servidor

dev_appserver.py clock


5. Visitar la url http://localhost:8080



Apuntes:

  • Ejemplo semejante al Hello, World!, en el que se muestra el tiempo del sistema
  • Se pueden observar los elementos indispensables de una aplicación con el Google App Engine, tanto el fichero de configuración (app.yaml) como el fichero de código asociado (main.py)

GAE: Tutorial: Hello, World!

Aprendiendo: Google App Engine
Fuente: Developing with Google App Engine (Eugene Ciurana)



Screenshot:


Paso a Paso:

1. Creación del directorio del proyecto greetingprogram

2. Creación del fichero greetingprogram/greeting.py

# Greeting program
print 'Content-Type: text/plain'
print ''
print 'Hello, World!'


3. Creación del fichero greetingprogram/app.yaml

application: greetingprogram
version: 1
runtime: python
api_version: 1

handlers:
   - url: /.*
     script: greeting.py


4. Ejecutar la aplicación del servidor

dev_appserver.py greetingprogram/


5. Visitar en el navegador la url http://localhost:8080



Apuntes:

  • Ejemplo típico, casi obligatorio, en el que se muestra el texto "Hello, World!"
  • Se ofrece el mínimo número de pasos para crear una aplicación
  • Un fichero de configuración (app.yaml) y un fichero de código (greeting.py) parece que son los elementos indispensables de una aplicación, con el Google App Engine
  • Mediante el servidor proporcionado en el SDK (dev_appserver.py) se puede lanzar la aplicación y verlo cómodamente en un navegador
  • Intenta implementar el protocolo CGI directamente, lo que nunca se haría en una aplicación real

jueves, 14 de octubre de 2010

Prestashop

Prestashop es una aplicación software para la creación de tiendas online (basado en PHP). En wikipedia: Prestashop se puede obtener una visión general de esta aplicación.

Prestashop aporta valiosa funcionalidad para gestionar:
  • el catálogo de productos:
  • los clientes
  • los pedidos
  • los pagos
  • el transporte
  • las estadísticas
  • las traducciones
  • la ubicación
  • el referenciamiento/SEO
  • la seguridad

Lo cual lo convierte en una opción muy completa y válida para comenzar a montar una tienda online.

Se puede acceder a una demo de su funcionamiento, desde el punto de vista del cliente o del administrador.

Nombre del usuario: demo@prestashop.com
Contraseña: prestashop_demo

Con respecto al número de tiendas que se han realizado con el mismo, en el sitio web oficial, indican que existen 40.000 tiendas en todo el mundo. Lo cual son muchas, ciertamente. Aunque, por mi parte, no tomaré muy en serio esa indicación y haré más caso a las 200 tiendas de las que sí muestran sus enlaces en una de las página de su sitio web (listado de tiendas prestahop)
Por cierto, el back-office (lo que ve el administrador), como el front-office (lo que ve el cliente) está traducido al español, lo que es muy interesante, puesto que nos va a ahorrar mucho trabajo extra.

Usabilidad de Páginas de Inicio

En el libro Usabilidad de Páginas de Inicio de Jakob Nielsen y Marie Tahir, se listan 113 directrices que "garantizan la usabilidad de la página de inicio". Dichas directrices también pueden ser encontradas, en inglés, en la página oficial del autor: Useit.com

Finalidad del sitio


1. Muestre el nombre y/o el logotipo de la empresa a un tamaño razonable y en una ubicación relevante.

2. Incluya un eslogan que resuma explícitamente la actividad del sitio.

3. Resalte la actividad del sitio desde el punto de vista del usuario, y en qué se diferencia de sus competidores principales.

4. Haga hincapié en las tareas de mayor prioridad, de forma que los usuarios tengan un punto de referencia claro en la página de inicio.

5. Designe claramente una página por sitio como página de inicio oficial.

6. En el sitio web principal de la empresa, no utilice el término "sitio web" para hacer referencia a algo que no sea la totalidad de la presencia web de la empresa.

7. Diseñe la página de inicio para que se diferencie claramente de todas las demás páginas del sitio.

Información acerca de la empresa


8. Agrupe la información corporativa, como Quiénes somos, Relaciones con los inversores, Sala de prensa, Empleo y otras informaciones acerca de la empresa, en un área separada.

9. Incluya un vínculo en la página de inicio con una sección "Quiénes somos", que proporcione a los usuarios una panorámica general acerca de la empresa y vínculos con los detalles relevantes acerca de los productos, servicios, ventajas, propuestas comerciales, equipo de gestión, etc.

10. Si desea que su empresa reciba cobertura periodística, incluya un vínculo "Sala de prensa" en la página de inicio.

11. Presente una imagen unificada al cliente, en la que el sitio web sea uno de los puntos angulares en vez de una entidad en sí misma.

12. Incluya un vínculo "Contacte con nosotros" en la página de inicio que vaya a una página que centralice toda la información de contacto de la empresa.

13. Si proporciona un mecanismo de "información", especifique la finalidad del vínculo y si va a ser leído por el servicio de atención al cliente o por el webmaster, etc.

14. No incluya información interna de la empresa (que está destinada a los empleados y que debe ir en la intranet) dentro del sitio web público.

15. Si el sitio solicita cualquier tipo de información al cliente, incluya un vínculo "Normas de privacidad" en la página de inicio.

16. Explique la finalidad económica del sitio si no está clara.

Redacción de contenido


17. Utilice un lenguaje dirigido al cliente. Etiquete las secciones y las categorías con arreglo al valor que tengan para el cliente, y no en función del servicio que prestan a su empresa.

18. Evite repetir el contenido.

19. No utilice frases ocurrentes ni jerga de marketing que confunda a los usuarios.

20. Utilice correctamente las mayúsculas y otras reglas de estilo.

21. No etiquete un área claramente definida de la página si el contenido es lo suficientemente explícito.

22. Evite las categorías de un solo elemento y las listas de una sola viñeta.

23. En las frases, no parta palabras que tengan que la una al lado de la otra, para facilitar la localización y la comprensión.

24. Utilice un lenguaje imperativo como "Introduzca una ciudad o código postal" sólo para las tareas obligatorias, o redacte las instrucciones correctamente.

25. En caso de utilizar abreviaturas y acrónimos, añada su significado inmediatamente detrás.

26 Evite los signos de exclamación.

27. Utilice con moderación las palabras o frases en mayúsculas, y nunca como un estilo de formato.

28. Evite el uso incorrecto de espacios y signos de puntuación para enfatizar.

Revelar el contenido a través de ejemplos


29. Utilice ejemplos que revelen el contenido del sitio, en vez de limitarse a describirlo.

30. Para cada ejemplo, disponga de un vínculo que vaya directamente a la página detallada de ese ejemplo, en vez de ir a una página de categoría general de la que forme parte el elemento.

31. Habilite un vínculo con una categoría más amplia que esté encuadrada junto al ejemplo concreto.

32. Asegúrese de que queda claro qué vínculos conducen a la información de seguimiento de cada ejemplo y qué vínculos conducen a la información general acerca de la categoría como un todo.

Acceso a archivos y contenido ya aparecido


33. Facilite el acceso a todo lo que haya presentado recientemente en la página de inicio, por ejemplo, en la última semana o mes, incluyendo una lista de las opciones recientes, así como la colocación de los elementos recientes en archivos permanentes.

Vínculos


34. Diferencie los vínculos y haga que sean hojeables.

35. No utilice instrucciones genéricas, como "Haga clic aquí", como nombre del vínculo.

36. No utilice vínculos genéricos, como "Más..." al final de una lista de elementos o artículos.

37. Asigne colores distintos a los vínculos para mostrar los estados de visitado y no visitado.

38. No emplee la palabra "Vínculos" para indicar los vínculos de la página. Indique que se trata de vínculos subrayándolos y escribiéndolos en azul.

39. Si un vínculo hace una cosa que no sea conducir a otra página web, como enlazar con un archivo PDF o iniciar un reproductor de audio o vídeo, un mensaje de correo electrónico u otra aplicación, asegúrese de que el vínculo indica explícitamente lo que va a ocurrir.

Navegación


40. Coloque el área de navegación principal en un lugar relevante, preferiblemente junto al cuerpo principal de la página.

41. Agrupe los elementos del área de navegación de forma que los elementos semejantes queden los uno junto a los otros.

42. No incluya múltiples áreas de navegación para los mismos tipos de vínculos.

43. No incluya un vínculo activo con la página de inicio en la propia página de inicio.

44. No utilice palabras de su cosecha como opciones de navegación. Las categorías tienen que ser fácilmente identificables (si los usuarios no entienden la terminología de su cosecha, les será imposible diferenciar las categorías).

45. Si su sitio incorpora una función de carrito de la compra, incluya un vínculo con él en la página de inicio.

46. Utilice iconos solamente si éstos ayudan a los usuarios a reconocer una clase de elementos de forma inmediata, como noticias, artículos a la venta o contenido de vídeo.

Búsqueda


47. Proporcione a los usuarios un cuadro de entrada en la página de inicio para introducir consultas de búsqueda, en vez de proporcionarles un vínculo con una página de búsqueda.

48. Los cuadros de entrada deben ser lo suficientemente grandes como para que los usuarios realicen consultas estándar en el sitio.

49. No etiquete el área de búsqueda con un encabezado; utilice en su lugar un botón "Buscar" que quede a la derecha del cuadro.

50. A menos que las búsquedas avanzadas supongan la norma del sitio, habilite una búsqueda sencilla en la página de inicio, con un vínculo con la búsqueda avanzada o sugerencias de búsqueda si las tiene.

51. La búsqueda en la página de inicio también debe afectar por defecto al resto del sitio.

52. No ofrezca una opción "Buscar en la Web" en la función de búsqueda del sitio.

Herramientas y accesos directos a tareas


53. Ofrezca a los usuarios un acceso directo a tareas de alta prioridad en la página de inicio.

54. No incluya herramientas que no estén relacionadas con tareas que el usuario vaya a realizar en el sitio.

55. No ofrezca herramientas que reproduzcan la funcionalidad del navegador, como establecer una página como página de inicio predeterminada del navegador o agregar al sitio a favoritos.

Imágenes y animación


56. Utilice las imágenes para mostrar el contenido real, no sólo para decorar la página de inicio.

57. Etiquete las imágenes y las fotografías si no quedan claras a partir del contexto del pie que las acompaña.

58. Publique las fotografías y los diagramas ajustándolos al tamaño apropiado para su visualización.

59. Evite las imágenes con marca de agua (las imágenes de fondo que tengan texto encima).

60. No emplee animación con el único fin de atraer la atención sobre un elemento de la página de inicio. La animación raras veces dispone de un lugar en la página de inicio, ya que desvía la atención de los otros elementos.

61. No dote de animación a los elementos fundamentales de la página, como el logotipo, el eslogan o el encabezado principal.

62. Permita que los usuarios elijan si desean ver una introducción animada al sitio (no haga que esto sea la norma).

Diseño gráfico


63. Limite los estilos de fuente y otros formatos de texto, como los tamaños, los colores, etc., en la página, ya que el texto con demasiado diseño puede ocultar el significado de las palabras.

64. Utilice un texto con mucho contraste y colores de fondo, para que el tipo de fuente sea lo más legible posible.

65. Evite el desplazamiento horizontal a 800x600.

66. Los elementos más importantes de la página deberán ser visibles "en su totalidad" (en la primera pantalla de contenido, sin desplazarse" a un tamaño que sea el más habitual (800x600 en la actualidad).

67. Utilice un diseño líquido, de forma que el tamaño de la página de inicio se ajuste a las distintas resoluciones de pantalla.

68. Utilice los logotipos con mesura.

Widgets de la IU


69. Nunca utilice widgets como partes de la pantalla en las que no desee que la gente haga clic.

70. Evite el uso de múltiples cuadros de entrada de texto en la página de inicio, especialmente en la parte superior de la página, donde la gente tiende a mirar si está la opción de búsqueda.

71. Utilice los menús desplegables con mesura, especialmente si los elementos que contienen no son lo suficientemente explicativos.

Títulos de ventana


72. El título de la ventana debería empezar por una palabra que transmita información (generalmente el nombre de la empresa).

73. No incluya el nombre de dominio de nivel superior como el ".com" en el título de la ventana, a menos que forme parte del nombre de la empresa, como "Amazon.com".

74. No incluya "página de inicio" en el título. Esto tan sólo añade verborrea innecesaria.

75. Incluya una breve descripción del sitio en el título de la ventana.

76. Limite los títulos de las ventanas a no más de siete u ocho palabras y menos de 64 caracteres.

Los URL


77. Las páginas de inicio de los sitios web comerciales deben tener el URL http://www.empresa.com (o el equivalente de su país para un dominio no comercial de nivel superior).

78. En todo sitio que tenga una identidad estrechamente conectada a un país específico que no sea los Estados Unidos, utilice el dominio de nivel superior de ese país.

79. Si puede, registre los nombres de dominio con formas distintas, así como sus abreviaturas o errores habituales en la forma de escribir el nombre del sitio.

80. Si dispone de formas alternativas para escribir los nombres de dominio, elija una como versión autorizada y redirija a los usuarios desde todas las demás formas de escribirlo.

Noticias y notas de prensa


81. Los titulares deberán ser breves pero descriptivos, para proporcionar el máximo de información con el menor número de palabras.

82. Escriba y publique resúmenes específicos de las notas de prensa y las noticias que presente en la página de inicio.

83. Vincule los titulares, en vez de las entradillas, con la noticia completa.

84. Siempre que todas las noticias de la página de inicio se hayan producido durante la semana, no es necesario incluir la fecha y la hora en la entradilla de cada noticia, a menos que sea en verdad una noticia importante que experimente actualizaciones frecuentes.

Ventanas emergentes y páginas intermedias


85. Lleve a los usuario a la página de inicio "real" cuando escriben el URL principal o hagan clic en un vínculo con el sitio.

86. Evite las ventanas emergentes.

87. No utilice páginas de enrutamiento para que los usuarios elijan su zona geográfica, a menos que disponga de versiones del sitio en distintos idiomas, y siempre que no haya un idioma dominante.

Publicidad


88. Disponga los anuncios externos en la periferia de la página.

89. Disponga la colocación de los anuncios externos (los que proceden de empresas terceras) de la forma más reducida y discreta posible en relación con el contenido importante de la página de inicio.

90. Si coloca los anuncios fuera del área de banners estándar en la parte superior de la página, incorpórelos como publicidad, de forma que los usuarios no los confundan con el contenido del sitio.

91. Evite el uso de anuncios para mostrar las características normales del sitio.

Bienvenidas


92. No salude literalmente a los usuarios del sitio. Antes de conceder espacio real de la página de inicio a un saludo, colóquelo en un eslogan.

Comunicación de problemas técnicos y gestión de emergencias


93. Si el sitio web está inactivo o partes importantes del sitio web no son operativas, muéstrelo claramente en la página de inicio.

94. Elabore un plan para gestionar el contenido fundamental de su sitio web en caso de producirse una emergencia.

Premios y distinciones recibidos


95. No dedique espacio alguno a reconocer las virtudes del motor de búsqueda, empresa de diseño, empresa de navegador favorita o tecnología implícita.

96. Modérese a la hora de enumerar los premios o distinciones del sitio web.

Recarga y actualización de la página


97. No configure la página de inicio para que envíe actualizaciones automáticas a los usuarios.

98. Cuando lleve a cabo una actualización, actualice únicamente el contenido que haya cambiado, como las noticias.

Personalización


99. Si su página de inicio contiene áreas que proporcionan información personalizada al recibir datos del usuario, no ofrezca una versión genérica del contenido a los usuarios que accedan por primera vez (adapte el contenido a ese espacio).

100. No ofrezca a los usuarios opciones para personalizar el aspecto básico de la IU de la página de inicio, como, por ejemplo, los esquemas de color.

Recopilación de datos del cliente


101. No habilite vínculos para el registro en la página de inicio; en su lugar, explique las ventajas que obtendrá el cliente al registrarse.

102. Explique las ventajas y la periodicidad de la publicación a los usuarios antes de pedirles sus direcciones de correo electrónico.

Fomento de una comunidad


103. Si ofrece comunidades de usuarios provistas de opciones de chat u otras opciones de discusión, no muestre vínculos genéricos con ellos.

104. No ofrezca un registro de "Libro de invitados" en los sitios comerciales.

Fechas y horas


105. Muestre exclusivamente las fechas y horas de la información más necesaria, como las noticias, los chats en vivo, las cotizaciones bursátiles, etc.

106. Muestre a los usuarios la última actualización del contenido, y no la hora que muestre la computadora en ese instante.

107. Incluya la zona horaria que está usando siempre que haga referencia a una fecha u hora.

108. Utilice abreviaturas estándar, como p.m. o P.M.

109. Escriba el mes o utilice abreviaturas de los meses, pero no números.

Visualización de cotizaciones bursátiles y números


110. Ofrezca el porcentaje de la variación, y no sólo los puntos ganados o perdidos en las cotizaciones bursátiles.

111. Evite las abreviaciones bursátiles, a menos que estén totalmente claras, como "IBM".

112. Utilice un separador de miles apropiado para su configuración regional en números que tengan cinco o más dígitos.

113. Alinee los puntos decimales cuando muestre columnas de números.

lunes, 11 de octubre de 2010

Django: Creando un proyecto

Un proyecto de Django es el encargado de gestionar un sitio web (asociado a un dominio), ofreciendo a los usuarios una tabla de contenidos por los que moverse y, mediante el uso de aplicaciones, presentar al usuario su contenido. Las aplicaciones le ayudan a descentralizar las respuestas, facilitando que el proyecto esté mejor organizado, además de que podrá reusarlas en otro proyecto, sitio web.


Para la creación de un proyecto con el framework Django usaremos la línea de comandos:


django-admin.py startproject <nombre_del_proyecto>


Se creará automáticamente un directorio con el nombre del proyecto y dentro del mismo podremos encontrar estos ficheros:
  • init.py: Fichero vacío que identifica al directorio como un módulo de Python
  • manage.py: Utilidad, de línea de comandos, para gestionar el proyecto
  • settings.py: Fichero de configuración del proyecto
  • urls.py: Donde se mapean las urls a funciones Python

Recordar cambiar al directorio del proyecto para poder facilitar los comandos de consola:


cd <nombre_del_proyecto>


Para comprobar que todo va bien, se puede arrancar el servidor web que viene con Django:


manage.py runserver


Validating models...
0 errors found

Django version 1.1.1, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


Si visitamos esa url en nuestro navegador (http://127.0.0.1:8000/) podremos ver:




jueves, 7 de octubre de 2010

Sitios interesantes sobre Django

A continuación muestro una pequeña lista de sitios interesantes sobre Django:



























Django

Interesante framework para la creación de sitios web, basado en Python. Para tener una idea general del framework es recomendable visitar la wikipedia: Django.

Las pruebas iniciales con el mismo dan la sensación de que puede ser fácil trabajar con él, como así prometen sus creadores. De tal forma que crear páginas web puede que no resulte muy traumático para un profano. Ahora bien, se requieren conocimientos de Python, como es obvio. No sé programar en Python... aún. Hace años lo estuve mirando muy por encima para ver cómo era, sin profundizar. Ahora la cosa cambia. Lo aprenderé.

Cuando uno decide usar un framework, quiere al menos que algo interesante haya sido creado mediante el mismo. Sobretodo cuando uno ignora lo que es cierto o no detrás de las afirmaciones asombrosas de lo que promete.

Podemos encontrar una pequeña lista de sitios web que se han desarrollado con este framework en la página principal del Proyecto Django (lawrence.com, EveryBlock, LJWorld.com, Tabblo, Toronto Life), así como visitando Django Sites que tiene un listado más extenso de los mismos (actualmente rondan los 3593, 81 de los cuales están en español, como se puede ver al seleccionar spanish en la nube de tags). ¿Suficientes para dedicarle un tiempo a su aprendizaje? Diría que sí.

Django, Ruby on Rails, Prestashop...

Las herramientas con las que contamos para la creación de páginas web son múltiples y variadas. Dado que por algo hay que empezar me voy a centrar en aquellas que me llaman principalmente la atención, aunque no sean necesariamente las más populares.

Por una parte aprenderé lo básico (html, css, javascript), así como los frameworks por los que siento interés (django, ruby on rails). Dichos frameworks requieren tener una buena base en los lenguajes con los que están programados (python, ruby respectivamente).

También tendré en cuenta aquellas herramientas que me proporcionen medios para crear tiendas online, e-commerce (satchmo, prestashop), puesto que es una de las posibles fuentes de ingresos en un futuro (ya sea proporcionando un servicio a otros o para uno mismo).

Por último, quiero aprender a crear aplicaciones con Google App Engine puesto que parece interesante la posibilidad que ofrece de crear aplicaciones sin un coste inicial, mientras no se usen más recursos que los básicos (ver Google App Engine: Cuotas). Eso permitiría probar proyectos de sitios web sin tener que contratar un hosting. Al menos, hasta que el proyecto se considere viable e interesante.

Temario (con links a los artículos en la wikipedia):

Todo es Empezar

Comienza una nueva experiencia. Comienza un nuevo objetivo.

Durante más de 15 años mi experiencia laboral ha estado centrada en la programación de C++, en el área del videojuego (PC, Wii, PlayStation, Xbox). Con los años ha ido cambiando mi interés por los mismos. Ya no juego tanto. Ya no me llama la atención el crear el nuevo y más exitoso videojuego. Quién sabe si han sido muchos años (¿demasiados?) moviéndose en una industria, la española, en la que no se tiene nada claro cómo se han de desarrollar los videojuegos, lo que conlleva que los que se mueven en esa profesión acaben deseando cambiar de sector.

¿A dónde cambiar? Dada la experiencia en programación uno se decanta por alguna opción en la que pueda seguir desarrollando su habilidad en la misma. El sector que más me llama actualmente la atención es el de las páginas web. La mayor pega es que es un mundo del que ignoro casi todo. Por lo que comenzar en el mismo supone ponerse en contacto con nuevos lenguajes, nuevos frameworks, nuevas filosofías de desarrollo... Necesito aprender a crear páginas web.

Ahora bien, mi aprendizaje no es un simple hobby para pasar el rato, un entretenimiento sin ninguna vista de remuneración. Supone aprender algo a nivel profesional, empezando como un simple aprendiz.

No sé si es muy habitual o no, pero he decidido ir dando a conocer lo que vaya aprendiendo. Lo haré desde el punto de vista de un aprendiz, por lo que será normal y frecuente que meta la pata, pero ese es el derecho intrínseco de todo buen aprendiz (equivocarse para aprender). De todas formas, considero valioso todo lo que suponga compartir experiencia, de tal forma que los que comiencen puedan acelerar su ritmo de aprendizaje y, con suerte, ellos mismos se introduzcan en la misma corriente de colaboración y todos salgamos beneficiados.

En la tradición andina existe una palabra: Ayni. Según tengo entendido viene a significar "intercambio". Lo que uno aprende a realizar lo comunica a los otros, que harán lo propio con uno mismo o con otros distintos. No es aprender para competir. Es aprender a colaborar.