elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1] 2
1  Foros Generales / Sugerencias y dudas sobre el Foro / Repositorios publicos en: 19 Febrero 2012, 22:28 pm
Ultimamente, el uso de sistemas de control de versiones ha crecido muchisimo. Diria yo que servicios como Github han ayudado muchisimo. Y visto que en este foro hay muchos proyectos libres, podriamos fomentar la participacion con la formacion de un sitio para la creacion de repositorios aqui dentro de elHacker.

Es verdad que es un tema complicadito, basicamente porque elHacker es un foro y tal, pero sistemas como Git o Mercurial (SVN ya esta pasadito. Los repositorios ocupan demasiado en comparacion con Git o HG) ocupan poco, no se comen practicamente bando de ancha (no creo, vamos, por la naturaleza de ambos) y son distribuidos. Y esto lo digo porque hay proyectos en la Wiki que se han medio perdido por la falta de colaboracion y actualizacion.

Repito, no es facil, pero quizas con Git + CGit (visor de repositorios online) se puede llegar lejos. A parte que su aprendizaje es relativamente facil, desde mi punto de vista.

No se que pensais. Yo creo que es algo que con el tiempo, y de un modo bien administrado, puede llegar lejos.

Por cierto, es verdad que hay servicios online como Github, pero el problema que le veo yo es que no esta centralizado. Se podrian registrar todos los usuarios, pero faltaria ese toque de sal.

Es una simple propuesta. Si no gusta, pues ningun problema.
2  Programación / Desarrollo Web / Vuestras impresiones sobre Ruby On Rails en: 5 Diciembre 2011, 01:46 am
Muy buenas a todos,

Pues nada, que despues de un buen tiempo programando en escritorio y teniendo olvidado el PHP se me ocurrio mirar el ruby on rails y aprenderlo. me gustaria escuchar vuestras opiniones. desde fuera la verdad es que aparentemente se ve fantastico. el tema de los gems (ruby) lo veo muy bueno y con el rails, por lo que he leido, puedes desarrollar aplicaciones completas en muy poco tiempo. a parte que el tema de la escalabilidad esta practicamente resuelto.

No se que tal se integra con otros lenguajes como C (aunque creo que es posible programar plugins en C).

Si pudierais contarme vuestras experiencias la verdad es que me vendria genial. Temas de escalabilidad y tiempo de desarrollo si es posible. Aprenderlo creo que va a ser facil, ya conozco otros lenguajes.

un abrazo!

PD: Y si es posible (y sin meternos en una guerra), que ventajas tiene respecto PHP (aunque rails es un framework y php un lenguaje) y que desventajas. Solo una orientacion.
3  Sistemas Operativos / GNU/Linux / [PDF] The Linux Programming Interface en: 17 Agosto 2011, 22:25 pm
Este es el mejor libro que hay actualmente de Linux y os recomiendo que lo bajéis. Está en inglés. Muchos dicen que es la futura referencia de Linux, y no es para menos. Está supercompleto. Desde sockets a pipes, pasando por la creación de daemons... Y con poco texto pero entendible totalmente.

Basta ver en amazon las valoraciones para ver lo bueno que es. Lo he estado usando y para navidades me compro el que está en papel porque un libro como este se debe tener.



Uploaded with ImageShack.us


http://uploading.com/files/5bbd75c2/The%2BLinux%2BProgramming%2BInterface.pdf/

Disfrútenlo. Si le hacen un buen uso, no duden en comprarlo. Son muchas páginas y el autor debe ser remunerado ;)
4  Programación / Programación C/C++ / [Sockets] - Error en BIND en: 25 Abril 2011, 19:24 pm
Holas a todos,

Llevo bastante tiempo con un error que me da y no lo logro resolver. NO ES DE COMPILAR, porque me compila sin errores, sino que cuando ejecuto el programa me marca 'error en BIND', que es el IF que tengo puesto, pero creo que todo está bien. El código no está terminado del todo, porque estaba haciendo pruebas en aplicar la estructura storage en vez de una _in normal, pero hasta bind no deberia haber problema

Les dejo el código a ver si pueden ver algun error.

Código
  1. #include <iostream>
  2. #include <signal.h>
  3. #include <arpa/inet.h>
  4. #include <netdb.h>
  5. #include <netinet/in.h>
  6. #include <sys/wait.h>
  7. #include <sys/socket.h>
  8. #include <sys/types.h>
  9. #include <string.h>
  10. #include <errno.h>
  11. #include <unistd.h>
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. using namespace std;
  15.  
  16. int main()
  17. {
  18.    int desc_serv, desc_cliente //Descriptores;
  19.    int rv //Comprueba el estado de GETADDRINFO;
  20.    struct addrinfo structserv //Estructura usada en GETADDRINFO;
  21.    struct addrinfo *resultados //Estructura resultante de GETADDRINFO;
  22.    struct addrinfo structcliente //Estructura del CLIENTE;
  23.  
  24.    memset(&structserv, 0, sizeof (structserv));
  25.  
  26.  
  27.    structserv.ai_family = AF_UNSPEC;
  28.    structserv.ai_socktype = SOCK_STREAM;
  29.    structserv.ai_flags = AI_PASSIVE;
  30.  
  31.    //GetAddrInfo
  32.    if ((rv = getaddrinfo(NULL, "16969", &structserv, &resultados)) != 0)
  33.    {
  34.        cout << "Error en GETADDRINFO" << endl;
  35.        exit(1);
  36.    }
  37.  
  38.    //Socket
  39.    if ((desc_serv = socket(resultados->ai_family, resultados->ai_socktype, resultados->ai_protocol) == -1))
  40.    {
  41.        cout << "Error en SOCKET" << endl;
  42.        exit(1);
  43.    }
  44.  
  45.    //Bind
  46.    if (bind(desc_serv, resultados->ai_addr, resultados->ai_addrlen) == -1)
  47.    {
  48.        cout << "Error en BIND" << endl;
  49.        exit(1);
  50.    }
  51.  
  52.    //Listen
  53.    if ((listen(desc_serv, 10)) == -1)
  54.    {
  55.        cout << "Error en LISTEN" << endl;
  56.        exit(1);
  57.    }
  58.  
  59.    //Accept
  60.    if ((desc_cliente = accept(desc_serv, structcliente.ai_addr, 0)) == -1)
  61.    {
  62.        cout << "Error en ACCEPT" << endl;
  63.        exit(1);
  64.    }
  65.    else
  66.    {
  67.        cout << "¡Funciona!" << endl;
  68.    }
  69. }
  70.  

Un abrazo!
5  Programación / Programación C/C++ / [Problema] Conexión Sockets en: 31 Marzo 2011, 23:37 pm
Acabo de empezar con Sockets y generalmente entiendo todo, pero no logro arreglar un error en accept(), aun habiendo leído otros ejemplos. Agradecería muchísimo a quien pudiese echarme una mano, pues llevo un tiempo y no se que pasa. El ejemplo está ordenadito, así que no debería ser un problema entenderlo.

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <arpa/inet.h>
  9. #include <stdio.h>
  10.  
  11.  
  12. using namespace std;
  13.  
  14. int main()
  15. {
  16.    //Estructuras
  17.    struct sockaddr_in servidor;
  18.    struct sockaddr_in cliente;
  19.  
  20.    //Otras variables
  21.    int desc_cliente, desc_servidor;
  22.    int puerto = 3550, max_conex = 2, size;
  23.  
  24.    //Funcinn SOCKET
  25.    if (desc_servidor = socket(AF_INET, SOCK_STREAM, 0) == -1)
  26.    {
  27.        printf("Hubo un error en SOCKET");
  28.        exit (-1);
  29.    }
  30.  
  31.    //Estructura SOCKADDR_IN
  32.    servidor.sin_family = AF_INET;
  33.    servidor.sin_port = htons(puerto);
  34.    servidor.sin_addr.s_addr = INADDR_ANY;
  35.    memset(servidor.sin_zero, 0, 8);
  36.  
  37.    //Funcion BIND
  38.    if (bind(desc_servidor, (struct sockaddr*) &servidor, sizeof(struct sockaddr)) == -1)
  39.    {
  40.        printf("Error en BIND");
  41.        exit(-1);
  42.    }
  43.  
  44.    //Funcion listen
  45.    if (listen(desc_servidor, max_conex) == -1)
  46.    {
  47.        printf("Error en LISTEN");
  48.        exit(-1);
  49.    }
  50.  
  51.    //Bucle + accept
  52.    while (1)
  53.    {
  54.        size = sizeof(struct sockaddr_in);
  55.        if (cliente = accept(desc_servidor, (struct sockaddr *) &cliente, &size))
  56.        {
  57.            printf("Error en ACCEPT");
  58.            exit(-1);
  59.        }
  60.  
  61.        printf("Tienes una conexión de %s \n", inet_ntoa(cliente.sin_addr));
  62.  
  63.        send(desc_cliente, "Bienvenido al servidor \n", 22, 0);
  64.        close (desc_cliente);
  65.    }
  66.  
  67. }

Los errores que me marca son los siguientes:
Código
  1. /home/farresito/Documentos/project/main.cpp||In function ‘int main()’:|
  2. /home/farresito/Documentos/project/main.cpp|25|warning: suggest parentheses around assignment used as truth value|
  3. /home/farresito/Documentos/project/main.cpp|55|error: invalid conversion from ‘int*’ to ‘socklen_t*’|
  4. /home/farresito/Documentos/project/main.cpp|55|error:   initializing argument 3 of ‘int accept(int, sockaddr*, socklen_t*)’|
  5. /home/farresito/Documentos/project/main.cpp|55|error: no match for ‘operator=’ in ‘cliente = accept(desc_servidor, ((sockaddr*)(& cliente)), ((socklen_t*)(& size)))’|
  6. /usr/include/netinet/in.h|226|note: candidates are: sockaddr_in& sockaddr_in::operator=(const sockaddr_in&)|
  7. ||=== Build finished: 3 errors, 1 warnings ===|
  8.  

Otra cosilla, porque se hace el bucle? Para que hasta que no haga un accept no termine? No acabo de entenderlo...

Un abrazo de antemano. Muchas gracias por el soporte que me habéis dado hasta ahora.

Saludos
6  Programación / ASM / Gas con sintaxis intel: Undefined reference to... en: 11 Marzo 2011, 21:38 pm
Veréis,

Como el Visual c++ 2010 me daba problemas y me sentía mejor con CodeBlocks, decidí esta mañana probar pero no soluciono nada. El código es simple:

Código
  1. int numero = 0x12345;
  2.  
  3.    asm (".intel_syntax noprefix");
  4.    /*Instrucciones*/
  5.    asm ("mov eax, numero");
  6.    asm ("mov ebx, [numero]");
  7.    asm ("lea ecx, numero");
  8.    asm ("lea edx, [numero]");
  9.    /*Finalizacion instrucciones*/
  10.    asm (".att_syntax noprefix");
  11.  

El error que me da es el siguiente:
UNDEFINED REFERENCE TO 'NUMERO' (lines 12, 13, 14, 15)

Agredeceria un poco de ayuda por su parte. Se que estoy siendo algo pesado con algunas preguntitas pero es que no logro salir ¬¬

Un abrazo!

PD: Solo me da esos errores. Si pruebo en vez de numero un registro ningun problema :)
7  Programación / Programación C/C++ / Listas en C++ en: 9 Marzo 2011, 15:01 pm
Hola a todos,

Tengo una pequeña duda que no acabo de resolver; es muy simple, pero es por quitármela de encima. Tengo este código, que funciona perfectamente, pues lo he quitado del libro del que estoy estudiando, pero no logro entender una cosa concreta. El el código siguiente, cuando se declara la estructura STRUCT T_NODO *PRINCIPIO, si solo es un puntero que indica el inicio de toda la lista, no podria declarar una variable puntero normal que guardase la direccion de memoria del lugar donde se inicia la la lista?. Esto es lo que tengo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. struct t_nodo
  8. {
  9.    int numero; // Almacena los datos del nodo
  10.    t_nodo *siguiente; // Variable puntero a otra estructura t_nodo
  11. };
  12.  
  13. struct t_nodo *principio = NULL;
  14.  
  15.  
  16. int main (void)
  17. {
  18.    //Declaro la funcion; lo podria haber puesto todo junto pero da igual
  19.    void insertar_al_principio (struct t_nodo *&p);
  20.  
  21. }
  22.  
  23. void insertar_al_principio (struct t_nodo *&p)
  24. {
  25.    struct t_nodo *nuevo_nodo;
  26.  
  27.    // Creamos nuevo nodo
  28.  
  29.    nuevo_nodo = new struct t_nodo;
  30.  
  31.    // Rellenamos los campos de datos
  32.  
  33.    cout << "Escriba un numero: " << endl;
  34.    cin >> nuevo_nodo->numero;
  35.  
  36.    /* Insertamos el nuevo nodo al principio de la lista */
  37.    nuevo_nodo->siguiente = p;
  38.    p = nuevo_nodo;
  39. }
  40.  

Gracias de antemano. Un abrazo!
8  Programación / ASM / Gas Inline con Síntaxis Intel en: 7 Marzo 2011, 22:37 pm
Holas,

Estuve trasteando un poco con los ensambladores y la creación de OS y leyendo sobre el ensamblador GAS leí que si usas síntaxis intel en vez de AT&T los opcodes no estan tan optimizados en algunas ocasiones. Sabeis algo acerca de eso? La página a la que me refiero es la siguiente:

http://wiki.osdev.org/GAS

Un abrazo!
9  Programación / ASM / Diferencias resultado ensambladores (no, no es la pregunta clásica VS) en: 14 Diciembre 2010, 23:45 pm
Holas a todos,

Llevo unos días pensando en una cosilla que me tiene hasta ahí. La cosa es que por internet hay muchos VS entre tal ensamblador o tal otro. Si bien he leído mucho acerca de ello, mi pregunta es más concreta.

Cuando se ensambla con un ensamblador u otro ¿hay diferencia alguna entre el resultado de cada uno? Es decir, el resultado en binario será el mismo en todo los ensambladores o habrá alguno que difiera un poco.

¿Se puede 'optimizar' un ensamblador? Por ejemplo, supongamos que tenemos éste código, sacado de una web:
Código:
Game Port

;  GAMEPORT.ASM
;

        .MODEL TINY

        .DATA

        yes     DB      13,10,"Game port is installed.",13,10,"$"
        no      DB      13,10,"Game port is not installed.",13,10,"$"

        .CODE
        ORG 100h

start:  mov     al, 1           ;value to write to port
        mov     dx, 201h        ;port number
        out     dx, al          ;write to port
        mov     cx, 0F00h       ;# of loops

port_loop:
        in      al, dx          ;read from port
        and     al, 0Fh         ;if jstick present, then AL should be
        cmp     al, 0Fh         ; 0Fh after ANDing with 0Fh.
        je      jstick_exists
        loop    port_loop
        mov     dx, OFFSET no   ;gameport not installed
        jmp     SHORT done

jstick_exists:                 
        mov     dx, OFFSET yes  ;gameport installed

done:   mov     ah, 9h
        int     21h

        mov     ax, 4c00h
        int     21h

END     start

El resultado en binario será el mismo en cada ensamblador (usando, por supuesto, el mismo linker)?

Es este aspecto el que hace un ensamblador 'mejor' o 'peor' que otro o solo es los formatos que acepta, los macros... etc.

¡Un abrazo! Agradezco de antemano sus respuestas :)
10  Programación / ASM / Punteros ensamblador 16 bits en: 27 Agosto 2010, 03:08 am
Holas de nuevo,

Se ve que mi aprendizaje en ensamblador va muy justito, y vuelvo a tener problemas  :-\

Es muy sencilla mi pregunta, espero no molestaros:

En el libro comentan que el puntero, lógicamente está compuesto por la dirección y el desplazamiento, que ambos tienen un tamaño de 16 bits (sigo teniendo dudas sobre como usar el desplazamiento ). En este caso con solo usar el puntero normalmente ya vale pero en el caso de 16 bits, no se podria usar (mas bien dicho mover) directamente, pues solo transfeririamos una de las dos cosas, si no me equivoco. En el me proponen este ejemplo:

Código:
mov bx, pnum
mov ax, pnum+2
mov ds, ax

Que es lo mismo que la que lleva a cabo LDS, LFS... Pero quiero quitarme las dudas. Porque se efectua +2? Que le pasa a la memoria?

Gracias! Saludos!
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines