|
8401
|
Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda con un capturador de pantalla
|
en: 8 Agosto 2013, 13:21 pm
|
el de hacerlo opaco, cuando le doy al boton capturar, se quita la ventana del programa y se queda abajo minimizado y no me deja maximizarlo Después de realizar la captura tienes que restaurar la opacidad del Form. ¿Te has leido el link de la documentación?. Repito: PD: El valor es un Single que va de 0 a 1. El del check box no me funciona, y no es un check box, es un boton con un check dentro de DropDownButton en un ToolStrip. La cuestión es que adaptases el ejemplo que te he dado a tus necesidades, si tienes complicaciones postea lo que has intentado por ti mismo ...o lee, como te han sugerido. 1. Crea una propiedad de sólo lectura que devuelva el Tag del DropDownButton. 2. Setea la propiedad Tag para cada SubItem del DropDownButton, uno de los tags se llamará "True", y el otro tag "False" (Para hacerlo fácil), luego suscríbete al evento ".Click" de los dos SubItems del DropDownButton y ahí seteas la propiedad Tag del DropDownButton por el mismo Tag del SubItem que has clickado. Ejemplo: ReadOnly Property CaptureForm() As Boolean Get Return Capturar_DropDownButton.Tag End Get End Property Private Sub Capturar_DropDownItems_Click(sender As Object, e As EventArgs) Handles _ SiCapturar.Click, _ NoCapturar.Click Capturar_DropDownButton.Tag = sender.tag End Sub
PD: Además si quieres puedes ahorrarte la parte de la propiedad y hacerlo con una simple variable Booleana que al fin y al cabo produce el mismo resultado. Saludos
|
|
|
8402
|
Programación / .NET (C#, VB.NET, ASP) / Comparación sobre el tiempo de ejecución.
|
en: 8 Agosto 2013, 11:35 am
|
Hola, me gustaría saber una cosa muy simple, pero no encuentro está información en ningún sitio. ¿Que tarda más en realizarse, una comprobación, o setear diréctamente un valor? Pongo un ejemplo: ' Setear diréctamente: Private MyPoint As New Point(0, 8) Private Sub blabla() MyPoint.X = 257 End Sub
' Comprobar, y si la condición no se cumple, setear: Private MyPoint As New Point(0, 8) Private Sub blabla() If Not MyPoint.X = 257 Then MyPoint.X = 257 End Sub
Quizás también tenga que ver del objeto con el que estemos tratando, por ejemplo quizás una propiedad de un control "pesado" tardaría más en leerse que en diréctamente setear su valor?
|
|
|
8403
|
Programación / .NET (C#, VB.NET, ASP) / Experimento de consumo de memória... ver para creer!
|
en: 8 Agosto 2013, 09:12 am
|
Hoy he descubierto algo que me ha impactado bastante.
Creamos un nuevo WinForm, y lo dejamos EN BLANCO, es decir, sin ningún tipo de código, simplemente el Form1.vb generado por el VS...
Ahora, si compilamos esa aplicación vacía, al mover el mouse sobre el form, sólo esa acción consume unos 8kb cada segundo. (no estoy seguro de si se trata del evento MouseEnter o del MouseMove, o quizás el problema no sea de un Evento y sea otra cosa que desconozco)
Lo más impactante de este experimento es que dicho consumo jamás se llega a liberar!, cuanto más muevo el mouse por el Form, más subre el consumo de RAM, 8 kb cada vez que muevo el mouse por el form, pero ese consumo nunca vuelve a bajar, y esto quiere decir que un Form vacío podría dar un problema de overflow sólamente por mover el mouse por el form!!?¿
¿Como es esto posible?, ¿Cual es la razón?, ¿Que se puede hacer para solucionarlo?, ¿Alguien más se habia dado cuenta de esto antes?.
PD: No se si es un WinForm de C# pasará lo mismo Con un Winform de C# sucede exáctamente lo mismo, lo he testeado con VB.NET, con Framework 4.0 y 4.5.
EDITO:
Con Java es incluso peor, es traumático, al mover el mouse sobre el background de una aplicación vacía la memória aumenta por MB's cada segundo, no por kb's, y no se llega a liberar jamás tampoco, puede pasar de 40 mb a 60 mb en menos de 30 segundos símplemente por mover el mouse por la ventana sin parar, y encima ese consumo no va a bajar nunca, es increible, en fín si que es cierto lo que dicen sobre Java y el consumo de RAM si...
Tengo algunos programas profesionales de terceros desarrollados en C/C++ y al mover el mouse por sus ventanas no sube el consumo en absoluto.
Bueno, ahí dejo el experimento, espero que alguien pueda dejar explicaciones sobre las causas de estos sucesos paranormales, y si se puede evitar de alguna manera ese consumo excesivo OverRideando algún método o... como sea!!.
Saludos.
|
|
|
8405
|
Foros Generales / Dudas Generales / Re: Ayuda con una clave,por favor!
|
en: 7 Agosto 2013, 22:27 pm
|
Hola, Como puedo descifrar esta clave?
986dd88ddc987286028fa116427e7ede
Muchas gracias
¿Eso es una pregunta seria? Danos al menos la información necesaria sobre de donde has sacado la "clave" para intentar averiguar el tipo de cifrado que han usado... aquí hay muchos craquers, pero ningún mago. De todas formas el string consta de 32 caracteres, lo que más bien parecen 32 digitos hexadecimales, lo que en su totalidad suman 128 bytes, así que la cadena tiene toda la pinta de tratarse de un Hash MD5, en ese caso no existe posibilidad de descifrarlo, ya que no es cifrado, es un Hash, y la razón de que no se pueda descifrar es que se pueden computar infinitas cadenas que den como resultado el mismo Hash. Puedes usar un HashCracker online u offline, pero eso es como dar por hecho que una coincidencia es válida entre un millón de coincidencias válidas restantes, ¿Será la correcta la primera coincidencia de Hash que se encuentre?, ¿Te gusta jugar a la loteria xD?. Aún así, por si ese String que quieres descifrar no fuese un Hash (aunque ya te digo, si que lo es...), puedes probar suerte con los desencriptadores de Crypo -> http://crypo.in.ua/tools/Saludos.
|
|
|
8406
|
Informática / Hardware / Re: Ralentización máxima en la velocidad de transfernecia de un HDD
|
en: 7 Agosto 2013, 22:01 pm
|
Imoen los parones no surgen al copiar archivos de un disco a otro, eso era otro problema parecido pero ya lo solucioné poniendo al HDD principal en un solo alimentador, y el resto de HDD's en otro, ...Los hangs suceden sin más, en el disco principal, y es cuando le da la gana.
A) indica el modelo de placa y de discos porfa Placa: ASUS M5A97 LE R2.0 -> http://www.asus.com/Motherboards/M5A97_LE_R20/#specificationsHDD Principal (Windows): WD1002FAEX -> http://www.wdc.com/global/products/specs/?driveID=792&language=1HDD 2 y 3: WD20EZRX -> http://store.westerndigital.com/store/wdus/en_US/DisplayAccesoryProductDetailsPage/ThemeID.30153100/productID.283204000HDD 4: WD30EZRX -> http://store.westerndigital.com/store/wdus/en_US/DisplayAccesoryProductDetailsPage/ThemeID.30153100/productID.283207400
f) comprueba las temp y si hay algún fallo leyendo los parámetros smart con tu sotware favorito diskcristalinfo o similar El CrystalDiskInfo me lo marca todo en Azul, en estado "Bueno", tanto las temperaturas (Desde los 40º hasta los 46º) como los datos de SMART. El HardDisk Sentinnel lo mismo, ningún error en los SMART, aunque bueno, la temperatura del disco principal me la marca en amarillo, en precaución, la temp de se disco son 46º.
C) tienes activado los AHCI en sta Perdona pero no se lo que es AHCI, me he informado un poco y parece que es un driver SATA pero solo para Intel?, te lo digo porque yo tengo un AMD, tengo el Catalyst actualizado e instalado (los drivers SATA que te instala el catalyst), si me equivoco y sigo necesitando activar o desactivar el driver de AHCI voy a necesitar info para encontrarlo xD.
D) puedes probar una live desde cd o algo asi y copiar datos haber si dan esos tirones , lo mismo es el OS y estamos largando del hardware XDD Eso es lo que más pereza me da xD, Tengo que desconectar el cable donde tengo conectado los 3 HDD secundarios solo para conectar el Lector que es SATA también, mañana o pasado mañana testearé en un LiveCD. Pero suponiendo que desde un LiveCD no me diese esos parones el HDD, aún así no creo que eso pueda ser una prueba definitiva de que fuese un problema de mi SO, quiero decir, un LiveCD es un SO Virtual, y mi SO (Windows 8) lo he reinstalado 2 veces durante las ultimas semanas, y sigue sucediendo los parones, pero el SO está limpio, nuevecito y con todos sus drivers en regla... parece casi imposible que sea causa de mi Windows No es por llevarte la contraria, solo te digo lo que pienso sobre lo de que sea causa de mi SO, no sé cuanta razón tendré, tu eres la experta en Hardware. yo preferiría que fuese problema del SO, que seguro me saldría más barato que un problema de Hardware... Saludos!
|
|
|
8407
|
Programación / .NET (C#, VB.NET, ASP) / Re: Fuga de memória en una función :(
|
en: 7 Agosto 2013, 20:53 pm
|
Yo creo que el problema está no en la función, sino en ejecutar esa función constantemente tan rápido. Se crean más datos de los que se alcanzan a liberar. Lo que dices es muy lógico, es lo primero que se llega a pensar, puede que si que quizás en 50 ms se generen más datos de los que se pueden liberar, pero además de eso estoy seguro de que hay una fuga en esa función, y la prueba definitiva la di al principio, con este code: Public Class Form1 Dim isbinded As Boolean = False Dim Winamp As clsWACC = New clsWACC Dim WithEvents mytimer As New Timer With {.Interval = 50, .Enabled = True} Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles mytimer.Tick isbinded = Winamp.Bind() ' Label1.Text = isbinded ' isbinded = Nothing End Sub End Class
Símplemente el Test consiste en crear una APP con ese código (y adjuntar la dll de la función Bind claro xD). Repito que si uso un Timer de 10 segundos (o 20, o los que sean) la RAM sigue subiendo progresívamente, solo que se generarán los bytes mucho más lento porque el timer es más lento así que hay que dejar la app un buen rato corriendo para apreciar el aumentado del consumo de RAM, pero en fín yo creo que en 10-20 segundos el GC tiene tiempo de liberar... Saludos!
|
|
|
8408
|
Programación / Scripting / Re: hola bat que modifique el nombre de archivos de un directorio o carpeta
|
en: 7 Agosto 2013, 20:39 pm
|
Hola Te has debido confundir al decir que los nombres contienen los caracteres "/" y "\" ya que son caracteres prohibidos por Windows, no pueden contenerlos. quiero un bat u otro tipo ce archivo que me renombre todos los archivos eliminando los simbolos y colocando todas las letras en minuscula y la primera letra de las palabras en mayusculas. Quieres y pides, ¿Pero has intentado hacerlo por ti mismo?, ¿Donde está el código?. Ya que dejas libre la elección del lenguaje entonces yo te propongo VisualBasicScript porque es soportado natívamente por Windows, ya que Batch es fácil pero muy lento para estas cosas y además se queda corto en características obligando a escribir mucho código de más el cual se podría hacer de forma mucho más simple en cualquier otro lenguaje, de todas formas si prefieres hacerlo en Batch puedes esperar la respuesta de algún otro Batchero o usar el buscador del foro donde encontrarás esta misma pregunta repetida 1000 veces con soluciones mías y de otros compañeros. Te doy la mitad del trabajo hecho, la parte fácil de listar los archivos y renombrarlos puedes intentar hacerlo por ti mismo documentándote con ejemplos aquí -> Top Secretstr = "LA_++L+UC+HA_P+OR_EL_AMOR" str = FormatString(str) ' Llamamos a la función que formatea el String. str = ConvertToWordCase(str) ' Llamamos a la función que convierte el String a ProperCase. Wscript.Echo str ' Mostramos el String. Wscript.Quit() ' Terminamos la ejecución del script. ' Funcs: ' ------ Function FormatString(ByVal String) String = replace(String, "+","") ' Reemplazo el caracter "+" por NADA. String = replace(String, "_"," ") ' Reemplazo el caracter "_" por ESPACIO. FormatString = String ' Devuelvo el String formateado. End Function Function ConvertToWordCase(ByVal String) words = split(String," ") ' Parto el String en varios tokens delimitados por el caracter ESPACIO y lo guardo en un Array. For i = 0 to ubound(words) ' Recorro cada valor del Array, es decir, cada palabra. ' Convierto la primera letra a UpperCase. words(i) = ucase(left(words(i),1)) _ & lcase(mid(words(i),2)) ' Y convierto las demás letras a LowerCase. Next ' Prosigo con la siguiente palabra. ConvertToWordCase = join(words," ") ' Junto el Array (Lo convierto a String) y lo devuelvo. End Function
Output: PD: Si muestras algún intento de proseguir con el código de arriba no tendré ningún inconveniente en ayudarte a completarlo. Saludos!
|
|
|
8409
|
Programación / .NET (C#, VB.NET, ASP) / Re: Fuga de memória en una función :(
|
en: 7 Agosto 2013, 19:50 pm
|
Pero en principio te puedes fijar si tiene un evento, solo es poner punto en el nombre de instancia de clase y buscar el que tiene un "rayito" Si pero si el evento fuese privado por cualquier motivo pues no me iba a salir en el intellisense, es que en la class hay muchos "Tests" como cosas de prueba y cosas por mejorar, no está del todo perfeccionado así que tenía que usar el buscador de la IDE para examinar la class a fondo xD. ¿No hay un evento en esa clase para detectar el cambio de estado? No, ninguno, hay que crear el evento o detectar el estado a lo cutre, mediante condiciones (if's). En fín Novlucker he seguido tus indicaciones para lo del proceso: En la class del winamp: Private Sub waProcess_Exited(ByVal sender As Object, ByVal e As EventArgs) Handles waProcess.Exited RaiseEvent WinampExited() End Sub
En la class de mi form: Private Sub Exited() Handles Winamp.WinampExited Winamp_IsRunning = False End Sub Private Sub Monitor_Timer_Tick(sender As Object, e As EventArgs) Handles Monitor_Timer.Tick If Not Winamp_IsRunning Then Winamp_IsRunning = Winamp.Bind() End sub
Se nota mucho el cambio, gracias, aunque como ya digo la función Bind de esa class tiene algún problema así que por mucho que yo intente perfeccionar estas minucias no va a dejar de subir la RAM xD, aunque ahora he conseguido que suba reálmente muy poco a poco, el consumo de ram hace subidas y bajadas que no me gustan nada, pero bueno parece estar equilibrado, sube un poco y al rato como que el GC hace su trabajo, lo libera y vuelve a bajar el consumo, y vuelve a subir, en fin xD. (Todo esto dejando el proceso en "StandBy") Saludos
|
|
|
8410
|
Programación / .NET (C#, VB.NET, ASP) / Re: Fuga de memória en una función :(
|
en: 7 Agosto 2013, 18:08 pm
|
¿Por que ese necesario buscar cada 50 ms la ventana y el proceso de Winamp? Está claro que es algo muy costoso Aún así ese trozo de código de la Class genera memoria sin cesar, aunque se use un Timer que tickee cada 10 segundos que llame a la función Bind, la cantidad de memoria en ese caso será minima pero al fin y al cabo incesante, hay algo que está mal en ese code. ¿No hay un evento en esa clase para detectar el cambio de estado?
En cuanto al proceso por ejemplo. Lo obtienes todas las veces y seteas EnableRaisingEvents en true, lo que hay que hacer es obtener el proceso, setear EnableRaisingEvents en true, suscribirse al evento Exited, y dejar de buscar el proceso. Cuando se dispara el evento Exited, entonces volvemos a buscar. la Class del Winamp son 2000 o 3000 lineas de código, no me lo he mirado todo, eso es lo próximo que haré y ya te cuento.
|
|
|
|
|
|
|