Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

Ya está a la venta Novedades de Visual Basic 9.0

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

04/may/2006
Nuevo foro: Dale caña al Guille..., en este foro podrás hacer comentarios sobre los artículos, trucos, etc., que estén publicado en mi sitio (no en los foros), ya sean mios o de los colaboradores.
Por favor, indica la URL del artículo que comentes. Gracias

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57617 - Semilla unica
IDAsuntoFechaNick 
57617 Semilla unica30/05/14 12:09Manuel_74   
Buenas tardes a todos, espero puedan ayudarme, estoy tratando de sacar de Sql Server 2008 un campo auto numérico, lo que pasa que este acceso a la BD me demora tiempo sobre unos 120 ms, lo que pretendo es sacar este campo lo más rápidamente posible, o sea, que baje bastante esos 120ms es posible???..
Podrían darme alguna idea de cómo hacerlo..
Por otro lado, si veo que esto es imposible, estoy intentando crear mediante esta función, una semilla única :
Public Shared Function CrearAleatorio(ByVal PasswordLength As
     Integer) As String
        Dim _allowedChars As String =            
             "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789"
        Dim randomNumber As New Random()
        Dim chars(PasswordLength - 1) As Char
        Dim allowedCharCount As Integer = _allowedChars.Length
        For i As Integer = 0 To PasswordLength - 1
            chars(i) = _allowedChars.Chars(CInt(Fix((
                _allowedChars.Length) * randomNumber.NextDouble())))
        Next i
         
        Return New String(chars )
    End Function
Bien, funciona muy bien, pero resulta que las llamadas que realizo son concurrentes y no sé el porqué algunas veces me repite la misma semilla y claro, no me vale..

Y ya aun más desesperado de cómo hacer esto, trato de montar yo mismo la semilla de esta manera:
Año mes dia hora minutos segundos milisegundos y sé repite algunas veces, he pensado en sacar los nano segundos que creo que con estos ya no se repetiría, alguien sabría como sacar los nanosegundos en vb.net???
Mil gracias a todos.
[Editado: Manuel_74, 30/05/2014 12:10:28]
IDAsuntoFechaNick 
57621 Re: Semilla unica (Resp: 57617)02/06/14 12:45Pipe[hgjfkdls]   
Manuel,

Puedes configurar el campo de tu DB para que autoincremente, debe ser tipo int, identity y con incremento de (int)1.

ahora bien, para la creacion de semillas, personalmete prefiero ocupar un algoritmo MD5 o SHA1 o cualquier otro, encripto un objeto DateTime.Now.Ticks mas un numero random para hacerlo aun mas eficiente.

Otra opcion para las semillas es generar un campo global y estatico de tipo numerico y sumas 1 cada vez que se inserta o se añade un registro a la DB. Cuando tu programa inicializa es necesario leer la semilla mayor y setear tu variable estatica.

Espero haber entendido tu duda. con el termino "sacar" me jodiste un poco.

Saludos,

Pipe [hgjfkdls]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57622 Re: Semilla unica (Resp: 57621)02/06/14 12:57Manuel_74   
Mil perdones por lo de "sacar" no lo hice ni mucho menos, con mala intención, solo, que aqui en España, es algo común utilizarlo rie
Configurar el incrementable ya lo tengo, si el problema esta en que acceder a la BD me ralentiza la respuesta, por eso pense en una semilla que no atacar a la BD y así aumentar mi tiempo de respuesta, el algoritmo que puse me devuelve simillas repetidas ya que al ser asincrono el proceso no sé el porque lo hace. Ahora bien, podrías pasarme ese algoritmo que dices que haces por favor, si no es mucha molestia claro.
Como encripta el objeto Datetime.Now.Ticks??
Muchisimas gracias de nuevo por vuestra ayuda.
Saludos.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57623 Re: Semilla unica (Resp: 57622)02/06/14 13:19Pipe[hgjfkdls]   
Manolo,

Hace un tiempo me hice este metodo extendido, entra una cadena y sale la encriptacion unidireccional, para vuestro caso, deberia entrar:

string unique=(Datetime.Now.Ticks+RND(1000)).ToString().GetMD5();

using System;
using System.Text;
using System.Security.Cryptography;

using System.Linq;
using System.Xml.Linq;

namespace Service
{
    public static class ExtendMethods
    {
        #region MD5
        /// <summary>
        /// Serializa una cadena segun protocolo MD5
        /// </summary>
        /// <param name=input">cadena a codificar</param>"
        /// <returns>cadena tipo MD5</returns>
        public static
             string GetMD5(this
             string input)
        {
            using(MD5 hash=MD5.Create())
            {
                byte[] data=hash.ComputeHash(Encoding.UTF8.GetBytes(input));
                StringBuilder sb=new StringBuilder();
                foreach(byte b in data)
                {
                    sb.Append(b.ToString("X2"));
                }
                return sb.ToString();
            }
        }
        /// <summary>
        /// Verifica si la cadena coincide con la serializacion MD5 especificada
        /// </summary>
        /// <param name=input">Cadena de comparacion</param>"
        /// <param name=hash">Cadena MD5 de verificacion</param>"
        /// <returns>bool: verdadero o falso segun
             verificacion</returns>
        public static
             bool VerifyMD5(this
             string input,string
             hash)
        {
            return input.GetMD5()==hash;
        }
        #endregion
    }
}

Saludos,

Pipe [hgjfkdls]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57626 Re: Semilla unica (Resp: 57623)02/06/14 20:32Manuel_74   
Buenas.. muchas gracias Pipe, voy a intentar traducirlo a vb.net.
Ya te voy contando.
Saludos


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57631 Re: Semilla unica (Resp: 57626)03/06/14 10:07Manuel_74   
Buenos días..
Muchas gracias Pipe.. me ha funcionado correctamente..
Saludos.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 171 - App. iniciada: 14/12/2017 7:42:09 GMT - La hora GMT del servidor es: 14/12/2017 21:00:03 GMT