Browsing articles in "DAW / DAM"
May 30, 2015
alvaro
Comentarios desactivados en Optimización de Software

Optimización de Software

Control de versiones (VCS) con Repositorios

Es habitual que durante el desarrollo de un proyecto realicemos pruebas, modifiquemos código o añadamos funcionalidades. Por ello, es útil y necesario guardar por separado todos los cambios que vamos realizando mediante un sistema de control de versiones (VCS) integrado en nuestro IDE.

¿Qué es el VCS?

Es una herramienta que registra todos los cambios realizados en un proyecto, tanto en la estructura de los directorios como en el contenido de los ficheros, y que permite recuperar versiones específicas.

Se realiza a través de un repositorio (servidor de archivos) que soporta desarrollo colaborativo de código y control de revisiones de un proyecto.

Además de repositorios locales, existen centralizados donde el código está en un único servidor que contiene todos los archivos versionados (CVS, SubVersion o SVN , etc.) y distribuidos en los que el código puede estar en diferentes repositorios locales (Git, Mercurial, etc.).

 

git-tutorial-basics-clone-repotorepocollaboration

¿Cómo funciona?

Pondremos como ejemplo uno de cada tipo:

SVN

Proceso de uso de SVN

Proceso de uso de SVN

 

  • Tenemos el código en un repositorio central en una carpeta llamada trunk (rama de desarrollo principal) o en las carpetas branch (rama con evoluciones paralelas al trunk) o tag (reservada a versiones cerradas).
  • Los usuarios se descargan una copia local y hacen sus cambios.
  • Un usuario sube los cambios al repositorio (commit).
  • Un usuario actualiza su copia con la del servidor (update).

Cheat Sheet de Subversion

Cheat Sheet de Subversion

GIT

repositorio-git1

Proceso de uso de GIT

  • Modela sus datos como un conjunto de instantáneas de un mini sistema de archivos.
  • Tiene tres secciones principales: Git directory, working directory y staging area.
  • Tiene tres estados principales en los que se pueden encontrar nuestros archivos: committed, modified y staged.
  • Se modifican los archivos en el directorio de trabajo. Su estado será modified.
  • Se preparan los archivos añadiendo instantáneas de ellos en el área de preparación. Su estado será staged.
  • Se confirman los cambios y se almacena la instantánea de forma permanente en el directorio Git. Su estado será committed.

Cheat Sheet de as funciones de GIT

Centralizados VS Distribuidos

Durante muchos años el estándar para el control de versiones ha sido el centralizado pues proporciona bastantes ventajas frente a VCS locales.

Entre esas ventajas cabe destacar su fácil administración y el control detallado que se tiene sobre lo que está haciendo cada colaborador del proyecto. La principal desventaja de este tipo de repositorios radicaría en que al estar el proyecto en un único servidor, si se daña el disco duro en el que se encuentra la base de datos central se perdería toda la información o si durante un tiempo el servidor se “cae” ningún colaborador podría trabajar ni guardar los cambios.

Todo esto se evita con los VCS distribuidos ya que el usuario no se descarga sólo la última instantánea de los archivos sino que copia el repositorio. Cada vez que se descarga una instantánea está haciendo una copia de seguridad de todos los datos. Además utilizando este tipo de repositorios el usuario puede colaborar con distintos grupos lo que permite establecer varios flujos de trabajo.  Tú decides…

¿VCS centralizados o distribuidos?

 

En complemento a la Presentación PowerPoint sobre Java8

May 29, 2015
alvaro
Comentarios desactivados en Reflexiones y futuribles – Análisis profesional 2015

Reflexiones y futuribles – Análisis profesional 2015

Objetivos profesionales en el 2015

Tras el estudio anterior de las tendencias y sueldos, cabe plantearse de forma más reflexiva qué nos espera.

Podríamos repetir periódicamente una serie de preguntas tras cambiar de empleo, empezar un nuevo curso, encontrarnos en un punto de inflexión en nuestras vidas, etc.

¿Hacia dónde crees que es importante orientar tu futuro profesional? / Cap a on creus que és important orientar el teu futur professional?

La tendencia de las empresas es utilizar los nuevos frameworks, lenguajes y plataformas que simplifiquen el trabajo de desarrollo y mantenimiento. Una de las ventajas de tener experiencia en Administración de Sistemas es que tienes conocimiento de los equipos donde están ejecutándose tus programas y aplicaciones. Ampliar experiencia en dichos frameworks puede ser una apuesta interesante para integrar antiguos y nuevos proyectos.

¿Por qué tecnología apostarías para tu futuro profesional? / Per quina tecnologia apostaries per al teu futur professional?

El movimiento actual se ha centrado en facilitar nuevos Front-ends de cara a atraer y mantener a los usuarios a nuestras aplicaciones. La velocidad de la red y la potencia de los equipos va aumentando pero hay una carencia en la velocidad y interactividad de las interfaces de entrada y salida de datos (teclado, ratón, pantalla, webcam, etc.). Sería interesante buscar o promocionar una nueva interfaz de comunicación con el usuario.

Otra apuesta, más cercana y interesante, es el desarrollo, especialización y ampliación de conocimientos en lenguajes como Laravel, RubyOnRails y otros, que permiten realizar proyectos web CRUD sin necesidad de realizar todas las partes del Modelo-Vista-Controlador.

¿En qué invertirías tu tiempo y dinero para formarte? / En què invertiries el teu temps i diners per a formar-te?

Django, AngularJS, EmberJS, Backbone.JS y KnockOut.JS son buenas apuestas. Hay buenos cursos online gratuitos y el Cibernarium suele hacer cursos cortos. Igualmente, universidades extranjeras y otros centros educativos también permiten estudiarlos aunque la mayoría suelen ser de pago.

¿Qué tecnología crees que será clave para tener éxito profesional? / Quina tecnologia creus que serà clau per a tenir èxit professional?

Si la supiera estaría formándome ahora mismo aunque con el uso cada vez mayor de los dispositivos móviles, Unity 3D y similares pueden facilitar el entretenimiento y desarrollo de aplicaciones para la variedad existente. La limitación de autonomía de esos dispositivos y las modas pueden ser cruciales para acertar o fracasar en nuestra elección.

Si fuera químico, estudiaría el uso del grafeno y sus aleaciones para crear nuevas baterías.

Si fuera electrónico, intentaría desarrollar nuevas formas de comunicación con los equipos, como mencioné antes.

Actualmente apostaría por la realidad aumentada, la impresión 3D, gafas y los nuevos gadgets.

¿Qué crees que deberías saber para asegurarte un buen lugar profesional? / Què creus que hauries de saber per assegurar un bon lloc professional?

Las ofertas de trabajo actuales solicitan cada vez más conocimientos, abarcar mucho supone conocer vagamente dichas tecnologías, creo que lo mejor sería especializarme en varios frameworks de integración y desarrollo de páginas web y aplicaciones.

 

La introspección permite unos mejores objetivos profesionales reflexionemos.

Reflexionar ahorra en la factura de la luz XD

May 29, 2015
alvaro
Comentarios desactivados en HTML5 – Presente, futuro y yo

HTML5 – Presente, futuro y yo

¿Qué nos depara HTML5?

Valorar qué proyecto de grado superior debería realizar y después ver mi experiencia anterior en la programación web, ha demostrado que la evolución de los lenguajes depara muchas sorpresas.

¿Por qué escoger esta tecnología? ¿Tiene futuro? ¿Vale la pena apostar por ella?

Tras unos inicios muy toscos en la web, HTML ha ido cambiando. Desde unas simples etiquetas de texto cuadradas y simples a diseños multimedia, dinámicos, divertidos, ampliamente gráficos  con interacción con el usuario. Etiquetas representadas por navegadores en continua batalla por cuota de mercado, que van cambiando a ritmos feroces, permitiendo ampliaciones según aumenta la velocidad de acceso a la red y la potencia de nuestros equipos.

Escoger esta tecnología, sin dejar de lado opciones como Node.JS, Hibernate, JQuery, AJAX, REST, SOAP, Angular.JS, Ember.JS, etc., puede suponernos una base de conocimientos ampliamente firme como para implementarlas. Teniendo en cuenta que prácticamente todos los dispositivos móviles son compatibles con HTML5, nos aseguramos que nuestros trabajos no pasarán en corto tiempo a un cajón virtual en los que sin el resto de nuevos lenguajes, frameworks e implementaciones nos dejarán sin futuro.

Aplicaciones híbridas en móviles basadas en HTML5 suponen una mayor facilidad de implementación versus aplicaciones nativas. También supone un ahorro de tiempo en desarrollo, con lo que podremos ampliar características de forma simultánea a todas las plataformas.

¿En qué situación está actualmente? ¿Es estable?

El consorcio W3C establece unos patrones y recomendaciones básicas de implementación, los cuales deben interpretar los motores de los diferentes navegadores actuales. Dicha lectura, adaptada a los dispositivos con mayor o peor acierto, permite una web más rápida, agradable y compatible.

La aparición de los blogs, con sus apartados diferenciados (header, articles y footer) han dejado huella en este lenguaje. Ello establece una nueva serie de etiquetas y funcionalidades multimedia (canvas, audio, vídeo, etc.) que evitan tener que cambiar de nuevo el esquema a utilizar por los programadores web.

Por ello, aun sabiendo que la siguiente evolución de este lenguaje no es imposible, se puede considerar como un lenguaje estable.

¿Cuál crees que será su futuro?

La web está en continuo cambio. Cada día aparecen nuevas tendencias y modas, véase los móviles y sus aplicaciones, que aunque el lenguaje es el mismo, el uso que le damos es imprevisible. Aplicaciones con Material Design, nuevas API, nuevos frameworks, nuevos dispositivos permitirán su uso de formas difíciles de imaginar.

Sin embargo, la realidad aumentada y la virtual pueden ser un posible uso, gracias sobre todo a las posibilidades que proporciona junto a CSS y Javascript.

¿Que características principales tiene?

Según la wikipedia las principales novedades son:

La semántica (header, footer, article, nav, time) que permiten dar fácilmente un contenido estilo blog (cabecera, menú de navegación, varios articulos diferenciados con su marca de tiempo independiente y el pie de página) a los navegadores.

Una mayor flexibilidad y facilidad para mostrar y ordenar el contenido con información adicional que enlace o que la relacione a otra.

Facilidad para incluir animaciones, imágenes y objetos pudiendo interactuar con ellos, arrastrarlos, mostrarlos, ocultarlos, etc.

Mejor uso de los datos, permitiendo su almacenamiento offline y manejo por bases de datos locales, su posicionamiento a nuestro alrededor, interacción con otras web o servicios online, entre otras muchas.

¿En qué ámbitos se aplica? ¿En qué proyectos?

Se podría decir que actualmente, sea el dispositivo que sea, está presente en todas las aplicaciones informáticas. Por ejemplo, los dispositivos android utilizan xml para mostrar su contenido permitiendo el uso de estas etiquetas con facilidad. Aplicaciones de escritorio pueden tener pestañas o pequeños navegadores incrustados mostrando contenidos web en esta versión lenguaje. Incluso pequeños SO, como WebOS o FirefoxOS, lo utilizan para mostrar contenido dinámico.

¿Qué complejidad de aprendizaje tiene esta tecnología?

Aprender esta nueva implementación de HTML no es difícil, si bien la mayoría de páginas actuales aún no están completamente migradas a esta nueva especificación, supone un valor añadido de cara a nuestra contratación. Adaptar las webs actuales, aportar contenidos multimedia, dinámicos e interaccionables, atrae al usuario y le proporciona una mayor satisfacción en su uso y puede que permita que éste vuelva.

Como todo lenguaje, requiere tiempo, dedicación y práctica. El uso combinado con otras tecnologías como AJAX, JQuery y CSS permite un amplio abanico de posibilidades y proyectos.

¿Qué metodología seguirías para formarte en nuevas tecnologías? ¿Autoprendizaje? ¿Cursos? ¿Certificaciones?

La práctica autodidacta proporciona mucha confianza y facilidad de desarrollo aunque sin una formación continuada no es posible dominarlo. Personalmente preferiría tanto cursos presenciales como online, sobre todo, tras horas de prueba y error en pequeños proyectos. Los certificados de profesionalidad, cursos dedicados o certificaciones pueden ser también una forma de aprendizaje pero sin un objetivo tangible no son muy motivadores.

Presentación PowerPoint HTML5

May 12, 2015
alvaro
Comentarios desactivados en Tendencias del 2014 y 2015 (2)

Tendencias del 2014 y 2015 (2)

programadores-bien-pagaos

Comparativa lenguajes EE.UU 2014 por Compass

Siguiendo con el post anterior, en Compass realizaron la comparativa entre los sueldos mejor pagados según el lenguaje de programación. Si bien hay un detalle que es muy importante en dichas comparativas, la ubicación o mercado laboral del trabajador. Se presume que un lenguaje está igual de valorado aquí en España que en Francia o EE.UU., sin embargo, las políticas de empresa o cultura empresarial han marcado diferencias considerables en la realización de los proyectos.

Vemos que el lenguaje mejor pagado es:  C++  y Python, curiosamente el segundo, superando los 100.000 dólares anuales. Lejos anda Java, lenguaje ampliamente solicitado en España por la facilidad de escalabilidad e implantación.

Podríamos definir que en EEUU el salario medio sería de unos 85.000 dólares, comparados con la mayoría de ofertas junior españolas de 20.000 o 25.000 euros. Hay que tener en cuenta también las características demográficas de cada país, no es lo mismo un programador aquí que en la India, donde cobran una media de 25.000 dólares por las mismas tareas y responsabilidades que el estadounidense.

Tomemos como ejemplo el comentario colocado en meneame.net por Savir80. Siendo programador, cobra en Nueva York un poco más de 100.000 dólares y detalla el coste de vida en dicha ciudad como:

– Quítale impuestos, seguridad social (jubilación) y mi parte del seguro médico (privado, claro): Un 31%
– Alquiler: 1600$ al mes (y contentos, que el casero parece que no se ha enterado de que apartamentos similares en la misma zona pueden pasar de los 2800$)
– Litro de leche: 4$
– Un pollo: 10$ (reconozco que el súper de cerca de casa es anormalmente caro para los pollos, todo sea dicho)
– Una cerveza Stella en el supermercado: 2$
– Cenas fuera (un restaurante “normalito” y sin hacer excesos) 60$ por cabeza
– Cenas un poco excesivas, en sitios algo mejores (pero no en los restaurantes más famosos de Nueva York, ni mucho menos) 150$ por cabeza (170$ con la propina)
– Una cerveza en un bar 7$
– Ir al médico (teniendo seguro pero con lo que se llaman co-pagos): ~ 100$
– Abono de transporte mensual: 112$

Es evidente la diferencia con el español.

Lo mismo ocurre con las ofertas, mangrar_2 indica tres en Dublín (Irlanda):

1. Senior Java Developer
Dublin City Centre
€65,000 – €75,000
A leading niche IT company is looking for an innovative Senior Java Developer to join their team based in Dublin city centre. Work with the full Java development lifecycle, accessing the entire technology stack within the company, from the Database back to Web Server and everything in between. This startup environment offers you the opportunity to get involved in the Java architecture of the business, expressing your opinion and making cases based on current and past experience
Skills: Java, Spring, Hibernate, MVC, XML, SQL
2. Java Developer
Dublin City Centre
€50,000 – €60,000
A global software solutions provider is looking for a Java Developer to join their expanding team here in Dublin. With offices across the UK and Ireland, this FTSE100 company has gone from strength to strength and are looking for a strong individual to join their team. Building both bespoke and flagship software applications, you will get exposure to different technologies as part of a strong development team
Skills: Java, XML, SQL
3. Senior Software Engineer
Dublin 2
€60,000 – €70,000
A leading sales software company in Dublin City Centre is looking to hire a strong Server Side Software Developer with Java to join their team due to continued success in a growing market. Their niche product works closely with a leading platform, allowing you the opportunity to work with new technologies, while maintaining current and existing technical experience. This creative team have worked across multiple technologies and platforms, giving you access to some of the most experienced developers in the market.
Skills: Java, Javascript, Spring, HTML, JS Frameworks

No será muy complicado ver solicitudes de personal, en empresas españolas, con ese tipo de requisitos en InfoJobs, Jobandtalent o, incluso, en LinkedIn, y remuneraciones menores a la mitad de las mencionadas.

Sin duda, la infografía de Compass, ubicada en http://blog.startupcompass.co/how-much-should-you-pay-your-engineers deja un posible escenario de sueldos, cargos y horizontes laborables muy interesante. Siempre habrá un posible puesto de trabajo, mejor o peor remunerado, en nuestra trayectoria laboral aunque la pregunta más difícil siempre será:

¿Y ahora qué hago?

Pues un buen planteamiento de nuestros objetivos futuros. Podríamos empezar por consultar www.payscale.com/ para valorar nuestro posible sueldo según nuestra experiencia, edad, titulaciones, anterior trabajo y animarnos a superarnos cada día.

En mi caso, una valoración abreviada según mi vida laboral y estudios, me valora en 26.000 € lo que no está nada mal.

Ánimo

Abr 28, 2015
alvaro
Comentarios desactivados en Tendencias del 2014 y 2015 (1)

Tendencias del 2014 y 2015 (1)

Movimientos en la programación Web/Móvil entre 2014 y 2015

En la actualidad estamos viendo que la velocidad y capacidad de la red crece sin aplicaciones que usen todo su potencial. La base de todas esas aplicaciones son los lenguajes de programación, siendo algunos más populares que otros, que suelen avanzar más lentamente.

La necesidad de nuevas opciones, frameworks, acceso a multimedia o aplicaciones interactivas, web o de escritorio, motivan a los profesionales a aprender nuevos lenguajes. Pese que suelen estar relacionados o tener estructuras similares, aparecen nuevos con filosofías o arquitecturas completamente diferentes.

En 2014 se observaba que los lenguajes se enfocarían más en el entorno web/móvil que en escritorio. Lo que significaba que se necesitarían nuevos lenguajes para las diferentes plataformas (tanto hardware como software).

Las ventajas del desarrollo en web benefician a los programadores al no tener que depender de las instalaciones o mantenimiento del hardware donde se van a usar, ya que los navegadores web interpretan el código independientemente (excepto Adobe Flash y sus problemas inherentes a las licencias).

Retrospectivamente vemos…

Desde el inicio de la informática se ha desplazado la carga del proceso entre los servidores y los clientes. Sistemas operativos centrales (mainframes) llevaban el proceso soportando numerosos equipos ligeros con la suficiente potencia para acceder y modificar dichos datos.

Más tarde, la facilidad para conseguir nuevos procesadores, más memoria y más almacenamiento y con la bajada de los precios, adquirimos equipos tan potentes como algunos servidores de años atrás.

El siguiente paso sería el uso de la virtualización de servidores y procesos en clústeres permitiendo una estabilidad, velocidad y potencia. Los procesos tendrían una carga continua y los clientes accederían al llamado Big Data o la nube sin muchos requerimientos a parte de la conectividad y la suficiente autonomía para mantener dichas aplicaciones.

Han aparecido nuevos lenguajes y frameworks, como Spring, Hybernate, Bootstrap, Lively Web, Go, que utilizan más sencilla y eficientemente las versiones de lenguajes de programación previos o implementan nuevos. Javascript, Html5, CSS3 permiten (sin la necesidad de applets o intérpretes de terceros) navegar con fluidez y el uso de procesos críticos.

Toda esta evolución además implica la necesidad y aparición de nuevos IDEs para implementarlos, véase Android Studio, Intellij Idea, Intel XDK, Xcode, como muchos otros.

La velocidad de dichas apariciones, la necesidad de las mismas y el uso por parte de las empresas es algo más relativo. Al igual que hay empresas que quieren usar las últimas tecnologías y usarlas como medio de promoción o publicidad, otras prefieren usar lenguajes de programación con mayor bagaje, proporcionando estabilidad y mayor conocimiento entre los profesionales.

Si analizamos algunos análisis, como el de Indiatimes.com en noviembre del 2014, vemos que el salario mejor pagado es de Ruby on Rails ($109,460), seguido por Objective C ($108,225) y Python ($100,717). Lenguajes más conocidos como Java o C++ ($94,908 y $93,502 respectivamente) sorprenden por su cuarta y quinta posición, posiblemente en relación por la ley de la oferta y la demanda, pero también en contraposición del bagaje mencionado.

Veamos las fases de aprendizaje…

Desde http://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Fases de aprendizaje de un lenguaje informático

Si tomamos en cuenta la dificultad de aprendizaje de un lenguaje de programación no es algo sencillo, tiene sus “capítulos” o fases para el “estudiante” difíciles de superar. Muchos profesionales apuestan por la certificación en cada uno de ellos, pese que supone un gasto adicional económico, el valor añadido merece la pena. Indican que hay cuatro fases en el aprendizaje, brevemente serían…

La llamada fase Hand Holding Honeymoon, inicial en el proceso, relaciona la confianza con la competencia. Inicialmente dicha relación puede ser perniciosa. Las guías o manuales pueden introducirte pero los retos o necesidades funcionales avanzadas son pasos necesarios para el aprendizaje, conocimiento y experiencia en dicho lenguaje. Estamos estudiando la sintaxis básica del lenguaje, la base, de una forma intensiva.

Llegamos a un pequeño punto de inflexión (Cliff of confusion) en dicho lenguaje en el que nos sentimos cada vez menos seguros mientras vamos adquiriendo nuevos conocimientos. Los pequeños inconvenientes en los primeros proyectos suponen un trabajo extra en el análisis y comprensión de nuestros errores. Es agobiante, requiere tiempo extra inesperado y un reto importante. Se podría decir que al ir viendo la cantidad de opciones y la necesidad de “especialización” requerida, tendemos a desmoralizarnos erróneamente provocando la tercera fase, Desert of Despair. Fase en la cual estaremos dando vueltas.

Hasta que llegamos al punto en que la asimilación, experiencia, feedback positivo y el cambio de nuestra actitud (incluida la auto-estima que también suele ser afectada) nos provoca un aprendizaje exponencial. Éste puede llevarnos al nivel de competencia y confianza para trabajar de forma independiente y segura (Upswing of Awesome). Los proyectos empezaran a fluir y ser estables con facilidad con una gratificación, estabilidad y mérito más que evidente.

 

 

 

Abr 28, 2015
alvaro
Comentarios desactivados en Fases de un proyecto de páginas web

Fases de un proyecto de páginas web

Hace ya unos cuantos años, allá por febrero del 2011, encontré o redacté para Sena Virtual, apenas recuerdo ahora mismo, un pequeño índice de lo que podrían ser las fases de un proyecto web.

Es curioso que años más tarde, los lenguajes han evolucionado, existen nuevas formas para visualizar y compartir la información.

Sin embargo, gran parte de las fases siguen siendo importantes e imprescindibles a realizar para conseguir un buen objetivo.

Estudio del proyecto

  • Estudio de la competencia
  • Posibilidades y líneas de de negocio con la web
  • Necesidades reales del proyecto
  • Pensar en el medio plazo para proveer como puede crecer el proyecto
  • Como fusionar lo que tenga esa empresa con lo que va a tener: On-line – Off-line

Diseño del site

  • Estructura y usabilidad del site
  • Diseño gráfico de todas las paginas

Maquetado

  • Hacerlo compatible con los principales navegadores (Explorer, Mozila Firefox y Chrome)
  • Pulir el código para dejarlo lo más accesible para Google (SEO)

Programación

  • Diseñar la bases de datos
  • Programar todas las funcionalidades
  • Crear y personalizar el BackOffice para que el cliente pueda gestionar los contenidos de la web

Revisión

  • Revisar la web una vez montada para ver si se ve bien en los navegadores
  • Comprobar que el BackOffice gestione correctamente los contenidos y menús
  • Ver que todas las funcionalidades operan correctamente

SEO

  • Estudio e implementación de los mejores títulos, descripciones y palabras clave para cada sección para que Google nos encuentre.
  • Informar a Google del alta de la web y alta del Site Map

Otros

  • Configuración/integración Google Analytics, FaceBook, Twitter, otros…
  • Preparar parte de los contenidos (Fotos, textos, vídeos) finales de la web y en muchas ocasiones subirlos directamente
  • Publicación de la web y nueva revisión general

Dichas fases coinciden en la mayoría con las se están enseñando en los ciclos formativos DAW/DAM como el que estoy realizando en la actualidad.

Si bien, tocaría actualizarlas y comparar que es lo que ha cambiado desde el 2011 en este mundo.