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

#71
Cita de: .:UND3R:. en 23 Enero 2016, 17:07 PM
El propietario de este foro tiene contratado servicios con OVH, por lo cual no lo tiene en casa, saludos.

Si que dispone de un servidor en su casa, obviamente no para el foro, pero para otros menesteres que tienen relación.

Te suena el servidor de teamspeak?
#72
Depende del uso que se le quiera dar.

Para un usuario normal, con 50Mbps de bajada y 5Mbps de subida , ya hay mas que suficiente. Para mi caso o incluso el caso del propietario de este foro, que tenemos el servidor en casa, pues si que es interesante tener mas conexión, para poder recibir mayor numero de peticiones y en caso de que alguno se ponga a descargar un archivo (o incluso fotos grandes) no afecte a la velocidad de la conexión.
#73
No me he leido tu codigo pero te comento lo que se suele hacer en todos los lenguajes

- Inicias un servidor que escuche un puerto.
- Esperas a recibir un Accept (esto te devolvera un filedescriptor en C que sera el socket abierto, o un Socket en Java)
- Pasas ese filedescriptor / socket a un thread, donde sera atendido

Para que te hagas una idea en C tengo algo asi



while( 1 == 1 ) {
client_socket = accept(server_socket, (struct sockaddr *) &client, &client_length);
if (client_socket < 0) {
close(server_socket);
close(client_socket);
} else {
run_dozer_thread(client_socket);
}
}


Donde run dozer thread


/**********************************************
* @Nombre: run_dozer_thread
* @Def: Funcion encargada lanzar el Thread del Dozer
* @Arg: int socket_cliente
* @Ret:   void
**********************************************/
void run_dozer_thread(int client_socket) {
pthread_t thread_dozer_id;
pthread_create(&thread_dozer_id, NULL, thread_manage_dozer, (void *)client_socket);
}
#74
Pues sencillo, fuera de cualquier funcion, defines el mutex y lo inicializas

static pthread_mutex_t mutexZonaCritica = PTHREAD_MUTEX_INITIALIZER;

y luego dentro de las funciones, donde haya que sincronizar

pthread_mutex_lock(&mutexZonaCritica);
// Codigo que solo haya de tocar un thread
pthread_mutex_unlock(&mutexZonaCritica);


Cuando vayas a compilar, deberas añadir la libreria
-lpthread
#75
Java / Re: Retos de java
20 Enero 2016, 22:22 PM
Aunque es cierto lo que dices, realmente el motivo de que haya tanta diferencia se debe a

https://es.wikipedia.org/wiki/Cercan%C3%ADa_de_referencias

Vease, cuando tenemos que cargar datos de la memoria a la cache, no solamente se carga la variable que hemos pedido, si no que se carga un bloque entero ya que se entiende que accederemos a la direccion cercana. El problema es que cuando recorremos un array de la segunda forma (y es un array grande) la siguiente posicion a la que vamos a acceder no esta en el bloque que ya hemos cargado, por lo que el sistema tiene que cargar el nuevo bloque, y asi por cada nueva lectura, haciendo que la memoria cache que sirve precisamente para optimizar no sirva para nada.

En el caso de una lectura normal, como las posiciones que leemos estan en el mismo bloque, es mas rapido leerlas puesto que leemos de la cache y solo cargamos un bloque cuando ya hemos terminado el otro.

No?

#76
Java / Re: Retos de java
20 Enero 2016, 17:23 PM
Justo he publicado un post en mi blog. Mas que un problema de programación es un problema "raro", que a mi me dejo bastante flipado.

Os dejo el link
http://www.driverlandia.com/importancia-de-como-recorrer-una-matriz/

A ver si sacáis porque sucede esto :D, aún así os dejo el código aquí.

Código (java) [Seleccionar]

import java.util.Random;

public class StrangesArrays {
int MAXcols = 10000;
int MAXrows = 10000;
Random rd;
int[][] MATRIX = new int[MAXrows][MAXcols];
int cantidad = 0;
public StrangesArrays() {
rd = new Random();
this.initalizeMatrix();
}

public void initalizeMatrix() {
for (int i=0; i<MAXrows; i++) {
for (int j=0; j<MAXcols; j++) {
this.MATRIX[i][j] = this.getRandom();
}
}
}
public int getRandom() {
return this.rd.nextInt(200);
}

public long recorreFilasColumnas(int value) {
cantidad = 0;
long tsStart = System.currentTimeMillis();
long tsStop = 0;
for (int i=0; i<MAXrows; i++) {
for (int j=0; j<MAXcols; j++) {
if ( this.MATRIX[i][j] == value ) { cantidad++; }
}
}
tsStop = System.currentTimeMillis();
return (tsStop-tsStart);
}

public long recorreColumnasFilas(int value) {
cantidad = 0;
long tsStart = System.currentTimeMillis();
long tsStop = 0;
for (int i=0; i<MAXcols; i++) {
for (int j=0; j<MAXrows; j++) {
if ( this.MATRIX[j][i] == value ) { cantidad++; }
}
}
tsStop = System.currentTimeMillis();
return (tsStop-tsStart);
}

public static void main(String[] args) {
StrangesArrays test = new StrangesArrays();
System.out.println("Time outer rows - inner cols: "+test.recorreFilasColumnas(10));
System.out.println("Time outer cols - inner rows: "+test.recorreColumnasFilas(10));
}
}
#77
Redes / Re: duda de comando de redes cmd
6 Enero 2016, 22:14 PM
Suponiendo que ese comando funcionara, cosa que ahora no puedo probar. Si tienes una interfaz llamada LAN, hara ipconfig /renew a la interfaz llamada LAN.
#78
Aquí ya no te puedo asegurar, pero creo que la galeria de Avatares, significa que el usuario pueda subir sus avatares y tener unos cuantos subidos para cambiarlos. De manera que tenga una galeria propia para guardar los que quiera, y luego poder cambiarlo desde ahi.

Pero como digo, esto ultimo no estoy del todo seguro puesto que no lo he usado
#79
Desarrollo Web / Re: Páginas en php y sql
4 Enero 2016, 13:09 PM
No entiendo porque no quieres usar JQuery -> Datatables

- Te evitas peticiones al servidor por cada pagina que visitas
- Evitas que el servidor haga peticiones a la SQL
- La carga del procesado la ejecuta el cliente (evitas carga en el servidor)

#80
PHPBB tiene una cache propia que genera en el servidor. En el panel de control de PhpBB si te fijas hay un boton que pone "Purge cache"



Yo cuando monte por primera vez el foro, me vi negro hasta darme cuenta de lo que estaba pasando.

La cache lo que hace es que la primera vez que alguien visita la web, se genera un HTML con todo ya procesado, de esa forma cuando viene un segundo usuario a la misma pagina, no hace falta que se vuelva a procesar la consulta a la base de datos, ni procesar el php, de forma que la carga del servidor es menor