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 - @XSStringManolo

#581
Hardware / Re: PCI express
24 Abril 2020, 23:24 PM
No le entra un adaptador? Metes el adaptador y conectas la placa. Aunque las targetas wi-fi son peques, igual puede desmontar la gpu conectar la tarjeta y volver a montar la gpu. O que se compre un adaptador wi-fi usb y lo conecte a un puerto de la placa para que no moleste colgado en el gabinete.
#582
Los generadores o funciones generadores simplifican la tarea de escribir iteradores. En lugar de retornar un valor se genera una secuencia de resultados o una serie de valores. Este tipo de funciones retornan un objeto con el método next() que utilizamos para avanzar en la secuencia de expresiones definidas en el cuerpo de la función.

Código (javascript) [Seleccionar]
function* generarSecuencia() {
yield 5 + 6;
yield String.fromCharCode(parseInt("1110000", 2).toString(10));
yield 3 + 4;
return 14;

}

var secuencia = generarSecuencia();

alert( JSON.stringify(secuencia.next()) );
alert( JSON.stringify(secuencia.next()) );
alert( JSON.stringify(secuencia.next()) );
alert( JSON.stringify(secuencia.next()) );
alert( JSON.stringify(secuencia.next()) );

En este ejemplo primero definimos la función generadora.
Definimos cada campo precedido por la keyword yield.
Retornamos la ejecución.
En el parámetro del alert invocamos next() sobre la función y utilizamos JSON.stringify para convertir el objeto en un string para ver exactamente que contiene cada objeto retornado:
{"value":11,"done":false}
{"value":"p","done":false}
{"value":7,"done":false}
{"value":14,"done":true}
{"done":true}

Cuando haces una llamada a este tipo de funciones su código no es ejecutado directamente, en su defecto, retorna un objeto generador que maneja la ejecución.

El método next() nos retornará un objeto con la propiedad/key value que contiene el valor generado por la instrucción alcanzada por el objeto generator y otra propiedad de tipo booleano primitivo en el mismo objeto retornado llamada done. Esta propiedad nos indica si la función retornó su ejecución al código de llamada a través del objeto generator. Es decir, si la función ha finalizado.
Esta propiedad podemos utilizarla como iterador para evaluar las instrucciones del cuerpo de la función.
Cuando ocurre un error en uno de los campos se retornará también la propiedad done = true a menos que se implemente manejo de excepciones sobre el campo o la expresión.

Las propias funciones generadoras son iterables y podemos usar expresiones de la índole de for (valor of generador) para recorrer sus instrucciones.

Es también una buena forma remplazar callbacks evitando los problemas comunes de los callbacks en la programación asíncrona.

La funciones generadoras también permiten realizar bucles infinitos.
Código (javascript) [Seleccionar]
function* generarSecuenciaInfinita() {
var inicial = -1;
while(1) {
yield inicial += 2;
}
}

var secuencia = generarSecuenciaInfinita();

var valor = 0;
var nImpares = "";
var nPares = "";
while(valor < 30) {
valor = secuencia.next().value;
if(valor < 30) {
nImpares += valor + " ";
nPares += "" + (+valor + 1) + " ";
}
}

document.write("Números Impares menores que 30: " + nImpares);
document.write("<br />Números Pares menores que 30: " + nPares);



#583
Dudas Generales / Re: Novato
24 Abril 2020, 19:16 PM
En el foro de dudas generales tienes un listado de libros.


Si vas a estudiar seguridad Android necesitas saber leer en inglés por la cantidad de material que hay en inglés respecto a en español. Y para la programación en general y el hacking también es muy muy útil.
Hay cursos online como los de duolingo para aprender inglés de forma interactiva sin "chapar". Probablemente si le das caña en muy pocos meses puedes empezar a leer libros en inglés.


Te recomiendo que te centres en programación y el funcionamiento general de las cosas sin profundizar demasiado en esto último hasta que sepas programar.
Android es un sistema Linux asique todo lo que puedas aprender sobre Linux te va a ser muy útil.


El lenguaje de programación predilecto de Android es Java (no confundir con javascript) asique deberías empezar con ese lenguaje. Aunque el código del sistema está escrito en diversos lenguajes.


También debería aprender como funcionan los apk, skali, dalvikvm, firmas...
Cuandl te manejes algo con Java puedes empezar a aprender y programar para Android.




#584
En javascript tenemos conversores léxicos en forma de métodos y funciones; Number(), parseInt(), parseFloat(), String(), Boolean(), Object(), toString()... y también disponemos de otros métodos que hacen conversiones indirectas o que directamente retornan otro tipo de dato como .join() y .split(). Incluso se hacen casteos y conversiones de forma transparente. Por ejemplo en el conjunto de sentencias var nombre = "Manolo"; var inicial = nombre.charAt(0); "Manolo" es un literal de un tipo de data primitivo. No tiene métodos aplicables. El motor de javascript crea un nuevo objeto temporal al que pasa una referencia de nombre como parámetro. A este nuevo objeto String se le puede aplicar el método charAt(). Tras ello se retorna el valor como expresión (en este caso se asigna a la variable inicial). Y se asigna null a la variable temporal utilizada. A esta técnica se la conoce como AutoBoxing. Sin embargo lo que quiero comentar no es nada de esto si no los operadores que realizan casteos implícitos.

Sin duda el que más se utiliza de ellos de forma no premeditada es el operador ==. Cuando se comparan dos valores de tipos distintos el operador == hace una conversión automática/implícita de tipo (coerción de tipos) en el caso que sea necesaria. Por ese motivo en muchos casos debemos utilizar en su lugar el operador ===. Pasa lo mismo con otros operadores de comparación como puedan ser el != < >= ...

Por otro lado el operador de casteo implícito más utilizado para coerción es el "". Se abusa de que ante la comparación de un string literal y otro tipo de dato prevalece la concatencación del string sobre una operación de adición.
n = 1; m = 2;
doce = n + "" + m;
También puedes usar un array vacio. alert(1 + [] + 2);

Uno menos conocido es el operador unario +.
La variable doce contiene ahora mismo el string literal de tipo primitivo "12". Si queremos convertirlo a número utilizamos el más. doce = +doce;

Podemos comprobarlo de la siguiente manera.
Código (javascript) [Seleccionar]
var doce = "" + 12;
alert(typeof(doce)); /* String */

doce = +doce;
alert(typeof(doce)); /* Number */


Otra forma de convertir a número es utilizando doce-0 o ~~doce.
Código (javascript) [Seleccionar]
var doce = "" + 12;
alert(typeof(doce)); /* String */

doce = doce-0;
alert(typeof(doce)); /* Number */


IMPORTANTE: Este tipo de casteo con operador unario + tiene resultados equivalente a utilizar Number() y no a parseInt();
Tienen pequeñas diferencias. Por ejemplo si casteas un string vacio utilizando parseInt() obtendrás un NaN (Not a Number, No es un número). Por el contrario si usas Number() o el casteo implícito con los operadores el string vacio se castea a 0. Con el doble bitwise ~~ puedes hacer interger overflow o que te retorne 0 con números grandes asique hay que tenerlo en cuenta. Por otro lado tiene la característica de castear a 0 valores como undefined o números con strings. Hay más operadores de bits que actual igual que el doble bitwise a la hora de castear.

También es recomendado utilizar mètodos/funciones cuando el código no queda claro o añadir comentarios al código.

Otro operador implícito es el ! o !! que puede utilizarse para castear valores falsos o verdaderos a sus contrapuestos o respectivos homólogos booleanos.

Precaución a la hora de hacer casteos a booleanos usando objetos. Por ejemplo en el código:
Código (javascript) [Seleccionar]
booleano = new Boolean(0);
if (booleano) alert("Hola");
La condición se cumple ejecutando el alert debido a que exite un objeto. Lo que se debe hacer es usar Boolean(0) sin el new para que se haga el Autoboxing y obtener el valor booleano primitivo (y no un objeto referenciado Boolean con valor false que se evalua como true por existir el objeto). El operador !! también es una forma válida de no crear el objeto y obtener un booleano primitivo.

Otras conversiones incluyen operaciones con strings. Si bien el + concatena un número y un string, el resto de operadores unarios no siguen la misma norma.
var dos = "6" - "2" * "2";
#585
Desarrollo Web / Re: Varios radio buttons
24 Abril 2020, 07:35 AM
Al tener el mismo nombre automáticamente pasan a pertenecer al mismo grupo. Debido a lo cual se deseleccionan. La única forma es separar cada grupo dentro de un form. No sé que tipo de problemas puedas tener intentando hacer peticiones con name repetidos. No te es posible cambiarle el name en el cliente y en el backend juntar ambos? O leer con js el estado de los radios y mandar una petición a tu gusto? Con json haces lo mismo que haces ahora con el array recorriéndolo usando el operador array pero sin repetir el name.

Código (html4strict) [Seleccionar]
<H5>SPOUSE</H5>
<form>
<label class="radio inline">
<input type="radio" name="coveragedep[]" id="optionsRadios3" value="1" <?php echo ($row[0]['coverrage'] == 1)?'checked':''?> ><b>Coverage Yes </b>
</label>
<label class="radio inline">
<input type="radio" name="coveragedep[]" id="optionsRadios4" value="2" <?php echo ($row[0]['coverrage'] == 2)?'checked':''?>><b>Coverage No </b>
</label>
<label class="radio inline">
<input type="radio" name="sexodep[]" id="optionsRadios3" value="1" <?php echo ($row[0]['sexo'] == 1)?'checked':''?>><b>Sex M </b>
</label>
<label class="radio inline">
<input type="radio" name="sexodep[]" id="optionsRadios4" value="2" <?php echo ($row[0]['sexo'] == 2)?'checked':''?>><b>Sex F </b>
</label>
</form>
<H5>DEPENDE 1</H5>
<form>
<label class="radio inline">
<input type="radio" name="coveragedep[]" id="optionsRadios5" value="1" <?php echo ($row[1]['coverrage'] == 1)?'checked':''?>><b>Coverage Yes </b>
</label>
<label class="radio inline">
<input type="radio" name="coveragedep[]" id="optionsRadios6" value="2" <?php echo ($row[1]['coverrage'] == 2)?'checked':''?>><b>Coverage No </b>
</label>
<label class="radio inline">
<input type="radio" name="sexodep[]" id="optionsRadios7" value="1" <?php echo ($row[1]['sexo'] == 1)?'checked':''?>><b>Sex M </b>
</label>
<label class="radio inline">
<input type="radio" name="sexodep[]" id="optionsRadios8" value="2" <?php echo ($row[1]['sexo'] == 2)?'checked':''?>><b>Sex F </b>
</label></form>

[/quote]
#586
Cita de: serch0911 en 24 Abril 2020, 00:31 AM
Solo quisiera tener un poco mas de información acerca de ingresar a la deep web, ya que he buscado sobre esto en youtube pero en lo que dicen en la mayoría de vídeos parece ser mentira y estoy un poco confundido. Por ejemplo:
1. ¿hay algún peligro al ingresar a la deep web?
2. ¿debo tener algunas precauciones antes de entrar (como tener algún programa para evitar ataques o cambiar de sistema operativo)?
3. ¿ahí puedo aprender cosas de hacking sin censura (como tutoriales o en donde enseñen cosas que no permite google?

Muchas gracias.
1. Los mismos peligros que usar cualquier proxy de la web, que no son pocos.
Está lleno de estafadores, servicios engañosos y contenido que es ilegal su descarga. Y ojo, cuando visualizas una página aún sin saber que contiene, tu navegador descargará el contenido. Lo cual te puede meter en problemas.


2. No sabría darte ninguna útil relacionada con la seguridad a parte de no usar Tor y calquier otra medida que se aplique usualmente. Tampoco hagas nada que no haría en la red normal porque existe el browser fingerprint, sound beacons, dns leaks, etc.


3. Creo que lo único que puedes aprender que no esté en la clearnet es temas de ingeniería social y phishing. El resto de cosas incluyendo carding y similares se encuentran en la clearnet. Hay mucho fantoche hacker por los chats y le pasas un comando básico de la terminal y no saben lo que hace. También hay mucha trap tipo redirecciones hacia la clearnet para desanonimizar.


Como resumen no lo uses.
#587
Cita de: WHK en 23 Abril 2020, 22:13 PM
No puedes hacer una comparación de un char de 1 dimension con un std::string, y cómo sabrías si el valor contiene otra letra y deba ser procesado para multiplicar o no?.
Es que no comparo con string. opcion es un char y 'y' también es un char literal.
Omito la comprobación porque considero que es innecesario para un programa sencillo para un usuario nuevo. En caso de necesitar forzosamente la comprobación usaría la función isDigit() de la librería ctype

http://www.cplusplus.com/reference/cctype/isdigit/
#588
Cita de: WHK en 23 Abril 2020, 21:45 PM
Porque 0 para factorización si es un número válido, solo te quisiste ahorrar la validación numérica.

saludos.
Eso del 0 no lo sabía. Se puede meter un menú entonces antes de introducir el número. 1. Introducir número 2. Salir. O si quieres con letras. if(opcion == 'y') {} else if(opcion == 'n') {} else {cin >> opcion}


Más que nada es para no complicarle el código a alguien que empieza.
#589
Probablemente las respuestas estén dentro del servidor.Tu mandas la respuesta, el servidor las compara con las respuestas correctas y te devuelve el resultado.


Para que extrapoles es como si tu escribieses en papel las respuestas y las metieses por debajo de una puerta cerrada. Alguien dentro agarra el papel, se va a su escritorio, corrige las respuestas y te devuelve el resultado por debajo de la puerta.


A tus ojos solo ves como mandas el papel por debajo de la puerta y como al rato sale corregido, no sabes ni quien lo corrige ni como.
#590
Pues enigma no fue de lo más eficaz en su día. Debido a que los Alemanes usaban una clave única cada día había días que los ingleses por probabilidad craqueaban la nueva clave bien tempranito y escuchaban todas las comunicaciones cifradas de los alemanes por el resto del día hasta que al día siguiente cambiaban la clave. Por no decir que todas las claves estaban en una libreta por lo que algún alemán podría vendérsela a los ingleses y descifrar las comunicaciones día sí y día también.
Aquí un artículo bastante extenso sobre el tema. http://home.bt.com/tech-gadgets/cracking-the-enigma-code-how-turings-bombe-turned-the-tide-of-wwii-11363990654704