sábado, 25 de septiembre de 2021

Aprender o practicar algún lenguaje de programación.

Gracias a Twitter (no todo es malo XD) he descubierto un par de webs que pueden interesar (eso sí, inglés puro y duro):


1) https://www.theodinproject.com/dashboard

The Odin project empieza por lo básico que necesita cualquier programador (ya sea frontend o backend): 

-Instalar un S.O. (virtualizando o no).

-Instalar herramientas de desarrollo (Visual Studio code).

-Instalar y configurar GIT .

A partir de aquí, se hace hincapié en GIT (lo cierto es que es muy importante saber manejarse en GIT y GITHUB) y, a continuación, las bases en HTML, CSS (flex y grid) y Javascript. La verdad es que está muy bien. Hay mucha teoría el principio de lo que es internet, la web, etc. pero si no tienes ni idea del tema es importante que te lo leas todo.

Aquí dejo el temario: 

https://www.theodinproject.com/paths/foundations/courses/foundations


2) https://www.freecodecamp.org/espanol/learn/

En "FreeCodeCamp" tienes varios cursos. Lo bueno es que también te dan una ruta para empezar y, luego, si así lo deseas, ir avanzando para aprender otros conceptos. Al igual que en "The Odin project", si no tienes idea te recomiendan empezar por

https://www.freecodecamp.org/espanol/learn/responsive-web-design/basic-html-and-html5/say-hello-to-html-elements

A partir de ahí puedes continuar con el primer curso de "Diseño Responsive" y seguir con el orden marcado (de arriba a abajo). 


Es innegable que si le dedicas varias horas al día y vas picando código tras código (lo que se llama practicar, vamos) acabas adquiriendo buenos conocimientos. Al final, sólo tendrás que especializarte en aquello que vayas más floj@ o que te urja más (por trabajo, por ejemplo). Eso sí, lo que ofrece "freecodecamp" son una serie de cursos para una carrara "full stack" completa. Si no te interesa, céntrate sólo en una de las facetas (frontend o backend). Si estás empezando recomiendo empezar con el link "comenzar desde el principio" y, luego, arrasar con "Certificación de Diseño Web Responsivo" (es decir, lado frontend). Si te gusta, puedes seguir en "freecodecamp" o ya tendrás las bases para ir ampliando conocimientos por tu cuenta vía youtube y otros portales de enseñanza como Udemy, pluralsight, platzi, openwebinars, etc. Y si eres más de backend, pues continúas con el resto de cursos. Mi consejo es que estés atento a Udemy porque, aunque los cursos se pagan, con las continuas ofertas que aparecen cada semana la cantidad a desembolsar es casi simbólica y lo que llegas a aprender allí no lo aprendes en ningún lado.

sábado, 30 de enero de 2021

Cuando aprender o repasar se hace casi imposible

 La semana pasada intenté repasar lo que había hecho de Java Server Faces y, al mismo tiempo, aprender las novedades de las últimas versiones. Es increíble cómo se complicó la cosa:

Entorno de desarrollo

 En el mundo de Java tenemos varios IDEs, pero los principales son Eclipse (y sus derivados), Netbeans e IntelliJ IDEA. Éste último no lo he tocado... todavía. El caso es que cuando trabajé con JSF lo hice con Netbeans. La forma que tiene de crear proyectos y de configurar dependencias y, sobre todo, sus versiones, hace que sea muy amigable trabajar con él, pero su uso suele ser a nivel académico. Eclipse es el IDE que más he visto en entorno empresarial, así que siempre es mejor trabajar con el que vas a usar día a día para ir conociendo todas sus "tripas" lo mejor posible.


Creando el proyecto

 Aquí es donde se va todo al traste. A la hora de trabajar con aplicaciones web puedes crear un proyecto que sólo ese IDE entenderá (por ejemplo, un Dynamic Web Project) o un proyecto Maven que puedas exportar a cualquier otro IDE (o que cualquier software pueda entender). A mí se me juntaron varios problemas al mismo tiempo:
-La versión de Java.
-La versión del IDE.
-Las versiones de las dependencias:
    -Dynamic Web Module.
    -JSF.
    -Java.
-El servidor de aplicaciones y su versión.
 Empecemos con los dos primeros: si quiero usar la última versión de Eclipse (2020-12) necesito utilizar, como mínimo, la versión 11 de Java (así que si estoy trabajando con la 1.8 en el equipo ya me han dado por saco). Intenté tener instaladas ambas, pero Eclipse sólo detectaba la 1.8, así que se negaba a arrancar.
 Estuve configurando el "path", pero no sirvió de nada. Revisé ficheros de configuración para ver si había alguna forma de indicar la ruta que debía buscar e ignorar el "path", pero tampoco.
Ante esto a uno se le presentan dos opciones: buscar una versión anterior del IDE que trabajara con Java 1.8 (versión 2020-06 de Eclipse) o trabajar con la versión 11. Intenté esta última opción, pero me encontré con varios problemas. Ahora mismo no los recuerdo todos, pero uno de ellos fue el servidor de aplicaciones. Suelo utilizar Tomcat para trabajar con Java, pero para JSF, EJB, etc. mejor utilizar un servidor de aplicaciones completo, así que opté por Glassfish (que es con el que había aprendido). Y aquí la lista de problemas:
-La última versión de Eclipse sólo acepta la versión 5 de Glassfish (5.1.0 es la última de esa generación) y no la 6.0 (que, por cierto, sólo trabaja con la versión 11 de Java en adelante).
-Si configuraba que fuera el servidor de aplicaciones quien proveyera las librerías Java EE, Glassfish 5.X no reconoe las novedades que incorpora Java Server Faces 2.3. Por ejemplo, en esta última versión todas las anotaciones relacionadas con los ManagedBean están "deprecated". Ahora se usa @Named en lugar de @ManagedBeand. Y así con otras. Eso hacía que no pararan de saltarme "warnings" en el código. Se puede usar la anotación @SupressWarning("deprecation") para que no moleste, pero si estoy aprendiendo la última versión de todo no me parece normal andar así. Como digo, Glassfish 5.X no contempla estas novedades, así que lo que estaba haciendo en el código no funcionaba y no sabía por qué demonios era. Costó descubrir que el "culpable" era el puñetero servidor de aplicaciones ¬¬.
 Siguiendo el consejo de un libro (el cual comento al final del artículo) decidí cambiar a un "fork" de Glassfish: Payara. El problema es que en el libro se usa una versión de Eclipse anterior y la cosa se complicó:
-En el libro, Payara se instala como Glassfish, pero en Eclipse no me salía forma de instalarlo. Así que tienes que ir a la categoría Oracle (en la lista de "instalar nuevo servidor de aplicaciones"), instalas "Glassfish Tools" y te saldrá la categoría "Glassfish". El problema es que en mi versión de Eclipse no salían las "Glassfish tools", así que tuve que descubrir que había que instalar "Oracle Cloud Tools" (o algo así), para conseguir ver dicha categoría y conseguir instalar un Glassfish (o Payara). Por suerte, escoger este último método hace que se instalen gran cantidad de "cosillas" en Eclipse que facilitan mucho la vida del programador.
 Me gustaría comentar, también, que se pueden encontrar unas "Glassfish Tools" en Eclipse Marketplace, pero me dieron problemas. Lo que sí hay son unas "Payara Tools" que van muy bien para poder instalar el servidor de aplicaciones Payara de forma directa, sin tener que hacerlo como si fuera un Glassfish.
 Del mismo modo, en el libro que estaba siguiendo te explican que si instalas las "JBoss Tools" desde el "Marketplace" se abre un abanico inmenso de cosas por instalar (esto sólo me funcionó bien en la versión de Eclipse 2020-06). Para el proyecto que estaban mostrando en dicho libro. lo deshabilitaban todo y sólo marcaba/instalaba las utilerías de inyección de dependencias (que vienen de fábula, para que negarlo) y, luego, en la lista de servidores de aplicaciones disponibles instalaba las "JBoss, Wildfly tools..." que también incorporan muchas novedades a Eclipse y, de paso, la posibilidad de instalar el servidor de aplicaciones Widlfly  (versión 21) que va estupendo para todo.
 En resumen, al final me quedé con la versión Eclipse 2020-06 que permite trabajar Java 1.8 y he instalado la última versión de Payara Tools y el servidor de aplicación Payara, las JBoss Tools (que, como he comentado antes, en la última versión de Eclipse no aparece la pantalla de marcar/desmarcar que quiero instalar), las "JBoss, Wildfly tools..." desde la ventana de "Instalar nuevo servidor de aplicaciones", el servidor de aplicaciones Wildfly y la última versión de Apache Tomcat. Y, por ahora, todo funciona correctamente.


Creando el proyecto

 Una vez decides que vas a trabajar con Eclipse, la versión de Java 1.8, instalar X servidores de aplicaciones y configuras el entorno como lo necesitas, toca pasar a crear el proyecto. Y aquí es cuando se vuelve a liar, porque cada IDE es distinto y los "docentes" no suelen crear dichos proyectos pensando en que el estudiante va a necesitar crearlos en otros IDE o de otras formas. 
 Entonces, ¿qué opción se elige? Pues hay varias:
-Se puede crear un "Dynamic Web Project" y, luego, convertirlo a Maven Project. Está es la forma más rápida y cómoda, ya que te permite configurar el proyecto como Java Server Faces mientras lo creas.
-La forma más estandarizada por los profesionales suele ser crear un "Maven Project", pero aquí se complica cuando debes elegir un arquetipo. Lo mejor es no dejarte abrumar por ello, así que lo más sencillo es marcar la casilla "Create a simple project" y centrarte más en el tipo de "packagin" que vas a utilizar (Pom, JAR, WAR). Para una aplicación web usamos WAR y esto ya configura todas las carpetas y archivos mínimos que el proyecto necesita. 
 También se puede escoger el arquetipo "maven-archetype-webapp" (que va por la versión 1.4) que hará algo muy parecido, aunque con ciertos añadidos. 
 Por suerte, cualquier proyecto Maven te permite añadir lo que quieras a mano y siempre puedes configurar el proyecto vía "Project Facets" en Eclipse.
 Éstas son las diferencias más obvias (a primera vista) entre estas (ya que hay montones) dos formas de crear un proyecto con "Maven Project":


Arquetipo "Create a simple project"


-JAX-WS Web Services: es decir, el proyecto está configurado para trabajar con Web Services.
-Se crea la estructura de carpetas:
src/main/java
src/main/resources
src/test/java
src/test/resources
-El archivo pom.xml no incluye apenas nada.
-En "Project facets" encontramos "Dynamic web module 2.5", "Java 1.5" y "JavaScript 1.0".


Arquetipo "Maven archetype webapp"


-Se crean los archivos WEB-INF/web.xml e index.jsp en la carpeta src/main/webapp.
-El archivo pom.xml es bastante más completo.
-En "Project facets" encontramos "Dynamic web module 2.3", "Java 1.7" y "JavaScript 1.0".


Configurando "Project Facets"


 Y aquí es cuando te vuelves mico. Pongamos un ejemplo distinto a los anteriores: si creamos un Maven Project pelado, sin estructura de carpetas ni ninguna dependencia, podemos ir a configurar el proyecto a "Project Facets". Esto es lo que he conseguido aprender:
 Si "Dynamic Web Module" está marcada hay que desmarcarla, darle al botón "Apply". Luego, se elije versión y se vuelve a marcar la casilla. Importante: Según la versión que elijas tendrás que subir la de Java. Entonces, en la parte inferior de la pantalla aparece un link donde se lee "Further configuration available". Hay que hacer clic, porque si el fichero web.xml no viene creado de antemano es así cómo podemos crearlo de forma automática. Siempre se puede hacer a mano, claro, pero mucho mejor si ayuda el entorno.
 Esto mismo hay que repetirlo con Java Server Faces, ya que crea el fichero faces-config.xml y con JPA, que crea su fichero correspondiente: persistence.xml en src/main/java/META-INF.
 Si nos olvidamos de darle al link podemos marcar y desmarcar de nuevo (dándole al botón "Apply") o seleccionar otra tecnología con la que trabajar (como JSF o JPA) y verás que aparece una nueva pantalla (relacionada con esa tecnología) pero que permite ir hacia atrás o hacia adelante, con lo cual puedes configurar la que se te había pasado (aunque recomiendo hacer cada cosa por separado).
 Otra cosa importante es que muchas veces no aparecen carpetas como src/main/java. Esto se puede habilitar en propiedades del proyecto / Java Build Path / Order and Export y marcando alguna de las casillas vacías (por ejemplo, Maven Dependencies, etc.). Esto obligará a que aparezcan las que están marcadas con el cuadrito negro. Por mi parte, las marco todas. Y ya tendremos el proyecto con toda la estructura necesaria. A partir de aquí ponemos las dependencias en el pom.xml (vía interfaz gráfica o a mano) y configuramos un servidor de aplicaciones para el proyecto (entre muchas otras cosas).


Final


Éstas son algunas de las dificultades con las que me encontré sólo para poder crear un proyecto para Java 1.8, Dynamic Web Module 4.0, Java Server Faces 2.3 y JPA 2.2. Creo que me surgieron más problemas, pero estos son los que recuerdo. Es importante recalcar que esto no es un tutorial, sino un aviso de los problemas con los que te puedes llegar a encontrar. Así que, para que esto no te pase, te dejo aquí la documentación que te irá mejor para poder trabajar con estas tecnologías:
-Libro "The Definitive Guide to JSF in Java EE 8". Se puede encontrar un PDF en internet.
-Java: 1.8.
-IDE: Eclipse 2020-06
-Servidor de aplicaciones: Payara (instalando las Payara Tools) es el que utilizan en el libro, pero también puedes usar WildFly (el antiguo JBoss) 21.
-Dynamic Web Module: 4.0
-JSF: 2.3.
-JPA: 2.2.
-CDI (Contexts and Dependency Injection): 2.0. En el libro te piden instalarlo vía Marketplace con las JBoss Tools (recuerda que con Eclipse 2020-12 no me funcionó como esperaba). Al instalarlo te permite crear clases especiales como Beans, XHTML, etc. sin tener que hacer una estándar y cumplimentarla tú.
En Udemy y Youtube encontrarás varios tutoriales de JSF, pero vigila con los IDEs que utilizan y sus distintas versiones. Lo mismo que con las tecnologías especificadas anteriormente (JSF; JPA, etc). Al final te vuelves mico cuando empieza a fallar una cosa u otra respecto a lo que ves en el curso (y, por desgracia, no siempre es posible acceder a las versiones que esta gente usa en sus tutoriales).


sábado, 24 de octubre de 2020

Guía de iniciación al desarrollo full stack (parte 2/Backend)

 En Backend, hoy en día, tenemos los servidores de aplicaciones que reciben todas las peticiones desde el lado cliente (frontend), realizan las gestiones oportunas, hacen las consultas a las BBDD y devuelven la información al cliene, por ponerlo de manera muy simple. Para conseguir desarrollar las aplicaciones que hacen todo lo anterior podemos utilizar lenguajes de programación como Java, C# y Phyton. Me encanta C#, pero me he especializado en Java, así que explicaré la parte de Backend utilizando este lenguaje. Eso sí, aviso que el mundo de Java es infinito y no termina nunca. Siempre aparecen nuevos frameworks que aprender, nuevas formas de trabajar, nuevas tecnologías, etc. Por ejemplo, pongamos que queréis dedicaros a esto (en la parte de Backend) y decidís empezar con Java. Esto sería lo que tendríais que aprender:

-Java SE. Esto es el lenguaje Java puro y duro. Aquí aprendes a programar de forma estructurada y orientada a objetos: sentencias de control, objetos, herencia, polimorfismo, colecciones, genéricos, programación funcional, etc. No os asustéis por estos términos, ya que los iréis aprendiendo uno por uno y con muchos ejercicios.

Nota: ya hace un tiempo que las aplicaciones de escritorio no se llevan mucho, así que si tenéis prisa por aprender podéis saltar la parte de interfaces gráficas: AWT, Swing, Java FX. Personalmente, creo que se debe aprender todo y creando estas aplicaciones se aprende sobre el patrón MVC, pero esto también se enseña en Java EE.

-Java EE. Aquí es cuando aplicas lo aprendido con Java SE para empezar a programar aplicaciones web. Básicamente, esto es lo más importante. Lo anterior es como un entremés para poder empezar esto (como decía, es muy denso). Aquí aprenderéis a trabajar con tecnologías como JDBC, JSP (Java server pages) y Servlets, patrón de diseño MVC, EJB, JPA (Java persistence api), Java Server Faces, patrón de diseño DAO, Web Services, etc.

-Frameworks. Los frameworks externos a Java implican nuevas formas de trabajo y facilitan de una manera enorme el trabajo a la hora de programar. Algunos de estos frameworks son Spring, Struts, Hibernate, Vaadin, etc.

Ahora mismo, el mejor tutorial que puedo recomendaros que toque todo esto es

Universidad Java de Udemy

https://www.udemy.com/course/universidad-java-especialista-en-java-desde-cero-a-master/

Lo he cursado entero y es uno de los mejores. Si bien es cierto que el profesor respondía a todo al principio, a partir de un momento dejó de hacerlo. De todos modos, los compañeros también ayudan y no paran de añadir contenido, así que está muy bien. Además, incluye HTML5, CSS, Bootstrap, Angular, etc. Siempre se puede adquirir de oferta por 10-12€ y es una de las mejores inversiones.

Otros de los cursos que merecen la pena, y mucho, son los de píldoras informáticas:

Java SE

https://www.pildorasinformaticas.es/course-cat/java_se/

Java EE

https://www.pildorasinformaticas.es/course-cat/java-ee/

Curso Spring

https://www.pildorasinformaticas.es/course/curso-spring/

Consejos: en la mayoría de ofertas de trabajo piden haber trabajado con JSP o Spring. Lógicamente, si trabajas con JSP debes haber trabajado con Servlets. Si has aprendido a trabajar con Servlets no te costará nada aprender Spring MVC. Llegados a este punto, es importante que aclare qué es Spring. Es un framework enorme con una cantidad de características abrumadora:

-Spring Boot, Spring MVC, Spring Cloud, Spring Security, Spring Batch, etc.

Lleva un tiempo aprender a usarlo, pero es muy importante hacerlo. Hoy en día no paran de pedir programadores java con conocimientos en Microservicios, contenedores y Amazon Web Services. Todo esto se trabaja con Spring. Por suerte, si has estudiado Java con los VT que he aconsejado antes, verás que Spring reduce el esfuerzo del programador al mínimo. El framework lo hace casi todo él solito. La verdad es que es algo increíble.

Para trabajar con bases de datos se suele utilizar JPA (oficial de Java) o Hibernate (muy parecido a JPA). Una vez aprendes el primero no es nada difícil hacerse con el segundo. Hay muchas más ofertas de trabajo pidiendo Hibernate, pero siempre encuentras alguna con JPA. Ambos utilizan una API llamada Criteria para las búsquedas de datos complejas (por ejemplo, peticiones con muchos campos: nombre, apellido, año, curso, dirección, etc. o búsquedas de datos con muchos filtros).

En resumen, aprendes Java SE para poder aprender Java EE, pero esto no es suficiente así que aprendes Spring e Hibernate (que resulta más fácil porque ya sabes lo anterior). Como decía, infinito xD.

En microservicios aprenderás a implementar todo lo aprendido anteriormente, pero dividiendo la aplicación en partes pequeñas (microservicios) y distribuyendo éstas en distintos servidores. Aquí es cuando entran los contenedores (docker, kubernetes).

Amazon web services no deja de ser más de lo mismo, sólo que en lugar de tener tú las máquinas en la oficina, es Amazon quien las hospeda. Por explicarlo de forma muy simple, Amazon web services te permite crear copias de máquinas con el software necesario de forma muy rápida y cómoda. En nuestro caso instalaríamos servidores de aplicaciones o de bases de datos en cada máquina. Cada servidor tendría un parte pequeña (microservicio) que se comunica con las otras. Cada microservicio puede acceder a la base de datos que quiera (una puede utilizar MySQL, otra MongoDB, PostgreSQL, etc). Del mismo modo, cada microservicio puede estar programado en Java, C#, Phyton, etc. y se comunican entre sí utilizando tecnologías estándar (como se ha usado siempre XML o JSON).

Si te gusta programar el mundo de Java es maravilloso, pero llegar a aprenderlo casi todo (fijaros que no he profundizado en el framework Struts o Vaadin) lleva mucho tiempo y picar código continuamente.

Guía de iniciación al desarrollo full stack (parte 1/Frontend)

 Si quieres aprender a programar o a hacer páginas/aplicaciones web tienes que meditar qué es lo que quieres hacer y cuál es tu nivel actual. Si no sabes nada de nada te recomiendo empezar por la parte Frontend (también conocida como lado cliente o lo que ves en el navegador web). Si ya tienes más experiencia y/o tienes claro que lo que te gusta es picar código tal vez debas plantearte el lado Backend (también conocido como lado servidor). Éste es mucho más complejo y, según el lenguaje que escojas, puede llegar a ser infinito (como es el caso de Java). Por suerte, siempre puedes especializarte un poco y saltarte algunas cosillas. Por ejemplo, si lo que quieres es dedicarte a las aplicaciones web puedes saltarte tecnologías como AWT (que ya no enseña nadie), Swing y Java FX que sirven para el desarrollo de interfaces gráficas en aplicaciones de escritorio.

 Voy a estructurar este post en varias categorías. En cada una publicaré video tutoriales (VT) que creo que son los más indicados para empezar (así me ahorro ser yo quien enseñe xD).

 Hay que tener en cuenta que todo lo relacionado con la informática es muy autodidacta. Aunque aquí se posteen VT para empezar hay que moverse y buscarse la vida para encontrar libros y más VT que expliquen nuevo contenido, nuevas tecnologías, etc. Cada X tiempo está saliendo algo nuevo que aunque no es obligatorio aprender si es muy inteligente saber de qué va y qué es lo que hace.

 Para finalizar, si no sabes programar, pero quieres hacer páginas web y deseas aprender con una curva de aprendizaje muy sencilla, empieza por Frontend.

 Si tienes claro que picar código es lo tuyo o es lo que te va, tira directamente a por la parte de Backend y que dios te asista xD.

 Las siguientes categorías son bases de datos (BBDD) y desarrollo de aplicaciones móviles (concretamente, Android). Las BBDD se utilizan en casi todos los desarrollos ya que es donde se almacenan los datos con los que se trabaja, así que hay que conocerlas mínimamente. La sección de Android la dejo por vicio, más que nada, pero debes conocer lenguajes como Kotlin o Java para poder trabajar en ello.

Cosas por saber antes de empezar:

-En cada video tutorial utilizarán un editor de código o entorno de desarrollo distinto. Mi consejo es que aprendéis a usar el de cada VT. No hace falta convertirse en experto, pero es muy buena idea conocer varios. En el lado Frontend, seguramente, acabaréis trabajando con visual Studio Code, pero si utilizan Brackets o Sublime no dudéis en aprender cómo funcionan.

-Es importante tener localizados los mejores portales de VT para no dejar de aprender constantemente. Los principales son:

Udemy:

https://www.udemy.com/

 El principal portal de enseñanza. Tiene cursos en muchos idiomas y aplicaciones para smartphones. Es muy completo en todo lo referente a lecciones, vídeos, seguimiento, comentarios, etc. La primera vez que lo vi me pareció genial.

 IMPORTANTE: Udemy está realizando descuentos cada semana de forma constante. Si veis un VT que os interesa, pero supera los 15 €, ponedlo en la lista de deseos y entrad a la web cada día. En algún momento estará de oferta y lo podréis comprar sin dejaros un sueldo.

Domestika:

https://www.domestika.org/

Parecido a udemy

Itoo:

https://itoo.dev/

Es muy parecido a Udemy. De hecho, diría que algunos de los docentes que publicaban sus cursos ahí han creado esta plataforma.

Openwebinars:

https://openwebinars.net/

Portal de cursos con tarifa plana.

Platzi:

https://platzi.com/

Portal de cursos con tarifa plana.

Píldoras informáticas:

https://www.pildorasinformaticas.es/

Gratuito y de lo mejor del mercado español.

Otros:

https://megacursos.com/

Este me gusta porque tiene cursos gigantescos donde lo tocan todo. En el de Java incluso te enseñan a programar un juego, cosa que no he visto en otro.

https://es.coursera.org/

https://escuela.it/

 

Y una vez hecho la introducción... ¡Empecemos!


Frontend

 

 En pleno 2020 hay mucha tecnología en el lado cliente, así que hay que aprender bastante cosilla, pero es sencillo y todo muy visual, así que se aprende muy deprisa. El orden de aprendizaje debería ser el siguiente:

 

HTML (versión 5)

 

 Lo primero que hay que aprender (y lo más fácil). En una página web, HTML sería todo el texto e imágenes que ves.

 

Tutoriales recomendados

 

Aprende a crear webs desde cero con HTML Y CSS de Guillermo Rincón

Os lo dejo subido en Mega

https://mega.nz/file/pUkBiSgJ#fjTdYk3SzfZaEE4-aXBnTdE1mJgLJejt2p4jOBYqenY

 Este VT es bastante básico. Muy bueno para los que empiezan sin tener ni idea, aunque se queda un poco corto; así que habrá que seguir con VT más avanzados. Es buena idea combinar este VT con la web Lista con los elementos de HTML5 (la URL está más abajo) para consultar todos los elementos HTML disponibles, sus diferentes atributos y los posibles valores de estos.

Curso de HTML 5 de Píldoras informáticas

https://www.pildorasinformaticas.es/course/html-5/

También tiene canal en Youtube:

https://www.youtube.com/channel/UCdulIs-x_xrRd1ezwJZR9ww

 Este señor es de lo mejorcito que encontraréis en internet. Explica de fábula. Como podréis comprobar tiene una cantidad de cursos elevada y muchos los usaré aquí.

 

Páginas web de consulta recomendadas

 

Lista con los elementos de HTML5

https://developer.mozilla.org/es/docs/HTML/HTML5/HTML5_lista_elementos

Tutorial HTML

https://www.w3schools.com/html/default.asp

 Con los dos cursos/videotutoriales que os he puesto y las dos páginas web de consulta tenéis de sobras para aprender HTML5, así que podemos pasar al siguiente tema.

 

CSS (versión 3)

 

 Es lo segundo que hay que aprender. En una página web, el CSS (hojas de estilo en cascada) es lo que organiza y da forma al HTML (texto e imágenes). Lo que hace que quede bonito. El cambio entre no usar CSS y sí hacerlo es muy bestia, así que hay que aprenderlo xD.

Curso CSS Avanzado desde 0 de Píldoras informáticas

https://www.pildorasinformaticas.es/course/css-avanzado-desde-0/

 Dentro de CSS podéis encontrar SASS y LESS, entre otros. Son ampliaciones de CSS que incluyen nuevas características. De todos modos, esto es mejor que sólo lo miréis si lo necesitáis o decidís tomaros en serio el desarrollo frontend.

 

Ahora que ya sabéis cómo funciona HTML y CSS os dejo aquí unos tutoriales que tocan ambas tecnologías.

HTML5 y CSS3 de Global Mentoring

https://mega.nz/file/oJciHBrC#D1gk65qJhADmineOkFWO8Q2iRxVdf1b9j9NFTtKdXmc

Diseño Web Responsive con HTML5 y CSS3 (2014)

https://mega.nz/file/MQEkVZjY#LxfCjVv19j_G8igzNVxRem_Noi6xXDtunaA1aE4W4FY

Desarrollo web rápido HTML5, CSS3 y Bootstrap 3 (2015) [Udemy]

https://mega.nz/file/MFckFZ6L#Or668m0kE6aUYrouWNnEKO2-O84lRm6whZ35cApq2qQ


Librerías HTML

 

Bootstrap

 

 Una buena idea es coger el trabajo hecho por otros y reutilizarlo. En este caso, Twitter nos permite usar sus librerías Bootstrap para que podamos aplicar todo tipo de botones y demás a nuestra página web. Aquí os dejo su web https://getbootstrap.com/ . Es muy de usar: vas a la sección de la página web de dónde quieres coger algo. Por ejemplo, unos botones para tu web: https://getbootstrap.com/docs/4.5/components/buttons/ . Ellos te muestran los distintos botones con sus diferentes estilos y, además, cuelgan el código que debes copiar y pegar en tu web. Y ya está. Así de fácil. Lo único que debes hacer es incluir una línea al principio con un link a su librería. Todo esto viene explicado en los VTs correspondientes. Dejo subido a la cuenta de MEGA el VT 

Bootstrap 4, El Curso Completo Practico Desde Cero (2017)

https://mega.nz/file/QINWzZCY#94JmDgHhcOlTdxjIUoAyrHtz9aFzMj2ObCMSusD6DRI

 

JavaScript

 

 Llegados a este punto es cuando empezáis a aprender a programar. Aquí trabajaréis con funciones y objetos, aunque de una manera más sencilla que con lenguajes como Java o C#. Javascript va muy bien para que el usuario pueda interactuar con la página web que le muestra el navegador. Hoy en día es imprescindible saber trabajar con este lenguaje, pero ya veréis que es muy divertido y ameno. En seguida se ven los cambios y se pueden hacer muchas virguerías (juegos, páginas web muy llamativas, etc). Además, también podéis usarlo para trabajar en el lado servidor.

Curso JavaScript desde 0 de Píldoras informáticas

https://www.pildorasinformaticas.es/course/javascript-desde-0/

 

Librerías Javascript

 

jQuery

 

jQuery es un conjunto de funciones ya escritas en Javascript. Lo que tiene de bueno es que puedes usarlas sin tener que escribirlas tú u ofrecerte algunas en las que ni siquiera habías pensado. No es obligatorio aprenderlo ya que todo está escrito con Javascript, pero sería muy burro no hacerlo. Encontraréis mucho material de en YouTube y portales de enseñanza, pero dejo en la cuenta de MEGA 

Curso de JavaScript y jQuery (2017) 

https://mega.nz/file/NdEUgD5D#pvRcmfjdIipYza8D9CjEyA7yiLG6zJrWyO_GaAAX8mQ

El curso de Javascript de Píldoras informáticas también tiene una sección de jQuery. Además, dejo la web con la documentación oficial para su consulta https://jquery.com/

Backbone es otra librería de javascript.

 

Frameworks

 

 Con todo lo anterior ya estáis más que preparados para hacer páginas web fabulosas, pero ahora se han puesto de moda los frameworks como Angular, React, Vue, etc. Debo reconocer que cuando probé el primero aluciné. Lo que hace Angular es dividir la web en distintas zonas (igual que cuando la desarrollas con html donde tienes el banner, el menú de navegación, el cuerpo, el pie de página, etc.) y trabajas cada zona por separado. Lógicamente, la cosa da mucho más de sí, pero es para que os hagáis una idea de que estos frameworks cambian un poco el paradigma, pero son fantásticos. Si has decidido meterte en el mundo del Frontend no dudes, bajo ningún concepto, en aprender uno y mi consejo es que empieces por Angular.

 Es importante no confundir AngularJS (la primera versión del framework que salió y que se trabajaba con Javascript) y Angular (framework posterior que trabaja con Typescript y que va por su versión 10). Tira por éste último y, aunque utilice el lenguaje Typescript, lo que hace el framework es traducir todo a Javascript para el navegador. Es decir, que puedes trabajar también con JS, pero TS es mejor.

El tutorial de Angular más reciente del que dispongo es de la versión 4/5, así que para la versión 10 deberéis buscar en Udemy y demás portales de enseñanza.

Curso esencial de Angular 4 (2017)

https://mega.nz/file/cd8XQQpC#l8_qDs8S4fJI8VGR0CjoEaO3s1XuC7KsngpeFUWkN2Q

Curso de Angular 5. Desde cero hasta profesional  (2018)

https://mega.nz/file/RI8FnAoT#Bch9DsNoJA6k0YdM4hNLULT4FZ6QZ9cE0IEGUdB6l3Y

 

Y hasta aquí la parte de Frontend. 



viernes, 23 de octubre de 2020

Dr Slump Memory Game

 Hoy traigo un jueguico hecho con Javascript. Es muy simple, pero le he dado un punto friki. Es el típico juego donde debes ir descartando parejas de cartas. Si no encuentras dos iguales vuelve a ponerse el reverso. Aquí una imagen del juego al empezar:




Al hacer clic en una carta, ésta se gira y deja al descubierto la figura que hay debajo:

Ahora sólo hay que hacer clic en otra y si coinciden desaparecen del tablero. Si no se vuelve a poner el reverso.





Aplicación web con Java Server Faces, JPA y MySQL

 Para ir poniendo en práctica lo aprendido últimamente he creado esta aplicación que utiliza las siguientes tecnologías:

-MySql.

-Java:

    -JPA (Entity classes).

    -EJB.

    -Java Server Faces (ManagedBeans).

    -Primefaces.

Al final he dejado un frontend simple. Cuando haces clic en un botón te lleva a la página correspondiente. En un primero momento, al hacer clic en dicho botón, aparecían dos nuevos que permitían consultar el listado correspondiente (comics, música, películas, series y videojuegos) y agregar un producto nuevo a la BBDD, pero al final decidí que era mejor una única página para cada tipo de producto y que desde ella se realicen todas las operaciones.



Dejo aquí cómo se vería el listado de comics y, luego, como se agregaría un nuevo:


Para la tabla utilizo una dataTable de Primefaces. Te permite filtrar por cada campo sin necesidad de que tengas que hacer nada. También permite editar cada registro. Si se hace clic en el botón "Agregar" aparece una ventana modal como ésta:


La creación de la tabla, ventana modal, etc. es de una facilidad pasmosa. Todo lo hace el framework. 
El resto de secciones son iguales. He priorizado la funcionalidad antes que la estética.

Problemas encontrados:

1) A partir de cierto momento, los estilos de dataTable desaparecieron. Todavía no sé por qué. Después de mucho investigar decidí empezar el proyecto de nuevo y sucedió lo mismo: al principio todo va bien y, a partir de un punto, se va todo al cuerno. Lo único que he conseguido es volver a un punto del proyecto cuando los estilos aún funcionaban, sacarlos del navegador e implementarlos con un fichero CSS externo.

2) Tuve un problema con los nombres de los campos en las tablas película y seriesTv. Tenían un campo llamado "dual" con un valor booleano, pero parece que entraba en conflicto con JPA o MySQL (sinceramente, aún no sé con cual) por considerarlo una palabra clave (la variable utilizada en las Entity class tenía el mismo nombre: dual). Después de averiguar que ese era el problema lo cambié por "Idiomas" de tipo String (y así aprovecho y pongo todas las pistas de audio). Aún utilizando la anotación @Column(name="dual") seguía pasando.

lunes, 14 de octubre de 2019

Calculadora en JavaScript

¡Buenas! Me ha dado por añadir JavaScript a la lista de lenguajes con los que trabajar, asi que he probado con una calculadora. Una vez terminado esto toca ponerse con jQuery. Dejo un ejemplo.

Con google chrome:


Con Mozilla Firefox.


El siguiente paso es acabar de añadir los 3 botones (CE y alguno más).

viernes, 23 de agosto de 2019

Aplicación web para usuarios de Plex

Este fin de semana subiré una aplicación web que permite a los usuarios de Plex publicar las películas, series, etc. que van incorporando a su servidor.

Ejemplo rápido de frontend:


La aplicación corre sobre un servidor Apache Tomcat y se han utilizado las siguientes tecnologías:

-Java 1.8
-JSP (JSP Tags, content.xml con el pool de conexiones).
-Servlet.
-Patrón MVC para toda la aplicación.
-Patrón Singleton para la clase que conecta con la BBDD.
-Servidor Tomcat.
-Servidor MySQL
-Servidor MongoDB

 Además del frontend donde se lista el contenido con las novedades también hay secciones dedicadas (recomendaciones, noticias, etc). Lógicamente, una de los apartados web será un formulario para ir agregando el contenido a la BBDD.

 El controlador de la parte de backend permitirá elegir si se trabaja con MongoDB o con MySQL.
El servidor de Apache Tomcat está alojado en una máquina virtual junto a un servidor IIS y en otra máquina virtual están instaladores los servidores MySQL y MongoDB. Ambas máquina corren en Windows Server 2016 bajo Hyper-V (también en WS2016).

domingo, 28 de julio de 2019

Aplicación para preparar despliegues en IBM

 Para el departamento de despliegues de IBM he comenzado a desarrollar una aplicación que permita agilizar la preparación de la parrilla diaria. Consta de la pantalla de bienvenida, realizada provisionalmente hasta que se incorpore toda la información necesaria, y dos pantallas más que componen las dos partes de la preparación de un CRQ (Change request) del programa de ticketing BMC Remedy. La aplicación se ha realizado con Java 1.8  y la API Java Swing.

Fase 1 de la aplicación:


La pantalla es provisional. Simplemente necesitaba crear un punto de partida rápido.


 La pantalla número 1, tal y como se puede ver, recoge todos los datos necesarios del CRQ y de la Task y los válida. Si alguno no es correcto, la aplicación lo avisa en el cuadro de texto y no permite pasar a la siguiente pantalla hasta que se resuelve el error.


 En la pantalla número 2 es cuando configuramos las operaciones de las que consta el despliegue. Una vez configurados los servidos de aplicaciones, rutas y otras opciones éstas se reflejan en un cuadro de texto editable.

Fase 2:

 En la segunda fase de la aplicación, la idea es conectar con la BBDD de Oracle del proyecto para que con la pulsación de un botón podamos agregar toda la información del despliegue y ésta aparezca reflejada en la parrilla diaria.

Fase 3:

 Esta fase ya es un poco más compleja. La idea es que los propios funcionales sean quienes rellenen todos los datos y de ahí se guarde todo en la parrilla de despliegues sin que los técnicos del departamento tengan que hacer nada. Por lo tanto, habría que añadir una pantalla de login y un servidor de autenticación. Una vez logueado el funcional, todo funcionaría igual.

 Dado que soy una persona que considera que la documentación debería ser asignatura obligada en las empresas, todo campo de la aplicación tiene un diálogo de ayuda y, lógicamente, se crearía un manual digital para disipar toda duda del funcionamiento de la aplicación (aunque tal y como ha sido desarrollada no se deja espacio para dudas).

sábado, 17 de marzo de 2018

Ampliar horizontes con nuevos estudios.

 Aprovechando una conversación con un amigo decido crear este post para la gente que está en paro o quiere optar a mejores puestos de trabajo / mejores sueldos.

 ¿Estás sin trabajo y no tienes estudios? ¿Tienes la costumbre de quejarte desde el bar, en casa viendo la tele, etc. y te pasas el día pegado al smartphone haciendo cualquier cosa menos visitar infojobs, tecnoempleo, linkedin, trabajar, laboris, etc.? Ésta sería tu guía, pero contando lo anterior dudo que la encuentres XD.

 La tarea principal para la gente que quiere cambiar su vida es, primero, centrarse en la población / región donde residen. Luego, también buscar de qué se quiere trabajar o, en menor medida, qué os gusta y hacer de ello vuestra profesión. Lo importante es tener en cuenta que las ofertas de trabajo (en un alto porcentaje) son publicadas por empresas ajenas a la empresa donde desarrollarás tu labor . Son conocidas como ett, consultoras, etc. donde un elevado porcentaje no tienen ni pajolera idea (aunque, por suerte siempre hay excepciones) de lo que están pidiendo. Así que si no ven que tienes, como mínimo, dos años de experiencia laboral es posible que no te hagan mucho caso. A veces, tienes la suerte de que miran si tienes un grado superior o una carrera. Esto sucede mucho en el ámbito de las tecnologías de la información (se nota que es mi caso, ¿eh?). Personalmente, os diré que llevo ya unos años estudiando diferentes lenguajes de programación (C. C++, Java y C#) y tengo cursos oficiales y certificaciones. No ha servido para nada. También creé este blog para ir poniendo muestras de programas y escribí una carta de presentación en la cual incluí un párrafo intentando llamar la atención de la gente de recursos humanos avisando de que el contenido de los cursos / certificaciones era muy superior a lo que se enseña en un grado superior. Como es de suponer, no ha servido para nada. Después de optar a 25-30 ofertas entre infojobs y tecnoempleo y no recibir ni una sola llamada desistí del todo (curiosamente, fue volver a optar a trabajos de operador de sistemas, donde tenía algo más de 1 año de experiencia, y no paraban de llamarme).

 Y aquí es donde quiero incidir. Dejo estos links de páginas web que, como punto de inicio, van genial para empezar a estudiar. Da igual la edad que tengas. No hagas caso de esas memeces de que hay límite de edad para estudiar o hay que tener tiempo. Puedes estudiar a cualquier edad y en los plazos que tú quieras (para eso hay institutos a distancia).






 Dentro de cada uno de ellos tenéis un listado de cada grado reglado que hay en este país. Hay que recordar que, después de estos, podemos acceder a los grados universitarios. Aunque estos son más largos y caros y ya dejo que cada uno se busque la información por su cuenta (total, si puede entrar en la universidad tiene que saber hacer eso XDD).

 Bueno, pues cada ETT, consultora, etc. utilizará los estudios reglados como baremo a la hora de publicar la oferta y de fijarse en tu solicitud. Por supuesto, si puedes sacarte un grado superior siempre será mucho mejor que un medio. De todos modos, recuerda, primero averigua que grados te gustan y, luego, busca ofertas de eso en webs como infojobs. Si ves que apenas hay ofertas tendrás que estudiar otra cosa y dejar esto como hobbie para más adelante. Si, por contra, resulta que hay bastantes ofertas mira a ver que piden la mayoría de ellas (grado medio, grado superior, grado universitario... o nada XD). Por ejemplo, en Barcelona todo lo relacionado con informática tiene bastante salida (aunque eso no significa que los sueldos vayan a ser altos XD). Cosas como el desarrollo web dispone de mucha oferta, pero existe el problema de siempre: los que las redactan  están locos. La mayoría piden un grado superior de desarrollo web (DAW). Hasta aquí normal, pues con el grado medio poco podrías hacer y el superior de redes tampoco cubre lo necesario. El problema es que te van a pedir mil tecnologías más que, probablemente, no habrás dado en el curso.

 Y aquí es donde entran los cursos y certificaciones. conseguir trabajo con esto es mucho más difícil que con un grado superior, pero ayudan muchísimo a conseguir mejores trabajos con mejores sueldos si ya dispones del grado o de la experiencia laboral. Es decir, que si conseguís un trabajo de algo (operador de soporte, operador / técnico de sistemas, operador host, programador mal pagado, etc.) id ampliando el CV con cursos (LPIC, windows server, bases de datos, frameworks, nuevos lenguajes de programación, etc.) y sus certificaciones. Así es como en 5 años acabaréis cobrando bastante más de lo que cobrabais cuando empezasteis (si no metéis la pata de algún modo raro).El proceso es éste:

 Coges el trabajo que puedes sobre el sector que te interesa. Posiblemente cobrarás una mierda, pero ya has entrado y, a partir de aquí, toda la experiencia que ganes es preciosa. De mientras, haz cursos subvencionados por el SOC (o el INEM de tu autonomía) y, si puedes, certificaciones. Si no puedes por que no te llega el sueldo internet está lleno de libros y videotutoriales. Aprende por tu cuenta y haz muchos tests sacados de los exámenes de certificaciones (y, si podéis, examinaros). Y añade todos esos conocimientos en tu CV. Con paciencia y tesón, a los dos años tendrás una experiencia que te servirá para optar a mejores trabajos / mejor pagados y los conocimientos adquiridos de cursos y certificaciones te permitirán arañar un mejor sueldo.

 Habrá quien diga que esto es un coñazo, que es mucho sacrifcio, etc. a esas personas les digo que en las montañas hay cuevas donde vivir y hacer el vago el resto de sus vidas. Está claro que este mundo no es para ellos (por desgracia, es lo que hay). Eso sí, que no se quejen.

 Por experiencia propia puedo decir que este es el mejor camino a seguir. Personalmente, aparte de la experiencia que estoy ganando laboralmente, también estudio con libros y videotutoriales desde casa, opto a todos los cursos subvencionados que me dejan y voy a volver a retomar la carrera (y ya no paro hasta terminarla).

 Todo esto que he contado es lo que he hecho estos dos últimos años. También he estado investigando ofertas de trabajo de otros campos de la informática donde no estoy versado, como las bases de datos, y suelen estar muy bien pagadas. El SOC (Inem de Cataluña) trabaja con academias como PUE y tienes cursos de MySQL y Oracle. Personalmente, si quieres trabajo y bien pagado, te recomiendo estos. Si tienes que elegir uno, escoge Oracle sin dudarlo. También compagínalo con videotutoriales y libros y, sobretodo, haz virguerías en casa y súbelo todo a un blog y que éste se vea en ofertas de trabajo, coméntalo en entrevistas, etc. (esto vale para todo, no sólo bases de datos).

 Y hasta aquí puedo contar. Lógicamente, encontrarás mucho baches: jefes cabrones, consultoras que tratan al trabajador como carne, peleas constantes y visitas a inspección de trabajo, puestos de trabajo sin documentación o donde algo fácil se hace imposible, etc. Es lo que hay. Ten paciencia, ponle ganas, sonríe e intenta mejorar el sistema todo lo que puedas (no sólo por si lo vuelves a necesitar, sino para los que vienen detrás).

 ¡Ah! Una cosa importante. Cuando vas a las puertas abiertas de una universidad (pondré como ejemplo ingeniería informática) te venden la moto de que las empresas vienen a buscar ingenieros al tercer año, que hay una demanda altísima, que pagan sueldazos, etc.). Puede que esto pasara hace 15 años, pero con las consultoras por medio se ha ido todo al carajo. No digo que no curséis la carrera, sino que no os dejéis engañar. Tampoco digo que no vayáis a triunfar XD. El caso es que las universidad son de pago y a esta gente le interesa que te quedes ahí.

ACTUALIZACIÓN: Dejo aquí un listado de webs referentes a cursos, instituos, universidades, etc.

-Guía cursos SOC (se renueva anualmente):https://www.tucursogratis.net/cursos-soc/-Academias de pago:https://www.pue.es/
https://cipsa.net/
https://nanfor.com/
https://knowtech.es/website_v2/
https://www.aipbarcelona.com/
https://www.espai.es/
http://elearning.aeball.net/catalogo-cursos/
http://www.kincurs.com/-Academias de semi-subvencionadas:https://www.idfo.com/
https://fundacionesplai.org/-Academias subvencionadas:https://consorci.pue.es/
https://treball.barcelonactiva.cat/porta22/cat/assetsocupacio/interessos/pagina19212/foap-certificats-de-professionalitat.do
https://serveiocupacio.gencat.cat/es/soc/centres-dinnovacio-i-formacio-ocupacional-cifo/barcelona-la-violeta/
http://www.nhbarcelona.com/index.htm
https://landing.stucom.com/ca/formacio-ocupacional-barcelona/
https://www.fomentformacio.com/
http://on.bit.es/desenvolupament-aplicacions-web/
http://on.bit.es/frontend-developer/
https://www.fundaciocim.org/ca/formacio/ocupacional
https://www.cursosfemxa.es/
https://fundaciopacopuerto.cat/cursos/especialitats/-Institutos a distancia:https://ioc.xtec.cat/educacio/
https://www.ilerna.es/es/fp-a-distancia
https://www.fp-informatica.com/-Universidades a distancia:https://www.uned.es/universidad/inicio.html
https://www.uoc.edu/portal/es/index.html
https://www.unir.net/-Cursos online:https://iedra.uned.es/
https://www.coursera.org/uab
https://www.aulafacil.com/
https://www.microsoft.com/es-es/learning/
https://www.microsoft.com/es-es/learning/visual-studio-training.aspx
https://www.cursosenhd.com/
https://www.chollometro.com/ofertas/cursos-de-c-y-desarrollo-de-videojuegos-gratis-en-udemy-4919
https://eu.udacity.com/
https://www.coursera.org/
https://www.edx.org/
https://miriadax.net/-Cursos online de pago:https://openwebinars.net/
https://www.udemy.com/
https://escuela.it/
https://www.pixelpro.es/
https://frogames.es/
https://www.linkedin.com/learning/me?trk=v2b_redirect_learning
https://videotutoriales.com/
https://platzi.com/
https://megacursos.com/