General

Esta es la categoría general donde pongo los posts que no encajan con el resto de categorías. Y algunos posts, que aunque encajan en alguna otra categoría, también los he considerado de interés general en informática. Aquí puedes encontrar contenidos varios sobre utilidades como programas, sistemas operativos, herramientas de mantenimiento y cosas de este estilo que me han parecido interesantes.

SQLite con Java

2013-03-07 - Categorías: General

Hoy les dejo un acceso a una base de datos SQLite, que últimamente está tan de moda. SQLite se usa en todo tipo de programas, es de dominio público, se puede incluir en tu programa añadiendo alguna librería muy ligera, y te da casi todas las funcionalidades que te puede dar cualquier otra BD relacional (de las que usan SQL).

Materiales

  1. Una vez más, mi entorno de desarrollo favorito, el Eclipse que supongo ya instalado. También se puede seguir el post usando otro entorno http://www.eclipse.org/
  2. Una librería hecha por completo en Java para usar SQLite, un tal Taro L. Saito, de Xerial nos deja en su repositorio para descargar en https://bitbucket.org/xerial/sqlite-jdbc/downloads
  3. El JDK instalado http://www.oracle.com/technetwork/java/javase/downloads/index.html 

 Un poco de teoría

Lo que he averiguado en mis investigaciones, más que nada con lo que me han explicado amigos, es que SQLite lo que no tiene son claves ajenas, con lo que la integridad referencial no está implementada dentro de su llamemosle «motor de la BD» es que tenemos integridad referencial, claves ajenas. Se pueden usar disparadores (triggers), cuando se hagan inserciones, modificaciones o borrados. Podemos usar BLOBs, definir los tipos de datos de las tablas, y un largo etcétera…

Según pone en la Wikipedia http://es.wikipedia.org/wiki/SQLite, la versión 3 de SQLite admite archivos de 2 Terabytes con incluso tipos de datos BLOB, con lo que podemos almacenar ficheros dentro de la base de dato. Con ésto creo que tenemos bastante, por lo menos para empezar a trastear las BD sin tener que instalar todo un señor motor de BD como los de Oracle o MS SQL Server, o los que más me gustan a mi como PostgreSQL o Firebird. En Java funcionan todas éstas BD de manera parecida, la idea principal es usar el JDBC que proporciona un estándar de conexión para conexión a bases de datos desde Java.

Manos a la obra

Al grano, después de un poco de teoría, antes de empezar con el código, hay que preparar el proyecto en Eclipse:

  1. Creo un nuevo proyecto de Java.
  2. Copio la librería de SQLite, en el proyecto, Eclipse te deja coger y arrastrar el fichero al Explodor de Proyectos con lo que te proguntará si quieres copiar o hacer un enlace externo al fichero. Prefiero copiarlo dentro del proyecto porqué así siempre estará incluido si es que creamos un ejecutable o nos llevamos el proyecto a otro ordenador.
  3. No basta con copiar la librería, tenemos que agregarla al Build Path del proyecto. Con el botón derecho del ratón en el explorador de proyectos, le damos a Build Path > Configure Build Path… Le damos a Add JAR… y elegimos el fichero que ya está dentro del proyecto. Debes ver una ventana parecida a ésta:

Hecho ésto ya podemos usar la librería desde cualquier clase que creemos dentro de éste proyecto. Entonces ya sí que sí, que empezamos creando una nueva clase, con un main. Yo he usado el generador de código de Eclipse y me ahorro tiempo. Entonces el código de ejemplo con el que se crea un fichero bdpruebas.db, luego dentro crea una tabla llamada tablapruebas, y va insertando valores aleatorios del 1 al 100 con un índice. Queda así:

package SqlitePack;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ProbandoSqlite {

public static void main(String[] args) throws ClassNotFoundException {

Class.forName("org.sqlite.JDBC");

try {

// ESTABLECER LA CONEXIÓN
Connection conexion;
conexion = DriverManager.getConnection("jdbc:sqlite:bdpruebas.db");

// CREAR ENUNCIADO
Statement enunciado;
enunciado = conexion.createStatement();

// CREAR UNA TABLA NUEVA, LA BORRA SI EXISTE
enunciado.execute("DROP TABLE IF EXISTS tablapruebas;");
enunciado.execute("CREATE TABLE tablapruebas (id int primary key, aleatorio int);");

// INSERTAR DATOS
for (int i = 1; i <= 100; i++) {
enunciado.execute("INSERT INTO tablapruebas (id, aleatorio) values ("
+ i
+ ", "
+ Math.floor(Math.random() * 100 + 1) + ");");
}

// CONSULTA DATOS
ResultSet resultados;
resultados = enunciado.executeQuery("SELECT * FROM tablapruebas;");

// PROCESAR EL RESULTADO
while (resultados.next()) {
System.out.println("id " + resultados.getString(1)
+ ": aleatorio " + resultados.getString(2));
}

// CERRAR
resultados.close();
enunciado.close();
conexion.close();

} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
}

}

}

Lo que hace el código es crear tres objetos: conexión, enunciado y resultados. Con conexión como su nombre indica, nos conectamos a la base de datos, si el fichero no existe lo crea, ésto es un comportamiento propio de SQLite. Con el enunciado lo que venimos a tener es una especie de «mesa de trabajo» con lo que vamos a atacar la base de datos con todo tipo de consultas o sentencias SQL. Es interesante el PreparedStatement para mejorar el funcionamiento interno de nuestro programa pero eso es otro tema. Luego con el objeto resultados en éste ejemplo lo que se hace es almacenar los resultados de la consulta.

Las sentencias SQL que se han usado lo que hacen es borrar la tabla si existe, la crean y llenan la tabla con los INSERT INTO. La última consulta con el SELECT lo que hace simplemente es listar todos los resultados de la tabla.

Dejo el proyecto en descarga como viene siendo costumbre xD

Descargar

Terminando

Para terminar, si pulsamos F11 en la ventana de consola debemos ver en los resultados algo tal que así:

id 1: aleatorio 4
id 2: aleatorio 70
id 3: aleatorio 94
id 4: aleatorio 40
id 5: aleatorio 86
id 6: aleatorio 40
id 7: aleatorio 89
id 8: aleatorio 80
id 9: aleatorio 79
id 10: aleatorio 14
id 11: aleatorio 69
id 12: aleatorio 2
id 13: aleatorio 12
id 14: aleatorio 62
id 15: aleatorio 74
id 16: aleatorio 53
id 17: aleatorio 45
id 18: aleatorio 44
id 19: aleatorio 56
id 20: aleatorio 40
id 21: aleatorio 81
id 22: aleatorio 75
id 23: aleatorio 97
id 24: aleatorio 78
id 25: aleatorio 63
id 26: aleatorio 30
id 27: aleatorio 13
id 28: aleatorio 21
id 29: aleatorio 68
id 30: aleatorio 58
id 31: aleatorio 25
id 32: aleatorio 92
id 33: aleatorio 88
id 34: aleatorio 77
id 35: aleatorio 38
id 36: aleatorio 45
id 37: aleatorio 18
id 38: aleatorio 47
id 39: aleatorio 60
id 40: aleatorio 51
id 41: aleatorio 90
id 42: aleatorio 90
id 43: aleatorio 96
id 44: aleatorio 34
id 45: aleatorio 47
id 46: aleatorio 89
id 47: aleatorio 97
id 48: aleatorio 58
id 49: aleatorio 78
id 50: aleatorio 49
id 51: aleatorio 23
id 52: aleatorio 82
id 53: aleatorio 12
id 54: aleatorio 92
id 55: aleatorio 51
id 56: aleatorio 99
id 57: aleatorio 56
id 58: aleatorio 9
id 59: aleatorio 14
id 60: aleatorio 1
id 61: aleatorio 4
id 62: aleatorio 80
id 63: aleatorio 80
id 64: aleatorio 97
id 65: aleatorio 89
id 66: aleatorio 47
id 67: aleatorio 3
id 68: aleatorio 73
id 69: aleatorio 34
id 70: aleatorio 99
id 71: aleatorio 22
id 72: aleatorio 38
id 73: aleatorio 69
id 74: aleatorio 22
id 75: aleatorio 6
id 76: aleatorio 97
id 77: aleatorio 28
id 78: aleatorio 47
id 79: aleatorio 21
id 80: aleatorio 50
id 81: aleatorio 89
id 82: aleatorio 22
id 83: aleatorio 71
id 84: aleatorio 98
id 85: aleatorio 45
id 86: aleatorio 20
id 87: aleatorio 12
id 88: aleatorio 29
id 89: aleatorio 75
id 90: aleatorio 11
id 91: aleatorio 54
id 92: aleatorio 24
id 93: aleatorio 86
id 94: aleatorio 89
id 95: aleatorio 90
id 96: aleatorio 39
id 97: aleatorio 34
id 98: aleatorio 1
id 99: aleatorio 37
id 100: aleatorio 66

Ya les dejo con ésto, espero que a alguien le sirva, un saludo.


Java hasta la médula de Linux

2013-02-23 - Categorías: General
Un día más, curioseando con mi Eclipse, probando a ver si ponía en marcha EGit para usar repositorios Git llego a encontrar un curioso proyecto que está llevando a cabo Pekka Enberg. Pekka es un ingeniero finlandés que dirige el Jato: a JIT-only virtual machine for Java. Que viene a ser un compilador de Java pero que va incluido como un módulo del Kernel de Linux.

Viene a ser una implementación «open source» de la máquina virtual de Java, dando soporte a la especificación Java SE Edición 7.

Antes de la versión 7 de Java, Linux no debía incluír la máquina virtual de Java en sus distribuciones. En la versión 7, lo que se ha hecho con Java principalmente es extraer de la máquina virtual las librerias propietarias, dejando sólo las librerías de las que se tiene el código fuente, que no son propietarias y son gratuitas, con lo que ya se puede usar la JVM como si de un programa GNU fuera, resumiendo a groso modo. Éste era un sueño que tenía Sun antes de su desaparición por ser absorbida por la macroempresa Oracle. Al final muchos propietarios de las librerías han liberado sus códigos y otros, reticentes, han sido excluidos de la versión 7 y reemplazados por otros. Ya hace tiempo de la primera versión de la JVM 7 pero es importante para ponerse en situación.
Java, como principal, o como uno de los principales lenguajes de programación, se está asentando fuertemente en el mundo Linux. Líder en la implantación de nuevos servidores, Linux está siendo una alternativa más que buena en los nuevos sistemas, y Java está afianzándose hasta la médula con éste «nuevo» módulo del kernel. A fecha en que escribo ya van tres años desde los primeros pasos del módulo, va por la versión 0.3. Les dejo unos enlaces para los más curiosos:

Sin tiempo…

2013-02-15 - Categorías: General
Un panadizo, una mudanza, una desconexión total a Internet después…  y ya estoy por aquí de nuevo. Estos últimos días han sido demasiado cortos como para tener tiempo para escribir algún post, no me he olvidado ni he decidido dejar de escribir, si no que no ha sido posible aunque he estado buscando tiempo de debajo de las piedras para poder seguir escribiéndoles.
He visto que las visitas han seguido subiendo, parece ser que los post han sido, por lo menos algo interesantes. Ésto me anima mucho a seguir, así que espero pronto poder dedicar algo más de tiempo al Blog, que le estoy cogiendo el gusto a esto de escribir en un Blog.. xDD
Un saludo.

Los Reyes Magos les habian traido virus a los de Oracle

2013-01-13 - Categorías: General
Parece ser que los Reyes Magos les han traido virus al final a los de Oracle, ¿tan malos han sido en 2012?

Antes de nada gracias por la información que me habeis enviado sobre el problema que corría últimamente por Internet sobre Java. Se estan llenando los titulares de la noticia, con contenidos tremendistas haciendo eco de las resoluciones de los expertos recomendando desinstalar incluso completamente Java de nuestras máquinas:
http://www.fayerwayer.com/2013/01/se-recomienda-desinstalar-java-ahora-mismo-tras-el-descubrimiento-de-grave-vulnerabilidad/
http://www.20minutos.es/noticia/1698519/0/recomiendan/desactivar-java/fallo-seguridad/
Java viene a ser el lenguaje más utilizado en programación de los últimos años, y como no, cualquier noticias de ésta índole llama mucho la atención. Java está en el punto de mira de muchos, su máquina virtual está instalada en muchos dispositivos, y sus programas se pueden ejecutar en todos lados.
Si te pones en la piel de un virus, lo mejor que querrías tener es tener tu código precompilado en bytecodes compatibles con la JRE para poder ejecutarte en toda máquina compatible con Java. Pues ésto es lo que ha pasado. Y viene pasando últimamente cada vez más. Pero me he molestado un poco en investigar y quitarle un poco de leña al fuego, averiguando en que consiste exactamente ésta vulnerabilidad.
http://www.genbeta.com/seguridad/una-vulnerabilidad-de-java-no-resuelta-compromete-la-seguridad-de-nuestros-equipos
http://www.torontosun.com/2013/01/12/java-security-fixing-coming-shortly-oracle-corp

Resulta que el problema está en el plugin que ejecuta Java en los navegadores. Es decir, los virus que se cuelan en tu ordenador lo hacen a través del plugin Java para el navegador. Bastaría con desactivar dicho plugin para evitar contagio. O simplemente no entrando en páginas web con contenido dudoso.

El problema está en la JRE 1.7 update 10, lo que estoy leyendo es que algunos escritores dicen que en todas las anteriores versiones también existía y otros que no, así que mejor no digo nada al respecto. Para desactivar Java en nuestro navegador, por lo menos hasta que solucionen el problema, a continuación dejo el link por si tienes la versión 10 de Java 7:
http://www.java.com/en/download/help/disable_browser.xml
Simplemente deshabilitándolo desde el panel de control de Java ya estamos más «seguros».
En fin, ésto es lo que tiene ser una de las tecnologías más usadas. Mientras que Java sea uno de los principales lenguajes de programación seguira siendo foco de ataques a sus fallos de seguridad. Igual ha venido siendo con Windows desde siempre, al ser el Sistema Operativo más usado y no por ello hemos dejado de usarlo. También le ha pasado a los de Apple con más que muchos ordenadores infectados, incluso sin ningun antivirus instalado porque nos pensamos falsamente: «Un Mac no tiene virus.». Y veremos a ver qué pasa con Android y otros Sistemas Operativos a medida que vengan siendo más utilizados. Serán siendo foco de los creadores de virus.

Pero bueno, yo que invierto tiempo con Java, ésta noticia me tocaba el alma.

Un saludo.


Mozilla Firefox: el zorro cada vez más rápido

2013-01-11 - Categorías: General
Cuanto más leo más me sorprende su historia y rumbo que llevan los desarrollos, tanto de la Fundación Mozilla, como en concreto, de su caballo de batalla, el Mozilla Firefox. Hoy he actualizado a la versión 18 del Firefox y me he puesto manos a la obra para éste post. Desde el Netscape, rivalizando con el Internet Explorer y con Chrome también, viene a ser un caso de estudio y una opción nada desechable.

En algunos desarrollos, tratando de seguir al 100% los estándares del Consorcio W3 que dirigen el cotarro, me he llegado a encontrar con problemas a la hora de visualizar o con el funcionamiento de la interfaz por problemas de compatibilidad entre navegadores. Según el que utilizaba cambiaba su funcionamiento. Donde se alineaba a la izquierda o derecha en una tabla con columnas agrupadas, ahora se alineaba al centro en otro navegador; aparte de los clásicos problemas con el vídeo y sonido al usar HTML4, resulta que los navegadores toman por defecto unos valores u otros. 
Total que acabo instalándome los principales navegadores para hacer las pruebas:
Safari
…en orden de uso. Cabe indicar que si usas Windows se complica encontrar la versión de Safari, pero al final buscando desde Google que todo lo encuentra me descargo la versión 5.1.7. Cuál será la razón por la que Apple no nos da el Safari con fácil acceso desde su web.
Leyendo un poco sobre Firefox resulta que viene a ser el único navegador de los principales, que no está desarrollado ni soportado por una empresa con ánimo de lucro. Ésto lo hace cada vez más interesante, sobre todo para mí que pienso que las soluciones gratuitas, con código fuente libre, son una de las opciones más interesantes, no sólo por su coste cero, sino también porque vienen siendo soluciones cada vez más probadas y con gran cantidad de usuarios. Será porque funcionan realmente bien.
Haciendo un repaso a lo que ha sido 2012 para Mozilla:
Se han añadido todo tipo de compatibilidades. Y después de haberse quedado un poco retrasado en cuestión de velocidad de funcionamiento, comparándolo con los demás navegadores… ahora viene cogiendo carrerilla y con la versión 18 destaca su velocidad, mejorada una vez más. Compatibilidad con tabletas. Funciones de programación avanzada con Javascript, como el BananaBread. La inclusión del IonMonkey para compilar Just-In-Time las aplicaciones Javascript y correr a toda velocidad…
En fin otra joya de la informática, que al ser desarrollado sin ánimo de lucro, no tenía otra opción que recomendarlo. Así que si no te has instalado el Firefox, ya estás tardando… xD
Si tiene tiempo, no se deje por probar el BananaBread.

Mapas conceptuales y construcción del conocimiento con Freeplane

2013-01-06 - Categorías: General
Ya han venido los Reyes Majos, y os han dejado virus para los que habeis sido malos. Y para los que habeis sido buenos os han dejado un buen programa que curiosear, el Freeplane. A fecha de hoy la versión que tengo es al 1.2.20 del Freeplane, lo he probado con el JRE 7 en un Windows 7.
Aún con mi edad sigo estudiando, sobre todo en la informática si no te actualizas frecuentemente te quedas obsoleto, desfasado, finito… He estado preparando unos exámenes en éstos días y he estado complicándome la vida un poco en buscar un programa que me sirva para organizar mis ideas. No soy vago a la hora de coger papel y lápiz para hacerme esquemas o resolver los problemas sobre el papel antes de pasarlos a limpio. Pero con todo lo que avanza las TI (Tecnologías de la Información), vienen siendo útil todos éstos programas que nos hacen la vida un poco más fácil.
Como buen fan del software GNU, del gratuito, o de los programas con licencias o versiones gratuitas. Les presento el Freeplane para el que no lo conozca. Nació del archiconocido FreeMind, que a fecha de hoy anda un poco desactualizado. Viene a ser la continuación del FreeMind, cuyos códigos fuentes iniciales son los propios del FreeMind, pero han ido añadiendo más y más funciones como exportar en formato PDF, en HTML, en imágenes tanto vectoriales (SVG) como normales (JPG, PNG…), etcétera. Nos permite cambiar los estilos de cada nodo, las formas de las llaves, las flechas, añadir iconos a los nodos, podemos poner textos grandes en un nodo, o incluso enlazar a páginas web o archivos externos desde nuestros esquemas.
Como dice en su Acerca de… es un programa libre para creación de mapas conceptuales y construcción del conocimiento. Su licencia es GNU, con lo que se puede usar para trabajar o de forma personal sin coste alguno. Rivaliza con el XMind que viene siendo también un referente en éste campo, también es multiplataforma, disponible para Windows, Linux y Mac, está hecho en Java y funciona de maravilla todo lo que he probado.
Tiene innumerables opciones. El ejemplo que nos enseña el programa nos puede mostrar en líneas generales para qué lo podemos usar:
Yo lo tengo en castellano, haciendo click en el menú Ayuda->Documentación te saldrá un esquema como el de la imagen de abajo donde se puede aprender a usar todo lo que se necesite llegado el momento. Hasta tiene una opción en Ayuda->Pedir una Característica nueva que me sorprende que exista. En fin, toda una joya de la informática.

Para instalártelo, leer más sobre él o lo que sea:

http://freeplane.sourceforge.net/

Un saludo!


Google Drive vía web en 3 sencillos pasos

2012-12-09 - Categorías: General

Me hago eco de una noticia que últimamente está corriendo por Internet, con una guía, a mi entender bastante complicada para poner una web o archivos en descarga directa en Google Drive. La fuente de la noticia que leo es:

http://www.pcactual.com/articulo/actualidad/noticias/12064/google_drive_permite_publicar_contenido_web.html

… buscando un poco más, encontré la guía de Developers de Google:

https://developers.google.com/drive/publish-site

He hecho un par de pruebas, aparte de que está en inglés, se habla del webViewLink y de programar para crear un directorio público :S todo ésto se me va complicando… Una web de ejemplo que nos han dejado los de Google es:

https://googledrive.com/host/0B716ywBKT84AcHZfMWgtNk5aeXM/

Resumiendo

Voy a ir al grano, reduciendo todo el proceso anterior, lo que necesitas es conseguir la cadena que identifica tu directorio que vas a usar para poner tus archivos. En el ejemplo anterior de la gente de Google, es 0B716ywBKT84AcHZfMWgtNk5aeXM, éste es su identificador para el ejemplo que se han currado. Nosotros entonces podemos reducir el proceso, y para ello sólo hay que seguir 3 pasos:

  1. Crear una carpeta dentro de tu Google Drive.
  2. La compartes como público en la web. Con lo que te van a dar un enlace como el siguiente https://docs.google.com/folder/d/cadenaQueIndicaTuDirectorio/edit (lo puedes ver en la ventana que sale para configurar como compartes el directorio).
  3. Ya sólo tienes que poner tu cadenaQueIndicaTuDirectorio en la dirección URL para que se pueda acceder desde un navegador.

Podrás acceder y enviar tu dirección a quien quieras, y los archivos podrán verse de la forma:
https://googledrive.com/host/cadenaQueIndicaTuDirectorio/index.html
https://googledrive.com/host/cadenaQueIndicaTuDirectorio/miArchivo.zip
https://googledrive.com/host/cadenaQueIndicaTuDirectorio/loQueSeaQueQuieraPublicar.extension
etcétera…

Si pones en éste directorio un archivo index.html y el resto de una página web, ya tienes acceso directo como en cualquier hosting. Puedes usar las tecnologías de programación cliente, como HTML, CSS, Javascript… Lo único malo es la dirección URL tan compleja, pero también se puede redirigir un domonio ocultando éste URL. De todas maneras dependes de lo que haga Google con tu cuenta de Drive. Pero ya es bastante lo que nos estan dando, que es gratis, o por lo menos yo me beneficio de su cuenta gratuita…

Un saludo!


Multiprocesamiento en Java: ¡Dale caña a tu procesador!

2012-11-17 - Categorías: General / Java

Multiprocesamiento, como reza la Wikipedia, se refiere a la ejecución de varios procesos de manera concurrente, es decir, a la vez. Con los nuevos procesadores que cada vez nos traen más núcleos, he visto que ésto viene a ser más importante. Con Java el multiprocesamiento para aprovechar los núcleos de uno o varios procesadores viene gestionado con la máquina virtual de Java. Es decir, sólo tendremos que preocuparnos de hacer el programa de manera que se puedan ejecutar ‘a trozos’, poner cada tarea en un hilo de ejecución y luego la máquina virtual se encargará de gestionarlo todo.

Ésto es lo mismo que viene ocurriendo con los Sistemas Operativos (SO). Tenemos muchos procesos que se ejecutan desde que arrancamos el ordenador, y el SO se encarga de gestionar qué se ejecuta en cada momento. De igual manera nosotros en Java podemos gestionar qué se ejecuta o que se queda esperando, también podemos decirle a todas las tareas que se ejecuten a la vez simplemente sin esperar unas a otras ni nada parecido. Ésto es lo que vamos a ver con el ejemplo sencillo de a continuación, donde se van a crear dos tareas, a y b, y se van a ejecutar concurrentemente.

Continuar leyendo..

El SlideShow más simple con jQuery

2012-11-14 - Categorías: General

Un slideshow viene a significar visor de imágenes o diapositivas que van pasando una tras otra.

Estuve buscando para descargar slideshows para web. Encontré de todo tipo, muy elaborados y con muchos extras, unos de pago y otros gratis, pero no era lo que yo quería. Buscaba algo lo más sencillo posible para adaptarlo luego donde lo necesite y al final acabé programándolo a partir de jQuery.

Aquí va el código para el que lo necesite:

<html>
<head>
<!– Con ésto incluyes el jquery en tu web usando en CDN de Google –>
<script src=»https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js»></script>
</head>
<body>

<img id=»imagenslide» src=»imagenes/imagenInicial.jpg» alt=»Imagen de una mascota..» />

<script>
  cambiaSlideShow();

function cambiaSlideShow() {
// variables para configurar
var dirImagenes = ‘imagenes/’; // directorio donde estan
 // las imágenes, se deben nombrar de la forma
 // 1.jpg
 // 2.jpg
 // etcétera…
var numImagenes = 3; // número de imágenes que hay

// elige un número aleatorio para mostrar las imágenes
// aleatoriamente
var randomNum = Math.ceil(Math.random() * numImagenes);

// con ésto la imagen desaparece y cuando ha desaparecido
// cambia de imagen
$(‘#imagenslide’).fadeOut(3000,
function () {$(‘#imagenslide’).attr(‘src’, dirImagenes + randomNum + ‘.jpg’);}
);

// con ésto otro la imagen aparece con un efecto fade de nuevo
$(‘#imagenslide’).fadeIn(3000);
setTimeout(function () {cambiaSlideShow(); }, 7000);
}

</script>
</body>
</html>

Y un archivo para descargar el ejemplo haciendo click aquí.
Ten en cuenta que debes poner las imágenes en el directorio dirImagenes que tengas en dicha variable.

Un saludo.


Ponle un Favicon a tu web

2012-11-13 - Categorías: General
Ya le he puesto al blog un Favicon, y les dejo un nuevo post.
Cuando navegas por Internet, las páginas muestran un icono en tu navegador. Cuando agregas dicha web a Favoritos, Marcadores, o como se llame en el navegador que uses.. También verás dicho icono asociado a dicha página web. Ésto es lo que se llama ‘el Favicon’.

Favicon, viene de Favourites Icon, icono de favoritos en castellano. Nació para darle mejor estética al listado de páginas de nuestra lista de páginas web favoritas. Y si quieres que tu web tenga una imagen de éstas lo único que debes hacer es usar un código tal que así:

<html>
<head>
<title>Aquí va el título</title>
<link href=»http://direcciondetuweb/favicon.ico» rel=»icon» type=»image/x-icon»>
</head>
<body>
<p>Contenido de la página.</p>
</body>
</html>

La imagen debe ser de 16×16 pixeles tradicionalmente, también puede ser de 32×32, incluso se pueden usar en algunos navegadores imágenes en JPG, PNG y GIF. Pero éstas otras opciones no son totalmente estándar y puede que no funcionen en todos los navegadores.
En éste blog, gracias a Blogger, tengo disponible el gadget llamado tal cual Favicon, que automáticamente me genera el código de aquí arriba. Yo te lo he detallado por si acaso lo usas en otro sitio.
Así que, después de éste post ¿no merece que agregues ésta web a favoritos? agregame a favoritos y así me visitas de vez en cuando 😉
Un saludo.

Cómo montar un servidor propio con Joomla y Uniform Server

2012-11-05 - Categorías: General
Hola! Ya tengo algo de tiempo, estoy poniéndome al día y navegando veo que hay una nueva versión de Joomla, la 3.0.1. También veo que tengo disponible una nueva versión del Uniform Server, tengo la 8.5.7 y ya existe la 8.6.7, así que me he puesto las pilas para actualizarme y de paso os hago éste post.
Joomla ya es compatible con móviles, es la primera plataforma web compatible 100% con móviles, eso escriben en JoomlaSpanish.org. Así que con ésto, es un buen momento de probar la nueva versión.
Si estas aquí supongo que ya sabrás que Joomla es un CMS, un sistema para manejo de contenidos, y que el Uniform Server es un servidor de páginas web con base de datos MySQL y otros extras más… Si no lo sabías ya lo sabes, Joomla es una aplicación web, que instalada en un servidor web, te proporciona todas las utilidades necesarias para gestionar una página web medianamente compleja.
No voy a entrar en detalle sobre las diferencias entre usar un CMS ya hecho, usar un framework de desarrollo de webs, o programar todo directamente desde cero. Tal vez en otro post.
Asi que empezemos a montar un servidor propio…
Un poco de teoría
Antes de entrar directamente a instalar programas, sin saber lo que estamos haciendo debemos saber algunas cosas. Si eres un veterano, o muy valiente, pásate éste apartado xD
Todo en Internet, mientras navegamos, ocurre de la misma manera. Tenemos nuestro navegador, en el que ponemos las direcciones de Internet, le damos al Enter o al botón de turno, y mágicamente nos sale la página web. A ver, hay que entender que es lo que ocurre. Tenemos lo que se llama un cliente (navegador), y un servidor (el programa que nos envía a nuestro ordenador la página web y la podemos ver en nuestro navegador). Éste servidor web es lo que vamos a instalar. Y en concreto, el Uniform Server, que me atrevo a decir es muy buena opción.
Lo que vamos a hacer es simular lo que ocurre en Internet mientras navegamos, pero en nuestro ordenador en red local.

Ingredientes
  1. Uniform Server.
  2. Joomla en versión castellano.
El Joomla, en castellano, lo tienen en http://www.joomlaspanish.org/
Uniform Server es un proyecto en SourceForge.net, disponible en:
Y su página oficial es:
Sobre los ingredientes
He probado el XAMPP, que también es una buena opción, pero he elegido el Uniform Server para el trabajo de servidor web Apache con PHP y MySQL porque no hay que instalarlo, símplemente se descomprime. Y además es portable, es decir, que lo puedes llevar en un USB con toda tu web configurada y ejecutarla en cualquier ordenador con Windows sin tener que instalar todos los programas asociados a un servidor web (que pueden llegar a ser muchos).
Por otro lado, Joomla no es sólo un CMS, sino que también es un framework de desarrollo de aplicaciones web. La comunidad de Joomla, surgió del antiguo Mambo. He leido que hubo conflicto entre algunos de los actuales desarrolladores de Mambo y algunos de Joomla, que antes programaban juntos en Mambo, entonces se dividieron creando Joomla a partir de una versión de Mambo. No voy a entrar en la rumorología, el hecho es que Joomla surgió de Mambo, otro CMS anterior. Y ahora según las últimas estadísticas Joomla es el CMS más utilizado.
Joomla está construido en PHP, y actualmente trabaja sobre MySQL y se está añadiendo que pueda trabajar con otras bases de datos a fecha de hoy. Ésto es muy resumido porque Joomla es muy extenso e incluye gran cantidad de componentes. Es decir, tenemos un monton de archivos que descargaremos de la página, y éstos archivos van a ejecutarse de manera que todos los datos de Joomla se van a guardar en una base de datos. Es importante saber ésto porque tanto los archivos del directorio, como lo que haya en la base de datos forman tu web, no puedes separarlos.
El servidor web
Muy bien, llegado éste momento. Ya debemos tener descargados los archivos para el Joomla y el UniServer. Vamos a descomprimir primero el UniServer la versión completa del server, se llama Coral, debe ser uno llamado Coral_version.exe. Al arrancarlo te pide la carpeta donde lo quieres instalar, yo le he puesto C: y entonces me queda una estructura tal que así:
Arrancas el archivo Start_as_service.exe para usarlo como servicio instalándolo dentro del propio Windows. De ésta manera cada vez que arranques de nuevo Windows estará funcionando. Si lo prefieres usar como un programa sin instalarlo, puedes arrancar Start_as_program.exe y no necesitarás instalarlo como servicio. Yo lo tengo instalado como servicio, como podeis ver en la imagen.
Si no queremos complicarnos, sólo queda descomprimir el archivo de Joomla en el directorio C:UniServerwww y ya tendremos el servidor propio de Joomla en nuestro ordenador. Y accediendo a http://localhost/ veremos el Joomla que nos pide los datos para configurar la web.
Ésto es lo estrictamente necesario, de ésta manera te limitas a sólo tener una página web, y pierdes la página principal del UniServer. Yo prefiero configurarlo de otra manera, usando «hosts virtuales» y poniendo cada web en la carpeta que yo quiera. Me gusta tenerlo todo muy organizado, cada cosa en su carpeta, y poder acceder a cada página web de nuestro ordenador de la forma siguiente, por ejemplo:
http://localhost/  <- ésta es la página principal de nuestro servidor
http://unapaginajoomla/ <- ésta es la página web que vamos a configurar
http://temporal/ <- otra página web
etcétera…
Imaginemos que hemos puesto en D:MisPaginasWebunapaginajoomla los archivos de Joomla descomprimido, y en D:MisPaginasWebtemporal otra página web.
Vamos entonces a configurar los llamados «hosts virtuales», de manera que tengamos varios hosts en nuestra misma máquina. Entonces abrimos el panel de control del Uniform Server. Vamos a Server Configuration -> Apache -> Apache Vhosts. Entonces elegimos directorio D:MisPaginasWebunapaginajoomla, le ponemos el nombre debajo (en éste caso «unapaginajoomla») y confirmamos, y si no hemos tenido error le damos a Create Vhost. Reiniciamos el Apache con el panel de control del UniServer y ahora ya podremos acceder al Joomla que acabamos de descomprimir mediante el navegador poniendo http://unapaginajoomla/
Lo mismo podemos hacer con el directorio D:MisPaginasWebtemporal poniéndole como nombre de host virtual ‘temporal’ por ejemplo. Y así tantos hosts como queramos.
Yo prefiero tenerlo así para tener todas las páginas web localizadas en un directorio. Y a la vez puedes configurar tu entorno de desarrollo web para que acceda a esos directorios. Esto te puede ayudar a programar más organizadamente, pero ya entramos en otro tema que no viene al caso en éste post.
Podemos configurar el servidor de forma que nos sirva para un entorno de producción, o para desarrollo. Si estás programando en PHP o construyendo una web nueva con Joomla, te interesará activar ésto:
Dentro del panel de control del UniServer, entras a:
Server Configuration -> PHP -> Switch to Developement Configuration file
Así verás cualquier error o advertencia mientras que trabajas con el Joomla.
El CMS
Recapitulando, si todo ha ido bien ya tenemos Joomla en una carpeta, que yo he puesto en D:MisPaginasWebunapaginajoomla y que tiene un host virtual asociado. Ahora resulta que accedemos a la siguiente dirección:
Y ahora sí, vamos a configurar Joomla para poder crear contenido. La primera vez nos veremos el sistema de instalación tal que así:
Aquí arriba vemos que se ha simplificado enormemente los pasos de instalación en sólo tres. La ayuda proporcionada por el sistema está muy bien como para yo tener que explicar nada más.
A continuación veo que se ha añadido soporte para PostgreSQL, una gran base de datos. La comunidad de usuarios de Joomla llevaba tiempo queriendo tener soporte para otras bases de datos y ya por fin llegó.
Ponemos los datos de conexión a nuestra base de datos y al darle a siguiente tendremos el tercer y último paso con información sobre la instalación. Podemos aquí instalar datos de ejemplo para poder ver algo mientras que lo probamos.
Para terminar le damos a instalar y ya está, tendremos nuestra nueva y flamante página web, toda gestionada por Joomla, y en un servidor propio instalado en nuestro ordenador.
Terminando
Me sorprende todos los cambios de los últimos meses en Joomla, la interfaz es mucho más limpia. En fin, me parece una gozada el buen trabajo que esta haciendo la gente de Joomla. A ver si en otro post puedo entrar a destripar el Joomla, que tiene muy buena pinta ¿verdad? jejeje
Con ésto ya les dejo.
Un saludo

Cómo hacer una plantilla para Joomla

2012-10-21 - Categorías: General

Hablando sobre la creación de páginas web con CMSs. Podemos llegar a ver que la cantidad de CMSs que hay para poner en marcha una web sin programar nada de código fuente es muy grande. He visto que los principales vienen siendo WordPress, Drupal y Joomla. Y en orden de gente que los usa, Joomla viene ganando, o por lo menos eso es lo que he leido en varias páginas de habla hispana y a fecha de hoy.

Me decidí a aprender Joomla en un principio, pero acabé probando WordPress y Drupal también. El Joomla para el que va éste post es la versión 2.5 y tal vez sirva también para los de la 1.5 y en futuro. Yo de momento la versión que tengo instalada es la 2.5 y es la que he usado para escribir éste tutorial.

Vamos a comenzar por ver la estructura en líneas generales de Joomla, si vamos al directorio, por los nombres podremos hacernos una idea de que la carpeta templates/ (plantillas en castellano) es la carpeta en cuestión que nos interesa.

administrator/
cache/
cli/
components/
images/
includes/
language/
libraries/
logs/
media/
modules/
plugins/
templates/
tmp/
uploads/
configuration.php
favicon.ico
htaccess.txt
index.php
LICENSE.txt
README.txt
robots.txt
web.config.txt

Dentro de la carpeta tenemos las carpetas correspondientes a todas las plantillas que tenga instaladas nuestro Joomla. Podemos editarlas directaremente de aquí, o a través del administrador de Joomla, actualizamos la página y los cambios se verán.

La plantilla ‘atomic’ es una plantilla básica, sin muchas florituras, para que hagamos a partir de ella, la nuestra propia. Pero mirando los archivos que la componen podemos ver que hay demasiado código fuente si es que estas haciendo tu primera plantilla, así que vamos a crear otra más simple todavía y luego le podrás añadir todo lo que quieras.

La plantilla básica ‘atomic’ que proporciona Joomla tiene la siguiente estructura:

css/      <- aquí van las hojas de estilo
html/    <- páginas html peladas
images/     <- imágenes de la plantilla

js/      <- scripts de javascript

language/     <- archivos para las traducciones
component.php   <- para mostrar el contenido de los componentes
error.php    <- página de error
favicon.ico   <- el icono de la web
index.html    <- el index en html
index.php    <- el index en php
template_preview.png    <- vista previa de la plantilla
template_thumbnail.png    <- imagen pequeña de la vista previa
templateDetails.xml      <- descripción de la plantilla, para uso interno

Hay plantillas muy grandes, con muchos añadidos, pero ésta que suponemos básica vamos a reducirla de la manera siguiente. Sólo necesitamos lo siguiente para nuestra nueva plantilla:

css/      
favicon.ico   
index.php   
template_preview.png  
template_thumbnail.png  
templateDetails.xml    

Todo ésto lo creamos en una carpeta nueva, yo la he llamado mynew/ dentro de la carpeta templates/ 
Y dentro de la carpeta css/ vamos a crear un archivo llamado ‘template.css’ para hacer la presentación mediante CSS. No se recomienda poner la estructura de una página web mediante tablas ni directamente formateando el archivo index.php. Ésto es porque no todos los navegadores interpretan exactamente igual las etiquetas HTML, sin embargo mediante CSS tenemos un control mucho mejor, afinando incluso pixel a pixel las posiciones y tamaños de todo. Así que vamos con esto y veremos que simple va a quedar y se va a entender cómo funciona todo.
El archivo index.php de ejemplo que vamos a usar es:
<?php defined( ‘_JEXEC’ ) or die( ‘Restricted access’ );?>
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN»
  «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml» 
   xml:lang=»<?php echo $this->language; ?>» lang=»<?php echo $this->language; ?>» >
<head>
<jdoc:include type=»head» />
<link rel=»stylesheet» href=»<?php echo $this->baseurl ?>/templates/mynew/css/template.css» type=»text/css» />
</head>
<body>

<div id=»arriba»><jdoc:include type=»modules» name=»arriba» /></div>
<div id=»izquierda»><jdoc:include type=»modules» name=»izquierda» /></div>
<div id=»derecha»><jdoc:include type=»modules» name=»derecha» /></div>
<div id=»contenido»><jdoc:include type=»component» /></div>
<div id=»abajo»><jdoc:include type=»modules» name=»abajo» /></div>

</body>
</html>
No voy a explicar en éste minitutorial cómo se maqueta con CSS porque es muy extenso. La idea es que hay que poner todo con DIVs y esos DIVs se posicionan en el navegador mediante el archivo CSS que luego veremos.
Si queremos usar un archivo desde el index.php debemos usar la instrucción PHP: <?php echo $this->baseurl ?> como se usa en el ejemplo anterior, por ejemplo, para incluir el archivo template.css
Las posiciones vienen definidas por: <jdoc:include type=»modules» name=»nombrePosicion» /> y podemos poner tantas posiciones como queramos.
La posición principal que va a mostrar el contenido viene definida por: <jdoc:include type=»component» /> que sólo la vamos a poner una vez.
Ahora nos queda hacer el CSS y el templateDetails.xml. El favicon.ico y los archivos PNG, son imágenes, el favicon es el icono que sale en el navegador cuando alguien nos visita en la página, y los archivos PNG son los vistas previas, en grande y pequeño, que muestra Joomla dentro del gestor de plantillas. Así que seguimos con el CSS (hoja de estilo para los amigos) llamado ‘template.css‘, por ejemplo ponemos:
#arriba {
  position: fixed;
  left: 0px;
  top: 0px;
  width: 100%;
  height: 30px;
  background-color: blue;
}
#izquierda {
  position: fixed;
  left: 0px;
  top: 30px;
  width: 100px;
  height: 100%;
  background-color: green;
}
#derecha {
  position: fixed;
  right: 0px;
  top: 30px;
  width: 100px;
  height: 100%;
  background-color: red;
}
#contenido {
  margin: 40px 110px 40px 110px;
  background-color: grey;
}
#abajo{
  position: fixed;
  left: 0px;
  bottom: 0px;
  width: 100%;
  height: 30px;
  background-color: blue;
}
El archivo templateDetails.xml es el archivo que define todo lo que necesita Joomla para poner las cosas en las posiciones en concreto y los contenidos. Un ejemplo para mi plantilla que he hecho llamada ‘mynew’ es:
<?xml version=»1.0″ encoding=»utf-8″?>
<extension version=»1.6″ type=»template»>
<name>mynew</name>
<creationDate>2012-10-21</creationDate>
<author>Yo mismo</author>
<authorEmail>Aquí v@ tu email .com</authorEmail>
<authorUrl>http://elblogdejnj.blogspot.com</authorUrl>
<copyright>http://elblogdejnj.blogspot.com 2012</copyright>
<license>GNU/GPL</license>
<version>1.0.0</version>
<description>My New</description>
<files>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>favicon.ico</filename>
<filename>template_preview.png</filename>
<filename>template_thumbnail.png</filename>
<folder>css</folder>
</files>
<positions>
<position>arriba</position>
<position>izquierda</position>
<position>derecha</position>
<position>abajo</position>
<position>contenido</position>
</positions>
</extension>

Llegado éste punto, acabamos de crear la nueva carpeta dentro de templates/ y hemos puesto todos estos archivos. Ahora resulta que tal cual Joomla no ve la plantilla dentro del administrador de plantillas. Podemos ir al Gestor de Extensiones y darle a Encontrar, con lo que Joomla buscará todo lo que hayamos puesto manualmente sin usar el instalador de Joomla. Ahora ya veremos la nueva plantilla en el Gestor de Plantillas, la ponemos como plantilla del sitio y nuestro sitio tendrá la apariencia que acabamos de hacer.

Ahora podemos editar éstos archivos directamente, añadirles imágenes, cambiar la hoja de estilos CSS, las posiciones, etc.. y sólo con refrescar la página veremos los cambios.

Otra opción para usar ésta plantilla, es comprimir el directorio donde está, y después instalarlo con el gestor de extensiones. Es decir, en el ejemplo anterior, hemos creado el directorio mynew/ dentro de templates/, comprimimos el directorio mynew/ con todos los archivos que hemos puesto y nos quedará, en éste caso, el archivo mynew.zip con toda la plantilla. Éste archivo comprimido es el que usamos en el gestor de extensiones para instalar la plantilla.

Para terminar, si todo ha ido bien, entonces tenemos que ver algo parecido a lo siguiente en nuestro navegador:

Sólo queda poner en cada posición los módulos que queramos usando Joomla. En las posiciones ahora tendremos: arriba, izquierda, derecha, contenido y abajo; que son los valores que hemos usado en el index.php y hemos puesto también en el ‘templateDetails.xml’. Ahora todo es imaginación y con buena documentación sobre CSS podremos hacer que nuestra página con Joomla tenga una apariencia única, totalmente personalizada, con efectos 3D o cualquier otra cosa que se pueda hacer con HTML, Javascript, CSS, etcétera…

Ésto es todo un mundo, las plantillas, los editores de plantillas, maquetación, etcétera… hay mucha información por Internet. Espero que haya servido.

Un saludo.
Hasta la próxima

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.