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

#1221
Cita de: MetaNoia en 25 Noviembre 2019, 22:21 PMBuenas, para desactivar las escuchas por parte de Google puedes quitarle los permisos de acceso al micrófono desde el móvil o instalar un sistema operativo libre y librarte de todas las aplicaciones de Google por defecto. Pero lo que no pueden hacer es falsificar las grabaciones que tienen asignadas a tu cuenta, ya que los usuarios tenemos el derecho de saber todos los datos que se almacenan sobre nosotros. De hecho si entras en tu cuenta de Google hay un apartado donde puedes ver todas las grabaciones que tienen y seria una infracción muy grave si falsifican esa información.
Solo es curiosidad, pero sabiendo que al usar las DNS de Google guardan todas las paginas que visitas y que al mismo tiempo se están lucrando con esa información a tu costa,¿no te gustaría plantearte otra opción?.
Las DNS son texto plano y van por protocolo sin cifrado. Te quitas las DNS de tu ISP, las de Google y te pones las de OpenNic.
Tu tráfico viaja por tu ISP, tu ISP usa servicios de Google, y acaban en OpenNic. En vez de a 2, a 3.
Lo mismo pasa con los sistemas, el hardware y las webs que visitas. Ahora mismo estás en una web que usa los servicios de Google Analytics. Tienes las cookies GA y en cuanto vayas a otra página saben que has estado aquí sin necesidad de inspeccionar tráfico DNS. Hay burradas de variables para fingerprint. WebGl, HTML5, potencia de hardware, versión navegador, rango IP de ISP, leaks, servicios baneados por tu ISP. Firewall del estado, sound beacons...

Cita de: MetaNoia en 25 Noviembre 2019, 22:21 PMYo personalmente uso las DNS de OpenNic que son de  carácter publico y la mayoría de los servidores no guardan ese tipo de información. Aunque si nos ponemos paranoicos tampoco podemos comprobar al 100% que no guarden cierta información al utilizar sus DNS. Lo que me da confianza es que cada servidor tiene un documento en el que expone si guarda o no datos y durante cuanto tiempo, y en caso de no cumplirse podrían comerse una buena sanción.

Saludos
No hace falta que los guarden ellos. La mayoría de sitios te dice: NOSOTROS no guardamos tus datos. Que en ningún momento implica que su cuñado tenga acceso al servidor y sea el quien los guarde.
#1222
Se te coló un punto después del switch.

El compilador te dice exactamente que error estás comentiendo, la línea en la cual se encuentra, el motivo del error y algunos compiladores hasta el caracter que está causando el problema y como solucionarlo. Aprende a leer los errores.

Esta sentencia no sé si es válida.
salir = (opcion == 1);
Entiendo que (opcion == 1) es lo mismo que true, pero nunca ví utilizar expresiones así.

Si te da error ahí haz un if (opcion == 1) { salir = true; } else {salir = false;}
El else sobra pero por si lo modificas te lo dejo.
#1223
Lo primero de todo, el ejercicio te dice que utilices funciones. Una función podríamos decir que es un programa que puede funcionar de forma independiente al tuyo. Por ejemplo un programa que suma puede funcionar por si solo y cumplir su función de sumar sin necesidad de hacer nada más.
Debes hacer mínimo una función para cada operación básica. Y opcionalmente puedes utilizar alguna otra función para otra cosa. Por ejemplo una función para el menú. Después haces llamadas a dichas funciones.

Te hice el programa para que te orientes un poco. Ayuda bastante tener algún código de ejemplo de exactamente lo que quieres hacer. Todo lo que no entiendas búscalo en Google. Y si no te queda claro puedes hacer un post con todas tus dudas recopiladas.



Código (cpp) [Seleccionar]
#include <iostream>
#include <string>

using namespace std;

/* Prototipos de funciones para avisar al compilador */
int Sumar(int numero1, int numero2);
int Restar(int numero1, int numero2);
int Multiplicar(int numero1, int numero2);
int Dividir(int numero1, int numero2);
int PedirNumero(string operacion);

/* Funcion principal */
int main()
{
cout << "Calculadora básica." << endl;

int opcionDelMenu = 1;


  while (opcionDelMenu !=0)
  {  

  cout << endl << "Opciones Disponibles:" << endl << "1. Sumar" << endl << "2. Restar" << endl << "3. Multiplicar" << endl << "4. Dividir" << endl << endl << "0. Salir" << endl << endl;

/* Comentario #1 */
opcionDelMenu = PedirNumero("seleccionar una opción");

/* Comentario #2 */
     switch (opcionDelMenu)
     {
        case 0:
        {
        cout << "Hasta Luego!" << endl;
        cin.ignore();
        cin.get();
        return 0;
        }
   
        case 1:
        {
       
        int num1 = PedirNumero("sumar");
        int num2 = PedirNumero("sumar");
        cout << "El resultado es: " << Sumar(num1, num2) << endl;
        } break;

        case 2:
        {
        int num1 = PedirNumero("restar");
        int num2 = PedirNumero("restar");
        cout << "El resultado es: " << Restar(num1, num2) << endl;
        } break;

        case 3:
        {
        int num1 = PedirNumero("multiplicar");
        int num2 = PedirNumero("multiplicar");
        cout << "El resultado es: " << Multiplicar(num1, num2) << endl;
        } break;

        case 4:
        {
        int num1 = PedirNumero("dividir");
        int num2 = PedirNumero("dividir");
        cout << "El resultado es: " << Dividir(num1, num2) << endl;
        } break;

        default:
        {
        cout << "La opción " << opcionDelMenu << " introducida no está contemplada" << endl;
        }

     }

  }


return 0;
}


/* Definición de Funciones */
int Sumar (int numero1, int numero2)
{
return numero1+numero2;
}

int Restar (int numero1, int numero2)
{
return numero1-numero2;
}

int Multiplicar (int numero1, int numero2)
{
return numero1 * numero2;
}

int Dividir (int numero1, int numero2)
{
return numero1/numero2;
}

int PedirNumero(string operacion)
{
int numero = 0;
cout << "Introduzca el numero para " << operacion << endl;
cin >> numero;
return numero;
}


Comentario #1:
Pudes guardar el valor de retorno de una función en una variable. Ejemplos con distintos parámetros:
int resultadoSuma = suma();

int resultadoResta = resta(3 , 2);

int resultadoMulti = multiplicacion(7, numero);

int resultadoDivision = dividir(resultadoMulti, resultadoSuma);

La sentencia: opcionDelMenu = PedirNumero("seleccionar una opción"); se compone de:
-La variable opcionDelMenu que fue declarada anteriormente.
-El operador de asignación = que asigna el return o resultado de la expresión a su derecha a la variable o contendor de su izquierda.
- La llamada a la función PedirNumero(); que está declarada al final del código. Al llamarla, se ejecuta el código que contiene. Esta llamada tiene como parámetro el texto entrecomillado "seleccionar una opción". Esto es un string literal. Es usado en el cout de la función. Esto es lo mismo que hacer lo siguiente:

string miTexto = "seleccionar una opción";
opcionDelMenu = PedirNumero(miTexto);



Comentario #2:
Utilizo un switch(parámetro) en lugar de varios if, else if, else.

Utilizando los if, else if y else sería:
Código (cpp) [Seleccionar]
if (opcionDelMenu == 0)
{
cout << "Hasta Luego!" << endl;
cin.ignore();
cin.get();
return 0;
}

else if (opcionDelMenu == 1)
{
int num1 = PedirNumero("sumar");
int num2 = PedirNumero("sumar");
cout << "El resultado es: " << Sumar(num1, num2) << endl;
}

else if (opcionDelMenu == 2)
{
int num1 = PedirNumero("restar");
int num2 = PedirNumero("restar");
cout << "El resultado es: " << Restar(num1, num2) << endl;
}

else if (opcionDelMenu == 3)
{
int num1 = PedirNumero("multiplicar");
int num2 = PedirNumero("multiplicar");
cout << "El resultado es: " << Multiplicar(num1, num2) << endl;
}

else if (opcionDelMenu == 4)
{
int num1 = PedirNumero("dividir");
int num2 = PedirNumero("dividir");
cout << "El resultado es: " << Dividir(num1, num2) << endl;
}

else
{
cout << "La opción " << opcionDelMenu << " introducida no está contemplada" << endl;
}


cin.ignore(); sirve para ignorar los caracteres que estén en el buffer.
cin.get(); es una forma de pausar el programa hasta que se introduzca un caracter. En algunos IDE como CodeBlocks se pausa automáticamente la consola para ver el resultado del programa hasta que pulses enter. Pero si vas a la carpeta del .exe (en caso de windows) generado y lo ejecutas, esta pausa no se produce. Por lo que utilizo cin.get para que el programa no finalice automáticamente y se pueda ver el mensaje de despedida.
Despues utilizo return 0; para finalizar la función int main() y por tanto el programa cuando se seleccione salir. Otra opción es utilizar la propia funcionalidad del while. Vacias el case 0: y le añades el break. De tal forma que salte al final del while, se compruebe que la condición del bucle ya no se cumple, y continue la ejecución hasta el return 0; que se encuentra en el final del cuerpo de la función main. Es más eficiente retornar 0 directamente desde case 0: pero no siempre va a ser el comportamiento que deseas. A veces quieres salir de un bucle, y entrar en otro bucle nuevo por ejemplo, y si hicieses el return 0 dentro del case 0: abandonarias el programa directamente sin continuar la ejecucción hasta el siguiente bucle.

Comentario Final:
Por último están declaradas todas las funciones del programa. Todas retornan un entero. En los cout dentro de los case puedes ver como están las llamadas a las funciones dentro del propio cout. cout << "El resultado es: " << Sumar(num1, num2) << endl; Como ves en la ejecución, Sumar(num1, num2) es remplazado por su valor de retorno.

Tambien puedes utilizar funciones sin retorno del tipo void. Ej:
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>

using namespace std;

int vecesSaludado = 0;

void Saludo(string nomb);

int main()
{
string miNombre = "";
cout << "Hola cómo te llamas?" << endl;
cin >> miNombre;

Saludo(miNombre);
Saludo("Paco");
Saludo(miNombre);

int veces;
cout << "Cuantas veces quieres que te salude?" << endl;
cin >> veces;

for ( int i = 0; i < veces; ++i)
{
Saludo(miNombre);
}

cout << miNombre << " fuiste saludado " << vecesSaludado << " veces." << endl;


cin.get();
return 0;
}

void Saludo(string nomb)
{
cout << "Hola " << nomb << " bienvenido a mi programa." << endl << endl;

++vecesSaludado;
}


En el foro de dudas generales tienes un listado con libros. Si te manejas en inglés en concreto te recomiendo leer el del Apress Learn C++ for game developers.
#1224
A mi toda la publi que me llega (enfocada a mi?) es prácticamente de movistar a través de google(cookies). Por ejemplo para chorradas de servicios como la tienda emoción. Me gusta revisar el código de las páginas de publicidad y en movistar tienen a algunos bien cachondos. Por ejemplo en una página picante, tiene un comentario diciendo algo como /* Esperando a que la fruta esté lista para hacer zumo */ :laugh:
#1225
Por defecto SPAN se muestra inline. Tu lo modificaste a block.
Prueba con display: inline; a ver si te funciona correcto. Si no te convence el resultado puedes usar una imagen y con un poco de edición lo dejas todo a tu gusto. No es lo más eficiente, pero se pueden hacer cosas muy chulas de forma muy sencilla.
#1226
Android es pesado. Llevo 3 semanas intentando asimilar el Android Hacker's Handbook y no veas. Y parece bastante superficial.

2.200 dolares de media por vulnerabilidad a mi parecer es insignificante para la repercusión media que puedan tener. No solo afecta a Google si no a toda la OHA y posiblemente a millones de consumidores.

Que el sistema sea cada vez más seguro no implica que cada vez sea más seguro. Es blindar las ventanas para atraer a los ladrones. La gente empieza a confiar en el smartphone para hacer compras, el sistema se incluye en multitud de cacharros y cada vez irá a más con el tema de las teles y los coches.
#1227
Seguridad / Re: Información comprometida
23 Noviembre 2019, 00:33 AM
Yo no me fio de esa página. Me indica servicios para los cuales no se usó uno de mis correos en los cuales se obtuvo. Soy consciente de como la info se vende de unos a otros, pero dudo mucho que acabase en algunas de esas bases de datos.

Eso de que no eres objetivo interesante... Para ser víctima de la suplantación de identidad vale cualquiera. Para hacer micro transacciones y comprar criptomonedas también. Para usar tus dispositivos como un simple proxy más de lo mismo. Para mandarte ransomware y pedirte dinero para recuperar los datos igual. Para ponerte a minar criptomonedas, atacar a conocidos tuyos o hacerte cualquier tipo de espionaje para chantajearte con cosas de tu vida privado o cosas que alguien te cuente a ti en confianza... Spam desde tu número móvil o subscripciones a servicios sms de pago. Cuentas y servicios a tu nombre... Y muchos etc.



#1228
Windows / Re: Pregunta acerca de windows
22 Noviembre 2019, 00:42 AM
Tu primo es imbécil. Prácticamente no existe diferencia entre home y pro, solo 4 chorradas que puedes instalar/desinstalar con checkboxes desde el propio panel de control.

En vez de recomendarte estupideces, para empezar podría decirte que compruebes las temperaturas, ya que "alta" pueden ser 50 grados, 60, 90... Para algunos precesadores pasar de 55 grados ya es demasiado, y para otros entra dentro de lo común. Puedes hacer underclock al procesador, reducir voltajes, hacer cambios en el registro, ajustar los planes de energía, brillos, desinstalar programas inútiles...

Lo de incluso teniendo un ventilador te refieres a una de estas platarmas con ventilador sobre las que posicionas el ordenador?

Estaría bien que comentaras el modelo de tu portátil, las temperaturas de los componentes principales al encender, en iddle y a máximo rendimiento. Revoluciones de los disipadores. Voltajes. Consumo de CPU y memoria. Programas instalados. Etc.






#1229
Tiene pinta que te han tirado un farol y tu asentiste confirmándole una sospecha.

Tienes una opción para pedirle a Whatsapp toda la información que tienen sobre ti. No lo sé, pero me imagino que debería estar incluída en esta información todos los dispositivos con los que se accedió a tu cuenta.

Otra historia distinta son las bases de datos. Se pueden obtener los mensajes de unas 4 fomas distintas. Algunas tan sencillas como borrar datos, hacer copia, pega de la BD, cambiar el nombre del archivo y darle a restaurar. Depende de las versiones.
#1230
Cualquiera nombre que explique exactamente lo que esté dentro. Prefiero una frase para una clase que una palabra ambigua.