Junio 22, 2018, 05:00:23 am

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Avoidance25

Páginas: [1] 2 3 ... 100
1
Redes / Re:¿Como desactivar el cliente DHCP?
« en: Octubre 09, 2014, 05:28:43 pm »
Gracias por las respuestas :D

Quiero configurar todo (ip, gateway, mac del router, iptables, resolv.conf) de manera estática con un script que se ejecute al iniciar debian. Sobre todo para evitar ataques de arp-poisoning y de DHCP falsos, porque estoy en una red con gente que no conozco.

Probé lo de tener la interface como "static" ademas del script (que hace lo mismo entre otras cosas) y me fuciono perfectamente :) .

Aun así, me parece mas limpia la solución dejar la interfase como "iface eth0 inet manual" y agregar "ip l set eth0 up" al principio de mi script (no tenia idea de que esta opción existe al hacer el post).

 :cura:

2
Redes / ¿Como desactivar el cliente DHCP?
« en: Octubre 09, 2014, 02:29:26 am »
Necesito desactivar el cliente DHCP de mi computadora, de tal manera que luego de cargarse todo el sistema operativo mi IP y my gateway sean cargados del archivo "/etc/network/interfaces", o se queden sin configurar si dicho archivo no contiene la configuración correspondiente. Prefiero no desinstalar el cliente DHCP por si me quiera conectar a otra red en el futuro.

Intenté comentar todo el contenido de "/etc/dhcp/dhclient.conf", pero no me da resultado (al parecer mi computadora carga la configuración del archivo "/etc/network/interfaces", pero si este está vacío usa la configuración que me da el router.)

No encuentro el cliente DHCP ni en "/etc/init.d/" ni en "/etc/rc?.d":

Código: You are not allowed to view links. Register or Login
user@pc:~$ ls /etc/init.d/
acpid                   kbd                    rc.local
alsa-utils              keyboard-setup         rcS
anacron                 killprocs              README
atd                     kmod                   reboot
avahi-daemon            lightdm                rmnologin
bluetooth               lm-sensors             rpcbind
bootlogs                minissdpd              rsyslog
bootmisc.sh             motd                   saned
checkfs.sh              mountall-bootclean.sh  sendsigs
checkroot-bootclean.sh  mountall.sh            single
checkroot.sh            mountdevsubfs.sh       skeleton
console-setup           mountkernfs.sh         sudo
cron                    mountnfs-bootclean.sh  udev
dbus                    mountnfs.sh            udev-finish
exim4                   networking             umountfs
halt                    network-manager        umountnfs.sh
hddtemp                 nfs-common             umountroot
hdparm                  pppd-dns               urandom
hostname.sh             procps                 virtualbox
hwclock.sh              rc                     x11-common

Código: You are not allowed to view links. Register or Login
user@pc:~$ ls /etc/rc?.d
/etc/rc0.d:
K01alsa-utils  K01minissdpd        K03sendsigs      K07networking
K01atd         K01network-manager  K04rsyslog       K08umountfs
K01bluetooth   K01saned            K05umountnfs.sh  K09umountroot
K01exim4       K01urandom          K06nfs-common    K10halt
K01hddtemp     K01virtualbox       K06rpcbind       README
K01lightdm     K02avahi-daemon     K07hwclock.sh

/etc/rc1.d:
K01alsa-utils  K01hddtemp          K01saned         K06nfs-common  S01killprocs
K01atd         K01lightdm          K01virtualbox    K06rpcbind     S01motd
K01bluetooth   K01minissdpd        K02avahi-daemon  README         S02single
K01exim4       K01network-manager  K04rsyslog       S01bootlogs

/etc/rc2.d:
README        S01rsyslog     S02atd    S02hddtemp       S03network-manager
S01bootlogs   S01virtualbox  S02cron   S03avahi-daemon  S04saned
S01minissdpd  S02acpid       S02dbus   S03bluetooth     S05rc.local
S01motd       S02anacron     S02exim4  S03lightdm       S05rmnologin

/etc/rc3.d:
README        S01rsyslog     S02atd    S02hddtemp       S03network-manager
S01bootlogs   S01virtualbox  S02cron   S03avahi-daemon  S04saned
S01minissdpd  S02acpid       S02dbus   S03bluetooth     S05rc.local
S01motd       S02anacron     S02exim4  S03lightdm       S05rmnologin

/etc/rc4.d:
README        S01rsyslog     S02atd    S02hddtemp       S03network-manager
S01bootlogs   S01virtualbox  S02cron   S03avahi-daemon  S04saned
S01minissdpd  S02acpid       S02dbus   S03bluetooth     S05rc.local
S01motd       S02anacron     S02exim4  S03lightdm       S05rmnologin

/etc/rc5.d:
README        S01rsyslog     S02atd    S02hddtemp       S03network-manager
S01bootlogs   S01virtualbox  S02cron   S03avahi-daemon  S04saned
S01minissdpd  S02acpid       S02dbus   S03bluetooth     S05rc.local
S01motd       S02anacron     S02exim4  S03lightdm       S05rmnologin

/etc/rc6.d:
K01alsa-utils  K01minissdpd        K03sendsigs      K07networking
K01atd         K01network-manager  K04rsyslog       K08umountfs
K01bluetooth   K01saned            K05umountnfs.sh  K09umountroot
K01exim4       K01urandom          K06nfs-common    K10reboot
K01hddtemp     K01virtualbox       K06rpcbind       README
K01lightdm     K02avahi-daemon     K07hwclock.sh

/etc/rcS.d:
README               S08checkroot-bootclean.sh  S14nfs-common
S01hostname.sh       S08kmod                    S15mountnfs.sh
S01mountkernfs.sh    S09mountall.sh             S16mountnfs-bootclean.sh
S02udev              S10mountall-bootclean.sh   S17kbd
S03keyboard-setup    S11pppd-dns                S18console-setup
S04mountdevsubfs.sh  S11procps                  S19alsa-utils
S05hdparm            S11udev-finish             S19bootmisc.sh
S05hwclock.sh        S11urandom                 S19lm-sensors
S06checkroot.sh      S12networking              S19x11-common
S07checkfs.sh        S13rpcbind

 :cura:

3
Código Abierto C / C++ / Re:Mandelbrot set
« en: Agosto 09, 2014, 10:03:44 am »

Lo óptimo sería hacer infinitas iteraciones, 256 es un valor razonable que no hace que el programa sea excesivamente lento pero aun así dé una representación gráfica aproximada acceptable.

Aun con 256 iteraciones, se empiezan a ver errores en la representación gráfica al acercar mucho la imagen. Si queres tener una mejor idea de como esta constante afecta a la imagen te sujiero reducir su valor y observar los cambios.

En la wikidedia encontré este gif que muestra el conjunto de mandelbrot aproximado con distintas cantidades de iteraciones:


 :cura:

4
Código Abierto C / C++ / Re:Mandelbrot set
« en: Agosto 05, 2014, 08:58:03 am »
Este video lo explica muy bien, pero está en ingles: You are not allowed to view links. Register or Login
Es de hecho el video que me dió la idea de hacer este programa, y el video que me enseño que es el conjunto de mandelbrot (la definición matematica).

Basicamente el conjunto de mandelbrot es un subconjunto de los numeros complejos. La imagen es la representacion de este conjunto en un plano cartesiano: El area blanca es el area donde los puntos estan dentro del conjunto, y el area negra es el area que esta fuera del conjunto.

El algoritmo calcula para cada pixel si el punto esta dentro o fuera del conjunto. Lo hace de manera iterativa, y si dentro de 256 iteracionas no puede probar que el punto está fuera del conjunto le da al pixel el color blanco. En caso de que el punto esté fuera del conjunto, le da al pixel un tono de cian que depende de cuantas iteraciones fueron necesarias para probar que el punto está fuera del conjunto.

El codigo es algo largo y complicado por algunas optimizaciones que hice, pero basicamente hace esto para cada pixel:
Código: You are not allowed to view links. Register or Login
coord_x=(x-screen_center_x-center_x)*step; //calcula a que coordenana corresponde el pixel
coord_y=(y-screen_center_y-center_y)*step; //calcula a que coordenana corresponde el pixel
mandelbrot_number=mandel_iteration(coord_x, coord_y); //devuelve la proporcion de iteraciones que fueron necesarias (#iteraciones/256)
if(mandelbrot_number==1) putpixel(screen, x, y, white); //Si luego de 256 iteraciones no se pudo probar que el pixel esta fuera del conjunto -> el pixel recibe el color blanco
else putpixel(screen, x, y, SDL_MapRGB(screen->format, 0, 255*mandelbrot_number, 255*mandelbrot_number)); //Si hicieron falta menos de 256 iteraciones, el tono de cian depende de la cantidad de iteraciones que fueron necesarias

Al iniciar el programa el centro de la pantalla está en el centro del plano cartesiano, y cada pixel tiene un largo (y ancho) de 0.00390625 unidades.

 :cura:

5
Código Abierto C / C++ / Mandelbrot set
« en: Julio 25, 2014, 03:55:10 pm »
El programa calcula el conjunto de Mandelbrot y lo visualiza.
Las teclas "Re Pag" y "Av Pag" acercan y alejan la imagen, y las teclas de direccion mueven la imagen. Para salir hay que apretar escape.

Cada vez que uno acerca o aleja la imagen el programa tiene que calcular toda la pantalla, pero al mover la imagen el programa solo vuelve a calcular la parte que antes no estaba en la pantalla.

Si no lo quieren compilar, les dejo el ejecutable: You are not allowed to view links. Register or Login

EDIT: Dejo dos imagenes (las tome con "imprimir pantalla"), una de las cuales ahora uso como fondo de pantalla :D





Código: You are not allowed to view links. Register or Login
#include <SDL/SDL.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

inline void assert(bool condition, const char *str)
{
    if(condition) return;
    puts(str);
    exit(EXIT_FAILURE);
}

void putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
{
    int bpp = surface->format->BytesPerPixel;
    /* Here p is the address to the pixel we want to set */
    Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;

    switch(bpp) {
    case 1:
        *p = pixel;
        break;

    case 2:
        *(Uint16 *)p = pixel;
        break;

    case 3:
        if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
            p[0] = (pixel >> 16) & 0xff;
            p[1] = (pixel >> 8) & 0xff;
            p[2] = pixel & 0xff;
        } else {
            p[0] = pixel & 0xff;
            p[1] = (pixel >> 8) & 0xff;
            p[2] = (pixel >> 16) & 0xff;
        }
        break;

    case 4:
        *(Uint32 *)p = pixel;
        break;
    }
}

double length(double x, double y)
{
    return sqrt(x*x+y*y);
}

//inline void mandelbrot_function(double cx, double cy, double &retx, double &rety)
//{
//    double retx_aux;
//
//    retx_aux=retx*retx-rety*rety+cx;
//    rety=rety*retx+retx*rety+cy;
//    retx=retx_aux;
//}

inline void mandelbrot_function(double cx, double cy, double *retx, double *rety)
{
    double retx_aux;

    retx_aux=(*retx)*(*retx)-(*rety)*(*rety)+cx;
    *rety=(*rety)*(*retx)+(*retx)*(*rety)+cy;
    *retx=retx_aux;
}

const unsigned int max_mandelbrot_iteration=256;
double mandel_iteration(double x, double y)
{
//    return length(x,y)<1?1:0;
    double retx, rety;
    retx=rety=0;
    for(unsigned int i=0;i<max_mandelbrot_iteration;i++)
    {
        mandelbrot_function(x,y,&retx,&rety);
        if(length(retx,rety)>2) return i/(double)max_mandelbrot_iteration;
    }
    return 1;
}


int main ( int argc, char** argv )
{
    const unsigned int screen_width=800;
    const unsigned int screen_height=600;
    const int screen_center_x=(int)screen_width/2;
    const int screen_center_y=(int)screen_height/2;
    int center_x=0, fromx, tox;
    int center_y=0, fromy, toy;
    double step=.00390625;
    double mandelbrot_number;
    bool done, first;
    double coord_x, coord_y;
    bool keys[324];
    char title_buffer[256];
    for(int i=0;i<324;i++) keys[i]=false;

    assert(SDL_Init(SDL_INIT_VIDEO)>=0, "ERROR: Unable to init SDL.");
    atexit(SDL_Quit);
    SDL_Surface* screen = SDL_SetVideoMode(screen_width, screen_height, 32, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
    assert(screen, "ERROR: Unable to set ???x??? video.");
    sprintf(title_buffer, "Mandelbrot, step: %.16f", step);
    SDL_WM_SetCaption(title_buffer, 0);
//    SDL_WM_SetCaption("Mandelbrot", 0);
    const Uint32 black=SDL_MapRGB(screen->format, 0, 0, 0);
    const Uint32 white=SDL_MapRGB(screen->format, 255, 255, 255);

    done=false;
    first=true;
    while (!done)
    {
        SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
            case SDL_QUIT:
                done = true;
                break;
            case SDL_KEYDOWN:
                keys[event.key.keysym.sym]=true;
                if(event.key.keysym.sym == SDLK_ESCAPE) done = true;
                break;
            case SDL_KEYUP:
                keys[event.key.keysym.sym]=false;
                break;
            }
        }

        if(first)
        {
            first=false;
            for(int x=0;x<(int)screen_width;x++) for(int y=0;y<(int)screen_height;y++)
            {
                coord_x=(x-screen_center_x-center_x)*step;
                coord_y=(y-screen_center_y-center_y)*step;

                mandelbrot_number=mandel_iteration(coord_x, coord_y);
                if(mandelbrot_number==1) putpixel(screen, x, y, white);
                else putpixel(screen, x, y, SDL_MapRGB(screen->format, 0, 255*mandelbrot_number, 255*mandelbrot_number));
            }
        }

        if((keys[SDLK_PAGEUP] or keys[SDLK_PAGEDOWN]) and not (keys[SDLK_PAGEUP] and keys[SDLK_PAGEDOWN]))
        {
            if(keys[SDLK_PAGEUP]) step*=2, center_x/=2, center_y/=2;
            else if(keys[SDLK_PAGEDOWN]) step/=2, center_x*=2, center_y*=2;
            sprintf(title_buffer, "Mandelbrot, step: %.16f", step);
            SDL_WM_SetCaption(title_buffer, 0);

            keys[SDLK_PAGEUP]=keys[SDLK_PAGEDOWN]=false;
            SDL_FillRect(screen, 0, black);
            for(int x=0;x<(int)screen_width;x++) for(int y=0;y<(int)screen_height;y++)
            {
                coord_x=(x-screen_center_x-center_x)*step;
                coord_y=(y-screen_center_y-center_y)*step;

                mandelbrot_number=mandel_iteration(coord_x, coord_y);
                if(mandelbrot_number==1) putpixel(screen, x, y, white);
                else putpixel(screen, x, y, SDL_MapRGB(screen->format, 0, 255*mandelbrot_number, 255*mandelbrot_number));
            }
        }

        if((keys[SDLK_LEFT] or keys[SDLK_RIGHT]) and not (keys[SDLK_LEFT] and keys[SDLK_RIGHT]))
        {
            if(keys[SDLK_RIGHT]) center_x-=8;
            else if(keys[SDLK_LEFT]) center_x+=8;

            fromx=0, tox=screen_width;
            if(keys[SDLK_RIGHT])
            {
                SDL_Rect fromrect={8,0,screen_width,screen_height};
                SDL_Rect torect{0,0,screen_width-8,screen_height};
                SDL_BlitSurface(screen,&fromrect,screen,&torect);
                fromx=screen_width-8;
                tox=screen_width;
            }
            else if(keys[SDLK_LEFT])
            {
                SDL_Rect fromrect={0,0,screen_width-8,screen_height};
                SDL_Rect torect{8,0,screen_width,screen_height};
                SDL_BlitSurface(screen,&fromrect,screen,&torect);
                fromx=0;
                tox=8;
            }

            for(int x=fromx;x<tox;x++) for(int y=0;y<(int)screen_height;y++)
            {
                coord_x=(x-screen_center_x-center_x)*step;
                coord_y=(y-screen_center_y-center_y)*step;

                mandelbrot_number=mandel_iteration(coord_x, coord_y);
                if(mandelbrot_number==1) putpixel(screen, x, y, white);
                else putpixel(screen, x, y, SDL_MapRGB(screen->format, 0, 255*mandelbrot_number, 255*mandelbrot_number));
            }
        }


        if((keys[SDLK_UP] or keys[SDLK_DOWN]) and not (keys[SDLK_UP] and keys[SDLK_DOWN]))
        {
            if(keys[SDLK_DOWN]) center_y-=8;
            else if(keys[SDLK_UP]) center_y+=8;

            fromy=0, toy=screen_height;
            if(keys[SDLK_DOWN])
            {
                SDL_Rect fromrect={0,8,screen_width,screen_height};
                SDL_Rect torect{0,0,screen_width,screen_height-8};
                SDL_BlitSurface(screen,&fromrect,screen,&torect);
                fromy=screen_height-8;
                toy=screen_height;
            }
            else if(keys[SDLK_UP])
            {
                SDL_Rect fromrect={0,0,screen_width,screen_height-8};
                SDL_Rect torect{0,8,screen_width,screen_height};
                SDL_BlitSurface(screen,&fromrect,screen,&torect);
                fromy=0;
                toy=8;
            }

            for(int x=0;x<(int)screen_width;x++) for(int y=fromy;y<toy;y++)
            {
                coord_x=(x-screen_center_x-center_x)*step;
                coord_y=(y-screen_center_y-center_y)*step;

                mandelbrot_number=mandel_iteration(coord_x, coord_y);
                if(mandelbrot_number==1) putpixel(screen, x, y, white);
                else putpixel(screen, x, y, SDL_MapRGB(screen->format, 0, 255*mandelbrot_number, 255*mandelbrot_number));
            }
        }
        SDL_Flip(screen);
        SDL_Delay(20);
    }
    return 0;
}

 :cura:

6
GNU/Linux / Re:Duda sobre DE en Debian
« en: Julio 02, 2014, 07:49:23 pm »
Gracias :D

7
GNU/Linux / Duda sobre DE en Debian
« en: Julio 02, 2014, 11:37:05 am »
Estoy intentando de configurar mi Debian de tal manera que halla un entorno de escritorio instalado, pero que este no se cargue al iniciar el sistema. Lo que probe hasta ahora es instalar Debian sin DE e instalar despues gnome con "apt-get install gnome-core", pero queda automaticamente configurado que se cargue el DE al iniciar el sistema. ¿Alguna idea?

 :cura:

8
SOLUCIONADO
Al parecer depende de que caracteres hay en el archivo. Ahora cambié a python y uso el metodo __repr__() del objeto que contiene el texto en vez de __str__() para que no se escriban caracteres especiales en el archivo y me funciona perfectamente.

 :cura:

9
Intenté con X-Content-Type-Options: nosniff, pero no funciona :(

¿Me podes dicir como abre el archivo tu firefox? la URL es You are not allowed to view links. Register or Login

 :cura:

10
Lo que intento hacer es que al acceder a la URL de un archivo de texto, lo que aparezca sea el contenido de dicho archivo en texto plano. Lo que hice hasta ahora me funciona para google chrome, pero no para firefox (al menos no siempre, a veces si funciona, pero es inpredecible). Lo que pasa es que firefox intenta descargar el archivo en vez de mostrarlo.

Lo que hice hasta ahora fue cambiar la extension del archivo a ".txt" y enviar en el header de la respuesta al GET el tipo de mensaje como "text/plain".

La parte del codigo fuente del servidor encargada de enviar la pagina se ve así:
Código: (c++) You are not allowed to view links. Register or Login
int send_ok_header(const char *type, int length, FILE *output)
{
    return fprintf(output,
            "HTTP/1.1 200 OK\r\nContent-Type: %s\r\nContent-Length: %i\r\n\r\n",
            type,
            length);
}

int send_log_file(FILE *output)
{
    FILE *f;
    int length, flen;
    char *buffer[FILE_BUFFER_SIZE];
   
    if(debug)log("Sending log file...");
   
    log_mutex.lock();
    f=fopen(LOGFILE, "rb");
    if(!f) {log_mutex.unlock();return -1;}
    fseek(f,0,SEEK_END);
    flen=ftell(f);
    fseek(f,0,SEEK_SET);
   
    if(send_ok_header("text/plain", flen, output)<0) {fclose(f);log_mutex.unlock();return -1;}
   
    do
    {
        length=fread(buffer, 1, FILE_BUFFER_SIZE, f);
        if(fwrite(buffer, 1, length, output)!=length) {fclose(f);log_mutex.unlock();return -2;}
    }while(length==FILE_BUFFER_SIZE);
    fclose(f);
    log_mutex.unlock();
    if(debug)log("Log file with length ");
    if(debug)log(flen);
    if(debug)log(" was sent\n");
    return 0;
}

donde "output" es el socket abierto de esta manera:
Código: (c++) You are not allowed to view links. Register or Login
output=fdopen(s, "wb");
 :cura:

11
HTML, CSS y JavaScript / Re:¿Como enviar un archivo al servidor web?
« en: Marzo 17, 2014, 03:12:52 am »
El problema es que tengo que leer hasta un cierto delimitador, y si este delimitador esta partido en dos partes (si leo justo hasta la mitad del delimitador con el primer fread y despues leo la segunda mitad con el siguiente fread) no voy a saber cuando terminar de leer.
Voy a ver si encuentro alguna forma de hacerlo sin corromper mis archivos, a ver hasta donde llego.

Gracias por las respuestas :)

 :cura:

12
HTML, CSS y JavaScript / ¿Como enviar un archivo al servidor web?
« en: Marzo 13, 2014, 06:40:18 pm »
Estoy haciendo un servidor web para mi página ( en c++ :) ), y estoy estancado.
Quiero que al entrar a mi pagina web me de la opcion de subir un archivo, y que la transferencia del archivo esté implementada en javascript de ser posible.

Lo ideal sería que el browser envíe a mi servidor datos en el formato que yo elija (si es que es posible). Por ejemplo, en vez del típico http:
Código: You are not allowed to view links. Register or Login
HTTP/1.1 200 OK
Content-Type: text/html;
Content-Length: ###

/*contenido de la pagina*/
me envíe algo como esto:
Código: You are not allowed to view links. Register or Login
FILE 200 OK
Name: /*nombre*/
Length: */tamaño del archivo*/

/*contenido del archivo*/

¿Es esto posible?

Buscando en google encontré la forma de hacerlo sin javascript, usando un FORM, pero el problema que tengo es que es dificil de "parsear". Lo que hago es cargar todo el POST-Request a la RAM y copiar la parte que pertenece al archivo al disco, pero esto consume mucha RAM para archivos grandes (tengo solo 512MB de ram, y nada de SWAP).

 :cura:

13
Redes / Re:Router vs Computadora como router
« en: Marzo 12, 2014, 04:33:50 am »
ok, gracias :D

14
Redes / Router vs Computadora como router
« en: Marzo 11, 2014, 05:13:08 am »
En internet encontré que las ventajas de un router frente a una computadora con dos NICs configurada como router son el bajo precio y el menor consumo de energía. Si uso una Raspberry Pi como router (que es barata y consume poca energia), tendría eso alguna desventaja ?

 :cura:

15
Python / Re:¿Como leer paginas web ".onion"?
« en: Diciembre 06, 2013, 01:51:40 pm »
Gracias por la respuesta, pero eso ya lo probe, y me hace el mismo problema que mencioné al principio.

 :cura:

Páginas: [1] 2 3 ... 100