Archive for the ‘ComandosLinux’ Category

SQLite en JAVA con JDBC

Bueno esta vez pude hacer andar algo que desde hace tiempo tenia ganas, y lo más loco es que no me llevo tiempo ni nada: anduvo perfecto (salvo por un error humano jajajaa).

Bueno la motivación para usar SQLite en JAVA es que nos permite tener una Estructura Eficiente y Flexible sin que nos preocupemos por diseñar alguna por nuestra cuenta, y no dependamos de un Servidor de SQL (local o remoto) en el momento de trabajar con los datos.

SQLite ha crecido mucho, es una libreria escrita en C que permite almacenar enormes cantidades de datos, en su versión 3 permite almacenar una BD de 2 Teras!!,  y es compatible con SQL 92. Lo usan muchas Empresas de Software dedicadas a Mobiles y otras en general: Mozila (para Firefox), Symbian (SO para Moviles),  Open Office,  Android (Sistema Movil de Google), etc…

Y bueno arranque bajándome el Driver JDBC para SQLite desde aca. Luego me bajé un administrador de SQLite (SQLite Studio) sencillo pero completo para un uso regular, que nos permita:

  1. Crear una BD,
  2. Definir sus tablas  y cargar campos
  3. Exportar a SQL, HTML o XML
  4. Opcionalmente ejecutar SQL

Todos estos requisitos, con una interfaz entendible, actualizado y multiplataforma los cumplio SQLite Studio. Bájenselo es gratis ;) .

Ejecutar con: ./Documents/sqlitestudio-2.0.5.bin

Lo usé para crear una BD sencilla (principal.db) que tuviera una única tabla “persona” que tuviera los campos:  Id (clave primaria y  autoincremental), nombre, apellido y descripción. Todos String, salvo Id declarado como Integer. Cargue unas personas, y fui al Eclipse a configurarlo.

En el Eclipse agregue al Proyecto el Driver (.jar),  haciendo ultimo boton del mouse en el proyecto y selecionando: Build Path > Add Library > User Library , y me dio opciones para cargar el jar y ponerle un nombre a la librería. En NetBeans: Clic derecho en el proyecto > Properties > Libraries > Add JAR/Folder y seleccionar el archivo sqlitejdbc-v056.jar, que no podrá ser movido a otra ruta luego de este paso.


Una vez hecho esto coloque la DB en el proyecto asi le queda local, osea  en el directorio donde se ejecuta, y escribí un ejemplo que permite agregar una Persona (pidiendo los datos con JOptionPane.showInputDialog()) y luego lista todo en Consola. En NetBeans que así: /home/roby/NetBeansProjects/JavaApplication1/principal.db.

Aca se los dejo:

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

import javax.swing.JOptionPane;

public class Main {
	public static void main(String[] args){
		try {
			Class.forName("org.sqlite.JDBC");
		}
		catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
		}

		try {
			Connection conexion = DriverManager.getConnection("jdbc:sqlite:principal.db");
			Statement consulta = conexion.createStatement();

			// Pedimos Los datos para una Nueva Persona via Dialogs
			String nombre,apellido,descripcion;

			nombre= JOptionPane.showInputDialog(null,"Nombre","Nueva Persona",JOptionPane.NO_OPTION);
			apellido= JOptionPane.showInputDialog(null,"Apellido","Nueva Persona",JOptionPane.NO_OPTION);
			descripcion= JOptionPane.showInputDialog(null,"Descripcion","Nueva Persona",JOptionPane.NO_OPTION);

			consulta.executeUpdate("insert into persona values(null,'"+nombre+"', '"+apellido+"', '"+descripcion+"');");

			// Visualizamos todos los registros
			ResultSet resultado = consulta.executeQuery("select * from persona;");

			System.out.println("Id\tNombre\tApellido\tDescripcion");
			while (resultado.next()) {
				System.out.println(
					resultado.getInt(1)+"\t"+
					resultado.getString("nombre") + "\t"+
					resultado.getString("Apellido")+"\t\t"+
					resultado.getString("Descripcion")
				);
			}

			//Cerramos las conexiones
			consulta.close();
			resultado.close();
			conexion.close();			

		} catch (SQLException e) {
			System.out.println(e.getMessage());
			System.out.println("Estado:"+e.getSQLState());
		}
	}
}

Que tras ejecutarse, y dependiendo de que completen, muestra algo asi:

Id	Nombre	Apellido	Descripcion
1	Alberto	Castro		Ejemplo
2	Pepe	Fernandez	Segunda Persona ;)
3	Diego	Torres		Musico
7	Persona	Nueva		Nueva Persona jejejee

Asi que esto motiva a escribir aplicaciones que simplemente usen SQL todo el tiempo, que no es algo dificil pero sí implica saber modelar bien. Si llegan a modelar así usando SQL piensen que el día de mañana pueden migrar de db guardado en su PC a un Servidor Remoto, y del programa solo tendrian que cambiar la URL de conexion y llamar al Driver apropiado (MySQL, Microsoft SQL Server, etc…), algo que motiva aun más su uso.

Ah, algunos errores que pueden saltar con respecto a la Conexion, más espcificamente a la URL, son:

  • opening db: ‘ruta a la db‘ permiso denegado,  ó bien
  • No se puede acceder a la Tabla X,

Ambas significan que definimos mal la URL y apuntamos a cualquier lado, lo cual (en mi caso) genera un archivo .db en el lugar “apuntado”.  En Linux por ejemplo una url completa seria algo asi:  “jdbc:sqlite:/home/TU_USUARIO/base.db” con esto no tuve problemas, aunque en el ejemplo que muestro  yo la usaba local al proyecto.

Fuente | http://www.vagobit.com.ar/2010/05/20/sqlite-en-java-con-jdbc/

Cómo saber cuáles son los links rotos

$  wget --spider  --no-parent -r -o log.txt http://tuweb.com

Fuente |Diario Linux

Reparar llaveros usb

Enviado por ahs el Mié, 25/10/2006 – 23:40

¿algien sabe como reparar un llavero usb que tiene la estruptura dañada?
e probado con gparted pero no consigo repararlo de ninguna forma, el problema biene de que en guadalinex v3 no lo desmonte corectamente y desde entonces en todos los ordenanods en los que lo pruebo para lo mismo en linux: inposible montar el volumen y en windows: introduca un
dispositivo en la unidad.

Sigue leyendo

Cache de mi disco

sudo hdparm -i /dev/sda

El buffer size es el tamaño de la caché

Install Phoronix Test Suite 1.8 y GUI

Agregar el repositorio

deb http://www.phoronix-test-suite.com/releases/repo pts.debian/

Instalar phoronix-test-suite.

Instalar la interfaz gráfica

Applications -> Accesories -> Terminal
Sigue leyendo

Manual IPCop

Habilitar SSH desde Sistema > Acceso SSH. Tildar la casilla Acceso SSH. Notar que el puerto es el 222.

Copiar la carpeta addons al servidor:

$ scp -rP 222 Escritorio/addons/ root@192.168.0.24:/

Ir a la carpeta addons

$ cd addons

Desinstalar la versión anterior (si la hubiere):

$ ./addoncfg -u

Instalar:

$ ./addoncfg -i


nmap

Ejemplo.

-A: verbose
-O: Operating system detection

-sV: Version de los servicios

roby@roby-desktop:~$ sudo nmap -O -A -sV 192.168.0.24

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-24 12:13 ART
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 12:13
Scanning 192.168.0.24 [1 port]
Completed ARP Ping Scan at 12:13, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 12:13
Completed Parallel DNS resolution of 1 host. at 12:13, 0.00s elapsed
Initiating SYN Stealth Scan at 12:13
Scanning 192.168.0.24 [1000 ports]
Discovered open port 445/tcp on 192.168.0.24
Discovered open port 81/tcp on 192.168.0.24
Completed SYN Stealth Scan at 12:13, 0.09s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.0.24
Host 192.168.0.24 is up (0.00052s latency).
Interesting ports on 192.168.0.24:
Not shown: 998 closed ports
PORT    STATE SERVICE
81/tcp  open  hosts2-ns
445/tcp open  microsoft-ds
MAC Address: 00:50:DA:2C:AF:9F (3com)
Device type: firewall
Running: IPCop Linux 2.4.X
OS details: IPCop firewall 1.4.10 – 1.4.18 (Linux 2.4.31 – 2.4.34)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=192 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.86 seconds
Raw packets sent: 1032 (46.360KB) | Rcvd: 1012 (41.080KB)