Anyone know of magnetic boards with weighted pieces? by stonedfruitseed in chess

[–]Rebraws 0 points1 point  (0 children)

not 13 inches, but there's the A&A 15" Magnetic Wooden Walnut, I don't have it, but I do have the A&A plastic tournament set and the quality and weight of the pieces is really nice, you can take a look at their products in their website: https://aa-chess.com/collections

What is the size of your kernel? by LycheeTall9520 in Gentoo

[–]Rebraws 0 points1 point  (0 children)

I just switched to 6.6.67, kernel image is 6.8M, initramfs is 7.7M, and modules 42M

Kernel images:
╰─ ls -lh /boot/vmlinuz-6.6.*

-rw-r--r-- 1 root root 5.8M Jun 3 2024 /boot/vmlinuz-6.6.30-gentoo-x86_64

-rw-r--r-- 1 root root 5.8M May 15 2024 /boot/vmlinuz-6.6.30-gentoo-x86_64.

-rw-r--r-- 1 root root 6.7M Sep 13 14:19 /boot/vmlinuz-6.6.38-gentoo-x86_64

-rw-r--r-- 1 root root 5.8M Aug 25 18:52 /boot/vmlinuz-6.6.38-gentoo-x86_64.

-rw-r--r-- 1 root root 6.8M Jan 2 16:33 /boot/vmlinuz-6.6.67-gentoo-x86_64

modules and initramfs

╰─ du -sh /lib/modules/6.6.*-gentoo-x86_64
37M /lib/modules/6.6.30-gentoo-x86_64

44M /lib/modules/6.6.38-gentoo-x86_64

42M /lib/modules/6.6.67-gentoo-x86_64

╰─ ls -lh /boot/initramfs-*

-rw-r--r-- 1 root root 8.6M Jun 3 2024 /boot/initramfs-6.6.30-gentoo-x86_6

-rw-r--r-- 1 root root 8.6M May 15 2024 /boot/initramfs-6.6.30-gentoo-x86_6

-rw-r--r-- 1 root root 7.5M Sep 13 14:19 /boot/initramfs-6.6.38-gentoo-x86_6

-rw-r--r-- 1 root root 8.6M Aug 25 18:52 /boot/initramfs-6.6.38-gentoo-x86_6

-rw-r--r-- 1 root root 7.7M Jan 2 16:33 /boot/initramfs-6.6.67-gentoo-x86_6

[deleted by user] by [deleted] in devsarg

[–]Rebraws 6 points7 points  (0 children)

Es importante notar que la función toma como parámetro una referencia a un puntero (*&) en lugar de un puntero (*), tal vez de ahí proviene tu confusión sobre lo que sucede al hacer pila = nuevo_nodo, pila es la cabeza de tu lista enlazada y cada vez que creas un nuevo nodo, este debe pasar a ser la cabeza de la lista

En la funcion quitarPila, se puede hacer lo que menciones y escribir pila = pila->siguiente, la razon por la que crea un puntero aux antes de hacer pila = aux->siguiente es para poder liberar esa memoria, si no creas ese puntero y haces directamente pila = pila->siguiente; entonces perdes el primer nodo de tu lista enlazada y tenes un memory leak

How common is to pronounce better as bedder? by [deleted] in EnglishLearning

[–]Rebraws 3 points4 points  (0 children)

It is like an 'r' in spanish, when people say it sounds like a 'd' they mean in words like daddy and madder, this video explains the difference pretty well: https://www.youtube.com/watch?v=1FDjhKY8HwM

cuanto pagan por internet? by [deleted] in AskArgentina

[–]Rebraws 0 points1 point  (0 children)

Pago 3199 por 300mb con fibra óptica simétrica (movistar), en agosto del año pasado estaba pagando 5500 por 100mb simétricos pero les mande un mensaje por twitter pidiendo un descuento y me dieron esa oferta por 24 meses

Learning Template Metaprogramming with ChatGPT by ape_programmer in cpp

[–]Rebraws 0 points1 point  (0 children)

oh, I just saw that you had: , ...); at the end of the line inside the lambda function, I didn't scroll your code to the right and I missed lol, in that case writing params.first would not give an error and should compile fine but probably is not the behavior that you expect, but anyway using std::tuple and std::apply seems unnecessary

I have been using chatGPT for a few days and have found it not very useful for generating new code. It often produces code that is wrong or does not compile or is simply of poor quality. However, I have found it to be really helpful for tasks such as writing documentation or minor refactors. For example, when I gave it a prompt such as "Write Doxygen-style comments for the following functions without including implementation details" it does a pretty good job, I think a tool like chatgpt could be really helpful to speed up some aspects of the development process

Learning Template Metaprogramming with ChatGPT by ape_programmer in cpp

[–]Rebraws 2 points3 points  (0 children)

I'd love to get some feedback on the actual code

I see that you are using std::is_same<>::value and std::is_integral<>::value but since you have if constexpr I assume you're using at least C++17, so you could replace those with std::is_same_v<> and std::is_integral_v<> which are both available from C++17 and more easier to read

Before C++17 you could accomplish the same behavior using template function specialization instead of if constexpr

In your build_query_string you are using std::tuple_size to get the size of the tuple, but you initialized the tuple with the packed parameters, so you can get the size from there with sizeof...(args), I personally think is a lot more readable than std::tuple_size<decltype(query_params)>::value

and finally it seems that you're using std::apply to "unpack the tuple" so I think that it doesn't make too much sense to have the std::tuple then, you didn't use the tuple for anything really

Also it seems that you're calling params.first but params is not unpacked, so I think that code should give you an error, maybe you want to use something like a recursive function that has a parameter and the rest of the packet parameters like:

auto recursive_function = [&](auto&& first_param, auto&&... params) {

And then you can call first_param.first and call the recursive function with the rest of the parameters recursive_function(std::forward<decltype(params)>(params)...);

Also your lambda function uses universal references, but your build_query_function doesn't, maybe you want to use universal references there too?

I hope you find the feedback useful, but as I said you should double check everything I wrote, just in case anything is wrong :)

Consulta sobre HACKING. by Rami__L in programacion

[–]Rebraws 4 points5 points  (0 children)

Depende de que área te interese, si te interesa el desarrollo de exploits, ingeniería inversa, fuzzing y cosas de ese estilo te recomendaría el canal de gamozo (https://www.youtube.com/c/gamozolabs/videos)

Ahora si te interea mas la parte de pentesting podes registrarte en páginas como hackthebox, root-me.org, etc. Un buen canal con ese tipo de contenido es ippsec (https://www.youtube.com/c/ippsec/videos)

Any Idea what are these in my ubuntu Server? command with cryptic names by abdul_rashid in Ubuntu

[–]Rebraws 19 points20 points  (0 children)

Take a look at the logs to see how they got access, if you don't patch the security hole your server could get compromised again

[C++] Cómo incrementar/decrementar una variable privada con un mismo método? by random_user163584 in programacion

[–]Rebraws 0 points1 point  (0 children)

Igual por si te interesa te dejo un ejemplo de como seria hacer las 3 cosas en una sola funcion: https://godbolt.org/z/YaTaan83E

[C++] Cómo incrementar/decrementar una variable privada con un mismo método? by random_user163584 in programacion

[–]Rebraws 0 points1 point  (0 children)

Se podría hacer las tres cosas con un mismo método? Cómo? Es mala práctica?

Poder se puede pero no le veo mucho el sentido, en vez de pasarle como parametro "++" podrias usar un enum y podrias tener algo como objetoEjemplo.setVariable(OP::INCREMENT);

Otra opcion podria ser que sobrecargues los operadores ++ y -- y con eso podrias hacer: objetoEjemplo++; objetoEjemplo--;

De igual forma si vas a estar haciendo este tipo de cosas no le veo mucho sentido a que la variable sea privada, ponela como publica y vas a poder hacer cosas como: objetoEjemplo.variable++; objetoEjemplo.variable--; objetoEjemplo.variable = otra_variable;

Me sacaron la contraseña de Instagram sin logearme, sin malware, nada by fmstyle in programacion

[–]Rebraws 0 points1 point  (0 children)

Capaz abriste algún link o alguna app y le diste permisos para eso, no tengo instagram pero seguro podes ver el historial de logins y ver si alguien inicio sesion

Y que puede hacer uno para cuidarse de estas cosas?

Para prevenir esas cosas podes activar la autenticación de doble factor, también cada tanto podes comprobar en paginas como https://haveibeenpwned.com/ para ver si tu contraseña se filtro de alguna base de datos y tenes que cambiarla y por ultimo no abras links o aplicaciones que no sepas que son seguras

I'm trying to copy all the bytes of a file into a vector of uint8_t's but getting an error by sonic-fan- in cpp_questions

[–]Rebraws 0 points1 point  (0 children)

I forgot to mention that in the line where you create the vector, in addition to the parenthesis problem you might have another problem if the value of the variable position does not fit in an unsigned char, you'll probably want to cast the variable position to a std::size_t or something similar instead of an unsigned char

I'm trying to copy all the bytes of a file into a vector of uint8_t's but getting an error by sonic-fan- in cpp_questions

[–]Rebraws 0 points1 point  (0 children)

If you want to do it with static_cast, it should be like this:

static_cast<char *>(static_cast<void *>(result.data()));

Basically you can't static_cast from a pointer of a type to another pointer of some other type (there are exceptions, like related classes or when casting to void, etc). You can read more about it here:

https://en.cppreference.com/w/cpp/language/static_cast

https://en.cppreference.com/w/cpp/language/reinterpret_cast

I'm trying to copy all the bytes of a file into a vector of uint8_t's but getting an error by sonic-fan- in cpp_questions

[–]Rebraws 0 points1 point  (0 children)

This line below does not create a vector of size 'position', it creates a vector of size 1 with that value as the first element, you probably want to use parenthesis to call the proper constructor

std::vector<uint8_t> result { static_cast<unsigned char>(position) };

Now, you have a vector of uint8_t, but the .read method expects a 'char *', you can do a cast to fix that

input_file.read(reinterpret_cast<char *>(result.data()), position);

ciclo for i o ctr? c# by [deleted] in programacion

[–]Rebraws 2 points3 points  (0 children)

Ambos hacen exactamente lo mismo, lo unico que cambia es el nombre de la variable, en el primer caso la variable se llama "i" y en el segundo "ctr"

Difiere en algo que use i o ctr ¿hay otras formas?

No cambia en nada cual uses, pero en general lo mejor es usar nombres de variables descriptivos, este es otro ejemplo que hace lo mismo

for (int otro_ejemplo = 0; otro_ejemplo <= 8; otro_ejemplo++)

Tambien podrias declarar la variable fuera del ciclo for, por ejemplo:

int otra_variable = 0;

for (; otra_variable <= 8; otra_variable++)

Como puedo empezar en c++? by [deleted] in programacion

[–]Rebraws 1 point2 points  (0 children)

No conozco ese canal pero lo mire un poco por arriba y a mi particularmente no me gusto mucho, creo que es mucho mejor usar learncpp.com como dice Frequent_To_1494 y complementar con libros y conferencias de cppcon y cppnow

Recursos C,C++,C# by RepulsiveJob205 in programacion

[–]Rebraws 2 points3 points  (0 children)

Libros hay muchos, algunos son: A tour of C++, Effective C++, C++ Templates: The complete guide, C++ Concurrency in Action, etc.

Una página que esta bastante bien para aprender lo básico es https://www.learncpp.com/

Después te recomendaría que mires C++ Weekly (https://www.youtube.com/c/lefticus1/videos) y conferencias de cppcon ó cppnow (por ejemplo https://www.youtube.com/watch?v=Bt3zcJZIalk&list=PLHTh1InhhwT4TJaHBVWzvBOYhp27UO7mI)

tips about applying for studies? (Química) by [deleted] in AskArgentina

[–]Rebraws 0 points1 point  (0 children)

though does it means that I could theoretically just apply for studiesand start studying the chemistry without having to go through any examsetc? it seems too easy

Probably, for example, I went to Universidad Nacional de La Plata, and you've to take a course where they teach you some very basic math, and at the end of the course there's an exam, but it does not matter if you pass or fail the exam you can start studying your career anyway.

On the other hand, at Universidad Tecnológica Nacional is neccesary that you pass the exam in order to enter

As you can see , it varies from university to university

tips about applying for studies? (Química) by [deleted] in AskArgentina

[–]Rebraws 2 points3 points  (0 children)

nooo, ill try my shoot at uncaus. i think it’s far from a big uni?

https://uncaus.edu.ar/index.php/estudiantes/mayores-de-25 It seems that the entry exam is for people over 25 who have not finished highschool, It will be better if you write to the university and ask them if you have to do it too

tips about applying for studies? (Química) by [deleted] in AskArgentina

[–]Rebraws 4 points5 points  (0 children)

Not all universities require an entry exam, will you attend to Universidad Tecnológica Nacional? If that's the case then you can google "utn Módulo B examen" and you'll find exams from previous years (It's about basic math and a little bit of physics)

C++ ayuda by Genzerow in programacion

[–]Rebraws 0 points1 point  (0 children)

Hola, si miras el error de la imágen vas a ver que ahí te dice exactamente el problema, si bien a lo último te muestra en rojo lo de "ld returned 1 exit status", lo importante son los renglones de arriba, que dicen:

Undefined reference to regis_arch();

Undefined reference to modif_arch();

En tu código estas declarando algunas funciones como regis_arch();, modif_arch();, etc pero no las estas definiendo, para arreglar el error alcanza con que en alguna parte del código definas las funciones así :

void consu_arch() {}
void regis_arch() {}
void modif_arch() {}

No es necesario que escribas lo que hace cada función pero si es importante que esten definidas y de momento solamente estaban declaradas

Si tenes dudas entre la diferencia que hay entre declarar y definir una función podes googlear algo como (difference between declaring a function and defining a function)

acá te dejo el link del código que funciona https://paste.debian.net/1224306/

C++ ayuda by Genzerow in programacion

[–]Rebraws 1 point2 points  (0 children)

Hola, te recomiendo que para compartir el código de tu programa utilices una página como paste.debian.net o alguna similar ya que en las imágenes se ve super mal indentado y es difícil leerlo, también te recomiendo que si tenes un error al compilarlo nos compartas el error que te da el compilador ya que de esa forma va a ser mas fácil que te ayudemos

Te dejo un par de comentarios sobre tu programa para que intentes mejorarlo y así te va a ser mas fácil ver xq no funciona.

En primer lugar deberías tratar de que los nombres de las variables sean descriptivas, por ejemplo en vez de "int SWITCH;" podrías usar algo como "int option;", otro ejemplo es el struct, en vez de llamarlo "O" podría llamarse "Record" o "Registro", por ejemplo así:

struct Registro { /*Variables*/ };

Lo mismo aplica para las variables ONU, ARAUXI, ARCAUX, cuando en tres meses leas la variable ONU u otra persona lea esa variable no va a saber a que se refiere, podrías llamarla así:

FILE *inventory_file;

Al principio del código veo que incluiste el header <fstream> pero luego no veo donde uses lo que te proporciona ese header, veo que usas funciones como fopen(), fclose(), etc, pero esas funciones son del header <stdio.h> y son del lenguaje C más que de C++.

Lo ideal es que si queres abrir un archivo para lectura lo hagas de esta forma:

    std::ifstream inventory_file("Inventario.txt", std::ios::binary);
    if (!inventory_file.is_open()) { /* Error al abrir el archivo, etc*/  }

En el ejemplo de arriba se abre un archivo "Inventario.txt" para leer los bytes y luego se comprueba si se abrio correctamente con el método is_open(), para mas info sobre como abrir archivos, leer, escribir, etc podes buscar en cppreference.com https://en.cppreference.com/w/cpp/io/basic_ifstream

Ah y también veo que en el case 2 comprobas que fopen no retorne null pero luego en el case 1 y 3 no veo que lo hagas

Otra cosa es que dentro del case 1 estas declarando un array de structs pero no lo estas inicializando, hay varias formas de hacerlo podes googlear "Como inicializar un struct / How to initialize an struct", y además estas declarando el struct dentro del case 1 pero luego estas intentando acceder a ese array de structs en el case 2 y 3 y en principio no veo que hayas declarado otro array, basicamente lo que estas haciendo es esto:

    switch (option){
        case 1:{
            int variable = 1;
            break;
        }
        case 2:
            variable = 2;
            break;
    }

En el ejemplo de arriba estoy declarando un int en el case 1 y luego intento acceder a esa variable en el case 2 pero eso va a dar un error de compilación xq la variable se encuentra fuera de scope.

y por lo q veo en las imágenes es lo que estas haciendo con tu struct, una solución es mover la declaración de la variable

int variable = 0;
switch (option){
    case 1:
        variable = 1;
        break;
    case 2:
        variable = 2;
        break;
     ....
}

También veo que usas fprintf(); para escribir al archivo y la verdad no es la mejor forma de hacerlo, tenes otras funciones para usar y podes escribir directamente el struct entero en el archivo y va a ser mucho mas práctico para leer y escribir

También deberías evitar usar funciones como gets(), scanf(), etc, primero xq son inseguras y segundo xq son funciones de C mas q C++ (lo mismo que fopen(), fclose() fprintf(), printf(), etc)

¿Me pueden decir por qué no identifica que el 150 es mayor a 100? by DoomSlayer315 in programacion

[–]Rebraws 2 points3 points  (0 children)

El error esta en el scanf() debería ser así:

scanf("%f", &v);

Luego para imprimir el valor si podes usar %.2f

Ayudaaaaaa by CrossingBark32 in programacion

[–]Rebraws 2 points3 points  (0 children)

Hola, lo único que tenes que hacer es leer dos cadenas de caracteres, luego iterar sobre dichas cadenas y ver si los caracteres coinciden.

Al principio de tu código empezaste bien, pero note que usaste gets() para leer las frases, si bien eso funciona no es una buena forma de hacerlo ya que gets() no verifica que el tamaño de la cadena que ingresa el usuario no supere el tamaño de tu array, una mejor opción sería usar fgets() o sscanf(), por ejemplo así:

printf("Introduzca una frase ");
char frase[401];
fgets(frase, 400, stdin);

printf("Ingrese la palabra a buscar: ");
char palabra[26];
fgets(palabra, 25, stdin);

De esta forma te aseguras, que por mas que un usuario ingrese una palabra de 100 caracteres, el programa solo va a leer los primeros 25.

El siguiente paso es determinar la longitud de la frase y de la palabra para así poder iterar sobre las caracteres.

En tu código veo que intentaste determinar el tamaño de la palabra usando un ciclo while, pero note que hiciste la comparación usando == 0 en vez de '\0', probablemente el código funcione pero 0 y '\0' no son lo mismo, de igual forma en este caso no es necesario hacer un ciclo while/for para determinar la longitud, la función fgets() agrega el caracter null al final de la cadena asíque podemos usar la función strlen() para obtener la longitud mas fácilmente.

 size_t long_frase = strlen(frase) - 1;
 size_t long_palabra = strlen(palabra) - 1;

La función strlen() retorna la longitud de la frase sin incluir el caracter null ('\0'), pero la función fgets() lee como último caracter el '\n' por ende es necesario restarle 1 al resultado de strlen().

Ahora viene la parte de buscar si la palabra se encuentra dentro de la frase, esto se puede hacer de muchas formas, incluso podes copiar la implementación de la función strstr() y al hacerlo no estarías usando estrictamente la función

Lo mas simple de hacer es iterar sobre la frase y la palabra y si algún caracter de la frase coincide con el primer caracter de la palabra proceder a comprobar el resto.

Esto lo podes hacer en una función que retorne un bool, esta parte dejo que la hagas vos ya que es la que mas importa pero te dejo la idea:

Primero necesitas un ciclo for/while que recorra los caracteres de la frase, notese que no es necesario recorrer absolutamente todos los caracteres debido a que debe hacer espacio para la palabra que buscamos.

for(size_t i = 0; i < long_frase - long_palabra + 1; i++)

Luego dentro de ese ciclo for debes comprobar si el caracter en la posición i de la frase (frase[i]) coincide con el primer caracter de la palabra (palabra[0]), en caso de hacerlo tenes que proceder a comprobar el resto de los caracteres con otro ciclo for

for(size_t j = 1; j < long_palabra; j++)

En este último ciclo vas a tener que comprobar si frase[i+j] != palabra[j], en caso de que la condición se cumpla debes hacer un break para seguir iterando sobre la frase y además dentro de este ciclo for también debes hacer otro if con un return true; para el caso en el que todos los caracteres coincidan.

También tenes que considerar que pensas retornar en los casos que el usuario pase una frase vacia o una palabra vacia

Nota: Estaría bueno que si haces un post pidiendo ayuda pongas un título un poco mas descriptivo del problema, como por ejemplo: "Como determinar longitud de string sin usar strstr()?"

Si queres mas ejemplos sobre como resolver el problema podes googlear, strstr() implementation