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

#311
Si "pincha" tu servidor, es que algo falla. Manejas mal la memoria.

Recurrir a otro método que no sea delete para memoria solicitada con new, como tu mismo has experimentado, da resultados imprevisibles. Como ya dije, no puedes saber si new usa malloc por debajo, y tanto delete como heap destroy hacen uso de free.

Regla de oro:
Free what you malloc, delete what you new.
#312
Python es más "sencillo" que C++. Python es un lenguaje de alto nivel, y por tanto tiende a ocultar al programador el manejo de la máquina a bajo nivel (memoria dinámica manejada por el programador y cosas por el estilo).

En cambio, C++ es un lenguaje de bastante menor nivel que python, y por tanto, tendrás que lidiar con el manejo de situaciones a bajo nivel. En cambio, si dominas un lenguaje como C++, subir a lenguajes de alto nivel, suele ser fácil. Pero el camino inverso, bajar de nivel, no suele serlo.
#313
Si ya estás usando ubuntu, no cambies de SO. Sobre el lenguaje... hay mil posts en el foro, y últimamente sobretodo) hablando del tema.

http://foro.elhacker.net/programacion_general/iquestme_ayudan_a_decidirme_c_c_o_java_o_net-t322479.0.html este uno de ellos.

C++ es mi recomendación, python o java pueden ser opciones, pero por favor, evita Visual Basic.
#314
Si creas memoria con new, la borras con delete. Si lo haces con malloc, la liberas con free. NUNCA mezcles formas de llamar y liberar memoria, porque no sabes como están o no implementadas por debajo.
#315
Veamos... Respuesta rápida? C++,luego ya verás que te apetece.

Respeusta en profundidad:

Mientras que no se puede decir que un lenguaje sea mejor que otro, a menos que los pongas frente a un objetivo en concreto, por experiencia como estudiante, te diré que C y C++ hacen un buen partido como lenguajes para empezar. Llegarás a punteros, y será una putada, si se me permite la expresión, pero uan vez los controles, te sientes dios.

En C y C++ el programa hace exactamente lo que tu le digas, manejo de memoria incluido. Eso añade potencia, mucha, pero también una posible dificultad de desarrollo.

Y es cuando llegamos a Java y la plataforma .net (Hablaré de C# que si no me equivoco es el más próximo a java). Estos lenguajes hacen el siguiente intercambio: Pierden en rendimiento (recordemos que no corren de forma nativa), ocultan detalles de bajo nivel al programador (manejo de memoria, entre otras cosas) y a cambio proveen de un desarrollo de aplicaciones más rápido.

Pero recordemos, no podemos decir que un lenguaje sea peor que otro a menos que nos centremos en un aspecto.

En el caso que nos interesa, el aprendizaje, posiblemente sea más interesante C o C++. Los detalles a bajo nivel ayudan para cuando subes a nivel alto y sigues necesitando ese chute de velocidad, poder poner código de un nivel inferior.
(hablo de nivel como próximidad a la máquina como tal).

Como ya he dicho otras veces, lo que interesa hacer después de aprender suele surgir mientras aprendes. Te decidas por lo que te decidas, céntrate en ello, no vayas de uno a otro sin llegar a tener un dominio firme de nada.

En caso de que al final tomases la ruta del C++, te dejo un par de referencias en forma de libros:

C++ estándar (Programación con el estándar ISO y la Biblioteca de Plantillas (STL))
Enrique Hernández Orallo, José Hernandez Orallo, Mª Carmen Juan Lizandra
Paraninfo - Thomson Learning
ISBN: 84-9732-040-9

(daría un enlace para descargarlo, pero no he encontrado, la vez que busqué, algún pdf o similar con el libro)

Por otro lado, Littlehorse (moderador del subforo) suele recomendar uno que hay colgado en este post: http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html

Name: Cómo Programar en C/C++
Author(s): Harvey M. Deitel, Paul J. Deitel
Hardcover: 1072 pages
Publisher: Prentice Hall; 2nd edition (February 1998)
ISBN-10: 9688804711
ISBN-13: 978-9688804711

(hay un enlace para descargarlo)

Yo utilizo el de C++ estándar porque me gustó cuando me lo recomendó un profesor en la facultad y lo saqué una temporada de la bilioteca y al final me lo terminé comprando. Sobre el de Deitel & Deitel, no tengo mayor referencia que el hecho que Littlehorse lo recomiende. (Si vas a buscar el de Deitel & Deitel, intenta buscar una edición más actual, que imagino que la habrá)

Para los otros lenguajes no tengo referencias, lo siento.
#316
Si la velocidad es un factor crítico, te puedo sugerir que utilices mapeo en memoria.

Tienes mmap para linux:
http://linux.die.net/man/2/mmap

Y en windows el equivalente, si no me equivoco es CreateFileMapping:
http://msdn.microsoft.com/en-us/library/aa366537(v=VS.85).aspx

Únicamente puedo hablar del mmap de linux, que es el que he usado, y para ficheros grandes, se suele experimentar una ganancia en la lectura. Ya que en vez de ir leyendo el fichero a bloques lo transportas a memoria de una, y luego lo recorres como si se tratase de una CADENA. No es algo que aconseje a alguien que está empezando.

Recalco lo de tratarlo como una cadena, porque eso te permite acceder al elemento que quieras, cuando quieras, Por tanto, si tu buscas un patrón en un texto (suponiendo que buscas un único patrón), después de mapear el fichero, se me ocurre que puedas recorrerlo del tirón buscando la primera letra de tu patrón, que la encuentras, compruebas si después está la segunda, que no? sigues.

Respecto a la velocidad... el uso que yo le he llegado a dar es leer 92 archivos de entre 1.5 y 2 MB cada uno, y pasar su contenido a una matriz (leía como texto, y luego pasaba a número, y no lo podía mapear directamente como números por tratarse de un fichero de texto, no binario)
189 MB en 2 segundos con mi portátil (pentium T4300)
#317
Dudas Generales / Re: por donde empezar
21 Marzo 2011, 22:56 PM
Personalmente, no aconsejaría Visual Basic como primer (o de los primeros) lenguajes. Tiende a inducir a malas costumbres, y por lo que tengo entendido,( ¿gran? ) parte de los que empiezan con VB, luego suelen tener problemas al pasar a otros lenguajes.

C y/o C++ te dan una base y en principio unas costumbres, que es principalmente lo esencial cuando aprendes, empezar bien.
#318
Cuidadillo con gets y fflus(stdin), que pueden dar resultados un pelín inesperados:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Entrando con tu programa. Tengo la impresión que el problema pueda ser que no te fijas si has leído el final de fichero, y entonces eso te de problemas.
for (i = 0; i < MAXT; i++){
texto[i] = fgetc(crypt);
}


comprobar si texto[i]==EOF y si lo es, finalizar el bucle sería una solución.

Pero sigue siendo raro. Has probado a hacer un cat desde consola del fichero escrito a ver que sale?
#319
Si quieres que esa referencia sea al objeto que la devuelve si. this es la palabra reservada que se refiere al objeto que la usa. En el ejemplo que yo he puesto, uso this para devolver la referencia al objeto al cual acabo de asignar.
#320
GNU/Linux / Re: backtrack 4 ??
21 Marzo 2011, 21:14 PM
Análisis de vulnerabilidades. Tests de penetración. Recopilación de metadata... hay mil herramientas, y los usos de cada una, sólo los limita tu habilidad a la hora de usarlas.