Enviar tweet con Java

22/Oct/2019 Java 1 Comentario

En un anterior artículo hemos visto lo sencillo que es conectarse a Twitter utilizando Java. Una vez conectados vamos a dar un siguiente paso y enviar un tweet con Java. Para ello vamos a apoyarnos en la librería Twitter4j.

Para poder utilizar la librería Twitter4j deberemos de añadir la dependencia. Esto lo haremos creando una nueva entrada dentro de nuestro fichero pom.xml de maven.

<dependencies>
    <dependency>
      <groupId>org.twitter4j</groupId>
      <artifactId>twitter4j-core</artifactId>
      <version>4.0.7</version>
      <scope>compile</scope>
    </dependency>
</depedencies>

E importando la librería en nuestro programa.

import twitter4j.*;

Una vez que tenemos la librería lo primero será conectarse a Twitter. Para ello, y tal como vimos en el ejemplo de conectarse a Twitter utilizando Java, hay que definir un fichero properties en el directorio raíz con la información de conexión que nos proporciona Twitter con las claves, secretos y tokens.

debug=false
oauth.consumerKey=bwMEjAH340
oauth.consumerSecret=nYnIMrqk5QYjguY3BH4CS8yoUPb8VdJz
oauth.accessToken=VmtrDacTJUl1M7lUyRAzL7BaqVCOVotr
oauth.accessTokenSecret=tM6CfOKzfUbWpXY5QqGWDnN0aHDtyS

Así, con el entorno preparado vamos a instanciar una clase Twitter. La clase Twitter es la que nos permite hacer todas las acciones que queramos, entre ellas el enviar un tweet. La instancia la conseguimos a través de la factoría TwitterFactory().

Twitter twitter = new TwitterFactory().getInstance();

Una vez que tenemos la instancia de la clase Twitter nos apoyamos en el método .updateStatus(), dicho método recibe una cadena de texto que será la que nos permita enviar un tweet con Java.

twitter.updateStatus("Mensaje enviado desde un ejemplo Java de Línea de Código http://lineadecodigo.com");

Automáticamente el mensaje aparecerá en nuestro timeline de Twitter.

Es importante que toda la ejecución del envío del tweet se haga controlando la excepción TwitterException. Es por ello que el código lo controlaremos mediante una estructura try-catch.

try {	
  Twitter twitter = new TwitterFactory().getInstance();	 		    
  twitter.updateStatus("Mensaje enviado desde un ejemplo Java de Línea de Código http://lineadecodigo.com");   
} catch (TwitterException te) {
  te.printStackTrace();
  System.out.println("Error en la conexión: " + te.getMessage());         
}

Y así tenemos nuestro tweet publicado… aquí nuestro ejemplo:

Como se puede ver es muy sencillo enviar un tweet con Java en unos pocos pasos una vez que hemos configurado la librería Twitter4j.

Vídeos sobre Java


Números que contengan un cero

21/Oct/2019 Java Deja un comentario

¿Podemos listar todos los números que contengan un cero desde el 1 al 100 con Java sin utilizar ninguna función de manejo de cadenas y solo utilizando operaciones matemáticas? Es una de las preguntas que nos hacíais en los comentarios de un artículo y que seguro más de uno está dándole vueltas a como resolverlo.

Y es que una de las cosas que se nos puede venir a la cabeza con Java es utilizar la función .indexOf() sobre una cadena, es decir, convertiríamos primero el número en cadena, y buscaríamos si esta contiene el carácter 0 dentro de ella. Si bien, en este caso, nos vamos a apoyar sobre funciones matemáticas para averiguar si el número contiene ese cero.

Pero lo primero será iterar sobre los 100 primeros números. Esto es algo realmente sencillo, y para ello un bucle for nos va a ayudar.

for (int x=1;x<=100;x++) {
  ...
}

Ahora vamos con la operación matemática en Java. Si pensamos en los números que contengan un cero desde el 1 al 100 vemos que estos son los primeros de las decenas, es decir, 10, 20, 30,… así hasta el primero de las centenas, el 100. ¿Qué tienen estos números en común? Pues que si los dividimos por 10 su resto va a ser de 0.

Así que podemos utilizar el operador % que es el operador que en Java nos ayuda a devolvernos el resto de la división. De esta manera chequeamos si el número dividido por 10 nos devuelve como resto un 0.

if (x%10 == 0) { ... }

Ya solo nos quedará el insertar la condición dentro del bucle para poder obtener todos los números que contengan un cero desde el 1 al 100 por consola con Java.

for (int x=1;x<=100;x++) {
  if (x%10 == 0)
    System.out.println(x);
}

Espero que os haya servido de utilidad. Ahora la pregunta sería, ¿se te ocurre otra forma en Java de poder realizarlo sin convertirlo a cadenas o utilizar el operador de módulo?

Vídeos sobre Java


Conectarse a Twitter con Java

14/Oct/2019 Java Deja un comentario

En el artículo usando la API de Twitter4j en Java, nuestro compañero Pablo Ruiz nos explicaba cómo conectarse a Twitter con Java. Si bien, los nuevos mecanismos de conexión de Twitter han hecho que la librería Twitter4j haya evolucionado y cambiado su forma de utilizarse. Es por ello que vamos a ver las nuevas formas que tenemos para conectarnos a Twitter con Java.

Lo primero que tenemos que hacer es importarnos la librería Twitter4j y qué mejor mecanismo que hacerlo vía Maven.

<dependencies>
    <dependency>
      <groupId>org.twitter4j</groupId>
      <artifactId>twitter4j-core</artifactId>
      <version>4.0.7</version>
      <scope>compile</scope>
    </dependency>
</depedencies>

En este caso vamos a utilizar la última versión estable que hay en este momento que es Twitter4j 4.07.

Lógicamente lo que tenemos que hacer es importar la librería nada más empezar nuestro código.

import twitter4j.*;

public class ConectarTwitter { ... }

Para podernos conectar a Twitter con Java vamos a necesitar el tener una aplicación creada en Twitter. Es por ello que si no tienes una puedes crearla en tu perfil de Twitter desde la URL https://developer.twitter.com/en/apps/.

Al crear tu aplicación en Twitter vas a tener unas claves y tokens de conexión OAuth que vas a necesitar para poder conectarte desde el código Java. Estos valores son:

  • API Key
  • API Secret Key
  • Access Token
  • Access Secret Token

Todos ellos los encontraras en los detalles de tu aplicación de Twitter.

Así que lo primero que tendremos que hacer es crear un fichero que llamaremos twitter4j.properties con estos valores.

debug=false
oauth.consumerKey=bwMEjAH340
oauth.consumerSecret=nYnIMrqk5QYjguY3BH4CS8yoUPb8VdJz
oauth.accessToken=VmtrDacTJUl1M7lUyRAzL7BaqVCOVotr
oauth.accessTokenSecret=tM6CfOKzfUbWpXY5QqGWDnN0aHDtySL6

En él vemos que hemos volcado los valores de los token y las claves que nos había dado Twitter. Además se pueden insertar otros parámetros de configuración como debug que nos permitirá depurar la conexión desde nuestro código.

El fichero twitter4j.properties deberá de estar en el directorio raíz del classpath y que lo cargará el programa automáticamente.

Una vez que tenemos el fichero de configuración vamos a crear una clase Twitter que será la que contenga la conexión, para ello nos apoyamos en una factoría TwitterFactory() para pedirle una instancia.

Twitter twitter = new TwitterFactory().getInstance();

Una vez que estamos conectados a Twitter vamos a confirmar las credenciales que le hemos pasado, las cuales nos devolverán información de nuestro usuario. Esto lo hacemos mediante el método .verifyCredentials()

User usuario = twitter.verifyCredentials();

Por último podremos volcar por consola la información de nuestro usuario que nos ha devuelto la verificación del mismo. Esta información incluye datos del usuario como el nombre, usuario, descripción, URL de la foto de perfil, número de seguidores, lista de seguidores,…

System.out.println("Nombre: " + usuario.getName());
System.out.println("Descripcion: " + usuario.getDescription());
System.out.println("Id Usuario: " + usuario.getId());
System.out.println("Número Seguidores: " + usuario.getFollowersCount());

De esta forma ya hemos visto lo que tenemos que hacer para conectarse a Twitter con Java.

 

Vídeos sobre Java


Palabras pares de una frase con Java

13/Oct/2019 Java , Deja un comentario

En uno de los comentarios que nos dejabais hace poco un usuario nos preguntaba sobre cómo podría sacar las palabras pares de una frase con Java. Es decir, que dada una frase obtuviese la segunda, cuarta, sexta,… palabra de la frase y nos la mostrase por consola.

Vamos a ver cómo resolverlo, ya que es sencillo el poder extraer las palabras pares de una frase con Java. Lo primero será tener una frase. Esto es muy sencillo.

String sCadena = "Esto es una cadena que contiene palabras y de las que quiero extraer las palabras pares";

Ahora nos vamos a apoyar en la clase StringTokenizer, la cual sirve para poder trocear una frase cada vez que encuentre un delimitador. Siendo su constructor el siguiente:

StringTokenizer(String str, String delim)

Por defecto, el delimitador que utiliza StringTokenizer es el espacio en blanco, así que no necesitaremos indicarle ningún delimitador y nos bastará con hacer lo siguiente:

StringTokenizer st = new StringTokenizer(sCadena);

Ahora ya tenemos un array que contiene todas las palabras de la frase, así que simplemente tendremos que ir recorriendo el StringTokenizer y mostrar las palabras que estén en las posiciones pares. Para ello tenemos que conocer los métodos en los que se apoya StringTokenizer que son .hasMoreElements(), método que nos dirá si nos quedan más elementos por mostrar y .nextElement() que será el método que nos devuelva el elemento que tenga el array mientras lo recorremos.

De esta forma podemos recorrerlo de la siguiente forma:

while (st.hasMoreElements()) {
    st.nextElement();
 }

Como lo que queremos es extraer las palabras pares vamos a crear un contador que nos diga si la posición es par o es impar. Esto añadido a lo que ya explicamos en el artículo sobre números pares en Java, nos permitirá el saber si la posición es par o impar.

int contador = 1;

while (st.hasMoreElements()) {
  if (iContador%2 == 0)
    System.out.println(st.nextElement());
  else
    st.nextElement();
      
  iContador++;
 }

De esta manera tan sencilla hemos conseguido extraer las palabras pares utilizando el lenguaje Java apoyándonos en la clase StringTokenizer.

Recuerda que si tienes dudas con tu código nos las puedes dejar en los comentarios o mediante nuestros foros e intentaremos, en la medida de lo posible, ir resolviéndolos y explicándolos.

 

Vídeos sobre Java


Adivinar números con Java

23/Sep/2019 Java Deja un comentario

Revisando el código publicado he caído en la cuenta de que había un código publicado del que no había escrito un artículo y este es sobre cómo adivinar números con Java.

La dinámica es muy sencilla y consiste en pedir al usuario un listado de números para guardarlos, en este caso vamos a guardar 10 números, aunque podríamos ajustarlo a los que quisiéramos y luego entraría en la dinámica de preguntar al usuario para poderlo adivinar. Así que pongámonos manos a la obra con el código para adivinar números con Java.

Lo primero será definir un array que será la estructura en la que almacenaremos los números. Para ello nos vamos a ayudar de un ArrayList.

ArrayList<Integer> misnumeros = new ArrayList<Integer>(10);

Lo siguiente será pedirle al usuario que introduzca los 10 números. Como es una cantidad fija vamos a utilizar un bucle for. La clase Scanner será la que nos sirva para acceder a la consola del usuario y pedirle los números.

Scanner reader = new Scanner(System.in);  

for (int x=0;x<10;x++) {
  System.out.println("Inserte un número");
  misnumeros.add(reader.nextInt());
}

Podemos comprobar que utilizamos el método .nextInt() para leer los números enteros por consola.

Una vez tenemos cargados los números podemos empezar con la lógica de adivinar números con Java. La idea es apoyarnos en un bucle while, el cual tendrá como condición de salida el número 0. Es decir, mientras el usuario no introduzca el 0 seguiremos preguntando por el número a adivinar.

int numeroBuscar = reader.nextInt();

while (numeroBuscar!=0) {
  ...
  numeroBuscar = reader.nextInt();
}

Para poder buscar el número en el array nos apoyamos en el método .contains(). Dicho método nos devuelve true en el caso que el valor pasado se encuentre dentro del Array.

Es importante ver que el método .contains() nos lo ofrece la clase ArrayList. Es por ello que hemos utilizado dicha clase para almacenar el array en vez de un sencillo array de datos.

De esta forma el código dentro del bucle nos quedaría de la siguiente forma:

int numeroBuscar = reader.nextInt();

while (numeroBuscar!=0) {
  if (misnumeros.contains(numeroBuscar)) {
    System.out.println("Contiene el número " + numeroBuscar);
  } else {
    System.out.println("No contiene el número " + numeroBuscar);
  }

  System.out.println("Busca un número, 0 para salir");
  numeroBuscar = reader.nextInt();
}

Una vez introducido el valor 0 se acabará nuestro juego de adivinar números con Java.

Vídeos sobre Java


Campos búsqueda en HTML5

25/Mar/2019 HTML5 , 1 Comentario

Cuando estemos construyendo una página web es muy probable que definamos una sección de búsqueda, la cual contenga un formulario. En este artículo veremos cómo podemos crear campos búsqueda en HTML5 para darle una mayor semántica a dichos formularios.

Y es que desde que se incluyeron los nuevos tipos de input dentro la especificación HTML5 hemos dejado de definir todos los formularios mediante los famosos input de tipo “text”. Y ahora disponemos de campos de texto que llevan asociadas múltiples semánticas para los campos y, algunos de ellos, validaciones asociadas.

Para los campos búsqueda en HTML5 disponemos del tipo “search”. Así montar nuestro formulario de búsqueda será sencillo. Simplemente tendremos que escribir los siguiente para agregar un campo de formulario el cual esté preparado para que el usuario introduzca una búsqueda:

<input type="search" id="busqueda" name="q"/>

Como vemos simplemente hemos utilizado el atributo type para indicar su semántica de tipo “search”.

El formulario completo preparado para realizar una búsqueda quedaría de la siguiente forma.

<form action="http://lineadecodigo.com/search" method="get">
  <label for="busqueda">¿Qué quieres buscar?</label>
  <input type="search" id="busqueda" name="q"/>
  <input type="submit" value="Buscar"/>
</form>

Los campos de tipo “search”, a diferencia de otros campos de texto de formulario con semántica, no tiene una visualización especial dentro de los navegadores. Es por ello que se seguirá viendo como un campo de entrada de texto de un formulario. Si bien, cuando se inspeccione nuestras páginas por los buscadores web, estas podrán identificar dónde está el formulario de búsqueda.

Cómo se puede observar, montar campos búsqueda en HTML5. ¿Puede ser útil o es mejor mantener los campos de texto básicos de un formulario? Pues eso ya lo dejo al gusto del lector.

 

Vídeos sobre HTML5


Input Color en HTML5

19/Feb/2019 HTML5 , Deja un comentario

Siguiendo con el repaso a los nuevos tipos de input que tenemos dentro de HTML5 vamos a ver qué capacidades nos ofrece en input color en HTML5.

Este tipo de input nos va a servir cuando tengamos que ofrecerle al usuario la posibilidad de cambiar el color de algo. De esta manera lo que el navegador va a mostrar es una paleta de colores para que el usuario elija uno de ellos.

Pero vayamos por partes, lo primero será insertar nuestro elemento input, para poder tener un input color en HTML5 deberemos de asignarle el tipo color.

<label for="micolor">Elige un color:</label>
<input type="color" name="micolor" id="micolor"/>

Los valores que soporta este tipo de campos son los códigos de colores en formato RGB. Si queremos darle un valor por defecto podremos indicar un color RGB en su atributo value. Así, si queremos que el color por defecto sea el rojo (#f00) escribiremos lo siguiente:

<label for="micolor">Elige un color:</label>
<input type="color" name="micolor" id="micolor" value="#f00"/>

Cuando el usuario interactue con nuestro campo input color en HTML5 vera dos cosas, la primera es que la entrada no es un campo de texto dónde pueda escribir un color, si no que se suele representar con un elemento con el color elegido y segundo que se le ofrecerá una paleta de colores dónde podrá elegir el color que más le guste. Gráficamente se representaría algo similar a:

Cuando elija el nuevo color, este pasará a ser el que se represente en la muestra del campo de entrada.

Como hemos visto, el elemento input color en HTML5 nos proporciona una forma muy sencilla e intuitiva para que el usuario pueda elegir un color de una paleta.

Vídeos sobre HTML5


Input email en HTML5

21/Jan/2019 HTML5 , Deja un comentario

Una de las cosas que nos trajo HTML5 fue una gran cantidad de controles de formulario. Controles que además venían enriquecidos con controles de validación de los datos que manejaban. Entre ellos el input email en HTML5. Atrás quedaban los años en los que cada vez que creabas un formulario te tenías que codificar los controles en Javascript o jQuery o bien apoyarte en librerías como wForms.

Ahora podemos incluir dentro de nuestro formulario un input email en HTML5 para que el usuario pueda meter direcciones de correo electrónico. Para ello, simplemente tenemos que utilizar un elemento input, al cual daremos en su atributo type el valor de “email”.

El código HTML5 que generaremos será el siguiente:

<input type="email" id="correoelectronico" name="correoelectronico"/>

Qué conste que el id y name que se utilizan suele ser también un nombre como “email”, pero para destacar el campo type lo hemos cambiado a “correoelectronico”.

Lo que nos va a presentar el formulario es un simple campo de texto, tal y como los presentaba con los elementos input de tipo “text” que existían, pero con una pequeña-gran diferencia. Es que será el propio HTML5 quien realice la validación de que el contenido corresponda con un texto en formato email.

Así, si el usuario no inserta un contenido que sea un email, el propio formulario se “quejará” al respecto, mostrando un mensaje de error al usuario.

Un ejemplo de mensaje de error en un formulario que contenga un input email en HTML5 podría ser este:

Input Email en HTML5

El formulario completo con nuestro input email en HTML5 quedaría de la siguiente manera:

<form action="#" method="post">
  <label for="correoelectronico">¿Cúal es tu email?</label>
  <input type="email" id="correoelectronico" name="correoelectronico"/>
  <input type="submit" value="Enviar"/>
</form>

Con esto vemos lo que nos ha simplificado la vida cuando tenemos que gestionar input email en HTML5 dentro de un formulario.

Vídeos sobre HTML5


Deshabilitar teléfonos para iOS

20/Jan/2019 HTML Deja un comentario

Una de las características del sistema operativo iOS para los dispositivos móviles (iPhone e iPad) es que tienen la capacidad de convertir cualquier texto que tenga formato de teléfono es un enlace para poder realizar una llamada de teléfono. De esta manera facilita la usabilidad del usuario y la integración de las navegaciones con el dispositivo. Pero, ¿podemos deshabilitar teléfonos para iOS? Es decir, que por mucho que el navegador identifique que es un teléfono, no mostrar este como enlace a un teléfono. Ahora veremos cómo hacerlo con el lenguaje HTML.

Lo primero es ver el código que ponemos en nuestra página:

<p>Llamar al +34 695 68 59 20</p>
<p>Llamar al +34 695685920</p>
<p>Llamar al +34695685920</p>

Vemos que la estructura son simples frases de texto con números de teléfono separadas por párrafos mediante un elemento p. Ya sea un número separado por espacios, si separamos el prefijo internacional o si lo ponemos todo junto, el sistema operativo iOS los detecta todos.

Pues bien, si lo visualizamos en un Safari dentro de un iPhone o iOS veremos algo parecido a esto:

Enlaces a teléfonos en iOS

Si no queremos que se visualice de esta forma podemos pasar a deshabilitar teléfonos para iOS. Para ello necesitamos gestionar una meta-tag mediante el elemento meta. El valor de la meta será “format-detection” y su valor será “telephone=no”.

El código que tenemos que añadir en la cabecera será el siguiente:

<head>
  <meta name = "format-detection" content = "telephone=no">
</head>

De momento parece que otros navegadores no tienen implantada esta funcionalidad y por lo tanto esta meta-tag no es necesaria si estamos trabajando con otros navegadores, o, al menos, no de momento.

Ya sabes de qué sencilla forma puedes deshabilitar teléfonos para iOS. Y si quieres más información al respecto puedes consultar la documentación de Apple sobre enlaces a teléfonos.

 

Vídeos sobre HTML


Modo Pantalla Completa

19/Jan/2019 HTML5 Deja un comentario

Ya hemos visto en algunos ejemplos el como poner un vídeo a pantalla completa, un documento a pantalla completa o una imagen a pantalla completa. Pero en ambos casos guiábamos al usuario para poner a pantalla completa el elemento. Pero, qué sucede si el usuario pone por su cuenta el modo pantalla completa, ¿podemos saber de alguna manera que nuestra página se está visualizando a pantalla completa en HTML5 y con el API Fullscreen? Y por lo tanto aprovecharnos de dicha capacidad. Ahora vemos cómo podemos hacer esto.

Gestionar el saber si estamos en modo pantalla completa pasa por controlar el evento fullscreenchange. Este evento HTML5 y del API Fullscreen es el que nos permite saber si el usuario ha puesto algún elemento a pantalla completa. Es por ello que lo que tendremos que hacer será manejar dicho evento en nuestro código.

Para poder manejar el evento fullscreenchange nos apoyamos en el método .addEventListener() que nos permite asociar a un evento una función que lo gestione.

window.addEventListener("fullscreenchange",cambioPantalla,false);

Lo que hacemos a la hora de controlar el evento es llamar al método .cambioPantalla(). Este método simplemente nos va a sacar por consola que se ha producido un cambio en el modo de pantalla y un timestamp con el momento en el que se ha producido.

function cambioPantalla(event){
  console.log("Cambio en Pantalla Completa " + Date.now());
}

Vemos que para gestionar el timestamp utilizamos el método Date.now().

Este código nos podría bastar para controlar el cambio de modo de pantalla, si bien las implementaciones de los navegadores pueden cambiar y es por ello por lo que aparecen un conjunto de eventos hack que simulan el comportamiento del evento fullscreenchange. Estos son:

  • webkitfullscreenchange
  • mozfullscreenchange
  • MSFullscreenchange

Es por ello que tendremos que controlar todos los eventos, si bien los mandaremos todos a la misma función de control .cambioPantalla().

window.addEventListener("webkitfullscreenchange",cambioPantalla,false);
window.addEventListener("mozfullscreenchange",cambioPantalla,false);
window.addEventListener("MSFullscreenchange",cambioPantalla,false);

Con esto ya tendríamos el control de cada vez que hay un cambio a un modo pantalla completa en HTML5 y con el API Fullscreen.

Vídeos sobre HTML5