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 - dato000

#981
uy yo no recomiendo hacer eso, con consola se puede hacer de todo, pero no es recomendable su uso si no se sabe perfectamente que parametros son los necesarios para crear tal.

Si lo que quieres es comprimirlos solo usa rar o tar.gz o tar.bz, pero realmente crear una iso desde linux es algo mucho más complejo, para esa clase de cosas que estan relacionadas con juegos, prefiero usar windows, con ultraiso sale rapido esa operación.

Ahora si lo que quieres es experimentar, pues primero haz un backup de la carpeta con los archivos.

Leete estos howtos

http://blog.desdelinux.net/como-crear-un-iso-desde-el-terminal/
http://emslinux.com/como-crear-una-imagen-iso-desde-la-terminal-de-linux/
http://es.wikihow.com/crear-un-archivo-ISO-en-Linux
http://www.taringa.net/posts/linux/10419888/Crear-y-montar-imagenes-ISO-en-Linux.html
http://www.linuxhispano.net/2012/11/05/crear-una-imagen-iso-desde-un-cd-o-un-dvd-en-ubuntu/
#982
Cita de: 9ttnix en 19 Diciembre 2013, 00:00 AM
Estimados Amigos

Creo que al principio no me explique, pero este es el caso.
Tengo una PC casera Procesador Core2Duo, HD 80GB, RAM 2GB y mi salida a internet es ADSL de telefonica. Mi proposito es montar un servidor que pueda conectar desde fuera de mi red LAN.
Asi que instale Debian Wheezy con lo mas basico y solo configure mis sources.list y la red esta con dhcp y actualize debian.
Luego instale openssh-server y openssh-client y bueno me funciona dentro de mi red LAN, pero me falta configurarlo para que pueda conectarse desde cualquier punto a traves de internet y asi pues poco a poco montar un servidor que ofrezca otros servicios.
Si gustan despues de configurarlo con su ayuda podemos usarlo para pruebas de paso aprendo y aprenden otros.

Y bueno entonces por ahora solo esta con dhcp pero quiero configurar ip estatica y luego la conexion desde fuera de mi red LAN.

A la espera de sus comentarios

Saludos
9tnix

Creo que el que no entiende eres tú amigo mio, quieres poner un servidor local, excelente, pero no mezcles eso con la configuración local de tu red, puedes tener uno u otro sin que se afecten entre si, estas confundiendo conceptos, mientras hablas del servicio y el cliente ssh, que es solo un tunel de comunicación de sesiones de usuario con una seguridad SSL (muy buena seguridad, hay mucho pero mucho tema interesante respecto a eso) la configuración estatica que quieres tener solo son parametros de enrutamiento dentro de los protocolos de servicio que establece tu router para comunicación de paquetes IP, como TCP, UDP o ICMP por poner un ejemplo.

Dices que quieres aprender, pero parece que no has leido nada.  :¬¬ :¬¬
#983
Cita de: rir3760 en 18 Diciembre 2013, 18:04 PM
Primero debes liberar la memoria de cada fila y a continuación la memoria del bloque principal:
Código (cpp) [Seleccionar]
for (int i = 0; i != tamanyo; ++i)
   delete[] matrizPrincipal[i];
delete[] matrizPrincipal;


Un saludo

Ok, vale muchas gracias, me queda claro entonces, ya lo implemente, dejo el código completo por si tal vez un futuro (usando google o duckduckgo o pues alguien que tenga la tarea y use cualquier buscador) alguien lo necesita.


Código (cpp) [Seleccionar]


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <time.h>

using namespace std;

void generarNumeros(int **matriz, int tam)
{
    //Generando numeros aleatorios con indexacion
    /*for (int i =0; i < tam; i++)
    {
        for(int j=0; j < tam; j++)
        {
            matriz[i][j] = 1 + rand() % 19;
        }
    }*/

    //Generando numeros aleatorios con aritmetica de punteros
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam; j++)
        {
            *(*(matriz+i)+j) = 1 + rand() % 19;
        }
    }
}

void imprimirMatriz(int **matriz, int tam)
{
    // Imprimiendo por indexacion
    /*for (int i =0; i < tam; i++)
    {
        for(int j=0; j < tam; j++)
        {
            cout << matriz[i][j];
            cout << "   ";
        }
        cout << endl;
    }*/

    // Imprimiendo por aritmetica de punteros
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam; j++)
        {
            cout << *(*(matriz+i)+j);
            cout << "   ";
        }
        cout << endl;
    }
}

void transpuesta(int **matriz, int tam)
{
    int aux;
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam   &&  j < i; j++)
        {
            aux = *(*(matriz+i)+j);
            *(*(matriz+i)+j) = *(*(matriz+j)+i);
            *(*(matriz+j)+i) = aux;

        }
    }
}

bool simetrica(int **matriz, int tam)
{
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam   &&  j < i; j++)
        {
            if( !( *(*(matriz+i)+j) == *(*(matriz+j)+i) ) )
                return false;
        }
    }
    return true;
}

int main()
{
    srand(time(0));
    int tamanyo;
    int **matrizPrincipal; // puntero para dos dimensiones del arreglo

    cout << "Problema 11.2 ----_____----" << endl << endl;
    cout << "Ingrese el tamaño de la matriz:  "; cin >> tamanyo;

    matrizPrincipal = new int*[tamanyo]; /*asignacion de memoria de n punteros a enteros*/

    for (int i =0; i < tamanyo; i++)
        matrizPrincipal[i] = new int[tamanyo]; /*asignacion de memoria para cada entero*/

    /*comprobar si fue creado */
    if (matrizPrincipal == NULL)
    {
        cout << "No se pudo crear la matriz" << endl;

    }

    generarNumeros(matrizPrincipal, tamanyo);
    imprimirMatriz(matrizPrincipal, tamanyo);
    cout << endl << endl;

    // matriz transpuesta
    cout << endl << "***MATRIZ TRANSPUESTA***" << endl;
    transpuesta(matrizPrincipal, tamanyo);
    imprimirMatriz(matrizPrincipal, tamanyo);
    cout << endl << endl;

    // comprobando matriz simetrica
    if( simetrica(matrizPrincipal, tamanyo) )
    {
        cout << "La matriz SI es simetrica";
    }
    else
    {
        cout << "La matriz NO es simetrica";
    }

    cout << endl << endl << "ADIOS!!" << endl <<  endl;
    // Liberando memoria de la matriz
    for (int i = 0; i != tamanyo; ++i)
        delete[] matrizPrincipal[i];

    delete[] matrizPrincipal;

    return 0;
}

#984
Windows / Re: Software libre en windows..
18 Diciembre 2013, 18:39 PM
Cuantas personas que usan windows (casi el 90% no XD) van a una página web y usan algo diferente a apache??

me gustaria saber en serio ese dato, hay alguna estadistica??

bueno IIS es otra buena opción, pero no es libre.

cherokee me suena, pero creo que lo que he escuchado es más para un software de auditoria, creo...hay tantos programas la verdad  ;-)
#985
Cita de: leosansan en 18 Diciembre 2013, 07:16 AM
Tenias dos fallos lógicos, por un lado sólo aplicabas los cambios a la diagonal- i==j- con lo que no cambia nada-,

Cierto, lo venia pensando ahora que regresaba a mi casa, lo que queria decir que es que fuera diferente a la diagonal i != j pero no cai en cuenta de ese minusculo descuido  :xD

Cita de: leosansan en 18 Diciembre 2013, 07:16 AM
y por otro lado al recorrer  la matriz al completo, lo que haces en una mitad lo deshaces en la siguiente mitad.
Ummmmm tienes razón, no pense en ese detalle, seguro que me hubiera atascado nuevamente con eso.


Cita de: leosansan en 18 Diciembre 2013, 07:16 AM
Por cierto, ¿no te falta un delete al final del main?.
[/size]
Saluditos! ..... !!!!        

Es que no habia llegado a ese punto porque me quede pensando en la función de la transpuesta. Pero luego de eso implemento correctamente el código.

Código (cpp) [Seleccionar]

    delete[] matrizPrincipal; // liberando memoria de la matriz


es así verdad como se hace cierto??

Muchas gracias.
#986
Buenas amigos, mi problema es el siguiente, se supone que debo hacer una matriz simetrica, y pues lo primero es realizar es una matriz transpuesta porque pues, de eso se trata aprender no??  ;-) ;-) verán, en el ejercicio me dicen que use indexación y aritmetica de apuntadores, para no alargar mucho el tema, dejo el enunciado:

Citar
Escribir un programa que encuentre una matriz de números reales simétrica. Para ello una función entera con entrada a la matriz determinará si ésta es simétrica. En otra función se generará la matriz con números aleatorios de 1 a 19.

Utilizar aritmética de apuntadores en la primera función; en la segunda, indexación.

En el ejercicio, pues como verán, lo hice de las dos formas, no de sobrado, sino por saber como trabajan por separado. Y pues mi problema no nisiquiera de programación, sino que no he podido dar con el chiste de hacer una maldita matriz transpuesta, cambiando de lugar los elementos de la matriz para que luego deba hacer la comprobación de si existe o no una matriz simétrica.

Para que me entiendan dejo el ejemplo de una matriz transpuesta:


Donde se puede ver, que los elementos de las filas y las columnas quedan "transpuestos" unos con otros, menos la diagonal principal, cambiando de lugar, la simetria se da cuando después del cambio los valores númericos de los elementos siguen siendo los mismos, de esta forma:


Y pues mi problema radica en que no he podido hacer la transposición, ya trate de varias maneras, pero me falla la lógica, no he podido dar con el chiste, me dan una mano amig@s???

he aquí el código, no es nada complicado:

Código (cpp) [Seleccionar]

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <time.h>

using namespace std;

void generarNumeros(int **matriz, int tam)
{
    //Generando nçumeros aleatorios con indexación
    /*for (int i =0; i < tam; i++)
    {
        for(int j=0; j < tam; j++)
        {
            matriz[i][j] = 1 + rand() % 19;
        }
    }*/

    //Generando nçumeros aleatorios con aritmetica de punteros
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam; j++)
        {
            *(*(matriz+i)+j) = 1 + rand() % 19;
        }
    }
}

void imprimirMatriz(int **matriz, int tam)
{
    // Imprimiendo por indexación
    /*for (int i =0; i < tam; i++)
    {
        for(int j=0; j < tam; j++)
        {
            cout << matriz[i][j];
            cout << "   ";
        }
        cout << endl;
    }*/

    // Imprimiendo por aritmetica de punteros
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam; j++)
        {
            cout << *(*(matriz+i)+j);
            cout << "   ";
        }
        cout << endl;
    }
}

void transpuesta(int **matriz, int tam)
{
    int aux;
    for (int i=0; i < tam; i++ )
    {
        for(int j=0; j < tam; j++)
        {
            if(i == j)
            {
                aux = *(*(matriz+i)+j);
                *(*(matriz+i)+j) = *(*(matriz+j)+i);
                *(*(matriz+j)+i) = aux;
            }
        }
    }
}

int main()
{
    srand(time(0));
    int tamanyo;
    int **matrizPrincipal; // puntero para dos dimensiones del arreglo

    cout << "Problema 11.2 ----_____----" << endl << endl;
    cout << "Ingrese el tamaño de la matriz:  "; cin >> tamanyo;

    matrizPrincipal = new int*[tamanyo]; /*asignacion de memoria de n punteros a enteros*/

    for (int i =0; i < tamanyo; i++)
        matrizPrincipal[i] = new int[tamanyo]; /*asignacion de memoria para cada entero*/

    /*comprobar si fue creado */
    if (matrizPrincipal == NULL)
    {
        cout << "No se pudo crear la matriz" << endl;

    }

    generarNumeros(matrizPrincipal, tamanyo);
    imprimirMatriz(matrizPrincipal, tamanyo);
    cout << endl << endl;

    // matriz transpuesta
    cout << endl << "***MATRIZ TRANSPUESTA***" << endl;
    transpuesta(matrizPrincipal, tamanyo);
    imprimirMatriz(matrizPrincipal, tamanyo);


    return 0;
}



Si ven las librerias adicionales como "cstdio" o "cstdlib" era porque estaba probando el tipico caso de printf vs cout. Aunque creo que srand() debe funcionar con cstdlib...en fin, no da problemas de compilación, el problema esta en la función "transpuesta(int **matriz, int tam)", pues no he podido dar con el truco de transponer los elementos.

Les agradezco el interés y la ayuda, slsd  ;-) ;-)
#987
Programación C/C++ / Re: Error creando lista C++
18 Diciembre 2013, 01:37 AM
ummm creo que cometes unos errores, en primera no incluyes las librerias para correr el código, en segunda no usas el estandar std para el uso de entrada y salida.

en fin, te dejo el código y te explico lo que yo entiendo, pues mis concepto técnico aún lo estoy puliendo respecto a C++/C, pues siempre es complejo pero muy enriquecedor e interesante.

Código (cpp) [Seleccionar]

#include <iostream>
#include <cstring>

using namespace std;

struct tNodo {
   int num;
   tNodo *sig;
};

void insertar(tNodo *cab, int dato) {
   cab->num = dato;
}

int main()
{
   tNodo cabecera;
   memset(&cabecera, 0, sizeof(cabecera)); // En estructura no es posible instanciar, se usa asignación dinamica de memoria
   tNodo *p_cabecera;

   p_cabecera = &cabecera;
   insertar(p_cabecera, 2);
   //p_cabecera->num = 30;
   cout << p_cabecera->num << endl; //Aqui me peta
   return 0;
}


Mira lo primero que debes hacer es usar las librerias y el estandar de reserva de nombres, es decir, el namespace std. Por eso es que no te correo el cout.

Ahora respecto a los apuntadores a la estructura cabecera, no debes usarlo directamente, debes crear un apuntador que apunte (ya se ya se, valga la rebundancia) hacia la dirección de memoria creada por la estructura incial cabecera

Citar
tNodo cabecera;
tNodo *p_cabecera;
p_cabecera = &cabecera;

Así ya puedes usar el apuntador de la manera que te plazca sin errores de segmentación, pues lo que sucedia, o como lo veo, es que no habia memoria reservada para esa estructura, y por eso no era posible insertar ni imprimir datos, pues simplemente no habia nada en donde escribir la información.

Ahora lo que tu haces con NULL y eso, no es posible hacerlo con estructuras, como yo lo veo, leyendo por ahi, es que las estructuras no se comportan de la misma manera como las clases, pues aunque en c++ sean estimadas como clases con propiedades de caracter publico (quiero decir, que sus atributos siempre serán publicos por defecto, al contrario de crear una clase, que como se respete con un objeto sus atributos serán siempre privados por defecto), eso es digamos la versión corta, creo que alguien más puede extender un poco porque me interesa el saber esto también.



memset(&cabecera, 0, sizeof(cabecera));


Es por ello que lo que debe hacerse es reservar memoria dinamica del tamaño de la estructura para determinar que no hay nada ahí, o algo así, no se como podría explicarlo mejor, es como para hacerlo, necesitas de malloc o de memset (biblioteca cstring en C++ o string.h en C) de un tamaño determinado y luego le indicas que es vacio, pero es un vacio del tamaño de la estructura que tienes.

http://stackoverflow.com/questions/2022425/comparing-structs-to-null
http://stackoverflow.com/questions/6891720/initialize-reset-struct-to-zero-null

Bueno creo que eso seria todo, suerte con tu trabajo.

PD: estamos hablando de estructuras (struct) no de listas (list) son cosas completamente diferentes.  :silbar: :silbar:
#988
Windows / Re: Software libre en windows..
18 Diciembre 2013, 00:28 AM
Cita de: Platanito Mx en 17 Diciembre 2013, 23:02 PM
En el ambito informatico, pudiera ser MySQL, firefox, chrome, apache, vlc media player, jquery, Cloud Foundry

Le atinaste!!

El software libre más usado en el mundo es el apache, todos los servidores funcionan con apache.


Alguna duda?? que alternativas hay para apache que puedan ser competencia??

en cambio, tenemos bastantes programas que compiten:

1) MySQL ---> Oracle, MariaDB, MongoDB, SqlServer, PostgreSQL...
2) Firefox ---> Chrome, Chromium, Internet Explorer, Opera (Aguante Opera!!), Safari, Midori, Epiphany, konqueror, IceCat, IceWeasel (Aguante Debian!!)...
3) VLC --> SMPlayer, Reproductor de Windows Media, Reproductor de windows 8, BSPlayer...
4) JQuery es más una libreria, más que competencia es simplemente una extensión de javascript
5) Cloud Foundry ---> ni idea... la verdad ni idea.  :silbar: :silbar:
#989
Cita de: jednak en 17 Diciembre 2013, 23:48 PM
Mira ,no soy ningun guru de C ni nada por el estilo pero te recomiendo lo siguiente :

Leer libro de kernighan y ritchie(El leguaje de programacion C) OBLIGATORIO.
Antes que nada debes saber que leer un libro de programacion no es como leer un libro de literatura. Aca tenes que resolver todos los ejercicios , es VITAL que resuelvas todos los ejercicios del libro. Recomiendo que programes en un notepad y que uses gcc como compilador.


Aunque es una referencia obligatorio, es un libro muy avanzado, no es material introductorio, y es una total equivocación referenciar algo tan avanzado a un novato, solo lograras cansarlo y espantarlo, todo esto es progresivo, y como tu mismo dices, es vital y totalmente necesario el realizar ejercicios, como todo en la vida, si uno quiere lograr exito, debe lograrlo por si mismo, en material de programación, solamente por medio del esfuerzo autodidacta se cocecha experiencia y logros.

Pero no lo mates con el libro de los dioses, es muy complejo.



Cita de: jednak en 17 Diciembre 2013, 23:48 PM
Cuando ya manejes mas o menos el lenguaje , te recomiendo bajarte otros libros y ir fijandote vos lo que queres reforzar . No te puedo recomendar otros libros dsp del de kernighan y ritchie debido a que nose el enfoque que queres darle. Por ejemplo , yo no soy ningun guru  de algun lenguaje de programacion pero se bastante de la mayoria , ya sea lenguajes de bajo nivel como de alto nivel.Sin embargo me enfoque en la parte algoritmica mas que en lenguaje , ahi si te puedo recomendar libros ( los de knuth).

En fin , no tengo idea lo que sabes , y con que fines quieres aprender.

Uno aprende por el simple hecho de querer aprender, estudiar en si mismo es un arte, y es cuestión de sacarle gusto a la dedicación y al empeño, buscar motivación es importante, así que más allá de buscar material, debes buscar retos. Ahora, como material didactico tienes mucho pero mucho gracias a internet. Aunque más allá de internet, si uno realmente quiere salir adelante, hay que invertir, por ello, hay que hacer sangrar ese bolsillo, y conseguir libros en físico si realmente estas interesado, acudiendo a una biblioteca también encontraras suficiente, no tiene que ser moderno (C es un lenguaje que tiene más de veinte años, y en lo básico sigue igual).

Si quieres libros, puede que los encuentres en pdf, te recomiendo:

Programación en C, C++, Java y UML - Johanes Aguilar
Como Programar en C++, especialmente la sexta edición - Deitel

Con esos dos libros tendras mucho tiempo para matar con este material.


Ahora, no solo es cuestión de libros, hay retos, como decia antes, y cosas aparte, como los geniales videotutoriales, como recomienda mi amigo:

Cita de: ivancea96 en 18 Diciembre 2013, 00:04 AM
Página con vídeos de gran calidad: minidosis.org

Videotutoriales de C++, creados por un profesor de universidad, si no me equivoco.

Personalmente, el creador de esos videos, me parece muy majo y carismático, sus explicaciones son muy atrayentes.

A parte de los videos esos, y todo tutorial que pienses seguir, yo te recomiendo:

1) Proponerte una meta, un programita.
2) Lo que no sepas hacer, buscar información (Ej. Google).

Y bueno, así es como fui aprendiendo yo. Pero ya allá tú con lo que quieras aprender, tu ritmo, y etc etc.

Suerte ;)

Puedes consultar su página web o su canal en youtube Pau Fernandez / Paueky, AGUANTE PAUEKY!!! te enseña desde como instalar apropiadamente en linux o windows, hasta hacer juegos como tetris, snaje, manipulación de imagenes con C++, te enseña estructuras, punteros, clases, referencias...de todo, de todo, es mejor que una universidad en material de aprendizaje, pero si realmente quieres aprender, pues ponte a hacer ejercicios.

Ahora, los retos:

Aprender librerias aparte de las básicas de C/C++, puedes hacer juegos con Allegro, SDL, SFML, etc...
Instalar y aprende a manejar Linux, te garantizo que de una u otra forma le cogeras gusto al software libre, a la programación si es que realmente eres dedicado, de paso, aprenderás multiples cosas, como Python (mucho más facil de aprender que C/C++), perl, bash, shell, ssh, un sin fin de cosas.
Leete los cuadernos de Hack X Crack, tanto los modernos como los antiguos (mejor empieza desde los antiguos) tienen una importante cantidad de articulos muy buenos, que ya son historia pero que te aportan bastante.


La forma apropiada de aprender C/C++, como lo diria yo, no se, tal vez instalando el compilador no???? usa codeblocks y empieza a experimentar!!!! hazte un megaman!!!!! genera archivos, juega con punteros, intenta cambiar los colores del texto de tu cmd o tu bash desde C++, solo hazlo!!! averigua como y hazlo!!  :silbar: :silbar:
#990
Esto me recuerda a este post.

http://foro.elhacker.net/gnulinux/ubuntu_1004_configurar_ip_estatica_no_se_deja_solved-t380700.0.html

Esa basura de guias que tanto abundan en la red es la que te ha informado incorrectamente lo que has hecho, pues aunque lo básico esta bien, se espera que funcione en un entorno totalmente automatizado pues sigue siendo el modulo de nettools quien se encarga de enrutar, por eso a ellos les funciona bien, y a ti no, pues te falta enrutar correctamente toda la tabla de direcciones que vas a usar para tu interfaz de red, en este caso, la red cableada eth0.

El link de crysol.org (revisa el link) es justo lo que necesitas, y pues, bueno, hay que seguir indagando, mientras buscaba justamente el post de crysol para dejarlo aquí me encontre con el post de hace meses sobre la ip estatica en ubuntu que te deje arriba, y sirve perfectamente, porque como bien se sabe, ubuntu es solo un aborto de debian.

Hay mucho blog y howtos mal hechos con cosas así, solo es cuestión de seguir buscando.

Recuerda reiniciar las interfaces de red, y lo del ssh, eso es irrelevante, pues si no tienes un correcto enrutamiento a lo unico que puedes conectar es al loopback (interfaz lo) pero pues, si no tienes un servidor ssh en tu maquina, solo navegaras entre tus propias carpetas con una sesión de usuario asignado por el cliente ssh.