Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Serapis

#1401
Foro Libre / Re: Hacked
30 Agosto 2019, 15:41 PM
Cita de: Void trooper en 30 Agosto 2019, 14:39 PM
... no me dejan formatear el ordenador desde ninguna iso, formateando las particiones o con la herramienta de reestablecimiento de W10

Apaga por completo el equipo (nada de hibernar) y arranca desde un liveCD. Siendo la unidad de arranque otra distinta del disco duro, no se ejecuta código desde dicho disco duro. Y puesto que se ha apagado correctamente el equipo, el disco no queda bloqueado. ahora desde el LiveCD, podrás formatear el disco duro.

formatea a bajo nivel (aunque eso supone que tardará bastante), para que chequee al completo cada sector del disco duro, y revise de nuevo los supuestos sectores dañados (algunos virus tratan de esconderse en sectores que luego marcan como dañados, un formateo a alto nivel, no examina los sectores defectuosos, tan solo hace las divisiones lógicas del disco duro, vamos trazar una cuadrícula con tiza para que se entienda), así dejará como defectuoso el que realmente no sea accesible y se entienda como defectuoso, ninguno más...

Después del formateo a bajo nivel, haz las particiones (formateo a alto nivel) y finalmente  vuelve a instalar. Al finalizar configura la seguridad del equipo. No conectes el equipo a la red, hasta entonces.
#1402
No, si el "Trump" es exactamente un clon del "Bush-hijo", cuando se le ocurrió la también brillante idea de que para evitar la quema (aleatoria) de de bosques, lo mejor era que los quemaran ellos antes (todos, porque no van a adivinar cual se quemaría al azar tal o cual año).

Está claro que si tiramos 5.000 bombas atómicas en el planeta al mismo tiempo, acabamos con el hambre, la probreza, los huracanes, y todo el resto de males que aquejan al planeta... o por lo menos no quedará nadie para ver ningún otro mal en este planeta.

...sincreamente creo que a un tipo así, siglos atrás, hace tiempo que lo habrían colgado de un árbol... hoy nos columpiamos diariamente entre los imbéciles 'políticamente-correcto' que se enojan por cualquier gilipollez igual que si hubieran matado a 1000 personas y los imbéciles como el Trump, que parecen sacados de dibujos animados del Correcaminos. ¡Tiembla mundo, que tienes ganas de vomitar a tanto gilipuertas pisando tus entrañas...!
#1403
Cita de: 01munrra en 26 Agosto 2019, 19:28 PM
...que me recomiendas para mejorar el eje 'X', en vista de que el sistema trabaja en hora militar, de 0 a 23 hrs, estoy tratando de que solo se muestre la unidad de hora y al hacer zoom se muestre minutos y segundos, tal cual esta sucediendo en la temperatura.
...
Te comentaba en el mensaje anterior, pero probablemente no te acomode buscar en la documentación de la librería si pueda devolver una imagen (un picture), para que tu solicitando todas las gráficas para un día, luego mediante operaciones gráficas puedas pegar a voluntad secciones en función del desplazamiento absoluto en el día.

De todos modos, veo en el gráfico, que muestra desde las 7 hasta las 14, es decir un tramo de 7 horas... la pregunta pertinente es: tiene alguna propiedad o método que permita hacer zoom (escalar), el eje X, por ejemplo para que tu puedas determinar que en el gráfico quepa solo una hora, 2, 4, 8, 24... es decir las que tu quieras?.
Me resultaría extraño, que la librería no permitiera ajustar la escala en ambos ejes.

En esa vista (de la última imagen), si acogiera solo una hora, sería magnifico, pués a ojo de buen cubero ocpa unos 750 píxels de ancho, así que cada píxel podría acoger a solo 5 segundos... lo que daría una muy buena precisión.

En última instancia, si la librería no permitiera ningún tipo de zoom (antes de intentar lo siguiente mira si de verdad la librería no lo permite, porque si lo permite lo que ahremos sería una sobrecarga innecesaria de trabajo), podemos manejarlo nosotros a nuestro antojo...

...hemos leído los datos de entrada, (sea cual sea el origen), y tenemos pués un array, una lista enlazada, etc... con los datos... por comodidad, voy a suponer que están en alojados en un array y que es una estructura de tipo puntof ...

Creando nuestro zoom artificial:

Estructura PuntoFlotante
 x as single
 y as single
fin estructura

dim puntos() as puntoflotante

funcion privada Escalar(por referencia P() as puntoflotante, EscalaX as single, EscalaY as single) as puntoflotante()
   dim k as long
   dim tmp() as puntoFlotante

   dimensionar array temporal tmp(0 to p.Lenght)
   bucle para k desde 0 a p.lenght
       tmp(k).x = (p(k).x * escalaX)
       tmp(k).y = (p(k).y * escalaY
   repetir

   devolver tmp
fin funcion


Ya hemos escalado los valores, ahora solo queda mandarlo para que sean dibujados...


' Tu tienes:
 while reader.read
    ...
    list1.add(x,y)
  end while

' después conviene escalarlo:
dim list2  tipo...?
list2 = Escalar(list1, 3.25, 1)

' ahora lo enviás a dibujar:
... myPane.AddCurve(..., list2)


Nota que los valores de escala los he puesto un poco allá, con 3.25 el resultaod es que se estirará el eje x x 3.25 veces, en cambio como señalas la escala en el eje Y va bien, los dejamos en su propia esclaa 1.0...
Pudiera ocurrir dos cosas:
- Primero: Que la librería intérprete al revés la escala... si ves que se encoge en vez de ensancharse, cambia las multiplicaciones por divisiones.
- Segundo: Que la librería se empeñe (cabezonamente) en meter al completo el gráfico dentro del viewport de la gráfica. ...para ello entonces implica que estaría recorriendo la colección para tomar el valor mayor y menor y conforme a ellos generar un escalado interno para que se ajuste al tamaño del viewport. Desde fuera (para ti), el resultado es que el gráfico a pesar de nuestro escalado, se vería prácticamente igual, las diferencias serías las nimias de los redondeos. En tal caso, o la librería dispone de algún control de la misma que estás obviando por no leerte/buscar en la documentación, o simplemente es mala por dejar fijo un gráfico sin posibilidad de escalarlo y que recorte lo que no quepa...

p.d.:
Cuando veas que el escalado te funcione bien... , entonces se trata solo de ajustar que factores son los valores limitantes, esto es mira de limitar el factor máximo y minimo de escala.
Añades un scroll a la ventana y un label que diga Escala del eje X:  3.75  ...si el valor mínimo de escala fuera (pongamos)  0.01 y el valor máximo 100, como usas un scroll numérico sin decimales, tu señalas (para el scroll) el minimo a 1 y el máximo a 10000, el valor real de escala sabes que será: EscalaX = Scroll.Value / 100

Nota que cada vez que el usuario quisiera escalar, no ser´´ia preciso volver a leer los datos de origen... sería mejor disponer una función aparte, es decir tener dos funcionalidades, la lectura de datos, y la de escalado:


' lee datos dle origen, los almacena en list1 y los manda dibujar...
sub LeerDatos
   ...
   while reader.read
      ...
      list1.add(x,y)
  end while

  call Dibujar
fin sub


Y luego la de dibujar...

' escala y dibuja la gráfica...
Sub dibujar
    dim list2 as tipo?

   list2= Escalar(list1, EscalaX, EscalaY)
   ... myPane.AddCurve(..., list2)
Fin sub


ambos scrolls para escalar eje x e Y:

sub ScrollX_change(...)
   EscalaX = scrollx.value/100
   labelejeX.Text = "Factor de escala del eje X: " & escalaX.ToString

   Call dibujar
End sub

sub ScrollY_change(...)
   EscalaY = scrollY.value/100
   labelejeY.Text = "Factor de escala del eje Y: " & EscalaY.ToString

   Call dibujar
End sub

#1404
El futuro de China, pasa por su vertebración. Se quiera o no, es algo que a medio plazo acabará ocurriendo (20-40 años).
Cuando los ahora recién estrenados clase media, alcancen la edad de 'jubilados', pero en cantidades millonarias, China ya no se podrá permitir ciertos abusos económicos, y como el dinero no sale de las piedras, los conflictos primero sociales y luego armados serán inevitables.

Lo malo de pilotar una bestia incontrolable, es que cuando caiga, te aplastará. ...y eso es lo que acabará pasando al gobierno chino al completo... la duda será cual será el reparto de áreas dentro de China, porque tampoco les sería conveniente que esas disputas se eternizaran, ni que tras la secesión hubiera guerras por intentos de anexión.  Confío, que para entonces el pueblo chino, haya 'crecido' socialmente en el significado de la Democracia y no estén dispuestos a entrar en guerras inútiles...
#1405
No he operado nunca con esa librería... desconozco si lo permite.

No obstante si está capacitada para mostrar la imagen, lo puedes implementar tú, aunque con algo mñás de trabajo claro.

... supongamos que el gráfico está a un zoom de 4 horas (que muestra solo 4 horas), entonces tu generas imágenes en bagkground desde las 0 hasta las 3:59:59, luego otra desde las 4 hasta las 7:59:59, luego... y al final la última 20:59:59.
Luego eres tú quien en un backbuffer va pegando lo correspondiente entre dos imágenes y finalmente lo vuelcas a donde lo presentas... el control tal como señalas con un scroll del tipo que sea, incluso un "fijar y arrastrar" (si no quieres perder tiempo en poner una interfaz gráfica para ello)... vamos básicamente como la sucesión de desplazamiento horizontal de un videojuego, solo que más sencillo pués solo son dos imágenes con las que lidiar en cada momento.

Tienes 6 imagenes suponiendo un zoom de 4 horas, para cubrir el día completo.
img0|img1|img2|...|img5

En cualquier momento dado, puede haber a lo sumo parte de 2 imágenes:
|......|......|

Se trata pués de seleccionar, cortar y pegar la parte correspondiente de cada imagen en el 'viewport'.

Viewport, con la mitad de dos imagenes:
...|...

Viewport con 5/6 de una imagen y 1/6 de la siguiente.
.....|.

Viewport con una imagen completa (como ahora la tienes)
|......|


Espero que te quede clara la idea de como lograrlo, si la propia librería no tiene capacidad para ello.
#1406
Por qué declaras como 'string', 'x' e 'y'?

Decláralos como 'single', vamos conc decimales aun que luego vengana a redondearse según el tamaño del gráfico, expuestos a un tamaño mayor, la precisión será con más detalle...
...Y cuando leas los datos (aunque por alguna razón estén guardados en formato de string en la bd, en un fichero o donde sea), tu haz la conversión al tipo single. Así tu 'list1' debe almacenar valores single...

Luego... en la gráfica obivamente debes tener un factor de escala para el eje X y otro factor de escala para el valor Y...
Esto es, si una hora ocupa en el gráfico 20 píxeles de ancho (por ejemplo),  quiere decir que tendrás 20 píxeles para mostrar 1 hora, luego 60 minutos, luego 3.600 segundos... por tanto un valor como: las 13:30:45, no aparecría dibujado distinto del valor 13:33:27 (por ejemplo), pués en cada píxel se deben acomodar 3 minutos.

No te preocupes, está bien, si toleras que se pueda hacer zoom, luego tendrás que para una hora, en vez de 20 píxeles, tuvieras por ejemplo 180, con lo cual ahora cada píxel podría acoger ya hasta 20 segundos (digamos que esa sería la precisión)....
#1407
Bien, no creas que está todo perdido... procediendo de letras, lo ideal para iniciarse en la programación es precisamente conocer a fondo la gramática del lenguaje que quieres estudiar ()en realidad todo el mundo debiera empezar por ahí).

No has aclarado cual lenguaje de NET, así que te sugiero VB y C#

Especificación de VB 11
https://ljw1004.github.io/vbspec/vb.g4?raw=true
El fichero tiene extensión g4, que se reconoce en win10, si tu versión de win2, no lo reconoce, añade la extensión .doc al final y lo abres con cualquier lector de doc, si más problemas (con extensión txt, no habrá saltos de líneas y será un galimatías su presentación en pantalla).
La dirección es tomada de aquí:
https://docs.microsoft.com/es-es/dotnet/visual-basic/reference/language-specification/introduction

La especificación está declarada en el formato de ANTLR, que es una variación de EBNF (ante la duda de dichos palabros, tienes wikipedia), en realidad son descrupciones muy entendidbles que basta 5 minutos para asimilarlo..  o visita la propia página de ANTLR
http://www.antlr.org/


Especificación del lenguaje C# - ECMA 334
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-334.pdf
Aunque sea un tocho de más de 500 páginas, la gramática viene en un anexo al final y ocupa unas 50 páginas.
Después de estudiarse aunque sea por encima la gramática, para alguien que procede de letras, el resto del lenguaje será más claro, y ante las dudas puntuales, se vuelve a la gramática y listo...




Después de conocer la:
"1º Gramática de un lenguaje", lo siguiente a estudiar es la:
"2º Referencia del lenguaje", aunque esto sin profundizar,
porque te llena de teoría que sin algo de práctiva se cuela como el agua entre las manos bajo un grifo... no la retienes... hay que leer y practicar pequeños ejercicios.
Pero la referencia hay que tenerla a mano, para resolver las dudas que puedan surgir.
Así que como  3ª lectura de guía te vale luego cualqueir libro cuyo título sea similar a:
"3º Introducción a ...x..." siendo '...x...' el "lenguaje X" de tu elección.
En realidad tras leer la gramática, y algo de la referencia del lenguaje luego hay que ir al 3 e ir contínuamente saltando del 3 al 2 para la consulta de dudas y cuando no se satisfagan, al 1. Lo que no conste en 1, no pertenece al lenguaje.

Para posteriores dudas e info al respecto, están las páginas de Moco-soft...
https://docs.microsoft.com/en-us/dotnet/standard/net-standard

Toda esa tabla de contenido puede bajarse como un pdf, para tenerlo disponible offline:
https://docs.microsoft.com/en-us/dotnet/opbuildpdf/toc.pdf?branch=live
ahora el nombre dado al docmuento bajado, es purio urliburli, así que dale el nombre adecuado y la extensión pdf.
#1408
Java / Re: Valores aleatorios
17 Agosto 2019, 01:37 AM
Imagina el siguiente caso:
Tomamos una bolsa y pedimos a todos los alumnos de tu clase, que escriban su nombre, lo doblen y lo metan en la bolsa.
ahora pedimos que se saque un nombre y lo anotasmos en la pizarra, volvemos a guardar el papelito en la bolsa, y pedimos otro... y así tantos como quieras.

Entiendes que la posibilidad de que salgan nombres reptidos resulta inevitable?.

Vamos a hacer que sea evitable... todo lo que necesitamos sabes es cuantos números queremos tener (o alumnos de tu clase con nombre distintos), pongamos que aunque en tu clase haya 35 alumnos solo hay 20 nombres distintos, el resto se repiten.

Bien, como solo queremos que salgan una única vez, solo escribimos el nombre de esos 20 únicos en un papelito, l odoblamos y lo metemos en la bolsa... la agitamos (barajamos), y ahora cuando se saque uno de la bolsa, se queda fuera...(lo metemos en otra bolsa, por ejemplo)... el resultado es que saldrán nombres sin repetirse.

Si lo has entendido hasta aquí, ahora un poco de pseudocódigo:


array bytes Lista()

// los metemos en la bolsa (1 vez cada uno distinto)
// permitimos elegir desde 0 a 19, lo mismo que desde 35 a 54
//     (para 20 elementos de cantidad, del ejemplo).
Funcion GenerarListaSinRepeticion(array entero Lista(), entero Cantidad, entero Inicial = 0)
   entero k    

   alojar memoria para Lista(0 a Cantidad-1)
   bucle para k desde Inicial hasta Cantidad-1+Inicial
       lista(k-inicial) = k
   siguiente
Fin funcion

// ahora los barajamos: pero en vez de meterlos en otra bolsa (array)
//   lo depositamos al final y el que está allí, lo dejamos en el índice obtenido al azar,
//    estos es intercambian su posición...
Funcion Barajar(array entero Lista(),  entero Cantidad)
   entero k, index, tmp

   Bucle para k desde Cantidad-1 hasta 1 regresivamente
       index = random(entre k y 0)
 
       tmp = lista(index)
       lista(index) = lista(k)
       lista(k) = tmp
   Siguiente
Fin funcion


Ahora los ítems en el array están barajados, de forma aleatoria, aparecen una sola vez, y puedes tomarlos linealmente , cuando los consumas (llegues al último), debes barajarlos nuevamente. Y si necesitas cambiar la cantidad invocas de nuevo la función GenerarListaSinRepeticion.

Fíjate que se puede personalizar todo lo que se quiera... imagina que quiero que salga 5 veces 3 de ellos, 4 veces 10 de ellos, 2 veces 25 de ellos y 1 sola vez 500 elementos...
Lo primero es totalizar cuantos elementos  se necesitan:
Cantidad    ---  Repetidos:
  3 x   5 =   15
 10 x  3 =   30
 25 x  2 =   50
500 x 1 = 500
-------------------
TOTAL   = 595

Luego debemos crear un array con 595 elementos, y luego condiconarlos a que se repitan las veces pedidas...
Como interesa que no haya que hacer cada vez una función distinta para cada caso, es mejor parametrizarlo para reutilizarlo una y otra vez con solo 2 funciones:

estructura Articulos
  entero Cantidad
  entero Repeticiones
fin estructura

Array entero Lista() = funcion GenerarArray(array de articulo Reparto() )
    entero Total, k, n

   // Calcular cuantos ítems totales hay.
   Bucle para k desde 0 hasta reparto.Length-1  // cantidad de ítems en el array.
       total += Reparto(K).Cantidad * Reparto(k).Repeticiones    
   Siguiente

   // dimensionar el array en memoria al tamaño total recién calculado
   alojar array Lista(0 hasta Total -1)

   // Introducir la cantidad de repetidos de cada 'clase'
   n = 0
   v = 0
   Bucle para k desde 0 hasta reparto.Length-1
       AddReparto(Lista, n,v, Reparto(k).Cantidad,  Reparto(k).Repetidos)
       // mejor que sean pasados por referencia y se actualizan allí con cada llamada.
       //n += (Reparto(k).Cantidad *  Reparto(k).Repetidos)
       //v + = Reparto(k).Cantidad
   Siguiente
Fin funcion

// Index y Valor son parámetros pasados por referencia
//      (para recibir de vuelta valores actualizados para el siguiente ciclo).
Funcion AddReparto(array entero Lista(), entero Index, entero Valor, entero Cantidad, entero Repes)
   entero j, k

   Bucle para j desde 1 hasta Cantidad
       Bucle para k desde 1 hasta Repes
           Lista(index) = Valor
           Index += 1
       Siguiente
       Valor += 1
   Siguiente
Fin funcion


Para probarlo, metamos en el array Reparto, los valores que dimos antes de ejemplo:
Cantidad    ---  Repetidos:
  3 x   5 =   15
 10 x  3 =   30
 25 x  2 =   50
500 x 1 = 500
-------------------
TOTAL   = 595

Código de ejemplo para llamar a las funciones

   Array Articulos Reparto(0 hasta 3)
   Reparto(0).Cantidad = 3
   Reparto(0).Repetidos = 5

   Reparto(0).Cantidad = 10
   Reparto(0).Repetidos = 3

   Reparto(0).Cantidad = 25
   Reparto(0).Repetidos = 2

   Reparto(0).Cantidad = 500
   Reparto(0).Repetidos = 1

   Lista = GenerarArray(Reparto() )
   
    //ImprimirLista(Lista, Lista.Lenght)
   //Barajar(Lista, Lista.Lenght)
    //ImprimirLista(Lista, Lista.Lenght)

Si imprimes el array antes de barajar... ahí verás:

Indice - repeticiones del valor
(3 valores se repiten 5 veces cada uno)
0 - 0
1 - 0
2 - 0
3 - 0
4 - 0
5 - 1
6 - 1
7 - 1
8 - 1
9 - 1
10 - 2
11 - 2
12 - 2
13 - 2
14 - 2
-----------
(10 valores se repiten 3 veces cada uno)
15 - 3
16 - 3
17 - 3
18 - 4
19 - 4
20 - 4
...  (si no me equivoco, esto acaba en)
42 - 12
43 - 12
44 - 12
--------------
(25 valores se repiten 2 veces cada uno)
....
(xx .... .... ... ...)
.....
(500 valores sin repetirse (solo 1 vez aparece)
95 - 38
96 - 39
97 - 40
.....
593 - 536
594 - 537
--- FIN ---

Para terminar, te propongo un sencillo ejercicio: Imagina un mazo de cartas, que son típicamente 4 palos de baraja con valores del 1 al 10-12 (baraja española)
Date cuenta como cambiaría el código de crear la lista, pués ahora cada uno se repite 4 veces... crea dicha función y luego barájala, saca por pantalla todo el array y verifica que en efecto han salido 4 veces cada 'carta'.

Unos años atrás redacté en wikipedia el siguiente artículo bastante exhaustivo al respecto sobre el barajado aleatorio... te podría interesar hecharle un ojo, cuando tengas tiempo.
https://es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates



p.d. Olvidaba señalarte que Java contiene este barajado, localiza un método llamado 'Shuffle' en la clase random (OJO: La función de barajado, no la que hace los repartos en las cantidades que interese), pero aprenderás más entendiendo el tocho que te he redactado.
#1409
Foro Libre / Re: Oro monoatómico
5 Agosto 2019, 01:33 AM
Dedicarse a la alquimia supone muchos años de vida... y el 9999 de 10000 solo habrán perdido su tiempo, su dinero, y puede que hasta su salud o su vida. Como quiera que antes hay que dedicarle tiempo al estudio, carece de sentido perder tiempo en la práctica sin siquiera tener una base teórica.

Los alquimistas hablaron de oro potable... en cambio jamás he oído hablar del oro monoatómico, que a buen seguro serán cosas muy distintas... hasta el mismo palabro, me parece sin sentido.
...mañana empiezo mis holidays, así que veré uno de estos días de buscar info sobre el tema, porque como digo, jamás había oído semejante palabro.

p.d.: De lo que sí he oído hablar y se puede encontrar en tiendas de herboristerías y tal, son ampollas bebibles de: "cobre plata y oro", unas minúsculas cantidades con dichos metales en suspensión en cantidades minúsculas, que sí se ha demostrado práctico para algunas situaciones, pero tampoco nada milagroso...
#1410
Nokia pasó a mejor vida... fue comprado por Mocosoft, como estrategia para competir con Google, pero no han sacado provecho del asunto como podrían haberlo hecho.

Supongo que conservar el nombre de la marca desaparecida es solo una cuestión promocional.

Por supuesto un teléfono, cuya pantalla sea extremadamente reducida y se limite a poco más o menos que una docena de líneas de texto, tendrá batería para rato, admeás si no dispone de GPS, a buen seguro que serán una opción inestimable por los cacos. Falta ver que más tiene para saber si podrá estar a salvo o no de hackeos, algo cada vez más frecuente en los móviles... desde luego, los viejos teléfonos, en aspectos de seguridad ganaban por goleada a los actuales.