Dos primos luchan contra la tecnología

Aprendizaje y formación en informática profesional mediante videotutoriales

Configuración del servidor FTP vsftp

vsftp (very secure ftp) es un servidor de ftp rápido y de fácil configuración. Es bastante seguro ya que permite encriptación con SSL.

Para una configuración segura se este servicio debemos editar su archivo de configuración, que generalmente es, /etc/vsftpd/vsftpd.conf. Es recomendable hacer una copia de seguiridad antes de tocar nada.

El fichero de configuración quedaría como sigue:


#opciones de usuario
anonymous_enable=NO #no permitimos login anónimo
local_enable=YES #permitir a usuarios del sistema
chroot_local_user=YES #no permitirles salir de su home
write_enable=YES
local_umask=022

#mensaje de bienvenida
ftp_banner=Welcome to my FTP

#opciones para el fichero de log
xferlog_enable=YES
xferlog_file=/var/log/vsftpd/vsftpd.log
use_localtime=YES

#configuración del servicio
listen=YES
tcp_wrappers=YES

Sincronizar hora de sistema y hora de bios (Linux)

En ocasiones las horas del sistema operativo y la del servidor tienen valores diferentes. Una vez averiguada la hora correcta se tienen que sincronizar ambas a la correcta.
Para ello utilizaremos el comando hwclock que tiene como opciones principales:

--show: muestra la hora hardware.
--hctosys: al reloj de sistema le asigna la hora de hardware.
--systohc: al reloj de harware le asigna la hora de sistema.

Administración de discos (Windows Xp Professional)

Windows Xp logo

En este nuevo post intentaré explicaros un poco como funcionan los discos duros y mas concretamente su particionamiento bajo un sistema Windows Xp.

Lo primero que debemos saber es que el disco duro es un dispositivo de almacenamiento de datos magnético y mecánico y es por esto por lo que es tan “fragil” a golpes o campos magnéticos ya que requiere de una gran precisión para obtener acceso a los datos. Como curiosidad quiero apuntar a que en su interior habita un motor que controla unas “agujas” que en un extremo llevan instaladas unos pequeños cabezales magnéticos encargados de hacer la lectura o escritura de datos, este motor aunque alcanza grandes velocidades de giro (hasta 15000 rpm en discos de uso profesional) no tiene fuerza alguna y es este uno de los motivos de que este completamente aislado del exterior, ya que el polvo lo dañaría en poco tiempo y evitaría su giro (entre otras cosas).

Ahora paso a comentar el tema de las particiones. Una partición es un espacio del disco asignado a una unidad lógica, dicho de otra manera, es una porción de este que “separamos” del resto y nos permite gestionar diferentes espacios del disco (particiones) de forma independiente a las demás. En Windows debemos saber que podemos crear 4 particiones primarias, o tres primarias y una extendida. Esto es importante porque aunque Windows Xp puede ser instalado en cualquiera de estas particiones, sistemas anteriores a este requerian ser instalados en una partición primaria en la cual pueden cargar la información de inicio del sistema y lanzar este al arrancar el equipo. Sobre las particiones Extendidas debemos saber una cosa importante, cuando nosotros creamos un partición extendida esta toma el espacio del disco si, pero no podemos utilizar esta partición como tal, debemos crear tras esta unidades lógicas que son las que nos permitiran acceder al disco y trabajar con el. Dentro de una partición extendida podemos crear tantas unidades lógicas como sean necesarias.

(more…)

Diálogo de selección de ficheros JFileChooser (Java)

Resulta muy frecuente que las aplicaciones necesiten trabajar con archivos para leer y guardar datos de manera que se pueda trabajar más adelante con ellos.

En esta ocasión vamos a ver el diálogo de selección de ficheros JFileChooser que permite seleccionar ficheros de nuestro disco duro o crear nuevos.


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class MySelector {
  public static void main(String[] args) {
    MyFrame frame = new MyFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}

class MyFrame extends JFrame{
  private JButton botonOpen = new JButton("Abrir");
  private JButton botonSave = new JButton("Guardar");
  private MyFileListener myFileListener =
          new MyFileListener(this);
  public MyFrame(){
    super("Ejemplo de JFileChooser");
    Container container = getContentPane();
    container.setLayout(new BorderLayout());
    container.add(botonOpen, BorderLayout.WEST);
    container.add(botonSave, BorderLayout.EAST);
    botonOpen.addActionListener(myFileListener);
    botonSave.addActionListener(myFileListener);
  }
}

class MyFileListener implements ActionListener{
  private JFileChooser chooser = new JFileChooser();
  private JFrame frame;
  public MyFileListener(JFrame frame){
    this.frame = frame;
  }
  public void actionPerformed(ActionEvent ae) {
    String textButton = ae.getActionCommand();
    String dialogTitle = "Abrir un fichero";

    if (textButton.equals("Guardar"))
      dialogTitle = "Guardar un fichero";

    chooser.setDialogTitle(dialogTitle);
    chooser.setMultiSelectionEnabled(false);
    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

    int sel = chooser.showOpenDialog(frame);
    if (sel == JFileChooser.APPROVE_OPTION){
      File selectedFile = chooser.getSelectedFile();
      JOptionPane.showMessageDialog(
         frame,
         selectedFile.getAbsolutePath());
    }else{
      return;
    }
  }
}

Como métodos útiles de JFileChooser destacaremos:

  • setDialogTitle(): el título de la ventana.
  • setMultiSelectionEnabled(): permitir seleccionar varios ficheros al mismo tiempo.
  • setFileSelectionMode(): indica si se pueden seleccionar ficheros, directorios o ambos.
  • setFileFilter(): permite incluir filtros para el listado de archivos.

Arrastrar (drag) componentes con el ratón (Java)

En una ocasión tuve que hacer una aplicación para crear diagramas en la que tenía que insertar componentes swing como JButton o JLabel dentro de un frame y que permitía arrastrarlos (drag) con el ratón por medio de la interfaz MouseMotionListener por toda la superfice del contenedor.

Básicamente consiste en crear unos objetos derivados de JButton o de JLabel, por ejemplo, e implementarles un MouseMotionListener. Mediante el método mouseDragged se registra la variación de coordenadas del puntero del ratón cuando se arrastra el componente y se actualiza su posición.

Es importante recordar que el panel o frame que contenga esos elementos debe tener un layout nulo y que dichos elementos deben tener unas coordenadas iniciales establecidas por el método setBounds.

Aquí va un sencillo código de ejemplo:


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class DragTest {

public static void main(String[] args) {
  MyWindow window = new MyWindow();
    window.setVisible(true);
    window.setPreferredSize(new Dimension(400,400));
    window.pack();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
class MyWindow extends JFrame{
  public MyWindow(){
    super("Drag test");
    Container container = getContentPane();
    container.setLayout(null);

MyButton boton1 = new MyButton("Move me");
    container.add(boton1);
    boton1.setBounds(10, 10, 100, 30);
  }
}
class MyButton extends JButton implements MouseMotionListener{
  public MyButton(String text){
    super.setText(text);
    addMouseMotionListener(this);
  }

public void mouseDragged(MouseEvent mme) {
    setLocation(
        this.getX() + mme.getX() - this.getWidth() / 2,
        this.getY() + mme.getY() - this.getHeight() / 2
    );
  }
  public void mouseMoved(MouseEvent mme) {}
}

Windows Server 2003 SBS Standard (Características Principales)

Windows Server 2003 logo

Bueno, tras el interés de uno de nuestros lectores, he decidido hacer un repaso a las principales virtudes de este sistema operativo, dando una información general y hablando siempre desde la experiencia (poseo uno original).

Carácterisiticas principales

Este sistema operativo de servidor es uno de los que seguro, en un futuro, implantaré a la gran parte de mis clientes debido a su amplio rango de funcionalidad y su rapidez de instalación. Es un sistema operativo enfocado a los empresarios con conocimientos altos en informática, pero no expertos ni profesionales, y es por esto por lo que la puesta en marcha es relativamente, muy sencilla, pero no deja de ser imprescindible tener algún que otro conocimiento sobre redes. Como caracteristica que mas me gusta incluye una página web destinada al uso interno de la empresa en la cual podemos realizar un fuerte seguimiento de los proyectos de la empresa. Otra baza muy fuerte es la inclusión de Microsoft Exchange Server 2003 (en su versión Standard) lo que proporciona un excelente servicio de correo electrónico (del cual soy usuario) incluso a través de la web mediante OWA (Outlook Web Acces). Otro factor que considero muy importante es la implantación de los equipos clientes, lo cual es tan sencillo como acceder a una página web que se encuentra alojada en el servidor, e introducir el nombre de usuario y su contraseña, los privilegios actuales sobre el sistema operativo (del cliente) y el nombre del equipo asignado a este. Hecho esto un asistente desplegará por completo todo lo necesario y en un tiempo no superior a los 10 minutos, nos encontraremos con un equipo cliente completamente configurado para trabajar de inmediato en la red.

IIS (Internet Information Services)

Una vez instalado y realizados todos los pasos requeridos (mediante asistentes), contaremos con Internet Information Services instalado y configurado. Repasamos ahora mas extensamente la “companyweb”

En este espacio web que encontraremos completamente instalado y funcional tras la instalación podremos realizar una gestión eficaz del trabajo, tanto si somos el empleado, como el empresario. Decir que este sitio esta basado en la tecnología de Sharepoint y que dispone de una página web de Administración desde la cual podremos configurar la seguridad o la auditoria de los sitios entre otras ventajas. Otra de las virtudes de esto es el impresionante control sobre proyectos que podemos llevar, dejando ver de un vistazo todos los proyectos o categorias que tengamos en ese momento y dandonos la posibilidad de saber, cuando se inicio, cuando esta prevista su finalización o su fecha límite, quién es el encargado del mismo y quién trabaja en el, el porcentaje completado etc etc… todo esto configurable según nos sea necesario.
(more…)

Los eventos de ratón MouseListener y MouseMotionListener (Java)

A cualquier componente le podemos asociar acciones de ratón y respuesta para ellas.
Estas acciones no son de uso común ya que se sólo nos suele interesar registrar que se ha hecho clic sobre un componente y eso ya lo podemos averiguar añadiendo un ActionListener al componente que implementa únicamente el método actionPerformed.
De todas maneras, en ocasiones, necesitamos saber si el ratón ha pasado por encima de un componente o si el ratón se está moviendo dentro de él.
Recordar que, al añadir un listener de ratón, al ser una interface nos obliga a implementar todos los métodos asociados al listener escogido.


import javax.swing.*;
import java.awt.event.*;

public class RatonListener{
  public RatonListener(){
    JButton myButton = new JButton("Button");

myButton.addMouseListener(new MouseListener(){
      public void mouseClicked(MouseEvent me) {
        me.getX();
        me.getY();
      }
      public void mousePressed(MouseEvent me) {}
      public void mouseReleased(MouseEvent me) {}
      public void mouseEntered(MouseEvent me) {}
      public void mouseExited(MouseEvent me) {}
    });

myButton.addMouseMotionListener(new MouseMotionListener(){
      public void mouseDragged(MouseEvent mme) {}
      public void mouseMoved(MouseEvent mme) {}
    });
  }
}

Métodos del evento:
getX() y getY() nos devuelven las coordenadas dentro del componente en el que se ha producido el evento.
isPopupTrigger() nos dice si se ha hecho clic con el botón derecho.
getModifiers() nos devuelve la máscara de bits del evento con la que podemos saber qué boton se ha pulsado y si ha sido combinado con las teclas Alt, AltGr o Shift.