|
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 - chuidiang
76
« en: Miércoles 25 de Agosto de 2004, 15:55 »
No sé demasiado de estos temas, estoy empezando a leer algo de jsp, pero se me ocurre lo siguiente.
Si pones lo de tag <applet> con los parámetros debe funcionar. Desde el applet deberias ser capaz de leer esos parametros.
<applet code="LaClase.class> <param name="usuario" value="juanito"> <param name="password" value="laclave"> </applet>
Para hacer que esos parametros "cambien", puedes hacerlo desde jsp. Una pagina jsp puede "escribir" el codigo html que interpreta el navegador. Bastaría que la página jsp que supongo conoce el nombre de usuario y password "escriba" esos tags del applet, param y demás.
Se bueno.
77
« en: Jueves 12 de Agosto de 2004, 17:50 »
Lo del clone() no se. De hecho la idea que tengo es que si implementas tu propio clone(), debes hacer un new del objeto, rellenarlo a tu manera y devolverlo. Lo que si es cierto (quizas te refieras a eso), es que el clone() por defecto que tienen todas las clases no llaman a news ni a constructores. Unicamente hacen una "copia" de la memoria del objeto. De todas formas, tú tienes la posibilidad de redirinir un clone() de una clase concreta para que la copia se haga como tú quieres.
Cuando se usa el = no se llama a ningún clone() ni a ningún método. Si pones a=b, entonces a y b "son" la misma cosa, "apuntan" al mismo objeto. No se copia el objeto en absoluto. Solo hay un objeto, al que a y b "apuntan".
En cuanto a swing, es una versión más moderna y más mejor de awt. Para hacer más comodamente y más vistosas las ventanas, deberías usar swing. Lo del que no es threadsafe quiere decir que no está preparada para programación con varios hilos (threads). Serías tú al hacer el código el que debe preocuparse de "sincronizar" dichos hilos. Si no metes varios hilos a posta, no deberías tener que preocuparte de nada.
Se bueno.
78
« en: Jueves 12 de Agosto de 2004, 17:40 »
Al final de Ejemplos java hay un par de cosas sobre gráficos en java. Echa un ojo a ver si te sirve algo. Se bueno.
79
« en: Jueves 12 de Agosto de 2004, 17:36 »
Habría que ver cómo tienes el código y todo eso, pero te comento varias ideas.
- Para leer el fichero utiliza algo que use BufferedInputStream. Si lees un fichero sin Buffered, cada vez que lees se realiza una lectura real en disco. Si utilizas el Buffered, se lee de golpe un cacho grande de fichero. El resultado es una lectura más rápida.
- Si tu separador siempre es |, posiblemente sea más rápido si los buscas tú con un bucle que usar el StringTokenizer.
- Otro consejo. Los StringBuffer son más rápidos en general que los String.
De todas formas, yo creo que lo más determinante en tiempo, si no lo estás usando ya, es el BufferedInputStream o si no, leer tú varios kBytes de fichero de golpe (de una sola lectura) y luego ir analizándolos.
Se bueno.
80
« en: Jueves 12 de Agosto de 2004, 17:28 »
Mira aqui Inicios en java a ver que te parece Se bueno.
81
« en: Martes 1 de Junio de 2004, 08:58 »
Echa un ojo aqui Conceptos de socketspara aclararte los conceptos, a ver si te sirve. Se bueno.
82
« en: Lunes 12 de Abril de 2004, 11:09 »
Con fgets() puedes leer una linea completa del fichero.
Con strstr() puedes buscar una subcadena dentro de una cadena, en tu caso concreto, una palabra dentro de la linea que acabas de leer.
Solo tienes que ir leyendo lineas, contandolas y buscando en cada una de ellas la palabra. Luego escribes el numero de linea en el que la has encontrado.
Se bueno.
83
« en: Lunes 23 de Febrero de 2004, 09:04 »
Abre le fichero PRN: para escritura y lo que escribas ahi saldrá por la impresora.
Se bueno.
84
« en: Jueves 12 de Febrero de 2004, 09:01 »
En los entornos unix la variable de entorno ? queda con el valor devuelto por el último comando ejecutado.
Por ejemplo, un ls correcto
$ ls ... $ echo $? 0
Ahora un ls incorrecto (opciones que no valen)
$ls -aa3wrñvz ... $ echo $? 2
Devuelve un código de error.
A ver si te vale eso.
Se bueno.
85
« en: Viernes 6 de Febrero de 2004, 09:24 »
Me alegro de que la página te resulte útil.
Se bueno.
86
« en: Viernes 6 de Febrero de 2004, 09:08 »
Ese problema se nos presentó en una ocasión y lo solucionamos poniendo un tooltip en la celda mostrando el contenido completo. Debes definir un TableCellRenderer. En www.geocities.com/chuidiang, dentro de java, tienes un ejemplo de como se hace con tooltip y todo. Se bueno.
87
« en: Jueves 5 de Febrero de 2004, 08:45 »
En un entorno más o menos complejo como los que hay ahora (windows, linux, etc) es mejor medir muchas veces el algoritmo y hacer un promedio, ya que en una sola ejecución pueden pasar muchas cosas ajenas a tí que hagan que tu algoritmo vaya más lento o se vea interrumpido. Además de medir usando funciones como clock() u otras, existen unas herramientas llamdas profilers. Linux la tiene por defecto y recuerdo que Borland C++ en su día también la tenía por defecto. Estas herramientas "monitorizan" la ejecución del programa y te dicen cuantas veces se llama y cuánto tiempo se gasta en cada función. Bastaría con meter tu algoritmo en una función y ejecutar el programa "monitorizado" por un profiler. En www.geocities.com/chuidiang tienes una explicación de cómo funciona el profiler de linux. Se bueno.
88
« en: Jueves 5 de Febrero de 2004, 08:34 »
Para retardos hay muchas funciones, aunque desgraciadamente dependen del compilador y sistema operativo.
sleep () se usa en C de unix/linux. Hay que poner #include <unistd.h>. Esta función da un retardo de un número entero de segundos. Para tiempos con fracciones de segundos, hay la función usleep(), en el mismo .h
En windows (visual c++, c++ builder, dev-c++, etc) no se cual se usa, pero puedes probar a buscar cosas como delay(), timer(), wait(), etc.
Si indicas que compilador usas y el sistema operativo, quizás alguien pueda darte la función exacta.
Se bueno.
89
« en: Jueves 5 de Febrero de 2004, 08:29 »
No hay una forma standard de borrar la pantalla en todos los compiladores. Depende del compilador y del sistema operativo. En www.geocities.com/chuidiang tienes información sobre los códigos ANSI (secuencias de escape). Aunque con ellas si puedes borrar la pantalla, es necesario que el terminal (ventana de ms-dos, shell de unix) las soporte. Afortunadamente, en ambos casos (ms-dos y shell) lo soportan si se configuran para ello. Se bueno.
90
« en: Martes 3 de Febrero de 2004, 08:38 »
No se cual es el compilador que estas usando, asi que no te puedo dar detalles. Tu funcion mas o menos seria
int funcion() { int valor;
do { valor = rand()%6 +1; printf ("%d\n", valor); retardo de medio segundo o asi } (hasta que se pulse la tecla que quieras)
return valor; }
Se bueno.
91
« en: Lunes 2 de Febrero de 2004, 09:33 »
Si tienes una versión moderna de java bien instalada, no deberías tener que hacer nada especial para importar eso. Si es asi, te aconsejo que reinstales java.
En versiones más antiguas, quizás debas poner en la variable de entorno CLASSPATH el fichero rt.jar que esta en <directorio_instalacion_java>/jre/lib. Si la versión de java es muy antigua, las clases de javax.swing no existian, asi que no podrás usarlas. Haz la prueba de importar java.awt.Frame . Si esto funciona, actualiza tu versión de java.
Otro tema es que estés usando algún entorno de desarrollo (estilo JBuilder, netbeans, eclipse o similar) y no le hayas indicado bien donde esta java.
Se bueno.
92
« en: Miércoles 28 de Enero de 2004, 14:33 »
No puedes insertar una cadena al final de una linea directamente en el archivo sin machacar la linea siguiente. Ten en cuenta que en realidad el fichero es una secuencia de bytes (caracteres ascii) y que no hay "huecos" para insertar cosas nuevas.
Para hacer lo que tu quieres tienes dos opciones
- Abres el fichero de lectura y otro distinto de escritura. En el nuevo fichero vas escribiendo lo que quieres. Si necesitas que sea el mismo fichero, luego borras el original y cambias de nombre al nuevo (tienes funciones C que hacen estas cosas).
- Abre el fichero para lectura y escritura (con fopen ("fichero", "r+")), lees todo en memoria, te situas otra vez al principio del fichero con fseek() y escribes lo que quieras escribir nuevo.
Se bueno.
93
« en: Lunes 26 de Enero de 2004, 09:00 »
Con malloc(sizeof(char)) solo reservas espacio para un caracter. Cuando leas una palabra te saldrás del espacio reservado y estarás machacando memoria de otras cosas. El fallo puede ser cualquiera en cualquier momento.
El proceso que sigues es correcto, salvo por el tamaño. Debes hacer el malloc un poco más grande. Si no hay palabras más grandes de 100 caracteres, puedes hacer
malloc (100 * sizeof(char));
Se bueno.
94
« en: Miércoles 21 de Enero de 2004, 14:59 »
Java es lento principalmente por la filosofía del lenguaje en sí misma (bytecodes que corren en una máquina virtual, recolector de basura, ficheros .class que hay que ir cargando en ejecución, etc), no porque tenga que adaptarse a llamadas a la API.
OpenGL por ejemplo define unas funciones standard para gráficos, que está implementado en varias plataformas y que va rápido en todas ellas. C++ podía definir perfectamente funciones (y clases y ventanas y lo que haga falta) de forma standard. Es problema del que implementa el compilador el generar código nativo eficiente para la plataforma concreta.
Se bueno.
95
« en: Miércoles 21 de Enero de 2004, 08:43 »
Lo de cambiar la interface para cada sistema operativo es parcialmente cierto.
C++ podría establecer una interface standard para red o gráficos, (igual que lo hace, por ejemplo, para acceso a ficheros independientemente de que el disco sea de ms-dos, windows o unix) y es problema de las implementaciones del compilador para una plataforma concreta el implementar esas interfaces y que funcionen bien.
Es similar a java, que define java.awt y javax.swing para ventanas. Luego el compilador de java para windows, para unix o para lo que sea debe implementar esos "botones" sobre el sistema de ventanas concreto. Cualquier java standard que te bajes tiene su librería de ventanas y funciona en cualquier plataforma que soporte java.
El resultado, al final, es que si quieres que tus fuentes C o C++ sean portables, no puedes usar librerías externas, es decir, ni ventanas, ni comunicaciones, ni bases de datos, etc. (o bien usar librerías externas que estén implementadas en esas varias plataformas).
Se bueno.
96
« en: Martes 20 de Enero de 2004, 15:10 »
El tema es sencillo.
Si en algún sitio haces malloc(), debe haber un free() de esa memoria. En tu caso, puesto que la variable es global y es un array, no necesitas hacer ningun free().
Leer líneas de un fichero es un problema, porque a priori nunca sabes que longitud tienes. La solución sencilla es la que has hecho tú, poner un array (cadena) lo suficientemente grande como para que quepa cualquier linea de tu fichero. En tu caso, la máxima línea que puedes leer es 19 caracteres más el fin de cadena (el \0 que se pone al final).
Una opción no eficiente consiste en leer dos veces el fichero. La primera para determinar la longitud de la línea (de caracter en caracter) y luego leer la línea.
Si quieres algo más eficiente (pero más elaborado), debes leer con fgets(), que lee hasta que encuentre un fin de linea, fin de fichero o alcance el tamaño máximo que tu le pides
fgets (cad, 20, stop); // Lee hasta fin de linea o un máximo de 19 caracteres.
Esta función lee hasta fin de linea o 19 caracteres como máximo(añade un \0 al final). Si se para por un fin de linea, todo correcto. Si se para porque ha leido 20 caracteres, debes volver a leer e ir concatenando (función strcat()). Para esto último, posiblemente debas meterte en calloc() y free().
Se bueno
97
« en: Martes 20 de Enero de 2004, 09:53 »
Soy un poco vago para revisar tu código, pero te cuento un posible problema.
El número de ficheros abiertos simultaneamente está limitado. Si abres ficheros (aunque sea el mismo muchas veces) y sin querer te lo dejas abierto, al final llegará un momento en que no podrás abrirlo.
Revisa en tu código que tanto el fichero que vas a leer como el que estás escribiendo, se abre y se cierra correctamente.
Otro posible problema es que dejes memoria sin liberar. Llegará un momento en que no podrás abrir ficheros, pero posiblemente también notes que el ordenador empieza a ir muy lento.
Se bueno.
98
« en: Martes 20 de Enero de 2004, 09:48 »
Me explico un poco más.
C o C++ standard no es limitado en el sentido de que puedes hacer lo que quieras con él y posiblemente de forma más eficiente que en cualquier otro lenguaje.
Sin embargo, en C o C++ standard no tienes ventanas, gráficos, comunicaciones por red, etc. Cualquier aplicación que quieras hacer en C++ que utilice esto o te haces tu mismo las librerias (debes saber un montón y echar otro montón de tiempo) o recurrir a librerías externas que pueden ser un standard en si mismas (opengl, allegro, qt, motif, etc), pero no forman parte de C++.
Al final, para hacer aplicaciones más o menos serias, siempre necesitas C++ y librerías ajenas al C++ standard que te faciliten la programación de gráficos, ventanas, comunicaciones, acceso a bases de datos, etc.
Ahora una duda. Hace tiempo la STL era una librería aparte que no venía con los C++ y debías descargarte aparte. ¿Forma ahora parte de cualquier C++ moderno que me baje?.
Se bueno.
99
« en: Martes 20 de Enero de 2004, 09:27 »
Utiliza double por todos lados. Este tipo es el que te dará el máximo rango posible.
De todas formas, sigue teniendo un límite (enorme, pero lo tiene). Si aun así se te queda pequeño, no te queda más remedio que hacerte tu propio código para tratamiento de todos estos números.
Se bueno.
100
« en: Lunes 19 de Enero de 2004, 09:01 »
La parte standard de C++ es bastante limitada, se pueden hacer pocas cosas con ellas, pero te aconsejo que la aprendas para saber qué cosas son standard de C++ y cuales no. Te vale cualquier libro o tutorial que hable de C++ en general, sin particularizar para un entorno. Luego tienes montones de entornos de desarrollo, que añaden montones de cosas propias que no son standard. En windows tienes visual c++, c++ builder, etc. En linux tienes gratuitos anjuta y kdevelop Si quieres seguir en linux puedes hacerlo. Linux viene con c++, el compilador se llama g++ y se usa desde una shell ( o bash) . Editas tus ficheros c++ con el vi, el emacs o cualquier editor de linux, compilas desde una shell con $ g++ fichero.cc -o fichero
y lo ejecutas Si quieres ventanas y un entorno de desarrollo más completo, tienen anjuta para gnome y kdevelop para kde (depende del entorno de ventanas que uses). Creo que ambos son gratuitos. Se bueno.
|
|
|