CUSL: Fase local

Logo CUSL

El próximo miércoles 30 de abril se celebrará la fase final local de Granada del Concurso Universitario de Software Libre, en el que participará Nipponline. Presentaremos el estado actual del proyecto, las tecnologías utilizadas, problemas encontrados y varias cosas más.

Más información sobre el lugar y la hora: http://osl.ugr.es/2014/04/09/final-cusl-2013-2014/

Advertisements
Posted in Nipponline | Leave a comment

Dibujando en el cliente

Como hemos mencionado en entradas anteriores, nuestro lenguaje escogido para la programación del lado del cliente va a ser Javascript. Desafortunadamente, no podemos limitarnos a usar Javascript a secas, ya que nuestras aplicaciones para el cliente tienen un alto componente de gráficos y animaciones (al fin y al cabo, la mayoría son juegos). Necesitábamos, pues, encontrar una biblioteca o framework que nos ayudara en las tareas de programar los juegos para el cliente en Javascript.

Hay que reconocer que la búsqueda no fue tan larga como nos habíamos esperado en un principio. El primer framework que encontramos fue gameQuery, una extensión para jQuery que facilita la realización de animaciones y juegos en general. No obstante, descartamos su uso porque se basaba en la manipulación del DOM, en lugar de usar elementos canvas de HTML (dibujando sobre estos).

A nosotros, que teníamos poca experiencia en desarrollo web, nos resultaba más cómodo usar un canvas, un lienzo sobre el que dibujar nuestras aplicaciones, que jugar con el DOM. Además, en nuestras indagaciones en la red en busca de guía y consejo también descubrimos que, si bien la manipulación del DOM presenta una mayor compatibilidad con diferentes navegadores/versiones, el uso de canvas, por lo general, parece dar resultados más eficientes, especialmente cuando se están dibujando muchos elementos en pantalla o a un alto FPS.

Continúa nuestra búsqueda, pues. Hemos encontrado numerosas opciones como GameMaker (una opción potente, pero de pago y, por tanto, desechada) o LimeJS (requiere ¿Python? para la ¿compilación?), pero la final nos decidimos por usar CreateJS.

createjsCreateJS en realidad es una suite compuesta por 4 sub-frameworks:

  • EaselJS: Probablemente el componente más importante de la suite, ya que es el que incluye toda la funcionalidad necesaria para pintar en el canvas, así como crear y manejar animaciones personalizadas.

  • TweenJS: Tween (o Inbetweening) consiste en animar un elemento de forma que una (o varias) de sus propiedades evolucionen de forma más o menos suave en el tiempo. Esto permite realizar animaciones de carácter más general de forma automática (sin usar código específico de control en el bucle de animación), como puede ser desplazar o escalar una imagen en el tiempo.

  • SoundJS: Este componente es el que, como su nombre indica, permite el uso de sonido en las aplicaciones.

  • PreloadJS: Por último, este componente permite realizar la carga de recursos (imágenes o sonidos) de forma automatizada y proporciona callbacks para su coordinación.

createsuite

¿Por qué nos decidimos por usar CreateJS? Después de examinar la API y demos que había en la web no podíamos quedar más convencidos: no solo los resultados vistos en las demos cumplían con nuestras expectativas, sino que además el estilo de uso de las funciones para dibujado y animación era bastante similar al que estábamos acostumbrados a usar en proyectos y prácticas anteriores.

Para más información sobre diferentes bibliotecas/frameworks gráficos en el lado del cliente, se puede consultar el siguiente enlace:

 

Posted in Nipponline | Tagged | Leave a comment

Nipponline en el Hackathon universitario

Como ya anunciamos en la última entrada, Nipponline participó en el VI Hackathon universitario de Granada. Fue un fin de semana bastante completo y conseguimos darle un buen empujón al proyecto. Concretamente hemos avanzado en documentación, testeo, configuración del servidor, bocetos y logos para el proyecto y en la programación de las propias aplicaciones. Pero lo más importante es que conocimos gente y conseguimos colaboradores que seguirán ayudando en lo que puedan.

Desde aquí recomendamos la asistencia a este tipo de eventos, es una buena experiencia donde todos sacamos cosas positivas. ¡Agradecemos a los organizadores y a todos los participantes por hacerlo posible!

Dejamos por aquí algunas de las fotos del pasado fin de semana:

Nipponline hackathonLa presentación del proyecto en el Hackathon.

Nipponline hackathonRealizando bocetos para Nipponline.

Nipponline hackathon

Y no podía faltar el Hack&Beers final con algunos de los colaboradores.

Posted in Nipponline | Leave a comment

VI Hackathón de Proyectos del Concurso Universitario de Software Libre

Junto con otros proyectos conocidos, Nipponline también participará en el VI Hackathon de Proyectos del Concurso Universitario de Software Libre.

Empezamos el viernes 14 por la mañana en el aula de usos múltiples de la ETSIIT con una serie de talleres y presentación de los proyectos y, a partir de las 5 de la tarde, a Cocorocó; lunes por la mañana conclusiones y presentaciones de lo obtenido durante el finde.

¿Quieres apuntarte?   Inscripción

No importa tu especialidad, ¡cualquier persona de cualquier disciplina es bienvenida!

 

VIA: OSL Granada

Posted in Nipponline | Tagged | Leave a comment

La base de datos: MongoDB

Una cuestión complicada de solucionar era la elección de la base de datos. Queríamos encontrar algo que se adaptara a nuestras necesidades y que consideráramos útil para aprender. Hasta ahora siempre hemos utilizado bases de datos relacionales como MySQL, Postgre SQL o MariaDB para todos nuestros proyectos porque era algo que venía “impuesto”. En este proyecto podíamos elegir libremente qué tecnología usar y nosotros teníamos cierta inquietud por saber qué era aquello del “NoSQL”.

Por supuesto, somos partidarios de las bases de datos relacionales para almacenar “datos relacionales”, pero en esta ocasión pensamos que quizá nuestros datos no se adaptarían bien a una forma de tabla estricta. Después de informarnos un poco hemos llegado a la conclusión de que le sacaremos más partido a una base de datos NoSQL por varias razones, siendo la más importante que en esta BD nosotros tenemos que describir un lenguaje complejo, ambiguo y con muchísimas excepciones y cosas poco comunes como es el japonés, por lo que en una base de datos relacional se nos presentarían ciertas limitaciones que, aunque subsanables, posiblemente serían poco elegantes.NoSQLEn las bases de datos relacionales, aunque cada una tiene su peculiaridad, todas comparten el mismo fundamento, por lo que no es tan difícil elegir entre ellas. Sin embargo, existen muchos tipos diferentes de bases de datos NoSQL, por lo que tendremos que elegir una basándonos en nuestras necesidades, forma de trabajar e incluso en el hardware que disponemos.

En general se consideran cuatro tipos diferentes de bases de datos NoSQL, aunque hay distintas formas de clasificarlas. A saber: orientadas a documentos (MongoDB, CouchDB), orientadas a columnas (Cassandra), de clave-valor (Redis) y en grafo (Neo4j). Hemos tenido en cuenta varias de estas bases de datos y finalmente nos hemos decidido por una de ellas que viene haciendo mucho ruido: MongoDB.

Información adicional sobre bases de datos NoSQL:

MongoDBHay que reconocer que el primer motivo por el que nos fijamos en MongoDB era por la fama que ha acumulado. Dentro de las bases de datos NoSQL, MongoDB es una de las que han empezado con más fuerza y que se ha hecho bastante conocida, por lo que pensamos que podría ser útil aprender a manejarla. No obstante, MongoDB tiene muchas características que finalmente nos animaron a elegirla como la aplicación de base de datos del proyecto. Por ejemplo, sus documentos usan una estructura JSON (aunque se almacenan en BSON), lo cual se lleva tremendamente bien con Javascript y Node.js (junto con Mongoose).

Como ya se ha mencionado, cada base de datos NoSQL es un mundo, por lo que el utilizar una u otra depende del proyecto en cuestión y también de gustos personales. Si te interesa MongoDB en concreto puedes visitar los siguientes enlaces para ampliar información sobre su funcionamiento:

Posted in Nipponline | Tagged , | Leave a comment

Javascript + Node.js

Javascript logo

Pero hablemos de programación. En principio, puesto que queríamos desarrollar aplicaciones online, teníamos que estudiar bien qué lenguaje de programación elegir para empezar a desarrollar nuestras aplicaciones. Aunque existen varias alternativas, finalmente para nosotros la solución fue muy sencilla y obvia: Javascript.

¿Por qué Javascript? En realidad quizá deberíamos plantear la pregunta al revés, puesto que Javascript nos ofrece…

  • Sintaxis familiar (venimos de C++ y Java).
  • Programación en el lado del cliente muy potente con bibliotecas tales como jQuery.
  • Programación en el lado del servidor con Node.js, express.js y compañía.
  • Programación para móviles con frameworks como PhoneGap.

Así que, ¿por qué no Javascript? No hemos encontrado ninguna respuesta. One language to rule them all, como dicen por ahí.

Node.js logo

En la parte del servidor originalmente consideramos como primeras opciones tanto PHP (utilizando el CMS Drupal para la web) como Python (nos llamaba la atención el framework Django). No nos terminaba de convencer la idea de usar PHP como lenguaje y finalmente, después de varias pruebas, decidimos descartar el uso de un CMS como Drupal porque, aunque muy potente, queríamos tener total control sobre nuestra web para poder personalizarla al máximo y parece ser bastante complicado modificar los módulos que tiene Drupal para adaptarlos a nuestro gusto.

Por otra parte, Node.js llegó hasta nosotros de forma fortuita y, aunque el dúo Python + Django nos gustaba bastante, el hecho de utilizar algo tan molón como es Node.js (y unas cuantas herramientas que lo usan) sin salirse de Javascript hizo que nos decidiéramos por estos últimos.

¿Qué es Node.js?

Node.js es… ¡Javascript! Pero un JS ejecutado en el lado del servidor mediante el motor JS V8 de Google. Esto permite utilizar un modelo asíncrono y dirigido por eventos que podrá, entre otras cosas, mantener muchas conexiones al servidor abiertas y esperando. Si tienes interés en aprender un poco más sobre Node, puedes echarle un vistazo a los siguientes enlaces (o prueba a poner Nodejs en tu buscador, que hay infinidad de recursos):

 Una de las cosas que más nos gusta de Node es su módulo NPM. Esto nos permitirá instalar otros módulos directamente desde un repositorio como si de un apt-get se tratase.

Además, Node tiene pinta de llegar a ser verdaderamente importante (si no lo es ya) en poco tiempo para desarrollo de aplicaciones web profesionales, así que esperamos que nos sirva también en el futuro. Hasta ahora no nos hemos arrepentido de estas elecciones.

Posted in Nipponline | Tagged , | 1 Comment

Motivación

Vamos a explicar ahora cuáles eran nuestras intenciones cuando pensamos por primera vez en realizar un proyecto: teníamos ganas de hacer algo útil para un número de personas elevado además de para nosotros mismos y que, sobretodo, nos gustara y nos entretuviera mientras lo hacíamos. Así pues, a continuación mostramos los tres objetivos principales que buscábamos con este proyecto:

1º – Aprender tecnologías nuevas.

2º – Aprender idiomas nuevos.

3º – Ayudar al resto de gente a aprender idiomas nuevos.

Creemos firmemente que con Nipponline podemos conseguir todos estos y más objetivos. Los dos últimos parecen inmediatos: estamos creando una comunidad para que la gente pueda practicar idiomas. Pero además vamos a hacerlo utilizando muchas herramientas y tecnologías con las que no tenemos ninguna experiencia por el simple hecho de aprender cosas nuevas que puedan resultarnos útiles en el futuro. Por esto mismo en muchas ocasiones no escogeremos el camino sencillo y directo para realizar una tarea concreta, si no que buscaremos una forma de hacerla que nos aporte nuevos conocimientos.

Un simple ejemplo de ésto es el alojamiento de las aplicaciones que estamos desarrollando. En principio podríamos utilizar un servicio PaaS de los muchos que hay por la red (muchos, y algunos muy buenos), pero en lugar de eso montaremos las aplicaciones en un servidor privado, obligándonos a “pelear” (casi literalmente) con la configuración de ciertos aspectos. Iremos escribiendo sobre los problemas que nos encontramos y cómo los vamos solucionado, puesto que puede ser información útil para gente ajena al proyecto que llegue a este blog.

En definitiva, esperamos que al acabar este proyecto hayamos adquirido experiencia en muchos ámbitos (sobretodo de informática, pero no exclusivamente) que nos puedan resultar útiles a la hora de abordar nuevos proyectos personales o profesionales.

Los próximos posts describirán las tecnologías que hemos decidido utilizar hasta ahora. Por supuesto, todas open source.

Posted in Uncategorized | Leave a comment