jueves, 30 de septiembre de 2010

Crear un usuario con privilegios de root en Linux

Tenia problemas para realizar algunas operaciones a nivel de root, y siempre tenia que loguearme y prácticamente para mi era una pérdida de tiempo, así que necesitaba hacer todo en la consola y al mismo tiempo conservar mi usuario.


Entonces primero al loguearnos como root, crearemos un usuario de la siguiente manera:


adduser -u 0 -o -g 0 alex


Debes cambiar "alex" por el usuario que tu requieras crear.


Luego para cambiar la contraseña al usuario creado debes ingresar:


passwd alex


Y el sistema te pedirá ingresar tu clave 2 veces para confirmarla.


Ahora cierra la consola, y vuelve a ingresar con tu usuario, y tendrás todos los privilegios.


Si deseas puedes comprobarlo en el archivo /etc/passwd.
Entonces de la consola escribimos:


cat  /etc/passwd


Y podrás visualizar que tu usuario se mantiene como 


usuario:x:0:0


Los ceros indican que tu usuario tiene privilegios de root.




Listo.

lunes, 20 de septiembre de 2010

Programar es un Arte

Cuando un músico escucha una melodía que acaba de componer o cuando un escultor retoca el ultimo detalle de su obra maestra, está ante un logro personal, pero que fue hecho pensando en los demás.

Está ante el fruto de su trabajo, que tuvo que realizar para pasar de una idea o modelo que estaba solo en su imaginación, a algo perceptible por los otros. Y ese logro causa una gran satisfacción.

El desarrollo de software (al igual que la música, la escultura o la pintura) es una actividad creativa y, hasta si se quiere, artística.

Es una actividad en la que una persona (el programador) debe plasmar una idea en un programa que alguien usará luego.

Y es muy probable que esa idea sea algo totalmente novedoso, algo que nadie antes ha visto. Y ver esa idea traducida en software produce una sensación que solo un programador puede entender.

Ser programador no es fácil, pero es divertido. Desarrollar software es, definitivamente, una tarea compleja.

Deberemos ser capaces de interpretar al usuario, de entender qué es lo que necesita (aunque muchas veces el mismo no sabe qué es lo que necesita).

Pasaremos largas horas pensando un algoritmo que resuelva el problema de nuestro cliente de la mejor manera. Muchas veces nos iremos a casa y seguiremos pensando en ese dichoso algoritmo. Nos iremos a dormir (probablemente tarde, porque habremos dedicado parte de nuestro tiempo libre a aprender nuevas tecnologías) y despertaremos pensando en el algoritmo o incluso, con la solución en mente. Pero cuando escribamos la ultima linea del código que implementa ese algoritmo y lo veamos funcionando, obtendremos una gran satisfacción que solo puede entender otro programador.

Creo que cada persona que quiere dedicarse a ser programador, antes de nada, debe experimentar que sensación produce ver su programa en ejecución.

Aquel que no sienta nada jamás podrá ser un programador, porque la mayor recompensa es, justamente, esa sensación, aunque sean las 4 de la madrugada y llevemos 72 horas codificando.

domingo, 22 de agosto de 2010

Instalando Mysql 5 sobre CentOS 5.4

Como están, esta vez instalaremos el Gestor de base de datos MySQL 5 sobre la el SO. CentOS 5.4, y realizaremos la configuración para conectarnos desde los clientes.
Para comenzar debemos tener instalado el SO. CentOS, en la instalación pueden elegir instalar por defecto una versión de MySQL, pero si quieren una mas actualizada pueden descargarla de la página web de MySQL, de la siguiente direccion http://www.mysql.com/downloads/mysql/#downloads

 

Lógicamente debes estar registrado en la página de MySQL para poder descargar el fichero, el registro es sencillo.


Luego lo ejecutamos en el servidor de la siguiente manera:


 Una vez instalado procederemos a indicarle al servicio que se ejecute al iniciar el SO, con el siguiente comando.

[root@localhost home]# /sbin/chkconfig mysqld on

Luego procederemos a levantar el servicio.

[root@localhost home]# service mysqld start

Si escribimos mysql en la línea de comandos nos conectaremos a la base de datos, porque el usuario root no tiene un password creado, entonces lo que sigue es asignarle un password al usuario root de Mysql. Para esto usarmos mysqladmin.

[root@localhost home]# /usr/bin/mysqladmin -u root password '123456'


En este caso le puse del 1 al 6, como ejemplo. Y luego si tecleamos mysql obtendremos.


[root@localhost home]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


Lógicamente porque el usuario por defecto root ya tiene asignado un password, ahora nos conectaremos de la siguiente manera:


[root@localhost home]# mysql -u root -p
Enter password:  



Ingresamos el password anterior y nos conectaremos a MySQL.


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>  



Para ver los usuarios y las ubicaciones desde las que mysql aceptara las conexiones debemos listarlos de la tabla user, pero antes debemos conectarnos a la bd mysql.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host, user, password from user;

+-----------------------+------+------------------+
| host                  | user | password         |
+-----------------------+------+------------------+
| localhost             | root | 33cf3f7a4d06abc8 |
| localhost.localdomain | root | 33cf3f7a4d06abc8 |
| 127.0.0.1             | root | 33cf3f7a4d06abc8 |
| localhost             |      |                  |
| localhost.localdomain |      |                  |
| %                     | sa   | 33cf3f7a4d06abc8 |
| localhost             | sa   | 33cf3f7a4d06abc8 |
+-----------------------+------+------------------+
7 rows in set (0.00 sec)



Si queremos crear otro supersusuario, por ejemplo uno llamado aep con todos los privilegios sobre cualquier base de datos (ALL PRIVILEGES ON *.*) y que pueda conectar desde cualquier sitio (TO aep@"%")

mysql> GRANT ALL PRIVILEGES ON *.* TO aep@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;
        
Si ahora queremos borrar un usuario, por ejemplo a nuestro aep y sabiendo que los usuarios se guardan en la tabla llamada user, haremos:

      mysql> use mysql;
      mysql> DELETE FROM user WHERE user = 'aep';
Y aep será borrado de nuestro sistema MySQL.

Los puertos
MySQL utiliza el puerto 3306 por defecto, así que lo debemos agregar dentro de la lista permisible de conexiónes para CentOS.
Para esto debemos ingresar por línea de comandos lo siguiente: system-config-securitylevel

 Y finalmente podremos conectarnos desde nuestro cliente, utilizando MySQL Query Browser por ejemplo.



domingo, 1 de noviembre de 2009

Características de la Aplicación Java 1

Veamos algunos detalles del desarrollo de esta pequeña aplicación en Java. Empezaremos por los detalles de las ventanas principales, y del arbol dinamico que se carga al levantar la aplicacion con los items del Menú del Sistema. Posteriormente veremos como tener el menú en la BD y que esta se configure para cada usuario o grupo de usuarios. A continuacion imagenes de las ventanas principales y algunas propiedades.


 Esta ventana MDI extiende de un JFrame como veremos en el siguiente codigo:



Dentro de la Venta MDI (JFrame) , pues tenemos un JDesktopPane, el cual contiene a un JSplitPane, dentro de las divisiones del JSplit, tenemos en el lado izquierdo un JTree y un JDesktopPane al lado derecho, este panel que esta en el lado derecho contendrá a las instancias de las JInternalFrame que se ubicarán en este lado del Split.




Luego tenemos un JMenuBar, y este contendrá a los JMenu que son las cabeceras del Menu (Maestros, Operaciones, Reportes, Configuraciones, Ayuda), y luego cada uno de estos tiene items desplegables, en este caso los JMenuItems.





Ahora como podemos llenar dinámicamente el JTree con la información del JMenuBar, sus JMenu y sus JMenuItems. Para esto se escribió una Clase que nos ayudará con eso.




La clase tiene dos métodos estáticos, el segundo método es el siguiente:






Luego, en la venta principal debemos declarar un  DefaultTreeModel y un DefaultTreeCellRenderer. Mediante estas instancias podremos manejar y controlar el "modelo" del árbol.





 Y finalmente utilizaremos el método estático de la Clase OperacionesMenu y utilizar el método cargarMenu.





Luego podemos probar la aplicación para ver los Items del menu en la barra lateral izquierda del JSplitPane.

 
Están servidos, cualquier duda o comentario a continuación.

domingo, 25 de octubre de 2009

Aplicacion Java Desktop

A continuacion les presento parte del desarrollo de un Sistema de Escritorio escrito en Java, y utilizando el patron MVC.





domingo, 4 de octubre de 2009

Utilizando un archivo de Propiedades en Java

En Java, un archivo de propiedades tiene extensión ".properties", el cual se asemeja al conocido archivo "INI" que se utiliza en Power Builder para obtener parámetros definidos que se utilizarán en la aplicación.


Para crear un archivo de propiedades en Java debemos crear un nuevo archivo:





Luego de eso podemos editar nuestro archivo de propiedades de la siguiente manera:




Luego de configurado nuestro archivo de propiedades, ahora podemos utilizarlo desde nuestras clases, instanciándola de la siguiente manera:





La clase que ubica el archivo y procede a leerlo es la Clase Abstracta "ResourceBundle", para esto importamos la libreria: 

  • import java.util.ResourceBundle;
Y el método estático getBundle, al que se le pasa como parámetro un String que contiene la ubicación del archivo de propiedades, en este caso según la separación de paquetes de Java.


Ahora solo queda compilar la aplicación, y probar la utilidad de esta forma de trabajo.
Esto les servirá cuando quieran distribuir su aplicación a los Clientes, de modo que si por algún motivo requieren cambiar algún parámetro, como para este ejemplo la ubicación de la base de datos, entonces sólo tendrían que editar el archivo "properties" ubicado en la carpeta de la aplicación siguiendo el orden del árbol de los paquetes será muy sencillo ubicarlo.


Están servidos.


Personal Pocket Safe, una memoria USB con teclado numérico de seguridad

Es común encontrar memorias USB que incorporen sistemas de seguridad, ya sea con lector de huellas otecnología militar. Pero lo que hace especial a esta Personal Pocket Safe son sus botones incrustados. Se trata de un pequeño teclado numérico, con el que tendremos que introducir la clave secreta si queremos acceder a los datos almacenados.



Su sistema encriptación de 256 bits se encarga de proteger nuestros documentos valiosos. Si algún amigo de lo ajeno pretende probar suerte adivinando el código PIN, el dispositivo se bloqueará después de tres intentos fallidos. Es más, si alguien intenta acceder a tus archivos por la fuerza, el mismo pendrive destruirá los ficheros antes de que nadie pueda verlos. Como en una película de espías.


Por supuesto, siempre cabe la posibilidad de que sea uno mismo el que olvide la contraseña. En tal caso, podremos recuperar el acceso mediante una aplicación online, que suponemos también tendrá su propio sistema de seguridad. Y si no, el fabricante dispone de un servicio de asistencia especificamente destinado a estas situaciones.
Las Personal Pocket Safe, con un gigabyte de capacidad, se venden a un precio de 60 libras esterlinas (66 euros), aproximadamente 270 Nuevo Soles. Las puedes encontrar en la tienda virtual de thumbsUp!, aunque en este catálogo el pedido mínimo es de seis unidades. El programa para realizar copias de seguridad online es opcional.