Instalar y configurar un servidor Samba en 5 sencillos pasos

miércoles 14 de mayo de 2008

Samba es la implementación de un código libre para la utilización del protocolo SMB (Server Message Block) el cual permite la compartición de archivos, impresoras y recursos en una red entre equipos Windows y Linux.

 

En ocasiones pareciera que el compartir recursos entre estos distintos sistemas operativos es complicado y que tiene que realizarlo un experto y la verdad es que no es así, en este artículo mostraré la forma para instalar y configurar un servidor Samba en 5 sencillos pasos utilizando como sistema operativo del servidor la última versión de Ubuntu: Hardy Heron.

 

Paso 1. Instalar lo necesario ::

 

Primeramente necesitamos instalar los archivos necesarios para el servidor, esto lo hacemos mediante un comando en la terminal a la cual accedemos desde Aplicaciones > Accesorios > Terminal, una vez abierta escribimos:

 

sudo aptitude install samba samba-client smbfs

 

Una vez tecleado lo anterior presionamos la tecla enter y esperamos a que se instalen los paquetes necesarios, puede que te pida confirmación para descargar e instalar.

 

Paso 2. Crear las carpetas a compartir ::

 

Ya que tenemos instalado todo lo necesario necesitamos crear las carpetas que serán compartidas en la red, puedes utilizar también las que ya existen pero es recomendable que utilices carpetas compartidas especiales. Para crear las carpetas necesarias utilizamos el comando mkdir desde la terminal haciendo algo parecido a lo siguiente:

 

mkdir /home/tu_usuario/CarpetaCompartidaUno

mkdir /home/tu_usuario/CarpetaCompartidaDos

.

.

.

 

 

Paso 3. Asignar permisos de acceso a las carpetas ::

 

Cuando ya se hayan creado (o definido) las carpetas que deseas compartir ahora se deben de asignar los permisos a las mismas para que se pueda acceder a ellas, para ello utilizamos el comando chmod y, en este caso, los permisos asignados de forma octal para hacerlo más rápido (aunque se pueden asignar de uno en uno). Continuando con el ejemplo anterior:

 

chmod 755 /home/tu_usuario/CarpetaCompartidaUno

chmod 777 /home/tu_usuario/CarpetaCompartidaDos

.

.

.

 

En el ejemplo anterior, el valor del comando chmod 755 indica que el usuario root o administrador tendrá todos los permisos sobre la carpeta (lectura, escritura y ejecución), el propietario y los demás tendrán permisos sólo de lectura y ejecución. En el caso de 777 significa que todos los usuarios tienen todos los permisos.

 

 

Paso 4. Modificar el archivo smb.conf ::

 

Lo que sigue en el proceso de configuración es la modificación del archivo smb.conf que se encuentra en /etc/samba/smb.conf  para agregar las carpetas que recientemente creamos para compartir. Lo anterior se realiza abriendo primeramente el archivo mediante el comando vi o con el gráfico que se llama con gedit, posteriormente se agregan algunas líneas y se guardan los cambios…

 

Para abrir el archivo:

sudo gedit /etc/samba/smb.conf

 

Líneas a agregar (solo aquellas en azul):

 

[CarpetaCompartidaUno]  <- Nombre del recurso

comment = CarpetaCompartidaUno <- Comentario

browseable = yes <- define si es explorable

path = /home/tu_usuario/CarpetaCompartidaUno <-Ruta de la carpeta

writable = no <- define si se puede escribir en ella o no

public = yes <- define si es pública o no

 

[CarpetaCompartidaDos]  <- Nombre del recurso

comment = CarpetaCompartidaDos <- Comentario

browseable = yes <- define si es explorable

path = /home/tu_usuario/CarpetaCompartidaDos <-Ruta de la carpeta

writable = yes <- define si se puede escribir en ella o no

public = yes <- define si es pública o no

 

 

Nota: El campo writable está directamente relacionado con los permisos otorgados a la carpeta con chmod, si no se definieron permisos de escritura, entonces writable=no.

 

Debes de agregar un bloque de líneas parecido a los anteriores para cada carpeta compartida que desees, con sus respectivos permisos de carpeta.

 

Paso 5. Reiniciar el servidor para que los cambios surtan efecto ::

 

Ya que hemos hecho todo lo anterior solamente basta con reiniciar el servidor Samba desde la terminal, para ello escribe lo siguiente:

 

sudo /etc/init.d/samba restart

 

Y listo! tienes tus carpetas compartidas entre Linux y Windows. Para acceder a ellas desde Windows XP basta con dar un clic en Inicio > Ejecutar  y escribes \\direccion_ip_servidor_samba para que se abra una ventana del explorador mostrando las carpetas compartidas, desde Linux escribes en la barra de dirección de Nautilus smb://direccion_ip_servidor_samba.

 

Puedes encontrar más información sobre configuraciones especializadas en la web oficial de Samba.

 

Alguna duda o algo qué decir? Deja tu comentario. Saludox.

Plantillas o abreviaturas de código en NetBeans 6.1

martes 6 de mayo de 2008

Mientras se escribe código en el editor de NetBeans podemos utilizar las siguientes abreviaturas y después presionar la tecla Tab para generar la línea o bloque de código que se indica, algo bastante útil que nos ahorra además de tiempo errores de dedo al momento de codificar:

 

-Abreviatura-

- Resultado -

En

Enumeration

Ex

Exception

Ob

Object

Psf

public static final

Psfb

public static final boolean

Psfi

public static final int

Psfs

public static final String

St

String

ab

abstract

bo

boolean

br

break

ca

catch(

cl

class

cn

continue

df

default:

dowhile

do{

}while(condition);

eq

equals

ex

extends

fa

false

fi

final

fl

float

forc

for (Iterator it = collection.iterator();

it.hasNext();) {

Object elem = (Object) it.next();

}

fore

for (Object elem : iterable) {

}

fori

for (int i = 0; i < arr.length; i++) {

}

fy

finally

ie

interface

ifelse

if (condition){}else {

}

im

implements

iof

instanceof

ir

import

le

length

newo

Object name = new Object(args);

pe

protected

pr

private

psf

private static final

psfb

private static final boolean

Psfi

private static final int

psfs

private static final String

pst

printStackTrace();

psvm

public static void main(String[] args){

}

pu

public

re

return

serr

System.err.println(“”);

sout

System.out.println(“”);

st

static

sw

switch(

sy

synchronized

tds

Thread.dumpStack();

th

throws

trycatch

try {}

catch (Exception e) {}

tw

throw

twn

throw new

wh

while(

whileit

while (it.hasNext()) {

Object elem = (Object) it.next();

}

 

Además de las anteriores existen algunas otras abreviaturas exclusivas para JSP’s, si deseas conocer la lista completa puedes descargar el archivo pdf desde aquí.

 

Alguna duda o algo qué decir? Deja tu comentario. Saludox.

 

Fuente | NetBeans.org

Sabías que...

  • ... un programador de software puede, con el paso del tiempo, adquirir experiencia a tal punto que es sólo cuestión de días (u horas) aprender un nuevo lenguaje de programación?

  • ... entre los países de habla hispana, en España se detecta mayor actividad en Internet?

  • ... la idea de un sistema operativo con interfaz gráfica, iconos y un cursor del ratón perceptible fue ideada por Douglas Engelbart a principios de los años sesenta?

  • ... todo objeto del sistema Windows es una ventana (de ahí el nombre), tales como los botones de comandos, cuadros de lista, etc?

  • ... IBM fue acusada de vender máquinas tabuladoras a los nazis?

  • .. Cuando IBM lanzó el IBM PC utilizó componentes estándares porque nunca pretendió que alcanzara el éxito, y gracias a ello hoy cualquier fabricante puede hacer PCs?

  • .. Linux debe su nombre a la combinación del nombre de Linus Torvalds (su fundador) y a Minix, el sistema operativo en el que se basó?

  • ... Tux (la mascota de Linux) adquirió su nombre del acrónimo de Torvalds UniX?

  • ... al menos cinco de los hombres más poderosos en la industria de la informática (Bill Gates, Paul Allen, Larry Ellison, Steve Jobs y Michael Dell) no acabaron sus estudios universitarios?

  • ... un procesador Pentium IV disipa más energía por unidad de área que una central nuclear?

  • ... cualquiera de los ordenadores más vendidos en los 80 tenía menos memoria que el caché de la unidad de CD ROM?

 

 

Fuente | Wikipedia.org

 

 

Películas clásicas para los informáticos / computólogos

En el extenso mundo del cine se puede decir que hay películas para todos y cada uno de los gustos, cada quien trata de ver lo que a su vista parece ser más interesante. Nosotros los involucrados en el mundo de la informática no estamos exentos y existen varias películas que van meramente enfocadas a nuestra área y con las cuales podemos hasta cierto punto identificarnos con alguno o algunos de los personajes.

 

Navegando por la web he encontrado una lista de las 20 películas de hackers más relevantes de todos los tiempos, a mi punto de vista en esta lista se encuentran algunas películas que no deberían, sin embargo, todas y cada una de ellas tratan, aunque sea por algunos instantes, temas relacionados al hacking y la informática. Aquí la lista:

 

20. La Red (The Net), 1995.

19. Hackers 2: El desmontaje (Takedown), 2000.

18. Los piratas del valle de silicio (Pirates of Silicon Valley), 1999.

17. The Matrix, 1999.

16. Hackers, 1995.

15. La conversación (The conversation), 1974.

14. Hackers 3: Conspiración en la red (Antitrust), 2001.

13. Genio de verdad (Real Genius), 1985.

12. Misión Imposible (Mission Impossible), 1996.

11. El treceavo piso (The Thirteenth Floor), 1999.

10. Operación Swordfish (Swordfish), 2001.

09. La estafa maestra (The italian job), 2003.

08. A prueba de todo (Foolproof), 2003.

07. eXistenZ, 1999.

06. Un golpe maestro (The score), 2001.

05. Los fisgones (Sneakers), 1992.

04. La revolución de los sistemas operativos (Revolution OS), 2001.

03. Duro de matar 4 (Die Hard 4), 2007.

02. Juegos de guerra (Wargames), 1983.

01. Tron, 1982.

 

Lastimosamente debo decir que solo he visto 8 de las 20 listadas, la que más se me apetece que no he visto es 'Revolution OS' ya que a parecer es una especie de documental que cuenta la historia sobre el sistema operativo Linux y la filosofía del código abierto.

 

Y tú cuántas has visto? Saludox.

 

Vía | NetForBeginners

Variables y métodos estáticos en Java

viernes 2 de mayo de 2008

El modificador 'static' tiene un profundo impacto en el comportamiento de una variable o método por ello es que normalmente se trata a este modificador completamente separado de los demás. Para entender la forma en que un miembro estático (static) trabaja, veremos primeramente una razón para la cual utilizarlo.

 

Imaginemos que se cuenta con una clase de utilidad que tiene un método que siempre se ejecuta de la misma manera, por decir un ejemplo, un método que siempre devuelve un valor aleatorio. No importa qué instancia de la clase esté llamando a éste método, siempre se comportará de la misma manera. En otras palabras, el comportamiento del método es independiente de la instancia de la clase o, lo que es lo mismo, del estado actual del objeto.

 

Imaginemos otro escenario. Supongamos que se desea realizar un conteo de todas las instancias que se tienen de una clase en particular, ¿dónde debería de almacenarse dicha variable? no funcionará el mantenerla como una variable de instancia dentro de la clase a la cual se quiere realizar el conteo ya que al momento de instanciarla el contador se inicializará a su valor por defecto (como sucede con todas las variables de instancia), entonces, ¿cómo haremos para realizar este conteo?

 

Para resolver un poco la situación planteada anteriormente pongamos en claro que las variables y los métodos marcados con el modificador 'static', es decir, variables y métodos estáticos pertenecen a la clase, no a una instancia de dicha clase en particular. De hecho, se pueden utilizar componentes estáticos sin tener una instancia de la clase. Pero en caso de que existan instancias de dicha clase, el componente estático de la misma será compartido por todas aquellas instancias existentes en un momento dado; solo existe una copia.

 

El código a continuación declara y utiliza una variable para nuestro contador estático:

 

class MiClase{

 

  //declaramos e inicializamos la variable estática

  static int contador = 0;

 

  public MiClase(){

    //Se modifica el valor en el constructor

    contador += 1;

  }

 

  public static void main (String[] args){

 

    new MiClase();

    new MiClase();

    new MiClase();

    System.out.println("El número de clases son: "+contador);

 

  }

 

}

 

En el código anterior, la variable estática 'contador' es inicializada en cero cuando MiClase es cargada por primera vez en la JVM, antes de que cualquier instancia sea creada. Cada vez que una nueva instancia de la clase se crea se manda a llamar al constructor de la clase y el contador aumenta en uno. Cuando el código se ejecuta ya fueron creadas 3 instancias de la clase y el resultado es el siguiente:

 

El número de clases son: 3

 

Ahora imaginemos lo que puede suceder si 'contador' fuera una variable de instancia, en otras palabras, no estática:

 

class MiClase{

 

  //declaramos e inicializamos la variable de instancia

  int contador = 0;

 

  public MiClase(){

    //Se modifica el valor en el constructor

    contador += 1;

  }

 

  public static void main (String[] args){

 

    new MiClase();

    new MiClase();

    new MiClase();

    System.out.println("El número de clases son: "+contador);

 

  }

 

}

 

Cuando el código anterior se intenta ejecutar sigue creando las mismas 3 instancias de la clase dentro de main() pero el resultado es un error de compilador. Ya no pensamos siquiera en que corra sino en que por lo menos se pueda compilar. Cuando lo intentamos nos aparece un error como el siguiente:

 

MiClase.java: 11: non-static variable contador cannot be referenced from static context

  System.out.println("El número de clases son: "+contador);

                                                                        ^

  1 error

 

La JVM no sabe de qué objeto de MiClase estás tratando de imprimir su variable 'contador’. El problema principal es que el método main() en sí es estático y no está corriendo sobre un objeto en particular de la clase sino directamente en la clase. Un método estático no puede acceder a ningún componente (método o variable) no estático. Pensemos de la siguiente manera: estático (static) = clase, no-estático = instancia.

 

Acceder a métodos y variables estáticas::

 

De manera que no se necesita tener una instancia de la clase para invocar a un método o acceder a una variable estática, entonces, ¿cómo se invoca o se usa un componente estático? ¿cuál es la sintáxis?. La respuesta es simple, para acceder a un componente estático de una clase solamente basta con utilizar el operador punto (.) después del nombre de la clase y posteriormente hacer referencia al método o variable estática. P. ej:

 

class MiClase{

 

  static int contador = 0;

 

  public MiClase(){

    contador += 1;

  }

}

 

class ProbarMiClase{

  public static void main(String[] args){

    new MiClase();

    new MiClase();

    new MiClase();

    System.out.printl("Contador: "+MiClase.contador);

  }

}

 

De igual manera se puede acceder a un componente estático de una clase por medio de un objeto de dicha clase, pero recordemos que dicho valor no dependerá de la instancia y todos los métodos o variables arrojarán el mismo resultado independientemente de qué objeto lo esté invocando o accediendo.

 

MiClase mc = new MiClase();

int clases = mc.contador;

 

Por último, tengamos en cuenta que los métodos estáticos