Suscribirse al Feed
22Jul

Curso de Ubuntu

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

Paso de variables Por Referencia vs Por Valor [C#]

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

Script simple para crear backups

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

Meme: Blogs

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

[codigo] Cargar y reproducir audio en Java

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

5 gadgets “hackeables” con Linux

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
© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS