Estructuras Java

| lunes, 30 de marzo de 2009
Enumeraciones

En cualquier clase de colección, debe haber una forma de meter cosas y otra de sacarlas; después de todo, la principal finalidad de una colección es almacenar cosas. En un Vector, el método addElement() es la manera en que se colocan objetos dentro de la colección y llamando al método elementAt() es cómo se sacan. Vector es muy flexible, se puede seleccionar cualquier cosa en cualquier momento y seleccionar múltiples elementos utilizando diferentes índices.

Si se quiere empezar a pensar desde un nivel más alto, se presenta un inconveniente: la necesidad de saber el tipo exacto de la colección para utilizarla. Esto no parece que sea malo en principio, pero si se empieza implementando un Vector a la hora de desarrollar el programa, y posteriormente se decide cambiarlo a List, por eficiencia, entonces sí es problemático.

El concepto de enumerador, o iterador, que es su nombre más común en C++ y OOP, puede utilizarse para alcanzar el nivel de abstracción que se necesita en este caso. Es un objeto cuya misión consiste en moverse a través de una secuencia de objetos y seleccionar aquellos objetos adecuados sin que el programador cliente tenga que conocer la estructura de la secuencia . Además, un iterador es normalmente un objeto ligero, lightweight, es decir, que consumen muy pocos recursos, por lo que hay ocasiones en que presentan ciertas restricciones; por ejemplo, algunos iteradores solamente se puede mover en una dirección.

La Enumeration en Java es un ejemplo de un iterador con esas características, y las cosas que se pueden hacer son:

* Crear una colección para manejar una Enumeration utilizando el método elements(). Esta Enumeration estará lista para devolver el primer elemento en la secuencia cuando se llame por primera vez al método nextElement().
* Obtener el siguiente elemento en la secuencia a través del método nextElement().
* Ver si hay más elementos en la secuencia con el método hasMoreElements().

Y esto es todo. No obstante, a pesar de su simplicidad, alberga bastante poder. Para ver cómo funciona, el ejemplo java412.java, es la modificación de anterior, en que se utilizaba el método elementAt() para seleccionar cada uno de los elementos. Ahora se utiliza una enumeración para el mismo propósito, y el único código interesante de este nuevo ejemplo es el cambio de las líneas del ejemplo original

for( int i=0; i < coches.size(); i++ )
(( Coche )coches.elementAt( i ) ).print();

por estas otras en que se utiliza la enumeración para recorrer la secuencia de objetos

while( e.hasMoreElements() )
(( Coche )e.nextElement()).print();

Con la Enumeration no hay que preocuparse del número de elementos que contenga la colección, ya que del control sobre ellos se encargan los métodos hasMoreElements() y nextElement().

Tipos de Colecciones

Con el JDK 1.0 y 1.1 se proporcionaban librerías de colecciones muy básicas, aunque suficientes para la mayoría de los proyectos. En el JDK 1.2 ya se amplía esto y, además, las anteriores colecciones han sufrido un profundo rediseño. A continuación se verán cada una de ellas por separado para dar una idea del potencial que se ha incorporado a Java.

Vector


El Vector es muy simple y fácil de utilizar. Aunque los métodos más habituales en su manipulación son addElement() para insertar elementos en el Vector, elementAt() para recuperarlos y elements() para obtener una Enumeration con el número de elementos del Vector, lo cierto es que hay más métodos, pero no es el momento de relacionarlos todos, así que, al igual que sucede con todas las librerías de Java, se remite al lector a que consulte la documentación electrónica que proporciona Javasoft, para conocer los demás métodos que componen esta clase.

Las colecciones estándar de Java contienen el método toString(), que permite obtener una representación en forma de String de sí mismas, incluyendo los objetos que contienen. Dentro de Vector, por ejemplo, toString() va saltando a través de los elementos del Vector y llama al método toString() para cada uno de esos elementos. En caso, por poner un ejemplo, de querer imprimir la dirección de la clase, parecería lógico referirse a ella simplemente como this (los programadores C++ estarán muy inclinados a esta posibilidad), así que tendríamos el código que muestra el ejemplo java413.java y que se reproduce en las siguientes líneas.

import java.util.*;

public class java413 {
public String toString() {
return( "Direccion del objeto: "+this+"\n" );
}

public static void main( String args[] ) {
Vector v = new Vector();

for( int i=0; i < 10; i++ )
v.addElement( new java413() );
System.out.println( v );
}
}

El ejemplo no puede ser más sencillo, simplemente crea un objeto de tipo java413 y lo imprime; sin embargo, a la hora de ejecutar el programa lo que se obtiene es una secuencia infinita de excepciones. Lo que está pasando es que cuando se le indica al compilador:

"Direccion del objeto: "+this

el compilador ve un String seguido del operador + y otra cosa que no es un String, así que intenta convertir this en un String. La conversión la realiza llamando al método toString() que genera una llamada recursiva, llegando a llenarse la pila.

Si realmente se quiere imprimir la dirección del objeto en este caso, la solución pasa por llamar al método toString() de la clase Object. Así, si en vez de this se coloca super.toString(), el ejemplo funcionará. En otros casos, este método también funcionará siempre que se esté heredando directamente de Object o, aunque no sea así, siempre que ninguna clase padre haya sobreescrito el método toString().

BitSet

Se llama así lo que en realidad es un Vector de bits. Lo que ocurre es que está optimizado para uso de bits. Bueno, optimizado en cuanto a tamaño, porque en lo que respecta al tiempo de acceso a los elementos, es bastante más lento que el acceso a un array de elementos del mismo tipo básico.

Además, el tamaño mínimo de un BitSet es de 64 bits. Es decir, que si se está almacenando cualquier otra cosa menor, por ejemplo de 8 bits, se estará desperdiciando espacio.

En un Vector normal, la colección se expande cuando se añaden más elementos. En el BitSet ocurre los mismo pero ordenadamente. El ejemplo java414.java, muestra el uso de esta colección.

Se utiliza el generador de números aleatorios para obtener un byte, un short y un int, que son convertidos a su patrón de bits e incorporados al BitSet.

Stack


Un Stack es una Pila, o una colección de tipo LIFO (last-in, first-out). Es decir, lo último que se coloque en la pila será lo primero que se saque. Como en todas las colecciones de Java, los elementos que se introducen y sacan de la pila son Object, así que hay que tener cuidado con el moldeo a la hora de sacar alguno de ellos.

Los diseñadores de Java, en vez de utilizar un Vector como bloque para crear un Stack, han hecho que Stack derive directamente de Vector, así que tiene todas las características de un Vector más alguna otra propia ya del Stack. El ejemplo siguiente, java415.java, es una demostración muy simple del uso de una Pila que consisten en leer cada una de las líneas de un array y colocarlas en un String.

Cada línea en el array diasSemana se inserta en el Stack con push() y posteriormente se retira con pop(). Para ilustrar una afirmación anterior, también se utilizan métodos propios de Vector sobre el Stack. Esto es posible ya que en virtud de la herencia un Stack es un Vector, así que todas las operaciones que se realicen sobre un Vector también se podrán realizar sobre un Stack, como por ejemplo, elementAt().

Hashtable

Un Vector permite selecciones desde una colección de objetos utilizando un número, luego parece lógico pensar que hay números asociados a los objetos. Bien, entonces ¿qué es lo que sucede cuando se realizan selecciones utilizando otros criterios? Un Stack podría servir de ejemplo: su criterio de selección es "lo último que se haya colocado en el Stack". Si rizamos la idea de "selección desde una secuencia", nos encontramos con un mapa, un diccionario o un array asociativo. Conceptualmente, todo parece ser un vector, pero en lugar de acceder a los objetos a través de un número, en realidad se utiliza otro objeto. Esto nos lleva a utilizar claves y al procesado de claves en el programa. Este concepto se expresa en Java a través de la clase abstracta Dictionary. El interfaz para esta clase es muy simple:

* size(), indica cuántos elementos contiene,
* isEmpty(), es true si no hay ningún elemento,
* put( Object clave,Object valor), añade un valor y lo asocia con una clave
* get( Object clave ), obtiene el valor que corresponde a la clave que se indica
* remove( Object clave ), elimina el par clave-valor de la lista
* keys(), genera una Enumeration de todas las claves de la lista
* elements(), genera una Enumeration de todos los valores de la lista

Todo es lo que corresponde a un Diccionario (Dictionary), que no es excesivamente difícil de implementar. El ejemplo java416.java es una aproximación muy simple que utiliza dos Vectores, uno para las claves y otro para los valores que corresponden a esas claves.

import java.util.*;

public class java416 extends Dictionary {
private Vector claves = new Vector();
private Vector valores = new Vector();
public int size() {
return( claves.size() );
}
public boolean isEmpty() {
return( claves.isEmpty() );
}

public Object put( Object clave,Object valor ) {
claves.addElement( clave );
valores.addElement( valor );
return( clave );
}

public Object get( Object clave ) {
int indice = claves.indexOf( clave );
// El metodo indexOf() devuelve -1 si no encuentra la clave que se
// esta buscando
if( indice == -1 )
return( null );
return( valores.elementAt( indice ) );
}

public Object remove(Object clave) {
int indice = claves.indexOf( clave );

if( indice == -1 )
return( null );
claves.removeElementAt( indice );
Object valorRetorno = valores.elementAt( indice );
valores.removeElementAt( indice );
return( valorRetorno );
}

public Enumeration keys() {
return( claves.elements() );
}

public Enumeration elements() {
return( valores.elements() );
}

// Ahora es cuando se prueba el ejemplo
public static void main( String args[] ) {
java416 ej = new java416();
for( char c='a'; c <= 'z'; c++ )
ej.put( String.valueOf( c ),String.valueOf( c ).toUpperCase() );

char[] vocales = { 'a','e','i','o','u' };
for( int i=0; i < vocales.length; i++ )
System.out.println( "Mayusculas: " +
ej.get( String.valueOf( vocales[i] ) ) );
}
}

La primera cosa interesante que se puede observar en la definición de java416 es que extiende a Dictionary. Esto significa que java416 es un tipo de Diccionario, con lo cual se pueden realizar las mismas peticiones y llamar a los mismos métodos que a un Diccionario. A la hora de construirse un Diccionario propio todo lo que se necesita es rellenar todos los métodos que hay en Dictionary. Se deben sobreescribir todos ellos, excepto el constructor, porque todos son abstractos.

Los Vectores claves y valores están relacionados a través de un número índice común. Es decir, si se llama al método put() con la clave "león" y el valor "rugido" en la asociación de animales con el sonido que producen, y ya hay 100 elementos en la clase java416, entonces "león" será el elemento 101 de claves y "rugido" será el elemento 101 de valores. Y cuando se pasa al método get() como parámetro "león", genera el número índice con claves.indexOf(), y luego utiliza este índice para obtener el valor asociado en el vector valores.

Para mostrar el funcionamiento, en main() se utiliza algo tan simple como mapear las letras minúsculas y mayúsculas, que aunque se pueda hacer de otras formas más eficientes, sí sirve para mostrar el funcionamiento de la clase, que es lo que se pretende por ahora.

La librería estándar de Java solamente incorpora una implementación de un Dictionary, la Hashtable. Esta Hashtable tiene el mismo interfaz básico que la clase del ejemplo anterior java416, ya que ambas heredan de Dictionary, pero difiere en algo muy importante: la eficiencia. Si en un Diccionario se realiza un get() para obtener un valor, se puede observar que la búsqueda es bastante lenta a través del vector de claves. Aquí es donde la Hashtable acelera el proceso, ya que en vez de realizar la tediosa búsqueda línea a línea a través del vector de claves, utiliza un valor especial llamado código hash. El código hash es una forma de conseguir información sobre el objeto en cuestión y convertirlo en un int relativamente único para ese objeto. Todos los objetos tienen un código hash y hashCode() es un método de la clase Object. Una Hashtable coge el hashCode() del objeto y lo utiliza para cazar rápidamente la clave. El resultado es una impresionante reducción del tiempo de búsqueda. La forma en que funciona una tabla Hash se escapa del Tutorial, hay muchos libros que lo explican en detalle, por ahora es suficiente con saber que la tabla Hash es un Diccionario muy rápido y que un Diccionario es una herramienta muy útil.

Para ver el funcionamiento de la tabla Hash está el ejemplo java417.java, que intenta comprobar la aleatoriedad del método Math.random(). Idealmente, debería producir una distribución perfecta de números aleatorios, pero para poder comprobarlo sería necesario generar una buena cantidad de números aleatorios y comprobar los rangos en que caen. Una Hashtable es perfecta para este propósito al asociar objetos con objetos, en este caso, los valores producidos por el método Math.random() con el número de veces en que aparecen esos valores.

En el método main() del ejemplo, cada vez que se genera un número aleatorio, se convierte en objeto Integer para que pueda ser manejado por la tabla Hash, ya que no se pueden utilizar tipos básicos con una colección, porque solamente manejan objetos. El método containsKey() comprueba si la clave se encuentra ya en la colección. En caso afirmativo, el método get() obtiene el valor asociado a la clave, que es un objeto de tipo Contador. El valor i dentro del contador se incrementa para indicar que el número aleatorio ha aparecido una vez más.

Si la clave no se encuentra en la colección, el método put() colocará el nuevo par clave-valor en la tabla Hash. Como Contador inicializa automáticamente su variable i a 1 en el momento de crearla, ya se indica que es la primera vez que aparece ese número aleatorio concreto.

Para presentar los valores de la tabla Hash, simplemente se imprimen. El método toString() de Hashtable navega a través de los pares clave-valor y llama a método toString() de cada uno de ellos. El método toString() de Integer está predefinido, por lo que no hay ningún problema en llamar a toString() para Contador. Un ejemplo de ejecución del programa sería la salida que se muestra a continuación:

%java java417
{19=526, 18=533, 17=460, 16=513, 15=521, 14=495, 13=512, 12=483,
11=488, 10=487, 9=514, 8=523, 7=497, 6=487, 5=489, 3=509, 2=503,
1=475, 0=505}

Al lector le puede parecer superfluo el uso de la clase Contador, que parece que no hace nada que no haga ya la clase Integer. ¿Por qué no utilizar int o Integer? Pues bien, int no puede utilizarse porque como ya se ha indicado antes, las colecciones solamente manejan objetos, por ello están las clases que envuelven a esos tipos básicos y los convierten en objetos. Sin embargo, la única cosa que pueden hacer estas clases es inicializar los objetos a un valor determinado y leer ese valor. Es decir, no hay modo alguno de cambiar el valor de un objeto correspondiente a un tipo básico, una vez que se ha creado. Esto hace que la clase Integer sea inútil para resolver el problema que plantea el ejemplo, así que la creación de la clase Contador es imprescindible. Quizás ahora que el lector sabe que no puede colocar objetos creados a partir de las clases correspondientes a tipos básicos en colecciones, estas clases tengan un poco menos de valor, pero... la vida es así, por un lado da y por otro quita... y Java no va a ser algo diferente.

En el ejemplo se utiliza la clase Integer, que forma parte de la librería estándar de Java como clave para la tabla Hash, y funciona perfectamente porque tiene todo lo necesario para funcionar como clave. Pero un error muy común se presenta a la hora de crear clases propias para que funcionen como claves. Por ejemplo, supóngase que se quiere implementar un sistema de predicción del tiempo en base a objetos de tipo Oso y tipo Prediccion, para detectar cuando entra la primavera. Tal como se muestra en el ejemplo java418.java, la cosa parece muy sencilla, se crean las dos clases y se utiliza Oso como clave y Prediccion como valor.

Cada Oso tendrá un número de identificación, por lo que sería factible buscar una Prediccion en la tabla Hash de la forma: "Dime la Prediccion asociada con el Oso número 3". La clase Prediccion contiene un booleano que es inicializado utilizando Math.random(), y una llamada al método toString() convierte el resultado en algo legible. En el método main(), se rellena una Hashtable con los Osos y sus Predicciones asociadas. Cuando la tabla Hash está completa, se imprime. Y ya se hace la consulta anterior sobre la tabla para buscar la Prediccion que corresponde al Oso número 3.

Esto parece simple y suficiente, pero no funciona. El problema es que Oso deriva directamente de la clase raíz Object, que es lo que ocurre cuando no se especifica una clase base, que en última instancia se hereda de Object. Luego es el método hashCode() de Object el que se utiliza para generar el código hash para cada objeto que, por defecto, utiliza la dirección de ese objeto. Así, la primera instancia de Oso(3) no va a producir un código hash igual que producirá una segunda instancia de Oso(3), con lo cual no se puede utilizar para obtener buenos resultados de la tabla.

Se puede seguir pensando con filosofía ahorrativa y decir que todo lo que se necesita es sobreescribir el método hashCode() de la forma adecuada y ya está. Pero, esto tampoco va a funcionar hasta que se haga una cosa más: sobreescribir el método equals(), que también es parte de Object. Este es el método que utiliza la tabla Hash para determinar si la clave que se busca es igual a alguna de las claves que hay en la tabla. De nuevo, el método Object.equals() solamente compara direcciones de objetos, por lo que un Oso(3) probablemente no sea igual a otro Oso(3).

Por lo tanto, a la hora de escribir clases propias que vayan a funcionar como clave en una Hastable, hay que sobreescribir los métodos hashCode() y equals(). El ejemplo java419.java ya se incorporan estas circunstancias.

import java.util.*;

// Si se crea una clase que utilice una clave en una Tabla Hash, es
// imprescindible sobreescribir los metodos hashCode() y equals()
// Utilizamos un oso para saber si está hibernando en su temporada de
// invierno o si ya tine que despertarse porque le llega la primavera
class Oso2 {
int numero;
Oso2( int n ) {
numero = n;
}

public int hashCode() {
return( numero );
}

public boolean equals( Object obj ) {
if( (obj != null) && (obj instanceof Oso2) )
return( numero == ((Oso2)obj).numero );
else
return( false );
}
}

// En función de la oscuridad, o claridad del día, pues intenta saber si
// ya ha la primavera ha asomado a nuestras puertas
class Prediccion {
boolean oscuridad = Math.random() > 0.5;

public String toString() {
if( oscuridad )
return( "Seis semanas mas de Invierno!" );
else
return( "Entrando en la Primavera!" );
}
}

public class java419 {
public static void main(String args[]) {
Hashtable ht = new Hashtable();

for( int i=0; i < 10; i++ )
ht.put( new Oso2( i ),new Prediccion() );
System.out.println( "ht = "+ht+"\n" );

System.out.println( "Comprobando la prediccion para el oso #3:");
Oso2 oso = new Oso2( 3 );
if( ht.containsKey( oso ) )
System.out.println( (Prediccion)ht.get( oso ) );
}
}

El método hashCode() devuelve el número que corresponde a un Oso como un identificador, siendo el programador el responsable de que no haya dos números iguales. El método hashCode() no es necesario que devuelva un identificador, sino que eso es necesario porque equals() debe ser capaz de determinar estrictamente cuando dos objetos son equivalentes.

El método equals() realiza dos comprobaciones adicionales, una para comprobar si el objeto es null, y, en caso de que no lo sea, comprobar que sea una instancia de Oso, para poder realizar las comparaciones, que se basan en los números asignados a cada objeto Oso. Cuando se ejecuta este nuevo programa, sí se produce la salida correcta. Hay muchas clases de la librería de Java que sobreescriben los métodos hashCode() y equals() basándose en el tipo de objetos que son capaces de crear.

Las tablas Hash son utilizadas también por muchas clases de la librería estándar de Java, por ejemplo, para obtener las propiedades del sistema se usa la clase Properties que hereda directamente de Hashtable. Y además, contiene una segunda Hashtable en donde guarda las propiedades del sistema que se usan por defecto.

Firefox 3.0.8 disponible

| sábado, 28 de marzo de 2009


Hace solamente dos días fue noticia una vulnerabilidad en Firefox considerada como crítica por Mozilla. La misma, descubierta por el hacker italiano Giudo Landi, provocaba un fallo en el navegador al ejecutar un archivo XML malicioso. A raiz de ello la gente de Mozilla se ha adelantado y acaba de ser publicado Firefox 3.0.8 que soluciona este y otros problemas de seguridad.

Seguramente te aparezca un mensaje de actualización durante las próximas horas, o puedes ir al menú Ayuda - Buscar actualizaciones para realizar la actualización manualmente. Si no quieres esperar ya puedes descargarte la nueva versión desde el siguiente enlace:

Descargar Firefox 3.0.8

Crea contraseñas más seguras

|


La elección de una buena contraseña para cualquier cosa, especialmente en la web, siempre es un pequeño dolor de cabeza. Las características que debe tener una buena contraseña para que sea segura (es decír, difícil de averiguar ya sea por medios técnicos o por ingeniería social) son:

* Que sea fácil de recordar.
* Que sea larga (casi todos los servicios piden, como mínimo, 8 caracteres)
* Que alterne signos, números y letras en mayúsculas y minúsculas.
* Que no contenga información personal tuya que sea pública (es decir, que hayas publicado en Internet) o que sea fácil de obtener (“Estamos haciendo una encuesta…”).
*
Que sea rápida de escribir (esto no se comenta mucho, pero… ¿a qué prefieres no tardar mucho cada vez que entras en tu servicio web favorito?)

Estas características casi son excluyentes entre ellas. ¿Cómo alcanzar un equilibrio combinándolas para que crear una contraseña que sea fácil de recordar al tiempo que sea segura y relativamente corta, para que no nos lleve horas (y varios errores) entrar a un servicio?

En Make use of, Damien Oh nos propone un método muy curioso para ello. Veámoslo resumido (o pásate por allí para leer la entrada original) y con alguna que otra aportación del que suscribe.

- Elige un término personal, que no vayas a olvidar. Preferiblemente, que sea corto. Sí, sí, ya sé que he dicho que una contraseña debe ser larga… Déjame terminar. Yo voy a elegir uno poco original: mi casa.

- Sustituye las letras de tu término elegido de la siguiente manera:

* las “a” por @
* las “s” por $
* Los espacios por %
* Las “o” por 0 (cero)
* Las “i” por ¡ (en el original dice “!”, pero ya que en español tenemos signo de apertura en las exclamaciones, aprovechémoslo).

De esta forma, mi casa se transforma en m¡%c@s@.

- A continuación, añade el nombre del servicio para el cual creas la contraseña. Por ejemplo, si la contraseña anterior fuera para Gmail, podría ser m¡%c@s@gm@¡l.

Y eso es todo. Damien propone también cambiar el orden de los términos (el término elegido y el nombre del servicio), y aunque a mí me parece rizar el rizo, no me parece mal tenerlo en cuenta por si acaso, que los ladrones de cuentas andan al acecho de cualquier descuido que tengamos.

Proyecto Autodidacta

Qué significan los emoticonos más usados

|


Un emoticono es un conjunto de signos de puntuación que, agrupados, tratan de reflejar el matiz de una frase que puede ser difícil de apreciar pero que, si la misma fuese realizada verbalmente, podríamos distinguir gracias a la entonación.

Aunque no sean perfectos, sirven para aligerar la carga de una frase o para enfatizar una de las maneras en que puede ser interpretada. El texto puede resultar en ocasiones muy frío y una simple frase puede interpretarse de muchas maneras. Por ejemplo, la frase…

Ya era hora de que terminaras




… puede parecer una recriminación y “sonar” algo brusca. Pero si le añadimos un emoticono…

Ya era hora de que terminaras :)



… estamos ayudando a matizar que la frase es dicha sin acritud, de buen humor y sin que “suene” a reprimenda.

Para interpretarlos, todo lo que tenemos que hacer es girarlos imaginariamente hacia la derecha en nuestra cabeza. De esa forma, un :) se transformará en una cara sonriente.

Los emoticonos más comunes suelen construirse con dos o tres signos, dependiendo de la persona. Los de tres signos lo que suelen hace es añadir una nariz para que resulte más claro. De esa forma, a la cara sonriente :) se le añade una nariz :-) para que parezca más una cara que dos puntos seguidos de un paréntesis.

A pesar de la gran variedad de emoticonos que existe, tan sólo se utilizan unos pocos de manera regular. La imaginación de los usuarios ha hecho que aparezcan muchos que, aunque ingeniosos, son de difícil interpretación. A continuación, veamos qué emoticonos se suelen usar habitualmente en las conversaciones, correos e incluso entradas de blogs con más asiduidad:








































:)


:-)

Sonrisa: emplealo cuando la frase pueda ser malinterpretada.
;)


;-)

Guiño: úsalo cuando quieras reflejar complicidad o ironía.
:D


:-D

Carcajada: refleja que lo que se ha dicho o lo que dices te causa mucha risa.
XD


X-D

Muerto de la risa: pues eso, que te mueres de risa con lo que se ha dicho o con lo que dices.
:(


:-(

Tristeza: lo que dices, lo dices con pena; o demuestras tu pesar ante lo que se dice.
:o


:-o

Sorpresa: lo que dicen te sorprende, te asombra.
:p


:-p

Sacando la lengua: úsalo cuando quieras añadir algo de burla, broma, cachondeo…
^_^Felicidad: úsalo para demostrar que te sientes contento.


Proyecto Autodidacta

Como ser un buen autodidacta

|



No importa que tan largo, intensivo o profundo sea el curso que sigamos: en esto de la informática la formación debe ser continua. A cada rato aparecen nuevos programas y nuevas tecnologías que nos exigen actualizarnos con rapidez para poder sacarles el mayor rendimiento. Por ello, es necesario contar con una cierta “vena” autodidacta, un impulso que nos lleve a tratar de aprender las cosas por nosotros mismos, con nuestros propios recursos.

En esta entrada, reciclada de una que escribí hace tiempo para una de las encarnaciones pasadas de esta web, vamos a ver algunos consejos que te pueden ser útiles a la hora de enfrentarte a un programa o hasta a todo un sistema operativo de manera que aprendas a manejarlo de una manera que te resulte productiva, entretenida e interesante.

Aunque recibir clases formales siempre resulta de utilidad, aprender algo por nosotros mismos es, en muchos casos, más enriquecedor. El proceso de descubrimiento y aplicación permite que el conocimiento se afiance más y, algo nada desdeñable, nos sentimos mucho más orgullosos de nosotros mismos.

Entonces, hagamos un ejercicio de imaginación: estás frente a un programa cuyas posibilidades te entusiasman y al que quieres sacarle partido de manera que chorree bits por sus costados. Acabas de instalarlo y entonces…

1.- Explora el programa, haz clic por todas partes, cambia valores y configuraciones. Si estás explorando el sistema operativo, ten cuidado con algunas cosas. Generalmente, los sistemas suelen avisar cuando se van a realizar cambios importantes que pueden dejarle inservible o producir problemas, así que ten mucho ojo y lee los cuadros de aviso que vayan apareciendo (esto es sobre todo para Windows).

2.- Usa la ayuda del programa. Si bien explorar es una actividad sumamente productiva, en ocasiones nos vamos a topar con que no encontramos la función que buscamos en el programa, a pesar de que sabemos que la tiene o, por lo menos, lo suponemos (por ejemplo, un procesador de textos casi seguro que ha de contar con una opción para cambiar el tipo de letra). En ese momento es cuando debemos recurrir a la ayuda del programa. Es increíble la cantidad de veces que nos olvidamos o deseñamos las ayudas que acompañan al software. Si están ahí es para algo.

3.- Anota todo lo que descubras. Sí, ANOTA. Se puede decir más alto pero no más claro. Apunta en un cuaderno o en un archivo de texto todos los descubrimientos que vayas haciendo, sobre todo si estamos hablando de cambiar configuraciones y cosas así. No hace falta que te explayes en detalles. Anota simplemente el camino que hayas seguido para hacer determinada cosa y, si has cambiado algún valor, apunta el valor que has utilizado.

Cada uno tiene su propia manera de anotar. Personalmente, suelo usar un cuaderno donde anoto todo, cualquier cosa, una detrás de otra. En lugar de dividirlo en secciones, lo tengo dividido en páginas. Por ejemplo, lo relacionado con el blog, le pongo como título "Blog" en la parte superior de la página y comienzo a escribir. Si de pronto necesito hacer anotaciones sobre, por decir algo, programas, en la segunda hoja (que sería la tercera página) le pongo "Programas" en la parte de arriba y escribo. Cuando termine la primera hoja de blogs, paso a la tercera hoja del cuaderno, le pongo el título "Blog" y continúo escribiendo. Y así continúo, creando una nueva sección a medida que voy avanzando por el cuaderno.

En otras ocasiones, recurro a un archivo de texto, especialmente cuando quiero registrar cosas que he leído en otras webs y que, tras probarlas, deseo conservar. Lo suelo hacer principalmente en materia de sistemas operativos (principalmente GNU/Linux) a los que no estoy acostumbrado.

En cuanto a las instrucciones o características de un programa concreto, sencillamente escribo primero el nombre del programa en mayúsculas y a continuación las instrucciones o los valores que quiero conservar, o cualquier tontería que pueda necesitar después.

Una manera muy práctica de anotar la manera de hacer determinada cosa en un programa es apuntando todos los sitios donde debes hacer clic o seleccionar separados por el signo ">" (mayor qué): Formato > Caracter > Fuente.

Anotar produce un curioso efecto que más de uno tiene que haber notado alguna vez: si lo escribimos, no se nos olvida (o tarda más en olvidarse); si no lo escribimos, lo olvidamos con rapidez. Esto puede atribuirse (aunque, por lo que he leído, no está del todo comprobado) a que en nuestro cerebro exista una zona que retiene el recuerdo del sonido y la imagen pero no el pensamiento puro, de manera que el acto de escribir lo que queremos recordar se retiene mejor (lo leí en "Los dragones del edén", de Carl Sagan). Sea por lo que sea, es un efecto que ocurre muy habitualmente, así que no hay que desdeñarlo: anota.

4.- Hazlo todo con un objetivo concreto y útil. Explora, usa la ayuda y anota tus descubrimientos pero hazlo con un objetivo. El problema de explorar es que si no se tiene un objetivo concreto, nos aburrimos con rapidez. Planteate hacer algo, lo que sea, y si es posible que te sea útil de alguna manera. Por ejemplo, si tienes un nuevo programa de gráficos, proponte hacer un montaje fotográfico con esas fotos que tomaste en las vacaciones o con esas imágenes que tanto te gustan y luego úsalo como papel tapiz. Se aprende el triple cuando se tiene un objetivo que cuando se explora sin rumbo fijo.

5.- Recurre a Internet. Cuando te atasques en un procedimiento, busca por la red de redes. Preferiblemente, busca tutoriales y manuales. Y si son descargables, mejor. Así podrás consultarlos cuando no estés conectado e incluso compartirlos. A la hora de hacer la búsqueda, escribe siempre un verbo en infinitivo, algunas características de lo que quieres hacer, el nombre del programa (a veces es necesaria hasta la versión); por ejemplo: crear botón Gimp. Si lo que quieres es algo que hable de muchas características del programa, escribe el nombre del programa y la palabra tutorial o manual; por ejemplo: Gimp manual. ¡Ah! y no te olvides realizar la búsqueda primero en tu idioma, pero si no encuentras lo que buscas, intenta con el inglés: hay mucho material en el idioma de Shakespeare.

Advertencia sobre los sistemas operativos:



Aunque resulta de mucha utilidad la exploración, a la hora de efectuarla en un sistema operativo los resultados pueden ser desastrosos si no sabemos a ciencia cierta qué estamos haciendo, especialmente en GNU/Linux. Por eso, quisiera resaltar los siguientes puntos:

Anota lo que haces y los valores originales que cambias. No será la primera vez que explorando me cargo una configuración. Ahórrate lamentos y apunta los pasos que sigues y los valores originales cuando vayas a cambiar algo de importancia. Una manera de identificar algo muy importante es porque es difícil llegar hasta ello (pero no tomes esto como una regla inalterable).

Documéntate primero: a menos que sea un sistema muy reciente, seguro que encuentras abundante información en la web acerca de lo que quieres hacer. Y, como no, recurre primero a la ayuda del sistema antes de conectarte.

Cubre las necesidades a medida que aparecen: explorar un sistema es algo muy aburrido, y como nos cansamos pronto, eso nos puede ayudar a alejarnos de peligros innecesarios. Un sistema se aprende usándolo, eso suele ocurrir en el día a día, durante el transcurso de diferentes tareas. Un sistema operativo es, al fin y al cabo, tan sólo la base donde se colocan lo que nos permite realizar nuestro trabajo: los programas. Por eso, lo mejor que puedes hacer es ir descubriendo como se hacen determinadas cosas a medida que lo necesitas, en lugar de tratar de averiguarlas sin más. Por ejemplo, si después de unos días descubres que el tamaño de la hora que muestra el reloj te molesta porque no puedes verla bien, averigua como cambiarlo.

Usa un live CD: esto es aplicable para distribuciones GNU/Linux. Los live CD permiten cargar un sistema operativo en una computadora sin necesidad de instalarlo. Generalmente, si luego así lo queremos, podemos dejarlo instalado sin mucha complicación. Esto nos permite probar nuevos sistemas con facilidad y sin correr ningún riesgo.

Fuente:Proyecto Autodidacta

No Te Quedes En El 2001 , Usa Linux

| viernes, 27 de marzo de 2009
Una de las cosas que argumento a mis amigos para dar el paso de cambiarse a Windows es la antiguedad de este sistema, todos sabemos que en el mundo de las tecnologias hay que mantenerse inovadores, en medio año muchas de las cosas que conocemos se vuelven practicamente obsoletas.

Entonces ¿Por qué seguir usando Windows? Todos sabemos que Windows Vista es un mal sistema operativo, no tiene nada de innovador, por el contrario es lento, exige grandes recursos y provoca incompatibilidades serias con programas y hardware, muchos por ello deciden regresarse a Windows XP ya que es el unico que conocen.

Pero Windows XP salio al mercado en el año 2001, es decir han pasado ya casi 8 años desde su salida, por lo que lógicamente estamos hablando de un sistema operativo obsoleto. En cambio GNU/Linux es un sistema que cuenta con cientos de distribuciones, cada una actualizandose cada pocos meses con nuevas versiones y nuevas caracteristicas.

Esto lo he visto reflejado en un video de Facundo Arena que explica el porque pasarse a Linux:

RedUSERS TV: "No te quedes en el 2001, usá Linux" from Sergio Vallejo on Vimeo

Vídeo: ¿Qué es Linux?

|
He encontrado un vídeo que explica a grandes rasgos lo que es Linux para los que no lo conocen aún.



Como dicén en el video, siendo un sistema operativo que promete ser mejor que el que seguramente utilizas actualmente (Windows) y siendo gratuito y de facíl instalación, ¿por qué no probarlo? Solo dale una oportunidad para aprender un poco más, y olvidarte de los virus y la inestabilidad.

Open Suse desde Cero

|
Bueno escribo este articulo para aquellos que aun no conocen o recien se inician en un sistema operativo linux como lo es la distribución OpenSuse

En este blog te enseña como hacer cosas basicas que haces en Windows como cambiar tu papel tapiz (wallpaper)



Suse desde Cero

Los 10 errores de los nuevos administradores de sistemas Linux.

|
Los nuevos administradores de los sistemas GNU/Linux cometen o dejan pasar por alto algunas de estas cosas y ponen en riesgo su sistema. Estos tips te ayudarán a entender mejor tu nuevo sistema y en consecuencia utilizarlo mejor.


1. Instalación de aplicaciones de diversos tipos
Esto podría no parecer tan mala idea en primer lugar. Si usted está utilizando Ubuntu y sabe que el sistema de paquetes apt se basa en paquetes .deb . Pero hay una serie de aplicaciones que puedes encontrar sólo desde su código fuente. No es gran cosa, ¿verdad? ellos se instalan y luego funcionan. ¿Por qué no deve hacer esto? Simple, su sistema de gestión de paquetes no puede mantener un registro de lo que ha instalado desde el código fuente. Entonces, ¿qué ocurre cuando un paquete A (que ha instalado desde el código fuente) depende del paquete B (que se instaló a partir de un binario .deb) y el paquete B se actualiza a partir de la actualización de administrador? El paquete puede que siga funcionando o tal vez no. Pero si tanto el paquete A y B se han instalado de .deb’s, las posibilidades de que ambos sigan funcionando son mayores. Además, la actualización de paquetes es mucho más fácil cuando todos los paquetes son del mismo tipo binario.

2. El descuido de las actualizaciones
Bueno, este no es un punto que se relacione con las competencias de los administradores de sistemas Linux. Sin embargo, muchos administradores obtienen Linux lo ejecutan y creen que no tienen que hacer nada más. Es sólido, seguro, funciona. Bueno, las nuevas actualizaciones pueden incluir parches que solucionen diversos fallos. Mantenerse al día con sus actualizaciones pueden hacer la diferencia entre un peligro y un sistema seguro. Y sólo porque usted puede descansar en la seguridad de Linux no quiere decir que usted debe hacerlo. Por motivos de seguridad, para las nuevas características, para la estabilidad - las mismas razones, todos nos hemos acostumbrado a la actualización de Windows - siempre debe mantenerse al día con las actualizaciones de Linux.

3. La mala elección de contraseña para root
Claro, su contraseña de usuario estándar tiene que ser algo fácil de recordar. Sin embargo, que la contraseña de root - en una empresa que tiene que proteger su servidor de base de datos - tiene que dar un nivel mayor de dificultad. Hacer una contraseña que usted podría tener que almacenar, cifrar en una llave USB, que requiera luego que usted introduzca el dispositivo USB en la máquina y descifre la contraseña.

4. Evitar la línea de comandos
Nadie quiere tener que memorizar un montón de comandos. Y en su mayor parte, el GUI se encarga de una gran mayoría de ellos. Pero hay momentos en la línea de comandos es más fácil, más rápido, más segura y más fiable. Evitar la línea de comandos debe ser considerado como un pecado capital de la administración de Linux. Usted debe, al menos, tener una sólida comprensión de cómo funciona la línea de comandos y un pequeño arsenal de comandos que puede utilizar sin tener que RTFM. Con una pequeña selección de herramientas de línea de comandos en la parte superior de las herramientas de la GUI, que debería estar listo para cualquier cosa.

5. No mantener una versión del kernel que funcione
Vamos hacerle frente, usted no necesita 12 kernels instalados en su máquina. Pero usted necesita actualizar su kernel, y el proceso de actualización no borra los núcleos anteriores. ¿Qué hacer? Usted tendría que mantener al menos el último núcleo funcional en todo momento. Digamos que usted tiene 2.6.22 en funcionamiento y 2.6.20 como copia de seguridad. Si actualiza a 2.6.26 y todo está funcionando bien, puede eliminar 2.6.20. Si utiliza un sistema basado en rpm, puede usar este método para eliminar los núcleos antiguos:

rpm -qa | grep -i kernel followed by rpm-e kernel-{VERSION}.


6. No hacer copias de seguridad de los archivos de configuración críticos
¿Cuántas veces has actualizado X11 sólo para encontrar la nueva versión de su fubar’d en el archivo xorg.conf hasta el punto de que ya no se puede utilizar X? Solía ocurrirme mí cuando era nuevo en Linux. Pero ahora, en cualquier momento que X va a ser actualizado siempre realizo una copia de seguridad de /etc/X11/xorg.conf en caso de que la actualización vaya mal. Claro, la actualización de X hace una copia de seguridad de xorg.conf, pero lo hace en el directorio /etc/X11. Y aunque esto a menudo funciona perfectamente, es mejor que la copia de seguridad quede bajo su propio control. Yo siempre hago la copia de seguridad de xorg.conf en / -directorio raíz-, así que sólo el usuario root puede acceder a él. Mejor que curar. Esto se aplica a otras copias de seguridad críticas, como Samba, Apache, y MySQL y demás.

7. Arrancar un directamente el servidor X
Cuando una máquina es usada como servidor, es posible que desee tener X instalado para que algunas tareas de administración sean más fáciles. Pero esto no significa que usted debe tener que iniciar directamente el servidor X. Este será un desperdicio de memoria y preciosos ciclos de la CPU. En lugar de ello, detener el proceso de arranque en el runlevel 3 por lo que están a la izquierda en la línea de comandos. No sólo la licencia de todos sus recursos a los servidores, sino que también mantener miradas indiscretas de su máquina (a menos que conocer la línea de comandos y contraseñas para acceder). Para iniciar una sesión en X, usted simplemente tiene que acceder y ejecutar el comando startx para llevar hasta su escritorio.

8. No entender los permisos
Los permisos pueden hacer su vida realmente fácil, pero si se hace mal, puede hacer la vida realmente fácil para los piratas informáticos. La forma más sencilla de manejar los permisos es utilizando el método de rwx. Esto es lo que significan: r = lectura w = escribir x = ejecutar

Supongamos que quiere que un usuario sea capaz de leer un archivo, pero no escribirlo. Para ello, sería cuestión de usar chmod u + w, u-rx nombre de archivo. ¿Qué ocurre si frecuentemente un usuario nuevo vio una advertencia de que no tiene permisos para utilizar el fichero y marcó lo marcó con algo parecido a chmod 777 nombre de archivo para evitar el problema?. Esto puede causar más problemas. Entonces recuerde esto: 777 da un archivo de rwx permisos a todos los usuarios (root, grupo, y otros), 666 da el archivo rw privilegios a todos los usuarios, 555 da el archivo rx permisos a todos los usuarios, 444 r da privilegios a todos los usuarios, 333 wx da privilegios a todos los usuarios, 222 W da privilegios a todos los usuarios, 111 x da privilegios a todos los usuarios, y 000 no da privilegios a todos los usuarios.

9. Inicio de sesión como root
Si usted necesita privilegios de root para ejecutar o configurar una aplicación, en su directorio raíz en una cuenta de usuario estándar. ¿Por qué es la es tan malo esto? Bueno, cuando se inicia la sesión como un usuario estándar, ejecutando todas las aplicaciones X aunque se pueda acceder al sistema se tienen ciertas restricciones. En cambio si inicia sesión como root, X tiene todos los permisos de root. Esto puede provocar dos problemas:
Si usted comete un gran error a través de un GUI, ese error puede ser catastrófico para el sistema y…
Con X corriendo como root sistema es más vulnerable.

10. Haciendo caso omiso de los archivos de registro
Hay una razón por la que /var/log existe. Es la única ubicación para todos los archivos de registro. Esto hace que sea sencillo de recordar y es donde primero debemos mirar cuando hay un problema. ¿Posible problema de seguridad? Compruebe /var/log/secure. Uno de los primeros lugares que mirar es /var/log/messages. Este archivo de registro es donde todos los errores genéricos son registrados. En él usted recibirá mensajes acerca de la creación de redes, cambios de los medios de comunicación, etc Cuando la administración de una máquina que siempre puede utilizar una aplicación de terceros, tales como logwatch que puede crear varios informes para usted basado en sus archivos de /var/log.

Estos 10 errores son bastante comunes entre los nuevos administradores de sistemas Linux. Evitar las trampas hará que la migración a Linux sea más rápida y que sea un buen administrador.

Fuente

WinUtuxu, una mala manera de difundir el software libre

|
WinUtuxu es una mala idea concebida para difundir al software libre. Es una versión desatendida de Windows que incluye por defecto varias aplicaciones libres, como Firefox, Gimp y varias más, en lugar de las propietarias de Microsoft presentes en un Windows original.

¿Por qué es una mala idea? Creo que los motivos son:

* Windows es un sistema propietario, monopólico y privativo. Usarlo como base para difundir al software libre es una contradicción que puede generar muchas confusiones.
* Estas versiones desatendidas de Windows son ilegales. Podrían provocar asociaciones erróneas entre el software libre y la piratería, cuando en realidad son cosas completamente diferentes.
* Al usar a Tux en el nombre y al logo de Ubuntu hace asociar a muchos a los “abanderados” de Linux, y por consiguiente también a Linux, con un sistema pirateado e ilegal.

No estoy diciendo con esto que no es buena idea difundir el software libre para Windows, sólo que las bases de este proyecto son erróneas y fomenta la pirateria.

Algunas capturas de WinUtuxu:






¿Ustedes creen que un sistema privativo y propietario pirateado es la mejor manera de difundir la maravillosa filosofía del software libre?

Si, Existen Virus Que Afectan a Linux, pero...

|
Chequeando por al red me encontre con esta reflexión que es bastante interesante espero le guste igual que a mi

..no me refiero a versiones del PingPong, Michelangelo o "Stupid" para Linux. Las peleas internas, la competencia por el poder, las divisiones, el lenguaje público arrogante y la constante necesidad de demostrar superioridad por sobre todas las cosas son solo algunos de los "virus" que afectan actualmente a GNU/Linux, como comunidad y como proyecto.

En la carrera por tener la oportunidad de ofrecer sus bondades a la mayor cantidad de usuarios posibles, en el sistema operativo GNU/Linux (y pongo GNU porque quiero hacer referencia a todas las distribuciones de Linux) existen ciertos obstáculos que retrasan la aceptación del público masivo. Entre ellos, podemos encontrar a las presiones (y las difamaciones) de las mega-compañías de software propietario, los gobiernos que "tranzan" con ellas, las dificultades técnicas de compatibilidad con el hardware actual, etc.

Pero hay un obstáculo en particular, y es la imagen que la comunidad de usuarios de Linux da de sí misma, ante el mundo.





Hace no mucho tiempo empezaron a formarse los "bandos" de "estos contra aquellos". ¿Las divisiones? Idioteces: GNOME vs KDE, usuarios "hardcore" vs usuarios de "Mandrake/Ubuntu", etc. Y así estos "grandes grupos" se comenzaron a dividir en lo que hoy son la infinidad de LUGs locales y asociaciones que promueven el software libre / código abierto que existen en día.

Uno "a simple vista" diría que esto no tiene nada de malo, de hecho, de una diferencia interna en la Fundación del Software Libre se desprendió lo que hoy conocemos como "Iniciativa del Codigo Abierto"; y esto fue un aporte muy importante al sistema GNU/Linux en general. Sin embargo, el rencor (y hasta "odio" me animaría a decir) que hay entre algunos de estos grupos es realmente preocupante.

Esto es triste, pero es la realidad. Lo más preocupante es cuando esas peleas y dichos toman caracter público. Hoy en día transcurre todo en los foros, las listas de correo y los blogs. Entonces me pregunto... ¿cual es la imagen que esta dando la comunidad de si misma?

El factor agravante de esta situación es el eterno fanático fundamentalista del Software Libre que para expresar sus ideales, necesita con obligación utilizar las armas del lenguaje violento, atacante, plagado de rencor. Mensajes (implícitos y no) del tipo "Windows es una porquería y es para idiotas", "si no estas con nosotros, estas en nuestra contra; y eso nos habilita para recordarte lo porquería que sos" plagan las listas de correo y los foros. Y entonces me vuelvo a preguntar... ¿cual es la imagen que esta dando la comunidad de si misma?

Siempre hay que destacar que lo que hizo "Grande" a Linux es la colaboración, no la pelea. Que Linux se hizo "Importante" pensando en Linux, no pensando en ser anti-Windows.




Este es el "virus" que realmente infecta a Linux. Me gustaría que todos y cada uno de nosotros pensemos de que forma podemos mejorar el trato, la comunicación y la imagen que damos como usuarios; y como comunidad. Y, cuando la mayoría entienda que uno de los grandes causantes del rechazo de gran parte de la sociedad se debe a nuestra actitud (a veces en extremo arrogante, despectiva y violenta), entonces los tiempos comenzarán a cambiar, y los usuarios de Linux dejaremos de ser tomados "personas con problemas de inserción social y aire revolucionario".

Es realmente una pena porque la actitud de unos pocos, "ensucia" el trabajo puro, limpio y genuino de miles. Prediquemos con el ejemplo. La cura del virus que infecta a nuestra comunidad (y por consiguiente al sistema) está al alcance de nuestra actitud. Mientras las cosas sigan igual, más difícil será lograr la inserción de Linux en los diferentes ámbitos de aplicación, y mas posibilidades de éxito tendrán "los de afuera" para seguir aplicando sus armas de división.


Fuente
Excelente reflexión de Facundo, en Alternaria.tv.

Dell Precision T3500,T5500 y T7500: Bestias sobre escritorios

| jueves, 26 de marzo de 2009



Dell Precision T3500,T5500 y T7500: Bestias sobre escritorios

* Publicado por German Sturtz
* 26 Marzo, 2009


Estos no son PC’s simples para que un chico de 12 años juegue al “Age of Empires”, estamos ante unos ordenadores que están diseñados para extraerle todo el jugo posible, para pasar horas frente a ellos haciendo literalmente lo que se nos plazca.

Llegan tres ordenadores de la mano de Dell, con la tecnología Nehalem. El primero se llama T3500; vendrá con un precio de u$s1.000 y nos ofrece, lo que acá en mi tierra llamamos “animaladas“, soporte de hasta 24Gb de memoria DDR3 ECC. El segundo es el T5500; que rondará los u$s1.650 y nos sorprenderá aún más con su soporte de hasta 72Gb de memoria y dos conectores para CPUs Intel Xeon.

¿Sorprendidos? Bueno, lamento informarles que no vieron nada. El último de los hermanos es el T7500; y los pasa por arriba a todos los anteriores, así como en el precio, que se estima unos u$s1.800 pero que nos ofrecerá algunos hermosos Gb de memoria, ¿Cuánto?, nada menos que 192Gb DDR3 ECC de 1066 o 1333MHz!!!. También incluye dos ranuras Gen 2 PCIe y soporte para la tecnología NVIDIA SLI.

Los tres vienen con puertos E-SATA, 1,5Tb de HDD SATA, soportes para dos a cuatro monitores, conectores DisplayPort y para redondear la “idea”, cumple con las normas Energy Star 5.0.

También ha lanzado dos matrices de almacenamiento, los EqualLogic PS6000 y PS6000S. El primero es almacenamiento con discos duros y el segundo con SSD.

¿Precios? u$s17.000 y u$s25.000 respectivamente. ¿Qué se esperaban? Que costaran u$s5!!!









G-Monster SSD V4 SLC: Más discos SSD

|


G-Monster SSD V4 SLC: Más discos SSD

* Publicado por German Sturtz
* 26 Marzo, 2009


La empresa Photofast acaba de anunciar una nueva serie de discos SSD que estarían listos a mediados de Abril.

G-Monster SSD V4 SLC es el nombre, 32Gb y 64Gb sus capacidades y vendrán con unas velocidades de lectura y escritura de 270MB/s y de 170MB/s respectivamente con unos 64Mb de caché.

Un dato realmente curioso, es que la empresa dijo que estos discos tendrán una vida útil de unas 1.5 millones de horas, o el equivalente de sacar fotos hasta perecer. Vendrán en precios de €370 para los 32Gb y de €660 para los 64Gb.

Y con este lanzamiento también fueron anunciadas las versiones G-Monster SSD IDE V2, unos discos SSD de 2.5″ con capacidades de 32, 64, 128 y 256Gb. Ampliaremos más sobre éstos últimos en cuanto haya más información.
Tags: almacenamiento, Curiosidades, empresas, G Monster SSD V4 SLC, gadgets, Noticias, prensa, productos, SSD


Fuente: e-hardware

UMID M1 con carcasa más resistente

|


Alguno seguramente se acuerde del UMID M1 que les mostré a finales de Enero. Bueno, el producto sufrió un percanse en Corea del Sur por culpa de una deficiente carcasa y la empresa se vio forzada a rediseñar el exterior del pequeño netbook.

El nuevo modelo será lanzado en el mes de Mayo en Hong Kong y en Australia, no se sabe nada de los mercados europeos o norteamericanos, y mucho menos LatinoAmérica.


A tener en cuenta del próximo diseño es que, aparte de no desarmarse en nuestras manos, será ofrecido en versiones “convencionales” y con HSDPA. Los precios no los sabemos pero te recuerco que viene con un Atom, 1Gb de RAM, webcam de 1,3 megapíxeles y pantalla de 4,8″.

Fuente: e-hardware

FLISOL 2009

|


Latinoamerica instala Software Libre...





El FLISOL (Festival Latinoamericano de Instalación de Software Libre) es el evento de difusión de Software Libre más grande en Latinoamérica. Se realiza desde el año 2005 y su principal objetivo es promover el uso del software libre, dando a conocer su filosofía, sus alcances, avances y desarrollo al público en general. Para tal fin, las diversas comunidades locales de software libre, organizan simultáneamente eventos en los cuales se instala de manera gratuita y totalmente legal, software libre en las computadoras que llevan los asistentes. Además, en forma paralela, se ofrecen charlas, ponencias y talleres, sobre temáticas locales, nacionales y latinoamericanas en torno al Software Libre, en toda su gama de expresiones: artística, académica, empresarial y social.


FLISOL 2009 se llevará a cabo el sábado 25 de abril. En la quinta edición del Festival de Instalación de Software Libre se realizara en unas 200 ciudades latinoamericanas, convocando a más de 200.000, es quizas la mayor demostración y dia de instalación software en el mundo.

El evento está dirigido a todo público, No es necesario poseer un nivel de conocimientos técnicos. Se puede compartir en areas como la cultura y arte libre, licencias y derecho de autor, etc.

Como en años anteriores, Ubuntu estará presente en este evento ayudando a las personas que se nos unan en dicho evento y apoyando a las distintas comunidades que hacen este evento posible

para mas información pueden visitar el sitio oficial de FLISOL

Un avance de las novedades de OpenOffice.org 3.1

|

Estos meses la competencia en el campo de las suites ofimáticas está muy reñida. A la reciente actualización de iWork y la futura Office Live, cabe añadir los movimientos en el campo del software libre, con OpenOffice.org a la cabeza.

No hace mucho que salió la versión 3.0 de OpenOffice y ya se sabe que su recambio llegará este 26 de marzo.

Las novedades que traerá OpenOffice.org 3.1 se acercan al millar. Destacan mejoras en los gráficos como el uso de tecnología anti-leasing para suavizar los bordes de los gráficos, como la previsualización transparente de las imágenes para moverlas más cómodamente.

Una novedad interesante será la posibilidad de crear diálogos en las notas al margen de los documentos colaborativos.

La mayoría de las novedades están orientadas a mejorar el rendimiento y usabilidad de la aplicación, manteniendo OpenOffice.org como una opción seria frente al todopoderoso Microsoft Office.

Se echa en falta la existencia de opciones en la nube al estilo de iwork.com o Office Live, es decir, la posibilidad de poder editar los documentos en línea desde cualquier ordenador. Seguramente la fundación OpenOffice no tenga fondos para costear los servidores y el ancho de banda que esto supondría, pero al ser de código libre cuenta con la ventaja de no tener que casarse con nadie determinado, y podría tener algún tipo de integración y compatibilidad con servicios como Google Docs o Zoho.

Si estáis impacientes podéis conseguir la versión alpha por Internet. Para usarla como programa de referencia lo recomendable es esperarse como mínimo a que salga la Release Candidate.

Fuente: Ooonija

Ya Salió Open Office 3.0.1

|


OpenOffice: la alternativa

Sin duda, una de las tareas que ha se hecho mucho más fácil con el uso de los ordenadores son los trabajos de oficina. La creación, clasificación, impresión de copias…, es decir, la gestión documental, es ahora una tarea simple gracias a las suites ofimáticas.

Para ello, existen numerosas aplicaciones. Una de las más usadas es Microsoft Office que a lo largo de los años ha ido incluyendo mejoras en cada versión que nos ha ido ofreciendo, hasta llegar a la actual versión: Microsoft Office 2007. Pero, existe una excelente alternativa a Microsoft Office: OpenOffice.

OpenOffice lleva un largo camino recorrido. Este proyecto de código abierto se creó a finales del 2000. La versión OpenOffice 1.0 salió en abril de 2002 con un claro objetivo:

“To create, as a community, the leading international office suite that will run on all major platforms and provide access to all functionality and data through open-component based APIs and an XML-based file format.“

Y a este lema se ha mantenido fiel: OpenOffice funciona en Windows, Mac y Linux. Tiene hasta una versión ‘portable‘. Y cuenta con una ventaja importante frente al clásico MS Office: es de código abierto, lo que significa que cualquier persona que esté interesada puede participar en el proyecto y hacer sus aportaciones para mejorar el software, en beneficio de toda la comunidad.



OpenOffice, al igual que otras suites ofimáticas, te permite crear un documento de texto, de presentación, de base de datos y de hoja de cálculo. Además, también puedes crear un documento de dibujo o fórmula, o abrir una de las plantillas de que dispone. Tiene todas las funciones que podemos necesitar en un programa de esta categoría. En su última versión: OpenOffice 3.0.1, incorpora incluso la corrección gramatical, además de la típica corrección ortográfica.

Por supuesto, es compatible con documentos de MS Office, de forma que no perderás ninguno de los trabajos que hayas realizado con anterioridad.

OpenOffice ha ganado premios por su calidad, innovación y usabilidad. ¡Comprueba por ti mismo la calidad de este programa! La mejor alternativa gratuita de entre las suites ofimáticas.
Descargas relacionadas:
Open Office 3.0.1

Lsita deBlog

|
Mis compañeros de estudio
luiscarlos-g.blogspot.com
deysih.blogspot.com
lizamperu.blogspot.com
angelreik.blogspot.com
luisenriquev.blogspot.com
arthas-kael.blogspot.com
xeonperu-leitor.blogspot.com
rudicito.blogspot.com
lucho-arp.blogspot.com
japamabiukloadlou.blogspot.com
lu-darkangel.blogspot.com
clajol.blogspot.com

Un poco de mi

|



Hola quien soy pues el que escribe estyos articulos no en serio soy Willy John Jove Villasante estudiante de Computacion e Informatica y de alguna quiero incentivar el uso del softwaer liber para disminuir en lago la pirateria que abunda en mi pais bueno a continuacion un poco de mi para que me conozcan jejeje

Me gusta todo lo relacionado al mundo del software libre ya que creo que es una alternativa de trabajo especialmente frente a la crisis mundial, jeje ya me sali de a lo que hiba tambien soy fanatico de ver series por lo general me gusta ver aquellas que ya hayan terminado para no tener que esperar ha que salga una nueva temporada, yo pues me gusta ayudar a las personas pero siempre pongan de su parte siempre "no todos nacen sabiendo", u otro como "hoy por it mañana por ti" por que no hay olvidarse que siempre vamos a necesitar ayuda y no quisieras que alguien te lo niegue. Por otro lado tengo un hermano que tiene 12 años se preguntaran ¿que caos? ¿en ese edad? pues en realidad no es tan terrible, es muy responsable. Tambien no puede negar que suelo ser imsoportable y muy pesado pero soy pata bueno eso es todo ...


Estas algunos de mis intereses como:

juegos, software en especial libre,opensource ,basket, series como lost, heroes, smallville, malcolm, two and half men, supernatural, zona muerta

Algunas de las peliculas que me gustan son:

Ironman, GhostRider, La muerte de Superman, 11 Ocean's, Masacre en Texas, Justo en la mira, Psicosis

Estos algunos grupos o cantantes de musica que escucho:

marron 5, good charlotte, katy perry, james blunt, juanes, camila, daddy yankee, divino , aventura, thalia, chili fernandez, black eyed peas,daniel power, remy zero, etc.

Estos son algunos libros que he leido

zona muerta de stephen kings, psicosis, copia este libro

Por ultimo dicen que tus amigos y conocidos suelen solo conocer el 15% de ti no olvides... hasta pronto

Daddy Yankee - Talento de Barrio 2008

|



Les traigo el ultimo que saco The Big Boss

Aca los temas

1. Talento De Barrio
2. Pa-Kum-Pa!!
3. Temblor
4. Pose
5. Llamado De Emergencia
6. Oasis De Fantasía
7. Salgo Pa' La Calle (feat. Randy)
8. Qué Tengo Que Hacer
9. Suelta
10. De La Paz Y De La Guerra
11. Pasión (feat. Arcángel)
12. Como Y Vete
13. K-ndela
14. Infinito
15. Somos De Calle

En breve lo subira a megaupload y rapidshare

Animador contra Animación en Flash

|
Cuando crees una animación en Flash ten cuidado no vaya a ser que se rebele en tu contra

Curso Open Office, Moolinux, Java, Blender y más

|


Hola queridos lectores en esta oportunidad les traigo informacion acerca de cursos de software libre se preguntaran y eso como se come bueno basicamente en este tipo de aplicaciones no se debe pagar una licnecia por usarlo como es el caso de Microsoft Office.

Volviendo al tema este sitio nos ofrece cursos online al finalizarlos nos otorgan un certificado bueno que esperas registrate no olvides que sólo tú decides si quieres estar a la vanguardia de la tecnologia ahhhh y para mis compañeros de instituto hay un curso de java. Sin mas dejo el enlace al Sitio Web...

PD: Por cierto el instituo podria solicitar all CESLCAM una aula virtual para aprender algunos cursos de estos...

Cursos Gratuitos