JavaScript – Introducción

En esta entrada inauguro un nuevo lenguaje (sin ánimo de polemizar 😉 ) en el blog: JavaScript.
JavaScript está estrechamente relacionado con el diseño de páginas web y HTML. Como tal, podemos incrustar el código JavaScript entre las etiquetas , dentro de…en el código HTML:

Comentarios

Para comentar código en JavaScript, usamos la misma sintaxis que en Java:

  1. Comentarios de una sóla línea: // Comentario de una sola línea.
  2. Comentarios de varias líneas: Usamos /* al principio del bloque de líneas a comentar, y */ al final del bloque a comentar.

Variables

A diferencia de Java, donde tenemos que especificar de qué tipo es cada variable que declaramos, en JavaScript bastará con usar la palabra reservada var. Las variables se pueden inicializar al mismo tiempo que se declaran.

Arrays o Vectores

También se utiliza la palabra reservada var para declarar un Array en JavaScript. La diferencia estriba en el momento de inicializarlo, donde deberemos emplear la sintaxis: var nuevoArray = new Array('valores','separados','por','comas'). Además, se permite insertar nuevos valores al final del array, haciendo uso del método push. Por ejemplo:

Si te has fijado en el ejemplo de sintaxis, los valores de un array se separan con comas. Aprovecho también para señalar que los valores de tipo cadena se pueden introducir entre comillas simples o dobles, de manera indistinta.

Para hacer referencia a un valor del array, empleamos corchetes ([ ]) para definir el índice del elemento al que queremos acceder. Debemos tener en cuenta que el primer elemento del array tiene índice 0.

Mostrar mensajes en pantalla

Si deseamos mostrar un mensaje en pantalla utilizamos el método alert. Por ejemplo, la sentencia:

muestra el mensaje siguiente en pantalla:

Mensaje Alert

Requerir la introducción de datos por parte del usuario

Si el alert equivaldría a un MessageBox, la instrucción prompt sería un InputBox. Como ya habrás supuesto, pide que el usuario introduzca datos en un formulario. La sintaxis sería la siguiente:

En este ejemplo pedimos que el usuario introduzca su nombre, y lo guardamos en la variable correspondiente. Ya habrás adivinado que el segundo parámetro es el texto por defecto que aparece en el formulario:

Prompt.gif

Funciones

Por último, en esta introducción me queda explicarte cómo se usan las funciones en JavaScript. La definición de una función en JavaScript sigue esta sintaxis:

En la próxima entrega te diré cómo acceder a los distintos objetos HTML (formularios, botones, etc…), y de qué forma iniciar la ejecución del código JavaScript.

Java – Reproducir audio WAV

En esta nueva entrada voy a mostrar cómo podemos reproducir un fichero de audio fácilmente utilizando Java. Así que vete buscando algún archivo .WAV para hacer las pruebas.

Estos son los pasos necesarios:

AudioProcedure

Distribuiremos el código en dos clases. Una de ellas contiene el método para reproducir el fichero de audio que le pasemos como parámetro (SoundHandler.class), y la otra será la clase principal del programa, que contendrá el método Main (SoundTest.class).

Clase SoundHandler

Esta clase sólo contiene el método playSound.Como ves, hemos seguido escrupulosamente el esquema que mostraba al principio:

  1. Recibimos como parámetro la ruta del fichero de audio y la guardamos en la variable soundFile.
  2. Creamos un nuevo objeto InputStream, usando como parámetro la variable del punto anterior.
  3. Creamos un nuevo objeto AudioStream, usando como parámetro, a su vez, el objeto InputStream del punto anterior.
  4. Ejecutamos el método AudioPlayer.player.startpara reproducir el audio.

Clase SoundTest

Como era de esperar esta clase es aún más sencilla. Simplemente creamos un objeto de la clase SoundHandler (al que he llamado sound, línea 3), y luego llamamos a su método playSound pasando como parámetro la ruta completa del archivo wav que deseamos reproducir (línea 5).

Java – El operador ternario ?

Por poco que hayas tocado Java seguro que estás acostumbrado al uso de la estructura condicional if … else :

Pues existe una manera alternativa de escribir estas sentencias if…else tan cortas, que las abrevia incluso más: usando el operador ternario ?. La sintaxis es la siguiente:

Y se interpretaría diciendo que si expresion1 es verdadero, entonces se evalua expresion2, y de lo contrario se evalua expresion3

Repitamos el ejemplo cambiando la estructura if-else por el operador ternario ?:

Como ves, en una única línea asignamos a la variable k el valor que le correspondería dependiendo de si i es negativa o es positiva. Y hemos reducido el número de líneas de código a la mitad.

¡Hasta la próxima!

MySQL – Consultas básicas (I): SELECT e INSERT INTO

Siguiendo con el lenguaje SQL, y más concretamente usando MySQL, en este post voy a mostrar unas cuantas consultas de las más comunes y a la vez más útiles que tendremos que utilizar. Te recuerdo que también escribí tiempo atrás una entrada con los comandos para crear bases de datos y tablas.

Evidentemente puedes usar cualquier base de datos que tengas, pero si quieres seguir exactamente los ejemplos con los mismos datos que yo estoy utilizando, puedes descargar este archivo SQL. Cuando ejecutes el script tendrás la base de datos dbJuegos funcionando en tu equipo. Te recomiendo que eches un vistazo a mi anterior post sobre cómo crear y restaurar backups de bases de datos MySQL.

Para ejecutar las consultas puedes usar directamente el shell de MySQL o hacer uso de MySQL Workbench. Yo prefiero este último método, pues es mucho más cómodo de utilizar y más agradable a la vista 😉

Mostrar todos los registros

La consulta más sencilla es una de las más útiles, pues te muestra todos los registros de una o varias de las tablas de la base de datos. Su sintaxis es:

En nuestra base de datos:

Esto nos mostraría lo siguiente en workbench:
Mostrar todos los resultados

Como verás, las columnas idgenero e idplataf sólo muestran los índices. Al final veremos una versión modificada de esta consulta para que salga más entendible. Mientras tanto, te invito a que hagas las correspondientes consultas sobre las tablas tblgeneros y tblplataf para ver qué géneros y plataformas corresponden cada uno de los índices.

Insertar un nuevo registro

Usamos la siguiente sintaxis para el comando INSERT INTO:

Ahora queremos insertar en nuestra base de datos un juego cuyo titulo es ‘Blood of old’ (los campos de tipo texto los encerramos entre comillas simples), que es del género arcade (idgenero 1) y de la plataforma Steam (idplataf 1). La nota de gamerankings es 0.00 (porque no existe) y en el campo terminado también le ponemos un 0 porque no nos lo hemos pasado aún (si ponemos un 1 significa que ya lo hemos terminado). La consulta definitiva sería la siguiente:


Ufff… se me está quedando mucho más largo de lo que pensé en un principio. Dejo para próximaS entregaS los comandos para actualizar o eliminar un registro ya existente, así como el uso de las cláusulas WHERE y ORDER BY, que resultan indispensables.

¡Ah! Ahora ejecuta la siguiente consulta para ver todos los registros y fíjate en las columnas que contienen el género y la plataforma:

Mostrar todos los registros en potito

MySQL – Crear y restaurar copias de bases de datos MySQL

MySQL incorpora un comando llamando mysqldump que nos permite crear copias de seguridad y restaurarlas de bases de datos mysql. Para usarlo debemos abrir un terminal (en Linux) o línea de comandos (en Windows). En esta ocasión yo voy a hacerlo en Windows.

Para abrir la línea de comandos en Windows ya sabrás que es tan fácil como pulsar [Win]+R, escribir cmd, y pulsar Enter:

Windows_Command_Line

Ahora deberemos cambiar al directorio donde tenemos instalado MySQL, en mi caso teclearía:

A continuación teclearemos el comando necesario para crear el backup o para restaurarlo.

Crear backup de una base de datos MySQL

La sintaxis es la siguiente:

Es decir, para el usuario root, cuyo password es PasswordRoot, si queremos crear un backup de la base de datos dbJuegos en el directorio raíz de la unidad E:\, teclearemos:

Con ello se habrá creado en E:\ el fichero miBackup.sql

Backups de múltiples bases de datos

En este caso se incorpora el parámetro –databases justo antes del nombre de las bases de datos:

Si además queremos hacer una copia de todas las bases de datos, usamos el parámetro –all-databases:

Restaurar backup de una base de datos MySQL

Para restaurar bases de datos a partir de ficheros .sql, primero tenemos que cerciorarnos de que la base de datos YA EXISTE. En este post te explico cómo hacerlo. Cuando estemos seguros de que la base de datos existe, ejecutamos la siguiente sentencia:

En nuestro ejemplo:

Para el próximo post tengo preparadas 4 sentencias SQL sencillas, pero te hará falta restaurar la base de datos que adjuntaré, haciendo uso de todo lo anterior. Sólo espero que no pase un año entero hasta que me apetezca publicarlo 😉

Linux Bash (II) – Comandos Linux esenciales

Por fin he encontrado algo de tiempo y motivación para continuar con el blog. Y voy a continuar donde lo dejé, en los scripts de Linux Bash. En esta ocasión voy a presentarte algunos de los comandos de linux más útiles, que probablemente utilizarás tanto en un script como directamente en la línea de comandos, dada su importancia.

cat

Muestra el contenido de un fichero en pantalla. Su uso es bien sencillo:

less

También muestra el contenido de un fichero en pantalla, pero al contrario de cat, esta vez nos permite desplazarnos arriba y abajo con los cursores. Además, muestra un “prompt” como el de vim (:). Tras este prompt podemos escribir comandos como “/ cadena” para que nos busque cadena dentro del contenido. Para salir de less, simplemente introduciremos una q en el prompt.

head

Imprime por pantalla las primeras líneas de un archivo. Por defecto muestra las 10 primeras líneas, pero con el modificador -n podemos especificar cuántas queremos mostrar. Por ejemplo, la siguiente instrucción mostraría las primeras 15 líneas de archivo:

tail

Exactamente igual que head, pero muestra las últimas líneas del fichero. Así, esto mostraría las 15 últimas líneas de archivo:

echo

Para mostrar mensajes por pantalla. Probablemente sea el comando más utilizado en los scripts:

sleep

Detiene la ejecución del script durante el tiempo que le especifiquemos, en segundos. Por ejemplo, esto pausa la ejecución durante 2 segundos:


Y con lo anterior, doy por terminado este post. Más adelante hablaré de variables, condicionales, bucles y funciones. ¡Hasta la próxima!

Linux Bash (I) – Introducción

Un script en bash de linux vendría a ser el equivalente a un archivo de procesamiento por lotes en MS-DOS/Windows. O sea, los (ahora ya no tan) famosos archivos .bat. Pero a diferencia de éstos y debido a la propia naturaleza del sistema operativo Linux, un script en bash puede llegar a ser increíblemente más potente que un simple archivo .bat.

Los pasos que seguiremos son los siguientes:

Crear el archivo

Este paso lo podemos hacer directamente en nuestro editor de texto preferido, guardando el archivo después con el nombre que deseemos. Yo voy a hacerlo usando vim. Si quieres instalarlo en Ubuntu:

Nuestro primer script mostrará por pantalla la fecha y hora actuales.

Nos vamos al directorio dónde queremos crear el script. En mi caso:

Luego invocamos el comando vim seguido del nombre del script. En mi caso le he llamado ahora.sh:

Escribir las instrucciones

La primera línea de un script en bash siempre debe ser:

Tras ella, escribiremos el resto de instrucciones. Así pues, nuestro script quedaría:

Recuerda: si estás usando vim tienes que pulsar la teca INS para entrar en modo insertar caracteres, y la tecla ESC para pasar al modo introducción de comandos. Para guardar y salir, en modo comandos, escribe :x

Dar permisos de ejecución al archivo

Una vez tenemos nuestro archivo creado, para poder ejecutarlo debemos asignar el correspondiente permiso de ejecución. Simplemente teclea:

Ejecutar el archivo

Nada más fácil:

Si todo ha ido deberías ver la fecha y hora actuales de tu sistema por pantalla. En próximas entregas añadiremos un poco de miga a esto del scripting 😉

MySQL – Instalar Conector Java JDBC (Sólo JAR)

Si bien aquí te decía que instalaras el MySQL JDBC Connector a través del web installer porque resultaba más cómodo, al escribir el otro post de hoy me he dado cuenta de que te haría falta acceder directamente al archivo .JAR. Esto significa que debes descargar la versión “Platform Independent” del conector.

No te apures, sigue estos sencillos pasos y lo tendrás listo rápidamente.

    1. Vamos a www.mysql.com
    2. Pestaña Downloads
    3. Sección Community
    4. Subsección MySQL Connectors
    5. Click en Connector J
    6. En “Select Platform” elegimos la opción “Platform Independent”.
    7. Pinchamos en el botón Download de la opción .ZIP
    8. Después extraemos el archivo .jar en una carpeta que nos interese para que sea fácilmente localizable a la hora de incluirlo en nuestros proyectos.

Java – Conectar a base de datos MySQL

En las semanas anteriores he comentado cómo instalar MySQL. También creamos una base de datos de ejemplo. Ahora es el momento de conectar a dicha base de datos desde código java. Por si las moscas, a continuación te digo qué posts de los que ya he publicado te van a hacer falta:

Conectar a una base de datos MySQL desde Java, usando el Conector J MySQL (JDBC)

Básicamente los pasos a seguir para lograr la conexión desde un proyecto Java a una base de datos MySQL son los que describo en el esqueleto de código siguiente.

A tener en cuenta

  • Se debe añadir la librería del conector al proyecto. En Eclipse:
    • Botón derecho sobre el nombre del proyecto – Build path – Configure Build path
    • Pestaña Libraries – Add External JARs
    • Navegar hasta donde tenemos nuestro JAR (mysql-connector-java-5.1.32-bin es la última versión en estos momentos) y Aceptar.
  • En el paso 3, cuando creamos el objeto Connection, deberemos sustituir los parámetros por los que correspondan, en este orden: dirección_url_conexión_jdbc, usuario, contraseña
  • En el paso 5 podemos crear tantos objetos ResultSet como necesitemos. En este caso simplemente recupero todos los registros que existen en la tabla tbljuegos, pero la sentencia SQL puede ser cualquier otra, evidentemente.
  • En el paso 6 obtenemos los datos que ya se encuentran en el ResultSet. Es muy importante usar el comando correcto. Por ejemplo: getInt() para recuperar datos de tipo entero, o getString() para datos de tipo VARCHAR. Entre paréntesis podemos indicar el nombre de la columna o campo entre comillas, o bien indicar el índice correspondiente a la columna. Ojo, este índice está basado en 1. Es decir, la primera columna sería el índice 1, la segunda el 2, etc…

Siguiendo este esquema, no deberías encontrar problemas para trabajar con tu base de datos MySQL. En cualquier caso no te preocupes. Estoy preparando un tutorial para crear un proyecto en Eclipse paso a paso, y estará listo dentro de poco. Hasta la próxima.

Linux – Comandos básicos de administración del sistema (II)

Seguimos con el post iniciado el jueves pasado sobre administración básica de sistemas Linux. En esta ocasión trataremos el tema de la gestión de usuarios y permisos en Linux.

Gestión de usuarios y grupos de usuario

Añadir nuevo grupo de usuarios: addgroup

Añadir nuevo usuario: adduser

Con adduser añadimos usuarios. Podemos especificar un grupo si queremos crear y añadir el usuario directamente a un grupo existente:

Eliminar usuarios: deluser

Si además del usuario a eliminar añadimos el modificador -remove-home , nos cargaremos también la carpeta de dicho usuario:

Eliminar grupo de usuarios: delgroup

Cambiar contraseñas de usuarios: passwd

Si no especificamos el usuario, cambiará la contraseña del usuario actual:

Cambiar de usuario activo: su

Si no especificamos nombre de usuario, su cambiará al usuario root. Lógicamente, se nos pedirá la contraseña del usuario al que queremos cambiar:

Comandos útiles para obtener información sobre los usuarios del sistema

  1. Con users vemos los usuarios conectados en este momento.
  2. groups nos muestra los grupos a los que pertenece el usuario actual.
  3. Dentro del directorio /home hay una carpeta por cada usuario creado. OJO: Si se hubiera eliminado algún usuario SIN haber usado el modificador -remove-home , la carpeta seguiría existiendo.
  4. El archivo /etc/group contiene una lista de usuarios por cada grupo.
  5. El archivo /etc/passwd contiene los usuarios del sistema y sus contraseñas… encriptados 😉

Gestión de permisos

  1. Muestra los permisos actuales de ficheros y directorios.
  2. Cambiamos los permisos del fichero fich1 en modo octal.
  3. Cambiamos los permisos del fichero fich1 en modo carácter.
  4. Cambiamos el usuario y el grupo propietarios del fichero fich1.
  5. Cambiamos el grupo al que pertenece el fichero fich1.

Permisos en modo octal

Se basa en asignar 0 (denegado) o 1 (concedido) a cada uno de los siguientes permisos, en este orden: R (lectura), W (escritura) y X (ejecución). Estos 3 dígitos se deberán repetir para el propietario del fichero, para el grupo y para el resto de usuarios. Así pues, obtenemos las siguientes combinaciones:
Permisos en modo Octal

Ejemplos:

Los dígitos corresponden a: PROPIETARIO del fichero, GRUPO y RESTO de usuarios. Por tanto:

    • PROPIETARIO: 6 => 110 => (RWX) R:1 W:1 X:0 => El propietario puede leer (R) y escribir (W), pero no ejecutar (X) el fichero.
    • GRUPO: 3 => 011 => (RWX) => R:0 W:1 X:1 => El grupo no puede leer (R), pero puede escribir (W) y ejecutar (X) el fichero.
    • RESTO DE USUARIOS: 5 => 101 => (RWX) R:1 W:0 X:1 => El resto de usuarios pueden leer (R), no pueden escribir (W) y pueden ejecutar (X) el fichero.
    • PROPIETARIO: 7 => 111 => (RWX) R:1 W:1 X:1 => El propietario puede leer (R), escribir (W), y ejecutar (X) el fichero. Es decir, acceso total.
    • GRUPO: 6 => 110 => (RWX) => R:1 W:1 X:0 => El grupo puede leer (R) y escribir (W), pero no ejecutar (X) el fichero.
    • RESTO DE USUARIOS: 6 => 110 => (RWX) => R:1 W:1 X:0 => El resto de usuarios pueden leer (R) y escribir (W), pero no ejecutar (X) el fichero.
    • PROPIETARIO: 7 => 111 => (RWX) R:1 W:1 X:1 => El propietario puede leer (R), escribir (W), y ejecutar (X) el fichero. Es decir, acceso total.
    • GRUPO: 7 => 111 => (RWX) R:1 W:1 X:1 => El grupo puede leer (R), escribir (W), y ejecutar (X) el fichero. Es decir, también cuenta con acceso total.
    • RESTO DE USUARIOS: 0 => 000 => (RWX) => R:0 W:0 X:0 => El resto de usuarios no pueden leer (R), ni escribir (W) ni ejecutar (X) el fichero. Es decir acceso denegado completamente al fichero.

Permisos en modo carácter

En este modo el comando chmod recibe los siguientes modificadores, en este orden:

  1. Primero especificamos a quién queremos dar o eliminar el permiso:
    • u (user): usuario propietario del fichero.
    • g (group): grupo.
    • o (others): resto de usuarios.
    • a (all): para todos. Equivale a usar “ugo”.
  2. A continuación especificamos si queremos dar o retirar permisos:
    • + : Concedemos permiso.
    • – : Denegamos permiso.
    • = : Asignamos permiso sobreescribiendo al permiso existente en este momento.
  3. Por último indicamos qué tipo de permiso queremos dar o retirar:
    • r (read): Permiso de lectura.
    • w (write): Permiso de escritura.
    • x (ejecución): Permiso de ejecución.:

Por ejemplo, si queremos obtener los mismos permisos que en el apartado anterior pero en modo caracter, los comandos a emplear serían:

  1. El propietario puede leer y escribir, pero no ejecutar; el grupo no puede leer, pero puede escribir y ejecutar; el resto pueden leer y ejecutar, pero no escribir.
  2. El propietario puede leer, escribir y ejecutar; el grupo puede leer y escribir, pero no ejecutar; el resto pueden leer y escribir, pero no ejecutar.
  3. El propietario puede leer, escribir y ejecutar; el grupo puede leer, escribir y ejecutar; el resto no pueden ni leer, ni escribir ni ejecutar.