Spanish Developers Community Magazine
Acerca de Spanish
Developers Community es una iniciativa sin ánimo de lucro, dedicada al fomento y difusión del software basado en licencias GPL, Programación de lenguajes de programación, Sistemas Operativos Linux / Android e iOS así como diseño gráfico y redes sociales. Alcanzar nuestro objetivo de una función docente y con la intención de que estos conocimientos puedan aplicarse de una manera práctica en las actividades cotidianas de los estudiantes universitarios, empresarios y autónomos . Spanish developers community se basa en la colaboración desinteresada de profesionales y estudiantes que comparten sus saberhacer, sus conocimientos teóricos y prácticos con la comunidad informática en Internet. Esta publicación digital se distribuye mensualmente bajo una licencia Creative Commons
Colabora
En esta edición 1. Editorial 2. Diseñador y programador. Trabajando juntos 3. Programación MVC.¿En qué consiste Ruby on Rails? 4. Las Redes sociales y las Pymes 5. Instalación de Java JDK 7 en Ubuntu 12.10 Linux Mint 6. ¿Cómo puede el trabajo freelance ayudar a los desarrolladores móviles. 7. Conoce el nuevo servicio de almacenamiento en la nube Copy.com 8. Reproducción de Audio y Video en Android. 9. ¿Por qué usar framework en PHP?
¿Quieres colaborar con Spanish Developers Community?. Tienes muchas formas de hacerlo:
Envía tu artículo Puedes enviarnos tu artículo a la dirección de correo electrónico:
spanishdevcommunity@gmail.com Colabora en nuestros proyectos Puedes
ayudarnos en los proyectos de canal de youtube, blogs, página web, redes sociales y página web.
Contactar
Puedes contactar conmigo para enviarnos cualquier duda que tengas en el correo electrónico:
El genio se compone de un 2% de ingenio y un 98% de perseverante aplicación
Beethoven
antoniogarciaprats@gmail.com
2
Depósito Legal J 3682013
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Créditos
este proyecto solamente ha sido posible gracias a la
colaboración desinteresada y al firme compromiso de:
Responsable del proyecto Antonio García Prats
Coordinadores de comunicacion Antonio García & Jerobén Guzmán
Staff
Antonio García
Ing. Técnico & freelance Gerente Ibidem Network
Jerobén Guzmán
Ing. Sistemas & Profesor en la Universidad Durango
Angela Escobar
Dipl. Estadística e Informática Gerente Atica web
María Ripoll Periodista
Julio Medellin
Comunicador y programador
Raquel Partida
Diseñadora Gráfica © 2013 - www.spanishdeveloperscommunity.es
3
Editorial Estimado lector /a Me siento realmente contento de escribir ésta editorial, puesto que significa la materialización de un proyecto que surgió hace ya bastantes meses y que ve por fín la luz. Esta revista no nace con el sólo propósito de publicar una serie de artículos técnicos sobre informática, las últimas novedades en el mundo de las redes sociales, comunicación, linux o el apasionante mundo de las apps para dispositivos móviles, sino la consecución del esfuerzo de muchos profesionales por dar a conocer los numerosos proyectos se software libre y poner a disposición de nuestros lectores de una manera práctica sus experiencias profesionales, sus conocimientos técnicos o su howknow en el competitivo mundo del diseño gráfico y programación de aplicaciones. El objetivo principal de Spanish Developers Community es promocionar y dar a conocer las ventajas del uso del software libre tanto para uso privado, centros educativos o de formación, pequeña y mediana empresa o entes públicos. A este público nos dirigimos y a él mostramos las distintas soluciones aplicables a las necesidades de su actividad diaria. Y no sólo mostrar los distintos programas y proyectos que ya están disponibles en la Red y cuyo desempeño compite cuando no supera en eficacia al software comercial. También nos interesa mostrar su desarrollo usando para ello distintos lenguajes de programación; a través de tutoriales prácticos aprenderemos cómo se desarrollan las aplicaciones. Un segundo eje de la revista trata de mostrar e informar sobre las últimas novedades del sistema operativo Linux, de su uso práctico y de su funcionamiento, del desarrollo de aplicaciones sobre él. Explicar cómo instalarlo en nuestros ordenadores, cuáles son las distribuciones más importantes y cómo conseguirlo. Todo sin perder de vista a los nuevos sistemas operativos implantados en dispositivos móviles tales como android, dando a conocer toda su actualidad, ténicas de desarrollo de apps en Java y conocer el mercado laboral de estas novedosas tecnologías. Día a día se incorporan a nuestro equipo de trabajo profesionales y estudiantes universitarios que dominan áreas específicas del apasionante mundo de la informática: diseño gráfico, programación, edición de video, programación en facebook, android, java, desarrollo de aplicaciones web con ruby on rails, html5/css3, linux, gestión de redes sociales … etc, temas tendrán cabida en la publicación que la convertirán en manuales de referencia y consulta para estudiantes universitarios, profesionales y empresarios. Aquí y para terminar, quiero agradecer a todos los colaboradores que han participado en la edición de Spanish Developers Community su esfuerzo por transmitir sus conocimientos de manera gratuita y desinteresada, por que sin su colaboración esta iniciativa nunca existiría. Un cordial saludo Antonio García
5
Diseñador y programador. Trabajando juntos
portada
Spanish Developers Community Magazine
Jerobén Guzmán
Diseñador y programador de aplicaciones de gestión y sites web, estudió la Ingeniería de Sistemas en el Instituto Tecnológico de Hermosillo ( México ). Actualmente se desempeña como profesor en la Universidad Durango Santander
twitter @jeroaz redes sociales www.facebook.com/azhael.guzman web www.jeroguzman.com Cuando digo Programador me refiero desde un experto en desarrollo de software hasta un recién egresado estudiante de informática que no sabe mas que hacer un formulario de contacto (que a veces ni siquiera envía el correo). Cuando digo Diseñador me refiero desde desde un Diseñador Gráfico profesional hasta cualquier aficionado, autodidacta y/o artista freelancer. Programadores y Diseñadores tratan de satisfacer al mismo tipo de cliente, pero en estos días un sitio web es algo complicado como para hacerlo uno solo, ninguna profesión puede ofrecer una lista completa de servicios para la pequeñas y medianas empresas en crecimiento. El resultado es una telaraña de "outsourcing" y © 2013 - www.spanishdeveloperscommunity.es
personas que aparecen en ambos lados, tratando de satisfacer las necesidades de los clientes y tratando de ser capaces a pesar de que en su mayoría no lo son. Empresas de Diseño grafico rara vez contratan programadores y empresas de Programación rara vez contratan Diseñadores. Ellos prefieren subcontratar en lugar de contratar a un empleado de tiempo completo cuyas habilidades se utilizan solo algunas ocasiones, porque la mayor parte de sus ganancias se derivan de sus servicios básicos. Esto es parte del problema. Diseñadores y programadores trabajan en diferentes campos con mas frecuencia.
En la educación podría estar parte del 5
Spanish Developers Community Magazine
problema
candy crush".
Lo primero de todo, Diseñadores y Programadores, aunque hasta estos días su base de clientes es muy similar, casi no hay superposición en los requisitos de la mayoría de las universidades. Hablo por experiencia, las palabras "Programación" o "Aplicaciones Web" casi nunca se mencionan por el maestro de Diseño Web y lo mismo va para los estudiantes de Informática que en sus clases no hay aprendizaje sobre "Tipografía" o "La teoría del color", por mencionar algunos. Corrijan si me equivoco.
Por otro lado a los Programadores no se les enseña mucho sobre Diseño, o como trabajar con un Diseñador. ¿Enseñan Photoshop básico para programadores? Claro que no. Los Programadores resuelven problemas que los Diseñadores realmente no les va. Los Programadores aprenden código, propiedades, valores, claves, arreglos ¿y que? Exacto. La estructura de un simple formulario de contacto es total y absolutamente ajeno a un Diseñador Grafico. Tu sabes esas personas que tu subcontratas para que le den vida y color a tu Sitio Web basado en PHP.
El hecho es, que dos profesiones se ven obligadas por los clientes ("El mundo real") a trabajar juntos. Un Diseñador no necesita conocer las habilidades de un Programador (y viceversa), pero seria bueno si el/ella tenga entendido por que razones un Diseñador y un Programador se necesitan el uno al otro.
Dos animales muy diferentes Programación y Diseño son dos animales completamente diferentes, pero juntos en armonía pueden hacer un súper sitio web o una grandiosa aplicación. El Diseñador promedio comienza en la universidad tomando clases de Dibujo, seguido de una serie de cursos sobre Historia del Arte. La mayoría de los planes de estudios universitarios están en dificultades para reconocer siquiera el Diseño Web como parte integral en la educación de los Diseñadores. En cambio, carreras de Diseño Gráfico están atoradas enseñando los significados mas profundos de Buda, gestos con las manos en la pintura por alguien cuyo nombre ni siquiera podemos pronunciar, cuando la mayoría de los estudiantes lo que quieren es aprender a diseñar para la Web. Las universidades simplemente no están adoptando el Diseño Web, ya que lo consideran un sector diferente a la estructura del plan de estudio. A lo que trato de llegar es que en las carreras de Diseño no se están educando a los Diseñadores como Diseñadores Web. Ellos están tratando de negar a los medios digitales como una forma de arte. "El mundo del arte no tiene que ver con la web, oh pero como me gusta jugar 6
La demanda está ahí y aumenta día a día, vamos a trabajar juntos Cuando trabajamos juntos entre programación y diseño, los mejores resultados y los clientes mas contentos están directamente relacionados con la buena relación Diseñador/Programador. La mejor manera de avanzar y llegar a la cima del éxito es tener un socio de confianza, sea Diseñador o Programador. Diseñadores y Programadores deben buscar constantemente como ayudarse unos a otros. Si usted es una pequeña empresa en crecimiento y tienen buena demanda, contrate a alguien para complementar su equipo. Sus diseñadores aprenderán 100 veces mas información de un Programador en el equipo que de un Programador externo. Lo mismo ocurre con los Programadores, un Diseñador Gráfico en el equipo podría salvar miles en "outsourcing" y enseñar al equipo acerca del Diseño en frente del código y como los scripts manipulan lo que el usuario ve. La interfaz de un Sitio Web debería ser diseñada para la usabilidad y accesibilidad, y eso involucra tanto a lo que se ve y la Programación que lo hace funcionar. Hagan un esfuerzo para entender una disciplina complementaria.
© 2013 - www.spanishdeveloperscommunity.es
7
Programación MVC ¿En qué consiste Ruby on Rails?
Lenguajes de programación
Spanish Developers Community Magazine
Antonio García
Ingeniero Técnico en Informática de Gestión por la Universidad de Jaén, trabaja profesionalmente como informático freelance, desarrollando proyectos de gestión y diseño gráfico.
web www.ibidemnetwork.es
twitter @antgprats redes sociales www.facebook.com/antgarprats personal about.me/antoniogarciaprats Este paradigma de programación sigue el patrón de separar los datos de la aplicación de la interfaz del usuario y la lógica de control en tres componentes distintos. Este paradigma se ve muy frecuentemente en aplicaciones web, en donde la vista se corresponde con el documento html y el código que provee de datos dinámicos a la página. El modelo correspondería con el sistema de gestión de bases de datos relacional y la lógica el negocio; el controlador será el responsable de recibir los eventos de entrada desde la vista. Debemos admitir que esta es una descripción somera de lo que podemos crear y obtener con este paradigma de programación, por lo que será necesario extenderse © 2013 - www.spanishdeveloperscommunity.es
un poco más en la enumeración y descripción de este modelo.
Descripción del patrón MVC
El modelo MVC es un patrón de arquitectura de software que separa los datos y la lógica de negocio el término lógica de negocio se refiere a la parte del sistema que se encarga de las tareas relacionadas con los procesos de un negocio, tales como ventas, control de inventario, contabilidad, … etc. Son rutinas que realizan entrada de datos, consulta de datos, generación de informes, y más específicamente todo el procesamiento que se realiza detrás de la aplicación visible para el usuario., de una aplicación de la interfaz de usuario la interfaz de usuario es el medio
7
Spanish Developers Community Magazine
con que el usuario puede comunicarse con la máquina, y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello, el paradigma MVC propone la construcción en paralelo de tres componentes distintos que se denominan: el modelo, la vista y el controlador. Este patrón de diseño se basa fundamentalmente en la reutilización de código ya realizado y en la separación de conceptos, características que facilitan la tarea de desarrollo de software y su posterior mantenimiento. El ahorro de costes es, pues, no sólo viable sino también un elemento a tener muy en cuenta. El modelo lo podemos definir como la representación de la información con la que opera el sistema en cuestión. En general, el modelo se limita a lo relativo a la vista y su controlador facilitando las representaciones visuales complejas. El sistema puede operar con datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado. La vista presenta el modelo en un formato adecuado para que sea posible la interactuación, por ejemplo, la interfaz de usuario. El controlador responde a eventos, o lo que es lo mismo, acciones del usuario sobre la interfaz, e invoca peticiones al modelo y, probablemente, a la vista. Existe una gran cantidad de sistemas que basan su funcionamiento sobre un sistema de gestión de bases de datos relacional. En líneas generales, el MVC corresponde al modelo. La unión entre la capa de presentación y la capa de negocio representaría la integración entre la Vista y su correspondiente controlador de eventos y acceso a datos. MVC no puede discriminar entre la capa de negocio y la capa gráfica, pero si separará esta última de su correspondiente programación y acceso a datos, cuestión que mejorará mucho tanto el desarrollo como el mantenimiento, ya que ambos cumplen ciclos de vida muy distintos entre si. Aunque en Internet encontraremos muchas y diferentes implementaciones de MVC, el flujo de control que 8
sigue generalmente es el siguiente: 1. El usuario interactua con la interfaz de usuario de alguna forma, p. e.g pulsando un botón o un enlace. 2. El controlador recibe la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback. 3. El controlador accede al modelo, actualizandolo o modificandolo de forma adecuada y coherente a la acción solicitada por el usuario. 4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. 5. Por último, la interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente. Esto es, brevemente, el ciclo de vida que siguen este tipo de aplicaciones, empero, como hemos dicho antes, existen modelos diferentes, por lo que no nos costará encontrar información en la Red de Redes. Originalmente MVC fué concebido para desarrollar aplicaciones de escritorio, aunque con el tiempo se pasó a utilizarlo para desarrollar aplicaciones web. Se han desarrollado multitud de entornos de trabajo framework, comerciales y no comerciales, que implementan este patrón; estos framework se diferencian básicamente en la interpretación de cómo las funciones MVC sedividen entre cliente y servidor. Los primeros frameworks MVC planteaban lo que se conoce como un enfoque de cliente ligero en el que casi todas las funciones tanto de la vista, el modelo y el controlador recaían en el servidor. En este enfoque, el cliente manda una petición y después recibe de la vista una página completa y actualizada (u otro documento); tanto el modelo como el controlador están alojados en el servidor. Con la maduración de este modelo, ahora existen marcos de trabajo como JavaScriptMVC, Backbone o Jquery que permiten que ciertos componentes MVC se © 2013 - www.spanishdeveloperscommunity.es
ejecuten parcial o totalmente en el lado del cliente (véase Ajax). En este artículo, basaremos nuestro estudio en uno particular: ruby on rails.
¿Qué es ruby on rails?
Se podría definir como un marco de trabajo que se puede utilizar robustas aplicaciones web con una rapidez más que asombrosa. En cualquier caso es tan sólo un área de trabajo pensada para desarrollar aplicaciones con el lenguaje de programación ruby. El siguiente paso lógico que debemos tomar para continuar en nuestro aprendizaje de esta plataforma de programación es responder a la pregunta ¿qué es ruby?. Realmente es un lenguaje de programación orientado a objetos relativamente nuevo (1.995) creado por Yukihiro Matsumoto, con una sintaxis muy parecida a Perl y con características que comparte con Smalltalk. En los últimos años ha ganado una considerable popularidad, no tan sólo por ser un lenguaje que podríamos decir que pertenece al conjunto de los “open source”, sino también por lo sencillo y rápido que resulta crear aplicaciones web muy robustas, p. e.g. Tuenti. Uno de los principales objetivos de RoR, y por lo que lo ha hecho tan popular, es la reutilización del código para no perder tiempo programando algo que ya ha sido creado y probado con éxito. Además su compatibilidad con MySQL hace que sea una herramienta muy sencilla de utilizar. Es importante, no obstante, conocer las convenciones de programación que existen en Rails, cuestiones que a simple vista pueden resultarnos inútiles pero que, una vez las hayamos comprendido nos permitirán ahorrar una considerable cantidad de tiempo y mucho más cuando editemos la documentación o el código.
Instalación del marco de trabajo ruby on rails en linux
Para iniciar el desarrollo de aplicaciones basadas en
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
ruby on rails será necesario instalar y configurar el sistema, por lo que vamos a desarrollar nuestra aplicación en un entorno linux. Particularmente, sobre la distribución mint 12. Comenzaremos por abrir una ventana de la terminal y nos logeamos como superusuario a través de la línea de comandos: su
Tras ello tendremos que introducir el passwd. El proceso de instalación de ruby on rails en linux y tenerlo preparado para la generación de proyectos profesionales es sorprendentemente sencillo; lo veremos a continuación paso a paso. En primer lugar instalaremos el interprete de ruby y sus complementos. El proceso es relativamente rápido, en función no sólo de la potencia de nuestro ordenador sino también del ancho de banda de nuestra conexión en red. El comando que deberemos tipear en la terminar para este proceso es la siguiente: sudo apt-get install ruby-full irb
Nos detendremos un momento en aquí para explicar un poco el comando sudo y su significado. Seguro que habrás oido hablar de este comando, que permite ejecutar sentencias con los privilegios de cualquier usuario incluidos los privilegios de superusuario. Esta instrucción se puede sustituir por “substitute user do” o “super user do”, realiza una tarea importante y crucial en muchas distribuciones de linux. La opción aptget sirve para poder instalar aplicaciones, borrarlas, actualizar Linux, cambiar la distribución, … etc. En principio, los usuarios de linux tenían que utilizr tar.gz; a continuación tenían que compilar cada programa que deseaban utilizar. Cuando se creó Debian, se tomó en consideración que el sistema incluyera un método para manejar los paquetes instalados en las máquinas. Se le dió el nombre de dpkg a este sistema. Así fue como llegó el primer “paquete” a GNU/Linux, un tiempo antes de que la distribución Red Hat creara su propio sistema “rpm”.
9
Spanish Developers Community Magazine
Un nuevo dilema se formó en los creadores de GNU/Linux. Necesitaban una manera rápida, práctica y eficiente de instalar paquetes que pudieran manerar dependencias automáticamente y cuidara los archivos de configuración al actualizar. De nuevo la distribución Debian tomó la iniciativa y así nació apt, la “herramienta avanzada de paquetes – Advanced Packaging Tools”, que desde este momento ha sido adoptada por la mayoría de las distribuciones que hay en el mercado. El siguiente paso es instalar la base de datos MySQL, así como la librería correspondientes al lenguaje ruby para poder manejar la base de datos: sudo apt-get install mysql-server libmysqlruby
Este proceso terminará cuando hayamos establecido la
contraseña para el usuario root. Se nos requerirá a través de la terminal de comandos que tenemos abierta. Y por último, instalaremos el framework o “marco de trabajo” que perseguimos: ruby on rails. Para realizar esto, podemos hacerlo a través de rubygems cuestión que personalmente no recomiendo por que suele dar problemas, o bien instalarlo de la misma forma en la que hemos instalado los demás requisitos que necesitabamos: con aptget. sudo apt-get install rails
Ahora lo que queda es probar si la instalación que hemos realizado verdaderamente funciona. No tendrá queja el lector de que instalar este marco de trabajo en linux ha sido complejo, de hecho ha sido realmente fácil. ¿Cómo hacerlo?. Abriremos una ventana de terminal y crearemos un proyecto nuevo de la siguiente forma: rails nuevoproyecto
A continuación, ejecutaremos el script que lanza el servidor cd nuevoproyecto
10
ruby script/server
Por último abriremos el navegador e ingresaremos la dirección http://localhost:3000 y debería aparecer un mensaje de bienvenida de ruby on rails parecido al que aparece en la imagen.
Un sencillo ejemplo para ilustrar el funcionamiento de RoR Crearemos nuestra primera aplicación: $ rails test create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create
app/controllers app/helpers app/models app/views/layouts config/environments config/initializers config/locales db doc lib lib/tasks log public/images public/javascripts public/stylesheets script/performance test/fixtures test/functional test/integration test/performance test/unit vendor vendor/plugins tmp/sessions tmp/sockets tmp/cache tmp/pids Rakefile README
create app/controllers/application_controller.rb create app/helpers/application_helper.rb create config/database.yml create config/routes.rb create config/locales/en.yml create db/seeds.rb create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/new_rails_defaults.rb © 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create create
config/initializers/session_store.rb config/initializers/cookie_verification_secret.rb config/environment.rb config/boot.rb config/environments/production.rb config/environments/development.rb config/environments/test.rb script/about script/console script/dbconsole script/destroy script/generate script/runner script/server script/plugin script/performance/benchmarker script/performance/profiler test/test_helper.rb test/performance/browsing_test.rb public/404.html public/422.html public/500.html public/index.html public/favicon.ico public/robots.txt public/images/rails.png public/javascripts/prototype.js public/javascripts/effects.js public/javascripts/dragdrop.js public/javascripts/controls.js public/javascripts/application.js doc/README_FOR_APP log/server.log log/production.log log/development.log log/test.log
El siguiente paso sería configurar nuestro RoR. $ cd test $ ruby script/server
=> Booting WEBrick => Rails 2.3.8 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2010-08-02 12:40:40] INFO WEBrick 1.3.1 [2010-08-02 12:40:40] INFO ruby 1.8.7 (2010-01-10) [i486-linux] [2010-08-02 12:40:45] INFO WEBrick::HTTPServer#start: pid=27681 port=3000
Creamos un controlador, lo llamaré hello $ ruby script/generate controller hello
exists app/controllers/ exists app/helpers/ create app/views/hello exists test/functional/ create test/unit/helpers/ create app/controllers/hello_controller.rb create test/functional/hello_controller_test.rb create app/helpers/hello_helper.rb create test/unit/helpers/hello_helper_test.rb
© 2013 - www.spanishdeveloperscommunity.es
11
Spanish Developers Community Magazine
Por último, creamos una acción, que llamaremos “hi”. En el fichero app/controlers/hello_controler.rb añadimos la acción “hi”. class HelloController < ApplicationController def hi end end
Por último creamos la vista de la acción “hi” $ vim app/views/hello/hi.html.erb <html> <body> Hello World!!</body> </html>
Lo único que nos queda es visualizar este programa en nuestro navegador favorito.
Referencias 1. http://www.muylinux.com/2010/05/14/introduccionasudo/ 2. http://www.linux.com/learn/tutorials/306766linux101introductiontosudo 3. http://tuxinga.wordpress.com/2007/10/02/%C2%BFqueesaptget/ 4. http://hablandodelinux.wordpress.com/2010/03/30/instalandorubyonrailsenubuntu2/ 5. http://www.webtutoriales.com/articulos/queesrubyonrails 6. http://www.desarrolloweb.com/wiki/mvcmodelovistacontrolador.html 7. http://es.wikipedia.org/wiki/Ruby_on_Rails 8. http://es.wikipedia.org/wiki/Modelo_Vista_Controlador 9. http://es.wikipedia.org/wiki/Arquitectura_de_software 10. http://damncorner.blogspot.com.es/2009/04/laaventuraderubyonrailsparte3.html 11. http://atuljha.com/blog/2010/08/04/roronubuntulucid/
12
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Las Redes Sociales y las Pymes
Redes sociales
13
Ángela Escobar
Diplomada en Estadística e Ingenieria Técnica en Informática de Gestión por la Universidad de Jaén, ha emprendido recientemente el proyecto empresarial Atica Web especializado en la gestión de proyectos web y redes sociales.
web www.aticaweb.com
rtwittered www.facebook.com/AticaWeb redes sociales www.facebook.com/AticaWeb Las redes sociales han conseguido ocupar un gran hueco en nuestras vidas y también en la de las pequeñas y medianas empresas, hasta llegar a formar parte de ellas, para bien o para mal. Dependiendo del lugar geográfico en el que nos movamos, así será de conocida ésta nueva tecnología. En los lugares donde es más usada, tanto por el colectivo individual como por las pymes, se está viendo cómo una red social bien gestionada aumenta la interactividad con sus clientes, a la vez de poder captar más y tener un incremento de sus ventas y beneficios. En España, por ejemplo, el uso de las redes sociales de manera profesional por parte de las PYMES alcanza un 55,3% del total. En el gráfico siguiente podéis ver la repartición del uso de las redes sociales en las PYMES españolas. Las empresas que más se embarcan en las redes sociales son las del sector © 2013 - www.spanishdeveloperscommunity.es
servicio ( turismo, hostelería, ... ) de ahí podemos deducir, por ejemplo, por qué Granada tiene a más del 60% de sus PYMES en las redes sociales. Actualmente cuando alguien quiere saber o conocer algo de una empresa, la busca en el casi divinizado buscador Google, y la mayoría de las veces ahí está, es una red social esperando a ser encontrada. Es casi innegable que casi todos, al entrar y además ver la información de su web, vemos que también disponen de redes sociales, accedemos e investigamos que "se cuece" ahí, si se actualiza la información a menudo, si tiene algún tipo de valoración de sus clientes y la gestión que realizan. Hoy en día, ésta es la forma más habitual de buscar una empresa, y por ello, el 65% de las empresas que utilizan las
13
Spanish Developers Community Magazine
permiten que las pequeñas y medianas empresas compitan con las grandes empresas en igualdad de condiciones. Pudiendo así obtener grandes oportunidades en la venta de sus productos. 5. Internacionalización. Cuándo tú creas tu cuenta en Twitter o Facebook abres una pequeña ventana al mundo por la cual tu empresa empieza a tener presencia internacional. Una vez creada una comunidad internacional el siguiente paso podría ser la exportación.
redes sociales las usan para suministrar información de sus productos o servicios, y también, por qué no, como una forma de comunicación con sus clientesseguidores. Creo que las pymes deberían apostar por las redes sociales por los siguientes puntos: 1. Cercanía con los clientes. En una tienda física tú tienes contacto directo con los clientes que visitan este establecimiento. Pero si tus clientes también son de fuera de la zona en la que se encuentra tu establecimiento es muy dificil que se enteren de ofertas, nuevos servicios que proporcionas... si no acuden a este lugar, en cambio, con las redes sociales tendrías esta información por igual. Lo mismo ocurre con el ecommerce, necesitan una publicidad y comunicación que consiguen a través de las redes sociales. 2. Tormenta de ideas. A partir de escuchar y ver el movimiento de tus redes sociales, puedes obtener más ideas para mejorar tus productos y servicios o incluso para nuevos productos, por que no. 3. Posicionamiento. Si contamos con página web propia cómo si no, las redes sociales nos permiten un mejor posicionamiento a la hora de las búsquedas, es decir, si en la descripción de Facebook tenemos: Tienda de Ordenadores de Jaén. El buscador cuándo alguien busque "Ordenadores en Jaén" es muy probable que lo primero que le aparezca a ese usuario sea nuestra página en facebook, pudiendo así captar clientes. 4. Competencia conlas grandes empresas. Las redes sociales
14
A parte de todo ésto, las redes sociales tienen otro valor bastante importante, y es que son mucho más asequibles que los medios de publicidad tradicionales. Hay que desmitificar la idea de que las redes sociales son totalmente gratuitas, no nos engañemos. La gestión de estas redes requiere tiempo y dedicación, ¿y qué es el tiempo para una empresa?: Dinero. Pero a pesar de todo ésto y como he dicho anteriormente, su coste sigue siendo mucho más asequible que por otros medios. En el siguiente número, os hablaremos de cómo iniciarse en el mundo de las redes sociales, y para los que ya estéis dentro de ellas, os iremos dando herramientas para que podáis tener un mayor beneficio de éstas. Los datos utilizados en este artículo provienen del Observatorio sobre el uso de las redes sociales en las PYMES españolas publicado por la fundación Banesto. Aquí tenéis el enlace para ver más conclusiones: http://es.slideshare.net/fundacionbanesto/observatori oredessocialesfebrero2013
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Instalación de Java JDK 7 en Ubuntu 12.04 / Linux Mint 14
open source
15
Si usamos la distribución Ubuntu o Linux Mint, por defecto instalan el paquete de Java OpenJDK. Si necesitas por algún motivo la versión de Oracle, puedes instalar el paquete de Java 7 desde repositorios sin más problemas, siguiendo los pasos que vamos a enumerar a continuación.
no se instala nada.
Lo primero que habría que hacer es desinstalar todos los paquetes de openjdk que haya instalados. Para ello, tenemos que abrir la terminal y ejecutar la siguiente instrucción:
y con ello tendremos el siguiente mensaje aparecerá en la terminal:
sudo apt-get remove openjdk-*-jre A continuación, si fuese necesario, instalaremos la versión de Oracle, ejecutando en la misma terminal lo siguiente: sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7installer Lo primero que se te va a solicitar es que aceptes la licencia de Oracle, y ahí sólo tienes que pulsar ENTER. A continuación, aparecerá dicha licencia y ahí por supuesto tienes que elegir la opción "Si", ya que si no, © 2013 - www.spanishdeveloperscommunity.es
Una vez instalado el software, ya tendríamos que tener instalada la última versión de Java. Podéis verlo con: java -version nos
java version "1.7.0_21" Java(TM) SE Runtime Environment (build 1.7.0_21-b11) Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode) Puede encontrar más información en la página web: http://storm.malditainternet.com/wp/2013/04/instalar oraclejavajdk7enubuntu1204mint14/
15
Spanish Developers Community Magazine
¿Cómo puede el trabajo freelance ayudar a los desarrolladores móviles?
tecnología
17
María Ripoll
Periodista vocacional inspirada en la comunicación relacionada con el ámbito de las aplicaciones móviles. Desarrolla su labor profesional en Yeeply, plataforma especializada en la externalización de proyectos móviles
web www.yeeply.com redes sociales www.facebook.com/ta.mrm
¿Qué hacer para evitar el desempleo? Esta es una pregunta que muchas personas se hacen en nuestro país. Dada la grave situación económica y con una de las tasas de paro más elevadas de la Unión Europea, parece que España no es el lugar más adecuado para desarrollar una carrera profesional. De hecho, muchos de los trabajadores cualificados de nuestro país están emigrando a otras naciones más prósperas en busca de oportunidades. Sin embargo, un buen puñado de los que deciden quedarse opta por esquivar la situación de desempleo convirtiéndose en trabajador freelance. Pero, ¿cómo pueden los desarrolladores de apps sacar 16
partido de las posibilidades que ofrece el trabajo freelance? El mercado de las aplicaciones móviles es un ámbito bastante peculiar. Generalmente, las empresas que necesitan desarrollar una aplicación móvil no cuentan con actividades principales basadas en el entorno mobile. Por este motivo, no es habitual que estas corporaciones tengan en nómina a desarrolladores de apps, básicamente porque la relación que suelen tener con los mismos es puntual y no demasiado duradera en el tiempo. © 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Muchas de estas empresas –sino todas optan por externalizar el desarrollo de la aplicación móvil que necesitan. De esta manera, delegan la gestión de este proceso en profesionales cualificados. Éstos cuentan con toda la tecnología necesaria y las habilidades profesionales que las empresas buscan, sin necesidad de que éstas tengan que invertir en ingenios técnicos, contratación y formación de trabajadores. Es en este contexto donde los desarrolladores freelance pueden aprovechar su capacidad como trabajadores autónomos para ofrecer a estas empresas un servicio de calidad y sin necesidad de moverse de casa. Por otro lado, la opción de ser desarrollador freelance permite trabajar en diversos proyectos simultáneamente. De esta manera, se pueden obtener mayores beneficios económicos y ampliar rápidamente la red de contactos profesionales. Sin embargo, no todo es tan sencillo para los desarrolladores freelance. Una de las tareas más tediosas para el trabajador autónomo es la búsqueda de clientes y proyectos. En ocasiones, esta labor ocupa gran parte del tiempo de los autónomos, lo que puede impedir una mayor dedicación a los proyectos en los que se encuentre trabajando. Para facilitar esta misión, muchas son las plataformas online que han surgido en los últimos tiempos que pretenden conectar en un mismo espacio a freelance y clientes. Generalmente, suelen abarcar una amplia variedad de temáticas: redacción, diseño, programación, publicidad, traducción, etc. Entonces, ¿cómo encontrar a través de ellas proyectos de aplicaciones móviles? Para evitar perderse en una multitud de proyectos de diversas disciplinas, es importante acudir a plataformas especializadas en una temática concreta, como es Yeeply (www.yeeply.com). En estos sitios web especializados, los desarrolladores freelance pueden tener acceso a un importante número de proyectos de apps. Así mismo, estas plataformas online suelen disponer de opciones para aumentar la visibilidad de los profesionales inscritos, tales como la introducción del currículum dentro del perfil de usuario, un portfolio de aplicaciones subidas a los principales Marketplaces o un sistema de ranking, en el que influyen parámetros como el número de aplicaciones que el desarrollador tenga en las app stores o la valoración que otros clientes hayan hecho de su trabajo.
© 2013 - www.spanishdeveloperscommunity.es
17
Spanish Developers Community Magazine
Conoce el nuevo servicio de almacenamiento en la nube: copy.com Copy.com es un nuevo servicio de almacenamiento en la nube (Cloud Storage) similar a Dropbox, SugarSync o ODIN. Es un mercado muy competido, pero Copy está entrando de todos modos. Entonces, ¿qué hace a Copy
tecnología
18
Jerobén Guzmán
web www.jeroguzman.com redes sociales www.facebook.com/azhael.guzman twitter @jeroaz
destacar en comparación con la gran cantidad de otros servicios de almacenamiento en la nube disponibles? En este punto Copy.com es muy similar a Dropbox. Esto es a la vez bueno y malo. La parte buena es que Dropbox es muy simple y fácil de usar simplemente funciona. Lo no tan bueno es que en realidad no están prestando un servicio muy singular. Sin embargo, teniendo en cuenta que Dropbox sólo ofrece 2 GB de almacenamiento gratuito inicialmente, Copy es definitivamente mas atractivo regalando mucha más capacidad de almacenamiento (15GB) de forma gratuita. Copy, como Dropbox tiene una sola carpeta en la que puede agregar lo que quieras subido a la nube y sincronizado con otros dispositivos. Hay controles que le permiten elegir qué archivos / carpetas desea sincronizar con qué equipo o dispositivo. Parece que el servicio aun no encripta todos sus datos, por lo que no pondría información personal en Copy si realmente no quiero que alguien mas lo vea. El único proveedor de almacenamiento en la nube en el que realmente tengo fe en la medida en que se refiere a la seguridad y el cifrado es ODIN. Sin embargo, siempre se puede utilizar el programa de cifrado excelente, TrueCrypt para crear un volumen cifrado y luego subirlo. 18
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Algunas cosas que se destacan es que el ejemplar está ofreciendo soporte para Windows, Mac y Linux, además, tanto en Android y aplicaciones de iOS están disponibles. En segundo lugar, ofrecen un programa de referencia muy generosa que da a ambas partes un 5 GB extra por cada referido! Así que si usted se inscribe con el enlace de referencia, confirmar su dirección de correo electrónico y, a continuación, instala el software en su Computadora, iOS o Android obtendrá 20 GB de forma gratuita y recibirá un 5 GB adicional. Según Copy esta es una oferta por tiempo limitado, así que no estoy seguro de cuánto tiempo van a ser capaces de obtener esta cantidad de espacio por cada referido. Por último, si usted está dispuesto a pagar por uno de los servicios de almacenamiento en la nube como Dropbox, SugarSync, Google Drive, SkyDrive, SpiderOak entonces esta es una de las opciones más económicas disponibles. Como se puede ver en la imagen de abajo, sus precios son muy razonables en comparación con la competencia. Como he utilizado Copy, que ha trabajado como Dropbox ningún problema hasta el momento. Al colocar un archivo o carpeta en la carpeta de Copy comienza la carga inmediatamente y se sincroniza con los demás dispositivos. Una cosa que me gustaría ver, es el cifrado de extremo a extremo que espero que se hagan las cosas bien y añadir esa característica de seguridad muy pronto.
© 2013 - www.spanishdeveloperscommunity.es
19
Spanish Developers Community Magazine
Reproducción de audio y vídeo en Android Reproducción de sonido en Android
Android
20
Antonio García
Actualmente, las características de los dispositivos web www.ibidemnetwork.es móviles que disponen del sistema Android nos permiten redes sociales www.facebook.com/antgarprats consumir contenidos multimedia sin que el dispositivo sea gravoso para el dispositivo cumplir con ésta tarea. puede ser configurado para controlar un stream de Conoceremos hoy las dos Api's que Android provee para audio específico. Para conseguir esto es necesario trabajar con sonidos: SoundPool y MediaPlayer. especificar el tipo de audio que maneja nuestra aplicación, como por ejemplo en la siguiente línea de Podemos utilizar SoundPool para reproducir pequeñas código: pistas de audio. Con esta clase no sólo podemos repetir la reproducción de sonidos, también podemos reproducir context.setVolumeControlStream ( múltiples sonidos de manera simultanea. Una cuestión AudioManager.STREAM_MUSIC );
importante al usar esta librería es que el tamaño de los Cuando queramos trabajar con pistas de audio más sonidos que se vayan a reproducir nunca deben largas, utilizaremos la clase Mediaplayer, tal y sobrepasar 1 Mb de tamaño. como veremos en la segunda parte de esta sección de artículo. Crearemos un nuevo proyecto con el Básicamente, el funcionamiento de esta librería procede nombre SoundsTest con la versión Android 2.2. de la siguiente manera: esta clase carga el archivo de El objetivo de la aplicación será reproducir un sonido forma asíncrona; además, a partir de la versión 2.2 de cada vez que el usuario toque alguno de los tres Android es posible comprobar si la carga del archivo de botones definidos con el dedo. sonido se ha realizado satisfactoriamente a través del objeto OnLoadComputerListener ( ). Escribiremos las sentencias import de las tres clases Otra cuestión que es importante tener en cuenta es que Android soporta diferentes flujos de audio que pueden utilizarse para propósitos diferentes. También resulta interesante saber que el botón del volumen del teléfono 20
que nos van a ser necesarias para utilizar: SoundPool, que será la componente principal de esta clase, AudioManager para controlar las configuraciones globales de la reproducción de los sonidos de la aplicación; y Context que se necesita © 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
para obtener los recursos de sonido que guardamos en la teléfono donde se está ejecutando la aplicación. carpeta res/raw. public void unloadAll ( ) { import android.content.Context; sndPool.release ( ); import android.media.AudioManager; } import android.media.SoundPool;
Ahora escribiremos la actividad principal y en ella A continuación, vamos a crear todas las variables que vamos a asignar todos los eventos a cada uno de los necesitaremos para que funcione nuestro programa: botones que definimos en la interfaz de usuario: public class SoundManager { private Content pContext; private SoundPool sndPool; El siguiente paso será inicializar el objeto de tipo SoundPool que define el volumen de los sonidos al 100% y con la capacidad adicional de poder controlar el audio de la pista: public SoundManager ( Context appContext ) { sndPool = new SoundPool ( 16, AudioManager.STREAM_MUSIC, 100 ); pContext = appContext;
Después definimos los métodos para cargar los sonidos y reproducirlos. El primero recibe el id de la pista para que la elija de los archivos alojados físicamente en el proyecto; y el segundo, es simplemente una función que nos permita reproducir la pista pasando como parámetro el resto de los ajustes como sonido, balance y velocidad: public int load ( int sound_id ) { return sndPool.load ( pContext, sound_id, 1 ); } public void play ( int sound_id ) { sndPool.play ( sound_id, 1.0, 1.0, 1, 0 , rate ); }
import android.app.Activity; import android.media.AudioManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class
SoundTestActivity extend Activity
{ SoundManager snd; @Override public void OnCreate ( Bundle savedInstanceState ) { super.onCreate ( savedinstancestate ); setContentView ( R.layout.main ); snd = new Soundmanager ( getApplicationContext( ) ); this.setVolumeControlStream ( AudioManager.STREAM_MUSIC ); … }
Para que el programa funcione necesitaremos crear un método llamado clickHandler ( ) para controlar cada uno de los eventos de click hechos a cada uno de los botones de la interfaz. En la Por último, el método unloadAll ( ) nos permitirá declaración XML de cada botón definiremos un liberar la memoria de todos los objetos SoundPool que ya atributo android::onClick cuyo valor deberá ser no son requeridos y evitar así, que la aplicación alente el clickHandler. Todos los botones lo tienen, por lo que, © 2013 - www.spanishdeveloperscommunity.es
21
Spanish Developers Community Magazine
este método, por medio de la sentencia switch hace la recién creada del proyecto. selección del botón presionando a través del ID de la Para reproducir un fichero de sonido hay que crear un vista que recibe como parámetro: objeto del tipo mediaPlayer mediante la siguiente secuencia de instrucciones: public void clickHandler(View v) { int id = v.getId(); switch (id) { case R.id.button1: snd.play(laser); Log.i("---","Button1"); break; case R.id.button2: snd.play(explode); Log.i("---","Button2"); break; case R.id.button3: snd.play(pickup); Log.i("---","Button3"); break; } } A continuación veremos este proceso pero utilizando el objeto MediaPlayer, para lo cuál desarrollaremos un ejemplo diferente, explicando cada una de las líneas de código. La inclusión de música, efectos de sonido y vídeos en nuestras aplicaciones desarrolladas con Android, puede conseguir que nuestros programas sean mucho más atractivos de lo que podría conseguir sólo con textos y gráficos. Los archivos de sonido se reproducen mediante un objeto de la clase mediaPlayer, perteneciente al paquete android.media. Esta clase puede soportar diferentes tipos de formato de audio, entre los que se encuentran los que tienen las extensiones wav, mp3 y ogg. Los archivos de sonido pueden incluirse en la aplicación copiándolos en la carpeta res/raw. La carpeta raw puede crearse desde Eclipse pulsando con el botón derecho sobre la carpeta res y seleccionando nueva carpeta. El siguiente paso consistiría en incluir los ficheros de sonido en la carpeta
22
MediaPlayer mplayer; if ( mplayer != null ) mplayer.release ( ); mplayer = MediaPlayer.create ( this, R.raw.fichero ); mplayer.seekTo (0); mplayer.start ( );
En la instrucción segunda se llama al método release ( ),
esencial para evitar sobrecargar el sistema con múltiples instancias simultáneas de objetos MediaPlayer, en cuyo caso la aplicación se abortaría. Hay que tener la precaución también de llamar al método release ( ) si la aplicación pasa al background ( esto pasa en el método OnPause ( ) ). En una aplicación que incluye música, pueden definir el tempo de las emociones del usuario, de igualmente, y al igual que los gráficos en la pantalla, la música puede servir para transmitir información al usuario. Vamos a comprobar el uso de archivos de música con un sencillo de música que ejemplifique su funcionamiento. Veremos cómo al pulsar una una tecla en nuestro teclado reproduzca un sonido. Comenzaremos creando un programa básico “hola, Android” utilizando para ello los siguientes parámetros en el cuadro de diálogo New Android Project ( Nuevo proyecto Android ): Project Name ( Nombre del proyecto ): Audio Build Target ( Objetivo de compilación ): Android 2.2 Application Name ( Nombre de la aplicación ): Audio Package Name ( Nombre del paquete ): org.example.audio Create Activity ( Crear actividad ): Audio Min SDK Version: 8 A continuación necesitaremos una serie de archivos
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
de sonido para reproducir. Para ello podemos descargar desde Internet, o bien, tomar archivos de sonido desde el mismo sistema operativo de la cosola desde la que estamos trabajando, y los guardaremos en la carpeta res/raw de nuestro proyecto. Ahora debemos rellenar la actividad Audio. Primero declaramos un campo llamado mp para almacenar una instancia de la clase MediaPlayer. En el siguiente código vamos a tener una MediaPlayer activa:
int resId; switch ( keycode ) { case: KeyEvent.KEYCODE_A: resId = R.raw.enter; break; default: return } if ( mp != null )
mp.release ( );
mp.MediaPlayer.create ( this, resId ); mp.start ( );
android.app.Activity; android.media.AudioManager; android.media.MediaPlayer; android.os.Bundle; android.view.KeyEvent;
return true; }
public class Audio extends Activity { private MediaPlayer mp; #Override public void OnCreate ( Bundle savedInstanceState ) { super.OnCreate ( savedInstanceState ); setContentView ( R.layout.main ); setVolumeControlStream ( AudioManager.STREAM_MUSIC ); } } El método setVolumeControlStream ( ) le indica a Android
(
KeyCode, event );
packgage org.example.audio; import import import import import
super.OnKeyDown
que
cuando el usuario pulsa la tecla de subir o bajar el volumen mientras la aplicación se esté ejecutando. A continuación necesitamos que al pulsar las teclas se reproduzcan los sonidos correctos. Esto lo conseguiremos modificando el método Activity.onKeyDown ( ). Veamos el código:
Expliquemos un poquito el código para poderlo entenderlo mejor. La primera parte del código selecciona un recurso en base a qué tecla ha sido pulsada. Una vez realizado esto, se llama a la función release ( ) ya hemos hablado con ella en diferentes partes de este artículo. Servirá para detener cualquier sonido que se esté reproduciendo y liberamos cualquier recurso asociado al objeto MediaPlayer; es fácil de entender esto, en este código que he escrito sólo hay un sonido pero, imaginemos que hemos definido varios sonidos. Si no liberamos el recurso al llamar un sonido es posible que se superponga al sonido que se está reproduciendo al pulsar una tecla previa, lo cuál puede producir un galimatias bastante desagradable y muy lejos de lo que deseamos hacer. Con el método OnCreate ( ) creamos un nuevo objeto MediaPlayer y llamamos al método start ( ) para comenzar a reproducirlo. Hay que señalar que este método es asíncrono por lo que devuelve inmediatamente con independencia de lo que tarde el sonido en terminar. Si lo deseamos, podemos utilizar setOnCompletionListener ( ) para que se nos notifique cuando termina el clip.
#Override public boolean OnKeyDown ( int KeyCode, KeyEvent event ) {
© 2013 - www.spanishdeveloperscommunity.es
23
Spanish Developers Community Magazine
Reproducción de sonido en Android
Un video es más que un conjunto de imágenes mostrada una a continuación de otra, además, contiene muchos más elementos, como sonido y, por supuesto, este último debe de estar sincronizado con las imagenes a fin de que exista cierta coherencia gráfica. En este caso, emplearemos la clase MediaPlayer de Android funciona con vídeo de la misma forma que hemos explicado con el audio normal. La única diferencia que vamos a encontrar en este proceso es que es necesario crear una Surface para que el reproductor utilice las imágenes. Podemos utilizar los métodos start ( ) y stop ( ) para controlar la reproducción. Vamos a ver, a continuación, un código de ejemplo que nos permitirá ejemplificar y visualizar el código necesario para reproducir un fichero de video, utilizando para ello, y al igual que en casos anteriores Android 2.2: package org.example.video; import android.app.Activity; import android.os.Bundle; import android.widget.VideoView;
estado. Para ello, todo lo que necesitamos hacer es especificar el tema correcto en AndroidManifest.xml: <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category amdrpod:name=”android.intent.category.LAUNCH ER” /> </intent-filter> </activity> </application> <uses-sdk android:minSDKVersion=”3” android:targetSDKVersion=”8” /> </manifest>
Referencias
1. http://www.geekytheory.com/tutorialsonidosen androidmediaplayerysoundpool/ 2. http://androideity.com/2011/11/13/reproducir sonidosenandroid/ 3. “Android. Programación de dispositivos móviles a través de ejemplos”. Editorial Mamcorbo. 4. “Android”. Editorial Anaya.
public class Video extend Activity { @Override public void onCreate ( Bundle savedinstancestate ) { super.onCreate ( savedinstancestate ); setContentView ( R.layout.main ); VideoView video = (VideoView) findViewById ( R.id.video ); video = setVideoPath (“/data/samplevideo.3gp”); video.start (); } }
Aún falta algo, queremos que el video ocupe la pantalla completa e incluya la barra de titulo y la barra de 24
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
La Tecnología
Tecnologia
25
Julio Medellín
Comunicador, diseñador de páginas web y gestión de redes sociales, actualmente dirige una productora en Ciudad de México.
twitter @simusrex ¿Por qué el desarrollo informático es importante en la producción audiovisual?
Uno podría pensar que a veces la programación funciona a niveles
más rudimentarios o en formas menos creativas o que realmente no tiene nada que ver directamente con la producción audiovisual… tendremos que empezar por las ideas básicas para entender en qué momento de la preproducción, producción y postproducción se integran de manera eficiente la programación y el desarrollo de nuevos softwares en el área audiovisual. Si bien es cierto que la tecnología es la mejor herramienta para la evolución de cualquier área en cuanto a confort, rapidez y vanguardia también es cierto que no lo es para quienes no tienen acceso a ella o tan sólo para las personas que pertenecen a otra generación menos digital o, tal vez, simplemente para quién por © 2013 - www.spanishdeveloperscommunity.es
diferentes razones –como el tipo de trabajo, posibilidades económicas, o simple desinterés– se alejan de ella… La dificultad que se experimenta en un proyecto al no tener tecnología o conocimiento para utilizarla crece exponencialmente. Esto funciona en diferentes rubros y con sentido común. En cualquier empleo, si no se mantiene uno a la vanguardia tecnológica es probable que alguien más gane el puesto, producto o proyecto que se desea. Pero basta dar un sencillo ejemplo con la fotografía para dejar claro el asunto: El día de hoy hay infinidad de modelos de cámaras digitales profesionales y semi profesionales de diferentes precios y la mayoría de una calidad muy buena. La realidad es que independientemente de la gran foto que alguien pueda tomar –a pesar de la creatividad y la excelente cámara– ninguna imagen se salva del tratamiento en Photoshop, la cual es herramienta standard para cualquier tipo de área que requiera imagen por
25
Spanish Developers Community Magazine sencilla que esta lo requiera. Para el caso, aquel fotógrafo que a estas alturas no sepa usar Photoshop o algún programa similar tiene en gran medida una desventaja, en alcance de trabajo, si lo que busca es conseguir clientes, claro está; porque hacer fotografía como hobby para sí desde luego no requerirá más allá del buen ojo y gusto. En el caso de los celulares y otros móviles han salido aplicaciones que de una manera fácil permiten la edición de una fotografía o imagen, seas amateur o profesional (algunos también editan video sin demasiado efecto más que una edición no lineal de corta/pega, por ahora). De otro lado, las cámaras que parecían servir solamente para tomar stills, imágenes congeladas, ahora ya toman video, y lo hacen con la calidad de una cámara semi profesional o profesional, tanto como para poder hacer una producción muy decente con su material. A gran diferencia de que la manipulación de una cámara de video profesional, todavía es mucho más cómoda para montar en diferentes pod’s o dolly’s, el manejo suave y controlado del zoom, tilt’s y paneos. Pero como quiera, prontamente las técnicas y la forma de hacer portafolios y realizar arte requieren de atención a la tecnología para no empezar a utilizar un equipo, sistema, o espacio social desde cero y quedar muy atrás de la competitividad. Difícil es ahora para quienes se dedican a la producción y no conocen el software adecuado para cada uno de sus proyectos. Desde la perspectiva de la postproducción, la creatividad y el contenido son los que mandan… ¿pero cómo poder llevar a la realidad cosas que incluso no se pueden llegar a fotografíar o que serían absurdamente costosas para una producción con un presupuesto limitado? Ahí es donde estos fenomenales software’s el desarrollo y avance de la tecnología nos facilitan las cosas (no sin tener a un experto en el tema, claro está). En producción podemos poner personajes 3d en movimiento, con diferentes efectos de partículas y reflejos, con traveleos (travelings) de cámara y zooms donde el mismo camarógrafo no logró la toma perfecta. Crear ambientes y reacciones específicas de todos los modelos y personajes, como es el caso de los videojuegos, quienes ya tienen una integración completa tanto de diseño, tema y desarrollo directo de programación para las reacciones adecuadas de las circunstancias y personajes. Aquí es donde llegamos a la importancia del desarrollo. La aportación de la programación es grande, tanto, que en varios programas para modelado y edición uno puede crear efectos o reacciones por medio de directa programación. Y aunque no es algo nuevo, al fin, tampoco es algo tan viejo y también es un conocimiento específico no fácil de obtener. En cine, por ejemplo, a los gameengines se les da un uso muy práctico, se crean herramientas para simulación de efectos físicos y de partículas en una escena, misma que pueden repetir una y otra vez hasta que quede como ellos desean, también algunos funcionan para producir escenarios y personajes con texturas todos con calidad impresionantemente alta ya muy cercana al resultado final que se verá en la pantalla de cine; obviamente para previsualizaciones, storyboards, correcciones, detalles y otras funciones que pueden tener en tiempo real; a estas herramientas se les llama TDT (Tecnical Director Tool). Desgraciadamente a pesar de que hay mucho freeware para elaborar proyectos todavía no hay muchos programadores que estén familiarizados con ellos en este rubro y que cubran con todas las características de compatibilidad que se necesitan hoy en día; pero por lo pronto las fusiones que se han hecho entre plataformas han sido completamente inesperadas y a la vez demasiado ansiadas. Ya no son simplemente integradores de texturas y generadores de partículas, ahora pueden integrar 2d en 3d y pasar modelos 3d a sistemas 2d para colorearles y detallar con mayor precisión. En los videojuegos todavía ha sido mucho más necesaria la estandarización de software. El programa Unity se ha vuelto estándar sobre todo para aplicaciones y juegos móviles. Se puede ver como parte del pipeline de producción en la mayoría de los más recientes y eso debe ser en parte por su amigable interfase y porque admite casi todo tipo de lenguaje como Java, C++, Phyton, por mencionar algunos. Cabe mencionar que a diferencia del cine y otros proyectos los videojuegos tienen un espectro mucho más amplio en la cuestión de desarrollo y testing para cada etapa del proyecto. Podríamos adentrarnos en el vasto océano de este mundo pero por ahora nos situaremos sólo en la grave y grande importancia que tiene la informática en las producciones audiovisuales. Todo esto sin mencionar que al hacer una página web o algún proyecto multimedia la programación y el desarrollo de software personalizado se vuelve inminente… pero este tema, de igual manera, lo iremos desgajando poco a poco más adelante con mayor profundidad. Por lo pronto hemos roto el hielo y abierto las cartas para tener una vista panorámica bastante amplia de la intrínseca colaboración de la programación y todo el mundo audiovisual.
26
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
Por qué usar un framework en PHP Si eres desarrollador en PHP o diseñador frontend, pero programador ocasional, te habrás dado cuenta que ya hace algunos años se le ha venido dando mucha más importancia al tema de los frameworks de desarrollo en PHP. Es ya una tendencia y prácticamente un estandar para la mayoría de los desarrolladores. Quizá en este punto te estés preguntando a qué se debe que dichos frameworks hayan cobrado tal popularidad. Aquí algunas de las razones.
Jerobén Guzmán
Programación
27
web www.jeroguzman.com redes sociales www.facebook.com/azhael.guzman twitter @jeroaz
Organización de código y archivos
Este suele ser uno de los más grandes retos, sobre todo cuando un proyecto empieza a crecer lo suficiente. Hacemos lo más posible por mantener nuestro código de una manera ordenada, pero el hecho de que creemos carpetas y le pongamos nombres representativos a nuestros archivos, no es del todo ordenar nuestro código. Una vez que decidimos utilizar algún framework, éste nos ha de proveer con una estructura predefinida para la organización de los archivos, de la cual una vez aprendiendola nos daremos cuenta cuan simple y útil puede llegar a ser. Aunque quizá al principio no sea del todo familiar para nosotros, una vez trabajando así, te será casi imposible volver al método tradicional. Desafortunadamente, si eres uno de esos command line © 2013 - www.spanishdeveloperscommunity.es
hackers que sólo utilizan vi para codificar sus aplicaciones, te será bastante complicado, ya que es necesario trabajar con una cantidad significativamente mayor de carpetas y muchos pequeños archivos que quizá no acostumbrabas, incluso por pequeño que sea el proyecto. Pero si eres un poco más visual (y menos presuntuoso) al momento de codificar, y usas cualquier otro IDE de desarrollo, te será mucho más fácil identificar la ubicación tu código, gracias al árbol de carpetas proporcionado por el framework en uso. 27
Spanish Developers Community Magazine
punto donde tu código sea completamente insostenible. El modelo MVC, del que seguramente ya has oido hablar también (aunque no profundizaremos) te ayuda con esta parte.
Librerías y utilidades Sin duda alguna PHP es un excelente lenguaje, y por lo mismo nos damos el tiempo de hacer este tipo de publicaciones. Tiene, a pesar de los años, todavía un gran potencial, ya que por si sólo nos brinda una gran cantidad de posibilidades para el desarrollo gracias a su innumerable cantidad de librerías y funciones. Sin embargo, si pretendemos hacer una aplicación sólo con PHP, nos daremos cuenta que conforme avanzamos en el proyecto, estamos en una constante cacería de código de terceros (mucho del cual en ocasiones tiene costo) o incluso nos vemos en la necesidad de desarrollar funcionalidades que parecen tan obvias, que nos sentimos reinventando la rueda. Proporcionar librerías fundamentales para todo proyecto y otras tantas novedosas, es otra de las ventajas que nos ofrece un framework en PHP: • Manejo de sesiones de usuario y cookies • Control de URL ’ s • Abstracción de bases de datos • Tratamiento de imágenes • Correo, paginaciones, calendario, etc Y la lista puede ser interminable dependiendo del framework a utilizar. Esto sin mencionar además, que gracias a la estandarización del código, es posible implementar librerías desarrolladas por la comunidad, de una forma simple y perfectamente bien documentada. Sin parches milagrosos.
El patrón MVC
Si usas PHP de una forma negligente o poco ordenada, te darás cuenta que puedes llegar aun 28
• Modelo es la representación de cualquier tipo de datos, casi siempre en relación a una base de datos • Vista es el template o estructura de contenidos que serán mostrados al usuario • Controlador es el que se encarga de atender las peticiones e integrar a los otros elementos Este tipo de separación del nos permite tener una visión
más clara de nuestro código y darle un mucho mejor mantenimiento.
Seguridad
En muchas ocasiones, gastamos gran parte de nuestro tiempo de desarrollo pensando en todos los posibles huecos de seguridad del sitio, y si uno se nos olvida, estamos fritos. Con un framework, gran parte de esta seguridad ya está hecha. Por ejemplo: • Cualquier tipo de dato recibido en una consulta, es limpiado de cualquier tipo de inyección SQL • Todas las funciones que generan HTML son previamente filtradas al mostrar al usuario • Todo dato recibido del usuario puede ser filtrado contra ataques XSS • Se pueden encriptar cookies con tan solo una leve configuración
Desarrollo más rápido y con menos código
© 2013 - www.spanishdeveloperscommunity.es
Spanish Developers Community Magazine
encontrado ofertas de trabajo donde se solicita “Programador Web” y entre las habilidades requeridas se encuentra “Codeigniter”, “Cake PHP”, “Zend”, etc. El trabajar con un framework potencializa tus habilidades como desarrollador y le da a las empresas cierta noción de estandarización y de buenas prácticas. Un framework incrementaría tus posibilidades de contratación.
Rendimiento Desde luego si no has trabajando antes con algún framework en php, habrá una curva de aprendizaje por la que tienes que pasar, pero una vez que sea parte de tus herramientas de desarrollo, notarás lo rápido que es programar con un framework. Escribirás menos código y no tendrás la necesidad de recurrir a código de terceros de forma continua, ya que muchas funciones las incluye ya tu framework. Incluso como estás siendo más organizado, te será mucho más fácil corregir errores y darle mantenimiento a tu código.
El soporte de la comunidad
La mayoría de los frameworks tienen una comunidad sumamente activa de sí, a la cual podemos recurrir en tiempos de crisis. Puedes conversar con otros desarrolladores e incluso en muchas ocasiones con los mismos fundadores del framework, teniendo así la certeza de que encontraremos ayuda a nuestro problema. Todo framework debe contar siempre además con su documentación, lo que nos da una noción de las posibilidades que tenemos, y las que no tengamos, podremos buscarlas. Foros e incluso blogs de los autores pueden complementar nuestro conocimiento.
Oportunidades laborales Apuesto
que
en
muchas
ocasiones
© 2013 - www.spanishdeveloperscommunity.es
has
Uno de los argumentos más fuertes en contra de todo framework de PHP, es el hecho de que su forma de trabajar le hace lento en comparación a un script plano de PHP. Evidentemente esto es cierto, pero no es una razón de vital importancia, ya que si lo consideramos de la siguiente forma, son más caros los desarrolladores que los servidores. Implica una tarea de mayor inversión trabajar en un proyecto desde cero y contratar una gran cantidad de programadores para que desarrollen algo que quizá ya existen en un framework, y muy probablemente no obtengamos el mejor resultado. Un framework potencializa en general el rendimiento de un proyecto, no sólo del servidor.
Mejor trabajo en equipo
El tener el código ordenado y modulado, nos permite hacer una mejor distribución del trabajo y menos conflictos en los archivos de las distintas versiones. Es más fácil darle a los diseñadores que trabajen sobre las vistas y los estilos, aún si nos encontramos trabajando en algún modelo o incluso un controlador. Hace del equipo un escuadrón mucho más rápido y eficaz.
Conclusión
Trabajar con un framework pudiera ser tu mejor opción en este momento, o no serlo. Cualquiera que sea el caso, es una herramienta de suma utilidad y debes siempre considerar la opción y no cerrar tu mente a lo que has hecho siempre. Recuerda que no todo lo que hacemos es lo mejor, incluso aunque funcione. Hay infinidad de opciones a escoger, entre las más populares Laravel, Zend Framework, Codeigniter, Cake PHP, Yii, etc. De diferentes tamaños, colores y sabores, es cuestión de que elijas cual es el tuyo. 29