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

#2211
Como probablemente Wolfbcn, estará de vacaciones (y nos deja colgados de noticias), aprovecho para poner esta que de alguna manera resulta afín a los temas del foro.

Citar
En los últimos años, han surgido muchas noticias sobre hackers rusos intentando o consiguiendo atacar objetivos estadounidenses. Desde la polémica publicidad en Facebook en las pasadas elecciones hasta acusaciones de intentar hackear la red nuclear del país.

Microsoft Corporation acaba de presentar un informe en el que asegura que han detectado y acabado con cinco páginas creadas por hackers rusos que tenían como principal objetivo intentar robar las contraseñas y otros credenciales de aquellos que las visitaran.


https://www.genbeta.com/actualidad/microsoft-cierra-cinco-paginas-creadas-hackers-rusos-que-buscaban-robar-datos-visitantes

http://www.eleconomista.es/politica/noticias/9340921/08/18/Microsoft-detecta-cinco-paginas-web-falsas-creadas-por-piratas-rusos.html

Hay más páginas que creo que basta con un par de enlaces.



El artículo es demasiado escueto, pero puede profundizarse en las noticias de tv. (cadenas de noticias, no cadenas de telebasura).

Por supuesto, Peskov (el portavoz del Kremlin), ha negado las acusaciones (como era de esperar). ...al final es como en las pelis: "si el enemigo te captura la agencia negará toda vinculación..."

A mi me cuesta creer que Microsoft, no sepa por donde anda, así que doy veracidad al asunto.
Mientras en muchos países 'contratan' a hackers para descubrir fallos de seguridad propios, parece que Rusia, lo hace para descubrir fallos de seguridad en el gobienro USA (por todos los medios).

Desde que se dió en la diana a Karspersky, no ha parado de sacarse más y más trapos sucios... supongo que ya nadie duda que el nuevo escenario para la guerra fría (II), es sobre internet...
#2212
Claro, es otra opción...

Sin embargo lo que no entiendo al final es que tiene que ver que hayas adquirido ese producto con esto que decías al comienzo... es decir pensaba que querías simplemente info y a lo sumo algún programa de prueba que te permita 'verificar', lo que aquí decías:
Citar
Pregunto esto porque a ver si soy capaz de estimar una cosa respecto a un motor gráfico que creo posible y que permitiría crear y ejecutar videojuegos fotorrealistas y de jugabilidad y estilos tan avanzados y variados como los que tenemos en esta era, en ordenadores...relativamente antiguos.
#2213
Cita de: #!drvy en 30 Mayo 2012, 15:26 PM
Estas semanas estoy tremendamente aburrido y estoy en la creación de un addon(firefox) de este tipo. Lo que va a hacer es ocultar los foros/subforos que no deseas ver, y los posts de usuarios que "no te caen bien" xD.

Un poquito mas y terminare la alpha.

Saludos
Parece que se quedó en el intento, porque no logro encontrar tal opción en los controles del perfil.
Aunque tiempo atrás juraría haber bloqueado a algún usuario (quizás fuera en otra parte).
#2214
La mera palabra de "colonia", "colonial", "colono", "colonización", etc... procede en origen de Colón...
Resulta insulso, pretender la existencia de un significado propio y específico sobre el tema antes del descubrimiento de América. Eran provincias, ya que la administración del territorio era total y absoluta.
Que esto cambiara con el tiempo, es otra historia... y es más tardío en la Historia. El término colonia, apareció posteriormente...

Que un secuestrador y su víctima acaben siendo amigos, o se casen, no cambia el hecho inicial de que fuera un secuestro.

#2215
- Necesitas conocer un poco aunque sea por encima la estructura del registro...
Por ejemplo, si tinees esto:
Command = "Folder\\shell\\Asistente Virtual AIRH\\command";
y esto:
Registry.ClassesRoot
Básicamente le estás diciendo que la ruta en el registro es:
CitarHKEY_Classes_Root\Folder\...
Donde folder refiere acciones sobre carpetas. Luego para hacerlo sobre ficheros, debes primero saber si es para cualquier fichero o para una (o varias) extensión específica.
Si es una extensión específica, entonces define command, a la ruta específica.
Command = ".exe\\shell\\Asistente Virtual AIRH\\command";
en este ejemplo afecta solo a aquellos ficheros con extensión ".exe". Si deseas que se aplique a cualquier fichero, debes usar el asterisco...

- La acción es lo que tu quieras hacer, pero si es una extensión que no es tuya, no modifiques el registro, antes bien, registra tu propia acción, en general cada extensión específica suele tener asociado unas acciones como "Open" y "Print", no importa el nombre que le dés, si importa el texto que muestres en el menú...
Al final en "command", lo que estás definiendo es el comando que ha de recibir una aplicación, por ejemplo:
"c:\program files\mi programa\chachiprograma.exe /A:a /B /R:%1 /C:20"
Si observas bien, en comand al final indicas la ruta de la aplicación que recibirá el comando... el fichero que se entrega a dicha aplicación está representado por %1, y "/A:a /B /R: /C:20" son parámetros adicionales (de ejemplo) ... más específico el ejemplo: "/R:" indicaría al programa que este parámetro contiene la ruta (tras los dos puntos)...Las barras "/", son para hacer un split en la cadena de comandos recibida y escrutar que parámetros son invocados... los ":", es para hacer un split entre un parámetro y el valor que pueda acompañar a dicho parámetro..., así los parámetros que el afinal el programa debería interpretar serían A, B, C y R (y  a,b, c y r,  si quieres que definan la misma acción)... cada uno representaría lo que uno quisiera que represente ese parámetro (salvo que de ejemplo ya hemos señalado que R sería el que señale la ruta recibida)...

- Sobre más acciones, pués repetir todo el proceso.
Por ejemplo si el programa fuera un compresor-descompresor, la acción anterior podría ser la acción para comprimir, y entonces ese texto sería el que entraríamos en el código:

MenuName = "*\\shell\\Compresor";
Command = "*\\shell\\Compresor\\command";

regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
                if (regmenu != null)
                    regmenu.SetValue("", "&Comprimir");

regcmd = Registry.ClassesRoot.CreateSubKey(Command);
                if (regcmd != null)
                    regcmd.SetValue("", @"c:\program files\mi programa\compresor.exe /A:a /B /R:%1 /C:20");

y para otra acción, como he dicho es repetir cambiando lo que proceda, supongamos descomprimir. Al descomprimir, no lo haríamos sobre cualquier fichero, si no sobre el tipo que genera nuestro compresor... supongamos la extensión .comp
Supongamos que el parámetro A, fuera una abreviatura de 'accion' y x fuera eXtraer


MenuName = ".comp\\shell\\Compresor";
Command = ".comp\\shell\\Compresor\\command";

regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
                if (regmenu != null)
                    regmenu.SetValue("", "E&xtraer");

regcmd = Registry.ClassesRoot.CreateSubKey(Command);
                if (regcmd != null)
                    regcmd.SetValue("", @"c:\program files\mi programa\compresor.exe /A:x /R:%1 /Q");

Mira como las rutas ahora se refieren solo a los ficheros con extensión ".comp" el texto ahora en vez de "Comprimir", aparecerá en el menú contextual "Extraer", el cual solo aparecerá si el fichero seleccionado es de tipo ".comp"
Finalmente observa como ha cambiado los parámetros, la "A" de acción ahora tiene una "x", asociada a Extraer, (la "a" de más arriba podría asociarse a "añadir"), el parámetro "Q", podría indicar que se pregunte al usuario si extraer todo o dejar que el usuario decida que quiere extraer..., sin dicho parámetro, por ejemplo podría ser un indicador para: "Extraer Todo"

- Respecto de que aparezcan como submenú... no sé si haya cambiado en win10, pero antes al menos, la única forma de introducir como submenú, exigía escribir una librería, implementando determinadas interfaces... no me he informado si esto ha cambiado (no me ha surgido la necesidad). Así que en teoría no, pero tampoco garantizo que no sea posible actualmente, queda a tu esfuerzo acceder al MSDN e investigar un poco... que no quema.
https://msdn.microsoft.com/es-es/library/microsoft.win32.registrykey(v=vs.110).aspx

NOTA: No he probado el código que has puesto, he supuesto que es correcto, y tan solo he realizado cambios en las partes que corresponden, para que se pasa dónde y cómo. Reformulando todo en funciones, sería mucho menos código que copiar, pegar y hacer cambios... una única función debería valerte para registrar diferentes acciones, pasando la ruta del registro, el verbo y el comando a ejecutar. 

Y recuerda que para ejecutar código sobre el registro se debe contar con los permisos apropiados... podrías recibir una excepción de tipo "Security...", o "UnauthorizedAccess...", así que ejecuta las acciones dentro de un try... catch.
#2216
Foro Libre / Re: Terremoto en Venezuela
22 Agosto 2018, 01:47 AM
Hummm.. a ver si sucede otro justo donde y cuando Maduro se encuentre en el baño... y se le venga el techo encima (no merece ninguna muerte más heorica que esa, lo mismo que el Chávez lloriqueando "quiero vivir")...  :laugh: :laugh: :laugh: y que así deje respirar al fin al pueblo venezolano.

...claro, que no faltaría quien dijera que fue un atentado...  :silbar:  :silbar: :silbar:
#2217
- La frase "España no tuvo colonias, tuvo provincias de ultramar", es totalmente correcta. El problema resulta porque los analfabetos no saben qué es una colonia ni qué una provincia, además no debe olvidarse de entender por lo que en la época era así designado...

Colonia: "Territorio dominado y administrado por una potencia extranjera".
Ampliando más,  una colonia, se enclava dentro de un país extranjero, el cual es dominado por sus naturales, y la colonia respecto de aquella se considera una situación irregular, es espera de resolverse... es decir se presume un carácter temporal y afecta solo a zonas.
Provincia: "En la antigua Roma, territorio conquistado fuera de Italia, sujeto a las leyes romanas y administrado por un gobernador."
Es en este mismo sentido, que la España de entonces llamaba provincias a los territorios conquistados en América. De hecho cada una de las provincias estaba gobernada por un virrey ("Persona que gobernaba uno de los territorios de la corona en nombre del rey.")

- En cuanto a la frase: "Los conquistadores españoles acabaron con el sacrificio humano"
Tampoco es falsa. Antes de la llegada de Colón había pueblos que practicaban sacrificios humanos, y puede afirmarse que décadas después eso se acabó. Aunque la frase dicha como la han redactado, suena como si en toda América se practicaran sacrificios humanos todos los días... en fin peca de falta de precisión, pero no veracidad.

- La frase "Castilla quiso acabar con la esclavitud"... tiene tela, y eso es más tardío.
Colón arribó a Tierras de américa en 1992, pocos años después, un Fray... hizo un manifiesto para que fuera entregado al rey, en la que relataba, la dureza con que algunos 'terratenientes' trataban a las personas en sus campos... no tuvo mucho eco, porque ellos a su vez se quejaron de 'y quién va a trabajar entonces la Tierra?", aún así el rey envió al primado dle reino de Castilla, a la sazón el cardenal Cisneros en 1499, quien a su vez empezó a enviar misioneros al 'Nuevo Mundo', incluído a su secretario y a algunos más con la orden expresa de de evitar los abusos de poder.  ...y así quedó, al final en 1508 el mismo fraile, volvió a España y de nuevo elevó sus quejas al rey sobre el trato dado a los indígenas. Como resultado, el rey aceptó y la propia Iglesia acabó declarando a los nativos indígenes "Hijos de Dios", es decir de nuestro mismo estado, por tanto hermanos y por tanto el trato inhumano, o cuasi animal, fue prohibido por el rey y se acabó (legalmente, lo que luego alguno hiciera al margen de la ley, es lo mismo que hoy hace cualquiera al margen de la ley saltársela mientras no le pillen...). Es decir apenas 20 años después de descubierta América (España aún no había tendido sus tentáculos en toda Amérrica), los nativos fueron declarados hermanos, de no ser así posiblemente hubieran seguido el mismo curso que los nativos norteamericanos (su casi total extinción).
Los poderosos se seguían quejando de lo mismo, "quién trabajará la tierra?", y he aquí la metedura de pata del fraile, su frase fue el surgimiento de la esclavitud postmedieval... ya que mencionó (a modo de sugerencia, como auqel que dice por decir algo) a los 'negritos del África' como mano de obra... y dicho y hecho, la tomaron al pie de la letra...
Con todo, aunque España empezó la campaña de esclavos en Africa, fue sin embargo Holanda los que explotaron hasta la saciedad el mercado de esclavos.
Así que si la frase se refiere a la 'esclavitud de los nativos americanos', es cierto, pero si acaso se refiriese a la esclavitud de los africanos, pués no tengo yo conocimiento de que hubieren querido acabar con tal esclavitud... al menos no ha quedado claramente reflejado en la Historia, aunque claro quien conoce toda la cantidad de legajos, leyes y prototipos de leyes que pasaron por la corona de Castila?

- Y por último la frase: "El imperio se levantó por igual entre españoles e índígenes"... es interpretable.
Si pretende decir que todos trabajaron, pués así es, si pretende decir que todos estaban conforme con la situación, me temo que no... esta frase es algo más 'patriótica' que otra cosa y puede ser omitida perfectamente, ya que es a juicio del autor del texto, me temo.


Suena feo, pero es lo que fue, una conquista militar, política y religiosa.
Lo mismo que España fue conquistada por lo romanos hace 2000 años y más tarde por los moros. Y nadie se raja las vestiduras por ello... es la Historia, lo que ocurrió, maquillarlo, sólo responde a la estupidez de moda con lo 'politícamente correcto y respetuoso'.
#2218
Pués si, me parece que al final quieres reinventar la rueda... pero además sin saber siquiera lo que es un eje (pecata minuta común en los principantes).

Ya hay programas que hacen todo eso que tienes pensado, pero mucho mejor, inmensamente mejor.
Por ejemplo, yo he usado Terragen desde hace unos 20 años o así y su única pega por entonces es que resultaba muy lento el cálculo de una escena, así que típicamente para hacer cambios y 'ver' solía uno restringir bastantes opciones de cara a seguir avanzando y solo cuando al final lo tenías listo, cuando quería renderizar la imagen completa es cuando activabas todas las opciones y aumentabas las dimensiones de salida d ela imagen (mientras probabas a bajas resoluciones).
A día de hoy que la potencia de cálculo ha mejorado sensiblemente y que el mismo programa ha ido evolucionando (recuerdo que de una versión a otra, mejoró sensiblemente el rendimiento, precisamente por precalcular que planos quedaban ocultos y evitar calcularlos), lo que se podrá hacer con el mismo, será indistinguible d ela realidad...
Hace tiempo (años), que no descargo ninguna versión reciente, pero fijo que  sigue vivo (lo miro ahora mismo). Además había otros programas 'competidores', que seguro que siguen activos también (por ejemplo Renderosity, VistaPro que venía desde los antiguos Amiga de Apple (finales de los 80), etc... )...

Página de Terragen:
https://planetside.co.uk/
Puedes descargar una copia gratuita de evaluación, a la que se imponen algunas restricciones, como el tamaño máximo de imagen de salida.
La última versión es la 4 y data del 2016.
Algunas imágenes en la galería, aunque también puedes buscar en youtube o en el propio google:
https://planetside.co.uk/terragen-image-gallery/

Te aclaro que ya por 2003-2004, las imágenes generadas eran fotorrealistas, y  supongo que el programa estaba 'capado' en capacidades, únicamente por el excesivo tiempo de renderizado, es decir que podría ofrecer más calidad, sin la imposición de restricciones por culpa del rendimiento de entonces, así que si no vas a hacer nada mejor, es preferible que no pierdas el tiempo.

Dispone de diferentes ventanas para definir cosas como el terreno, la atmósfera, hasta las nubes resultan muy realistas... y pueden guardarse los detalles en pequeños ficheros de definición... por ejemplo recuerdo haber generado diferentes tipos de hierba, más adelñante puedes importar en otras escenas aquellas cualidades que hayas guardado, es muy completo pero no complejo de usar quizás sí, para exprimir todo su potencial, pero no para trastear con él... resulta muy intuitivo.



p.d.: La definición de objetos sencillos, se conoce como primitivas, y por ejemplo Autocad... lleva ya varias décadas con ello.
Aún conservo por ejemplo las librerías que definía otro programa llamado Drafix-Cad, que además del programa ofrecía paquetes especializados para profesionales: de mecánica, de arquitectura, etc...
En realidad todo ese campo, se empezó a tratar en profundidad a comienzos de los 90, con la llegada de los 16bits a los ordenadores...
#2219
De entrada, C tiene una curvatura de aprendizaje muy muy larga, así que o se tiene paciencia, o es mejor saltar a otro lenguaje... Además si uno accede a C, sin conocimientos previos de ningún tipo, es manifiestamente más complicado, porque se rodea de demasiada jerga que complica al no iniciado.

Si dentro de un bucle pones una llamada que interrogue al usuario para pulsar una tecla, evidentemente el suceso es que se detiene la ejecución en ese punto hasta recibir una pulsación de tecla....

Así que, en efecto, esa funconalidad no te sirve si lo que pretendes es que se ejecute sin pausa y salga cuando se pulse determinada tecla.

El driver del teclado, almacena en un búfer las teclas que se van pulsando y el sistema operativo, obtiene información sobre el búfer mediante interrupciones, cuando se detecta que hay nuevas pulsaciones, las aplicaciones que se 'enganchen', reciben una notificación, donde se señala el código de la tecla pulsada y algún detalle extra.

Por ejemplo, si una aplicación tiene interfaz de usuario, cada control de la interfaz gráfica que tenga eventos de teclado, se engancha a dichas funciones y son notificadas... la forma en que el usuario interacciona en dicho caso es muy similar al getch.

Básicamente una función recibe la notificación y dentro se examina si se dan las condiciones que se desean... y se activa algún flag que se consulta en otra parte (o s e lanza un evento en caso de objetos, para notificar a otros objetos que estén enganchados a dichas notificaciones)

funcion NotificacionTeclado( entero codigo, entero flags) //flags puede ser indicadores del tipo del estado de las teclas ALT, Mayusculas, CTRL, etc...
   Si codigo = codigoquemeinteresa luego
       codigoEntrado = TRUE
   fin si
fin funcion


Y tu bucle lo condicionas a la espera de dicho suceso (o añadido a otras condiones si hay más)


... otra función en alguna parte

codigoquemeinteresa = ???? //el que tu veas preciso...
bucle ....
  ...loque sea que haga el bucle
repetir mientras codigoEntrado = FALSE  // and ....otras condiciones
codigoEntrado = FALSE  // se desactiva la bandera salvo que se requiera algo más adelante...


Lo que te señala Mafus, de getch es para hacer la parte que en el pseudocódigo se señala como función...
Nota que codigoEntrado se declara de tipo buleano a nivel del módulo lo mismo que 'codigoquemeinteresa', que ha de contener el valor del código que tu esperas (el valor asociado a la tecla 'd' (con ayuda de un flag, sabrás si es 'd' ó 'D'...)



De todos modos si estás empezando, aprendiendo, debes hacerlo con código que entiendas de cabo a rabo, e ir avanzando poco a poco...

Más adelante, cuando ya tengas una base mínima del lenguaje (el tiempo transcurrido para esto es relativo, ya que cada cual aprende a su ritmo y cada cual dedica el tiempo que quiere-puede) ya entonces con ejemplos más complejos, aunque parte del código no lo entiendas.
A menudo al poner un ejemplo para explicar algo, o se pone un ejemplo demasiado tonto, o fuerza a ponerse algo más ameno a cambio de exponer cosas que aún no se hayan dado... en los ejemplos, quédate con la parte que comenta el libro, tutorial, curso que estés leyendo/siguiendo/dando, ya llegará la parte en que explique aquello que en dicho instante queda oscuro...
#2220
Te ha respondido engel satisfactoriamente...

Así que solo falta aclararte que 'encender' un pixel... lleva de tiempo exactamente el refresco de tu monitor, es decir si es a 60 herzios, la pantalla completa (no un solo píxel) se redibuja 60 veces por segundo... si es a 200 herzios, 200 veces por segundo.

Luego lo que versa necesidad de tiempo es computar lo que ha de contener la memoria gráfica (búffer) que será volcado en el siguiente refresco.

Calcular una escena 3D, parte de los diferentes objetos que contiene, se empieza con una posición local para cada objeto, luego se aplican transformaciones de rotación (sobre el propio objeto) y escala y desplazamiento (rotación sobre el mundo 3d) en la escena. Una vez posicionados todos los objetos requieren ser ordenados en el plano Z, para hacer un recorte y 'dibujar' solo aquello que se ve, ignorando las partes ocultas tapadas por otros objetos (a veces es más fácil redibujar un objeto encima del previo que calcular ese área que no se debería dibujar del objeto que está detrás), luego se aplican texturas, e iluminación con o sin reflejos de luz (que complican porque requiere recalcular varias veces píxeles que ya fueron calculados con anterioridad)... y al final cuando la escena esté montada pegarla al búffer... generalmente se puede disponer de varios búferes de modo que se va calculando uno (mientras se vuelca a pantalla otro) y a su término se pone en cola... realmente es más complejo, porque no se precisa redibujar todo cada vez, si no solo aquellos objetos que han cambiado en la escena y actualizar a  otros que involucren, por lo que acaba habiendo otros búferes intermedios con 'el fondo' básico de la escena, etc...

La proyección (calcular las posiciones 2D de una escena 3D), es trivial... es muy rápido ya que la GPU dispone de bastante hardware dedicado a ello, por lo que al diseñar un motor 3D, una dificultad adicional estriba en saber con qué funciones nativas cuantan todos (o x) procesadores gráficos, para saber qué funciones deben ser programadas y cuales invocadas de forma nativa (llamadas al driver).

Y en general el diseño del motor 3D, muchas veces se remite a tomar decisiones sobre la cascada de funcionalidad que debe tener, su orden de ejecución y el nivel de precisión... ya que a estas alturas los procesadores gráficos incluyen toda clase de funciones, de modo que cuando programas una función que posee la GPU, será más por gusto o porque quieres darle algo especial que no incluyen otros y todo siempre contando con la fluidez... en un juego, nadie puede esperar 1 sg. a que se genere una escena cada 3 segundos... se tolera al cambiar de escenario, de nivel, etc... pero no mientras estás jugando. Las pausas no deben ser por insuficiencia de la alimentación del búfer... o la gente se desesperará y pensará que o su equipo es poco potente (pero ya el mismo dirá que se lo acaba de comprar, que es lo último...), o el juego es demasiado exigente (si fuera verdad que la calidad es muy superior a todo), o sencillamente que el juego usa un motor de **??**

Ahora si crees haber 'descubierto' algo nuevo y potente... adelante, que no te pare las críticas de nadie, pero también, asegúrate antes de no estar haciendo el tonto y creer que acabas de inventar la rueda.