22Jul

Me entero a través de UbuntuLife que en Sin Windows se ha puesto a disposicion de todos los lectores un curso que ha ido preparando estos dias sobre Ubuntu. Está bastante completo y de seguro ayudará a más de uno a aprender muchas cosas.
Enlace de anuncio y descarga
Fin del articulo
22Jul
En C#, como en Java, u otros lenguajes de programación, es posible pasar variables a los métodos (funciones) de dos maneras: Por referencia y Por valor. La diferencia entre el uno y el otro es básicamente que:
- Cuando una variable es pasada por valor, el método recibe una copia del valor de la variable. Por lo tanto, los cambios realizados a esa variable dentro del contexto de la función, NO afecta a la variable original. Pero…
- Cuando es pasada por referencia, el método recibe la referencia a la variable original. Por tanto los cambios realizados a esa variable dentro del contexto de la función, AFECTA a la variable original.
¿Cual debo usar?
Eso depende de lo que quieras hacer. Cada una tiene sus ventajas y desventajas. Al pasar una variable por valor, estás asegurando que dicho valor no va a ser modificado por equivocación. Por otro lado, al pasar una variable por referencia, aunque la variable puede ser modificada por equivocación, ahorramos tiempo de ejecución y memoria, puesto que no es necesario crear una copia de la variable.
Pasar variables por referencia
Todas las variables que pasamos a un método declarado normalmente, son por valor. Para pasar argumentos por referencia es necesario utilizar las palabras reservada ref o out, tanto al declarar el método como al invocarlo. Cuando pasamos un argumento usando ref, es necesario que dicha variable esté ya inicializada, de lo contrario obtendremos una excepción. Si la variable que deseamos pasar por referencia no está inicializada, es nesesario usar out, de tal manera que podamos inicializar la variable dentro del contexto del método.
Ejemplo…
En el siguiente ejemplo tenemos dos variables (y Y z), las cuales son procesadas por métodos que reciben variables por valor y por referencia. El resultado y el código son:

Leer el resto de la entrada…
Los ejercicios utilizados en este post están basados en ejemplos del libro
C# How to Program de Deitel. Se pone a disposición la descargar del programa original, desarrollado para trabajar sobre Visual Studio de Microsoft en plataformas Windows, y se encuentra en inglés. La versión simplificada está basada en la original, pero sin código basura insertado por Visual Studio, se encuentra en español y ha sido probada sobre
Gnu/Linux usando
Mono.
Fin del articulo
21Jul
Uno de los aspectos más descuidados por muchos usuarios de computador, es el de realizar backups periódicamente de sus archivos. Aquí vamos a ver un pequeño tip para crear backups de una manera sencilla y rápida. Lo único que necesitaremos es un programa en Shell, tan solo de dos líneas:
#!/bin/sh
tar czvf $1.$(date +%Y%m%d-%H%M%S).tgz $1
exit $?
A este script le podemos pasar como parámetro un nombre de archivo o direcotorio, y éste crea un archivo comprimido con la fecha actual embebida en el nombre. Por ejemplo, si tenemos un directorio llamado src y deseas hacerle un bakcup, puedes invocar el script de esta manera:
$ ./backup.sh src
src/
src/EjemploGUI.java
src/Suma.java
src/EjemploGUI.class
src/Hola4.java
src/Tarea.java
src/EjemploGUI2.java
src/Hola2.java
src/EjemploGUI2.class
src/Hola3.java
src/EjemploGUI2$MiPanel.class
src/Hola.java
src/Humano.java
$ ls
bin src src.20080719-181907.tgz
Tal vez ponga algo más avanzado para hacer backups, pero de momento esto resultará muy útil para muchos. Además que es bastante sencillo!
Nota: para darle permisos de ejecución a nuestro archivo es necesario ejecutar el comando: chmod a+x bakcup.sh, suponiendo que nuestro script se llama bakcup.sh.
Descargar archivo backup.sh
Fin del articulo
20Jul
No sigo memes frecuentemente pero ya me han dicho que tengo que ser más sociable XD Este me lo pasa lo tomo de Juampa, y paso a seguirlo:
¿5 amigos cuyos blogs sin duda disfrutaría leer?
José de UbuntuLife, Marvin desde Linuxeando, Eduardo de Ubuntips, Jhon Jairo de Eurekabytes, Neodave de Be Linux My Friend y Shakaran.
¿5 blogs que leería con placer morboso y/o ocioso?
Umm… muchos. Al menos escuchar Sexo Oral Podcast. En cuanto ocioso, el de Juegos de Linux Hispano está bien. El de Linux Haters (Gente que odia a Linux)
5 blogs que nunca leería
Bueno, no conozco cosas así, pero que traten cosas de este tipo: Algo sobre pedofilia o cosas como esas. Algo sobre apoyo al maltrato animal. Cosas encontra de la gente (xenofobia, odio a los emos, etc.)
5 blogs recomendables
Magarto, El blog de Kikorb, Entre tuxes y pepinos, el renovado 120% Linux, y .::El Camino de un Geek::.
El meme se lo paso a todos los blogs que enlacé 
Fin del articulo
18Jul
En esta ocasión explicaré un sencillo ejemplo de reproducción de audio en Java, tomado del libro How-to program in Java de Deitel. La clase que utilizamos para este tipo de propósitos es AudioClip, que posee tres simples métodos:
- play(), para reproducir una vez el archivo que le tengamos asociado
- loop(), para reproducir indefinidamente el archivo que le tengamos asociado
- stop(), para detener el sonido que se está reproduciendo
Para iniciar un objeto AudioClip utilizamos el método getAudioClip, de la clase Applet, de la siguiente manera: getAudioClip(getDocumentBase(),”archivo.wav”).
El resultado…

El código…
// Cargar un clip de audio y reproducirlo.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CargarAudioYReproducir extends JApplet {
private AudioClip sonido1, sonido2, sonidoActual;
private JButton reproducirSonido, sonidoContinuo, detenerSonido;
private JComboBox seleccionarSonido;
// cargar la imagen cuando el subprograma empiece a ejecutarse
public void init()
{
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
String opciones[] = { "Welcome", "Hi" };
seleccionarSonido = new JComboBox( opciones );
seleccionarSonido.addItemListener(
new ItemListener() {
// detener sonido y cambiarlo por el que seleccionó el usuario
public void itemStateChanged( ItemEvent e )
{
sonidoActual.stop();
sonidoActual =
seleccionarSonido.getSelectedIndex() == 0 ? sonido1 : sonido2;
}
} // fin de la clase interna anónima
); // fin de la llamada al método addItemListener
contenedor.add( seleccionarSonido );
// establecer botones y manejador de eventos de botón
ButtonHandler manejador = new ButtonHandler();
reproducirSonido = new JButton( "Reproducir" );
reproducirSonido.addActionListener( manejador );
contenedor.add( reproducirSonido );
sonidoContinuo = new JButton( "Continuo" );
sonidoContinuo.addActionListener( manejador );
contenedor.add( sonidoContinuo );
detenerSonido = new JButton( "Detener" );
detenerSonido.addActionListener( manejador );
contenedor.add( detenerSonido );
// cargar sonidos y establecer sonidoActual
sonido1 = getAudioClip( getDocumentBase(), "welcome.wav" );
sonido2 = getAudioClip( getDocumentBase(), "hi.au" );
sonidoActual = sonido1;
} // fin del método init
// detener el sonido cuando el usuario cambie de página Web
public void stop()
{
sonidoActual.stop();
}
// clase interna privada para manejar eventos de botón
private class ButtonHandler implements ActionListener {
// procesar eventos de reproducir, sonido continuo y detener
public void actionPerformed( ActionEvent eventoAccion )
{
if ( eventoAccion.getSource() == reproducirSonido )
sonidoActual.play();
else if ( eventoAccion.getSource() == sonidoContinuo )
sonidoActual.loop();
else if ( eventoAccion.getSource() == detenerSonido )
sonidoActual.stop();
}
} // fin de la clase ButtonHandler
} // fin de la clase CargarAudioYReproducir
Descargar código fuente
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.
Fin del articulo
18Jul
Me encuentro vía Digg un blog en donde nos muestran los 5 más populares gadgets “hackeables” con Linux, que paso a listar:
1. Nintendo DS

2. Ipod

3. XBOX

4. Nintendo GameCube

5. Play Station 2

Fin del articulo