Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Mensajes - SwordLight

Páginas: [1]
1
Visual Basic .Net / Re:Nuevas Herramientas
« : enero 17, 2013, 07:31:08 am »
parecen interesantes, yo llebo 3 años usando telerik e infragistics, ya que me brindan muchos controles para diseñar en Window Forms, WPF, ASP AJAX, MVC, Silverlight, Window Phone, HTML5 y ahora las nuevas herramientas para modern UI.
y trae otras interesantes herramientas como just code que analiza el codigo nos da sugerencias lo oredna de una mejor forma y nos ayuda a corregir errores.

Y ademas esta un re-porteador llamado Reporting que es muy bueno.

Se que hay muchas herramientas en Internet que podemos utilizar pero desde que descubrí estas han sido las que me han ayudado a hacer grandes proyectos con un elegante diseño.[/size]

2
Java / Programación concurrente con Hilos
« : diciembre 27, 2012, 07:32:52 am »
Que me pueden decir sobre este tema, alguien q publique ejemplos:
acá encontré algunos para quienes interese:


Manejo de concurrencia JDK
Desde sus inicios, Java tenía algunas facilidades para manejo de concurrencia, la palabra clave synchronized.
Los que ya hemos hecho aplicaciones que manejan concurrencia, pensamos luego luego: "ah pues fácil, hay que ponerle synchronized a todo!" Bueno, no a todo, pero sí lo necesita en un par de lugares, no?

  public synchronized void deposita(int monto) {
    saldo += monto;
  }
  public synchronized void retira(int monto) {
    saldo -= monto;
  }


Y ya, no? Pues no. El método getSaldo no está sincronizado; pensamos que no importa, porque sólo está devolviendo un valor, no lo va a modificar; sin embargo, por no sincronizar este método, el valor devuelto puede ser ya inválido, porque hay un hilo que ya está modificando el saldo y si en este instante otro hilo pide el saldo, obtendrá un valor que ya no es el actual. Ya no refleja la realidad. Por lo tanto, necesitamos ponerle también synchronized al método getSaldo.
Y una vez teniendo eso, podemos implementar el método de transferencia, en otra clase:

public boolean transfiere(Cuenta origen, Cuenta destino, int monto) {
  if (origen.getSaldo() > monto) {
    origen.retira(monto);
    destino.deposita(monto);
    return true;
  }
  return false;
}


El código anterior tiene varios problemas: Qué pasa si dos hilos o más, lo invocan al mismo tiempo, usando la misma cuenta origen, o la misma destino, o uno usa la cuenta X como origen y otro la usa como destino? Sólo un hilo debería poder hacer la operación completa a la vez. Por lo tanto necesitamos agregar unos candados también en este método de transferencia:

public boolean transfiere(Cuenta origen, Cuenta destino, int monto) {
    synchronized(origen) {
      synchronized(destino) {
        if (origen.getSaldo() > monto) {
          origen.retira(monto);
          destino.deposita(monto);
          return true;
        }
        return false;
      }
    }
}


Concurrencia con JDK a partir de Java 5
Los Locks son objetos introducidos en Java 5, que realizan una función similar a synchronized pero pueden tener un timeout y pueden fallar en caso de no obtener el recurso. Reimplementemos la clase Cuenta usando Locks:

import java.util.concurent.locks.*;
public class Cuenta {
  public final Lock monitor = new ReentrantLock();
  private int saldo;
  public Cuenta(int saldoInicial) {
    saldo = saldoInicial;
  }
  public boolean deposita(int monto) {
    if (monitor.tryLock(1, TimeUnit.SECONDS)) {
      try {
        saldo += monto;
        return true;
      } finally {
        monitor.unlock();
      }
    }
    return false;
  }
  public boolean retira(int monto) {
    if (monitor.tryLock(1, TimeUnit.SECONDS)) {
      try {
        saldo -= monto;
        return true;
      } finally {
        monitor.unlock();
      }
    }
    return false;
  }
  public int getSaldo() {
    if (monitor.tryLock(1, TimeUnit.SECONDS)) {
      try {
        return saldo;
      } finally {
        monitor.unlock();
      }
    }
    throw new IllegalStateException("No puedo consultar saldo");
  }
}


Tuvimos que definir el monitor y agregar 5 líneas de código a cada método, para poder adquirir el candado, con una espera máxima de un segundo, para realizar la operación. Si no se puede obtener el candado en un segundo, la operación falla (por eso cambiamos la firma de los métodos a boolean). Y todavía falta el método de transferencia:

public boolean transfiere(Cuenta origen, Cuenta destino, int monto) {
    if (origen.monitor.tryLock(1, TimeUnit.SECONDS)) {
      try {
        if (destino.monitor.tryLock(1, TimeUnit.SECONDS)) {
          try {
            origen.retira(monto);
            destino.deposita(monto);
            return true;
          } finally {
            destino.monitor.unlock();
          }
        }
      } finally {
        origen.monitor.unlock();
      }
    }
    return false;
}


Este código funciona mucho mejor, ya no habrá esperas infinitas, y no habrá deadlocks, ambos problemas se solucionan con el timeout. Pero, ahora tenemos mucho más código que mantener, y sigue siendo algo muy difícil de probar, y lo peor de todo es que no hay manera de saber si esto va a fallar o no.
En las siguientes dos partes veremos dos alternativas para manejo de concurrencia que nos pueden ayudar mucho, porque no solamente nos ahorran todo este código tan susceptible de tener errores, sino que nos evitan el tener que estar sincronizando datos, lo cual hace que el desempeño de las aplicaciones sea mucho mejor, ya que podremos aprovechar la concurrencia, no solamente frenarla con candados.

3
Reparaciones / Q hacer cuando el MBR se ha dañado?
« : diciembre 27, 2012, 07:10:12 am »
Esto es lo q he hecho y no me ha funcionado:

1.) Entre al Administrador de Equipo y luego, seleccione el disco y me aparecia sin inicializar, luego al darle clic me aparecio la ventana de la 1er captura. al darle aceptar m apareció un error! "No se puede realizar la solitud por el error del dispositivo E/S".

2.) Luego probe el HDD Regenerator, y al darle reparar sectores dañados me mando el error "MBR de este disco esta dañado".

3.) Intente formatearlo a bajo nivel con el HDD Low level format, y me dio este error "Que no se puede accesar al disco debido a que el numero de sectores es menor a 65535."

4.) Luego probe algunas herramientas del hiren's 14, pero no pude solucionar el problema..

Alguien que conozca una herramienta que me ayude a solucionarlo, me interesa rescatar la info. pero si no se puede al menos quiero saber si se puede rescatar el disco.

Páginas: [1]