Java – Instituto FOC | Informática ONLINE | FP Informática ONLINE

Creación de interfaces gráficas con JavaFX FXML: Inyección de componentes gráficos en la vista principal

[youtube https://youtu.be/sxBqInX1XiA&w=560&h=315]

 

Al finalizar esta sesión serás capaz de:

  • Crear tus propios componentes gráficos e incluirlos en la interfaz principal.
  • Comprender el concepto de componente gráfico.

Contenidos de la sesión:

  • Para poder conseguir los objetivos previstos en la sesión trataremos los siguientes contenidos con un enfoque práctico.
    • La aplicación JavaFX Scene Builder.
    • La etiqueta fx:include.

Creación de interfaces gráficas con JavaFX FXML: Modelo Vista-Controlador (MVC)

[youtube https://youtu.be/uwHxL1–bnY&w=560&h=315]

 

Al finalizar esta sesión serás capaz de:

  • Crear una sencilla interfaz con la tecnología javaFX FXML.
  • Comprender la arquitectura de programación Modelo Vista-Controlador (MVC).
  • Utilizar la herramienta JavaFX Scene Builder.

Contenidos de la sesión:

  • Para poder conseguir los objetivos previstos en la sesión trataremos los siguientes contenidos con un enfoque práctico.
    • Librería javaFX FXML.
    • Modelo Vista-Controlador (MVC).
    • Diseño de interfaces con la aplicación JavaFX Scene Builder.

El lenguaje JAVA cumple 25 años y sigue liderando la demanda de desarrolladores

Java nació en 1995, de la mano de la ya desaparecida Sun Microsystems. Una de las principales razones de su longevidad y a la vez de que sea tan actual, es que permite escribir un programa una sola vez y ejecutarlo en cualquier dispositivo. JAVA interactúa con el hardware del dispositivo donde se ejecuta a través de JVM (Java Virtual Machine).

Java-Logo

Cada vez más las aplicaciones de JAVA se están desarrollando para la nube. Esto es una tendencia general en todas las aplicaciones, independientemente del lenguaje en el que están desarrolladas.  Las aplicaciones cada vez más se desarrollan para la nube, por lo que es una gran ventaja de JAVA y le hace que lidere el ranking en la demanda de desarrolladores.

Además de esta gran ventaja de JAVA, tenemos otras que destacar como:

  1. Es multiplataforma
  2. Con Java generamos código robusto.
  3. Está orientado a objetos.
  4. Hay gran cantidad de código Open Source.
  5. Es fácil de aprender.

En los ciclos de Grado Superior en Desarrollo de Aplicaciones Multiplataforma y Grado Superior en Desarrollo de Aplicaciones Web, nuestro alumnado estudia en profundidad este lenguaje y se le ofrecen los cursos Cimientos de Java y Fundamentos de Java.

¿Cómo trabajar en ciberseguridad?

Actualmente la ciberseguridad es fundamental para todas las empresas, de hecho, el perfil de especialista en este ámbito ha aumentado muy significativamente.

Según los datos aportados en el Informe 2017 Global Information Security Workforce Study (elaborado por ISC), en 2022, faltarán más de 350.000 especialistas en ciberseguridad en toda Europa. Previo a ello, en 2020, las vacantes llegarán a los 1,5 millones.

A día de hoy, la ciberseguridad está considerada una profesión emergente debido a las necesidades de las empresas. El número de organizaciones que adoptan programas y estrategias específicas ha aumentado. Por este motivo, la contratación de personal con este perfil se ve beneficiada.

El problema radica en la falta de profesionales cualificados en este ámbito. Esta es la razón por la que muchas personas encuentran una oportunidad laboral o una motivación para formarse en ciberseguridad.

En relación a los salarios, el especialista en ciberseguridad, supera con creces el salario medio de los salarios del sector Informático y de Telecomunicaciones.

Para poder cumplir con los requisitos que se exigen en un puesto de este tipo, es necesario estar en posesión de Certificaciones TIC. Entre las más importantes se encuentran las siguientes: CCNP, CCSA, CCNA, F5 LTM, Palo Alto CNSE, SANS SEC-401, CISSP y CEH.

Además de ello debes tener conocimientos en lenguajes de programación como Java, C++…

Es de suma importancia la actualización en la formación y se valora positivamente que el candidato tenga algún Máster relacionado o formación complementaria a su titulación.

En lo relacionado con los idiomas, el inglés es esencial.

El Programador Java con conocimientos en Scrum, uno de los perfiles más demandados de hoy.

En 2018 las empresas comenzaron a demandar nuevos perfiles profesionales para desarrollar su proceso de Transformación Digital. Se busca tener una mayor proximidad con el usuario final y con el cliente y por este motivo crece la demanda en el sector de la analítica.

El ránking de los 10 perfiles IT más demandados lo encabezan los especialistas en Java, un lenguaje de programación muy polivalente, consolidado, estable y que permite la convivencia con otras tecnologías Frontend más actuales.

Una de las competencias que se exigen en los procesos de selección es la de trabajar con metodologías ágiles como Scrum. Será el estándar de la industria de la ingeniería de software en un futuro próximo.

Los profesionales con este perfil se integran en un grupo de trabajo ágil y tendrán que colaborar con otros perfiles dentro de la empresa que no poseen conocimiento de programación pero cuentan con una visión amplia del proyecto en el que trabajan.

Informes como el realizado por la Digital Talent Agency (DTA) sobre Perfiles IT más demandados en 2018: prospecciones del mercado tecnológico según los expertos en selección, avalan estos datos.

Taller técnico: Instalación e introducción a Greenfoot

[youtube https://www.youtube.com/watch?v=0htCuJPhSVU&w=560&h=315]

Haz clic aqui para descargar el código fuente de esta aplicación.

Al finalizar esta sesión serás capaz de:

  • Instalar JAVA
  • Instalar Greenfoot
  • Añadir objetos a interactuar con ellos

 

Contenidos de la sesión:

  • Para poder conseguir los objetivos previstos en la sesión trataremos los siguientes contenidos con un enfoque práctico
    • Instalación de JAVA
    • Instalación de Greenfoot
    • Explicación del entorno Greenfoot
    • Creación de un pequeño escenario en Greenfoot

Certifícate como Asociado Junior Certificado en Java Foundations con Oracle.

¿Qué es la Certificación Java Foundations de Oracle?

Certifícate profesionalmente con Oracle y tendrás el aval con el que podrás demostrar tus conocimientos y habilidades en Java con una distinción que cuenta con reconocimiento por parte de las industrias que emplean a profesionales en TI.

La obtención del título de Asociado Junior Certificado en Java Foundations hará que te diferencies del resto de personas que tienen tu misma titulación.

Dirigido a…

Este curso va dirigido a estudiantes con poca experiencia en programación. Se introduce a los estudiantes a conceptos orientados a objetos, terminología y sintaxis, así como a los pasos necesarios para crear programas básicos en Java a través de actividades prácticas e interesantes. Los estudiantes aprenderán los conceptos de programación en Java, diseñarán aplicaciones orientadas a objetos con Java y crearán programas en Java a través de actividades prácticas e interesantes.

¿Para qué sirve?

Las certificaciones a nivel de Asociado Junior de Oracle son de utilidad para aquellas personas que acaban de terminar sus estudios de informática y van a buscar su primer empleo en el sector.

También te servirá como preparación de otras certificaciones más avanzadas como Asociado Certificado de Oracle y, más adelante, a nivel de Profesional Certificado de Oracle.

CERTIFICACIONES ORACLE

¿Qué es necesario?

Para obtenerla deberás hacer el curso de preparación con el cual obtendrás un código válido para poder completar y superar el examen correspondiente.

¿Tengo acceso a la preparación de estas certificaciones si me matriculo en Instituto FOC?

Sí.

Nuestros alumnos de los ciclos de Desarrollo de Aplicaciones Multiplataforma y Desarrollo de Aplicaciones Web tienen acceso al curso de preparación de esta certificación, de manera gratuita*, a través del módulo de Programación que se imparte en el primer curso.

*La tasa de examen no se incluye.

Examen

Tabla examen oracle

Temas lección por lección

Introducción

  • Acerca del curso
  • Una breve historia
  • Configuración de Java

Desarrollo de software Java

  • Proceso de desarrollo de software
  • ¿Qué hace mi programa?
  • Introducción a los conceptos de programación orientada a objetos

Tipos de dato Java

  • ¿Qué es una variable?
  • Datos numéricos
  • Datos textuales
  • Conversión entre tipos de dato
  • Entrada del teclado

Clases de biblioteca y métodos Java

  • ¿Qué es un método?
  • Declaración import y paquetes
  • Clase String
  • Clase Random
  • Clase Math

Sentencias de decisión

  • Expresiones booleanas y construcciones if/else
  • Descripción de ejecución condicional
  • Sentencia switch

Construcciones de bucle

  • Bucles for
  • Bucles while y do-while
  • Uso de sentencias break y continue

Creación de clases

  • Creación de una clase
  • Instanciación de objetos
  • Constructores
  • Sobrecarga de métodos
  • Interacción de objeto y encapsulación
  • Variables y métodos estáticos

Matrices y excepciones

  • Matrices unidimensionales
  • ArrayLists
  • Manejo de excepciones
  • Conceptos y técnicas de depuración

JavaFX

  • Introducción a Java FX
  • Colores y formas
  • Gráficos, audio y MouseEvents

Proyecto final

  • Desarrollo de una animación, aplicación o juego basado en Java

¿Conoces los fraudes más comunes en Internet?

Desde el nacimiento de internet es indudable la gran cantidad de oportunidades y ventajas que nos ha proporcionado, pero no todo son ventajas y oportunidades, en ocasiones podemos vernos con situaciones de fraude no deseadas.

El supuesto anonimato que ofrece internet, pero sobre todo la capacidad de operar desde cualquier lugar del mundo, hace que se convierta en una oportunidad ideal para la realización de fraudes de todo tipo.

5

Los fraudes más comunes son los siguientes:

  • En las compras ONLINE.
    • Productos falsificados.
    • Cargan importes superiores a los indicados en el producto.
    • Plazos de envío superiores a los indicados.
    • No tienen un teléfono de reclamaciones, solo formularios de contacto de los que nunca tienes respuesta.
  • El Phishing o robo de datos personales, credenciales de acceso a servicios online o los más buscados, información bancaria. Se basa en enviar mails suplantando a la entidad de la cual quieren robar tus credenciales, con la finalidad de que a través de este correo, siguiendo un enlace adjunto, te dirijas a una web que suplanta a la original y en ella introduzcas tus credenciales.
  • Falsos prestamos, a través de las redes sociales estos delincuentes ofrecen préstamos a muy bajo interés. Aprovechándose de la desesperación de la gente, con el engaño de un tipo de interés tan bajo, reclaman dinero por adelantado, para gastos de gestión y una vez recibido el dinero desaparecen.
  • Encontrar pareja por internet. Es este caso lo que más se usa la suplantación de identidad, creando perfiles falsos en redes sociales, con fotos y videos de carácter sexual o comprometedor. Una vez conseguida la confianza de la víctima solicitan cantidades de dinero por cualquier motivo.
  • Falsos alquileres o ventas de vehículos. Consiste en ofrecer alquileres de inmuebles o coches muy baratos. En ambos casos, el engaño suele ser similar: propietarios que se encuentran en el extranjero, y que no pueden salir del país en el que residen por el alto coste que supondría venir a realizar la operación de venta o alquiler. Además alegan que ya no volverán y por lo tanto no tienen interés en seguir residiendo o haciendo uso del bien en cuestión, y que por ese motivo lo alquilan o venden. El resultado siempre es el mismo, no hay inmueble que alquilar ni vehículo que vender.

Con esta información solo queremos dar a conocer estos fraudes a los usuarios de Internet  y que puedan eludirlos y a ser posible denunciarlos.

Los alumnos del certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, y el IFCD0110 Confección y publicación de páginas web, son capaces de detectar algunos de estos fraudes y eludirlos.

Los desarrolladores siguen prefiriendo Linux.

Aunque Microsoft ha dado un gran salto en el intento de agradar a los desarrolladores, con el lanzamiento de Windows 10.

Otros sistemas de Microsoft no gustaron mucho a los desarrolladores, pero Windows 10 con la incorporación de subsistemas Linux, empieza a tener cada vez más seguidores.

 

Pero Linux sigue teniendo mucho que decir en cuanto a su uso como plataforma de desarrollo de software y mantiene una serie de atractivos que le hacen retener a los desarrolladores.

Para realizar una comparación justa en igualdad de condiciones, necesitamos de la colaboración de los grandes del software que se niegan a portar o editar su software para Linux.

En cualquier caso la plataforma del pingüino mantiene una serie de ventajas muy visibles que le permiten mantener gran número de seguidores entre los desarrolladores de software.

Bajo mi punto de vista las ventajas de Linux son:

  • Es libre y gratuito, lo que le aporta flexibilidad y coste 0,00€ en licencias.
  • Recursos, permite la optimización del sistema para la compilación o para las herramientas de desarrollo que uses.
  • Es sencillo, aunque tiene fama de complejo, no es complicado de usar y gestionar.
  • Tiene soporte para múltiples lenguajes de programación como C, C++,PHP, HTML, CSS, JavaScript, Perl, Java, Python, etc.

Pero seguro que los desarrolladores que siguen en Linux tienen muchas más razones para trabajar con Linux, en el desarrollo de sus proyectos.

Entre por los alumnos del certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, y el IFCD0110 Confección y publicación de páginas web, tenemos partidarios de uno y otro sistema.

¿Cómo medir la velocidad de carga de mi página web?

Para conseguir una buena experiencia entre los usuarios de nuestra página web, tenemos que conseguir que la carga de la página sea lo más rápida posible y conseguir que el tiempo de respuesta sea adecuado. Estas técnicas para la mejora de la experiencia de los usuarios web, son estudiadas por los alumnos del certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, y el IFCD0110 Confección y publicación de páginas web.

Para saber qué velocidad de carga tiene nuestra web y su tiempo de respuesta podemos usar dos herramientas gratuitas.

  • Para medir la velocidad, la herramienta de Google denominada PageSpeeds Insights.
  • Para medir el tiempo de carga web, utilizaremos Pingdom.

La herramienta PageSpeeds Insights analiza la página web que le indiquemos, ofreciendo todo tipo de destalles con respecto a las mejoras necesarias para aumentar la velocidad de la página web, para ello mide el rendimiento de las páginas para dispositivos móviles y para ordenadores, puntuando de 0 a 100. De forma que  si una página tiene 90 puntos es que está muy bien optimizada su velocidad. En el ejemplo de abajo vemos justamente lo contrario, solo 38 puntos de 100.

PageSpeed01

 

Para medir el tiempo de carga usaremos Pingdom. Es muy sencillo de usar, solo tenemos que indicar la web a chequear y nos ofrece los resultados.

pingdown01

El resumen de resultados es el siguiente, en el que te indica el tiempo de carga (Load Time), que como podemos ver es muy alto, ya que Google recomienda 1,5 S.

pingdown02

Es muy importante tener presente que el tiempo de carga y la velocidad de respuesta de una página web, pueden ser factores determinantes para el éxito o el fracaso de una página web.

 

Tipos de hojas de estilos que podemos aplicar en nuestra página web.

Las hojas de estilos CSS en inglés Cascading Style Sheets (en español Hojas de Estilo en Cascada), permiten el control total sobre la presentación de las páginas web.

css

Con las  hojas de estilos CSS, puede colocar y definir con precisión la apariencia de los elementos de una página web.

Una hoja de estilos CSS puede ser:

  • Externa
  • Interna
  • En línea

El orden de prioridad de las hojas de estilos es la siguiente:

  1. La hoja de estilos en línea frente a la externa e interna
  2. La hojas de estilos interna frente a la externa

Además debemos tener presente que una página web puede usar uno o varios de estos tipos de CSS a la vez.

Para que sirven los distintos tipos de hojas de estilos.

  • Las CSS externas sirven para aplicar de forma coherente los mismos estilos a un proyecto web. De esta forma una modificación en un estilo se aplica a todas las web de un proyecto, de forma automática.
  • Las CSS internas o también conocidas como incrustadas, sirven para aplicar estilos a una sola web y también para modificar los estilos de heredados de una CSS externa. Las CSS internas se incluyen entre las etiquetas <head> de las páginas web.
  • Las CSS en línea sirven para aplicar las propiedades de las hojas de estilos en cascada a elementos individuales de una página sin tener que reutilizar el estilo. Los estilos en línea se definen dentro de las etiquetas iniciales de los elementos HTML de páginas web.

Por ejemplo:

<div id=»reloj» style=»font-family: ‘DS-Digital’; width: 450px; background-color: black;font-size:100px;color: green ; text-align: center «></div>

En el artículo de la semana pasada, usamos Javascript para aplicar estilos al reloj digital propuesto, mediante estilos en línea. Estos mismos estilos los podemos aplicar mediante:

  • CSS interna, de la siguiente manera:
  1. <script type=»text/javascript»>
  2. function startTime(){
  3. today=new Date();
  4. h=today.getHours();
  5. m=today.getMinutes();
  6. s=today.getSeconds();
  7. m=checkTime(m);
  8. s=checkTime(s);
  9. document.getElementById(‘reloj’).innerHTML=h+»:»+m+»:»+s;
  10. t=setTimeout(‘startTime()’,500);}
  11. function checkTime(i)
  12. {if (i<10) {i=»0″ + i;}return i;}
  13. window.onload=function(){startTime();}
  14. </script>
  15. <div id=»reloj» ></div>
  16. <head>
  17. <style type=»text/css»>
  18. #reloj { font-family: ‘DS-Digital’;
  19.         width: 450px;
  20.                                background-color: black;
  21.                                font-size:100px;
  22.                                color: green ;
  23.                                text-align: center;
  24.                                }
  25.      </style>
  26. </head>
  • CSS externa, de la siguiente manera:

Contenido fichero externo con los estilos CSS. Lo llamaremos estilos_reloj.css.

  1. #reloj {
  2.                                font-family: ‘DS-Digital’;
  3.         width: 450px;
  4.                                background-color: black;
  5.                                font-size:100px;
  6.                                color: green ;
  7.                                text-align: center;
  8. }

Contenido fichero con el código principal:

  1. <script type=»text/javascript»>
  2. function startTime(){
  3. today=new Date();
  4. h=today.getHours();
  5. m=today.getMinutes();
  6. s=today.getSeconds();
  7. m=checkTime(m);
  8. s=checkTime(s);
  9. document.getElementById(‘reloj’).innerHTML=h+»:»+m+»:»+s;
  10. t=setTimeout(‘startTime()’,500);}
  11. function checkTime(i)
  12. {if (i<10) {i=»0″ + i;}return i;}
  13. window.onload=function(){startTime();}
  14. </script>
  15. <div id=»reloj» ></div>
  16. <head>
  17. <meta http-equiv=»Content-Type» content=»text/html; charset=iso-8859-1″ />
  18. <title>Ejemplo de estilos CSS en un archivo externo</title>
  19. <link rel=»stylesheet» type=»text/css» href=»estilos_reloj.css» media=»screen» />
  20. </head>

Animo a lector a desarrollar sus estilos para este reloj digital y publicar el código. Es un ejercicio muy gratificante.

Todos nuestros alumnos  que han cursado el certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, y el IFCD0110 Confección y publicación de páginas web, conocen bien todos estos aspectos de las CSS y saben como aplicarlas según los requerimientos de la web que estén programando.

 

Como mostrar la fecha y hora actual en nuestra página web usando Javascripts.

Todos nuestros alumnos  que han cursado el certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web,  conocen que Javascripts es un lenguaje que se ejecuta en el lado del cliente. Permitiendo esto una serie de funcionalidades que hacen que la página cambie su contenido sin necesidad de llamadas al servidor, es decir, cambia de aspecto en el navegador de nuestro ordenador. Una de estas funcionalidad es la de mostrar el fecha y hora actual en nuestra web.

Hay muchos programas de edición web y CMS que permiten añadir esta funcionalidad a nuestras webs, pero para los que buscamos profundizar un poco más, nos gusta saber como hacerlo manualmente, y así aportar nuestro toque personal. Para ello también podemos usar CSS.

Las funciones más usadas para esta funcionalidad son:

Función Descripción
getDate() Devuelve el día del mes (entre el 1 y el 31)
getDay() Devuelve el día de la semana (entre el 0 y el 6)
getMonth() Devuelve el mes (entre el 0 y el 11)
getFullYear() Devuelve el año (en formato de 4 dígitos)
getHours() Devuelve la hora (entre el 0 y el 24)
getMinutes() Devuelve los minutos (desde 0 a 59)
getSeconds() Devuelve los segundos (desde 0 a 59)
getTime() Devuelve el número de milisegundos desde el 01/ Enero /1970
getTimezoneOffset() Devuelve la diferencia de horario en minutos entre la hora local y GMT (Meridiano de Greenwich)
getUTCHours() Devuelve la hora de acuerdo a UTC (Tiempo Universal Coordinado)

Para usar estas funciones, es tan sencillo como crear una variable con new Date() para definir la fecha y hora actual y luego pintar en pantalla los datos que deseemos. En el ejemplo siguiente, pintamos el día del mes en el que estamos.

<script type=»text/javascript»>

var d = new Date();

document.write(d.getDate());

</script>

Si queremos que nos diga la hora, podemos escribir el siguiente código:

<script type=»text/javascript»>

var d = new Date();

document.write(d.getHours());

</script>

Para conseguir que nos de toda la información sobre le fecha y hora, podemos encadenar las funciones de fecha y hora, mediante el siguiente código:

<script type=»text/javascript»>

var d = new Date();

document.write(‘Fecha: ‘+d.getDate(),'<br>Dia de la semana: ‘+d.getDay(),'<br>Mes (0 al 11): ‘+d.getMonth(),'<br>Año:’+d.getFullYear(),'<br>Hora:’+d.getHours(),'<br>HoraUTC: ‘+d.getUTCHours(),'<br>Minutos: ‘+d.getMinutes(),'<br>Segundos: ‘+d.getSeconds());

</script>

Obteniendo un resultado en pantalla como el siguiente:

Fecha: 18

Día de la semana: 5

Mes (0 al 11): 7

Año: 2017

Hora: 9

Hora UTC: 7

Minutos: 15

Segundos: 51

Pero esto hay que adaptarlo a nuestro formato de fecha, de forma que sea el usado habitualmente en nuestro país. Por ejemplo el siguiente código, nos muestra la fecha en formato día/mes/año. Ejemplo 22/08/2017.

<div style=»float:left;»>

<script type=»text/javascript»>

var  today = new Date();

var m = today.getMonth() + 1;

var mes = (m < 10) ? ‘0’ + m : m;

document.write(‘Fecha: ‘+today.getDate(),’/’ +mes,’/’+today.getFullYear());

</script></div>

En muchas publicaciones encontraras ejemplos de códigos para pintar de forma correcta la fecha y hora en tus webs. Aconsejamos al lector que busque y pruebe los ejemplos de código propuestos.

En el siguiente ejemplo tienes el código básico para poner en tu web un reloj digital. A este código le puedes aplicar tantos formatos que como desees para personalizarlo.

 <script type=»text/javascript»>

function startTime(){

today=new Date();

h=today.getHours();

m=today.getMinutes();

s=today.getSeconds();

m=checkTime(m);

s=checkTime(s);

document.getElementById(‘reloj’).innerHTML=h+»:»+m+»:»+s;

t=setTimeout(‘startTime()’,500);}

function checkTime(i)

{if (i<10) {i=»0″ + i;}return i;}

window.onload=function(){startTime();}

</script>

<div id=»reloj» style=»font-family: ‘DS-Digital’; width: 450px; background-color: black;font-size:100px;color: green ; text-align: center «></div>

¿Podrás aplicar estilos a este reloj digital hasta conseguir el siguiente aspecto?

Reloj-Digital

Una vez conseguida esta presentación, te animo a publicar el código, es un ejercicio muy gratificante.

 

¿Qué son las supercomputadoras cuánticas?

Las computadoras cuánticas, están basadas en la mecánica cuántica y no tanto en la electrónica y por tanto tienen el potencial de ser más poderosas que las tradicionales, basadas en el sistema binario, es decir, unos y ceros que representan estados como «on/off» y «verdadero/falso».

BINARIO-TEXTO-1

Las computadoras cuánticas, contienen qubits, que pueden ser tanto 0 como 1 al mismo tiempo, un estado conocido como superposición.

Las partículas subatómicas (los electrones, fotones e iones) pueden ser manipulados para que se comporten de este modo tan misterioso. Este comportamiento tan excepcional, creen que puede hacer, que un computador cuántico, llegue teóricamente, a resolver tres millones de cálculos por segundo.

Desgraciadamente, hoy en día esta tecnología no está totalmente desarrolla y requiere de ciertas condiciones especiales para su funcionamiento. Una de ellas es que necesita que el procesador esté justamente por encima del cero absoluto (unos -273.15 en la escala de Celsius), además debe estar alejado de cualquier interferencia electromagnética.

Sin embargo, un sector tan pudiente como el de las finanzas está interesado en este tipo de computación, por la capacidad de calcular miles de escenario posibles, estudiarlos y elegir aquellos más viables a largo plazo. Pero también este mismo sector se plantea que esta capacidad del cálculo tan impresionante, será capaces de romper los códigos de encriptación de las transacciones financieras y las encriptaciones de cualquier otro tipo de sistema de seguridad implantado en los sistemas informáticos anteriores, a las supercomputadoras cuánticas.

Es decir, esta capacidad de cálculo que puede llegar a tener las supercomputadoras cuánticas  romperá la seguridad informática, hasta la fecha implantada, comprometiendo gravemente, toda la seguridad de los sistemas financieros, gobiernos, ejércitos, etc.

Robo de password

Por lo que cabe concluir que necesitamos, “una fórmula matemática que cree un lenguaje encriptado imposible de quebrar». Según, Marco López de Prado, ejecutivo de la firma Guggenheim Partners.

Teniendo en cuenta que la capacidad de procesamiento de cada generación cuántica, es cada vez mayor, el tiempo apremia para conseguir esa fórmula matemática. De lo contrario, la seguridad de los sistemas informáticos, anteriores a la computación cuántica, se puede ver drásticamente comprometida.

Todos estos conceptos le son muy familiares a los alumnos del certificado de profesionalidad IFCT0210 Operación de Sistemas Informáticos ya que forma parte de su formación en ordenadores tradicionales.

 

Linux en Windows. Quién lo hubiera dicho hace una década!!!!.

Aunque en noviembre del 2016, ya anunciamos en este blog que  Microsoft era nuevo miembro de platino en “Linux Fundation”. Si !!! ¿Increíble pero cierto?

Efectivamente, Microsoft  tiene un lugar privilegiado junto a  Cisco, Fujitsu, HPE, Huawei, IBM, Intel o Samsung en la fundación del pingüino. Es decir,  Microsoft  entra a las claras y sin tapujos en la casa madre de Linux.

Linux-Amor-Windows

Para muchos ha supuesto una verdadera sorpresa. ¿Los dos eternos rivales, ahora colaboran juntos? Pues sí, en especial desde que Satya Nadella está al frente de Microsoft.

Ahora Windows y Linux ya trabajan juntos. Desde esta semana es posible descargar la distribución Ubuntu desde la tienda de aplicaciones de Microsoft en ordenadores  equipados con Windows 10.

No es una distribución completa de Ubuntu, pero atención, se anuncia que habrá nuevas posibilidades de descarga de SUSE y Fedora.

Con esta nueva estrategia, Windows pretende consolidarse como la plataforma mar versátil, para desarrolladores y así disuadir a los usuarios más avanzados, en la instalación de un segundo Sistema Operativo.

Para todos los alumnos de los certificados de profesionalidad que disponemos, tanto los de desarrollo, como los de Sistemas, no supone un gran cambio; ya que suelen trabajar con ambos sistemas operativos.

Lo dicho,  QUIEN LO HUBIERA DICHO HACE UNA DÉCADA, QUE NOS LO HAGA SABER. Le felicitaremos, por ser el mejor visionario.

¿Cumple tu página web con las normas básicas de accesibilidad?

El concepto de accesibilidad es muy conocido por nuestros alumnos del certificado de profesionalidad IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, ya que forma parte del temario del curso.

Este concepto indica la facilidad con la que algo puede ser accedido por todas las personas, especialmente por aquellas que poseen algún tipo de discapacidad. Busca la igualdad de acceso a la web para todos los usuarios.1

Los usuarios  con discapacidad tienen los siguientes problemas para acceder a la web:

  • Acceso a los contenidos web: problemas en visión, audición y/o movilidad.
  • Manipulación de periféricos: dificultades en el uso del teclado y/o ratón.
  • Interacción con los interfaces de usuario: dificultades en la navegación y/o comprensión.

Pero hay otros problemas de accesibilidad que no debemos olvidar y que son provocados por el idioma, la edad, conocimientos previos, conectividad, etc..

El máximo organismo dentro de la jerarquía de internet que se encarga de promover la accesibilidad es el World Wide Web Consortium (W3C), en especial su grupo de trabajo Iniciativa de Accesibilidad en la Web (WAI).

La accesibilidad web la podemos definir como la “posibilidad de que un sitio o servicio web pueda ser visitado y utilizado de forma satisfactoria por el mayor número posible de personas, independientemente de las limitaciones personales que tengan o aquellas derivadas del entorno que las rodea”.

El W3C, dispone de esta herramienta https://validator.w3.org/ en que todos los programadores web deben chequear el nivel de accesibilidad de las páginas desarrolladas.

El objetivo a cumplir es que este validador no reporte ni errores ni warning en la accesibilidad de nuestras web, aunque es por todos conocido, que es muy difícil.

Abajo adjunto el resultado de chequear la web de la Universidad de Granada (www.urg.es). Web con de gran importancia y visitada por un amplio abanico de usuarios a diario y que como podéis comprobar no está exenta de problemas de accesibilidad.

validator-w3-ugr

Beneficios que tiene para nuestra web al cumplir con las normas de accesibilidad:

  1. Aumentar el número de usuarios visitantes del sitio web, al posibilitar que los usuarios con discapacidad, de edad avanzada, baja alfabetización, etc..
  2. Disminución de costes y mantenimiento. Una página web accesible también permite la reutilización del contenido, al ser independiente del dispositivo de acceso.
  3. Reduce tiempos de carga de las páginas web y del servidor
  4. Consigue mejorar los resultados en los motores de búsqueda.

En certificado profesionalidad  IFCD0210-Desarrollo de Aplicaciones con Tecnologías Web, se estudia con detalle todos los aspectos de la accesibilidad web, permitiendo que los alumnos sean capaces de desarrollar webs accesibles.

Ejemplo de script para proteger el código fuente de nuestra página web

codigo-pc-llave

Con un sencillo Script podemos proteger nuestro código web y evitar que aquellos que andan con falta de inspiración o con pocas  ganas de “currárselo”, puedan robarnos nuestro código web.

Después de probar muchos métodos puedo deciros que ninguno es seguro, la mayoría se limitan a bloquear el botón derecho del ratón y del teclado. Uno de ellos es el siguiente:

<body oncontextmenu=»return false» onkeydown=»return false»>

Como puedes ver es sencillo y a la vez bastante eficaz. Solo tienes que poner estos atributos en el “body” y el botón derecho del ratón y el teclado quedarán inutilizados.

Evidentemente, este sencillo script solo evita a los fisgones y programadores poco expertos, pero es un buen punto de comienzo.

Este tipo de técnicas de programación web, las estudian nuestros alumnos del certificado de profesionalidad IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web y están muy familiarizados con ellas.

 

 

 

¿Cual es el lenguaje de programación mas popular?

El pasado mes de septiembre desde la página de TIOBE nos mostraron un informe con los lenguajes de programación mas populares.

El resultado que obtuvieron fue el siguiente:

toplanguageprogramming

Podemos observar que el lenguaje mas popular sigue siendo el lenguaje de programación C. Un lenguaje de programación estructurado y no orientado a objetos.

Una de los lenguajes que ha cogido mas protagonismo es el Objective-C. Este lenguaje de programación es el utilizado para el desarrollo de aplicaciones para Mac, Ipad e Iphone. Las altas ventas de IPhone e IPad han echo que este lenguaje halla ganado mas popularidad.

En el articulo completo nos sacan mas estadisticas sobre la evolución de la popularidad de algunos lenguajes y otros informes que nos indican la evolución y uso de los distintos tipos de lenguajes.

El mal uso de los métodos estáticos

Una de las decisiones mas importantes a la hora de realizar un desarrollo es cuando decidir si un método es estático o no (en java o en C#).

Este concepto puede ser confuso para los desarrolladores.

Por convención para establecer nuestro punto de partida en nuestros programas el método main se declara como estático. Tiene lógica por que este es el punto donde nosotros vamos a indicar la secuencia de pasos que tiene que ejecutarse para solucionar nuestro problema.

También usamos los método estáticos para realizar conversión de valores, crear nuevos objetos, …

Uno de los principales errores que se comete a la hora de crear métodos estáticos es cuando se desconoce los fundamentos de POO y abusamos creando todos los métodos como estáticos.

Otro de los principales errores que se cometen en la declaración de elementos estáticos, es introducir métodos en nuestras clases como estáticos cuando en realidad no los son. Como por ejemplo para una validación de un campo interno de nuestra clase.

Por lo tanto a la hora de declarar un método estático debemos seguir las siguientes recomendaciones:

  1. Si utilizamos en nuestras clases patrones del tipo Singleton o Factory para su construcción.
  2. Cuando declaramos métodos de conversión de valores.
  3. Cuando el método que estamos declarando devuelve un valor a través de los argumentos indicados.

Estas son algunas recomendaciones para utilizar mejor los métodos estáticos. Aprovecho para que a través de vuestros comentarios indiquéis alguna otra sugerencia.

 

 

 

Virtualización On Line

Muchos de los problemas que tienen los desarrolladores es el hecho de trabajar con distintos entornos. Esto muchas veces nos obliga a tener una maquina con multitud de software instalados provocando la incompatibilidad de algunos programas.

La solución a este problema pasaba por utilizar maquinas virtuales según el tipo de desarrollo pero esto supone el tener espacio en nuestros discos duros para poder albergar las distintos entornos de desarrollo.

Si hablamos de desarrollo web y nos centramos en el diseño web tenemos el problema del comportamiento, a nivel de diseño principalmente, según el navegador que utilicemos.

Para solucionar este problema y sacar provecho a la nube a aparecido Spoon.net un sitio web donde nos ponen a disposición la utilización de distintas herramientas a través de nuestro navegador.

Tenemos una cuenta gratuita donde disponemos de los siguientes programas gratuitos para utilizarlos clasificados por categoría:

Productividad:

Herramientas Productividad

Utilidades:

Utilidades Spoon

Ademas de herramientas como clientes de correo electrónico, herramientas de edición de sonido y grabación de DVD’s, aplicaciones de ocio  y un espacio de almacenamiento de 2GB.

Esto es lo que disponemos con nuestra cuenta gratuita. Lo mas interesante esta primera opción es la posibilidad de poder utilizar distintos tipos de navegadores web para probar nuestros diseño webs en distintos navegadores y ver el resultado.

Para un uso profesional dispones de los siguientes tipos de  cuentas:

Personal: De esta cuenta lo que destacamos principalmente es el espacio disponible del que disponemos que se amplia a unos de 2GB a 20GB

Pro: Esta cuenta es la mas recomendada ya que incorpora el Spoon Studio con diversas herramientas para realizar nuestros propios desarrollos tanto en .Net como en Java. El espacio con el contamos es 200GB para esta cuenta.

Team: Y esta última versión es la mas completa incorporando ademas herramientas para la gestión de equipos.El espacio con el contamos es 500GB para esta cuenta e incorpora 5 cuentas de tipo pro.

Mas información en Spoon.net

Aprender a programar jugando

Desde hace tiempo en la red están saliendo algunos programas para aprender  jugando.

Uno de estos programas es la iniciativa de la «UCDS Schools of Engineering» a través de un software para aprender a programar java jugando.

En este juego, ambientado en mundo medieval fantástico, tu llevas a un personaje que tiene que ir realizando misiones. Lo interesante es que para realizar acciones o hechizos nos ayudamos de lenguaje java para definir acciones como hacer fuego o apagar un fuego.

De momento este juego solo esta disponible para MAC aunque están trabajando para la versión de PC.

Aquí os dejo un vídeo de presentación  y el enlace de la página oficial para que le echéis un vistazo.

Página oficial de CodeSpells

¿Que es JSON?

JSON (JavaScript Object Notation)es un formato ligero de intercambio de datos muy presente en javascript aunque podemos ver que este tipo de formatos se puede extender a lenguajes como C, C++, C#, Java, Perl yPython.

Su principal características es las simplicidad que tenemos para leer y escribir información por parte de los des arrolladores y por parte de nuestras máquinas.

JSON esta formado por:

  • Una vector/colección formado por pares de nombre/valor. En algunos lenguajes este tipo de vector/colección se le conoce como array asociativo, diccionario o tabla hash.
  • Una lista ordenada de valores.

Por ejemplo vamos a diseñar un sistema en javascript para automatizar los mensajes de error de un formulario a través de JSON. Para ello vamos a crear las siguiente variable JSON:

var infPersonal={"edad" : "35",    "ciudad" : "Madrid, ES",    "genero" : "hombre"}

En el caso de que que queramos acceder a esa información solo tendriamos que hacer lo de la siguiente forma:

alert(infPresonal.edad);

Si os fijáis el acceso exactamente igual que cuando accedemos a un atributo publico en C# o Java.

Como en otros lenguajes realmente infPersonal es un array donde dentro podemos incluir cualquier otro tipo de objeto. Este tipo de formato nos va ayudar mucho para definir, sobre todo en javascript, constantes o elementos que vamos a utilizar para hacer nuestras páginas web dinámicas como representación de gráficas.

 

 

Jolt Awards – Premios de la Insdustría del Software

Desde hace un tiempo la revista Dr.Dobb’s  se encarga de premiar a la industria del software con los premios denominados los Jolt Awards

Para este año 2013 podemos destacar los premiados en:

La mejor librería para la programación  este año se  ha llevado el premio «Infragistics NetAdvantage Ultimate 2012 Volume 2»  esta libreria es una recopilación de componentes windows, abarcando desde el diseño de windwos forms a xaml e incluyendo soporte para controles para dispositivos moviles. Para el desarrollo para dispositivos moviles vemos que soporta para la programación en Windows Phone, Android e IOS.

Ademas incorporar una herramienta de diseño rápido de interfaz a través de la cual nos a ser muy útil para el diseño de prototipos para el usuario final.

Entra las librerías que han quedado finalistas nos encontramos las siguientes:

En el apartado de mejor herramienta para la codificación se lo ha llevado el software «JetBrains IntelliJ IDEA 12.0 Ultimate» Esta versión destaca por incluir  una interfaz de usuario para el diseño de aplicaciones Android, un compilador más rápido, soporte para las nuevas funcionalidades de Java anunciadas. Ademas de incluir soporte para las distintas herramientas de control de versiones incorporando la integración con GIT y Team Foundation Server 2012.

Entra las herramientas de codificación que han quedado finalistas nos encontramos las siguientes:

Por último, para terminar el articulo de hoy solamente me queda felicitar a los ganadores de este año.

¿Qué lenguaje de programación (Java, C# y PHP) es mejor para aprender a programar?

Desde hace tiempo llevo escuchando la discusión sobre que lenguaje es mejor para aprender a programar. Las opciones que mas escogidas son Java, C# y PHP.

Algunos de los argumentos que nos puede convencer para elegir java son los siguientes:

  1. Java es fácil de aprender
  2. Java es un lenguaje orientado a la programación orientada a objetos
  3. Java tiene un API muy potente que nos proporciona , entre otras, el pode realizar operaciones de Entrada y Salida (I/O), de networking, manejo para parsear documentos XML  y  interacción con las base de datos.
  4. Herramientas de desarrollo muy potentes y gratuitas como Eclipse y NetBeans
  5. Una amplia librerías de código Open Source como pueden ser Hibernate, Spring, ….
  6. Java tiene comunidad detrás amplia que nos proporciona soporte para cualquier problema que tengamos
  7. Java es Gratis.

Lo argumentos que nos pueden decantarnos por c# son los siguientes:

  1. La utilización de Delegados (Delegates) y Eventos (Events). Su manejo es algo mas sencillo de utilizar que el uso de los listener en java para la gestión de los eventos.
  2. No dispone de una descripción de las excepciones anidadas. En java cada vez que se produce una excepción se nos informa de todo el detalle que se ha visto involucrado en la propagación de la excepción. En C# esto no es así, simplemente se nos indica la excepción que se produce y la causa. Este nos facilita a la hora de depurar errores.
  3. El uso de propiedades nos hace el identificar mejor que son los atributos internos de una clase de los elementos, a nivel público, con los que se interactua con la clase.
  4. Es mas flexible a la hora de organizar el código. En C# no tenemos que seguir la jerarquía de paquetes a la hora de crear nuestras clase ni tener que definir un archivo por clase o interfaz. C# en este aspecto nos da total libertada para que organicemos nuestro código acorde con nuestro desarrollo.
  5. C# es un lenguaje orientado a la programación orientada a objetos

Y por último veamos las razones por las que elegir o en defensa para aprender a programar en PHP:

  1. Podemos trabajar conjuntamente con HTML para el diseño de nuestras aplicaciones.
  2. Es muy intuitivo de aprender.
  3. Desde la versión PHP 5 ya es considerado como un lenguaje orientado a la programación orientada a objetos.
  4. Disponemos de Frameworks para la elaboración de aplicaciones webs bastantes potentes
  5. La gran mayoría de aplicaciones web se basan en PHP (WordPress, Joomla, Drupal, Magento, …)

Para aprender a programar sin duda debemos escoger Java por la rectitud a la hora de aplicar las normas de la programación orientada a objetos.

Ahora para el desarrollo de una aplicación nos deberemos ajustar siempre a los requisitos que nos imponga el cliente.

 

Joda-Time API Java

Durante cualquier desarrollo en el que nos vemos involucrados uno de los problemas mas comunes con los que nos encontramos es el tratamiento de fechas.

JODA, Java Data Time API, fue creada para dar un cambio al tratamiento de fechas que nos proporciona java por defecto. La clases que nos proporcionan java por defecto para el manejo de fechas han tenidos numerosos bugs y producían, en muchas ocasiones, efectos no deseados.

A continuación indico algunas de las razones por las que nos podemos decantar por la API de JODA son:

  1. Es fácil de usar permitiendo manejar directamente campos como año y día de la semana
  2. Nos proporciona una serie de herramientas para poder hacer cálculos sobre fechas de forma mas intuitiva.
  3. Dispone de un amplia documentación sobre como utilizar la librería
  4. Una amplia cobertura para la realización de test
  5. Soporte de manejo 8 Calendarios distintos simultáneamente.
  6. Es Open-Source.

En su página oficial, http://joda-time.sourceforge.net/,  disponemos de la documentación necesaria y tutoriales que nos indican como utilizar esta libreria de java

 

 

Intercambiar el valor de dos variables sin utilizar una variable auxiliar.

Una de las operaciones que realizamos habitualmente es el intercambio de elementos, swap, en nuestros programas. Para ello lo mas natural es utilizar una tercera variable de almacén temporal para realizar este intercambio.

Pues existe un método para poder realizar este intercambio, entre variables numéricos, sin tener necesidad de utilizar una tercera variable.

Supongamos que tenemos dos variables con los valores 30 y 40;

int a = 30;
int b = 40;

Podemos realizar este intercambio realizando las siguiente operación;

a = a + b // a la variable a le asigno el valor de a + b

En este paso el valor de a es = 70 (30 + 40)

b = a – b // A b le asigno el resultado de resta al valor calculado anteriormente de a con el valor inicial de b

Cuando realizamos esta resta la operación que estamos haciendo es la siguiente b = a – b = (30 + 40) – 40
Después de la resta el valor que nos queda almacenado en b es el valor de a de 40.

a = a – b // Y una vez realizado el cálculo de b le resto el valor a la variable de a el nuevo valor de b

Y por último en esta resta la operación que estamos realizando es a = (30 + 40) – 30
Quedándonos en a el valor de inicial de b de 40.

Si mostramos el valor de esta variables por pantalla veremos que ambos valores se ha intercambiado.

Tras este artículo podemos llegar a la conclusión que no debemos abusar de crear variables para ayudarnos a resolver cualquier operación. A veces con nuestro propio ingenio y nuestro conocimientos podemos llegar a otras soluciones.

En el siguiente articulo «How to Swap Two Numbers without Temp or Third variable in Java» de javarevisited (en Inglés) tenéis descrito otras formas de poder realizar esta operación, por ejemplo a nivel de bit,  sin tener que utilizar variables auxiliares

Lenguaje de programación más popular en Marzo 2013

Según el último informe Tiobe, el lenguaje más popular en Marzo de 2013 sería Java con un 18% seguido de C con un 17%. C# queda en el quinto puesto con casi un 7% . Este índice Tiobe, es muy criticado por su importante componente histórico, es decir tiene en cuenta todos los recursos existentes en Internet sobre un lenguaje.

También existen índices, como el PYPL, que usan el número de búsquedas realizadas en un momento dado (utilizando Google Trends) sobre los distintos lenguajes. Según este índice Java sería el lenguaje más usado con un 27% seguido de PHP con un 14%.  C# ocuparía el tercer lugar con un 10% empatado con Python.

Estos resultados contrastan con una reciente encuesta de codeeval (una importante comunidad de desarrolladores)  que revela que para este año 2013 el lenguaje más demandado será Python, con casi un 30% seguido de Java por un 25%

Lenguajes más populares

Algo que sí podemos ver en las tres encuestas es que Java es un lenguaje cada vez más popular, con un ascenso cada vez mas claro de Python. No en vano son los dos lenguajes más utilizados por Google.

Vulnerabilidad Java en Windows

El pasado mes de febrero aparecieron dentro de los sistemas operativos windows una falsa actualizacion de java

Microsoft informo a los usuarios de la existencia de falsas actualizaciones de Java.

Desde los responsabes de la compañía de Java ha recordado y reiterado a los usuarios que es fundamental consultar la web oficial de Oracle para garantizar que las actualizacion de Java que nos descargamos corresponde con la oficial.

Durante el pasado mes de enero aparecieron numerosos y nuevos problemas con Java y su ejecución en el sistema operativo de Windows.

Desde los responsable de Microsoft informaron a los usuarios sobre estas prácticas delincuentes, identificando aquellas actualizaciones que prometen falsamente solucionar problemas de seguridad en Java y que sin embargo, dichas actualizaciones en realidad lo único que hacen es comprometer la seguridad de los equipos ya que son obra de cibercriminales y no realmente de Oracle, que es la empresa responsable del software auténtico.

Microsoft nos recomienda descargar las actualizaciones desde la propia página de oracle y desactivar las actualizaciones automáticas. En caso de no saber exactamente como realizar estas operaciones lo mejor es desistalar el software de java y dehabilitar la ejecución en nuestro navegador web la ejecucion de código java.